@cntyclub/ui-react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/chunk-HDGMSYQS.js +26461 -0
  2. package/dist/chunk-HDGMSYQS.js.map +1 -0
  3. package/dist/chunk-PR4QN5HX.js +39 -0
  4. package/dist/chunk-PR4QN5HX.js.map +1 -0
  5. package/dist/form.d.ts +175 -0
  6. package/dist/form.js +5207 -0
  7. package/dist/form.js.map +1 -0
  8. package/dist/index.d.ts +1462 -0
  9. package/dist/index.js +81862 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/input-CZvh825j.d.ts +24 -0
  12. package/dist/qr-code-styling-3Y6LZH6V.js +1123 -0
  13. package/dist/qr-code-styling-3Y6LZH6V.js.map +1 -0
  14. package/package.json +79 -0
  15. package/src/components/form/checkbox-group-field.tsx +101 -0
  16. package/src/components/form/date-field.tsx +79 -0
  17. package/src/components/form/date-range-field.tsx +106 -0
  18. package/src/components/form/form-context.ts +10 -0
  19. package/src/components/form/form.tsx +54 -0
  20. package/src/components/form/number-field.tsx +69 -0
  21. package/src/components/form/select-field.tsx +76 -0
  22. package/src/components/form/submit-button.tsx +28 -0
  23. package/src/components/form/text-field.tsx +107 -0
  24. package/src/components/layout/dashboard-header.tsx +54 -0
  25. package/src/components/layout/dashboard-panel.tsx +34 -0
  26. package/src/components/theme-provider.tsx +403 -0
  27. package/src/components/ui/accordion.tsx +69 -0
  28. package/src/components/ui/alert-dialog.tsx +169 -0
  29. package/src/components/ui/alert.tsx +80 -0
  30. package/src/components/ui/animated-theme-toggler.tsx +265 -0
  31. package/src/components/ui/app-store-buttons.tsx +182 -0
  32. package/src/components/ui/aspect-ratio.tsx +23 -0
  33. package/src/components/ui/autocomplete.tsx +296 -0
  34. package/src/components/ui/avatar-group.tsx +95 -0
  35. package/src/components/ui/avatar.tsx +285 -0
  36. package/src/components/ui/badge-group.tsx +160 -0
  37. package/src/components/ui/badge.tsx +172 -0
  38. package/src/components/ui/breadcrumb.tsx +112 -0
  39. package/src/components/ui/button.tsx +77 -0
  40. package/src/components/ui/calendar.tsx +137 -0
  41. package/src/components/ui/card.tsx +244 -0
  42. package/src/components/ui/carousel.tsx +258 -0
  43. package/src/components/ui/chart.tsx +379 -0
  44. package/src/components/ui/checkbox-group.tsx +16 -0
  45. package/src/components/ui/checkbox.tsx +82 -0
  46. package/src/components/ui/collapsible.tsx +45 -0
  47. package/src/components/ui/combobox.tsx +411 -0
  48. package/src/components/ui/command.tsx +264 -0
  49. package/src/components/ui/context-menu.tsx +271 -0
  50. package/src/components/ui/credit-card.tsx +214 -0
  51. package/src/components/ui/dialog.tsx +196 -0
  52. package/src/components/ui/drawer.tsx +135 -0
  53. package/src/components/ui/empty.tsx +127 -0
  54. package/src/components/ui/featured-icon.tsx +149 -0
  55. package/src/components/ui/field.tsx +88 -0
  56. package/src/components/ui/fieldset.tsx +29 -0
  57. package/src/components/ui/form.tsx +17 -0
  58. package/src/components/ui/frame.tsx +82 -0
  59. package/src/components/ui/generic-empty.tsx +142 -0
  60. package/src/components/ui/group.tsx +97 -0
  61. package/src/components/ui/horizontal-scroll-fader.tsx +228 -0
  62. package/src/components/ui/input-group.tsx +102 -0
  63. package/src/components/ui/input-otp.tsx +96 -0
  64. package/src/components/ui/input.tsx +66 -0
  65. package/src/components/ui/item.tsx +198 -0
  66. package/src/components/ui/kbd.tsx +30 -0
  67. package/src/components/ui/label.tsx +28 -0
  68. package/src/components/ui/menu.tsx +312 -0
  69. package/src/components/ui/menubar.tsx +93 -0
  70. package/src/components/ui/meter.tsx +67 -0
  71. package/src/components/ui/multi-select.tsx +308 -0
  72. package/src/components/ui/navigation-menu.tsx +143 -0
  73. package/src/components/ui/number-field.tsx +160 -0
  74. package/src/components/ui/pagination-controls.tsx +74 -0
  75. package/src/components/ui/pagination.tsx +149 -0
  76. package/src/components/ui/popover.tsx +119 -0
  77. package/src/components/ui/preview-card.tsx +55 -0
  78. package/src/components/ui/progress.tsx +289 -0
  79. package/src/components/ui/qr-code.tsx +150 -0
  80. package/src/components/ui/radio-group.tsx +103 -0
  81. package/src/components/ui/resizable.tsx +56 -0
  82. package/src/components/ui/scroll-area.tsx +90 -0
  83. package/src/components/ui/scroller.tsx +38 -0
  84. package/src/components/ui/section-header.tsx +118 -0
  85. package/src/components/ui/select.tsx +181 -0
  86. package/src/components/ui/separator.tsx +23 -0
  87. package/src/components/ui/sheet.tsx +224 -0
  88. package/src/components/ui/sidebar.tsx +744 -0
  89. package/src/components/ui/skeleton.tsx +16 -0
  90. package/src/components/ui/slider.tsx +108 -0
  91. package/src/components/ui/smooth-scroll.tsx +143 -0
  92. package/src/components/ui/social-button.tsx +247 -0
  93. package/src/components/ui/spinner-on-demand.tsx +32 -0
  94. package/src/components/ui/spinner.tsx +18 -0
  95. package/src/components/ui/stat.tsx +187 -0
  96. package/src/components/ui/stepper.tsx +167 -0
  97. package/src/components/ui/switch.tsx +56 -0
  98. package/src/components/ui/table.tsx +126 -0
  99. package/src/components/ui/tabs.tsx +90 -0
  100. package/src/components/ui/tag.tsx +229 -0
  101. package/src/components/ui/target-countdown.tsx +46 -0
  102. package/src/components/ui/text-editor.tsx +313 -0
  103. package/src/components/ui/textarea.tsx +51 -0
  104. package/src/components/ui/timeline.tsx +116 -0
  105. package/src/components/ui/toast.tsx +268 -0
  106. package/src/components/ui/toggle-group.tsx +101 -0
  107. package/src/components/ui/toggle.tsx +45 -0
  108. package/src/components/ui/toolbar.tsx +89 -0
  109. package/src/components/ui/tooltip.tsx +102 -0
  110. package/src/components/ui/vertical-scroll-fader.tsx +250 -0
  111. package/src/components/ui/video-player.tsx +275 -0
  112. package/src/components/upload/avatar-upload-base.tsx +131 -0
  113. package/src/components/upload/image-upload-base.tsx +112 -0
  114. package/src/form.ts +17 -0
  115. package/src/index.ts +125 -0
  116. package/src/lib/hooks/use-callback-ref.ts +15 -0
  117. package/src/lib/hooks/use-first-render.ts +11 -0
  118. package/src/lib/hooks/use-hover.ts +53 -0
  119. package/src/lib/hooks/use-is-tab-active.ts +17 -0
  120. package/src/lib/hooks/use-media-query.ts +164 -0
  121. package/src/lib/utils/css.ts +6 -0
  122. package/src/styles.css +300 -0
  123. package/src/types/helpers.ts +24 -0
  124. package/src/types/react.d.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:/QRCodeStyling/webpack/universalModuleDefinition","webpack:/QRCodeStyling/node_modules/qrcode-generator/qrcode.js","webpack:/QRCodeStyling/webpack/bootstrap","webpack:/QRCodeStyling/webpack/runtime/compat%20get%20default%20export","webpack:/QRCodeStyling/webpack/runtime/define%20property%20getters","webpack:/QRCodeStyling/webpack/runtime/hasOwnProperty%20shorthand","webpack:/QRCodeStyling/src/constants/modes.ts","webpack:/QRCodeStyling/src/tools/merge.ts","webpack:/QRCodeStyling/src/tools/downloadURI.ts","webpack:/QRCodeStyling/src/constants/errorCorrectionPercents.ts","webpack:/QRCodeStyling/src/figures/dot/QRDot.ts","webpack:/QRCodeStyling/src/constants/dotTypes.ts","webpack:/QRCodeStyling/src/constants/cornerSquareTypes.ts","webpack:/QRCodeStyling/src/figures/cornerSquare/QRCornerSquare.ts","webpack:/QRCodeStyling/src/constants/cornerDotTypes.ts","webpack:/QRCodeStyling/src/figures/cornerDot/QRCornerDot.ts","webpack:/QRCodeStyling/src/constants/gradientTypes.ts","webpack:/QRCodeStyling/src/constants/shapeTypes.ts","webpack:/QRCodeStyling/src/core/QRSVG.ts","webpack:/QRCodeStyling/src/tools/calculateImageSize.ts","webpack:/QRCodeStyling/src/tools/toDataUrl.ts","webpack:/QRCodeStyling/src/constants/drawTypes.ts","webpack:/QRCodeStyling/src/constants/qrTypes.ts","webpack:/QRCodeStyling/src/core/QROptions.ts","webpack:/QRCodeStyling/src/constants/errorCorrectionLevels.ts","webpack:/QRCodeStyling/src/tools/sanitizeOptions.ts","webpack:/QRCodeStyling/src/tools/getMimeType.ts","webpack:/QRCodeStyling/src/core/QRCodeStyling.ts","webpack:/QRCodeStyling/src/tools/getMode.ts","webpack:/QRCodeStyling/src/index.ts"],"names":["root","factory","exports","module","define","amd","this","t","e","i","r","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","Array","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","c","pos","QRUtil","getPatternPosition","length","j","bits","getBCHTypeNumber","mod","Math","floor","data","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","buffer","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","index","addData","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","push","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","arguments","text","id","mr","rect","size","qrSvg","scalable","escapeXml","join","trim","createDataURL","min","x","y","createImgTag","img","s","escaped","charAt","createASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","substring","white","black","line","renderTo2dContext","context","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","charCodeAt","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","v","String","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","d","errorCorrectLength","a","multiply","QRMath","gexp","type","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","n","num","shift","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","list","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","byteArrayOutputStream","writeByte","off","len","str","_str","_pos","_buflen","match","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","add","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","indexOf","flush","toByteArray","_map","_size","key","setPixel","base64","_base64","writeEncoded","encode","padlen","toString","utf8","charcode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","isObject","isArray","mergeDeep","target","sources","source","keys","forEach","targetValue","sourceValue","assign","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","QRDot","constructor","svg","window","_svg","_type","_window","getNeighbor","drawFunction","_drawDot","_drawClassy","_drawClassyRounded","_drawRounded","_drawExtraRounded","_drawSquare","_rotateFigure","rotation","draw","cx","cy","_element","setAttribute","PI","args","createElementNS","_basicDot","_basicSquare","leftNeighbor","rightNeighbor","topNeighbor","bottomNeighbor","neighborsCount","_basicCornerRounded","_basicSideRounded","_basicCornerExtraRounded","_basicCornersRounded","dot","square","extraRounded","availableCornerSquareTypes","values","cornerSquareTypes","QRCornerSquare","dotSize","_basicExtraRounded","availableCornerDotTypes","cornerDotTypes","QRCornerDot","squareMask","dotMask","QRSVG","options","_roundSize","value","_options","dotsOptions","roundSize","_defs","_imageUri","image","_instanceId","instanceCount","getElement","qr","minSize","realQRSize","shape","shapeTypes","sqrt","drawImageSize","hideXDots","hideYDots","_qr","loadImage","_image","imageOptions","qrOptions","coverLevel","imageSize","errorCorrectionPercents","maxHiddenDots","originalHeight","originalWidth","maxHiddenAxisDots","hideDots","k","ceil","round","drawBackground","drawDots","hideBackgroundDots","h","drawCorners","drawImage","element","gradientOptions","backgroundOptions","gradient","color","_backgroundClipPath","_createColor","additionalRotation","filter","xBeginning","yBeginning","_dotsClipPath","xOffset","yOffset","additionalDots","fakeCount","xFakeBeginning","yFakeBeginning","fakeMatrix","center","cornersSquareSize","cornersDotSize","column","cornersSquareClipPath","cornersDotClipPath","g","cornersSquareOptions","_","_cornersSquareClipPath","_cornersDotClipPath","m","includes","cornersSquare","S","C","cornersDotOptions","A","$","cornersDot","Promise","resolve","reject","nodeCanvas","then","saveAsBlob","canvas","createCanvas","getContext","toDataURL","catch","Image","crossOrigin","onload","async","url","xhr","XMLHttpRequest","reader","FileReader","onloadend","result","readAsDataURL","response","open","responseType","send","src","dx","dy","dw","dh","positiveRotation","x0","y0","x1","y1","tan","colorStops","stop","qrTypes","drawTypes","sanitizeGradient","newGradient","Number","map","colorStop","sanitizeOptions","newOptions","Boolean","getMimeType","extension","Error","toLowerCase","QRCodeStyling","jsdom","resources","update","container","innerHTML","_setupSvg","qrSVG","_svgDrawingPromise","drawQR","_extension","_setupCanvas","_nodeCanvas","_domCanvas","_canvasDrawingPromise","xml","XMLSerializer","serializeToString","svg64","btoa","image64","_clearContainer","_container","append","deleteExtension","_getElement","mimeType","svgString","Blob","Buffer","from","toBuffer","toBlob","downloadOptions","console","warn","encodeURIComponent"],"mappings":";;;;;AAAA,IAAA,CAAA,CAAA,SAA2CA,GAAMC,CAAAA,EAAAA;AAC1B,MAAA,QAAA,IAAA,OAAZC,OAAAA,IAA0C,QAAA,IAAA,OAAXC,MAAAA,GACxCA,MAAAA,CAAOD,OAAAA,GAAUD,CAAAA,EAAAA,GACQ,UAAA,IAAA,OAAXG,MAAAA,IAAyBA,MAAAA,CAAOC,GAAAA,GAC9CD,MAAAA,CAAO,EAAA,EAAIH,CAAAA,CAAAA,GACe,QAAA,IAAA,OAAZC,OAAAA,GACdA,OAAAA,CAAuB,aAAA,GAAID,CAAAA,EAAAA,GAE3BD,CAAAA,CAAoB,aAAA,GAAIC,CAAAA,EAAAA;IACzB,CAAA,EAAEK,OAAAA,GAAM,OAAA,MAAA;AAAA,MAAA,IAAA,CAAA,GAAA,EAAA,GAAA,EAAA,CAAAC,IAAAC,EAAAA,KAAA;ACTT,QAAA,IAAAC,EAAAA,EAAAC,EAAAA,EAiBIC,CAAAA,GAAAA,CAAS,WAAA;AAWX,UAAA,IAAIA,EAAAA,GAAS,SAASC,EAAAA,EAAYC,EAAAA,EAAAA;AAEhC,YAAA,IAGIC,EAAAA,GAAcF,IACdG,EAAAA,GAAwBC,CAAAA,CAAuBH,EAAAA,CAAAA,EAC/CI,EAAAA,GAAW,MACXC,EAAAA,GAAe,CAAA,EACfC,KAAa,IAAA,EACbC,EAAAA,GAAY,EAAA,EAEZC,EAAAA,GAAQ,EAAC,EAETC,CAAAA,GAAW,SAASC,EAAAA,EAAMC,EAAAA,EAAAA;AAG5BP,cAAAA,EAAAA,GAAAA,CAAW,SAASQ,EAAAA,EAAAA;AAElB,gBAAA,KAAA,IADIC,EAAAA,GAAU,IAAIC,KAAAA,CAAMF,EAAAA,CAAAA,EACfG,KAAM,CAAA,EAAGA,EAAAA,GAAMH,EAAAA,EAAaG,EAAAA,IAAO,CAAA,EAAG;AAC7CF,kBAAAA,EAAAA,CAAQE,EAAAA,CAAAA,GAAO,IAAID,MAAMF,EAAAA,CAAAA;AACzB,kBAAA,KAAA,IAASI,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMJ,EAAAA,EAAaI,EAAAA,IAAO,CAAA,EAC1CH,EAAAA,CAAQE,EAAAA,CAAAA,CAAKC,EAAAA,CAAAA,GAAO,IAAA;AAExB,gBAAA;AACA,gBAAA,OAAOH,EAAAA;AACT,cAAA,CAAA,EAVAR,KAA6B,CAAA,GAAdJ,EAAAA,GAAkB,EAAA,CAAA,EAYjCgB,CAAAA,CAA0B,GAAG,CAAA,CAAA,EAC7BA,EAA0BZ,EAAAA,GAAe,CAAA,EAAG,CAAA,CAAA,EAC5CY,CAAAA,CAA0B,GAAGZ,EAAAA,GAAe,CAAA,GAC5Ca,CAAAA,EAAAA,EACAC,CAAAA,EAAAA,EACAC,EAAcV,EAAAA,EAAMC,EAAAA,GAEhBV,EAAAA,IAAe,CAAA,IACjBoB,EAAgBX,EAAAA,CAAAA,EAGA,QAAdJ,EAAAA,KACFA,EAAAA,GAAagB,EAAWrB,EAAAA,EAAaC,EAAAA,EAAuBK,EAAAA,CAAAA,CAAAA,EAG9DgB,CAAAA,CAAQjB,IAAYK,EAAAA,CAAAA;YACtB,CAAA,EAEIM,CAAAA,GAA4B,SAASF,EAAAA,EAAKC,EAAAA,EAAAA;AAE5C,cAAA,KAAA,IAASnB,EAAAA,GAAAA,EAAAA,EAAQA,EAAAA,IAAK,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAE5B,IAAA,EAAIkB,EAAAA,GAAMlB,EAAAA,IAAAA,EAAAA,IAAWQ,EAAAA,IAAgBU,EAAAA,GAAMlB,KAE3C,KAAA,IAAS2B,EAAAA,GAAAA,EAAAA,EAAQA,EAAAA,IAAK,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAExBR,EAAAA,GAAMQ,EAAAA,IAAAA,EAAAA,IAAWnB,EAAAA,IAAgBW,EAAAA,GAAMQ,EAAAA,KAKzCpB,GAASW,EAAAA,GAAMlB,EAAAA,CAAAA,CAAGmB,EAAAA,GAAMQ,EAAAA,CAAAA,GAHpB,CAAA,IAAK3B,EAAAA,IAAKA,EAAAA,IAAK,CAAA,KAAW,CAAA,IAAL2B,EAAAA,IAAe,CAAA,IAALA,EAAAA,CAAAA,IAC7B,CAAA,IAAKA,EAAAA,IAAKA,EAAAA,IAAK,CAAA,KAAW,CAAA,IAAL3B,EAAAA,IAAe,CAAA,IAALA,EAAAA,CAAAA,IAC/B,CAAA,IAAKA,EAAAA,IAAKA,EAAAA,IAAK,CAAA,IAAK,CAAA,IAAK2B,EAAAA,IAAKA,EAAAA,IAAK,CAAA,CAAA;AAOjD,YAAA,CAAA,EAsBIL,IAAqB,WAAA;AAEvB,cAAA,KAAA,IAAStB,KAAI,CAAA,EAAGA,EAAAA,GAAIQ,KAAe,CAAA,EAAGR,EAAAA,IAAK,GACnB,IAAA,IAAlBO,EAAAA,CAASP,EAAAA,CAAAA,CAAG,CAAA,MAGhBO,EAAAA,CAASP,EAAAA,EAAG,CAAA,CAAA,GAAMA,KAAI,CAAA,IAAK,CAAA,CAAA;AAG7B,cAAA,KAAA,IAAS2B,KAAI,CAAA,EAAGA,EAAAA,GAAInB,KAAe,CAAA,EAAGmB,EAAAA,IAAK,GACnB,IAAA,IAAlBpB,EAAAA,CAAS,CAAA,CAAA,CAAGoB,EAAAA,MAGhBpB,EAAAA,CAAS,CAAA,EAAGoB,EAAAA,CAAAA,GAAMA,KAAI,CAAA,IAAK,CAAA,CAAA;AAE/B,YAAA,CAAA,EAEIN,IAA6B,WAAA;AAI/B,cAAA,KAAA,IAFIO,KAAMC,CAAAA,CAAOC,kBAAAA,CAAmB1B,EAAAA,CAAAA,EAE3BL,EAAAA,GAAI,GAAGA,EAAAA,GAAI6B,EAAAA,CAAIG,QAAQhC,EAAAA,IAAK,CAAA,WAE1BiC,EAAAA,GAAI,CAAA,EAAGA,KAAIJ,EAAAA,CAAIG,MAAAA,EAAQC,MAAK,CAAA,EAAG;AAEtC,gBAAA,IAAId,KAAMU,EAAAA,CAAI7B,EAAAA,CAAAA,EACVoB,EAAAA,GAAMS,GAAII,EAAAA,CAAAA;AAEd,gBAAA,IAA0B,QAAtBzB,EAAAA,CAASW,EAAAA,CAAAA,CAAKC,EAAAA,GAIlB,KAAA,IAASnB,EAAAA,GAAAA,EAAAA,EAAQA,EAAAA,IAAK,GAAGA,EAAAA,IAAK,CAAA,WAEnB2B,EAAAA,GAAAA,EAAAA,EAAQA,MAAK,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAI1BpB,GAASW,EAAAA,GAAMlB,EAAAA,CAAAA,CAAGmB,EAAAA,GAAMQ,EAAAA,CAAAA,GAAAA,EAAAA,IAFtB3B,EAAAA,IAAgB,CAAA,IAALA,MAAAA,EAAAA,IAAU2B,EAAAA,IAAgB,KAALA,EAAAA,IACvB,CAAA,IAAL3B,MAAe,CAAA,IAAL2B,EAAAA;AAOxB,cAAA;YAEJ,CAAA,EAEIH,CAAAA,GAAkB,SAASX,EAAAA,EAAAA;AAI7B,cAAA,KAAA,IAFIoB,EAAAA,GAAOJ,CAAAA,CAAOK,gBAAAA,CAAiB9B,EAAAA,CAAAA,EAE1BL,KAAI,CAAA,EAAGA,EAAAA,GAAI,EAAA,EAAIA,EAAAA,IAAK,CAAA,EAAG;AAC9B,gBAAA,IAAIoC,EAAAA,GAAAA,CAAQtB,EAAAA,IAA8B,CAAA,KAAnBoB,MAAQlC,EAAAA,GAAK,CAAA,CAAA;AACpCQ,gBAAAA,EAAAA,CAAS6B,IAAAA,CAAKC,KAAAA,CAAMtC,EAAAA,GAAI,CAAA,CAAA,CAAA,CAAIA,EAAAA,GAAI,CAAA,GAAIS,EAAAA,GAAe,CAAA,GAAI,CAAA,CAAA,GAAK2B,EAAAA;AAC9D,cAAA;AAEA,cAAA,KAASpC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,EAAA,EAAIA,EAAAA,IAAK,CAAA,EACvBoC,EAAAA,GAAAA,CAAQtB,EAAAA,IAA8B,CAAA,KAAnBoB,EAAAA,IAAQlC,EAAAA,GAAK,IACpCQ,EAAAA,CAASR,EAAAA,GAAI,CAAA,GAAIS,EAAAA,GAAe,CAAA,GAAI,CAAA,CAAA,CAAG4B,IAAAA,CAAKC,KAAAA,CAAMtC,EAAAA,GAAI,CAAA,CAAA,CAAA,GAAMoC,EAAAA;YAEhE,CAAA,EAEIZ,CAAAA,GAAgB,SAASV,EAAAA,EAAMC,EAAAA,EAAAA;AAMjC,cAAA,KAAA,IAJIwB,EAAAA,GAAQjC,EAAAA,IAAyB,CAAA,GAAKS,EAAAA,EACtCmB,KAAOJ,CAAAA,CAAOU,cAAAA,CAAeD,EAAAA,CAAAA,EAGxBvC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,EAAA,EAAIA,MAAK,CAAA,EAAG;AAE9B,gBAAA,IAAIoC,EAAAA,GAAAA,CAAQtB,EAAAA,IAA8B,CAAA,KAAnBoB,MAAQlC,EAAAA,GAAK,CAAA,CAAA;AAEhCA,gBAAAA,EAAAA,GAAI,IACNQ,EAAAA,CAASR,EAAAA,EAAG,CAAA,CAAA,GAAKoC,EAAAA,GACRpC,EAAAA,GAAI,CAAA,GACbQ,EAAAA,CAASR,KAAI,CAAA,CAAA,CAAG,CAAA,CAAA,GAAKoC,EAAAA,GAErB5B,EAAAA,CAASC,KAAe,EAAA,GAAKT,EAAAA,CAAAA,CAAG,CAAA,CAAA,GAAKoC,EAAAA;AAEzC,cAAA;AAGA,cAAA,KAASpC,KAAI,CAAA,EAAGA,EAAAA,GAAI,IAAIA,EAAAA,IAAK,CAAA,EAEvBoC,EAAAA,GAAAA,CAAQtB,EAAAA,IAA8B,CAAA,KAAnBoB,MAAQlC,EAAAA,GAAK,CAAA,CAAA,EAEhCA,KAAI,CAAA,GACNQ,EAAAA,CAAS,CAAA,CAAA,CAAGC,EAAAA,GAAeT,EAAAA,GAAI,CAAA,IAAKoC,EAAAA,GAC3BpC,EAAAA,GAAI,IACbQ,EAAAA,CAAS,CAAA,EAAG,EAAA,GAAKR,EAAAA,GAAI,IAAI,CAAA,CAAA,GAAKoC,KAE9B5B,EAAAA,CAAS,CAAA,EAAG,EAAA,GAAKR,EAAAA,GAAI,CAAA,CAAA,GAAKoC,EAAAA;AAK9B5B,cAAAA,GAASC,EAAAA,GAAe,CAAA,CAAA,CAAG,CAAA,IAAA,CAAOK,EAAAA;YACpC,CAAA,EAEIa,CAAAA,GAAU,SAASY,EAAAA,EAAMxB,EAAAA,EAAAA;AAQ3B,cAAA,KAAA,IANI0B,EAAAA,GAAAA,EAAAA,EACAtB,EAAAA,GAAMV,EAAAA,GAAe,CAAA,EACrBiC,KAAW,CAAA,EACXC,EAAAA,GAAY,CAAA,EACZC,EAAAA,GAAWd,CAAAA,CAAOe,eAAAA,CAAgB9B,EAAAA,CAAAA,EAE7BK,EAAAA,GAAMX,EAAAA,GAAe,CAAA,EAAGW,EAAAA,GAAM,CAAA,EAAGA,EAAAA,IAAO,CAAA,EAI/C,KAFW,CAAA,IAAPA,EAAAA,KAAUA,EAAAA,IAAO,CAAA,CAAA,MAER;AAEX,gBAAA,KAAA,IAASQ,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAE1B,IAA8B,IAAA,IAA1BpB,EAAAA,CAASW,EAAAA,CAAAA,CAAKC,EAAAA,GAAMQ,EAAAA,CAAAA,EAAY;AAElC,kBAAA,IAAIkB,EAAAA,GAAAA,KAAAA;AAEAH,kBAAAA,EAAAA,GAAYJ,EAAAA,CAAKP,MAAAA,KACnBc,EAAAA,GAAkD,CAAA,KAAtCP,EAAAA,CAAKI,EAAAA,CAAAA,KAAeD,EAAAA,GAAY,CAAA,CAAA,CAAA,EAGnCE,EAAAA,CAASzB,EAAAA,EAAKC,KAAMQ,EAAAA,CAAAA,KAG7BkB,EAAAA,GAAAA,CAAQA,EAAAA,CAAAA,EAGVtC,EAAAA,CAASW,EAAAA,CAAAA,CAAKC,EAAAA,GAAMQ,EAAAA,CAAAA,GAAKkB,EAAAA,EAAAA,EAAAA,KACzBJ,EAAAA,IAAY,CAAA,CAAA,KAGVC,EAAAA,IAAa,GACbD,EAAAA,GAAW,CAAA,CAAA;AAEf,gBAAA;AAKF,gBAAA,IAAA,CAFAvB,EAAAA,IAAOsB,EAAAA,IAEG,CAAA,IAAKhC,EAAAA,IAAgBU,EAAAA,EAAK;AAClCA,kBAAAA,EAAAA,IAAOsB,EAAAA,EACPA,EAAAA,GAAAA,CAAOA,EAAAA;AACP,kBAAA;AACF,gBAAA;AACF,cAAA;AAEJ,YAAA,CAAA,EAmEIf,CAAAA,GAAa,SAASvB,EAAAA,EAAYC,EAAAA,EAAsB2C,EAAAA,EAAAA;AAM1D,cAAA,KAAA,IAJIC,EAAAA,GAAWC,CAAAA,CAAUC,WAAAA,CAAY/C,EAAAA,EAAYC,EAAAA,CAAAA,EAE7C+C,EAAAA,GAASC,CAAAA,EAAAA,EAEJpD,KAAI,CAAA,EAAGA,EAAAA,GAAI+C,EAAAA,CAASf,MAAAA,EAAQhC,MAAK,CAAA,EAAG;AAC3C,gBAAA,IAAIuC,EAAAA,GAAOQ,GAAS/C,EAAAA,CAAAA;AACpBmD,gBAAAA,EAAAA,CAAOE,IAAId,EAAAA,CAAKe,OAAAA,IAAW,CAAA,CAAA,EAC3BH,EAAAA,CAAOE,GAAAA,CAAId,EAAAA,CAAKgB,SAAAA,IAAazB,CAAAA,CAAO0B,eAAAA,CAAgBjB,GAAKe,OAAAA,EAAAA,EAAWnD,EAAAA,CAAAA,CAAAA,EACpEoC,EAAAA,CAAKkB,KAAAA,CAAMN,EAAAA,CAAAA;AACb,cAAA;AAGA,cAAA,IAAIO,EAAAA,GAAiB,CAAA;AACrB,cAAA,KAAS1D,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIgD,EAAAA,CAAShB,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EACxC0D,EAAAA,IAAkBV,EAAAA,CAAShD,EAAAA,CAAAA,CAAG2D,SAAAA;AAGhC,cAAA,IAAIR,EAAAA,CAAOK,eAAAA,EAAAA,GAAqC,CAAA,GAAjBE,EAAAA,EAC7B,MAAM,yBAAA,GACFP,EAAAA,CAAOK,eAAAA,EAAAA,GACP,GAAA,GACiB,CAAA,GAAjBE,EAAAA,GACA,GAAA;AASN,cAAA,KALIP,GAAOK,eAAAA,EAAAA,GAAoB,KAAsB,CAAA,GAAjBE,EAAAA,IAClCP,GAAOE,GAAAA,CAAI,CAAA,EAAG,CAAA,CAAA,EAITF,EAAAA,CAAOK,iBAAAA,GAAoB,CAAA,IAAK,KACrCL,EAAAA,CAAOS,OAAAA,KAAO,CAAA;AAIhB,cAAA,OAAA,EAEMT,GAAOK,eAAAA,EAAAA,IAAsC,IAAjBE,EAAAA,KAGhCP,EAAAA,CAAOE,IAxVA,GAAA,EAwVU,CAAA,GAEbF,EAAAA,CAAOK,eAAAA,MAAsC,CAAA,GAAjBE,EAAAA,CAAAA,CAAAA,IAGhCP,EAAAA,CAAOE,GAAAA,CA5VA,IA4VU,CAAA,CAAA;AAGnB,cAAA,OAAA,CApHgB,SAASF,IAAQH,EAAAA,EAAAA;AAUjC,gBAAA,KAAA,IARIa,EAAAA,GAAS,CAAA,EAETC,EAAAA,GAAa,CAAA,EACbC,EAAAA,GAAa,GAEbC,EAAAA,GAAS,IAAI9C,KAAAA,CAAM8B,EAAAA,CAAShB,MAAAA,CAAAA,EAC5BiC,KAAS,IAAI/C,KAAAA,CAAM8B,EAAAA,CAAShB,MAAAA,CAAAA,EAEvB/B,EAAAA,GAAI,GAAGA,EAAAA,GAAI+C,EAAAA,CAAShB,MAAAA,EAAQ/B,EAAAA,IAAK,CAAA,EAAG;AAE3C,kBAAA,IAAIiE,EAAAA,GAAUlB,GAAS/C,EAAAA,CAAAA,CAAG0D,WACtBQ,EAAAA,GAAUnB,EAAAA,CAAS/C,EAAAA,CAAAA,CAAGmE,UAAAA,GAAaF,EAAAA;AAEvCJ,kBAAAA,KAAazB,IAAAA,CAAKgC,GAAAA,CAAIP,EAAAA,EAAYI,EAAAA,GAClCH,EAAAA,GAAa1B,IAAAA,CAAKgC,GAAAA,CAAIN,EAAAA,EAAYI,EAAAA,CAAAA,EAElCH,EAAAA,CAAO/D,EAAAA,CAAAA,GAAK,IAAIiB,MAAMgD,EAAAA,CAAAA;AAEtB,kBAAA,KAAA,IAASlE,EAAAA,GAAI,GAAGA,EAAAA,GAAIgE,EAAAA,CAAO/D,EAAAA,CAAAA,CAAG+B,MAAAA,EAAQhC,MAAK,CAAA,EACzCgE,GAAO/D,EAAAA,CAAAA,CAAGD,EAAAA,CAAAA,GAAK,GAAA,GAAOmD,GAAOmB,SAAAA,EAAAA,CAAYtE,KAAI6D,EAAAA,CAAAA;AAE/CA,kBAAAA,EAAAA,IAAUK,EAAAA;AAEV,kBAAA,IAAIK,KAASzC,CAAAA,CAAO0C,yBAAAA,CAA0BL,EAAAA,CAAAA,EAG1CM,KAFUC,CAAAA,CAAaV,EAAAA,CAAO/D,EAAAA,CAAAA,EAAIsE,GAAOhB,SAAAA,EAAAA,GAAc,CAAA,CAAA,CAErCnB,IAAImC,EAAAA,CAAAA;AAE1B,kBAAA,KADAN,GAAOhE,EAAAA,CAAAA,GAAK,IAAIiB,KAAAA,CAAMqD,EAAAA,CAAOhB,WAAAA,GAAc,CAAA,CAAA,EAClCvD,EAAAA,GAAI,GAAGA,EAAAA,GAAIiE,EAAAA,CAAOhE,EAAAA,CAAAA,CAAG+B,MAAAA,EAAQhC,MAAK,CAAA,EAAG;AAC5C,oBAAA,IAAI2E,KAAW3E,EAAAA,GAAIyE,EAAAA,CAAQlB,WAAAA,GAAcU,EAAAA,CAAOhE,EAAAA,CAAAA,CAAG+B,MAAAA;AACnDiC,oBAAAA,EAAAA,CAAOhE,EAAAA,CAAAA,CAAGD,EAAAA,CAAAA,GAAM2E,MAAY,CAAA,GAAIF,EAAAA,CAAQG,KAAAA,CAAMD,EAAAA,CAAAA,GAAY,CAAA;AAC5D,kBAAA;AACF,gBAAA;AAEA,gBAAA,IAAIE,EAAAA,GAAiB,CAAA;AACrB,gBAAA,KAAS7E,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIgD,EAAAA,CAAShB,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EACxC6E,EAAAA,IAAkB7B,EAAAA,CAAShD,EAAAA,CAAAA,CAAGoE,UAAAA;AAGhC,gBAAA,IAAI7B,EAAAA,GAAO,IAAIrB,KAAAA,CAAM2D,EAAAA,GACjBC,EAAAA,GAAQ,CAAA;AAEZ,gBAAA,KAAS9E,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI8D,EAAAA,EAAY9D,EAAAA,IAAK,CAAA,EACnC,KAASC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI+C,EAAAA,CAAShB,MAAAA,EAAQ/B,EAAAA,IAAK,CAAA,EACpCD,EAAAA,GAAIgE,EAAAA,CAAO/D,EAAAA,CAAAA,CAAG+B,MAAAA,KAChBO,EAAAA,CAAKuC,EAAAA,CAAAA,GAASd,EAAAA,CAAO/D,EAAAA,CAAAA,CAAGD,EAAAA,CAAAA,EACxB8E,EAAAA,IAAS,CAAA,CAAA;AAKf,gBAAA,KAAS9E,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI+D,EAAAA,EAAY/D,EAAAA,IAAK,CAAA,EACnC,KAASC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI+C,EAAAA,CAAShB,MAAAA,EAAQ/B,EAAAA,IAAK,CAAA,EACpCD,EAAAA,GAAIiE,EAAAA,CAAOhE,EAAAA,CAAAA,CAAG+B,MAAAA,KAChBO,EAAAA,CAAKuC,EAAAA,CAAAA,GAASb,EAAAA,CAAOhE,EAAAA,CAAAA,CAAGD,EAAAA,CAAAA,EACxB8E,EAAAA,IAAS,CAAA,CAAA;AAKf,gBAAA,OAAOvC,EAAAA;AACT,cAAA,CAAA,EAqDqBY,IAAQH,EAAAA,CAAAA;AAC7B,YAAA,CAAA;AAEApC,YAAAA,EAAAA,CAAMmE,OAAAA,GAAU,SAASxC,EAAAA,EAAMyC,EAAAA,EAAAA;AAI7B,cAAA,IAAIC,EAAAA,GAAU,IAAA;AAEd,cAAA,QAJAD,EAAAA,GAAOA,MAAQ,MAAA;gBAKf,KAAK,SAAA;AACHC,kBAAAA,EAAAA,GAAUC,EAAS3C,EAAAA,CAAAA;AACnB,kBAAA;gBACF,KAAK,cAAA;AACH0C,kBAAAA,EAAAA,GAAUE,EAAW5C,EAAAA,CAAAA;AACrB,kBAAA;gBACF,KAAK,MAAA;AACH0C,kBAAAA,EAAAA,GAAUG,EAAW7C,EAAAA,CAAAA;AACrB,kBAAA;gBACF,KAAK,OAAA;AACH0C,kBAAAA,EAAAA,GAAUI,EAAQ9C,EAAAA,CAAAA;AAClB,kBAAA;AACF,gBAAA;AACE,kBAAA,MAAM,OAAA,GAAUyC,EAAAA;AAAAA;AAGlBrE,cAAAA,EAAAA,CAAU2E,IAAAA,CAAKL,EAAAA,CAAAA,EACfvE,EAAAA,GAAa,IAAA;AACf,YAAA,CAAA,EAEAE,EAAAA,CAAM2E,MAAAA,GAAS,SAASpE,EAAAA,EAAKC,EAAAA,EAAAA;AAC3B,cAAA,IAAID,EAAAA,GAAM,CAAA,IAAKV,EAAAA,IAAgBU,EAAAA,IAAOC,EAAAA,GAAM,KAAKX,EAAAA,IAAgBW,EAAAA,EAC/D,MAAMD,EAAAA,GAAM,GAAA,GAAMC,EAAAA;AAEpB,cAAA,OAAOZ,EAAAA,CAASW,EAAAA,CAAAA,CAAKC,EAAAA,CAAAA;YACvB,CAAA,EAEAR,EAAAA,CAAM4E,iBAAiB,WAAA;AACrB,cAAA,OAAO/E,EAAAA;YACT,CAAA,EAEAG,EAAAA,CAAM6E,OAAO,WAAA;AACX,cAAA,IAAIpF,KAAc,CAAA,EAAG;AAGnB,gBAAA,KAAA,IAFIF,EAAAA,GAAa,CAAA,EAEVA,EAAAA,GAAa,EAAA,EAAIA,EAAAA,EAAAA,EAAc;AAIpC,kBAAA,KAAA,IAHI6C,EAAAA,GAAWC,CAAAA,CAAUC,WAAAA,CAAY/C,EAAAA,EAAYG,EAAAA,CAAAA,EAC7C6C,EAAAA,GAASC,CAAAA,EAAAA,EAEJpD,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIW,EAAAA,CAAUqB,QAAQhC,EAAAA,EAAAA,EAAK;AACzC,oBAAA,IAAIuC,EAAAA,GAAO5B,GAAUX,EAAAA,CAAAA;AACrBmD,oBAAAA,EAAAA,CAAOE,IAAId,EAAAA,CAAKe,OAAAA,IAAW,CAAA,CAAA,EAC3BH,EAAAA,CAAOE,GAAAA,CAAId,EAAAA,CAAKgB,SAAAA,IAAazB,CAAAA,CAAO0B,eAAAA,CAAgBjB,GAAKe,OAAAA,EAAAA,EAAWnD,EAAAA,CAAAA,CAAAA,EACpEoC,EAAAA,CAAKkB,KAAAA,CAAMN,EAAAA,CAAAA;AACb,kBAAA;AAEA,kBAAA,IAAIO,EAAAA,GAAiB,CAAA;AACrB,kBAAA,KAAS1D,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIgD,EAAAA,CAAShB,MAAAA,EAAQhC,MACnC0D,EAAAA,IAAkBV,EAAAA,CAAShD,EAAAA,CAAAA,CAAG2D,SAAAA;AAGhC,kBAAA,IAAIR,EAAAA,CAAOK,eAAAA,EAAAA,IAAsC,CAAA,GAAjBE,EAAAA,EAC9B;AAEJ,gBAAA;AAEArD,gBAAAA,EAAAA,GAAcF,EAAAA;AAChB,cAAA;AAEAU,cAAAA,CAAAA,CAAAA,QApWuB,WAAA;AAKvB,gBAAA,KAAA,IAHI6E,EAAAA,GAAe,GACfC,EAAAA,GAAU,CAAA,EAEL3F,KAAI,CAAA,EAAGA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,CAAA,EAAG;AAE7Ba,kBAAAA,CAAAA,CAAAA,MAAeb,EAAAA,CAAAA;AAEf,kBAAA,IAAI4F,EAAAA,GAAY9D,CAAAA,CAAO+D,YAAAA,CAAajF,EAAAA,CAAAA;AAAAA,kBAAAA,CAE3B,KAALZ,EAAAA,IAAU0F,EAAAA,GAAeE,EAAAA,MAC3BF,EAAAA,GAAeE,IACfD,EAAAA,GAAU3F,EAAAA,CAAAA;AAEd,gBAAA;AAEA,gBAAA,OAAO2F,EAAAA;AACT,cAAA,CAAA,GAkVkBG,CAAAA;AAClB,YAAA,CAAA,EAEAlF,EAAAA,CAAMmF,cAAAA,GAAiB,SAASC,EAAAA,EAAUC,EAAAA,EAAAA;AAExCD,cAAAA,KAAWA,EAAAA,IAAY,CAAA;AAGvB,cAAA,IAAIE,EAAAA,GAAS,EAAA;AAEbA,cAAAA,MAAU,gBAAA,EACVA,EAAAA,IAAU,yCAAA,EACVA,EAAAA,IAAU,+BACVA,EAAAA,IAAU,yBAAA,IAPVD,EAAAA,GAAAA,MAAAA,KAAiBA,KAAmC,CAAA,GAAXD,EAAAA,GAAeC,MAOT,KAAA,EAC/CC,EAAAA,IAAU,MACVA,EAAAA,IAAU,SAAA;AAEV,cAAA,KAAA,IAASjG,KAAI,CAAA,EAAGA,EAAAA,GAAIW,GAAM4E,cAAAA,EAAAA,EAAkBvF,MAAK,CAAA,EAAG;AAElDiG,gBAAAA,EAAAA,IAAU,MAAA;AAEV,gBAAA,KAAA,IAAStE,KAAI,CAAA,EAAGA,EAAAA,GAAIhB,EAAAA,CAAM4E,cAAAA,IAAkB5D,EAAAA,IAAK,CAAA,EAC/CsE,EAAAA,IAAU,eACVA,EAAAA,IAAU,yCAAA,EACVA,EAAAA,IAAU,6BAAA,EACVA,MAAU,6BAAA,EACVA,EAAAA,IAAU,UAAA,GAAaF,EAAAA,GAAW,OAClCE,EAAAA,IAAU,WAAA,GAAcF,EAAAA,GAAW,KAAA,EACnCE,MAAU,qBAAA,EACVA,EAAAA,IAAUtF,EAAAA,CAAM2E,MAAAA,CAAOtF,IAAG2B,EAAAA,CAAAA,GAAI,YAAY,SAAA,EAC1CsE,EAAAA,IAAU,KACVA,EAAAA,IAAU,KAAA;AAGZA,gBAAAA,EAAAA,IAAU,OAAA;AACZ,cAAA;AAKA,cAAA,OAAA,CAHAA,MAAU,UAAA,IACA,UAAA;AAGZ,YAAA,CAAA,EAEAtF,GAAMuF,YAAAA,GAAe,SAASH,EAAAA,EAAUC,EAAAA,EAAQG,IAAKC,EAAAA,EAAAA;AAEnD,cAAA,IAAIC,KAAO,EAAC;AACe,cAAA,QAAA,IAAA,OAAhBC,SAAAA,CAAU,CAAA,CAAA,KAInBP,MAFAM,EAAAA,GAAOC,SAAAA,CAAU,CAAA,CAAA,EAEDP,UAChBC,EAAAA,GAASK,EAAAA,CAAKL,MAAAA,EACdG,EAAAA,GAAME,GAAKF,GAAAA,EACXC,EAAAA,GAAQC,EAAAA,CAAKD,KAAAA,CAAAA,EAGfL,EAAAA,GAAWA,EAAAA,IAAY,CAAA,EACvBC,EAAAA,GAAAA,WAAiBA,EAAAA,GAAmC,CAAA,GAAXD,EAAAA,GAAeC,EAAAA,EAAAA,CAGxDG,KAAsB,QAAA,IAAA,OAARA,EAAAA,GAAoB,EAACI,MAAMJ,EAAAA,EAAAA,GAAOA,EAAAA,IAAO,EAAC,EACpDI,IAAAA,GAAOJ,EAAAA,CAAII,IAAAA,IAAQ,MACvBJ,EAAAA,CAAIK,EAAAA,GAAML,EAAAA,CAAQ,IAAA,GAAIA,GAAIK,EAAAA,IAAM,oBAAA,GAAuB,IAAA,EAAA,CAGvDJ,EAAAA,GAA0B,YAAA,OAAVA,EAAAA,GAAsB,EAACG,IAAAA,EAAMH,EAAAA,EAAAA,GAASA,EAAAA,IAAS,IACzDG,IAAAA,GAAOH,EAAAA,CAAMG,IAAAA,IAAQ,IAAA,EAC3BH,GAAMI,EAAAA,GAAMJ,EAAAA,CAAU,IAAA,GAAIA,EAAAA,CAAMI,MAAM,cAAA,GAAiB,IAAA;AAEvD,cAAA,IACI7E,EAAAA,EAAO3B,EAAAA,EAAGyG,EAAAA,EAAcC,EAAAA,EADxBC,EAAAA,GAAOhG,EAAAA,CAAM4E,cAAAA,EAAAA,GAAmBQ,EAAAA,GAAoB,CAAA,GAATC,EAAAA,EAC7BY,EAAAA,GAAM,EAAA;AAmBxB,cAAA,KAjBAF,EAAAA,GAAO,GAAA,GAAMX,EAAAA,GAAW,OAAA,GAAUA,EAAAA,GAChC,IAAA,GAAOA,EAAAA,GAAW,QAAA,GAAWA,EAAAA,GAAW,IAAA,EAE1Ca,EAAAA,IAAS,uDAAA,EACTA,EAAAA,IAAUP,GAAKQ,QAAAA,GAA+D,EAAA,GAApD,UAAA,GAAaF,EAAAA,GAAO,cAAA,GAAiBA,EAAAA,GAAO,KAAA,EACtEC,EAAAA,IAAS,gBAAA,GAAmBD,EAAAA,GAAO,GAAA,GAAMA,EAAAA,GAAO,IAAA,EAChDC,EAAAA,IAAS,wCACTA,EAAAA,IAAUR,EAAAA,CAAMG,IAAAA,IAAQJ,EAAAA,CAAII,IAAAA,GAAQ,+BAAA,GAChCO,CAAAA,CAAU,CAACV,EAAAA,CAAMI,EAAAA,EAAIL,EAAAA,CAAIK,EAAAA,CAAAA,CAAIO,IAAAA,CAAK,GAAA,CAAA,CAAKC,IAAAA,EAAAA,CAAAA,GAAW,GAAA,GAAM,EAAA,EAC5DJ,EAAAA,IAAS,GAAA,EACTA,EAAAA,IAAUR,EAAAA,CAAU,IAAA,GAAI,aAAA,GAAgBU,CAAAA,CAAUV,EAAAA,CAAMI,EAAAA,IAAM,IAAA,GAC1DM,CAAAA,CAAUV,EAAAA,CAAMG,IAAAA,CAAAA,GAAQ,UAAA,GAAa,EAAA,EACzCK,EAAAA,IAAUT,EAAAA,CAAQ,IAAA,GAAI,mBAAA,GAAsBW,CAAAA,CAAUX,EAAAA,CAAIK,EAAAA,CAAAA,GAAM,IAAA,GAC5DM,CAAAA,CAAUX,EAAAA,CAAII,IAAAA,CAAAA,GAAQ,gBAAA,GAAmB,EAAA,EAC7CK,EAAAA,IAAS,+DAAA,EACTA,EAAAA,IAAS,WAAA,EAEJ5G,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIW,EAAAA,CAAM4E,gBAAAA,EAAkBvF,EAAAA,IAAK,CAAA,EAE3C,KADAyG,EAAAA,GAAKzG,EAAAA,GAAI+F,EAAAA,GAAWC,EAAAA,EACfrE,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIhB,EAAAA,CAAM4E,cAAAA,EAAAA,EAAkB5D,EAAAA,IAAK,CAAA,EACvChB,EAAAA,CAAM2E,MAAAA,CAAOtF,EAAAA,EAAG2B,EAAAA,CAAAA,KAElBiF,EAAAA,IAAS,GAAA,IADJjF,EAAAA,GAAEoE,EAAAA,GAASC,EAAAA,CAAAA,GACI,GAAA,GAAMS,EAAAA,GAAKC,EAAAA,CAAAA;AAQrC,cAAA,OAAA,CAHAE,MAAS,uCAAA,IACA,QAAA;AAGX,YAAA,CAAA,EAEAjG,EAAAA,CAAMsG,aAAAA,GAAgB,SAASlB,EAAAA,EAAUC,EAAAA,EAAAA;AAEvCD,cAAAA,KAAWA,EAAAA,IAAY,CAAA,EACvBC,KAAAA,MAAAA,KAAiBA,EAAAA,GAAmC,IAAXD,EAAAA,GAAeC,EAAAA;AAExD,cAAA,IAAIW,EAAAA,GAAOhG,EAAAA,CAAM4E,cAAAA,EAAAA,GAAmBQ,EAAAA,GAAoB,IAATC,EAAAA,EAC3CkB,EAAAA,GAAMlB,EAAAA,EACN5B,EAAAA,GAAMuC,EAAAA,GAAOX,EAAAA;AAEjB,cAAA,OAAOiB,CAAAA,CAAcN,EAAAA,EAAMA,EAAAA,GAAM,SAASQ,IAAGC,EAAAA,EAAAA;AAC3C,gBAAA,IAAIF,MAAOC,EAAAA,IAAKA,EAAAA,GAAI/C,MAAO8C,EAAAA,IAAOE,EAAAA,IAAKA,KAAIhD,EAAAA,EAAK;AAC9C,kBAAA,IAAIzC,EAAAA,GAAIS,IAAAA,CAAKC,KAAAA,CAAAA,CAAQ8E,EAAAA,GAAID,EAAAA,IAAOnB,EAAAA,CAAAA,EAC5B/F,EAAAA,GAAIoC,IAAAA,CAAKC,KAAAA,CAAAA,CAAQ+E,EAAAA,GAAIF,EAAAA,IAAOnB,EAAAA,CAAAA;AAChC,kBAAA,OAAOpF,EAAAA,CAAM2E,MAAAA,CAAOtF,EAAAA,EAAG2B,EAAAA,IAAI,CAAA,GAAI,CAAA;AACjC,gBAAA;AACE,gBAAA,OAAO,CAAA;cAEX,CAAA,EAAA;AACF,YAAA,CAAA,EAEAhB,EAAAA,CAAM0G,YAAAA,GAAe,SAAStB,EAAAA,EAAUC,IAAQG,EAAAA,EAAAA;AAE9CJ,cAAAA,KAAWA,EAAAA,IAAY,CAAA,EACvBC,KAAAA,MAAAA,KAAiBA,EAAAA,GAAmC,IAAXD,EAAAA,GAAeC,EAAAA;AAExD,cAAA,IAAIW,KAAOhG,EAAAA,CAAM4E,cAAAA,KAAmBQ,EAAAA,GAAoB,CAAA,GAATC,IAE3CsB,EAAAA,GAAM,EAAA;AAkBV,cAAA,OAjBAA,EAAAA,IAAO,MAAA,EACPA,EAAAA,IAAO,QAAA,EACPA,MAAO3G,EAAAA,CAAMsG,aAAAA,CAAclB,EAAAA,EAAUC,EAAAA,CAAAA,EACrCsB,EAAAA,IAAO,GAAA,EACPA,EAAAA,IAAO,YACPA,EAAAA,IAAOX,EAAAA,EACPW,EAAAA,IAAO,GAAA,EACPA,EAAAA,IAAO,WAAA,EACPA,EAAAA,IAAOX,EAAAA,EACPW,MAAO,GAAA,EACHnB,EAAAA,KACFmB,EAAAA,IAAO,QAAA,EACPA,MAAOR,CAAAA,CAAUX,EAAAA,CAAAA,EACjBmB,EAAAA,IAAO,MAETA,EAAAA,GAAO,IAAA;AAGT,YAAA,CAAA;AAEA,YAAA,IAAIR,CAAAA,GAAY,SAASS,EAAAA,EAAAA;AAEvB,cAAA,KAAA,IADIC,EAAAA,GAAU,IACLzH,EAAAA,GAAI,CAAA,EAAGA,KAAIwH,EAAAA,CAAExF,MAAAA,EAAQhC,MAAK,CAAA,EAAG;AACpC,gBAAA,IAAI4B,EAAAA,GAAI4F,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,CAAAA;AACjB,gBAAA,QAAO4B,EAAAA;kBACP,KAAK,GAAA;AAAK6F,oBAAAA,EAAAA,IAAW,MAAA;AAAQ,oBAAA;kBAC7B,KAAK,GAAA;AAAKA,oBAAAA,EAAAA,IAAW,MAAA;AAAQ,oBAAA;kBAC7B,KAAK,GAAA;AAAKA,oBAAAA,EAAAA,IAAW,OAAA;AAAS,oBAAA;kBAC9B,KAAK,GAAA;AAAKA,oBAAAA,EAAAA,IAAW,QAAA;AAAU,oBAAA;AAC/B,kBAAA;AAAUA,oBAAAA,EAAAA,IAAW7F,EAAAA;AAAAA;AAEvB,cAAA;AACA,cAAA,OAAO6F,EAAAA;AACT,YAAA,CAAA;AAgHA,YAAA,OAtDA7G,EAAAA,CAAM+G,WAAAA,GAAc,SAAS3B,EAAAA,EAAUC,EAAAA,EAAAA;AAGrC,cAAA,IAAA,CAFAD,KAAWA,EAAAA,IAAY,CAAA,IAER,CAAA,EACb,OAAA,CA5DmB,SAASC,EAAAA,EAAAA;AAE9BA,gBAAAA,EAAAA,GAAAA,MAAAA,KAAiBA,EAAAA,GAAwBD,CAAAA,GAAeC,EAAAA;AAExD,gBAAA,IAIIoB,IAAGD,EAAAA,EAAGQ,EAAAA,EAAIC,EAAAA,EAAIC,EAAAA,EAJdlB,KAHW,CAAA,GAGJhG,EAAAA,CAAM4E,cAAAA,EAAAA,GAAuC,IAATS,EAAAA,EAC3CkB,EAAAA,GAAMlB,IACN5B,EAAAA,GAAMuC,EAAAA,GAAOX,IAIb8B,EAAAA,GAAS,EACX,cAAA,EAAM,QAAA,EACN,WAAM,QAAA,EACN,SAAA,EAAM,UACN,IAAA,EAAM,GAAA,IAGJC,EAAAA,GAAyB,EAC3B,cAAA,EAAM,QAAA,EACN,WAAM,QAAA,EACN,SAAA,EAAM,KACN,IAAA,EAAM,GAAA,IAGJC,EAAAA,GAAQ,EAAA;AACZ,gBAAA,KAAKZ,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIT,EAAAA,EAAMS,MAAK,CAAA,EAAG;AAG5B,kBAAA,KAFAO,KAAKvF,IAAAA,CAAKC,KAAAA,CAAAA,CAAO+E,EAAAA,GAAIF,EAAAA,IAzBR,CAAA,CAAA,EA0BbU,EAAAA,GAAKxF,IAAAA,CAAKC,KAAAA,CAAAA,CAAO+E,KAAI,CAAA,GAAIF,EAAAA,IA1BZ,CAAA,CAAA,EA2BRC,KAAI,CAAA,EAAGA,EAAAA,GAAIR,EAAAA,EAAMQ,EAAAA,IAAK,GACzBU,EAAAA,GAAI,QAAA,EAEAX,EAAAA,IAAOC,MAAKA,EAAAA,GAAI/C,EAAAA,IAAO8C,EAAAA,IAAOE,EAAAA,IAAKA,KAAIhD,EAAAA,IAAOzD,EAAAA,CAAM2E,OAAOqC,EAAAA,EAAIvF,IAAAA,CAAKC,OAAO8E,EAAAA,GAAID,EAAAA,IA9BxE,CAAA,CAAA,MA+BTW,EAAAA,GAAI,GAAA,CAAA,EAGFX,EAAAA,IAAOC,EAAAA,IAAKA,KAAI/C,EAAAA,IAAO8C,EAAAA,IAAOE,EAAAA,GAAE,CAAA,IAAKA,KAAE,CAAA,GAAIhD,EAAAA,IAAOzD,EAAAA,CAAM2E,MAAAA,CAAOsC,IAAIxF,IAAAA,CAAKC,KAAAA,CAAAA,CAAO8E,EAAAA,GAAID,EAAAA,IAlC5E,CAAA,CAAA,CAAA,GAmCTW,EAAAA,IAAK,GAAA,GAGLA,MAAK,QAAA,EAIPG,EAAAA,IAAUhC,EAAAA,GAAS,CAAA,IAAKoB,KAAE,CAAA,IAAKhD,EAAAA,GAAO2D,GAAuBF,EAAAA,CAAAA,GAAKC,GAAOD,EAAAA,CAAAA;AAG3EG,kBAAAA,EAAAA,IAAS,IAAA;AACX,gBAAA;AAEA,gBAAA,OAAIrB,EAAAA,GAAO,CAAA,IAAKX,EAAAA,GAAS,CAAA,GAChBgC,EAAAA,CAAMC,UAAU,CAAA,EAAGD,EAAAA,CAAMjG,MAAAA,GAAS4E,EAAAA,GAAO,CAAA,CAAA,GAAK1F,MAAM0F,EAAAA,GAAK,CAAA,CAAA,CAAGI,IAAAA,CAAK,QAAA,CAAA,GAGnEiB,GAAMC,SAAAA,CAAU,CAAA,EAAGD,EAAAA,CAAMjG,MAAAA,GAAO,CAAA,CAAA;AACzC,cAAA,CAAA,EAM4BiE,EAAAA,CAAAA;AAG1BD,cAAAA,MAAY,CAAA,EACZC,EAAAA,GAAAA,MAAAA,KAAiBA,EAAAA,GAAmC,IAAXD,EAAAA,GAAeC,EAAAA;AAExD,cAAA,IAIIoB,EAAAA,EAAGD,EAAAA,EAAGnH,EAAAA,EAAG6H,EAAAA,EAJTlB,KAAOhG,EAAAA,CAAM4E,cAAAA,EAAAA,GAAmBQ,EAAAA,GAAoB,IAATC,EAAAA,EAC3CkB,EAAAA,GAAMlB,EAAAA,EACN5B,EAAAA,GAAMuC,KAAOX,EAAAA,EAIbkC,EAAAA,GAAQjH,KAAAA,CAAM8E,EAAAA,GAAS,CAAA,CAAA,CAAGgB,IAAAA,CAAK,cAAA,GAC/BoB,EAAAA,GAAQlH,KAAAA,CAAM8E,EAAAA,GAAS,CAAA,EAAGgB,IAAAA,CAAK,IAAA,CAAA,EAE/BiB,EAAAA,GAAQ,IACRI,EAAAA,GAAO,EAAA;AACX,cAAA,KAAKhB,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIT,EAAAA,EAAMS,MAAK,CAAA,EAAG;AAG5B,gBAAA,KAFApH,KAAIoC,IAAAA,CAAKC,KAAAA,CAAAA,CAAQ+E,KAAIF,EAAAA,IAAOnB,EAAAA,GAC5BqC,EAAAA,GAAO,EAAA,EACFjB,EAAAA,GAAI,CAAA,EAAGA,KAAIR,EAAAA,EAAMQ,EAAAA,IAAK,GACzBU,EAAAA,GAAI,GAEAX,EAAAA,IAAOC,EAAAA,IAAKA,EAAAA,GAAI/C,EAAAA,IAAO8C,MAAOE,EAAAA,IAAKA,EAAAA,GAAIhD,MAAOzD,EAAAA,CAAM2E,MAAAA,CAAOtF,IAAGoC,IAAAA,CAAKC,KAAAA,CAAAA,CAAO8E,EAAAA,GAAID,EAAAA,IAAOnB,EAAAA,CAAAA,CAAAA,KACvF8B,KAAI,CAAA,CAAA,EAINO,EAAAA,IAAQP,KAAIK,EAAAA,GAAQC,EAAAA;AAGtB,gBAAA,KAAKnI,EAAAA,GAAI,GAAGA,EAAAA,GAAI+F,EAAAA,EAAU/F,MAAK,CAAA,EAC7BgI,MAASI,EAAAA,GAAO,IAAA;AAEpB,cAAA;AAEA,cAAA,OAAOJ,EAAAA,CAAMC,SAAAA,CAAU,CAAA,EAAGD,EAAAA,CAAMjG,SAAO,CAAA,CAAA;AACzC,YAAA,CAAA,EAEApB,EAAAA,CAAM0H,iBAAAA,GAAoB,SAASC,EAAAA,EAASvC,EAAAA,EAAAA;AAC1CA,cAAAA,KAAWA,EAAAA,IAAY,CAAA;AAEvB,cAAA,KAAA,IADIhE,EAAAA,GAASpB,EAAAA,CAAM4E,cAAAA,EAAAA,EACVrE,KAAM,CAAA,EAAGA,EAAAA,GAAMa,EAAAA,EAAQb,EAAAA,EAAAA,EAC9B,KAAA,IAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMY,IAAQZ,EAAAA,EAAAA,EAC9BmH,EAAAA,CAAQC,SAAAA,GAAY5H,EAAAA,CAAM2E,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,IAAO,OAAA,GAAU,OAAA,EACvDmH,EAAAA,CAAQE,QAAAA,CAAStH,EAAAA,GAAM6E,EAAAA,EAAU5E,EAAAA,GAAM4E,EAAAA,EAAUA,IAAUA,EAAAA,CAAAA;YAGjE,CAAA,EAEOpF,EAAAA;AACT,UAAA,CAAA;AAiBAV,UAAAA,GAAOwI,aAAAA,GAAAA,CAXPxI,EAAAA,CAAOyI,qBAAqB,EAC1B,OAAA,EAAY,SAASnB,EAAAA,EAAAA;AAEnB,YAAA,KAAA,IADIoB,EAAAA,GAAQ,EAAA,EACH5I,EAAAA,GAAI,GAAGA,EAAAA,GAAIwH,EAAAA,CAAExF,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EAAG;AACpC,cAAA,IAAI4B,EAAAA,GAAI4F,EAAAA,CAAEqB,UAAAA,CAAW7I,EAAAA,CAAAA;AACrB4I,cAAAA,EAAAA,CAAMtD,IAAAA,CAAS,GAAA,GAAJ1D,EAAAA,CAAAA;AACb,YAAA;AACA,YAAA,OAAOgH,EAAAA;AACT,UAAA,CAAA,IAGwD,OAAA,EAW1D1I,EAAAA,CAAO4I,mBAAAA,GAAsB,SAASC,IAAaC,EAAAA,EAAAA;AAIjD,YAAA,IAAIC,MAAa,WAAA;AAWf,cAAA,KAAA,IATIC,EAAAA,GAAMC,CAAAA,CAAwBJ,EAAAA,CAAAA,EAC9BK,KAAO,WAAA;AACT,gBAAA,IAAIC,EAAAA,GAAIH,GAAIE,IAAAA,EAAAA;AACZ,gBAAA,IAAA,EAAA,IAAIC,IAAS,MAAM,KAAA;AACnB,gBAAA,OAAOA,EAAAA;AACT,cAAA,CAAA,EAEIC,EAAAA,GAAQ,CAAA,EACRL,EAAAA,GAAa,EAAC,MACL;AACX,gBAAA,IAAIM,EAAAA,GAAKL,GAAIE,IAAAA,EAAAA;AACb,gBAAA,IAAA,MAAIG,EAAAA,EAAU;AACd,gBAAA,IAAIC,KAAKJ,EAAAA,EAAAA,EAILK,KAHKL,EAAAA,EAAAA,IAGM,IAFNA,EAAAA,EAAAA;AAGTH,gBAAAA,EAAAA,CAFQS,OAAOC,YAAAA,CAAeJ,EAAAA,IAAM,IAAKC,EAAAA,CAAAA,CAAAA,GAEzBC,EAAAA,EAChBH,EAAAA,IAAS,CAAA;AACX,cAAA;AACA,cAAA,IAAIA,EAAAA,IAASN,EAAAA,EACX,MAAMM,EAAAA,GAAQ,MAAA,GAASN,EAAAA;AAGzB,cAAA,OAAOC,EAAAA;AACT,YAAA,CAAA,GA3BiB,EA6BbW,EAAAA,GAAc,GAAA,CAAIf,UAAAA,CAAW,CAAA,CAAA;AAEjC,YAAA,OAAO,SAASrB,EAAAA,EAAAA;AAEd,cAAA,KAAA,IADIoB,EAAAA,GAAQ,EAAA,EACH5I,EAAAA,GAAI,GAAGA,EAAAA,GAAIwH,EAAAA,CAAExF,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EAAG;AACpC,gBAAA,IAAI4B,EAAAA,GAAI4F,EAAAA,CAAEqB,UAAAA,CAAW7I,EAAAA,CAAAA;AACrB,gBAAA,IAAI4B,EAAAA,GAAI,GAAA,EACNgH,EAAAA,CAAMtD,KAAK1D,EAAAA,CAAAA;AACN,qBAAA;AACL,kBAAA,IAAIyH,EAAAA,GAAIJ,EAAAA,CAAWzB,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,CAAAA,CAAAA;AACZ,kBAAA,QAAA,IAAA,OAALqJ,MACC,GAAA,GAAJA,EAAAA,KAAaA,KAEjBT,EAAAA,CAAMtD,IAAAA,CAAK+D,EAAAA,CAAAA,IAGXT,EAAAA,CAAMtD,KAAK+D,EAAAA,KAAM,CAAA,GACjBT,EAAAA,CAAMtD,IAAAA,CAAS,MAAJ+D,EAAAA,CAAAA,CAAAA,GAGbT,EAAAA,CAAMtD,IAAAA,CAAKsE,EAAAA,CAAAA;AAEf,gBAAA;AACF,cAAA;AACA,cAAA,OAAOhB,EAAAA;AACT,YAAA,CAAA;AACF,UAAA,CAAA;AAMA,UAAA,IAuCMiB,EAAAA,EA0CAC,EAAAA,EACAC,EAAAA,EAGAnJ,EAAAA,EAEAoJ,GA5EFzJ,CAAAA,GAAyB,EAC3B0J,CAAAA,EAAI,CAAA,EACJC,CAAAA,EAAI,CAAA,EACJC,CAAAA,EAAI,CAAA,EACJC,GAAI,CAAA,EAAA,EAsBFtI,CAAAA,IAEE+H,EAAAA,GAAyB,CAC3B,EAAA,EACA,CAAC,GAAG,EAAA,CAAA,EACJ,CAAC,CAAA,EAAG,EAAA,CAAA,EACJ,CAAC,CAAA,EAAG,EAAA,CAAA,EACJ,CAAC,CAAA,EAAG,EAAA,CAAA,EACJ,CAAC,CAAA,EAAG,EAAA,GACJ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,GAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACZ,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,CAAA,EAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,CAAA,EAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,CAAA,EAChB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,EAAA,EAAI,GAAA,CAAA,EAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,IAAI,GAAA,CAAA,EAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,GAChB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACrB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACrB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,IAAI,GAAA,EAAK,GAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,KAAK,GAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,EAC1B,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,EAC1B,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,EAC1B,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,EAC1B,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,EAC1B,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,KAAK,GAAA,CAAA,CAAA,EAExBC,EAAAA,GAAM,IAAA,EACNC,EAAAA,GAAM,IAAA,EAKNC,CAAAA,GAAc,SAASzH,EAAAA,EAAAA;AAEzB,YAAA,KAAA,IADI8H,KAAQ,CAAA,EACG,CAAA,IAAR9H,MACL8H,EAAAA,IAAS,GACT9H,EAAAA,MAAU,CAAA;AAEZ,YAAA,OAAO8H,EAAAA;AACT,UAAA,CAAA,EAAA,CATIzJ,EAAAA,GAAQ,EAAC,EAWP4B,cAAAA,GAAiB,SAASD,EAAAA,EAAAA;AAE9B,YAAA,KAAA,IADI+H,KAAI/H,EAAAA,IAAQ,EAAA,EACTyH,CAAAA,CAAYM,EAAAA,IAAKN,CAAAA,CAAYF,EAAAA,CAAAA,IAAQ,CAAA,IAC1CQ,EAAAA,IAAMR,EAAAA,IAAQE,EAAYM,EAAAA,CAAAA,GAAKN,EAAYF,EAAAA,CAAAA;AAE7C,YAAA,OAlBa,KAAA,IAkBHvH,MAAQ,EAAA,GAAM+H,EAAAA,CAAAA;UAC1B,CAAA,EAEA1J,EAAAA,CAAMuB,gBAAAA,GAAmB,SAASI,EAAAA,EAAAA;AAEhC,YAAA,KAAA,IADI+H,KAAI/H,EAAAA,IAAQ,EAAA,EACTyH,CAAAA,CAAYM,EAAAA,IAAKN,CAAAA,CAAYD,EAAAA,CAAAA,IAAQ,CAAA,IAC1CO,EAAAA,IAAMP,EAAAA,IAAQC,EAAYM,EAAAA,CAAAA,GAAKN,EAAYD,EAAAA,CAAAA;AAE7C,YAAA,OAAQxH,MAAQ,EAAA,GAAM+H,EAAAA;UACxB,CAAA,EAEA1J,EAAAA,CAAMmB,kBAAAA,GAAqB,SAAS5B,EAAAA,EAAAA;AAClC,YAAA,OAAO0J,EAAAA,CAAuB1J,KAAa,CAAA,CAAA;UAC7C,CAAA,EAEAS,EAAAA,CAAMiC,eAAAA,GAAkB,SAAS9B,EAAAA,EAAAA;AAE/B,YAAA,QAAQA,EAAAA;cAER,KAjGW,CAAA;AAkGT,gBAAA,OAAO,SAASf,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAA,CAAQjC,EAAAA,GAAIiC,MAAK,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cACnD,KAlGW,CAAA;AAmGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAOjC,KAAI,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cAC7C,KAnGW,CAAA;AAoGT,gBAAA,OAAO,SAASA,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAOA,KAAI,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cAC7C,KApGW,CAAA;AAqGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAA,CAAQjC,EAAAA,GAAIiC,MAAK,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cACnD,KArGW,CAAA;AAsGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAA,CAAQI,IAAAA,CAAKC,KAAAA,CAAMtC,EAAAA,GAAI,CAAA,CAAA,GAAKqC,KAAKC,KAAAA,CAAML,EAAAA,GAAI,CAAA,CAAA,IAAO,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cACpF,KAtGW,CAAA;AAuGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAQjC,EAAAA,GAAIiC,EAAAA,GAAK,CAAA,GAAKjC,EAAAA,GAAIiC,KAAK,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cACjE,KAvGW,CAAA;AAwGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAA,CAAUjC,KAAIiC,EAAAA,GAAK,CAAA,GAAKjC,EAAAA,GAAIiC,EAAAA,GAAK,KAAK,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;cACxE,KAxGW,CAAA;AAyGT,gBAAA,OAAO,SAASjC,IAAGiC,EAAAA,EAAAA;AAAK,kBAAA,OAAA,CAAUjC,KAAIiC,EAAAA,GAAK,CAAA,GAAA,CAAKjC,EAAAA,GAAIiC,EAAAA,IAAK,KAAK,CAAA,IAAK,CAAA;AAAG,gBAAA,CAAA;AAExE,cAAA;AACE,gBAAA,MAAM,kBAAA,GAAqBlB,EAAAA;AAAAA;UAE/B,CAAA,EAEAH,EAAAA,CAAM4D,yBAAAA,GAA4B,SAAS+F,EAAAA,EAAAA;AAEzC,YAAA,KAAA,IADIC,EAAAA,GAAI9F,CAAAA,CAAa,CAAC,CAAA,CAAA,EAAI,CAAA,CAAA,EACjB1E,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIuK,EAAAA,EAAoBvK,EAAAA,IAAK,CAAA,EAC3CwK,EAAAA,GAAIA,EAAAA,CAAEC,QAAAA,CAAS/F,CAAAA,CAAa,CAAC,CAAA,EAAGgG,CAAAA,CAAOC,IAAAA,CAAK3K,EAAAA,CAAAA,CAAAA,EAAK,CAAA,CAAA,CAAA;AAEnD,YAAA,OAAOwK,EAAAA;AACT,UAAA,CAAA,EAEA5J,EAAAA,CAAM4C,eAAAA,GAAkB,SAASwB,EAAAA,EAAM4F,EAAAA,EAAAA;AAErC,YAAA,IAAI,CAAA,IAAKA,EAAAA,IAAQA,EAAAA,GAAO,EAAA,UAIf5F,EAAAA;cACP,KA5Ja,CAAA;AA4JgB,gBAAA,OAAO,EAAA;cACpC,KA5Ja,CAAA;AA4JgB,gBAAA,OAAO,CAAA;cACpC,KA5Ja,CAAA;cA6Jb,KA5Ja,CAAA;AA4JgB,gBAAA,OAAO,CAAA;AACpC,cAAA;AACE,gBAAA,MAAM,OAAA,GAAUA,EAAAA;AAAAA;qBAGT4F,EAAAA,GAAO,EAAA,UAIT5F,EAAAA;cACP,KAzKa,CAAA;AAyKgB,gBAAA,OAAO,EAAA;cACpC,KAzKa,CAAA;AAyKgB,gBAAA,OAAO,EAAA;cACpC,KAzKa,CAAA;AAyKgB,gBAAA,OAAO,EAAA;cACpC,KAzKa,CAAA;AAyKgB,gBAAA,OAAO,EAAA;AACpC,cAAA;AACE,gBAAA,MAAM,OAAA,GAAUA,EAAAA;AAAAA;AAGb,iBAAA;AAAA,cAAA,IAAA,EAAI4F,EAAAA,GAAO,EAAA,CAAA,EAchB,MAAM,OAAA,GAAUA,EAAAA;AAVhB,cAAA,QAAO5F,EAAAA;gBACP,KAtLa,CAAA;AAsLgB,kBAAA,OAAO,EAAA;gBACpC,KAtLa,CAAA;AAsLgB,kBAAA,OAAO,EAAA;gBACpC,KAtLa,CAAA;AAsLgB,kBAAA,OAAO,EAAA;gBACpC,KAtLa,CAAA;AAsLgB,kBAAA,OAAO,EAAA;AACpC,gBAAA;AACE,kBAAA,MAAM,OAAA,GAAUA,EAAAA;AAAAA;AAKpB,YAAA;UACF,CAAA,EAEApE,EAAAA,CAAMiF,YAAAA,GAAe,SAAS3F,EAAAA,EAAAA;AAQ5B,YAAA,KAAA,IANIc,KAAcd,EAAAA,CAAOsF,cAAAA,IAErBI,EAAAA,GAAY,CAAA,EAIPzE,KAAM,CAAA,EAAGA,EAAAA,GAAMH,EAAAA,EAAaG,EAAAA,IAAO,GAC1C,KAAA,IAASC,EAAAA,GAAM,GAAGA,EAAAA,GAAMJ,EAAAA,EAAaI,MAAO,CAAA,EAAG;AAK7C,cAAA,KAAA,IAHIyJ,EAAAA,GAAY,GACZ/H,EAAAA,GAAO5C,EAAAA,CAAOqF,OAAOpE,EAAAA,EAAKC,EAAAA,CAAAA,EAErBnB,EAAAA,GAAAA,EAAAA,EAAQA,EAAAA,IAAK,GAAGA,EAAAA,IAAK,CAAA,MAE5B,EAAIkB,EAAAA,GAAMlB,KAAI,CAAA,IAAKe,EAAAA,IAAeG,EAAAA,GAAMlB,EAAAA,CAAAA,EAIxC,KAAA,IAAS2B,EAAAA,GAAAA,IAAQA,EAAAA,IAAK,CAAA,EAAGA,MAAK,CAAA,EAExBR,KAAMQ,EAAAA,GAAI,CAAA,IAAKZ,EAAAA,IAAeI,EAAAA,GAAMQ,EAAAA,IAI/B,CAAA,IAAL3B,MAAe,CAAA,IAAL2B,EAAAA,IAIVkB,MAAQ5C,EAAAA,CAAOqF,MAAAA,CAAOpE,KAAMlB,EAAAA,EAAGmB,EAAAA,GAAMQ,EAAAA,CAAAA,KACvCiJ,EAAAA,IAAa,CAAA,CAAA;AAKfA,cAAAA,EAAAA,GAAY,CAAA,KACdjF,EAAAA,IAAc,CAAA,GAAIiF,EAAAA,GAAY,CAAA,CAAA;AAElC,YAAA;AAKF,YAAA,KAAS1J,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMH,EAAAA,GAAc,GAAGG,EAAAA,IAAO,CAAA,EAC9C,KAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMJ,EAAAA,GAAc,CAAA,EAAGI,MAAO,CAAA,EAAG;AACjD,cAAA,IAAIkI,EAAAA,GAAQ,CAAA;AACRpJ,cAAAA,GAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,CAAAA,KAAOkI,MAAS,CAAA,CAAA,EACnCpJ,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,GAAGC,EAAAA,CAAAA,KAAOkI,EAAAA,IAAS,CAAA,CAAA,EACvCpJ,GAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,MAAKkI,EAAAA,IAAS,CAAA,CAAA,EACvCpJ,EAAAA,CAAOqF,MAAAA,CAAOpE,KAAM,CAAA,EAAGC,EAAAA,GAAM,CAAA,CAAA,KAAKkI,MAAS,CAAA,CAAA,EAClC,CAAA,IAATA,EAAAA,IAAuB,CAAA,IAATA,OAChB1D,EAAAA,IAAa,CAAA,CAAA;AAEjB,YAAA;AAKF,YAAA,KAASzE,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMH,EAAAA,EAAaG,EAAAA,IAAO,CAAA,EAC1C,KAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMJ,EAAAA,GAAc,CAAA,EAAGI,EAAAA,IAAO,CAAA,EAC1ClB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,CAAAA,IAAAA,CACflB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,CAAA,IACzBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,IAAKC,EAAAA,GAAM,CAAA,CAAA,IACzBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,CAAA,IACzBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,CAAA,IAAA,CACzBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,CAAA,IACzBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,GAAM,CAAA,CAAA,KAC/BwE,EAAAA,IAAa,EAAA,CAAA;AAKnB,YAAA,KAASxE,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMJ,EAAAA,EAAaI,EAAAA,IAAO,CAAA,EAC1C,KAASD,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAMH,EAAAA,GAAc,CAAA,EAAGG,EAAAA,IAAO,CAAA,EAC1CjB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,CAAAA,IAAAA,CACflB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,CAAA,EAAGC,EAAAA,CAAAA,IACvBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,KAAM,CAAA,EAAGC,EAAAA,CAAAA,IACvBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,CAAA,EAAGC,EAAAA,CAAAA,IACvBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,CAAA,EAAGC,EAAAA,CAAAA,IAAAA,CACvBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,CAAA,EAAGC,EAAAA,CAAAA,IACvBlB,EAAAA,CAAOqF,MAAAA,CAAOpE,EAAAA,GAAM,CAAA,EAAGC,EAAAA,CAAAA,KAC7BwE,EAAAA,IAAa,EAAA,CAAA;AAOnB,YAAA,IAAIkF,EAAAA,GAAY,CAAA;AAEhB,YAAA,KAAS1J,KAAM,CAAA,EAAGA,EAAAA,GAAMJ,IAAaI,EAAAA,IAAO,CAAA,OACjCD,EAAAA,GAAM,CAAA,EAAGA,KAAMH,EAAAA,EAAaG,EAAAA,IAAO,GACtCjB,EAAAA,CAAOqF,OAAOpE,EAAAA,EAAKC,EAAAA,MACrB0J,EAAAA,IAAa,CAAA,CAAA;AAQnB,YAAA,OAFAlF,EAAAA,GADYvD,KAAK0I,GAAAA,CAAI,GAAA,GAAMD,KAAY9J,EAAAA,GAAcA,EAAAA,GAAc,EAAA,CAAA,GAAM,CAAA,GACpD,EAAA;UAGvB,CAAA,EAEOJ,EAAAA,CAAAA,EAOL8J,KAAS,WAAA;AAMX,YAAA,KAAA,IAJIM,EAAAA,GAAY,IAAI9J,KAAAA,CAAM,GAAA,GACtB+J,EAAAA,GAAY,IAAI/J,MAAM,GAAA,CAAA,EAGjBlB,KAAI,CAAA,EAAGA,EAAAA,GAAI,GAAGA,EAAAA,IAAK,CAAA,EAC1BgL,EAAAA,CAAUhL,EAAAA,IAAK,CAAA,IAAKA,EAAAA;AAEtB,YAAA,KAASA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,GAAA,EAAKA,EAAAA,IAAK,GAC5BgL,EAAAA,CAAUhL,EAAAA,CAAAA,GAAKgL,EAAAA,CAAUhL,EAAAA,GAAI,CAAA,CAAA,GACzBgL,EAAAA,CAAUhL,EAAAA,GAAI,CAAA,CAAA,GACdgL,EAAAA,CAAUhL,KAAI,CAAA,CAAA,GACdgL,EAAAA,CAAUhL,EAAAA,GAAI,CAAA,CAAA;AAEpB,YAAA,KAASA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,GAAA,EAAKA,EAAAA,IAAK,CAAA,EAC5BiL,EAAAA,CAAUD,EAAAA,CAAUhL,EAAAA,CAAAA,CAAAA,GAAOA,EAAAA;AA2B7B,YAAA,OAxBY,EAEZY,IAAAA,EAAa,SAASsK,EAAAA,EAAAA;AAEpB,cAAA,IAAIA,EAAAA,GAAI,CAAA,EACN,MAAM,OAAA,GAAUA,EAAAA,GAAI,GAAA;AAGtB,cAAA,OAAOD,GAAUC,EAAAA,CAAAA;YACnB,CAAA,EAEAtK,IAAAA,EAAa,SAASsK,EAAAA,EAAAA;AAEpB,cAAA,OAAOA,EAAAA,GAAI,CAAA,IACTA,EAAAA,IAAK,GAAA;AAGP,cAAA,OAAOA,EAAAA,IAAK,GAAA,IACVA,EAAAA,IAAK,GAAA;AAGP,cAAA,OAAOF,GAAUE,EAAAA,CAAAA;YACnB,CAAA,EAAA;UAGF,CAAA,GA5Ca;AAkDb,UAAA,SAASxG,CAAAA,CAAayG,IAAKC,EAAAA,EAAAA;AAEzB,YAAA,IAAA,WAAWD,EAAAA,CAAInJ,MAAAA,EACb,MAAMmJ,EAAAA,CAAInJ,SAAS,GAAA,GAAMoJ,EAAAA;AAG3B,YAAA,IAAIC,MAAO,WAAA;AAET,cAAA,KAAA,IADIxH,EAAAA,GAAS,CAAA,EACNA,EAAAA,GAASsH,EAAAA,CAAInJ,MAAAA,IAAyB,KAAfmJ,EAAAA,CAAItH,EAAAA,CAAAA,IAChCA,EAAAA,IAAU,CAAA;AAGZ,cAAA,KAAA,IADIwH,EAAAA,GAAO,IAAInK,KAAAA,CAAMiK,EAAAA,CAAInJ,SAAS6B,EAAAA,GAASuH,EAAAA,CAAAA,EAClCpL,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAImL,GAAInJ,MAAAA,GAAS6B,EAAAA,EAAQ7D,MAAK,CAAA,EAC5CqL,GAAKrL,EAAAA,CAAAA,GAAKmL,EAAAA,CAAInL,EAAAA,GAAI6D,EAAAA,CAAAA;AAEpB,cAAA,OAAOwH,EAAAA;AACT,YAAA,CAAA,GAVW,EAYPzK,EAAAA,GAAQ,EAEZA,KAAAA,EAAc,SAASkE,EAAAA,EAAAA;AACrB,cAAA,OAAOuG,GAAKvG,EAAAA,CAAAA;AACd,YAAA,CAAA,EAEAlE,WAAkB,WAAA;AAChB,cAAA,OAAOyK,EAAAA,CAAKrJ,MAAAA;YACd,CAAA,EAEApB,QAAAA,EAAiB,SAASb,EAAAA,EAAAA;AAIxB,cAAA,KAAA,IAFIoL,EAAAA,GAAM,IAAIjK,KAAAA,CAAMN,EAAAA,CAAM2C,WAAAA,GAAcxD,EAAAA,CAAEwD,SAAAA,EAAAA,GAAc,CAAA,CAAA,EAE/CvD,KAAI,CAAA,EAAGA,EAAAA,GAAIY,GAAM2C,SAAAA,EAAAA,EAAavD,MAAK,CAAA,EAC1C,KAAA,IAASiC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIlC,EAAAA,CAAEwD,WAAAA,EAAatB,EAAAA,IAAK,GACtCkJ,EAAAA,CAAInL,KAAIiC,EAAAA,CAAAA,IAAMyI,CAAAA,CAAOC,IAAAA,CAAKD,CAAAA,CAAOY,IAAAA,CAAK1K,GAAMgE,KAAAA,CAAM5E,EAAAA,CAAAA,CAAAA,GAAO0K,CAAAA,CAAOY,KAAKvL,EAAAA,CAAE6E,KAAAA,CAAM3C,EAAAA,CAAAA,CAAAA,CAAAA;AAIjF,cAAA,OAAOyC,CAAAA,CAAayG,IAAK,CAAA,CAAA;YAC3B,CAAA,EAEAvK,GAAAA,EAAY,SAASb,EAAAA,EAAAA;AAEnB,cAAA,IAAIa,GAAM2C,SAAAA,EAAAA,GAAcxD,GAAEwD,SAAAA,EAAAA,GAAc,GACtC,OAAO3C,EAAAA;AAMT,cAAA,KAAA,IAHI2K,KAAQb,CAAAA,CAAOY,IAAAA,CAAK1K,EAAAA,CAAMgE,KAAAA,CAAM,CAAA,CAAA,CAAA,GAAO8F,CAAAA,CAAOY,IAAAA,CAAKvL,GAAE6E,KAAAA,CAAM,CAAA,CAAA,CAAA,EAE3DuG,KAAM,IAAIjK,KAAAA,CAAMN,EAAAA,CAAM2C,SAAAA,EAAAA,CAAAA,EACjBvD,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIY,GAAM2C,SAAAA,EAAAA,EAAavD,EAAAA,IAAK,CAAA,EAC1CmL,EAAAA,CAAInL,EAAAA,CAAAA,GAAKY,EAAAA,CAAMgE,MAAM5E,EAAAA,CAAAA;AAGvB,cAAA,KAASA,EAAAA,GAAI,GAAGA,EAAAA,GAAID,EAAAA,CAAEwD,WAAAA,EAAavD,EAAAA,IAAK,GACtCmL,EAAAA,CAAInL,EAAAA,CAAAA,IAAM0K,CAAAA,CAAOC,KAAKD,CAAAA,CAAOY,IAAAA,CAAKvL,GAAE6E,KAAAA,CAAM5E,EAAAA,CAAAA,CAAAA,GAAOuL,EAAAA,CAAAA;AAInD,cAAA,OAAO7G,CAAAA,CAAayG,EAAAA,EAAK,CAAA,CAAA,CAAG/I,IAAIrC,EAAAA,CAAAA;YAClC,CAAA,EAAA;AAEA,YAAA,OAAOa,EAAAA;AACT,UAAA;AAMA,UAAA,IAAIqC,oBAAY,CAAA,WAAA;AAEd,YAAA,IAAIuI,EAAAA,GAAiB,CAQnB,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,GAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA,CAAA,EAGR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,GAGR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EAGR,CAAC,CAAA,EAAG,KAAK,EAAA,CAAA,EACT,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,GAAG,EAAA,EAAI,CAAA,CAAA,EAGR,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACT,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EACR,CAAC,CAAA,EAAG,IAAI,EAAA,CAAA,EAGR,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,GAAG,EAAA,EAAI,EAAA,CAAA,EACR,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GAGnB,CAAC,CAAA,EAAG,GAAA,EAAK,EAAA,CAAA,EACT,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGnB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACT,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EAGnB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGnB,CAAC,GAAG,GAAA,EAAK,EAAA,CAAA,EACT,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EAGnB,CAAC,GAAG,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,EAAA,CAAA,EACrB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,IAAI,EAAA,CAAA,EAGnB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACT,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACnB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA,CAAA,EACtB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,GAAG,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,EAAA,CAAA,EACrB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,GAAG,GAAA,EAAK,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,EAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACnB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,KAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,GACtB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,GACtB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACnB,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,GAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,GAAG,GAAA,EAAK,GAAA,CAAA,EACtB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACtB,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,GACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA,CAAA,EACtB,CAAC,EAAA,EAAI,IAAI,EAAA,CAAA,EACT,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA,CAAA,EACtB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACT,CAAC,GAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,IAAI,EAAA,CAAA,EAGT,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACtB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,KAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACtB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,GACtB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,GAAA,EAAK,KAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,IAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EAGpB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACtB,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,KAAK,GAAA,CAAA,EACvB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,GACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,KAAK,GAAA,CAAA,EACtB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,KAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,GACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,KAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,IAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACV,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,GACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,KAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,IAAI,EAAA,CAAA,EAGpB,CAAC,EAAA,EAAI,KAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,GACvB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,KAAK,EAAA,EAAI,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,GAGpB,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,KAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EAGrB,CAAC,IAAI,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,CAAA,EACpB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,CAAA,EAGrB,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAA,EACvB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,EACrB,CAAC,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAA,CAAA,EAGnBC,EAAAA,GAAY,SAASrH,IAAYT,EAAAA,EAAAA;AACnC,cAAA,IAAI/C,KAAQ,EAAC;AAGb,cAAA,OAFAA,EAAAA,CAAMwD,UAAAA,GAAaA,EAAAA,EACnBxD,EAAAA,CAAM+C,YAAYA,EAAAA,EACX/C,EAAAA;AACT,YAAA,CAAA,EAEIA,EAAAA,GAAQ,EAkBZA,WAAAA,EAAoB,SAAST,IAAYC,EAAAA,EAAAA;AAEvC,cAAA,IAAIsL,EAAAA,GAAAA,CAlBgB,SAASvL,EAAAA,EAAYC,EAAAA,EAAAA;AAEzC,gBAAA,QAAOA,EAAAA;AACP,kBAAA,KAAKG,CAAAA,CAAuB0J,CAAAA;AAC1B,oBAAA,OAAOuB,EAAAA,CAAkC,CAAA,IAAlBrL,EAAAA,GAAa,CAAA,CAAA,GAAS,CAAA,CAAA;AAC/C,kBAAA,KAAKI,CAAAA,CAAuB2J,CAAAA;AAC1B,oBAAA,OAAOsB,EAAAA,CAAkC,CAAA,IAAlBrL,EAAAA,GAAa,CAAA,CAAA,GAAS,CAAA,CAAA;AAC/C,kBAAA,KAAKI,CAAAA,CAAuB4J,CAAAA;AAC1B,oBAAA,OAAOqB,EAAAA,CAAkC,CAAA,IAAlBrL,EAAAA,GAAa,CAAA,CAAA,GAAS,CAAA,CAAA;AAC/C,kBAAA,KAAKI,CAAAA,CAAuB6J,CAAAA;AAC1B,oBAAA,OAAOoB,EAAAA,CAAkC,CAAA,IAAlBrL,EAAAA,GAAa,CAAA,CAAA,GAAS,CAAA,CAAA;AAC/C,kBAAA;AACE,oBAAA;AAAA;AAEJ,cAAA,CAAA,EAIgCA,IAAYC,EAAAA,CAAAA;AAE1C,cAAA,IAAA,MAAA,KAAWsL,EAAAA,EACT,MAAM,4BAAA,GAA+BvL,KACjC,wBAAA,GAA2BC,EAAAA;AAOjC,cAAA,KAAA,IAJI4B,EAAAA,GAAS0J,GAAQ1J,MAAAA,GAAS,CAAA,EAE1B2J,KAAO,EAAA,EAEF3L,KAAI,CAAA,EAAGA,EAAAA,GAAIgC,IAAQhC,EAAAA,IAAK,CAAA,WAE3BsJ,EAAAA,GAAQoC,EAAAA,CAAY,IAAJ1L,EAAAA,GAAQ,CAAA,GACxBoE,EAAAA,GAAasH,EAAAA,CAAY,IAAJ1L,EAAAA,GAAQ,CAAA,GAC7B2D,EAAAA,GAAY+H,EAAAA,CAAY,IAAJ1L,EAAAA,GAAQ,CAAA,GAEvBiC,EAAAA,GAAI,CAAA,EAAGA,KAAIqH,EAAAA,EAAOrH,EAAAA,IAAK,GAC9B0J,EAAAA,CAAKrG,KAAKmG,EAAAA,CAAUrH,EAAAA,EAAYT,EAAAA,CAAAA,CAAAA;AAIpC,cAAA,OAAOgI,EAAAA;YACT,CAAA,EAAA;AAEA,YAAA,OAAO/K,EAAAA;UACT,CAAA,GA/SgB,EAqTZwC,IAAc,WAAA;AAEhB,YAAA,IAAIwI,EAAAA,GAAU,EAAA,EACVC,EAAAA,GAAU,GAEVjL,EAAAA,GAAQ,EAEZA,WAAkB,WAAA;AAChB,cAAA,OAAOgL,EAAAA;YACT,CAAA,EAEAhL,KAAAA,EAAc,SAASkE,EAAAA,EAAAA;AACrB,cAAA,IAAIgH,EAAAA,GAAWzJ,IAAAA,CAAKC,KAAAA,CAAMwC,EAAAA,GAAQ,CAAA,CAAA;AAClC,cAAA,OAA0D,MAAhD8G,EAAAA,CAAQE,EAAAA,CAAAA,KAAe,CAAA,GAAIhH,KAAQ,CAAA,GAAO,CAAA,CAAA;YACtD,CAAA,EAEAlE,GAAAA,EAAY,SAASuK,EAAAA,EAAKnJ,EAAAA,EAAAA;AACxB,cAAA,KAAA,IAAShC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIgC,EAAAA,EAAQhC,MAAK,CAAA,EAC/BY,EAAAA,CAAMgD,MAAAA,CAA8C,CAAA,KAAnCuH,EAAAA,KAASnJ,EAAAA,GAAShC,EAAAA,GAAI,IAAO,CAAA,CAAA,CAAA;AAElD,YAAA,CAAA,EAEAY,iBAAwB,WAAA;AACtB,cAAA,OAAOiL,EAAAA;YACT,CAAA,EAEAjL,MAAAA,EAAe,SAASmL,EAAAA,EAAAA;AAEtB,cAAA,IAAID,EAAAA,GAAWzJ,IAAAA,CAAKC,KAAAA,CAAMuJ,EAAAA,GAAU,CAAA,CAAA;AAChCD,cAAAA,EAAAA,CAAQ5J,MAAAA,IAAU8J,EAAAA,IACpBF,EAAAA,CAAQtG,KAAK,CAAA,CAAA,EAGXyG,EAAAA,KACFH,EAAAA,CAAQE,EAAAA,CAAAA,IAAc,GAAA,KAAUD,EAAAA,GAAU,IAG5CA,EAAAA,IAAW,CAAA;YACb,CAAA,EAAA;AAEA,YAAA,OAAOjL,EAAAA;UACT,CAAA,EAMIsE,CAAAA,GAAW,SAAS3C,EAAAA,EAAAA;AAEtB,YAAA,IACIyJ,EAAAA,GAAQzJ,EAAAA,EAER3B,EAAAA,GAAQ,EAEZA,SAAgB,WAAA;AACd,cAAA,OAtxBe,CAAA;YAuxBjB,CAAA,EAEAA,SAAAA,EAAkB,SAASuC,EAAAA,EAAAA;AACzB,cAAA,OAAO6I,EAAAA,CAAMhK,MAAAA;YACf,CAAA,EAEApB,KAAAA,EAAc,SAASuC,EAAAA,EAAAA;AAMrB,cAAA,KAAA,IAJIZ,EAAAA,GAAOyJ,IAEPhM,EAAAA,GAAI,CAAA,EAEDA,KAAI,CAAA,GAAIuC,EAAAA,CAAKP,UAClBmB,EAAAA,CAAOE,IAAI4I,EAAAA,CAAS1J,EAAAA,CAAK2F,UAAUlI,EAAAA,EAAGA,EAAAA,GAAI,CAAA,CAAA,CAAA,EAAM,EAAA,CAAA,EAChDA,EAAAA,IAAK,CAAA;AAGHA,cAAAA,EAAAA,GAAIuC,EAAAA,CAAKP,MAAAA,KACPO,EAAAA,CAAKP,SAAShC,EAAAA,IAAK,CAAA,GACrBmD,EAAAA,CAAOE,GAAAA,CAAI4I,EAAAA,CAAS1J,EAAAA,CAAK2F,SAAAA,CAAUlI,EAAAA,EAAGA,KAAI,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,GACvCuC,EAAAA,CAAKP,MAAAA,GAAShC,EAAAA,IAAK,KAC5BmD,EAAAA,CAAOE,GAAAA,CAAI4I,EAAAA,CAAS1J,EAAAA,CAAK2F,UAAUlI,EAAAA,EAAGA,EAAAA,GAAI,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA;YAGtD,CAAA,EAAA,EAEIiM,EAAAA,GAAW,SAASzE,EAAAA,EAAAA;AAEtB,cAAA,KAAA,IADI2D,KAAM,CAAA,EACDnL,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIwH,GAAExF,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EACjCmL,KAAY,EAAA,GAANA,EAAAA,GAAWe,GAAU1E,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,CAAAA,CAAAA;AAEtC,cAAA,OAAOmL,EAAAA;YACT,CAAA,EAEIe,EAAAA,GAAY,SAAStK,EAAAA,EAAAA;AACvB,cAAA,IAAI,GAAA,IAAOA,EAAAA,IAAKA,EAAAA,IAAK,GAAA,EACnB,OAAOA,EAAAA,CAAEiH,UAAAA,CAAW,CAAA,CAAA,GAAK,GAAA,CAAIA,UAAAA,CAAW,CAAA,CAAA;AAE1C,cAAA,MAAM,gBAAA,GAAmBjH,EAAAA;AAC3B,YAAA,CAAA;AAEA,YAAA,OAAOhB,EAAAA;UACT,CAAA,EAMIuE,CAAAA,GAAa,SAAS5C,EAAAA,EAAAA;AAExB,YAAA,IACIyJ,EAAAA,GAAQzJ,EAAAA,EAER3B,EAAAA,GAAQ,EAEZA,SAAgB,WAAA;AACd,cAAA,OA90Be,CAAA;YA+0BjB,CAAA,EAEAA,SAAAA,EAAkB,SAASuC,EAAAA,EAAAA;AACzB,cAAA,OAAO6I,EAAAA,CAAMhK,MAAAA;YACf,CAAA,EAEApB,KAAAA,EAAc,SAASuC,EAAAA,EAAAA;AAMrB,cAAA,KAAA,IAJIqE,EAAAA,GAAIwE,EAAAA,EAEJhM,EAAAA,GAAI,CAAA,EAEDA,EAAAA,GAAI,CAAA,GAAIwH,EAAAA,CAAExF,MAAAA,IACfmB,EAAAA,CAAOE,GAAAA,CACmB,EAAA,GAAxB8I,EAAAA,CAAQ3E,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,CAAAA,CAAAA,GACjBmM,EAAAA,CAAQ3E,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,GAAI,CAAA,CAAA,CAAA,EAAM,EAAA,CAAA,EAC7BA,EAAAA,IAAK,CAAA;AAGHA,cAAAA,EAAAA,GAAIwH,EAAAA,CAAExF,MAAAA,IACRmB,EAAAA,CAAOE,GAAAA,CAAI8I,EAAAA,CAAQ3E,EAAAA,CAAEE,MAAAA,CAAO1H,EAAAA,CAAAA,CAAAA,EAAM,CAAA,CAAA;YAEtC,CAAA,EAAA,EAEImM,EAAAA,GAAU,SAASvK,EAAAA,EAAAA;AAErB,cAAA,IAAI,GAAA,IAAOA,EAAAA,IAAKA,EAAAA,IAAK,GAAA,EACnB,OAAOA,EAAAA,CAAEiH,UAAAA,CAAW,CAAA,CAAA,GAAK,GAAA,CAAIA,UAAAA,CAAW,CAAA,CAAA;AACnC,cAAA,IAAI,GAAA,IAAOjH,EAAAA,IAAKA,EAAAA,IAAK,GAAA,EAC1B,OAAOA,EAAAA,CAAEiH,UAAAA,CAAW,CAAA,CAAA,GAAK,GAAA,CAAIA,UAAAA,CAAW,CAAA,CAAA,GAAK,EAAA;AAE7C,cAAA,QAAQjH,EAAAA;gBACR,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;gBAClB,KAAK,GAAA;AAAM,kBAAA,OAAO,EAAA;AAClB,gBAAA;AACE,kBAAA,MAAM,gBAAA,GAAmBA,EAAAA;AAAAA;AAG/B,YAAA,CAAA;AAEA,YAAA,OAAOhB,EAAAA;UACT,CAAA,EAMIwE,CAAAA,GAAa,SAAS7C,EAAAA,EAAAA;AAExB,YAAA,IAEI6J,EAAAA,GAASlM,EAAAA,CAAOwI,aAAAA,CAAcnG,EAAAA,CAAAA;AAkBlC,YAAA,OAhBY,EAEZ3B,SAAgB,WAAA;AACd,cAAA,OA74Be,CAAA;YA84BjB,CAAA,EAEAA,SAAAA,EAAkB,SAASuC,EAAAA,EAAAA;AACzB,cAAA,OAAOiJ,EAAAA,CAAOpK,MAAAA;YAChB,CAAA,EAEApB,KAAAA,EAAc,SAASuC,EAAAA,EAAAA;AACrB,cAAA,KAAA,IAASnD,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIoM,EAAAA,CAAOpK,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EACtCmD,EAAAA,CAAOE,GAAAA,CAAI+I,EAAAA,CAAOpM,EAAAA,GAAI,CAAA,CAAA;YAE1B,CAAA,EAAA;UAGF,CAAA,EAMIqF,CAAAA,GAAU,SAAS9C,EAAAA,EAAAA;AAErB,YAAA,IAGImG,EAAAA,GAAgBxI,GAAOyI,kBAAAA,CAAyB,IAAA;AACpD,YAAA,IAAA,CAAKD,IACH,MAAM,qBAAA;AAAA,YAAA,CAAA,CAEP,WAAA;AAEC,cAAA,IAAI5H,EAAAA,GAAO4H,GAIX,QAAA,CAAA;AAHA,cAAA,IAAmB,CAAA,IAAf5H,EAAAA,CAAKkB,MAAAA,IAGC,KAAA,KAHiBlB,EAAAA,CAAK,CAAA,CAAA,IAAM,CAAA,GAAKA,EAAAA,CAAK,CAAA,CAAA,CAAA,EAC9C,MAAM,qBAAA;YAEV,CAAA,GANC;AAQD,YAAA,IAAIsL,KAAS1D,EAAAA,CAAcnG,EAAAA,GAEvB3B,EAAAA,GAAQ,EAEZA,SAAgB,WAAA;AACd,cAAA,OAt7Be,CAAA;YAu7BjB,CAAA,EAEAA,SAAAA,EAAkB,SAASuC,EAAAA,EAAAA;AACzB,cAAA,OAAA,CAAA,EAAUiJ,EAAAA,CAAOpK,MAAAA,GAAS,CAAA,CAAA;YAC5B,CAAA,EAEApB,KAAAA,EAAc,SAASuC,EAAAA,EAAAA;AAMrB,cAAA,KAAA,IAJIZ,KAAO6J,EAAAA,EAEPpM,EAAAA,GAAI,GAEDA,EAAAA,GAAI,CAAA,GAAIuC,GAAKP,MAAAA,IAAQ;AAE1B,gBAAA,IAAIJ,EAAAA,GAAAA,CAAO,MAAOW,EAAAA,CAAKvC,EAAAA,MAAO,CAAA,GAAM,GAAA,GAAOuC,EAAAA,CAAKvC,EAAAA,GAAI,CAAA,CAAA;AAEpD,gBAAA,IAAI,KAAA,IAAU4B,EAAAA,IAAKA,EAAAA,IAAK,KAAA,EACtBA,EAAAA,IAAK,KAAA;AACA,qBAAA;AAAA,kBAAA,IAAA,EAAI,SAAUA,EAAAA,IAAKA,EAAAA,IAAK,QAG7B,MAAM,kBAAA,IAAsB5B,EAAAA,GAAI,CAAA,CAAA,GAAK,GAAA,GAAM4B,EAAAA;AAF3CA,kBAAAA,EAAAA,IAAK,KAAA;AAGP,gBAAA;AAEAA,gBAAAA,EAAAA,GAA0B,GAAA,IAAnBA,EAAAA,KAAM,CAAA,GAAK,GAAA,CAAA,IAAoB,GAAA,GAAJA,EAAAA,CAAAA,EAElCuB,EAAAA,CAAOE,GAAAA,CAAIzB,EAAAA,EAAG,EAAA,CAAA,EAEd5B,EAAAA,IAAK,CAAA;AACP,cAAA;AAEA,cAAA,IAAIA,EAAAA,GAAIuC,EAAAA,CAAKP,MAAAA,EACX,MAAM,sBAAsBhC,EAAAA,GAAI,CAAA,CAAA;YAEpC,CAAA,EAAA;AAEA,YAAA,OAAOY,EAAAA;AACT,UAAA,CAAA,EAUIyL,IAAwB,WAAA;AAE1B,YAAA,IAAID,KAAS,EAAA,EAETxL,KAAQ,EAEZA,SAAAA,EAAkB,SAASyI,EAAAA,EAAAA;AACzB+C,cAAAA,EAAAA,CAAO9G,IAAAA,CAAS,GAAA,GAAJ+D,EAAAA,CAAAA;YACd,CAAA,EAEAzI,UAAAA,EAAmB,SAASZ,EAAAA,EAAAA;AAC1BY,cAAAA,GAAM0L,SAAAA,CAAUtM,EAAAA,GAChBY,EAAAA,CAAM0L,SAAAA,CAAUtM,OAAM,CAAA,CAAA;AACxB,YAAA,CAAA,EAEAY,UAAAA,EAAmB,SAASyI,EAAAA,EAAGkD,EAAAA,EAAKC,EAAAA,EAAAA;AAClCD,cAAAA,EAAAA,GAAMA,EAAAA,IAAO,CAAA,EACbC,EAAAA,GAAMA,MAAOnD,EAAAA,CAAErH,MAAAA;AACf,cAAA,KAAA,IAAShC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIwM,EAAAA,EAAKxM,EAAAA,IAAK,CAAA,EAC5BY,EAAAA,CAAM0L,SAAAA,CAAUjD,EAAAA,CAAErJ,EAAAA,GAAIuM,EAAAA,CAAAA,CAAAA;YAE1B,CAAA,EAEA3L,WAAAA,EAAoB,SAAS4G,EAAAA,EAAAA;AAC3B,cAAA,KAAA,IAASxH,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIwH,EAAAA,CAAExF,MAAAA,EAAQhC,EAAAA,IAAK,CAAA,EACjCY,EAAAA,CAAM0L,SAAAA,CAAU9E,EAAAA,CAAEqB,UAAAA,CAAW7I,EAAAA,CAAAA,CAAAA;AAEjC,YAAA,CAAA,EAEAY,aAAoB,WAAA;AAClB,cAAA,OAAOwL,EAAAA;AACT,YAAA,CAAA,EAEAxL,UAAiB,WAAA;AACf,cAAA,IAAI4G,EAAAA,GAAI,EAAA;AACRA,cAAAA,EAAAA,IAAK,GAAA;AACL,cAAA,KAAA,IAASxH,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIoM,EAAAA,CAAOpK,QAAQhC,EAAAA,IAAK,CAAA,EAClCA,EAAAA,GAAI,CAAA,KACNwH,EAAAA,IAAK,GAAA,CAAA,EAEPA,EAAAA,IAAK4E,GAAOpM,EAAAA,CAAAA;AAGd,cAAA,OADAwH,EAAAA,GAAK,GAAA;YAEP,CAAA,EAAA;AAEA,YAAA,OAAO5G,EAAAA;UACT,CAAA,EA4EIuI,CAAAA,GAA0B,SAASsD,EAAAA,EAAAA;AAErC,YAAA,IAAIC,EAAAA,GAAOD,EAAAA,EACPE,EAAAA,GAAO,CAAA,EACPf,EAAAA,GAAU,CAAA,EACVgB,EAAAA,GAAU,CAAA,EAEVhM,EAAAA,GAAQ,EAEZA,IAAAA,EAAa,WAAA;AAEX,cAAA,OAAOgM,KAAU,CAAA,IAAG;AAElB,gBAAA,IAAID,EAAAA,IAAQD,GAAK1K,MAAAA,EAAQ;AACvB,kBAAA,IAAe,CAAA,IAAX4K,IACF,OAAA,EAAA;AAEF,kBAAA,MAAM,0BAAA,GAA6BA,EAAAA;AACrC,gBAAA;AAEA,gBAAA,IAAIhL,EAAAA,GAAI8K,EAAAA,CAAKhF,MAAAA,CAAOiF,EAAAA,CAAAA;AAGpB,gBAAA,IAFAA,MAAQ,CAAA,EAEC,GAAA,IAAL/K,EAAAA,EAEF,OADAgL,KAAU,CAAA,EAAA,EAAA;AAEDhL,gBAAAA,EAAAA,CAAEiL,KAAAA,CAAM,MAAA,CAAA,KAKnBjB,EAAAA,GAAWA,EAAAA,IAAW,CAAA,GAAKkB,EAAAA,CAAOlL,EAAAA,CAAEiH,UAAAA,CAAW,CAAA,CAAA,GAC/C+D,EAAAA,IAAW,CAAA,CAAA;AACb,cAAA;AAEA,cAAA,IAAI1B,EAAAA,GAAKU,EAAAA,KAAagB,EAAAA,GAAU,CAAA,GAAO,GAAA;AAEvC,cAAA,OADAA,MAAW,CAAA,EACJ1B,EAAAA;YACT,CAAA,EAAA,EAEI4B,EAAAA,GAAS,SAASlL,EAAAA,EAAAA;AACpB,cAAA,IAAI,EAAA,IAAQA,EAAAA,IAAKA,EAAAA,IAAK,EAAA,SACbA,EAAAA,GAAI,EAAA;AACN,cAAA,IAAI,MAAQA,EAAAA,IAAKA,EAAAA,IAAK,GAAA,EAC3B,OAAOA,KAAI,EAAA,GAAO,EAAA;AACb,cAAA,IAAI,MAAQA,EAAAA,IAAKA,EAAAA,IAAK,EAAA,EAC3B,OAAOA,KAAI,EAAA,GAAO,EAAA;AACb,cAAA,IAAS,EAAA,IAALA,IACT,OAAO,EAAA;AACF,cAAA,IAAS,EAAA,IAALA,IACT,OAAO,EAAA;AAEP,cAAA,MAAM,IAAA,GAAOA,EAAAA;AAEjB,YAAA,CAAA;AAEA,YAAA,OAAOhB,EAAAA;AACT,UAAA,CAAA,EAwNIsG,CAAAA,GAAgB,SAAS6F,EAAAA,EAAOC,EAAAA,EAAQC,EAAAA,EAAAA;AAE1C,YAAA,KAAA,IADIC,EAAAA,GAAAA,CAnNS,SAASH,EAAAA,EAAOC,EAAAA,EAAAA;AAE7B,cAAA,IAAIG,KAASJ,EAAAA,EACTK,EAAAA,GAAUJ,EAAAA,EACVhB,EAAAA,GAAQ,IAAI9K,KAAAA,CAAM6L,EAAAA,GAAQC,EAAAA,CAAAA,EAE1BpM,KAAQ,EAEZA,QAAAA,EAAiB,SAASwG,EAAAA,EAAGC,IAAGgG,EAAAA,EAAAA;AAC9BrB,gBAAAA,EAAAA,CAAM3E,EAAAA,GAAI8F,EAAAA,GAAS/F,EAAAA,CAAAA,GAAKiG,EAAAA;cAC1B,CAAA,EAEAzM,KAAAA,EAAc,SAAS0M,EAAAA,EAAAA;AAKrBA,gBAAAA,EAAAA,CAAIC,WAAAA,CAAY,QAAA,CAAA,EAKhBD,GAAIE,UAAAA,CAAWL,EAAAA,CAAAA,EACfG,EAAAA,CAAIE,UAAAA,CAAWJ,EAAAA,CAAAA,EAEfE,EAAAA,CAAIhB,UAAU,GAAA,CAAA,EACdgB,EAAAA,CAAIhB,SAAAA,CAAU,CAAA,CAAA,EACdgB,EAAAA,CAAIhB,SAAAA,CAAU,CAAA,CAAA,EAMdgB,EAAAA,CAAIhB,SAAAA,CAAU,CAAA,GACdgB,EAAAA,CAAIhB,SAAAA,CAAU,CAAA,CAAA,EACdgB,GAAIhB,SAAAA,CAAU,CAAA,CAAA,EAGdgB,EAAAA,CAAIhB,SAAAA,CAAU,GAAA,CAAA,EACdgB,EAAAA,CAAIhB,UAAU,GAAA,CAAA,EACdgB,EAAAA,CAAIhB,SAAAA,CAAU,GAAA,CAAA,EAKdgB,EAAAA,CAAIC,WAAAA,CAAY,GAAA,CAAA,EAChBD,EAAAA,CAAIE,UAAAA,CAAW,CAAA,CAAA,EACfF,EAAAA,CAAIE,UAAAA,CAAW,CAAA,GACfF,EAAAA,CAAIE,UAAAA,CAAWL,EAAAA,CAAAA,EACfG,GAAIE,UAAAA,CAAWJ,EAAAA,CAAAA,EACfE,EAAAA,CAAIhB,UAAU,CAAA,CAAA;AAQd,gBAAA,IACImB,EAAAA,GAASC,GADQ,CAAA,CAAA;AAGrBJ,gBAAAA,EAAAA,CAAIhB,UAHiB,CAAA,CAAA;AAOrB,gBAAA,KAAA,IAFIzI,KAAS,CAAA,EAEN4J,EAAAA,CAAOzL,MAAAA,GAAS6B,EAAAA,GAAS,OAC9ByJ,EAAAA,CAAIhB,SAAAA,CAAU,GAAA,GACdgB,EAAAA,CAAIK,UAAAA,CAAWF,IAAQ5J,EAAAA,EAAQ,GAAA,GAC/BA,EAAAA,IAAU,GAAA;AAGZyJ,gBAAAA,EAAAA,CAAIhB,UAAUmB,EAAAA,CAAOzL,MAAAA,GAAS6B,EAAAA,CAAAA,EAC9ByJ,EAAAA,CAAIK,WAAWF,EAAAA,EAAQ5J,EAAAA,EAAQ4J,GAAOzL,MAAAA,GAAS6B,EAAAA,GAC/CyJ,EAAAA,CAAIhB,SAAAA,CAAU,CAAA,CAAA,EAIdgB,EAAAA,CAAIC,YAAY,GAAA,CAAA;cAClB,CAAA,EAAA,EAqCIG,EAAAA,GAAe,SAASE,EAAAA,EAAAA;AAS1B,gBAAA,KAAA,IAPIC,EAAAA,GAAY,CAAA,IAAKD,EAAAA,EACjBE,EAAAA,GAAkC,CAAA,IAAvB,KAAKF,EAAAA,CAAAA,EAChBG,EAAAA,GAAYH,EAAAA,GAAiB,CAAA,EAG7BI,EAAAA,GAAQC,EAAAA,IAEHjO,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI6N,EAAAA,EAAW7N,EAAAA,IAAK,CAAA,EAClCgO,EAAAA,CAAME,GAAAA,CAAIxE,MAAAA,CAAOC,YAAAA,CAAa3J,EAAAA,CAAAA,CAAAA;AAEhCgO,gBAAAA,EAAAA,CAAME,GAAAA,CAAIxE,MAAAA,CAAOC,YAAAA,CAAakE,EAAAA,CAAAA,CAAAA,EAC9BG,EAAAA,CAAME,GAAAA,CAAIxE,MAAAA,CAAOC,YAAAA,CAAamE,EAAAA,CAAAA,CAAAA;AAE9B,gBAAA,IAhDIK,IACAC,EAAAA,EACAC,EAAAA,EA8CAC,EAAAA,GAAUjC,CAAAA,IACVkC,EAAAA,IAjDAJ,EAAAA,GAiDyBG,EAAAA,EAhDzBF,EAAAA,GAAa,GACbC,EAAAA,GAAa,CAAA,EAEL,EAEZzN,KAAAA,EAAc,SAAS2B,IAAMP,EAAAA,EAAAA;AAE3B,kBAAA,IAAMO,EAAAA,KAASP,EAAAA,IAAW,CAAA,EACxB,MAAM,aAAA;AAGR,kBAAA,OAAOoM,KAAapM,EAAAA,IAAU,CAAA,IAC5BmM,EAAAA,CAAK7B,SAAAA,CAAU,OAAU/J,EAAAA,IAAQ6L,EAAAA,GAAcC,GAAAA,CAAAA,EAC/CrM,EAAAA,IAAW,IAAIoM,EAAAA,EACf7L,EAAAA,MAAW,IAAI6L,EAAAA,EACfC,EAAAA,GAAa,GACbD,EAAAA,GAAa,CAAA;AAGfC,kBAAAA,EAAAA,IAAc9L,EAAAA,IAAQ6L,EAAAA,EACtBA,EAAAA,IAA0BpM,EAAAA;AAC5B,gBAAA,CAAA,EAEApB,OAAc,WAAA;AACRwN,kBAAAA,EAAAA,GAAa,CAAA,IACfD,EAAAA,CAAK7B,SAAAA,CAAU+B,EAAAA,CAAAA;gBAEnB,CAAA,EAAA,CAAA;AAwBAE,gBAAAA,EAAAA,CAAO9K,KAAAA,CAAMoK,EAAAA,EAAWE,EAAAA,CAAAA;AAExB,gBAAA,IAAIS,KAAY,CAAA,EAEZhH,EAAAA,GAAIkC,OAAOC,YAAAA,CAAaqC,EAAAA,CAAMwC,EAAAA,CAAAA,CAAAA;AAGlC,gBAAA,KAFAA,EAAAA,IAAa,CAAA,EAENA,EAAAA,GAAYxC,EAAAA,CAAMhK,MAAAA,IAAQ;AAE/B,kBAAA,IAAIJ,EAAAA,GAAI8H,MAAAA,CAAOC,YAAAA,CAAaqC,EAAAA,CAAMwC,EAAAA,CAAAA,CAAAA;AAClCA,kBAAAA,EAAAA,IAAa,CAAA,EAETR,EAAAA,CAAMS,QAAAA,CAASjH,KAAI5F,EAAAA,CAAAA,GAErB4F,EAAAA,IAAQ5F,EAAAA,IAIR2M,EAAAA,CAAO9K,KAAAA,CAAMuK,EAAAA,CAAMU,OAAAA,CAAQlH,EAAAA,CAAAA,EAAIuG,EAAAA,CAAAA,EAE3BC,EAAAA,CAAMpH,IAAAA,EAAAA,GAAS,IAAA,KAEboH,EAAAA,CAAMpH,MAAAA,IAAW,CAAA,IAAKmH,EAAAA,KACxBA,EAAAA,IAAa,IAGfC,EAAAA,CAAME,GAAAA,CAAI1G,EAAAA,GAAI5F,EAAAA,IAGhB4F,EAAAA,GAAI5F,EAAAA,CAAAA;AAER,gBAAA;AASA,gBAAA,OAPA2M,GAAO9K,KAAAA,CAAMuK,EAAAA,CAAMU,OAAAA,CAAQlH,EAAAA,GAAIuG,EAAAA,CAAAA,EAG/BQ,EAAAA,CAAO9K,KAAAA,CAAMqK,IAASC,EAAAA,CAAAA,EAEtBQ,GAAOI,KAAAA,EAAAA,EAEAL,GAAQM,WAAAA,EAAAA;AACjB,cAAA,CAAA,EAEIX,KAAW,WAAA;AAEb,gBAAA,IAAIY,EAAAA,GAAO,EAAC,EACRC,EAAAA,GAAQ,GAERlO,EAAAA,GAAQ,EAEZA,GAAAA,EAAY,SAASmO,EAAAA,EAAAA;AACnB,kBAAA,IAAInO,EAAAA,CAAM6N,QAAAA,CAASM,EAAAA,CAAAA,QACX,UAAA,GAAaA,EAAAA;AAErBF,kBAAAA,EAAAA,CAAKE,EAAAA,CAAAA,GAAOD,EAAAA,EACZA,EAAAA,IAAS,CAAA;AACX,gBAAA,CAAA,EAEAlO,MAAa,WAAA;AACX,kBAAA,OAAOkO,EAAAA;gBACT,CAAA,EAEAlO,OAAAA,EAAgB,SAASmO,EAAAA,EAAAA;AACvB,kBAAA,OAAOF,GAAKE,EAAAA,CAAAA;gBACd,CAAA,EAEAnO,QAAAA,EAAiB,SAASmO,EAAAA,EAAAA;AACxB,kBAAA,OAAA,MAAA,KAAcF,GAAKE,EAAAA,CAAAA;gBACrB,CAAA,EAAA;AAEA,gBAAA,OAAOnO,EAAAA;AACT,cAAA,CAAA;AAEA,cAAA,OAAOA,EAAAA;YACT,CAAA,EAGqBmM,EAAAA,EAAOC,EAAAA,CAAAA,EACjB3F,EAAAA,GAAI,CAAA,EAAGA,KAAI2F,EAAAA,EAAQ3F,EAAAA,IAAK,CAAA,EAC/B,KAAA,IAASD,EAAAA,GAAI,CAAA,EAAGA,KAAI2F,EAAAA,EAAO3F,EAAAA,IAAK,CAAA,EAC9B8F,EAAAA,CAAI8B,QAAAA,CAAS5H,IAAGC,EAAAA,EAAG4F,EAAAA,CAAS7F,EAAAA,EAAGC,EAAAA,CAAAA,CAAAA;AAInC,YAAA,IAAIgC,KAAIgD,CAAAA,EAAAA;AACRa,YAAAA,EAAAA,CAAIzJ,MAAM4F,EAAAA,CAAAA;AAIV,YAAA,KAAA,IAFI4F,MAlWyB,WAAA;AAE7B,cAAA,IAAIrD,EAAAA,GAAU,CAAA,EACVgB,EAAAA,GAAU,CAAA,EACVf,EAAAA,GAAU,CAAA,EACVqD,EAAAA,GAAU,EAAA,EAEVtO,EAAAA,GAAQ,EAAC,EAETuO,EAAAA,GAAe,SAAS9F,EAAAA,EAAAA;AAC1B6F,gBAAAA,MAAWxF,MAAAA,CAAOC,YAAAA,CAAayF,EAAAA,CAAW,EAAA,GAAJ/F,EAAAA,CAAAA,CAAAA;cACxC,CAAA,EAEI+F,EAAAA,GAAS,SAASlE,EAAAA,EAAAA;AACpB,gBAAA,IAAIA,KAAI,CAAA,EAAA;AAED,qBAAA;AAAA,kBAAA,IAAIA,EAAAA,GAAI,EAAA,EACb,OAAO,EAAA,GAAOA,EAAAA;AACT,kBAAA,IAAIA,EAAAA,GAAI,EAAA,EACb,OAAeA,EAAAA,GAAI,EAAA,GAAZ,EAAA;AACF,kBAAA,IAAIA,EAAAA,GAAI,EAAA,EACb,OAAeA,EAAAA,GAAI,EAAA,GAAZ,EAAA;AACF,kBAAA,IAAS,EAAA,IAALA,IACT,OAAO,EAAA;AACF,kBAAA,IAAS,EAAA,IAALA,IACT,OAAO,EAAA;AACT,gBAAA;AACA,gBAAA,MAAM,IAAA,GAAOA,EAAAA;AACf,cAAA,CAAA;AAmCA,cAAA,OAjCAtK,EAAAA,CAAM0L,SAAAA,GAAY,SAASpB,EAAAA,EAAAA;AAMzB,gBAAA,KAJAU,KAAWA,EAAAA,IAAW,CAAA,GAAU,GAAA,GAAJV,EAAAA,EAC5B0B,MAAW,CAAA,EACXf,EAAAA,IAAW,CAAA,EAEJe,EAAAA,IAAW,KAChBuC,EAAAA,CAAavD,OAAagB,EAAAA,GAAU,CAAA,GACpCA,EAAAA,IAAW,CAAA;cAEf,CAAA,EAEAhM,EAAAA,CAAM+N,QAAQ,WAAA;AAQZ,gBAAA,IANI/B,EAAAA,GAAU,CAAA,KACZuC,EAAAA,CAAavD,EAAAA,IAAY,CAAA,GAAIgB,EAAAA,CAAAA,EAC7BhB,EAAAA,GAAU,CAAA,EACVgB,EAAAA,GAAU,CAAA,CAAA,EAGRf,EAAAA,GAAU,CAAA,IAAK,GAGjB,KAAA,IADIwD,EAAAA,GAAS,CAAA,GAAIxD,EAAAA,GAAU,CAAA,EAClB7L,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAIqP,EAAAA,EAAQrP,EAAAA,IAAK,CAAA,EAC/BkP,EAAAA,IAAW,GAAA;cAGjB,CAAA,EAEAtO,EAAAA,CAAM0O,WAAW,WAAA;AACf,gBAAA,OAAOJ,EAAAA;cACT,CAAA,EAEOtO,EAAAA;AACT,YAAA,CAAA,KAmSMgI,EAAAA,GAAQS,EAAAA,CAAEuF,WAAAA,EAAAA,EACL5O,KAAI,CAAA,EAAGA,EAAAA,GAAI4I,EAAAA,CAAM5G,MAAAA,EAAQhC,MAAK,CAAA,EACrCiP,GAAO3C,SAAAA,CAAU1D,EAAAA,CAAM5I,EAAAA,CAAAA,CAAAA;AAIzB,YAAA,OAFAiP,EAAAA,CAAON,KAAAA,EAAAA,EAEA,wBAAA,GAA2BM,EAAAA;AACpC,UAAA,CAAA;AAKA,UAAA,OAAO/O,EAAAA;QACT,CAAA,GArrEa;AA0rEXA,QAAAA,CAAAA,CAAOyI,kBAAAA,CAAmB,OAAA,CAAA,GAAW,SAASnB,EAAAA,EAAAA;AAgC5C,UAAA,OAAA,CA9BA,SAAqBiF,EAAAA,EAAAA;AAEnB,YAAA,KAAA,IADI8C,EAAAA,GAAO,EAAA,EACFvP,EAAAA,GAAE,GAAGA,EAAAA,GAAIyM,EAAAA,CAAIzK,QAAQhC,EAAAA,EAAAA,EAAK;AACjC,cAAA,IAAIwP,EAAAA,GAAW/C,EAAAA,CAAI5D,UAAAA,CAAW7I,EAAAA,CAAAA;AAC1BwP,cAAAA,EAAAA,GAAW,GAAA,GAAMD,EAAAA,CAAKjK,IAAAA,CAAKkK,EAAAA,CAAAA,GACtBA,EAAAA,GAAW,IAAA,GAClBD,EAAAA,CAAKjK,IAAAA,CAAK,GAAA,GAAQkK,EAAAA,IAAY,CAAA,EAC1B,GAAA,GAAmB,EAAA,GAAXA,EAAAA,CAAAA,GAELA,EAAAA,GAAW,KAAA,IAAUA,EAAAA,IAAY,KAAA,GACxCD,EAAAA,CAAKjK,IAAAA,CAAK,GAAA,GAAQkK,EAAAA,IAAY,EAAA,EAC1B,GAAA,GAASA,EAAAA,IAAU,CAAA,GAAK,EAAA,EACxB,GAAA,GAAmB,EAAA,GAAXA,EAAAA,CAAAA,IAIZxP,EAAAA,EAAAA,EAIAwP,EAAAA,GAAW,KAAA,IAAA,CAAwB,IAAA,GAAXA,EAAAA,KAAmB,EAAA,GAClB,IAAA,GAApB/C,EAAAA,CAAI5D,UAAAA,CAAW7I,EAAAA,CAAAA,CAAAA,EACpBuP,EAAAA,CAAKjK,IAAAA,CAAK,GAAA,GAAQkK,EAAAA,IAAW,EAAA,EACzB,GAAA,GAASA,EAAAA,IAAU,EAAA,GAAM,EAAA,EACzB,GAAA,GAASA,EAAAA,IAAU,CAAA,GAAK,EAAA,EACxB,GAAA,GAAmB,EAAA,GAAXA,EAAAA,CAAAA,CAAAA;AAEhB,YAAA;AACA,YAAA,OAAOD,EAAAA;AACT,UAAA,CAAA,EACmB/H,EAAAA,CAAAA;AACrB,QAAA,CAAA,EAAA,MAAA,MAMsBvH,EAAAA,GAAA,UAAA,IAAA,QAAPD,KAIf,WAAA;AACE,UAAA,OAAOE,CAAAA;QACX,CAAA,CAAA,GANwBF,EAAAA,CAAA,MAAAD,EAAAA,EAAX,EAAA,CAAA,GAAWC,EAAAA,CAAAA,KAAAF,GAAA,OAAA,GAAAG,EAAAA,CAAAA;MAAA,CAAA,EAAA,ECjvEpBwP,IAA2B,EAAC;AAGhC,MAAA,SAASC,EAAoBC,EAAAA,EAAAA;AAE5B,QAAA,IAAIC,CAAAA,GAAeH,EAAyBE,EAAAA,CAAAA;AAC5C,QAAA,IAAA,MAAA,KAAIC,CAAAA,EACH,OAAOA,CAAAA,CAAanQ,OAAAA;AAGrB,QAAA,IAAIC,IAAS+P,CAAAA,CAAyBE,EAAAA,IAAY,EAGjDlQ,OAAAA,EAAS,EAAC,EAAA;AAOX,QAAA,OAHAoQ,CAAAA,CAAoBF,EAAAA,CAAAA,CAAUjQ,CAAAA,EAAQA,EAAOD,OAAAA,EAASiQ,CAAAA,GAG/ChQ,CAAAA,CAAOD,OAAAA;AACf,MAAA;ACrBAiQ,MAAAA,CAAAA,CAAoBxE,CAAAA,GAAKxL,CAAAA,EAAAA,KAAAA;AACxB,QAAA,IAAIoQ,KAASpQ,EAAAA,IAAUA,EAAAA,CAAOqQ,aAC7B,MAAOrQ,EAAAA,CAAiB,UACxB,MAAMI,EAAAA;AAEP,QAAA,OADA4P,EAAoBpF,CAAAA,CAAEwF,EAAAA,EAAQ,EAAEtF,CAAAA,EAAGsF,EAAAA,EAAAA,CAAAA,EAC5BA,EAAAA;AAAM,MAAA,CAAA,ECLdJ,CAAAA,CAAoBpF,CAAAA,GAAI,CAAC7K,EAAAA,EAASuQ,EAAAA,KAAAA;AACjC,QAAA,KAAA,IAAQjB,EAAAA,IAAOiB,EAAAA,EACXN,CAAAA,CAAoBO,CAAAA,CAAED,EAAAA,EAAYjB,EAAAA,CAAAA,IAAAA,CAASW,CAAAA,CAAoBO,CAAAA,CAAExQ,EAAAA,EAASsP,EAAAA,KAC5EmB,MAAAA,CAAOC,cAAAA,CAAe1Q,EAAAA,EAASsP,EAAAA,EAAK,EAAEqB,UAAAA,EAAAA,MAAkBC,GAAAA,EAAKL,EAAAA,CAAWjB,EAAAA,CAAAA,EAAAA,CAAAA;MAE1E,CAAA,ECNDW,CAAAA,CAAoBO,CAAAA,GAAI,CAACK,EAAAA,EAAKC,EAAAA,KAAUL,OAAOM,SAAAA,CAAUC,cAAAA,CAAeC,IAAAA,CAAKJ,EAAAA,EAAKC,EAAAA,CAAAA;AAAAA,MAAAA,IAAAA,IAAAA,EAAAA;AAAAA,MAAAA,OAAAA,CAAAA,MAAAA;AAAAA,QAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,OAAAA,EAAAA,MAAAA,GAAAA,CAAAA;ACMlF,QAAA,MCJMI,EAAAA,GAAYL,CAAAA,EAAAA,KAAAA,CAAAA,CAA4CA,EAAAA,IAAsB,QAAA,IAAA,OAARA,EAAAA,IAAAA,CAAqBpP,KAAAA,CAAM0P,OAAAA,CAAQN,EAAAA,CAAAA;AAEhG,QAAA,SAASO,EAAAA,CAAUC,OAA0BC,EAAAA,EAAAA;AAC1D,UAAA,IAAA,CAAKA,EAAAA,CAAQ/O,MAAAA,EAAQ,OAAO8O,EAAAA;AAC5B,UAAA,MAAME,EAAAA,GAASD,GAAQ3F,KAAAA,EAAAA;AACvB,UAAA,OAAA,MAAA,KAAI4F,MAAyBL,EAAAA,CAASG,EAAAA,KAAYH,EAAAA,CAASK,EAAAA,KAC3DF,EAAAA,GAAS,MAAA,CAAH,OAAA,EAAA,EAAQA,EAAAA,CAAAA,EACdZ,MAAAA,CAAOe,KAAKD,EAAAA,CAAAA,CAAQE,OAAAA,EAASnC,CAAAA,EAAAA,KAAAA;AAC3B,YAAA,MAAMoC,KAAcL,EAAAA,CAAO/B,EAAAA,CAAAA,EACrBqC,EAAAA,GAAcJ,GAAOjC,EAAAA,CAAAA;AAEvB7N,YAAAA,KAAAA,CAAM0P,OAAAA,CAAQO,EAAAA,CAAAA,IAAgBjQ,KAAAA,CAAM0P,OAAAA,CAAQQ,EAAAA,CAAAA,GAC9CN,EAAAA,CAAO/B,EAAAA,CAAAA,GAAOqC,EAAAA,GACLT,EAAAA,CAASQ,EAAAA,CAAAA,IAAgBR,EAAAA,CAASS,EAAAA,CAAAA,GAC3CN,EAAAA,CAAO/B,EAAAA,CAAAA,GAAO8B,EAAAA,CAAUX,OAAOmB,MAAAA,CAAO,EAAC,EAAGF,EAAAA,CAAAA,EAAcC,EAAAA,CAAAA,GAExDN,EAAAA,CAAO/B,EAAAA,CAAAA,GAAOqC,EAAAA;AAChB,UAAA,CAAA,EAAA,EAGKP,EAAAA,CAAUC,EAAAA,EAAAA,GAAWC,EAAAA,CAAAA,IAf+CD,EAAAA;AAgB7E,QAAA;ACvBe,QAAA,SAASQ,CAAAA,CAAYC,IAAaC,EAAAA,EAAAA;AAC/C,UAAA,MAAMC,EAAAA,GAAOC,QAAAA,CAASC,aAAAA,CAAc,GAAA,CAAA;AACpCF,UAAAA,GAAKG,QAAAA,GAAWJ,EAAAA,EAChBC,EAAAA,CAAKI,IAAAA,GAAON,IACZG,QAAAA,CAASI,IAAAA,CAAKC,WAAAA,CAAYN,EAAAA,GAC1BA,EAAAA,CAAKO,KAAAA,IACLN,QAAAA,CAASI,IAAAA,CAAKG,YAAYR,EAAAA,CAAAA;AAC5B,QAAA;ACHA,QAAA,MAAA,CAAA,GAAA,EACExH,CAAAA,EAAG,IAAA,EACHC,GAAG,IAAA,EACHC,CAAAA,EAAG,IAAA,EACHC,CAAAA,EAAG,GAAA,EAAA;ACLU,QAAA,MAAM8H,CAAAA,CAAAA;AAMnB,UAAA,WAAA,CAAAC,EAAY,GAAA,EAAEC,EAAAA,EAAG,MAAExH,EAAAA,EAAI,MAAA,EAAEyH,IAAAA,EAAAA;AACvBxS,YAAAA,IAAAA,CAAKyS,OAAOF,EAAAA,EACZvS,IAAAA,CAAK0S,KAAAA,GAAQ3H,EAAAA,EACb/K,KAAK2S,OAAAA,GAAUH,EAAAA;AACjB,UAAA;UAEA,IAAA,CAAKjL,EAAAA,EAAWC,EAAAA,EAAWT,EAAAA,EAAc6L,EAAAA,EAAAA;AAEvC,YAAA,IAAIC,EAAAA;AAEJ,YAAA,QAHa7S,KAAK0S,KAAAA;cAIhB,KCjBE,MAAA;ADkBAG,gBAAAA,KAAe7S,IAAAA,CAAK8S,QAAAA;AACpB,gBAAA;cACF,KClBI,QAAA;ADmBFD,gBAAAA,KAAe7S,IAAAA,CAAK+S,WAAAA;AACpB,gBAAA;cACF,KCpBW,gBAAA;ADqBTF,gBAAAA,KAAe7S,IAAAA,CAAKgT,kBAAAA;AACpB,gBAAA;cACF,KCzBK,SAAA;AD0BHH,gBAAAA,KAAe7S,IAAAA,CAAKiT,YAAAA;AACpB,gBAAA;cACF,KCxBU,eAAA;ADyBRJ,gBAAAA,KAAe7S,IAAAA,CAAKkT,iBAAAA;AACpB,gBAAA;AAEF,cAAA;AACEL,gBAAAA,KAAe7S,IAAAA,CAAKmT,WAAAA;AAAAA;AAGxBN,YAAAA,EAAAA,CAAahC,IAAAA,CAAK7Q,IAAAA,EAAM,EAAEuH,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAM6L,WAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AACxC,UAAA;AAEA,UAAA,aAAA,CAAAQ,EAAc,CAAA,EAAE7L,EAAAA,EAAC,CAAA,EAAEC,EAAAA,EAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,GAAW,CAAA,EAAC,IAAA,EAAEC,EAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,EAAAA;AACxC,YAAA,MAAMC,KAAKhM,EAAAA,GAAIR,EAAAA,GAAO,CAAA,EAChByM,EAAAA,GAAKhM,KAAIT,EAAAA,GAAO,CAAA;AAEtBuM,YAAAA,EAAAA,IACa,IAAA,MAAblD,EAAAA,GAAApQ,KAAKyT,QAAAA,CAAAA,IAAAA,MAAAA,KAAQrD,MAAAA,EAAAA,CAAEsD,YAAAA,CAAa,aAAa,CAAA,OAAA,EAAW,GAAA,GAAML,KAAY7Q,IAAAA,CAAKmR,EAAAA,IAAMJ,EAAAA,CAAAA,CAAAA,EAAMC,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACzF,UAAA;AAEA,UAAA,SAAA,CAAUI,EAAAA,EAAAA;AACR,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,gBAAgB,4BAAA,EAA8B,QAAA,CAAA,EACpF7T,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOtC,EAAAA,GAAIR,KAAO,CAAA,CAAA,CAAA,EACnD/G,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOrC,EAAAA,GAAIT,KAAO,CAAA,CAAA,CAAA,EACnD/G,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAO9C,EAAAA,GAAO,CAAA,CAAA,CAAA;AAAG,YAAA,CAAA,EAAA,CAAA,CAAA;AAGvD,UAAA;AAEA,UAAA,YAAA,CAAa6M,EAAAA,EAAAA;AACX,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,GAAA,EAAK7J,MAAAA,CAAOtC,EAAAA,CAAAA,CAAAA,EACvCvH,KAAKyT,QAAAA,CAASC,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAOrC,EAAAA,CAAAA,CAAAA,EACvCxH,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,OAAA,EAAS7J,MAAAA,CAAO9C,EAAAA,CAAAA,GAC3C/G,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,QAAA,EAAU7J,MAAAA,CAAO9C,EAAAA,CAAAA,CAAAA;AAAM,YAAA,CAAA,EAAA,CAAA,CAAA;AAGxD,UAAA;AAGA,UAAA,iBAAA,CAAkB6M,EAAAA,EAAAA;AAChB,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,YAAAA,CACZ,GAAA,EACA,KAAKnM,EAAAA,CAAAA,CAAAA,EAAKC,EAAAA,CAAAA,EAAAA,EACHT,EAAAA,CAAAA,EAAAA,CAAAA,GACAA,EAAAA,GAAO,CAAA,GACZ,CAAA,EAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,CAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,aAAA,EAAA,CAAkBA,EAAAA,CAAAA,CAAAA,CAAAA;AAC7C,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAGA,UAAA,mBAAA,CAAoB6M,EAAAA,EAAAA;AAClB,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,aACZ,GAAA,EACA,CAAA,EAAA,EAAKnM,EAAAA,CAAAA,CAAAA,EAAKC,EAAAA,KACHT,EAAAA,CAAAA,EAAAA,EACAA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,CACCA,EAAAA,GAAO,CAAA,GACb,CAAA,EAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,CAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,WAAA,EAAA,CAAgBA,EAAAA,GAAO,CAAA,IAAA,CAAMA,EAAAA,GAAO,CAAA,CAAA,CAAA,CAAA;AAC/D,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAGA,UAAA,wBAAA,CAAyB6M,EAAAA,EAAAA;AACvB,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,YAAAA,CACZ,GAAA,EACA,KAAKnM,EAAAA,CAAAA,CAAAA,EAAKC,EAAAA,CAAAA,EAAAA,EACHT,EAAAA,CAAAA,EAAAA,EACAA,EAAAA,CAAAA,EAAAA,EACAA,EAAAA,CAAAA,CAAAA,EAAQA,EAAAA,CAAAA,WAAAA,EAAAA,CAAmBA,EAAAA,CAAAA,CAAAA,EAAAA,CAASA,EAAAA,CAAAA,CAAAA,CAAAA;AAC5C,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAGA,UAAA,oBAAA,CAAqB6M,EAAAA,EAAAA;AACnB,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,YAAAA,CACZ,GAAA,EACA,KAAKnM,EAAAA,CAAAA,CAAAA,EAAKC,EAAAA,CAAAA,EAAAA,CAAAA,GACHT,EAAAA,GAAO,CAAA,GACZ,KAAKA,EAAAA,GAAO,CAAA,CAAA,CAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,WAAA,EAAeA,KAAO,CAAA,CAAA,CAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,EAAA,CAAA,GACrDA,EAAAA,GAAO,IACZ,IAAA,GAAA,CAAMA,EAAAA,GAAO,CAAA,GACb,CAAA,EAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,CAAA,EAAKA,EAAAA,GAAO,CAAA,CAAA,WAAA,EAAA,CAAgBA,EAAAA,GAAO,CAAA,CAAA,CAAA,EAAA,CAAMA,EAAAA,GAAO,CAAA,CAAA,CAAA,CAAA;AAC/D,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAEA,UAAA,QAAA,CAAA+L,EAAS,CAAA,EAAEvL,EAAAA,EAAC,GAAEC,EAAAA,EAAC,IAAA,EAAET,IAAAA,EAAAA;AACf/G,YAAAA,IAAAA,CAAK8T,SAAAA,CAAU,EAAEvM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA;AACzC,UAAA;AAEA,UAAA,WAAA,CAAAF,EAAY,CAAA,EAAE5L,EAAAA,EAAC,GAAEC,EAAAA,EAAC,IAAA,EAAET,IAAAA,EAAAA;AAClB/G,YAAAA,IAAAA,CAAK+T,YAAAA,CAAa,EAAExM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA;AAC5C,UAAA;UAEA,YAAA,CAAAJ,EAAa,GAAE1L,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,WAAA,EAAE6L,EAAAA,EAAAA,EAAAA;AACzB,YAAA,MAAMoB,EAAAA,GAAepB,EAAAA,GAAAA,CAAeA,EAAAA,CAAAA,IAAgB,CAAA,CAAA,GAAK,CAAA,EACnDqB,EAAAA,GAAgBrB,KAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,IAAK,CAAA,EACnDsB,EAAAA,GAActB,EAAAA,GAAAA,CAAeA,GAAY,CAAA,EAAA,EAAI,CAAA,GAAK,CAAA,EAClDuB,KAAiBvB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,CAAA,GAAK,CAAA,EAEpDwB,EAAAA,GAAiBJ,EAAAA,GAAeC,KAAgBC,EAAAA,GAAcC,EAAAA;AAEpE,YAAA,IAAuB,CAAA,KAAnBC,IAKJ,IAAIA,EAAAA,GAAiB,KAAMJ,EAAAA,IAAgBC,EAAAA,IAAmBC,MAAeC,EAAAA,EAC3EnU,IAAAA,CAAK+T,aAAa,EAAExM,CAAAA,EAAAA,IAAGC,CAAAA,EAAAA,EAAAA,EAAGT,MAAAA,EAAAA,EAAMsM,QAAAA,EAAU,GAAA,CAAA;AAD5C,iBAAA;AAKA,cAAA,IAAuB,MAAnBe,EAAAA,EAAsB;AACxB,gBAAA,IAAIf,EAAAA,GAAW,CAAA;AAWf,gBAAA,OATIW,EAAAA,IAAgBE,EAAAA,GAClBb,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,GACZO,EAAAA,IAAeD,EAAAA,GACxBZ,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GACPM,EAAAA,IAAiBE,OAC1Bd,EAAAA,GAAAA,CAAY7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,EAAA,KAGxB3T,IAAAA,CAAKqU,mBAAAA,CAAoB,EAAE9M,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,IAAAA,CAAAA;AAEzC,cAAA;AAEA,cAAA,IAAuB,MAAnBe,EAAAA,EAAsB;AACxB,gBAAA,IAAIf,EAAAA,GAAW,CAAA;AAWf,gBAAA,OATIa,EAAAA,GACFb,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,GACZM,EAAAA,GACTZ,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GACPQ,EAAAA,KACTd,EAAAA,GAAAA,CAAY7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,EAAA,KAGxB3T,IAAAA,CAAKsU,iBAAAA,CAAkB,EAAE/M,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAEvC,cAAA;AA9BA,YAAA;iBAPErT,IAAAA,CAAK8T,SAAAA,CAAU,EAAEvM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA;AAsC3C,UAAA;UAEA,iBAAA,CAAAH,EAAkB,GAAE3L,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,WAAA,EAAE6L,EAAAA,EAAAA,EAAAA;AAC9B,YAAA,MAAMoB,EAAAA,GAAepB,EAAAA,GAAAA,CAAeA,EAAAA,CAAAA,IAAgB,CAAA,CAAA,GAAK,CAAA,EACnDqB,EAAAA,GAAgBrB,KAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,IAAK,CAAA,EACnDsB,EAAAA,GAActB,EAAAA,GAAAA,CAAeA,GAAY,CAAA,EAAA,EAAI,CAAA,GAAK,CAAA,EAClDuB,KAAiBvB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,CAAA,GAAK,CAAA,EAEpDwB,EAAAA,GAAiBJ,EAAAA,GAAeC,KAAgBC,EAAAA,GAAcC,EAAAA;AAEpE,YAAA,IAAuB,CAAA,KAAnBC,IAKJ,IAAIA,EAAAA,GAAiB,KAAMJ,EAAAA,IAAgBC,EAAAA,IAAmBC,MAAeC,EAAAA,EAC3EnU,IAAAA,CAAK+T,aAAa,EAAExM,CAAAA,EAAAA,IAAGC,CAAAA,EAAAA,EAAAA,EAAGT,MAAAA,EAAAA,EAAMsM,QAAAA,EAAU,GAAA,CAAA;AAD5C,iBAAA;AAKA,cAAA,IAAuB,MAAnBe,EAAAA,EAAsB;AACxB,gBAAA,IAAIf,EAAAA,GAAW,CAAA;AAWf,gBAAA,OATIW,EAAAA,IAAgBE,EAAAA,GAClBb,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,GACZO,EAAAA,IAAeD,EAAAA,GACxBZ,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GACPM,EAAAA,IAAiBE,OAC1Bd,EAAAA,GAAAA,CAAY7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,EAAA,KAGxB3T,IAAAA,CAAKuU,wBAAAA,CAAyB,EAAEhN,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,IAAAA,CAAAA;AAE9C,cAAA;AAEA,cAAA,IAAuB,MAAnBe,EAAAA,EAAsB;AACxB,gBAAA,IAAIf,EAAAA,GAAW,CAAA;AAWf,gBAAA,OATIa,EAAAA,GACFb,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,GACZM,EAAAA,GACTZ,EAAAA,GAAW7Q,IAAAA,CAAKmR,EAAAA,GACPQ,EAAAA,KACTd,EAAAA,GAAAA,CAAY7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,EAAA,KAGxB3T,IAAAA,CAAKsU,iBAAAA,CAAkB,EAAE/M,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAEvC,cAAA;AA9BA,YAAA;iBAPErT,IAAAA,CAAK8T,SAAAA,CAAU,EAAEvM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA;AAsC3C,UAAA;UAEA,WAAA,CAAAN,EAAY,GAAExL,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,WAAA,EAAE6L,EAAAA,EAAAA,EAAAA;AACxB,YAAA,MAAMoB,EAAAA,GAAepB,EAAAA,GAAAA,CAAeA,EAAAA,CAAAA,EAAAA,EAAgB,CAAA,CAAA,GAAK,CAAA,EACnDqB,EAAAA,GAAgBrB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,GAAG,CAAA,CAAA,GAAK,CAAA,EACnDsB,EAAAA,GAActB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAA,EAAI,CAAA,GAAK,CAAA,EAClDuB,EAAAA,GAAiBvB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,CAAA,GAAK,CAAA;AAInC,YAAA,CAAA,KAFAoB,EAAAA,GAAeC,EAAAA,GAAgBC,EAAAA,GAAcC,EAAAA,GAO/DH,EAAAA,IAAiBE,EAAAA,GAKjBD,EAAAA,IAAkBE,EAAAA,GAKvBnU,IAAAA,CAAK+T,YAAAA,CAAa,EAAExM,CAAAA,EAAAA,IAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA,GAJxCrT,IAAAA,CAAKqU,mBAAAA,CAAoB,EAAE9M,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,IAAMsM,QAAAA,EAAU7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,EAAA,CAAA,GAL3D3T,IAAAA,CAAKqU,mBAAAA,CAAoB,EAAE9M,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,CAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,EAAA,CAAA,GAL5D3T,IAAAA,CAAKwU,oBAAAA,CAAqB,EAAEjN,GAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU7Q,IAAAA,CAAKmR,EAAAA,GAAK,GAAA,CAAA;AAehE,UAAA;UAEA,kBAAA,CAAAX,EAAmB,GAAEzL,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,WAAA,EAAE6L,EAAAA,EAAAA,EAAAA;AAC/B,YAAA,MAAMoB,EAAAA,GAAepB,EAAAA,GAAAA,CAAeA,EAAAA,CAAAA,EAAAA,EAAgB,CAAA,CAAA,GAAK,CAAA,EACnDqB,EAAAA,GAAgBrB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,GAAG,CAAA,CAAA,GAAK,CAAA,EACnDsB,EAAAA,GAActB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAA,EAAI,CAAA,GAAK,CAAA,EAClDuB,EAAAA,GAAiBvB,EAAAA,GAAAA,CAAeA,EAAAA,CAAY,CAAA,EAAG,CAAA,CAAA,GAAK,CAAA;AAInC,YAAA,CAAA,KAFAoB,EAAAA,GAAeC,EAAAA,GAAgBC,EAAAA,GAAcC,EAAAA,GAO/DH,EAAAA,IAAiBE,EAAAA,GAKjBD,EAAAA,IAAkBE,EAAAA,GAKvBnU,IAAAA,CAAK+T,YAAAA,CAAa,EAAExM,CAAAA,EAAAA,IAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU,CAAA,EAAA,CAAA,GAJxCrT,IAAAA,CAAKuU,wBAAAA,CAAyB,EAAEhN,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,IAAMsM,QAAAA,EAAU7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,EAAA,CAAA,GALhE3T,IAAAA,CAAKuU,wBAAAA,CAAyB,EAAEhN,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,CAAW7Q,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,EAAA,CAAA,GALjE3T,IAAAA,CAAKwU,oBAAAA,CAAqB,EAAEjN,GAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAU7Q,IAAAA,CAAKmR,EAAAA,GAAK,GAAA,CAAA;AAehE,UAAA;AAAA;AEzTF,QAAA,MAAA,CAAA,GAAA,EACEc,GAAAA,EAAK,KAAA,EACLC,MAAAA,EAAQ,QAAA,EACRC,YAAAA,EAAc,eAAA,EAAA,ECFHC,CAAAA,GAA6BvE,MAAAA,CAAOwE,MAAAA,CAAOC,CAAAA,CAAAA;AAEzC,QAAA,MAAMC,CAAAA,CAAAA;AAMnB,UAAA,WAAA,CAAAzC,EAAY,GAAA,EAAEC,EAAAA,EAAG,MAAExH,EAAAA,EAAI,MAAA,EAAEyH,IAAAA,EAAAA;AACvBxS,YAAAA,IAAAA,CAAKyS,OAAOF,EAAAA,EACZvS,IAAAA,CAAK0S,KAAAA,GAAQ3H,EAAAA,EACb/K,KAAK2S,OAAAA,GAAUH,EAAAA;AACjB,UAAA;UAEA,IAAA,CAAKjL,EAAAA,EAAWC,EAAAA,EAAWT,EAAAA,EAAcsM,EAAAA,EAAAA;AAEvC,YAAA,IAAIR,EAAAA;AAEJ,YAAA,QAHa7S,KAAK0S,KAAAA;AAIhB,cAAA,KAAKoC,CAAAA,CAAkBJ,MAAAA;AACrB7B,gBAAAA,KAAe7S,IAAAA,CAAKmT,WAAAA;AACpB,gBAAA;AACF,cAAA,KAAK2B,CAAAA,CAAkBH,YAAAA;AACrB9B,gBAAAA,KAAe7S,IAAAA,CAAKkT,iBAAAA;AACpB,gBAAA;AAEF,cAAA;AACEL,gBAAAA,KAAe7S,IAAAA,CAAK8S,QAAAA;AAAAA;AAGxBD,YAAAA,EAAAA,CAAahC,IAAAA,CAAK7Q,IAAAA,EAAM,EAAEuH,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,EAAAA,EAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AACxC,UAAA;AAEA,UAAA,aAAA,CAAAD,EAAc,CAAA,EAAE7L,EAAAA,EAAC,CAAA,EAAEC,EAAAA,EAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,GAAW,CAAA,EAAC,IAAA,EAAEC,EAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,EAAAA;AACxC,YAAA,MAAMC,KAAKhM,EAAAA,GAAIR,EAAAA,GAAO,CAAA,EAChByM,EAAAA,GAAKhM,KAAIT,EAAAA,GAAO,CAAA;AAEtBuM,YAAAA,EAAAA,IACa,IAAA,MAAblD,EAAAA,GAAApQ,KAAKyT,QAAAA,CAAAA,IAAAA,MAAAA,KAAQrD,MAAAA,EAAAA,CAAEsD,YAAAA,CAAa,aAAa,CAAA,OAAA,EAAW,GAAA,GAAML,KAAY7Q,IAAAA,CAAKmR,EAAAA,IAAMJ,EAAAA,CAAAA,CAAAA,EAAMC,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACzF,UAAA;AAEA,UAAA,SAAA,CAAUI,EAAAA,EAAAA;AACR,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,CAAA,EAAEQ,EAAAA,EAAC,GAAEC,EAAAA,EAAAA,GAAMoM,EAAAA,EACjBoB,EAAAA,GAAUjO,EAAAA,GAAO,CAAA;AAEvB/G,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,SAASgC,eAAAA,CAAgB,4BAAA,EAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,YAAAA,CAAa,aAAa,SAAA,CAAA,EACxC1T,KAAKyT,QAAAA,CAASC,YAAAA,CACZ,KACA,CAAA,EAAA,EAAKnM,EAAAA,GAAIR,EAAAA,GAAO,CAAA,IAAKS,EAAAA,CAAAA,EAAAA,EACdT,KAAO,CAAA,CAAA,CAAA,EAAKA,KAAO,CAAA,CAAA,iBAAA,EAEjBiO,EAAAA,CAAAA,EAAAA,EACFjO,KAAO,CAAA,GAAIiO,EAAAA,IAAWjO,EAAAA,GAAO,CAAA,GAAIiO,EAAAA,CAAAA,cAAAA,CAAAA,CAAAA;AAEzC,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAEA,UAAA,YAAA,CAAapB,EAAAA,EAAAA;AACX,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,CAAA,EAAEQ,EAAAA,EAAC,GAAEC,EAAAA,EAAAA,GAAMoM,EAAAA,EACjBoB,EAAAA,GAAUjO,EAAAA,GAAO,CAAA;AAEvB/G,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,KAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,gBAAgB,4BAAA,EAA8B,MAAA,GACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,WAAA,EAAa,SAAA,GACxC1T,IAAAA,CAAKyT,QAAAA,CAASC,aACZ,GAAA,EACA,CAAA,EAAA,EAAKnM,EAAAA,CAAAA,CAAAA,EAAKC,EAAAA,CAAAA,EAAAA,EACHT,EAAAA,CAAAA,EAAAA,EACAA,EAAAA,OAAAA,CACCA,EAAAA,GACN,MACKQ,EAAAA,GAAIyN,EAAAA,CAAAA,CAAAA,EAAWxN,EAAAA,GAAIwN,EAAAA,CAAAA,EAAAA,CAAAA,IACnBjO,KAAO,CAAA,GAAIiO,EAAAA,CAAAA,GAChB,QAAKjO,EAAAA,GAAO,CAAA,GAAIiO,MAChB,IAAA,IAAa,CAAA,GAAIA,EAAAA,GAAXjO,EAAAA,CAAAA,GACN,GAAA,CAAA;AACH,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;AAEA,UAAA,kBAAA,CAAmB6M,EAAAA,EAAAA;AACjB,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,CAAA,EAAEQ,EAAAA,EAAC,GAAEC,EAAAA,EAAAA,GAAMoM,EAAAA,EACjBoB,EAAAA,GAAUjO,EAAAA,GAAO,CAAA;AAEvB/G,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,WAAA,EAAa,SAAA,CAAA,EACxC1T,IAAAA,CAAKyT,SAASC,YAAAA,CACZ,GAAA,EACA,CAAA,EAAA,EAAKnM,EAAAA,IAAKC,EAAAA,GAAI,GAAA,GAAMwN,EAAAA,CAAAA,EAAAA,CAAAA,GACb,IAAIA,EAAAA,GACT,CAAA,EAAA,EAAK,GAAA,GAAMA,EAAAA,IAAW,GAAA,GAAMA,EAAAA,CAAAA,WAAAA,EAA+B,GAAA,GAAVA,EAAAA,CAAAA,CAAAA,EAA2B,GAAA,GAAVA,EAAAA,CAAAA,EAAAA,CAAAA,GAC7D,IAAIA,EAAAA,GACT,CAAA,EAAA,EAAK,GAAA,GAAMA,EAAAA,IAAW,GAAA,GAAMA,EAAAA,CAAAA,WAAAA,EAA+B,GAAA,GAAVA,EAAAA,CAAAA,CAAAA,EAA4B,GAAA,GAAA,CAAVA,EAAAA,OAAAA,EAAAA,GACzDA,EAAAA,GACV,CAAA,EAAA,EAAK,GAAA,GAAMA,EAAAA,CAAAA,CAAAA,EAAW,GAAA,GAAMA,EAAAA,CAAAA,WAAAA,EAAgC,MAAA,CAAVA,EAAAA,CAAAA,CAAAA,EAA4B,GAAA,GAAA,CAAVA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,KAC1DA,EAAAA,GACV,CAAA,EAAA,EAAK,MAAMA,EAAAA,CAAAA,CAAAA,EAAW,GAAA,GAAMA,EAAAA,cAAgC,GAAA,GAAA,CAAVA,EAAAA,CAAAA,CAAAA,EAA2B,MAAVA,EAAAA,CAAAA,EAAAA,EAC9DzN,EAAAA,GAAI,GAAA,GAAMyN,EAAAA,CAAAA,CAAAA,EAAWxN,EAAAA,GAAIwN,EAAAA,CAAAA,EAAAA,CAAAA,GACzB,IAAIA,EAAAA,GACT,CAAA,EAAA,EAAK,GAAA,GAAMA,EAAAA,IAAW,GAAA,GAAMA,EAAAA,CAAAA,WAAAA,EAA+B,GAAA,GAAVA,EAAAA,CAAAA,CAAAA,EAA2B,GAAA,GAAVA,EAAAA,CAAAA,EAAAA,CAAAA,GAC7D,IAAIA,EAAAA,GACT,CAAA,EAAA,EAAK,MAAMA,EAAAA,CAAAA,CAAAA,EAAW,MAAMA,EAAAA,CAAAA,WAAAA,EAAgC,GAAA,GAAA,CAAVA,EAAAA,CAAAA,CAAAA,EAA2B,GAAA,GAAVA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,KACzDA,EAAAA,GACV,CAAA,EAAA,EAAK,GAAA,GAAMA,EAAAA,IAAW,GAAA,GAAMA,EAAAA,CAAAA,WAAAA,EAAgC,GAAA,GAAA,CAAVA,EAAAA,CAAAA,CAAAA,EAA4B,GAAA,GAAA,CAAVA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,GAC1DA,EAAAA,GACV,CAAA,EAAA,EAAK,MAAMA,EAAAA,CAAAA,CAAAA,EAAW,GAAA,GAAMA,EAAAA,cAA+B,GAAA,GAAVA,EAAAA,IAA4B,GAAA,GAAA,CAAVA,EAAAA,CAAAA,CAAAA,CAAAA;AACtE,YAAA,CAAA,EAAA,CAAA,CAAA;AAGP,UAAA;UAEA,QAAA,CAAAlC,EAAS,GAAEvL,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,EAAAA,EAAAA;AACrBrT,YAAAA,IAAAA,CAAK8T,SAAAA,CAAU,EAAEvM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAC/B,UAAA;UAEA,WAAA,CAAAF,EAAY,GAAE5L,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,EAAAA,EAAAA;AACxBrT,YAAAA,IAAAA,CAAK+T,YAAAA,CAAa,EAAExM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAClC,UAAA;UAEA,iBAAA,CAAAH,EAAkB,GAAE3L,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,EAAAA,EAAAA;AAC9BrT,YAAAA,IAAAA,CAAKiV,kBAAAA,CAAmB,EAAE1N,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AACxC,UAAA;AAAA;ACtIF,QAAA,MAAA,CAAA,GAAA,EACEoB,GAAAA,EAAK,KAAA,EACLC,MAAAA,EAAQ,UAAA,ECDGQ,CAAAA,GAA0B7E,MAAAA,CAAOwE,MAAAA,CAAOM,CAAAA,CAAAA;AAEtC,QAAA,MAAMC,CAAAA,CAAAA;AAMnB,UAAA,WAAA,CAAA9C,EAAY,GAAA,EAAEC,EAAAA,EAAG,MAAExH,EAAAA,EAAI,MAAA,EAAEyH,IAAAA,EAAAA;AACvBxS,YAAAA,IAAAA,CAAKyS,OAAOF,EAAAA,EACZvS,IAAAA,CAAK0S,KAAAA,GAAQ3H,EAAAA,EACb/K,KAAK2S,OAAAA,GAAUH,EAAAA;AACjB,UAAA;UAEA,IAAA,CAAKjL,EAAAA,EAAWC,EAAAA,EAAWT,EAAAA,EAAcsM,EAAAA,EAAAA;AAEvC,YAAA,IAAIR,EAAAA;AAIAA,YAAAA,EAAAA,GALS7S,KAAK0S,KAAAA,KAIXyC,CAAAA,CAAeT,SACH1U,IAAAA,CAAKmT,WAAAA,GAILnT,KAAK8S,QAAAA,EAGxBD,EAAAA,CAAahC,KAAK7Q,IAAAA,EAAM,EAAEuH,GAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AACxC,UAAA;AAEA,UAAA,aAAA,CAAAD,EAAc,CAAA,EAAE7L,EAAAA,EAAC,CAAA,EAAEC,EAAAA,EAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,GAAW,CAAA,EAAC,IAAA,EAAEC,EAAAA,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,EAAAA;AACxC,YAAA,MAAMC,KAAKhM,EAAAA,GAAIR,EAAAA,GAAO,CAAA,EAChByM,EAAAA,GAAKhM,KAAIT,EAAAA,GAAO,CAAA;AAEtBuM,YAAAA,EAAAA,IACa,IAAA,MAAblD,EAAAA,GAAApQ,KAAKyT,QAAAA,CAAAA,IAAAA,MAAAA,KAAQrD,MAAAA,EAAAA,CAAEsD,YAAAA,CAAa,aAAa,CAAA,OAAA,EAAW,GAAA,GAAML,KAAY7Q,IAAAA,CAAKmR,EAAAA,IAAMJ,EAAAA,CAAAA,CAAAA,EAAMC,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACzF,UAAA;AAEA,UAAA,SAAA,CAAUI,EAAAA,EAAAA;AACR,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,QAAAA,GAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,gBAAgB,4BAAA,EAA8B,QAAA,CAAA,EACpF7T,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOtC,EAAAA,GAAIR,KAAO,CAAA,CAAA,CAAA,EACnD/G,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOrC,EAAAA,GAAIT,KAAO,CAAA,CAAA,CAAA,EACnD/G,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAO9C,EAAAA,GAAO,CAAA,CAAA,CAAA;AAAG,YAAA,CAAA,EAAA,CAAA,CAAA;AAGvD,UAAA;AAEA,UAAA,YAAA,CAAa6M,EAAAA,EAAAA;AACX,YAAA,MAAA,EAAM,IAAA,EAAE7M,EAAAA,EAAI,GAAEQ,EAAAA,EAAC,CAAA,EAAEC,IAAAA,GAAMoM,EAAAA;AAEvB5T,YAAAA,IAAAA,CAAKoT,aAAAA,CAAc,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACbQ,EAAAA,CAAAA,EAAI,EACPN,IAAAA,EAAM,MAAA;AACJtT,cAAAA,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA,EACpF7T,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,GAAA,EAAK7J,MAAAA,CAAOtC,EAAAA,CAAAA,CAAAA,EACvCvH,KAAKyT,QAAAA,CAASC,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAOrC,EAAAA,CAAAA,CAAAA,EACvCxH,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,OAAA,EAAS7J,MAAAA,CAAO9C,EAAAA,CAAAA,GAC3C/G,IAAAA,CAAKyT,QAAAA,CAASC,aAAa,QAAA,EAAU7J,MAAAA,CAAO9C,EAAAA,CAAAA,CAAAA;AAAM,YAAA,CAAA,EAAA,CAAA,CAAA;AAGxD,UAAA;UAEA,QAAA,CAAA+L,EAAS,GAAEvL,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,EAAAA,EAAAA;AACrBrT,YAAAA,IAAAA,CAAK8T,SAAAA,CAAU,EAAEvM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAC/B,UAAA;UAEA,WAAA,CAAAF,EAAY,GAAE5L,EAAAA,EAAC,CAAA,EAAEC,IAAC,IAAA,EAAET,EAAAA,EAAI,QAAA,EAAEsM,EAAAA,EAAAA,EAAAA;AACxBrT,YAAAA,IAAAA,CAAK+T,YAAAA,CAAa,EAAExM,CAAAA,EAAAA,EAAAA,EAAGC,CAAAA,EAAAA,IAAGT,IAAAA,EAAAA,EAAAA,EAAMsM,QAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAClC,UAAA;AAAA;AC1EF,QAAA,MCAA,CAAA,GAEU,QAAA,ECQJgC,CAAAA,GAAa,CACjB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,GACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,CAAA,CAAA,EAGfC,CAAAA,GAAU,CACd,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,GACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACnB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,CAAA;AAGrB,QAAA,MAAqBC,CAAAA,CAAAA;AAiBnB,UAAA,WAAA,CAAYC,IAA0BhD,EAAAA,EAAAA;AAqjBtC,YAAA,IAAA,CAAAiD,UAAAA,GAAcC,CAAAA,EAAAA,KACR1V,IAAAA,CAAK2V,SAASC,WAAAA,CAAYC,SAAAA,GACrBrT,KAAKC,KAAAA,CAAMiT,EAAAA,IAEbA,EAAAA,EAxjBP1V,IAAAA,CAAK2S,UAAUH,EAAAA,EACfxS,IAAAA,CAAKyT,WAAWzT,IAAAA,CAAK2S,OAAAA,CAAQd,SAASgC,eAAAA,CAAgB,4BAAA,EAA8B,KAAA,CAAA,EACpF7T,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,OAAA,EAAS7J,OAAO2L,EAAAA,CAAQtI,KAAAA,CAAAA,CAAAA,EACnDlN,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,QAAA,EAAU7J,OAAO2L,EAAAA,CAAQrI,MAAAA,CAAAA,CAAAA,EACpDnN,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,aAAA,EAAe,8BAAA,CAAA,EACrC8B,EAAAA,CAAQI,YAAYC,SAAAA,IACvB7V,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,iBAAA,EAAmB,YAAA,CAAA,EAEhD1T,IAAAA,CAAKyT,SAASC,YAAAA,CAAa,SAAA,EAAW,OAAO8B,EAAAA,CAAQtI,KAAAA,IAASsI,EAAAA,CAAQrI,MAAAA,EAAAA,CAAAA,EACtEnN,IAAAA,CAAK8V,QAAQ9V,IAAAA,CAAK2S,OAAAA,CAAQd,SAASgC,eAAAA,CAAgB,4BAAA,EAA8B,MAAA,CAAA,EACjF7T,IAAAA,CAAKyT,SAASvB,WAAAA,CAAYlS,IAAAA,CAAK8V,KAAAA,CAAAA,EAC/B9V,IAAAA,CAAK+V,YAAYP,EAAAA,CAAQQ,KAAAA,EACzBhW,KAAKiW,WAAAA,GAAcV,CAAAA,CAAMW,aAAAA,EAAAA,EACzBlW,IAAAA,CAAK2V,QAAAA,GAAWH,EAAAA;AAClB,UAAA;AAEA,UAAA,IAAA,KAAA,GAAItI;AACF,YAAA,OAAOlN,KAAK2V,QAAAA,CAASzI,KAAAA;AACvB,UAAA;AAEA,UAAA,IAAA,MAAA,GAAIC;AACF,YAAA,OAAOnN,KAAK2V,QAAAA,CAASxI,MAAAA;AACvB,UAAA;UAEA,UAAA,GAAAgJ;AACE,YAAA,OAAOnW,IAAAA,CAAKyT,QAAAA;AACd,UAAA;AAEA,UAAA,MAAA,OAAa2C,EAAAA,EAAAA;AACX,YAAA,MAAM3M,EAAAA,GAAQ2M,EAAAA,CAAGzQ,cAAAA,EAAAA,EACX0Q,KAAU7T,IAAAA,CAAK8E,GAAAA,CAAItH,IAAAA,CAAK2V,QAAAA,CAASzI,KAAAA,EAAOlN,IAAAA,CAAK2V,QAAAA,CAASxI,MAAAA,IAAiC,CAAA,GAAvBnN,IAAAA,CAAK2V,QAAAA,CAASvP,MAAAA,EAC9EkQ,EAAAA,GAAatW,IAAAA,CAAK2V,QAAAA,CAASY,KAAAA,KAAUC,IAAoBH,EAAAA,GAAU7T,IAAAA,CAAKiU,IAAAA,CAAK,CAAA,IAAKJ,EAAAA,EAClFrB,EAAAA,GAAUhV,IAAAA,CAAKyV,UAAAA,CAAWa,KAAa7M,EAAAA,CAAAA;AAC7C,YAAA,IAAIiN,EAAAA,GAAgB,EAClBC,SAAAA,EAAW,CAAA,EACXC,WAAW,CAAA,EACX1J,KAAAA,EAAO,CAAA,EACPC,MAAAA,EAAQ,CAAA,EAAA;AAKV,YAAA,IAFAnN,IAAAA,CAAK6W,GAAAA,GAAMT,EAAAA,EAEPpW,IAAAA,CAAK2V,SAASK,KAAAA,EAAO;AAGvB,cAAA,IAAA,MADMhW,IAAAA,CAAK8W,SAAAA,EAAAA,EAAAA,CACN9W,KAAK+W,MAAAA,EAAQ;AAClB,cAAA,MAAA,EAAM,cAAEC,EAAAA,EAAY,SAAA,EAAEC,IAAAA,GAAcjX,IAAAA,CAAK2V,UACnCuB,EAAAA,GAAaF,EAAAA,CAAaG,YAAYC,CAAAA,CAAwBH,EAAAA,CAAU1W,oBAAAA,CAAAA,EACxE8W,EAAAA,GAAgB7U,KAAKC,KAAAA,CAAMyU,EAAAA,GAAazN,KAAQA,EAAAA,CAAAA;AAEtDiN,cAAAA,EAAAA,GAAAA,CCrFS,SAAA,EAA4B,cAAA,EACzCY,EAAAA,EAAc,aAAA,EACdC,EAAAA,EAAa,aAAA,EACbF,EAAAA,EAAa,iBAAA,EACbG,EAAAA,EAAiB,OAAA,EACjBxC,IAAAA,EAAAA;AAEA,gBAAA,MAAMyC,EAAAA,GAAW,EAAElQ,CAAAA,EAAG,CAAA,EAAGC,CAAAA,EAAG,CAAA,EAAA,EACtB2P,EAAAA,GAAY,EAAE5P,CAAAA,EAAG,CAAA,EAAGC,CAAAA,EAAG,CAAA,EAAA;AAE7B,gBAAA,IAAI8P,MAAkB,CAAA,IAAKC,EAAAA,IAAiB,CAAA,IAAKF,EAAAA,IAAiB,KAAKrC,EAAAA,IAAW,CAAA,EAChF,OAAO,EACL7H,QAAQ,CAAA,EACRD,KAAAA,EAAO,GACP0J,SAAAA,EAAW,CAAA,EACXD,WAAW,CAAA,EAAA;AAIf,gBAAA,MAAMe,KAAIJ,EAAAA,GAAiBC,EAAAA;AA6B3B,gBAAA,OA1BAE,EAAAA,CAASlQ,CAAAA,GAAI/E,IAAAA,CAAKC,KAAAA,CAAMD,IAAAA,CAAKiU,IAAAA,CAAKY,EAAAA,GAAgBK,EAAAA,CAAAA,CAAAA,EAE9CD,EAAAA,CAASlQ,CAAAA,IAAK,CAAA,KAAGkQ,GAASlQ,CAAAA,GAAI,CAAA,CAAA,EAE9BiQ,EAAAA,IAAqBA,EAAAA,GAAoBC,EAAAA,CAASlQ,CAAAA,KAAGkQ,EAAAA,CAASlQ,CAAAA,GAAIiQ,EAAAA,CAAAA,EAElEC,EAAAA,CAASlQ,CAAAA,GAAI,CAAA,IAAM,CAAA,IAAGkQ,EAAAA,CAASlQ,KACnC4P,EAAAA,CAAU5P,CAAAA,GAAIkQ,EAAAA,CAASlQ,CAAAA,GAAIyN,EAAAA,EAI3ByC,EAAAA,CAASjQ,CAAAA,GAAI,CAAA,GAAI,CAAA,GAAIhF,IAAAA,CAAKmV,IAAAA,CAAAA,CAAMF,EAAAA,CAASlQ,CAAAA,GAAImQ,EAAAA,GAAI,KAAK,CAAA,CAAA,EACtDP,EAAAA,CAAU3P,CAAAA,GAAIhF,IAAAA,CAAKoV,KAAAA,CAAMT,EAAAA,CAAU5P,CAAAA,GAAImQ,EAAAA,CAAAA,EAAAA,CAEnCD,EAAAA,CAASjQ,CAAAA,GAAIiQ,EAAAA,CAASlQ,CAAAA,GAAI8P,MAAkBG,EAAAA,IAAqBA,EAAAA,GAAoBC,EAAAA,CAASjQ,CAAAA,MAC5FgQ,EAAAA,IAAqBA,EAAAA,GAAoBC,EAAAA,CAASjQ,CAAAA,IACpDiQ,EAAAA,CAASjQ,CAAAA,GAAIgQ,EAAAA,EACTC,EAAAA,CAASjQ,CAAAA,GAAI,CAAA,IAAM,KAAGiQ,EAAAA,CAASlQ,CAAAA,EAAAA,IAEnCkQ,EAAAA,CAASjQ,CAAAA,IAAK,CAAA,EAEhB2P,EAAAA,CAAU3P,CAAAA,GAAIiQ,EAAAA,CAASjQ,CAAAA,GAAIwN,EAAAA,EAC3ByC,EAAAA,CAASlQ,CAAAA,GAAI,CAAA,GAAI,CAAA,GAAI/E,KAAKmV,IAAAA,CAAAA,CAAMF,EAAAA,CAASjQ,CAAAA,GAAIkQ,EAAAA,GAAI,CAAA,IAAK,CAAA,CAAA,EACtDP,EAAAA,CAAU5P,CAAAA,GAAI/E,IAAAA,CAAKoV,KAAAA,CAAMT,EAAAA,CAAU3P,CAAAA,GAAIkQ,EAAAA,IAGlC,EACLvK,MAAAA,EAAQgK,EAAAA,CAAU3P,CAAAA,EAClB0F,KAAAA,EAAOiK,EAAAA,CAAU5P,CAAAA,EACjBqP,SAAAA,EAAWa,EAAAA,CAASjQ,CAAAA,EACpBmP,SAAAA,EAAWc,EAAAA,CAASlQ,CAAAA,EAAAA;AAExB,cAAA,CAAA,ED+ByC,EACjCgQ,aAAAA,EAAevX,IAAAA,CAAK+W,MAAAA,CAAO7J,KAAAA,EAC3BoK,gBAAgBtX,IAAAA,CAAK+W,MAAAA,CAAO5J,MAAAA,EAC5BkK,aAAAA,EAAAA,IACAG,iBAAAA,EAAmB/N,EAAAA,GAAQ,EAAA,EAC3BuL,OAAAA,EAAAA,IAAAA,CAAAA;AAEJ,YAAA;AAEAhV,YAAAA,IAAAA,CAAK6X,gBAAAA,EACL7X,IAAAA,CAAK8X,QAAAA,EAAS,CAACxW,IAAaC,EAAAA,KAAAA;AAAAA,cAAAA,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA;AAC1B,cAAA,OAAA,EAAIvB,KAAK2V,QAAAA,CAASqB,YAAAA,CAAae,sBAE3BzW,EAAAA,IAAAA,CAAQmI,EAAAA,GAAQiN,GAAcE,SAAAA,IAAa,CAAA,IAC3CtV,MAAOmI,EAAAA,GAAQiN,EAAAA,CAAcE,aAAa,CAAA,IAC1CrV,EAAAA,IAAAA,CAAQkI,KAAQiN,EAAAA,CAAcC,SAAAA,IAAa,CAAA,IAC3CpV,EAAAA,GAAAA,CAAOkI,EAAAA,GAAQiN,EAAAA,CAAcC,aAAa,CAAA,KAM3B,IAAA,MAAfvW,KAAAiV,CAAAA,CAAW/T,EAAAA,MAAAA,MAAAA,KAAIlB,EAAAA,GAAA,SAAAA,EAAAA,CAAGmB,EAAAA,OAAmC,IAAA,MAA3B8J,EAAAA,GAAAgK,EAAW/T,EAAAA,GAAMmI,EAAAA,GAAQ,CAAA,CAAA,CAAA,IAAA,MAAA,KAAE4B,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAG9J,EAAAA,OAAuB,IAAA,MAAf6O,EAAAA,GAAAiF,EAAW/T,EAAAA,CAAAA,CAAAA,IAAAA,WAAI8O,EAAAA,GAAA,MAAA,GAAAA,GAAG7O,EAAAA,GAAMkI,EAAAA,GAAQ,CAAA,CAAA,CAAA,KAIpF,IAAA,MAAZkB,KAAA2K,CAAAA,CAAQhU,EAAAA,MAAAA,MAAAA,KAAIqJ,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAGpJ,EAAAA,CAAAA,CAAAA,KAAgC,UAAxByW,EAAAA,GAAA1C,CAAAA,CAAQhU,KAAMmI,EAAAA,GAAQ,CAAA,MAAA,MAAA,KAAEuO,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAGzW,EAAAA,CAAAA,CAAAA,KAAoB,UAAZkJ,EAAAA,GAAA6K,CAAAA,CAAQhU,EAAAA,CAAAA,CAAAA,IAAAA,MAAAA,KAAImJ,KAAA,MAAA,GAAAA,EAAAA,CAAGlJ,EAAAA,GAAMkI,EAAAA,GAAQ,CAAA,CAAA,CAAA,CAAA;YAIhF,CAAA,EAAA,EAEbzJ,KAAKiY,WAAAA,EAAAA,EAEDjY,KAAK2V,QAAAA,CAASK,KAAAA,IAAAA,MACVhW,IAAAA,CAAKkY,SAAAA,CAAU,EAAEhL,KAAAA,EAAOwJ,EAAAA,CAAcxJ,OAAOC,MAAAA,EAAQuJ,EAAAA,CAAcvJ,QAAQ1D,KAAAA,EAAAA,EAAAA,EAAOuL,OAAAA,EAAAA,EAAAA,EAAAA,CAAAA;AAE5F,UAAA;UAEA,cAAA,GAAA6C;AAAAA,YAAAA,IAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AACE,YAAA,MAAMM,EAAAA,GAAUnY,IAAAA,CAAKyT,QAAAA,EACf+B,EAAAA,GAAUxV,IAAAA,CAAK2V,QAAAA;AAErB,YAAA,IAAIwC,EAAAA,EAAS;AACX,cAAA,MAAMC,KAA2C,IAAA,MAAzBnY,EAAAA,GAAAuV,GAAQ6C,iBAAAA,CAAAA,IAAAA,MAAAA,KAAiBpY,KAAA,MAAA,GAAAA,EAAAA,CAAEqY,QAAAA,EAC7CC,EAAAA,GAAiC,UAAzBrY,EAAAA,GAAAsV,EAAAA,CAAQ6C,sBAAAA,MAAAA,KAAiBnY,EAAAA,GAAA,SAAAA,EAAAA,CAAEqY,KAAAA;AACzC,cAAA,IAAIpL,EAAAA,GAASqI,EAAAA,CAAQrI,MAAAA,EACjBD,EAAAA,GAAQsI,EAAAA,CAAQtI,KAAAA;AAEpB,cAAA,IAAIkL,MAAmBG,EAAAA,EAAO;AAC5B,gBAAA,MAAMJ,KAAUnY,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA;AACpF7T,gBAAAA,IAAAA,CAAKwY,mBAAAA,GAAsBxY,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,UAAA,CAAA,EAC/F7T,IAAAA,CAAKwY,mBAAAA,CAAoB9E,YAAAA,CAAa,IAAA,EAAM,CAAA,2BAAA,EAA8B1T,IAAAA,CAAKiW,WAAAA,CAAAA,CAAAA,CAAAA,EAC/EjW,IAAAA,CAAK8V,KAAAA,CAAM5D,WAAAA,CAAYlS,IAAAA,CAAKwY,mBAAAA,CAAAA,EAAAA,CAEC,IAAA,MAAzBrY,EAAAA,GAAAqV,EAAAA,CAAQ6C,iBAAAA,CAAAA,IAAAA,MAAAA,KAAiBlY,EAAAA,GAAA,SAAAA,EAAAA,CAAEyX,KAAAA,MAC7BzK,EAAAA,GAASD,EAAAA,GAAQ1K,IAAAA,CAAK8E,GAAAA,CAAIkO,EAAAA,CAAQtI,KAAAA,EAAOsI,EAAAA,CAAQrI,MAAAA,CAAAA,EACjDgL,EAAAA,CAAQzE,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAQsD,EAAAA,GAAS,CAAA,GAAKqI,EAAAA,CAAQ6C,iBAAAA,CAAkBT,KAAAA,CAAAA,CAAAA,CAAAA,EAG7EO,EAAAA,CAAQzE,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAO7J,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQtI,KAAAA,GAAQA,MAAS,CAAA,CAAA,CAAA,CAAA,EAC3EiL,EAAAA,CAAQzE,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAO7J,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQrI,MAAAA,GAASA,EAAAA,IAAU,CAAA,CAAA,CAAA,CAAA,EAC7EgL,EAAAA,CAAQzE,YAAAA,CAAa,OAAA,EAAS7J,MAAAA,CAAOqD,EAAAA,CAAAA,CAAAA,EACrCiL,EAAAA,CAAQzE,YAAAA,CAAa,QAAA,EAAU7J,MAAAA,CAAOsD,EAAAA,CAAAA,CAAAA,EAEtCnN,IAAAA,CAAKwY,mBAAAA,CAAoBtG,WAAAA,CAAYiG,EAAAA,CAAAA,EAErCnY,IAAAA,CAAKyY,YAAAA,CAAa,EAChBjD,OAAAA,EAAS4C,EAAAA,EACTG,KAAAA,EAAOA,EAAAA,EACPG,kBAAAA,EAAoB,CAAA,EACpBnR,CAAAA,EAAG,CAAA,EACHC,CAAAA,EAAG,CAAA,EACH2F,MAAAA,EAAQqI,EAAAA,CAAQrI,MAAAA,EAChBD,KAAAA,EAAOsI,EAAAA,CAAQtI,KAAAA,EACfyE,IAAAA,EAAM,CAAA,iBAAA,EAAoB3R,IAAAA,CAAKiW,WAAAA,CAAAA,CAAAA,EAAAA,CAAAA;AAEnC,cAAA;AACF,YAAA;AACF,UAAA;AAEA,UAAA,QAAA,CAAS0C,EAAAA,EAAAA;AAAAA,YAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AACP,YAAA,IAAA,CAAK3Y,IAAAA,CAAK6W,GAAAA,EACR,MAAM,wBAAA;AAGR,YAAA,MAAMrB,KAAUxV,IAAAA,CAAK2V,QAAAA,EACflM,EAAAA,GAAQzJ,IAAAA,CAAK6W,IAAIlR,cAAAA,EAAAA;AAEvB,YAAA,IAAI8D,KAAQ+L,EAAAA,CAAQtI,KAAAA,IAASzD,EAAAA,GAAQ+L,EAAAA,CAAQrI,QAC3C,MAAM,0BAAA;AAGR,YAAA,MAAMkJ,EAAAA,GAAU7T,IAAAA,CAAK8E,GAAAA,CAAIkO,EAAAA,CAAQtI,KAAAA,EAAOsI,EAAAA,CAAQrI,MAAAA,CAAAA,GAA2B,CAAA,GAAjBqI,EAAAA,CAAQpP,MAAAA,EAC5DkQ,EAAAA,GAAad,EAAAA,CAAQe,KAAAA,KAAUC,CAAAA,GAAoBH,EAAAA,GAAU7T,IAAAA,CAAKiU,IAAAA,CAAK,CAAA,CAAA,GAAKJ,EAAAA,EAC5ErB,EAAAA,GAAUhV,IAAAA,CAAKyV,UAAAA,CAAWa,EAAAA,GAAa7M,EAAAA,CAAAA,EACvCmP,EAAAA,GAAa5Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQtI,KAAAA,GAAQzD,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA,EACjE6D,EAAAA,GAAa7Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQrI,MAAAA,GAAS1D,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA,EAClEP,EAAAA,GAAM,IAAIpC,CAAAA,CAAM,EACpBE,GAAAA,EAAKvS,IAAAA,CAAKyT,QAAAA,EACV1I,IAAAA,EAAMyK,EAAAA,CAAQI,WAAAA,CAAY7K,IAAAA,EAC1ByH,MAAAA,EAAQxS,IAAAA,CAAK2S,OAAAA,EAAAA,CAAAA;AAGf3S,YAAAA,IAAAA,CAAK8Y,aAAAA,GAAgB9Y,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,UAAA,CAAA,EACzF7T,IAAAA,CAAK8Y,aAAAA,CAAcpF,YAAAA,CAAa,IAAA,EAAM,CAAA,oBAAA,EAAuB1T,KAAKiW,WAAAA,CAAAA,CAAAA,CAAAA,EAClEjW,IAAAA,CAAK8V,KAAAA,CAAM5D,WAAAA,CAAYlS,IAAAA,CAAK8Y,aAAAA,CAAAA,EAE5B9Y,IAAAA,CAAKyY,YAAAA,CAAa,EAChBjD,OAAAA,EAA4B,IAAA,MAAnBtV,KAAAsV,EAAAA,CAAQI,WAAAA,CAAAA,IAAAA,MAAAA,KAAW1V,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEoY,QAAAA,EAC9BC,KAAAA,EAAO/C,EAAAA,CAAQI,WAAAA,CAAY2C,KAAAA,EAC3BG,kBAAAA,EAAoB,CAAA,EACpBnR,CAAAA,EAAG,CAAA,EACHC,CAAAA,EAAG,CAAA,EACH2F,MAAAA,EAAQqI,EAAAA,CAAQrI,MAAAA,EAChBD,KAAAA,EAAOsI,EAAAA,CAAQtI,KAAAA,EACfyE,IAAAA,EAAM,CAAA,UAAA,EAAa3R,IAAAA,CAAKiW,WAAAA,CAAAA,CAAAA,EAAAA,CAAAA;AAG1B,YAAA,KAAA,IAAS3U,KAAM,CAAA,EAAGA,EAAAA,GAAMmI,IAAOnI,EAAAA,EAAAA,EAC7B,KAAA,IAASC,KAAM,CAAA,EAAGA,EAAAA,GAAMkI,EAAAA,EAAOlI,EAAAA,EAAAA,EACzBoX,EAAAA,IAAAA,CAAWA,GAAOrX,EAAAA,EAAKC,EAAAA,MAGd,IAAA,MAARpB,EAAAA,GAAAH,IAAAA,CAAK6W,GAAAA,CAAAA,IAAAA,WAAG1W,EAAAA,GAAA,MAAA,GAAAA,GAAEuF,MAAAA,CAAOpE,EAAAA,EAAKC,EAAAA,CAAAA,MAI3BkT,EAAAA,CAAInB,IAAAA,CACFsF,EAAAA,GAAarX,KAAMyT,EAAAA,EACnB6D,EAAAA,GAAavX,KAAM0T,EAAAA,EACnBA,EAAAA,GACA,CAAC+D,EAAAA,EAAiBC,EAAAA,KAAAA,EACZzX,EAAAA,GAAMwX,KAAU,CAAA,IAAKzX,EAAAA,GAAM0X,KAAU,CAAA,IAAKzX,EAAAA,GAAMwX,MAAWtP,EAAAA,IAASnI,EAAAA,GAAM0X,EAAAA,IAAWvP,EAAAA,CAAAA,IAAAA,EACrFkP,EAAAA,IAAAA,CAAWA,GAAOrX,EAAAA,GAAM0X,EAAAA,EAASzX,KAAMwX,EAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAClC/Y,KAAK6W,GAAAA,IAAO7W,IAAAA,CAAK6W,IAAInR,MAAAA,CAAOpE,EAAAA,GAAM0X,IAASzX,EAAAA,GAAMwX,EAAAA,GAAAA,EAI1DtE,EAAAA,CAAIhB,YAAYzT,IAAAA,CAAK8Y,aAAAA,IACvB9Y,KAAK8Y,aAAAA,CAAc5G,WAAAA,CAAYuC,GAAIhB,QAAAA,CAAAA,CAAAA;AAKzC,YAAA,IAAI+B,EAAAA,CAAQe,UAAUC,CAAAA,EAAmB;AACvC,cAAA,MAAMyC,EAAAA,GAAiBjZ,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYY,EAAAA,GAAUrB,EAAAA,GAAUvL,EAAAA,IAAS,CAAA,CAAA,EAC/DyP,EAAAA,GAAYzP,EAAAA,GAAyB,CAAA,GAAjBwP,EAAAA,EACpBE,EAAAA,GAAiBP,EAAAA,GAAaK,EAAAA,GAAiBjE,EAAAA,EAC/CoE,EAAAA,GAAiBP,EAAAA,GAAaI,EAAAA,GAAiBjE,EAAAA,EAC/CqE,EAAAA,GAAyB,EAAA,EACzBC,EAAAA,GAAStZ,IAAAA,CAAKyV,UAAAA,CAAWyD,EAAAA,GAAY,CAAA,CAAA;AAE3C,cAAA,KAAA,IAAS5X,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM4X,EAAAA,EAAW5X,EAAAA,EAAAA,EAAO;AACxC+X,gBAAAA,EAAAA,CAAW/X,EAAAA,CAAAA,GAAO,EAAA;AAClB,gBAAA,KAAA,IAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM2X,EAAAA,EAAW3X,MAE/BD,EAAAA,IAAO2X,EAAAA,GAAiB,CAAA,IACxB3X,EAAAA,IAAO4X,EAAAA,GAAYD,EAAAA,IACnB1X,EAAAA,IAAO0X,KAAiB,CAAA,IACxB1X,EAAAA,IAAO2X,EAAAA,GAAYD,EAAAA,IAMjBzW,IAAAA,CAAKiU,IAAAA,CAAAA,CAAMnV,EAAAA,GAAMgY,EAAAA,KAAWhY,KAAMgY,EAAAA,CAAAA,GAAAA,CAAW/X,EAAAA,GAAM+X,EAAAA,KAAW/X,EAAAA,GAAM+X,EAAAA,CAAAA,CAAAA,GAAWA,EAAAA,GAJjFD,EAAAA,CAAW/X,EAAAA,CAAAA,CAAKC,EAAAA,CAAAA,GAAO,CAAA,GAUzB8X,EAAAA,CAAW/X,EAAAA,CAAAA,CAAKC,EAAAA,IAAOvB,IAAAA,CAAK6W,GAAAA,CAAInR,MAAAA,CAC9BnE,EAAAA,GAAM,CAAA,GAAI0X,EAAAA,GAAiB,CAAA,GAAI1X,EAAAA,GAAMA,MAAOkI,EAAAA,GAAQlI,EAAAA,GAAM,CAAA,GAAI0X,EAAAA,GAAiB1X,EAAAA,GAAM0X,EAAAA,EACrF3X,EAAAA,GAAM,CAAA,GAAI2X,KAAiB,CAAA,GAAI3X,EAAAA,GAAMA,EAAAA,IAAOmI,EAAAA,GAAQnI,KAAM,CAAA,GAAI2X,EAAAA,GAAiB3X,EAAAA,GAAM2X,EAAAA,IAEnF,CAAA,GACA,CAAA;AAER,cAAA;AAEA,cAAA,KAAA,IAAS3X,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM4X,EAAAA,EAAW5X,EAAAA,EAAAA,EACjC,KAAA,IAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM2X,EAAAA,EAAW3X,EAAAA,EAAAA,EAC5B8X,EAAAA,CAAW/X,EAAAA,CAAAA,CAAKC,EAAAA,CAAAA,KAErBkT,EAAAA,CAAInB,IAAAA,CACF6F,EAAAA,GAAiB5X,EAAAA,GAAMyT,EAAAA,EACvBoE,EAAAA,GAAiB9X,EAAAA,GAAM0T,EAAAA,EACvBA,EAAAA,GACA,CAAC+D,EAAAA,EAAiBC,EAAAA,KAAAA;AAAAA,gBAAAA,IAAAA,EAAAA;AAChB,gBAAA,OAAA,CAAA,EAAkC,IAAA,MAAzB5Y,EAAAA,GAAAiZ,EAAAA,CAAW/X,EAAAA,GAAM0X,EAAAA,CAAAA,CAAAA,IAAAA,MAAAA,KAAQ5Y,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAGmB,KAAMwX,EAAAA,CAAAA,CAAAA;cAAQ,CAAA,EAAA,EAGnDtE,GAAIhB,QAAAA,IAAYzT,IAAAA,CAAK8Y,iBACvB9Y,IAAAA,CAAK8Y,aAAAA,CAAc5G,WAAAA,CAAYuC,EAAAA,CAAIhB,QAAAA,CAAAA,CAAAA;AAI3C,YAAA;AACF,UAAA;UAEA,WAAA,GAAAwE;AACE,YAAA,IAAA,CAAKjY,IAAAA,CAAK6W,GAAAA,EACR,MAAM,wBAAA;AAGR,YAAA,MAAMsB,EAAAA,GAAUnY,IAAAA,CAAKyT,QAAAA,EACf+B,EAAAA,GAAUxV,IAAAA,CAAK2V,QAAAA;AAErB,YAAA,IAAA,CAAKwC,IACH,MAAM,6BAAA;AAGR,YAAA,MAAM1O,EAAAA,GAAQzJ,IAAAA,CAAK6W,GAAAA,CAAIlR,cAAAA,EAAAA,EACjB0Q,KAAU7T,IAAAA,CAAK8E,GAAAA,CAAIkO,EAAAA,CAAQtI,KAAAA,EAAOsI,EAAAA,CAAQrI,MAAAA,IAA2B,CAAA,GAAjBqI,EAAAA,CAAQpP,MAAAA,EAC5DkQ,EAAAA,GAAad,EAAAA,CAAQe,KAAAA,KAAUC,CAAAA,GAAoBH,EAAAA,GAAU7T,IAAAA,CAAKiU,IAAAA,CAAK,CAAA,CAAA,GAAKJ,EAAAA,EAC5ErB,EAAAA,GAAUhV,KAAKyV,UAAAA,CAAWa,EAAAA,GAAa7M,EAAAA,CAAAA,EACvC8P,EAAAA,GAA8B,CAAA,GAAVvE,IACpBwE,EAAAA,GAA2B,CAAA,GAAVxE,EAAAA,EACjB4D,EAAAA,GAAa5Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,GAAQtI,KAAAA,GAAQzD,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA,EACjE6D,EAAAA,GAAa7Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQrI,MAAAA,GAAS1D,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA;AAExE,YAAA,CACE,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,CAAA,EACP,CAAC,CAAA,EAAG,CAAA,EAAGxS,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,EACjB,CAAC,CAAA,EAAG,CAAA,EAAA,CAAInR,IAAAA,CAAKmR,EAAAA,GAAK,CAAA,CAAA,CAAA,CAClBtC,OAAAA,EAAQ,CAAA,CAAEoI,EAAAA,EAAQnY,EAAAA,EAAK+R,EAAAA,CAAAA,KAAAA;AAAAA,cAAAA,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA;AACvB,cAAA,MAAM9L,CAAAA,GAAIqR,EAAAA,GAAaa,EAAAA,GAASzE,EAAAA,IAAWvL,EAAAA,GAAQ,IAC7CjC,CAAAA,GAAIqR,EAAAA,GAAavX,EAAAA,GAAM0T,EAAAA,IAAWvL,EAAAA,GAAQ,CAAA,CAAA;AAChD,cAAA,IAAIiQ,CAAAA,GAAwB1Z,IAAAA,CAAK8Y,aAAAA,EAC7Ba,CAAAA,GAAqB3Z,IAAAA,CAAK8Y,aAAAA;AAoB9B,cAAA,IAAA,CAAA,CAlBgC,IAAA,MAA5Bc,KAAApE,EAAAA,CAAQqE,oBAAAA,CAAAA,IAAAA,WAAoBD,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEtB,QAAAA,MAAwC,IAAA,MAA5BwB,EAAAA,GAAAtE,GAAQqE,oBAAAA,CAAAA,IAAAA,MAAAA,KAAoBC,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEvB,KAAAA,CAAAA,MAC1EmB,IAAwB1Z,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,UAAA,GAC5F6F,CAAAA,CAAsBhG,YAAAA,CAAa,IAAA,EAAM,CAAA,+BAAA,EAAkC+F,EAAAA,CAAAA,CAAAA,EAAUnY,EAAAA,CAAAA,CAAAA,EAAOtB,IAAAA,CAAKiW,WAAAA,CAAAA,CAAAA,CAAAA,EACjGjW,IAAAA,CAAK8V,MAAM5D,WAAAA,CAAYwH,CAAAA,CAAAA,EACvB1Z,IAAAA,CAAK+Z,sBAAAA,GAAyB/Z,IAAAA,CAAKga,sBAAsBL,CAAAA,GAAqBD,CAAAA,EAE9E1Z,IAAAA,CAAKyY,YAAAA,CAAa,EAChBjD,OAAAA,EAAqC,UAA5ByE,EAAAA,GAAAzE,EAAAA,CAAQqE,oBAAAA,CAAAA,IAAAA,MAAAA,KAAoBI,EAAAA,GAAA,MAAA,GAAAA,GAAE3B,QAAAA,EACvCC,KAAAA,EAAmC,IAAA,MAA5B/O,EAAAA,GAAAgM,EAAAA,CAAQqE,oBAAAA,CAAAA,IAAAA,WAAoBrQ,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAE+O,KAAAA,EACrCG,kBAAAA,EAAoBrF,EAAAA,EACpB9L,GAAAA,CAAAA,EACAC,CAAAA,EAAAA,CAAAA,EACA2F,MAAAA,EAAQoM,EAAAA,EACRrM,KAAAA,EAAOqM,IACP5H,IAAAA,EAAM,CAAA,qBAAA,EAAwB8H,EAAAA,CAAAA,CAAAA,EAAUnY,EAAAA,CAAAA,CAAAA,EAAOtB,KAAKiW,WAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAIxB,IAAA,MAA5BzO,EAAAA,GAAAgO,GAAQqE,oBAAAA,CAAAA,IAAAA,MAAAA,KAAoBrS,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEuD,IAAAA,KAAQ6J,EAA2BsF,QAAAA,CAAS1E,EAAAA,CAAQqE,oBAAAA,CAAqB9O,IAAAA,CAAAA,EAAO;AAChH,gBAAA,MAAMoP,EAAAA,GAAgB,IAAIpF,CAAAA,CAAe,EACvCxC,KAAKvS,IAAAA,CAAKyT,QAAAA,EACV1I,IAAAA,EAAMyK,EAAAA,CAAQqE,oBAAAA,CAAqB9O,IAAAA,EACnCyH,MAAAA,EAAQxS,IAAAA,CAAK2S,SAAAA,CAAAA;AAGfwH,gBAAAA,EAAAA,CAAc7G,IAAAA,CAAK/L,CAAAA,EAAGC,CAAAA,EAAG+R,EAAAA,EAAmBlG,EAAAA,CAAAA,EAExC8G,EAAAA,CAAc1G,QAAAA,IAAYiG,CAAAA,IAC5BA,CAAAA,CAAsBxH,WAAAA,CAAYiI,GAAc1G,QAAAA,CAAAA;cAEpD,CAAA,MAAO;AACL,gBAAA,MAAMgB,EAAAA,GAAM,IAAIpC,CAAAA,CAAM,EACpBE,KAAKvS,IAAAA,CAAKyT,QAAAA,EACV1I,IAAAA,EAAAA,CAAmC,IAAA,MAA5BxD,EAAAA,GAAAiO,EAAAA,CAAQqE,yBAAAA,MAAAA,KAAoBtS,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEwD,IAAAA,KAAoByK,EAAAA,CAAQI,YAAY7K,IAAAA,EAC7EyH,MAAAA,EAAQxS,IAAAA,CAAK2S,OAAAA,EAAAA,CAAAA;AAGf,gBAAA,KAAA,IAASrR,KAAM,CAAA,EAAGA,EAAAA,GAAM+T,CAAAA,CAAWlT,MAAAA,EAAQb,MACzC,KAAA,IAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM8T,EAAW/T,EAAAA,CAAAA,CAAKa,QAAQZ,EAAAA,EAAAA,EAAAA,CAC1B,UAAf6Y,EAAAA,GAAA/E,CAAAA,CAAW/T,EAAAA,CAAAA,CAAAA,IAAAA,WAAI8Y,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAG7Y,EAAAA,OAIvBkT,EAAAA,CAAInB,IAAAA,CACF/L,CAAAA,GAAIhG,EAAAA,GAAMyT,IACVxN,CAAAA,GAAIlG,EAAAA,GAAM0T,IACVA,EAAAA,GACA,CAAC+D,IAAiBC,EAAAA,KAAAA;AAA4B,kBAAA,IAAA3N,EAAAA;AAAC,kBAAA,OAAA,CAAA,EAA2B,IAAA,MAAzBA,EAAAA,GAAAgK,CAAAA,CAAW/T,EAAAA,GAAM0X,EAAAA,CAAAA,CAAAA,IAAAA,MAAAA,KAAQ3N,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAG9J,KAAMwX,EAAAA,CAAAA,CAAAA;AAAQ,gBAAA,CAAA,IAGzFtE,EAAAA,CAAIhB,QAAAA,IAAYiG,KAClBA,CAAAA,CAAsBxH,WAAAA,CAAYuC,GAAIhB,QAAAA,CAAAA,CAAAA;AAI9C,cAAA;AAoBA,cAAA,IAAA,CAAA,CAlB6B,IAAA,MAAzB4G,EAAAA,GAAA7E,EAAAA,CAAQ8E,iBAAAA,CAAAA,IAAAA,MAAAA,KAAiBD,KAAA,MAAA,GAAAA,EAAAA,CAAE/B,QAAAA,MAAqC,IAAA,MAAzBiC,EAAAA,GAAA/E,EAAAA,CAAQ8E,sBAAAA,MAAAA,KAAiBC,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEhC,KAAAA,CAAAA,MACpEoB,CAAAA,GAAqB3Z,KAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,UAAA,CAAA,EACzF8F,EAAmBjG,YAAAA,CAAa,IAAA,EAAM,CAAA,4BAAA,EAA+B+F,EAAAA,CAAAA,CAAAA,EAAUnY,EAAAA,IAAOtB,IAAAA,CAAKiW,WAAAA,CAAAA,CAAAA,CAAAA,EAC3FjW,IAAAA,CAAK8V,KAAAA,CAAM5D,YAAYyH,CAAAA,CAAAA,EACvB3Z,IAAAA,CAAKga,mBAAAA,GAAsBL,CAAAA,EAE3B3Z,IAAAA,CAAKyY,aAAa,EAChBjD,OAAAA,EAAkC,IAAA,MAAzBnL,EAAAA,GAAAmL,EAAAA,CAAQ8E,iBAAAA,CAAAA,IAAAA,WAAiBjQ,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEiO,QAAAA,EACpCC,KAAAA,EAAgC,IAAA,MAAzBiC,KAAAhF,EAAAA,CAAQ8E,iBAAAA,CAAAA,IAAAA,MAAAA,KAAiBE,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEjC,OAClCG,kBAAAA,EAAoBrF,EAAAA,EACpB9L,CAAAA,EAAGA,CAAAA,GAAc,CAAA,GAAVyN,EAAAA,EACPxN,GAAGA,CAAAA,GAAc,CAAA,GAAVwN,EAAAA,EACP7H,MAAAA,EAAQqM,EAAAA,EACRtM,KAAAA,EAAOsM,IACP7H,IAAAA,EAAM,CAAA,kBAAA,EAAqB8H,EAAAA,CAAAA,CAAAA,EAAUnY,EAAAA,CAAAA,CAAAA,EAAOtB,KAAKiW,WAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAIxB,IAAA,MAAzB,CAAA,GAAAT,GAAQ8E,iBAAAA,CAAAA,IAAAA,MAAAA,KAAiB,CAAA,GAAA,MAAA,GAAA,CAAA,CAAEvP,IAAAA,KAAQmK,EAAwBgF,QAAAA,CAAS1E,EAAAA,CAAQ8E,iBAAAA,CAAkBvP,IAAAA,CAAAA,EAAO;AACvG,gBAAA,MAAM0P,EAAAA,GAAa,IAAIrF,CAAAA,CAAY,EACjC7C,KAAKvS,IAAAA,CAAKyT,QAAAA,EACV1I,IAAAA,EAAMyK,EAAAA,CAAQ8E,iBAAAA,CAAkBvP,IAAAA,EAChCyH,MAAAA,EAAQxS,IAAAA,CAAK2S,SAAAA,CAAAA;AAGf8H,gBAAAA,GAAWnH,IAAAA,CAAK/L,CAAAA,GAAc,CAAA,GAAVyN,EAAAA,EAAaxN,IAAc,CAAA,GAAVwN,EAAAA,EAAawE,EAAAA,EAAgBnG,EAAAA,GAE9DoH,EAAAA,CAAWhH,QAAAA,IAAYkG,KACzBA,CAAAA,CAAmBzH,WAAAA,CAAYuI,GAAWhH,QAAAA,CAAAA;cAE9C,CAAA,MAAO;AACL,gBAAA,MAAMgB,EAAAA,GAAM,IAAIpC,CAAAA,CAAM,EACpBE,KAAKvS,IAAAA,CAAKyT,QAAAA,EACV1I,IAAAA,EAAAA,CAAgC,IAAA,MAAzB,CAAA,GAAAyK,EAAAA,CAAQ8E,sBAAAA,MAAAA,KAAiB,CAAA,GAAA,MAAA,GAAA,CAAA,CAAEvP,IAAAA,KAAoByK,EAAAA,CAAQI,YAAY7K,IAAAA,EAC1EyH,MAAAA,EAAQxS,IAAAA,CAAK2S,OAAAA,EAAAA,CAAAA;AAGf,gBAAA,KAAA,IAASrR,KAAM,CAAA,EAAGA,EAAAA,GAAMgU,CAAAA,CAAQnT,MAAAA,EAAQb,MACtC,KAAA,IAASC,EAAAA,GAAM,CAAA,EAAGA,EAAAA,GAAM+T,EAAQhU,EAAAA,CAAAA,CAAKa,QAAQZ,EAAAA,EAAAA,EAAAA,CAC1B,UAAZ,CAAA,GAAA+T,CAAAA,CAAQhU,EAAAA,CAAAA,CAAAA,IAAAA,WAAI,CAAA,GAAA,MAAA,GAAA,CAAA,CAAGC,EAAAA,OAIpBkT,EAAAA,CAAInB,IAAAA,CACF/L,CAAAA,GAAIhG,EAAAA,GAAMyT,IACVxN,CAAAA,GAAIlG,EAAAA,GAAM0T,IACVA,EAAAA,GACA,CAAC+D,IAAiBC,EAAAA,KAAAA;AAA4B,kBAAA,IAAA3N,EAAAA;AAAC,kBAAA,OAAA,CAAA,EAAwB,IAAA,MAAtBA,EAAAA,GAAAiK,CAAAA,CAAQhU,EAAAA,GAAM0X,EAAAA,CAAAA,CAAAA,IAAAA,MAAAA,KAAQ3N,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAG9J,KAAMwX,EAAAA,CAAAA,CAAAA;AAAQ,gBAAA,CAAA,IAGtFtE,EAAAA,CAAIhB,QAAAA,IAAYkG,KAClBA,CAAAA,CAAmBzH,WAAAA,CAAYuC,GAAIhB,QAAAA,CAAAA,CAAAA;AAI3C,cAAA;YAAA,CAAA,EAAA;AAEJ,UAAA;UAEA,SAAA,GAAAqD;AACE,YAAA,OAAO,IAAI4D,OAAAA,EAAQ,CAACC,EAAAA,EAASC,EAAAA,KAAAA;AAAAA,cAAAA,IAAAA,EAAAA;AAC3B,cAAA,MAAMpF,KAAUxV,IAAAA,CAAK2V,QAAAA;AAErB,cAAA,IAAA,CAAKH,EAAAA,CAAQQ,KAAAA,EACX,OAAO4E,GAAO,sBAAA,CAAA;AAGhB,cAAA,IAAsB,UAAlBza,EAAAA,GAAAqV,EAAAA,CAAQqF,eAAAA,MAAAA,KAAU1a,EAAAA,GAAA,SAAAA,EAAAA,CAAE2W,SAAAA,EACtBtB,EAAAA,CAAQqF,WACL/D,SAAAA,CAAUtB,EAAAA,CAAQQ,KAAAA,CAAAA,CAClB8E,IAAAA,EAAM9E,CAAAA,EAAAA,KAAAA;AAAAA,gBAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AAEL,gBAAA,IADAhW,KAAK+W,MAAAA,GAASf,EAAAA,EACVhW,IAAAA,CAAK2V,QAAAA,CAASqB,aAAa+D,UAAAA,EAAY;AACzC,kBAAA,MAAMC,EAAAA,GAA2B,IAAA,MAAlB7a,EAAAA,GAAAqV,EAAAA,CAAQqF,eAAAA,MAAAA,KAAU1a,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAE8a,aAAcjb,IAAAA,CAAK+W,MAAAA,CAAO7J,KAAAA,EAAQlN,IAAAA,CAAK+W,OAAO5J,MAAAA,CAAAA;AACzD,kBAAA,IAAA,MAAxB9B,EAAAA,GAAA2P,QAAAA,EAAAA,GAAAA,MAAAA,GAAAA,GAAQE,UAAAA,CAAW,IAAA,CAAA,CAAA,IAAA,MAAA,KAAK7P,EAAAA,IAAAA,EAAAA,CAAE6M,UAAUlC,EAAAA,EAAO,CAAA,EAAG,CAAA,CAAA,EAC9ChW,IAAAA,CAAK+V,YAAYiF,IAAAA,IAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAQG,SAAAA,EAAAA;AAC3B,gBAAA;AACAR,gBAAAA,EAAAA,EAAAA;cAAS,CAAA,EAAA,CAEVS,MAAMR,EAAAA,CAAAA;AACJ,mBAAA;AACL,gBAAA,MAAM5E,EAAAA,GAAQ,IAAIhW,IAAAA,CAAK2S,OAAAA,CAAQ0I,KAAAA,EAAAA;AAEiB,gBAAA,QAAA,IAAA,OAArC7F,EAAAA,CAAQwB,YAAAA,CAAasE,WAAAA,KAC9BtF,GAAMsF,WAAAA,GAAc9F,EAAAA,CAAQwB,YAAAA,CAAasE,WAAAA,CAAAA,EAG3Ctb,IAAAA,CAAK+W,MAAAA,GAASf,EAAAA,EACdA,EAAAA,CAAMuF,SAASC,YAAAA;AACTxb,kBAAAA,IAAAA,CAAK2V,QAAAA,CAASqB,aAAa+D,UAAAA,KAC7B/a,IAAAA,CAAK+V,YAAAA,MAAAA,CE7dFyF,eAAyBC,IAAajJ,EAAAA,EAAAA;AACnD,oBAAA,OAAO,IAAIkI,OAAAA,EAASC,CAAAA,EAAAA,KAAAA;AAClB,sBAAA,MAAMe,EAAAA,GAAM,IAAIlJ,EAAAA,CAAOmJ,cAAAA,EAAAA;AACvBD,sBAAAA,EAAAA,CAAIH,SAAS,WAAA;AACX,wBAAA,MAAMK,EAAAA,GAAS,IAAIpJ,EAAAA,CAAOqJ,UAAAA,EAAAA;AAC1BD,wBAAAA,EAAAA,CAAOE,YAAY,WAAA;AACjBnB,0BAAAA,EAAAA,CAAQiB,GAAOG,MAAAA,CAAAA;wBACjB,CAAA,EACAH,EAAAA,CAAOI,aAAAA,CAAcN,EAAAA,CAAIO,QAAAA,CAAAA;sBAC3B,CAAA,EACAP,EAAAA,CAAIQ,KAAK,KAAA,EAAOT,EAAAA,GAChBC,EAAAA,CAAIS,YAAAA,GAAe,MAAA,EACnBT,EAAAA,CAAIU,IAAAA,EAAAA;oBAAM,CAAA,EAAA;AAEd,kBAAA,CAAA,EF+c6C5G,GAAQQ,KAAAA,IAAS,EAAA,EAAIhW,IAAAA,CAAK2S,OAAAA,IAE7DgI,EAAAA,EAAAA;gBAAS,CAAA,EAEX3E,EAAAA,CAAMqG,MAAM7G,EAAAA,CAAQQ,KAAAA;AACtB,cAAA;YAAA,CAAA,EAAA;AAEJ,UAAA;UAEA,MAAA,SAAA,CAAMkC,EAAU,KAAA,EACdhL,EAAAA,EAAK,MAAA,EACLC,IAAM,KAAA,EACN1D,EAAAA,EAAK,OAAA,EACLuL,EAAAA,EAAAA,EAAAA;AAOA,YAAA,MAAMQ,EAAAA,GAAUxV,IAAAA,CAAK2V,QAAAA,EACfiD,EAAAA,GAAa5Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQtI,KAAAA,GAAQzD,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA,EACjE6D,EAAAA,GAAa7Y,IAAAA,CAAKyV,UAAAA,CAAAA,CAAYD,EAAAA,CAAQrI,MAAAA,GAAS1D,EAAAA,GAAQuL,EAAAA,IAAW,CAAA,CAAA,EAClEsH,EAAAA,GAAK1D,EAAAA,GAAa5Y,IAAAA,CAAKyV,UAAAA,CAAWD,EAAAA,CAAQwB,YAAAA,CAAa5Q,MAAAA,GAAAA,CAAUqD,KAAQuL,EAAAA,GAAU9H,EAAAA,IAAS,CAAA,CAAA,EAC5FqP,EAAAA,GAAK1D,EAAAA,GAAa7Y,IAAAA,CAAKyV,UAAAA,CAAWD,EAAAA,CAAQwB,YAAAA,CAAa5Q,MAAAA,GAAAA,CAAUqD,EAAAA,GAAQuL,EAAAA,GAAU7H,EAAAA,IAAU,CAAA,CAAA,EAC7FqP,KAAKtP,EAAAA,GAAsC,CAAA,GAA9BsI,EAAAA,CAAQwB,YAAAA,CAAa5Q,MAAAA,EAClCqW,EAAAA,GAAKtP,EAAAA,GAAuC,CAAA,GAA9BqI,EAAAA,CAAQwB,YAAAA,CAAa5Q,MAAAA,EAEnC4P,EAAAA,GAAQhW,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,OAAA,CAAA;AAClFmC,YAAAA,EAAAA,CAAMtC,aAAa,MAAA,EAAQ1T,IAAAA,CAAK+V,aAAa,EAAA,CAAA,EAC7CC,GAAMtC,YAAAA,CAAa,YAAA,EAAc1T,KAAK+V,SAAAA,IAAa,EAAA,GACnDC,EAAAA,CAAMtC,YAAAA,CAAa,KAAK7J,MAAAA,CAAOyS,EAAAA,CAAAA,CAAAA,EAC/BtG,EAAAA,CAAMtC,aAAa,GAAA,EAAK7J,MAAAA,CAAO0S,EAAAA,CAAAA,CAAAA,EAC/BvG,GAAMtC,YAAAA,CAAa,OAAA,EAAS,GAAG8I,EAAAA,CAAAA,EAAAA,CAAAA,GAC/BxG,EAAAA,CAAMtC,YAAAA,CAAa,UAAU,CAAA,EAAG+I,EAAAA,IAAAA,CAAAA,EAEhCzc,IAAAA,CAAKyT,QAAAA,CAASvB,WAAAA,CAAY8D,EAAAA,CAAAA;AAC5B,UAAA;AAEA,UAAA,YAAA,CAAAyC,EAAa,OAAA,EACXjD,EAAAA,EAAO,KAAA,EACP+C,EAAAA,EAAK,oBACLG,EAAAA,EAAkB,CAAA,EAClBnR,EAAAA,EAAC,CAAA,EACDC,IAAC,MAAA,EACD2F,EAAAA,EAAM,OACND,EAAAA,EAAK,IAAA,EACLyE,IAAAA,EAAAA;AAWA,YAAA,MAAM5K,EAAAA,GAAOmG,EAAAA,GAAQC,EAAAA,GAASD,EAAAA,GAAQC,EAAAA,EAChCrG,EAAAA,GAAO9G,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,MAAA,CAAA;AAOjF,YAAA,IANA/M,EAAAA,CAAK4M,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAOtC,EAAAA,CAAAA,CAAAA,EAC9BT,EAAAA,CAAK4M,YAAAA,CAAa,KAAK7J,MAAAA,CAAOrC,EAAAA,CAAAA,CAAAA,EAC9BV,GAAK4M,YAAAA,CAAa,QAAA,EAAU7J,MAAAA,CAAOsD,EAAAA,CAAAA,CAAAA,EACnCrG,EAAAA,CAAK4M,YAAAA,CAAa,OAAA,EAAS7J,OAAOqD,EAAAA,CAAAA,CAAAA,EAClCpG,EAAAA,CAAK4M,aAAa,WAAA,EAAa,CAAA,gBAAA,EAAmB/B,EAAAA,CAAAA,EAAAA,CAAAA,GAE9C6D,EAAAA,EAAS;AACX,cAAA,IAAI8C,EAAAA;AACJ,cAAA,IFhiBI,QAAA,KEgiBA9C,EAAAA,CAAQzK,IAAAA,EACVuN,EAAAA,GAAWtY,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,4BAAA,EAA8B,gBAAA,CAAA,EAC/EyE,GAAS5E,YAAAA,CAAa,IAAA,EAAM/B,EAAAA,CAAAA,EAC5B2G,EAAAA,CAAS5E,YAAAA,CAAa,eAAA,EAAiB,gBAAA,CAAA,EACvC4E,EAAAA,CAAS5E,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOtC,EAAAA,GAAI2F,EAAAA,GAAQ,CAAA,CAAA,CAAA,EAC/CoL,EAAAA,CAAS5E,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOrC,EAAAA,GAAI2F,EAAAA,GAAS,CAAA,CAAA,CAAA,EAChDmL,EAAAA,CAAS5E,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOtC,EAAAA,GAAI2F,EAAAA,GAAQ,CAAA,CAAA,CAAA,EAC/CoL,EAAAA,CAAS5E,YAAAA,CAAa,IAAA,EAAM7J,MAAAA,CAAOrC,EAAAA,GAAI2F,EAAAA,GAAS,CAAA,CAAA,CAAA,EAChDmL,EAAAA,CAAS5E,YAAAA,CAAa,GAAA,EAAK7J,MAAAA,CAAO9C,EAAAA,GAAO,CAAA,CAAA,CAAA;AACpC,mBAAA;AACL,gBAAA,MAAMsM,EAAAA,GAAAA,CAAAA,CAAamC,EAAAA,CAAQnC,QAAAA,IAAY,CAAA,IAAKqF,OAAuB,CAAA,GAAIlW,IAAAA,CAAKmR,EAAAA,CAAAA,EACtE+I,EAAAA,GAAAA,CAAoBrJ,EAAAA,GAAW,CAAA,GAAI7Q,IAAAA,CAAKmR,EAAAA,KAAO,IAAInR,IAAAA,CAAKmR,EAAAA,CAAAA;AAC9D,gBAAA,IAAIgJ,EAAAA,GAAKpV,EAAAA,GAAI2F,EAAAA,GAAQ,CAAA,EACjB0P,KAAKpV,EAAAA,GAAI2F,EAAAA,GAAS,CAAA,EAClB0P,EAAAA,GAAKtV,EAAAA,GAAI2F,EAAAA,GAAQ,CAAA,EACjB4P,EAAAA,GAAKtV,KAAI2F,EAAAA,GAAS,CAAA;AAGnBuP,gBAAAA,MAAoB,CAAA,IAAKA,EAAAA,IAAoB,OAAOla,IAAAA,CAAKmR,EAAAA,IACzD+I,KAAmB,IAAA,GAAOla,IAAAA,CAAKmR,EAAAA,IAAM+I,EAAAA,IAAoB,IAAIla,IAAAA,CAAKmR,EAAAA,IAEnEgJ,MAAUzP,EAAAA,GAAQ,CAAA,EAClB0P,MAAWzP,EAAAA,GAAS,CAAA,GAAK3K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,CAAAA,EAClCwJ,EAAAA,IAAU3P,KAAQ,CAAA,EAClB4P,EAAAA,IAAW3P,KAAS,CAAA,GAAK3K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,KACzBqJ,EAAAA,GAAmB,IAAA,GAAOla,KAAKmR,EAAAA,IAAM+I,EAAAA,IAAoB,OAAOla,IAAAA,CAAKmR,EAAAA,IAC9EiJ,EAAAA,IAAUzP,EAAAA,GAAS,GACnBwP,EAAAA,IAAUzP,EAAAA,GAAQ,IAAI1K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,CAAAA,EAC/ByJ,EAAAA,IAAU3P,EAAAA,GAAS,CAAA,EACnB0P,MAAU3P,EAAAA,GAAQ,CAAA,GAAI1K,KAAKua,GAAAA,CAAI1J,EAAAA,KACtBqJ,EAAAA,GAAmB,IAAA,GAAOla,IAAAA,CAAKmR,EAAAA,IAAM+I,MAAoB,IAAA,GAAOla,IAAAA,CAAKmR,MAC9EgJ,EAAAA,IAAUzP,EAAAA,GAAQ,GAClB0P,EAAAA,IAAWzP,EAAAA,GAAS,IAAK3K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,CAAAA,EAClCwJ,EAAAA,IAAU3P,KAAQ,CAAA,EAClB4P,EAAAA,IAAW3P,KAAS,CAAA,GAAK3K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,KACzBqJ,EAAAA,GAAmB,IAAA,GAAOla,KAAKmR,EAAAA,IAAM+I,EAAAA,IAAoB,OAAOla,IAAAA,CAAKmR,EAAAA,KAC9EiJ,EAAAA,IAAUzP,EAAAA,GAAS,GACnBwP,EAAAA,IAAUzP,EAAAA,GAAQ,IAAI1K,IAAAA,CAAKua,GAAAA,CAAI1J,EAAAA,CAAAA,EAC/ByJ,EAAAA,IAAU3P,EAAAA,GAAS,CAAA,EACnB0P,MAAU3P,EAAAA,GAAQ,CAAA,GAAI1K,KAAKua,GAAAA,CAAI1J,EAAAA,IAGjCiF,EAAAA,GAAWtY,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,gBAAgB,4BAAA,EAA8B,gBAAA,GAC/EyE,EAAAA,CAAS5E,YAAAA,CAAa,MAAM/B,EAAAA,CAAAA,EAC5B2G,EAAAA,CAAS5E,YAAAA,CAAa,iBAAiB,gBAAA,CAAA,EACvC4E,GAAS5E,YAAAA,CAAa,IAAA,EAAM7J,OAAOrH,IAAAA,CAAKoV,KAAAA,CAAM+E,EAAAA,CAAAA,CAAAA,CAAAA,EAC9CrE,EAAAA,CAAS5E,aAAa,IAAA,EAAM7J,MAAAA,CAAOrH,KAAKoV,KAAAA,CAAMgF,EAAAA,CAAAA,CAAAA,GAC9CtE,EAAAA,CAAS5E,YAAAA,CAAa,MAAM7J,MAAAA,CAAOrH,IAAAA,CAAKoV,MAAMiF,EAAAA,CAAAA,CAAAA,CAAAA,EAC9CvE,EAAAA,CAAS5E,aAAa,IAAA,EAAM7J,MAAAA,CAAOrH,KAAKoV,KAAAA,CAAMkF,EAAAA,CAAAA,CAAAA,CAAAA;AAChD,cAAA;AAEAtH,cAAAA,EAAAA,CAAQwH,WAAW3L,OAAAA,EAAQ,CAAA,EAAGrN,MAAAA,EAAAA,EAAAA,EAAQuU,KAAAA,EAAAA,EAAAA,EAAAA,KAAAA;AACpC,gBAAA,MAAM0E,KAAOjd,IAAAA,CAAK2S,OAAAA,CAAQd,QAAAA,CAASgC,eAAAA,CAAgB,8BAA8B,MAAA,CAAA;AACjFoJ,gBAAAA,EAAAA,CAAKvJ,YAAAA,CAAa,QAAA,EAAa,GAAA,GAAM1P,KAAT,GAAA,CAAA,EAC5BiZ,EAAAA,CAAKvJ,YAAAA,CAAa,YAAA,EAAc6E,EAAAA,CAAAA,EAChCD,EAAAA,CAASpG,YAAY+K,EAAAA,CAAAA;cAAK,CAAA,EAAA,EAG5BnW,EAAAA,CAAK4M,YAAAA,CAAa,MAAA,EAAQ,CAAA,MAAA,EAAS/B,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EACnC3R,IAAAA,CAAK8V,KAAAA,CAAM5D,WAAAA,CAAYoG,EAAAA,CAAAA;AACzB,YAAA,CAAA,MAAWC,EAAAA,IACTzR,EAAAA,CAAK4M,YAAAA,CAAa,QAAQ6E,EAAAA,CAAAA;AAG5BvY,YAAAA,IAAAA,CAAKyT,QAAAA,CAASvB,YAAYpL,EAAAA,CAAAA;AAC5B,UAAA;AAAA;AAtjBO,QAAA,CAAA,CAAAoP,aAAAA,GAAgB,CAAA;AAAA,QAAA,MAAA,CAAA,GAAA,CAAA,EG5CzB,CAAA,GACU,QAAA,ECGJgH,IAAoB,EAAC;AAE3B,QAAA,KAAA,IAASnS,KAAO,CAAA,EAAGA,EAAAA,IAAQ,IAAIA,EAAAA,EAAAA,EAC7BmS,CAAAA,CAAQnS,EAAAA,CAAAA,GAAQA,EAAAA;AAYlB,QAAA,MC+CA,CAAA,GA9BwC,EACtCA,IAAAA,EAAMoS,CAAAA,EACN5G,KAAAA,ENrCQ,UMsCRrJ,KAAAA,EAAO,GAAA,EACPC,MAAAA,EAAQ,GAAA,EACRzK,IAAAA,EAAM,EAAA,EACN0D,QAAQ,CAAA,EACR6Q,SAAAA,EAAW,EACT3W,UAAAA,EDzBJ,CAAA,CCyBwB,CAAA,GACpB6E,IAAAA,EAAAA,MAAAA,EACA5E,oBAAAA,ECvCC,GAAA,EAAA,EDyCHyW,YAAAA,EAAc,EACZ+D,UAAAA,EAAAA,IAAAA,EACAhD,kBAAAA,EAAAA,IAAAA,EACAZ,SAAAA,EAAW,GAAA,EACXmE,aAAAA,MAAAA,EACAlV,MAAAA,EAAQ,CAAA,EAAA,EAEVwP,WAAAA,EAAa,EACX7K,MAAM,QAAA,EACNwN,KAAAA,EAAO,MAAA,EACP1C,SAAAA,EAAAA,IAAAA,EAAW,EAEbwC,iBAAAA,EAAmB,EACjBT,KAAAA,EAAO,CAAA,EACPW,KAAAA,EAAO,MAAA,EAAA,EAAA;AE7DX,QAAA,SAAS6E,EAAiB9E,EAAAA,EAAAA;AACxB,UAAA,MAAM+E,EAAAA,GAAc,MAAA,CAAH,MAAA,CAAA,IAAQ/E,EAAAA,CAAAA;AAEzB,UAAA,IAAA,CAAK+E,EAAAA,CAAYL,UAAAA,IAAAA,CAAeK,EAAAA,CAAYL,UAAAA,CAAW7a,QACrD,MAAM,4CAAA;AAcR,UAAA,OAXIkb,EAAAA,CAAYhK,QAAAA,GACdgK,EAAAA,CAAYhK,QAAAA,GAAWiK,OAAOD,EAAAA,CAAYhK,QAAAA,CAAAA,GAE1CgK,EAAAA,CAAYhK,WAAW,CAAA,EAGzBgK,EAAAA,CAAYL,UAAAA,GAAaK,EAAAA,CAAYL,WAAWO,GAAAA,EAAKC,CAAAA,EAAAA,KAAkD,MAAA,CAAD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,IACjGA,EAAAA,CAAAA,EAAS,EACZxZ,MAAAA,EAAQsZ,OAAOE,EAAAA,CAAUxZ,MAAAA,CAAAA,EAAAA,GAAAA,EAGpBqZ,EAAAA;AACT,QAAA;AAEe,QAAA,SAASI,EAAgBjI,EAAAA,EAAAA;AACtC,UAAA,MAAMkI,EAAAA,GAAa,MAAA,CAAH,MAAA,CAAA,IAAQlI,EAAAA,CAAAA;AAkDxB,UAAA,OAhDAkI,EAAAA,CAAWxQ,KAAAA,GAAQoQ,MAAAA,CAAOI,EAAAA,CAAWxQ,KAAAA,CAAAA,EACrCwQ,EAAAA,CAAWvQ,MAAAA,GAASmQ,MAAAA,CAAOI,GAAWvQ,MAAAA,CAAAA,EACtCuQ,EAAAA,CAAWtX,MAAAA,GAASkX,OAAOI,EAAAA,CAAWtX,MAAAA,CAAAA,EACtCsX,EAAAA,CAAW1G,eAAe,MAAA,CAAH,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAClB0G,EAAAA,CAAW1G,YAAAA,CAAAA,EAAY,EAC1Be,kBAAAA,EAAoB4F,OAAAA,CAAQD,EAAAA,CAAW1G,YAAAA,CAAae,kBAAAA,CAAAA,EACpDZ,SAAAA,EAAWmG,MAAAA,CAAOI,EAAAA,CAAW1G,YAAAA,CAAaG,SAAAA,CAAAA,EAC1C/Q,MAAAA,EAAQkX,OAAOI,EAAAA,CAAW1G,YAAAA,CAAa5Q,MAAAA,CAAAA,EAAAA,CAAAA,EAGrCsX,EAAAA,CAAWtX,MAAAA,GAAS5D,IAAAA,CAAK8E,IAAIoW,EAAAA,CAAWxQ,KAAAA,EAAOwQ,EAAAA,CAAWvQ,MAAAA,MAC5DuQ,EAAAA,CAAWtX,MAAAA,GAAS5D,IAAAA,CAAK8E,GAAAA,CAAIoW,GAAWxQ,KAAAA,EAAOwQ,EAAAA,CAAWvQ,MAAAA,CAAAA,CAAAA,EAG5DuQ,GAAW9H,WAAAA,GAAc,MAAA,CAAH,MAAA,CAAA,IACjB8H,EAAAA,CAAW9H,WAAAA,CAAAA,EAEZ8H,EAAAA,CAAW9H,WAAAA,CAAY0C,QAAAA,KACzBoF,EAAAA,CAAW9H,WAAAA,CAAY0C,WAAW8E,CAAAA,CAAiBM,EAAAA,CAAW9H,WAAAA,CAAY0C,QAAAA,IAGxEoF,EAAAA,CAAW7D,oBAAAA,KACb6D,EAAAA,CAAW7D,oBAAAA,GAAuB,OAAH,MAAA,CAAA,EAAA,EAC1B6D,EAAAA,CAAW7D,oBAAAA,CAAAA,EAEZ6D,EAAAA,CAAW7D,oBAAAA,CAAqBvB,QAAAA,KAClCoF,GAAW7D,oBAAAA,CAAqBvB,QAAAA,GAAW8E,CAAAA,CAAiBM,EAAAA,CAAW7D,qBAAqBvB,QAAAA,CAAAA,CAAAA,CAAAA,EAI5FoF,EAAAA,CAAWpD,iBAAAA,KACboD,GAAWpD,iBAAAA,GAAoB,MAAA,CAAH,MAAA,CAAA,IACvBoD,EAAAA,CAAWpD,iBAAAA,CAAAA,EAEZoD,EAAAA,CAAWpD,kBAAkBhC,QAAAA,KAC/BoF,EAAAA,CAAWpD,iBAAAA,CAAkBhC,QAAAA,GAAW8E,EAAiBM,EAAAA,CAAWpD,iBAAAA,CAAkBhC,QAAAA,CAAAA,CAAAA,CAAAA,EAItFoF,GAAWrF,iBAAAA,KACbqF,EAAAA,CAAWrF,iBAAAA,GAAoB,MAAA,CAAH,OAAA,EAAA,EACvBqF,EAAAA,CAAWrF,iBAAAA,GAEZqF,EAAAA,CAAWrF,iBAAAA,CAAkBC,QAAAA,KAC/BoF,EAAAA,CAAWrF,kBAAkBC,QAAAA,GAAW8E,CAAAA,CAAiBM,EAAAA,CAAWrF,iBAAAA,CAAkBC,QAAAA,CAAAA,CAAAA,CAAAA,EAInFoF,EAAAA;AACT,QAAA;AAAA,QAAA,IAAA,IAAA,CAAA,CAAA,GAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AC5Ee,QAAA,SAASE,EAAYC,EAAAA,EAAAA;AAClC,UAAA,IAAA,CAAKA,EAAAA,EAAW,MAAM,IAAIC,MAAM,2BAAA,CAAA;AACX,UAAA,GAAA,KAAjBD,GAAU,CAAA,CAAA,KACZA,EAAAA,GAAYA,EAAAA,CAAUxV,UAAU,CAAA,CAAA,CAAA;AAElC,UAAA,MAAM0C,EAAAA,GAAO,EACX,GAAA,EAAO,WAAA,EACP,GAAA,EAAO,WAAA,EACP,GAAA,EAAO,0BAAA,EACP,IAAA,EAAQ,YAAA,EACR,GAAA,EAAO,YAAA,EACP,GAAA,EAAO,WAAA,EACP,GAAA,EAAO,eAAA,EACP,GAAA,EAAO,YAAA,EACP,IAAA,EAAQ,YAAA,EACR,IAAA,EAAQ,YAAA,EACR,GAAA,EAAO,iBAAA,EAAA,CACP8S,EAAAA,CAAUE,WAAAA,EAAAA,CAAAA;AAEZ,UAAA,IAAA,CAAKhT,EAAAA,EACH,MAAM,IAAI+S,KAAAA,CAAM,CAAA,WAAA,EAAcD,EAAAA,CAAAA,kBAAAA,CAAAA,CAAAA;AAGhC,UAAA,OAAO9S,EAAAA;AACT,QAAA;ACTe,QAAA,MAAMiT,CAAAA,CAAAA;AAYnB,UAAA,WAAA,CAAYxI,EAAAA,EAAAA;AAAAA,YAAAA,CACNA,IAAAA,IAAAA,EAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAASyI,KAAAA,IACXje,IAAAA,CAAK2S,OAAAA,GAAU,IAAI6C,EAAAA,CAAQyI,KAAAA,CAAM,EAAA,EAAI,EAAEC,WAAW,QAAA,EAAA,CAAA,CAAY1L,MAAAA,GAE9DxS,IAAAA,CAAK2S,OAAAA,GAAUH,MAAAA,EAEjBxS,IAAAA,CAAK2V,WAAWH,EAAAA,GAAUiI,CAAAA,CAAgBzM,EAAAA,CAAU,CAAA,EAAgBwE,EAAAA,CAAAA,CAAAA,GAA+B,CAAA,EACnGxV,KAAKme,MAAAA,EAAAA;AACP,UAAA;AAEA,UAAA,OAAA,gBAAuBC,EAAAA,EAAAA;AACjBA,YAAAA,EAAAA,KACFA,GAAUC,SAAAA,GAAY,EAAA,CAAA;AAE1B,UAAA;UAEA,SAAA,GAAAC;AACE,YAAA,IAAA,CAAKte,KAAK6W,GAAAA,EACR;AAEF,YAAA,MAAM0H,KAAQ,IAAI,CAAA,CAAMve,IAAAA,CAAK2V,QAAAA,EAAU3V,KAAK2S,OAAAA,CAAAA;AAE5C3S,YAAAA,IAAAA,CAAKyS,IAAAA,GAAO8L,EAAAA,CAAMpI,UAAAA,EAAAA,EAClBnW,IAAAA,CAAKwe,kBAAAA,GAAqBD,EAAAA,CAAME,MAAAA,CAAOze,IAAAA,CAAK6W,GAAAA,CAAAA,CAAKiE,IAAAA,EAAK,MAAA;AAAA,cAAA,IAAA5a,EAAAA;AAC/CF,cAAAA,IAAAA,CAAKyS,IAAAA,KACK,IAAA,MAAfvS,EAAAA,GAAAF,IAAAA,CAAK0e,eAAAA,MAAAA,KAAUxe,EAAAA,IAAAA,EAAAA,CAAA,IAAA,CAAA,IAAA,EAAGqe,EAAAA,CAAMpI,UAAAA,EAAAA,EAAcnW,KAAK2V,QAAAA,CAAAA,CAAAA;YAAS,CAAA,EAAA;AAExD,UAAA;UAEA,YAAA,GAAAgJ;AAAAA,YAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AACO3e,YAAAA,IAAAA,CAAK6W,GAAAA,KAAAA,CAIkB,IAAA,MAAxB5W,EAAAA,GAAAD,IAAAA,CAAK2V,SAASkF,UAAAA,CAAAA,IAAAA,MAAAA,KAAU5a,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEgb,YAAAA,KAC5Bjb,IAAAA,CAAK4e,WAAAA,GAAc5e,KAAK2V,QAAAA,CAASkF,UAAAA,CAAWI,YAAAA,CAAajb,IAAAA,CAAK2V,QAAAA,CAASzI,KAAAA,EAAOlN,IAAAA,CAAK2V,QAAAA,CAASxI,MAAAA,CAAAA,EAC5FnN,IAAAA,CAAK4e,WAAAA,CAAY1R,KAAAA,GAAQlN,IAAAA,CAAK2V,QAAAA,CAASzI,KAAAA,EACvClN,IAAAA,CAAK4e,YAAYzR,MAAAA,GAASnN,IAAAA,CAAK2V,QAAAA,CAASxI,MAAAA,KAExCnN,IAAAA,CAAK6e,UAAAA,GAAahN,QAAAA,CAASC,aAAAA,CAAc,QAAA,CAAA,EACzC9R,IAAAA,CAAK6e,UAAAA,CAAW3R,KAAAA,GAAQlN,IAAAA,CAAK2V,QAAAA,CAASzI,KAAAA,EACtClN,IAAAA,CAAK6e,WAAW1R,MAAAA,GAASnN,IAAAA,CAAK2V,QAAAA,CAASxI,MAAAA,CAAAA,EAGzCnN,IAAAA,CAAKse,SAAAA,EAAAA,EACLte,IAAAA,CAAK8e,wBAA+C,IAAA,MAAvB5e,EAAAA,GAAAF,IAAAA,CAAKwe,kBAAAA,CAAAA,IAAAA,MAAAA,KAAkBte,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAE4a,MAAK,MAAA;AAAA,cAAA,IAAA7a,EAAAA;AACzD,cAAA,IAAA,CAAKD,KAAKyS,IAAAA,EAAM;AAEhB,cAAA,MAAMF,EAAAA,GAAMvS,KAAKyS,IAAAA,EACXsM,EAAAA,GAAM,IAAI/e,IAAAA,CAAK2S,OAAAA,CAAQqM,gBAAgBC,iBAAAA,CAAkB1M,EAAAA,GACzD2M,EAAAA,GAAQC,IAAAA,CAAKJ,EAAAA,CAAAA,EACbK,EAAAA,GAAU,QAAQxB,CAAAA,CAAY,KAAA,CAAA,CAAA,QAAA,EAAiBsB,EAAAA,CAAAA,CAAAA;AAErD,cAAA,IAA4B,UAAxBjf,EAAAA,GAAAD,IAAAA,CAAK2V,SAASkF,UAAAA,CAAAA,IAAAA,MAAAA,KAAU5a,KAAA,MAAA,GAAAA,EAAAA,CAAE6W,WAC5B,OAAO9W,IAAAA,CAAK2V,SAASkF,UAAAA,CAAW/D,SAAAA,CAAUsI,EAAAA,CAAAA,CAAStE,IAAAA,EAAM9E,CAAAA,EAAAA,KAAAA;AAAAA,gBAAAA,IAAAA,EAAAA,EAAAA,EAAAA;AAEvDA,gBAAAA,EAAAA,CAAM9I,KAAAA,GAAQlN,IAAAA,CAAK2V,QAAAA,CAASzI,KAAAA,EAC5B8I,EAAAA,CAAM7I,MAAAA,GAASnN,IAAAA,CAAK2V,QAAAA,CAASxI,MAAAA,EACK,IAAA,MAAlChN,EAAAA,GAAgB,IAAA,MAAhBD,EAAAA,GAAAF,IAAAA,CAAK4e,WAAAA,CAAAA,IAAAA,MAAAA,KAAW1e,EAAAA,GAAA,MAAA,GAAAA,EAAAA,CAAEgb,UAAAA,CAAW,IAAA,CAAA,CAAA,IAAA,MAAA,KAAK/a,EAAAA,IAAAA,EAAAA,CAAE+X,SAAAA,CAAUlC,EAAAA,EAAO,GAAG,CAAA,CAAA;cAAE,CAAA,EAAA;AAEvD,cAAA;AACL,gBAAA,MAAMA,EAAAA,GAAQ,IAAIhW,IAAAA,CAAK2S,OAAAA,CAAQ0I,KAAAA,EAAAA;AAE/B,gBAAA,OAAO,IAAIX,OAAAA,EAASC,CAAAA,EAAAA,KAAAA;AAClB3E,kBAAAA,EAAAA,CAAMuF,SAAS,MAAA;AAAA,oBAAA,IAAApb,EAAAA,EAAAC,EAAAA;AACoB,oBAAA,IAAA,MAAjCA,EAAAA,GAAe,UAAfD,EAAAA,GAAAH,IAAAA,CAAK6e,eAAAA,MAAAA,KAAU1e,EAAAA,GAAA,SAAAA,EAAAA,CAAE+a,UAAAA,CAAW,IAAA,CAAA,CAAA,IAAA,MAAA,KAAK9a,MAAAA,EAAAA,CAAE8X,SAAAA,CAAUlC,IAAO,CAAA,EAAG,CAAA,GACvD2E,EAAAA,EAAAA;AAAS,kBAAA,CAAA,EAGX3E,GAAMqG,GAAAA,GAAM+C,EAAAA;gBAAO,CAAA,EAAA;AAEvB,cAAA;YAAA,CAAA,EAAA,CAAA;AAEJ,UAAA;UAEA,MAAA,WAAA,CAAkBvB,KAA2B,KAAA,EAAA;AAC3C,YAAA,IAAA,CAAK7d,IAAAA,CAAK6W,GAAAA,EAAK,MAAM,kBAAA;AAErB,YAAA,OAAgC,KAAA,KAA5BgH,EAAAA,CAAUE,WAAAA,EAAAA,IACP/d,IAAAA,CAAKyS,IAAAA,IAASzS,IAAAA,CAAKwe,kBAAAA,IACtBxe,IAAAA,CAAKse,SAAAA,EAAAA,EAAAA,MAEDte,KAAKwe,kBAAAA,EACJxe,IAAAA,CAAKyS,IAAAA,KAAAA,CAENzS,IAAAA,CAAK6e,UAAAA,IAAc7e,IAAAA,CAAK4e,WAAAA,KAAiB5e,IAAAA,CAAK8e,qBAAAA,IAClD9e,IAAAA,CAAK2e,YAAAA,EAAAA,EAAAA,MAED3e,IAAAA,CAAK8e,qBAAAA,EACJ9e,IAAAA,CAAK6e,cAAc7e,IAAAA,CAAK4e,WAAAA,CAAAA;AAEnC,UAAA;AAEA,UAAA,MAAA,CAAOpJ,EAAAA,EAAAA;AACLwI,YAAAA,CAAAA,CAAcqB,gBAAgBrf,IAAAA,CAAKsf,UAAAA,GACnCtf,IAAAA,CAAK2V,QAAAA,GAAWH,KAAUiI,CAAAA,CAAgBzM,EAAAA,CAAUhR,KAAK2V,QAAAA,EAAUH,EAAAA,CAAAA,CAAAA,GAA+BxV,IAAAA,CAAK2V,UAElG3V,IAAAA,CAAK2V,QAAAA,CAASjT,SAInB1C,IAAAA,CAAK6W,GAAAA,GAAM,GAAA,CAAO7W,IAAAA,CAAK2V,SAASsB,SAAAA,CAAU3W,UAAAA,EAAYN,KAAK2V,QAAAA,CAASsB,SAAAA,CAAU1W,oBAAAA,CAAAA,EAC9EP,IAAAA,CAAK6W,IAAI3R,OAAAA,CAAQlF,IAAAA,CAAK2V,SAASjT,IAAAA,EAAM1C,IAAAA,CAAK2V,SAASsB,SAAAA,CAAU9R,IAAAA,IAAAA,CC9HlD,SAAiBzC,EAAAA,EAAAA;AAC9B,cAAA,QAAA,IAAA;gBACE,KAAK,UAAA,CAAWzB,KAAKyB,EAAAA,CAAAA;AACnB,kBAAA,OtBCK,SAAA;gBsBAP,KAAK,uBAAA,CAAwBzB,KAAKyB,EAAAA,CAAAA;AAChC,kBAAA,OtBAU,cAAA;AsBCZ,gBAAA;AACE,kBAAA,OtBDE,MAAA;AAAA;YsBGR,CAAA,EDqHiF1C,IAAAA,CAAK2V,SAASjT,IAAAA,CAAAA,GAC3F1C,IAAAA,CAAK6W,GAAAA,CAAIjR,IAAAA,EAAAA,EAEL5F,IAAAA,CAAK2V,QAAAA,CAAS5K,SAASoS,CAAAA,GACzBnd,IAAAA,CAAK2e,cAAAA,GAEL3e,IAAAA,CAAKse,WAAAA,EAGPte,IAAAA,CAAKuf,MAAAA,CAAOvf,IAAAA,CAAKsf,UAAAA,CAAAA,CAAAA;AACnB,UAAA;AAEA,UAAA,MAAA,CAAOlB,EAAAA,EAAAA;AACL,YAAA,IAAKA,EAAAA,EAAL;AAIA,cAAA,IAAqC,UAAA,IAAA,OAA1BA,EAAAA,CAAUlM,WAAAA,EACnB,MAAM,uCAAA;AAGJlS,cAAAA,IAAAA,CAAK2V,SAAS5K,IAAAA,KAASoS,CAAAA,GACrBnd,KAAK6e,UAAAA,IACPT,EAAAA,CAAUlM,YAAYlS,IAAAA,CAAK6e,UAAAA,CAAAA,GAGzB7e,IAAAA,CAAKyS,QACP2L,EAAAA,CAAUlM,WAAAA,CAAYlS,KAAKyS,IAAAA,CAAAA,EAI/BzS,KAAKsf,UAAAA,GAAalB,EAAAA;AAhBlB,YAAA;AAiBF,UAAA;AAEA,UAAA,cAAA,CAAeP,EAAAA,EAAAA;AACb,YAAA,IAAA,CAAKA,IACH,MAAM,uCAAA;AAGR7d,YAAAA,IAAAA,CAAK0e,UAAAA,GAAab,EAAAA,EAClB7d,IAAAA,CAAKme,MAAAA,EAAAA;AACP,UAAA;UAEA,eAAA,GAAAqB;AACExf,YAAAA,IAAAA,CAAK0e,UAAAA,GAAAA,MAAAA,EACL1e,IAAAA,CAAKme,MAAAA,EAAAA;AACP,UAAA;UAEA,MAAA,UAAA,CAAiBN,KAA2B,KAAA,EAAA;AAC1C,YAAA,IAAA,CAAK7d,IAAAA,CAAK6W,GAAAA,EAAK,MAAM,kBAAA;AACrB,YAAA,MAAMsB,EAAAA,GAAAA,MAAgBnY,IAAAA,CAAKyf,WAAAA,CAAY5B,EAAAA,CAAAA,EACjC6B,EAAAA,GAAW9B,EAAYC,EAAAA,CAAAA;AAE7B,YAAA,IAAA,CAAK1F,IACH,OAAO,IAAA;AAGT,YAAA,IAAgC,KAAA,KAA5B0F,EAAAA,CAAUE,WAAAA,EAAAA,EAAyB;AACrC,cAAA,MAEM4B,EAAAA,GAAY,CAAA;AAFC,EAAA,IAAI3f,IAAAA,CAAK2S,OAAAA,CAAQqM,aAAAA,EAAAA,CACVC,iBAAAA,CAAkB9G,EAAAA,CAAAA,CAAAA,CAAAA;AAE5C,cAAA,OAAoB,eAAA,OAATyH,IAAAA,IAAyB5f,KAAK2V,QAAAA,CAASsI,KAAAA,GAGzC4B,OAAOC,IAAAA,CAAKH,EAAAA,CAAAA,GAFZ,IAAIC,KAAK,CAACD,EAAAA,GAAY,EAAE5U,IAAAA,EAAM2U,IAAAA,CAAAA;AAIzC,YAAA;AACE,YAAA,OAAO,IAAIhF,OAAAA,EAASC,CAAAA,EAAAA,KAAAA;AAClB,cAAA,MAAMK,EAAAA,GAAS7C,EAAAA;AACf,cAAA,IAAI,UAAA,IAAc6C,EAAAA,EAEhB,IAAiB,WAAA,KAAb0E,EAAAA,EACF/E,EAAAA,CAAQK,EAAAA,CAAO+E,QAAAA,CAASL,EAAAA,CAAAA,CAAAA;AACF,mBAAA,IAAA,YAAA,KAAbA,IACT/E,EAAAA,CAAQK,EAAAA,CAAO+E,QAAAA,CAASL,EAAAA,CAAAA,CAAAA;AACnB,mBAAA;AAAA,gBAAA,IAAiB,iBAAA,KAAbA,EAAAA,EAGT,MAAM5B,KAAAA,CAAM,uBAAA,CAAA;AAFZnD,gBAAAA,EAAAA,CAAQK,EAAAA,CAAO+E,QAAAA,CAASL,EAAAA,CAAAA,CAAAA;AAG1B,cAAA;AACS,mBAAA,QAAA,IAAY1E,EAAAA,IACrB5a,EAAAA,CAAS4f,MAAAA,CAAOrF,EAAAA,EAAS+E,IAAU,CAAA,CAAA;YACrC,CAAA,EAAA;AAGN,UAAA;AAEA,UAAA,MAAA,SAAeO,EAAAA,EAAAA;AACb,YAAA,IAAA,CAAKjgB,IAAAA,CAAK6W,GAAAA,EAAK,MAAM,kBAAA;AACrB,YAAA,IAAoB,WAAA,IAAA,OAAT+I,IAAAA,EAAsB,MAAM,sDAAA;AACvC,YAAA,IAAI/B,EAAAA,GAAY,OACZlM,EAAAA,GAAO,IAAA;AAGoB,YAAA,QAAA,IAAA,OAApBsO,MACTpC,EAAAA,GAAYoC,EAAAA,EACZC,QAAQC,IAAAA,CACN,6HAAA,KAEkC,QAAA,IAAA,OAApBF,MAAoD,IAAA,KAApBA,EAAAA,KAC5CA,GAAgBtO,IAAAA,KAClBA,EAAAA,GAAOsO,GAAgBtO,IAAAA,CAAAA,EAErBsO,EAAAA,CAAgBpC,SAAAA,KAClBA,EAAAA,GAAYoC,EAAAA,CAAgBpC,SAAAA,CAAAA,CAAAA;AAIhC,YAAA,MAAM1F,EAAAA,GAAAA,MAAgBnY,IAAAA,CAAKyf,WAAAA,CAAY5B,EAAAA,CAAAA;AAEvC,YAAA,IAAK1F,EAAAA,EAIL,IAAgC,KAAA,KAA5B0F,EAAAA,CAAUE,aAAAA,EAAyB;AAErC,cAAA,IAAI5M,EAAAA,GADe,IAAI6N,aAAAA,EAAAA,CACCC,iBAAAA,CAAkB9G,EAAAA,CAAAA;AAE1ChH,cAAAA,EAAAA,GAAS,2CAAA,GAA8CA,EAAAA,EAEvDM,CAAAA,CADY,QAAQmM,CAAAA,CAAYC,EAAAA,CAAAA,CAAAA,eAAAA,EAA4BuC,mBAAmBjP,EAAAA,CAAAA,CAAAA,CAAAA,EAC9D,CAAA,EAAGQ,EAAAA,CAAAA,IAAAA,CAAAA,CAAAA;YACtB,CAAA,MAEEF,CAAAA,CADa0G,EAAAA,CAA8BgD,SAAAA,CAAUyC,CAAAA,CAAYC,EAAAA,CAAAA,CAAAA,EAChD,CAAA,EAAGlM,EAAAA,CAAAA,CAAAA,EAAQkM,EAAAA,CAAAA,CAAAA,CAAAA;AAEhC,UAAA;AAAA;AEnOF,QAAA,MAAA,CAAA,GAAA,CAAA;AAAA,MAAA,CAAA,KAAA,CAAA,CAAA,OAAA;AAAA,IAAA,CAAA,GAAA,EAAA","file":"qr-code-styling-3Y6LZH6V.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(this, () => {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { Mode } from \"../types\";\n\ninterface Modes {\n [key: string]: Mode;\n}\n\nexport default {\n numeric: \"Numeric\",\n alphanumeric: \"Alphanumeric\",\n byte: \"Byte\",\n kanji: \"Kanji\"\n} as Modes;\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record<string, unknown>): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n if (!sources.length) return target;\n const source = sources.shift();\n if (source === undefined || !isObject(target) || !isObject(source)) return target;\n target = { ...target };\n Object.keys(source).forEach((key: string): void => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = sourceValue;\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n","interface ErrorCorrectionPercents {\n [key: string]: number;\n}\n\nexport default {\n L: 0.07,\n M: 0.15,\n Q: 0.25,\n H: 0.3\n} as ErrorCorrectionPercents;\n","import dotTypes from \"../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs, Window } from \"../../types\";\n\nexport default class QRDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: DotType;\n _window: Window;\n\n constructor({ svg, type, window }: { svg: SVGElement; type: DotType; window: Window }) {\n this._svg = svg;\n this._type = type;\n this._window = window;\n }\n\n draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case dotTypes.dots:\n drawFunction = this._drawDot;\n break;\n case dotTypes.classy:\n drawFunction = this._drawClassy;\n break;\n case dotTypes.classyRounded:\n drawFunction = this._drawClassyRounded;\n break;\n case dotTypes.rounded:\n drawFunction = this._drawRounded;\n break;\n case dotTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case dotTypes.square:\n default:\n drawFunction = this._drawSquare;\n }\n\n drawFunction.call(this, { x, y, size, getNeighbor });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n //if rotation === 0 - right side is rounded\n _basicSideRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size / 2}` + //draw line to left bottom corner + half of size right\n `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n );\n }\n });\n }\n\n //if rotation === 0 - top right corner is rounded\n _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to top left position\n `v ${size}` + //draw line to left bottom corner\n `h ${size}` + //draw line to right bottom corner\n `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n );\n }\n });\n }\n\n //if rotation === 0 - left bottom and right top corners are rounded\n _basicCornersRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` + //go to left top position\n `v ${size / 2}` + //draw line to left top corner + half of size bottom\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n `h ${size / 2}` + //draw line to right bottom corner\n `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n );\n }\n });\n }\n\n _drawDot({ x, y, size }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation: 0 });\n }\n\n _drawSquare({ x, y, size }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicDot({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n this._basicSquare({ x, y, size, rotation: 0 });\n return;\n }\n\n if (neighborsCount === 2) {\n let rotation = 0;\n\n if (leftNeighbor && topNeighbor) {\n rotation = Math.PI / 2;\n } else if (topNeighbor && rightNeighbor) {\n rotation = Math.PI;\n } else if (rightNeighbor && bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicCornerExtraRounded({ x, y, size, rotation });\n return;\n }\n\n if (neighborsCount === 1) {\n let rotation = 0;\n\n if (topNeighbor) {\n rotation = Math.PI / 2;\n } else if (rightNeighbor) {\n rotation = Math.PI;\n } else if (bottomNeighbor) {\n rotation = -Math.PI / 2;\n }\n\n this._basicSideRounded({ x, y, size, rotation });\n return;\n }\n }\n\n _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n\n _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n if (neighborsCount === 0) {\n this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n if (!leftNeighbor && !topNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n return;\n }\n\n if (!rightNeighbor && !bottomNeighbor) {\n this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n return;\n }\n\n this._basicSquare({ x, y, size, rotation: 0 });\n }\n}\n","import { DotTypes } from \"../types\";\n\nexport default {\n dots: \"dots\",\n rounded: \"rounded\",\n classy: \"classy\",\n classyRounded: \"classy-rounded\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\",\n extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerSquareTypes from \"../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs, Window } from \"../../types\";\n\nexport const availableCornerSquareTypes = Object.values(cornerSquareTypes);\n\nexport default class QRCornerSquare {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerSquareType;\n _window: Window;\n\n constructor({ svg, type, window }: { svg: SVGElement; type: CornerSquareType; window: Window }) {\n this._svg = svg;\n this._type = type;\n this._window = window;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerSquareTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerSquareTypes.extraRounded:\n drawFunction = this._drawExtraRounded;\n break;\n case cornerSquareTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x + size / 2} ${y}` + // M cx, y // Move to top of ring\n `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n `z` + // Z // Close the outer shape\n `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n );\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y}` +\n `v ${size}` +\n `h ${size}` +\n `v ${-size}` +\n `z` +\n `M ${x + dotSize} ${y + dotSize}` +\n `h ${size - 2 * dotSize}` +\n `v ${size - 2 * dotSize}` +\n `h ${-size + 2 * dotSize}` +\n `z`\n );\n }\n });\n }\n\n _basicExtraRounded(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n const dotSize = size / 7;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n this._element.setAttribute(\"clip-rule\", \"evenodd\");\n this._element.setAttribute(\n \"d\",\n `M ${x} ${y + 2.5 * dotSize}` +\n `v ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n `h ${2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n `v ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n `h ${-2 * dotSize}` +\n `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n `h ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n `v ${2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n `h ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n `v ${-2 * dotSize}` +\n `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n );\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n\n _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n this._basicExtraRounded({ x, y, size, rotation });\n }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n dot: \"dot\",\n square: \"square\"\n} as CornerDotTypes;","import cornerDotTypes from \"../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs, Window } from \"../../types\";\n\nexport const availableCornerDotTypes = Object.values(cornerDotTypes);\n\nexport default class QRCornerDot {\n _element?: SVGElement;\n _svg: SVGElement;\n _type: CornerDotType;\n _window: Window;\n\n constructor({ svg, type, window }: { svg: SVGElement; type: CornerDotType; window: Window }) {\n this._svg = svg;\n this._type = type;\n this._window = window;\n }\n\n draw(x: number, y: number, size: number, rotation: number): void {\n const type = this._type;\n let drawFunction;\n\n switch (type) {\n case cornerDotTypes.square:\n drawFunction = this._drawSquare;\n break;\n case cornerDotTypes.dot:\n default:\n drawFunction = this._drawDot;\n }\n\n drawFunction.call(this, { x, y, size, rotation });\n }\n\n _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n const cx = x + size / 2;\n const cy = y + size / 2;\n\n draw();\n this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n }\n\n _basicDot(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n this._element.setAttribute(\"cx\", String(x + size / 2));\n this._element.setAttribute(\"cy\", String(y + size / 2));\n this._element.setAttribute(\"r\", String(size / 2));\n }\n });\n }\n\n _basicSquare(args: BasicFigureDrawArgs): void {\n const { size, x, y } = args;\n\n this._rotateFigure({\n ...args,\n draw: () => {\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._element.setAttribute(\"x\", String(x));\n this._element.setAttribute(\"y\", String(y));\n this._element.setAttribute(\"width\", String(size));\n this._element.setAttribute(\"height\", String(size));\n }\n });\n }\n\n _drawDot({ x, y, size, rotation }: DrawArgs): void {\n this._basicDot({ x, y, size, rotation });\n }\n\n _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n this._basicSquare({ x, y, size, rotation });\n }\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n radial: \"radial\",\n linear: \"linear\"\n} as GradientTypes;\n","import { ShapeTypes } from \"../types\";\n\nexport default {\n square: \"square\",\n circle: \"circle\"\n} as ShapeTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport toDataUrl from \"../tools/toDataUrl\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/QRDot\";\nimport QRCornerSquare, { availableCornerSquareTypes } from \"../figures/cornerSquare/QRCornerSquare\";\nimport QRCornerDot, { availableCornerDotTypes } from \"../figures/cornerDot/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport shapeTypes from \"../constants/shapeTypes\";\nimport { DotType, QRCode, FilterFunction, Gradient, Window } from \"../types\";\nimport { Image } from \"canvas\";\n\nconst squareMask = [\n [1, 1, 1, 1, 1, 1, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 0, 0, 0, 0, 0, 1],\n [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 1, 1, 1, 0, 0],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n _window: Window;\n _element: SVGElement;\n _defs: SVGElement;\n _backgroundClipPath?: SVGElement;\n _dotsClipPath?: SVGElement;\n _cornersSquareClipPath?: SVGElement;\n _cornersDotClipPath?: SVGElement;\n _options: RequiredOptions;\n _qr?: QRCode;\n _image?: HTMLImageElement | Image;\n _imageUri?: string;\n _instanceId: number;\n\n static instanceCount = 0;\n\n //TODO don't pass all options to this class\n constructor(options: RequiredOptions, window: Window) {\n this._window = window;\n this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n this._element.setAttribute(\"width\", String(options.width));\n this._element.setAttribute(\"height\", String(options.height));\n this._element.setAttribute(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n if (!options.dotsOptions.roundSize) {\n this._element.setAttribute(\"shape-rendering\", \"crispEdges\");\n }\n this._element.setAttribute(\"viewBox\", `0 0 ${options.width} ${options.height}`);\n this._defs = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n this._element.appendChild(this._defs);\n this._imageUri = options.image;\n this._instanceId = QRSVG.instanceCount++;\n this._options = options;\n }\n\n get width(): number {\n return this._options.width;\n }\n\n get height(): number {\n return this._options.height;\n }\n\n getElement(): SVGElement {\n return this._element;\n }\n\n async drawQR(qr: QRCode): Promise<void> {\n const count = qr.getModuleCount();\n const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n const realQRSize = this._options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n const dotSize = this._roundSize(realQRSize / count);\n let drawImageSize = {\n hideXDots: 0,\n hideYDots: 0,\n width: 0,\n height: 0\n };\n\n this._qr = qr;\n\n if (this._options.image) {\n //We need it to get image size\n await this.loadImage();\n if (!this._image) return;\n const { imageOptions, qrOptions } = this._options;\n const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n drawImageSize = calculateImageSize({\n originalWidth: this._image.width,\n originalHeight: this._image.height,\n maxHiddenDots,\n maxHiddenAxisDots: count - 14,\n dotSize\n });\n }\n\n this.drawBackground();\n this.drawDots((row: number, col: number): boolean => {\n if (this._options.imageOptions.hideBackgroundDots) {\n if (\n row >= (count - drawImageSize.hideYDots) / 2 &&\n row < (count + drawImageSize.hideYDots) / 2 &&\n col >= (count - drawImageSize.hideXDots) / 2 &&\n col < (count + drawImageSize.hideXDots) / 2\n ) {\n return false;\n }\n }\n\n if (squareMask[row]?.[col] || squareMask[row - count + 7]?.[col] || squareMask[row]?.[col - count + 7]) {\n return false;\n }\n\n if (dotMask[row]?.[col] || dotMask[row - count + 7]?.[col] || dotMask[row]?.[col - count + 7]) {\n return false;\n }\n\n return true;\n });\n this.drawCorners();\n\n if (this._options.image) {\n await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n }\n }\n\n drawBackground(): void {\n const element = this._element;\n const options = this._options;\n\n if (element) {\n const gradientOptions = options.backgroundOptions?.gradient;\n const color = options.backgroundOptions?.color;\n let height = options.height;\n let width = options.width;\n\n if (gradientOptions || color) {\n const element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n this._backgroundClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._backgroundClipPath.setAttribute(\"id\", `clip-path-background-color-${this._instanceId}`);\n this._defs.appendChild(this._backgroundClipPath);\n\n if (options.backgroundOptions?.round) {\n height = width = Math.min(options.width, options.height);\n element.setAttribute(\"rx\", String((height / 2) * options.backgroundOptions.round));\n }\n\n element.setAttribute(\"x\", String(this._roundSize((options.width - width) / 2)));\n element.setAttribute(\"y\", String(this._roundSize((options.height - height) / 2)));\n element.setAttribute(\"width\", String(width));\n element.setAttribute(\"height\", String(height));\n\n this._backgroundClipPath.appendChild(element);\n\n this._createColor({\n options: gradientOptions,\n color: color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: `background-color-${this._instanceId}`\n });\n }\n }\n }\n\n drawDots(filter?: FilterFunction): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const options = this._options;\n const count = this._qr.getModuleCount();\n\n if (count > options.width || count > options.height) {\n throw \"The canvas is too small.\";\n }\n\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n const dotSize = this._roundSize(realQRSize / count);\n const xBeginning = this._roundSize((options.width - count * dotSize) / 2);\n const yBeginning = this._roundSize((options.height - count * dotSize) / 2);\n const dot = new QRDot({\n svg: this._element,\n type: options.dotsOptions.type,\n window: this._window\n });\n\n this._dotsClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n this._dotsClipPath.setAttribute(\"id\", `clip-path-dot-color-${this._instanceId}`);\n this._defs.appendChild(this._dotsClipPath);\n\n this._createColor({\n options: options.dotsOptions?.gradient,\n color: options.dotsOptions.color,\n additionalRotation: 0,\n x: 0,\n y: 0,\n height: options.height,\n width: options.width,\n name: `dot-color-${this._instanceId}`\n });\n\n for (let row = 0; row < count; row++) {\n for (let col = 0; col < count; col++) {\n if (filter && !filter(row, col)) {\n continue;\n }\n if (!this._qr?.isDark(row, col)) {\n continue;\n }\n\n dot.draw(\n xBeginning + col * dotSize,\n yBeginning + row * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n if (col + xOffset < 0 || row + yOffset < 0 || col + xOffset >= count || row + yOffset >= count) return false;\n if (filter && !filter(row + yOffset, col + xOffset)) return false;\n return !!this._qr && this._qr.isDark(row + yOffset, col + xOffset);\n }\n );\n\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n }\n }\n }\n\n if (options.shape === shapeTypes.circle) {\n const additionalDots = this._roundSize((minSize / dotSize - count) / 2);\n const fakeCount = count + additionalDots * 2;\n const xFakeBeginning = xBeginning - additionalDots * dotSize;\n const yFakeBeginning = yBeginning - additionalDots * dotSize;\n const fakeMatrix: number[][] = [];\n const center = this._roundSize(fakeCount / 2);\n\n for (let row = 0; row < fakeCount; row++) {\n fakeMatrix[row] = [];\n for (let col = 0; col < fakeCount; col++) {\n if (\n row >= additionalDots - 1 &&\n row <= fakeCount - additionalDots &&\n col >= additionalDots - 1 &&\n col <= fakeCount - additionalDots\n ) {\n fakeMatrix[row][col] = 0;\n continue;\n }\n\n if (Math.sqrt((row - center) * (row - center) + (col - center) * (col - center)) > center) {\n fakeMatrix[row][col] = 0;\n continue;\n }\n\n //Get random dots from QR code to show it outside of QR code\n fakeMatrix[row][col] = this._qr.isDark(\n col - 2 * additionalDots < 0 ? col : col >= count ? col - 2 * additionalDots : col - additionalDots,\n row - 2 * additionalDots < 0 ? row : row >= count ? row - 2 * additionalDots : row - additionalDots\n )\n ? 1\n : 0;\n }\n }\n\n for (let row = 0; row < fakeCount; row++) {\n for (let col = 0; col < fakeCount; col++) {\n if (!fakeMatrix[row][col]) continue;\n\n dot.draw(\n xFakeBeginning + col * dotSize,\n yFakeBeginning + row * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => {\n return !!fakeMatrix[row + yOffset]?.[col + xOffset];\n }\n );\n if (dot._element && this._dotsClipPath) {\n this._dotsClipPath.appendChild(dot._element);\n }\n }\n }\n }\n }\n\n drawCorners(): void {\n if (!this._qr) {\n throw \"QR code is not defined\";\n }\n\n const element = this._element;\n const options = this._options;\n\n if (!element) {\n throw \"Element code is not defined\";\n }\n\n const count = this._qr.getModuleCount();\n const minSize = Math.min(options.width, options.height) - options.margin * 2;\n const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n const dotSize = this._roundSize(realQRSize / count);\n const cornersSquareSize = dotSize * 7;\n const cornersDotSize = dotSize * 3;\n const xBeginning = this._roundSize((options.width - count * dotSize) / 2);\n const yBeginning = this._roundSize((options.height - count * dotSize) / 2);\n\n [\n [0, 0, 0],\n [1, 0, Math.PI / 2],\n [0, 1, -Math.PI / 2]\n ].forEach(([column, row, rotation]) => {\n const x = xBeginning + column * dotSize * (count - 7);\n const y = yBeginning + row * dotSize * (count - 7);\n let cornersSquareClipPath = this._dotsClipPath;\n let cornersDotClipPath = this._dotsClipPath;\n\n if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) {\n cornersSquareClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}-${this._instanceId}`);\n this._defs.appendChild(cornersSquareClipPath);\n this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n this._createColor({\n options: options.cornersSquareOptions?.gradient,\n color: options.cornersSquareOptions?.color,\n additionalRotation: rotation,\n x,\n y,\n height: cornersSquareSize,\n width: cornersSquareSize,\n name: `corners-square-color-${column}-${row}-${this._instanceId}`\n });\n }\n\n if (options.cornersSquareOptions?.type && availableCornerSquareTypes.includes(options.cornersSquareOptions.type)) {\n const cornersSquare = new QRCornerSquare({\n svg: this._element,\n type: options.cornersSquareOptions.type,\n window: this._window\n });\n\n cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n if (cornersSquare._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(cornersSquare._element);\n }\n } else {\n const dot = new QRDot({\n svg: this._element,\n type: (options.cornersSquareOptions?.type as DotType) || options.dotsOptions.type,\n window: this._window\n });\n\n for (let row = 0; row < squareMask.length; row++) {\n for (let col = 0; col < squareMask[row].length; col++) {\n if (!squareMask[row]?.[col]) {\n continue;\n }\n\n dot.draw(\n x + col * dotSize,\n y + row * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!squareMask[row + yOffset]?.[col + xOffset]\n );\n\n if (dot._element && cornersSquareClipPath) {\n cornersSquareClipPath.appendChild(dot._element);\n }\n }\n }\n }\n\n if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) {\n cornersDotClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}-${this._instanceId}`);\n this._defs.appendChild(cornersDotClipPath);\n this._cornersDotClipPath = cornersDotClipPath;\n\n this._createColor({\n options: options.cornersDotOptions?.gradient,\n color: options.cornersDotOptions?.color,\n additionalRotation: rotation,\n x: x + dotSize * 2,\n y: y + dotSize * 2,\n height: cornersDotSize,\n width: cornersDotSize,\n name: `corners-dot-color-${column}-${row}-${this._instanceId}`\n });\n }\n\n if (options.cornersDotOptions?.type && availableCornerDotTypes.includes(options.cornersDotOptions.type)) {\n const cornersDot = new QRCornerDot({\n svg: this._element,\n type: options.cornersDotOptions.type,\n window: this._window\n });\n\n cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n if (cornersDot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(cornersDot._element);\n }\n } else {\n const dot = new QRDot({\n svg: this._element,\n type: (options.cornersDotOptions?.type as DotType) || options.dotsOptions.type,\n window: this._window\n });\n\n for (let row = 0; row < dotMask.length; row++) {\n for (let col = 0; col < dotMask[row].length; col++) {\n if (!dotMask[row]?.[col]) {\n continue;\n }\n\n dot.draw(\n x + col * dotSize,\n y + row * dotSize,\n dotSize,\n (xOffset: number, yOffset: number): boolean => !!dotMask[row + yOffset]?.[col + xOffset]\n );\n\n if (dot._element && cornersDotClipPath) {\n cornersDotClipPath.appendChild(dot._element);\n }\n }\n }\n }\n });\n }\n\n loadImage(): Promise<void> {\n return new Promise((resolve, reject) => {\n const options = this._options;\n\n if (!options.image) {\n return reject(\"Image is not defined\");\n }\n\n if (options.nodeCanvas?.loadImage) {\n options.nodeCanvas\n .loadImage(options.image)\n .then((image: Image) => {\n this._image = image;\n if (this._options.imageOptions.saveAsBlob) {\n const canvas = options.nodeCanvas?.createCanvas( this._image.width, this._image.height);\n canvas?.getContext('2d')?.drawImage(image, 0, 0);\n this._imageUri = canvas?.toDataURL();\n }\n resolve();\n })\n .catch(reject);\n } else {\n const image = new this._window.Image();\n\n if (typeof options.imageOptions.crossOrigin === \"string\") {\n image.crossOrigin = options.imageOptions.crossOrigin;\n }\n\n this._image = image;\n image.onload = async () => {\n if (this._options.imageOptions.saveAsBlob) {\n this._imageUri = await toDataUrl(options.image || \"\", this._window);\n }\n resolve();\n };\n image.src = options.image;\n }\n });\n }\n\n async drawImage({\n width,\n height,\n count,\n dotSize\n }: {\n width: number;\n height: number;\n count: number;\n dotSize: number;\n }): Promise<void> {\n const options = this._options;\n const xBeginning = this._roundSize((options.width - count * dotSize) / 2);\n const yBeginning = this._roundSize((options.height - count * dotSize) / 2);\n const dx = xBeginning + this._roundSize(options.imageOptions.margin + (count * dotSize - width) / 2);\n const dy = yBeginning + this._roundSize(options.imageOptions.margin + (count * dotSize - height) / 2);\n const dw = width - options.imageOptions.margin * 2;\n const dh = height - options.imageOptions.margin * 2;\n\n const image = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n image.setAttribute(\"href\", this._imageUri || \"\");\n image.setAttribute(\"xlink:href\", this._imageUri || \"\");\n image.setAttribute(\"x\", String(dx));\n image.setAttribute(\"y\", String(dy));\n image.setAttribute(\"width\", `${dw}px`);\n image.setAttribute(\"height\", `${dh}px`);\n\n this._element.appendChild(image);\n }\n\n _createColor({\n options,\n color,\n additionalRotation,\n x,\n y,\n height,\n width,\n name\n }: {\n options?: Gradient;\n color?: string;\n additionalRotation: number;\n x: number;\n y: number;\n height: number;\n width: number;\n name: string;\n }): void {\n const size = width > height ? width : height;\n const rect = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", String(x));\n rect.setAttribute(\"y\", String(y));\n rect.setAttribute(\"height\", String(height));\n rect.setAttribute(\"width\", String(width));\n rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n if (options) {\n let gradient: SVGElement;\n if (options.type === gradientTypes.radial) {\n gradient = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"fx\", String(x + width / 2));\n gradient.setAttribute(\"fy\", String(y + height / 2));\n gradient.setAttribute(\"cx\", String(x + width / 2));\n gradient.setAttribute(\"cy\", String(y + height / 2));\n gradient.setAttribute(\"r\", String(size / 2));\n } else {\n const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n let x0 = x + width / 2;\n let y0 = y + height / 2;\n let x1 = x + width / 2;\n let y1 = y + height / 2;\n\n if (\n (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n ) {\n x0 = x0 - width / 2;\n y0 = y0 - (height / 2) * Math.tan(rotation);\n x1 = x1 + width / 2;\n y1 = y1 + (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n y0 = y0 - height / 2;\n x0 = x0 - width / 2 / Math.tan(rotation);\n y1 = y1 + height / 2;\n x1 = x1 + width / 2 / Math.tan(rotation);\n } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n x0 = x0 + width / 2;\n y0 = y0 + (height / 2) * Math.tan(rotation);\n x1 = x1 - width / 2;\n y1 = y1 - (height / 2) * Math.tan(rotation);\n } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n y0 = y0 + height / 2;\n x0 = x0 + width / 2 / Math.tan(rotation);\n y1 = y1 - height / 2;\n x1 = x1 - width / 2 / Math.tan(rotation);\n }\n\n gradient = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n gradient.setAttribute(\"id\", name);\n gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttribute(\"x1\", String(Math.round(x0)));\n gradient.setAttribute(\"y1\", String(Math.round(y0)));\n gradient.setAttribute(\"x2\", String(Math.round(x1)));\n gradient.setAttribute(\"y2\", String(Math.round(y1)));\n }\n\n options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n const stop = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n stop.setAttribute(\"offset\", `${100 * offset}%`);\n stop.setAttribute(\"stop-color\", color);\n gradient.appendChild(stop);\n });\n\n rect.setAttribute(\"fill\", `url('#${name}')`);\n this._defs.appendChild(gradient);\n } else if (color) {\n rect.setAttribute(\"fill\", color);\n }\n\n this._element.appendChild(rect);\n }\n\n _roundSize = (value: number) => {\n if (this._options.dotsOptions.roundSize) {\n return Math.floor(value);\n }\n return value;\n }\n}\n","interface ImageSizeOptions {\n originalHeight: number;\n originalWidth: number;\n maxHiddenDots: number;\n maxHiddenAxisDots?: number;\n dotSize: number;\n}\n\ninterface ImageSizeResult {\n height: number;\n width: number;\n hideYDots: number;\n hideXDots: number;\n}\n\nexport default function calculateImageSize({\n originalHeight,\n originalWidth,\n maxHiddenDots,\n maxHiddenAxisDots,\n dotSize\n}: ImageSizeOptions): ImageSizeResult {\n const hideDots = { x: 0, y: 0 };\n const imageSize = { x: 0, y: 0 };\n\n if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n return {\n height: 0,\n width: 0,\n hideYDots: 0,\n hideXDots: 0\n };\n }\n\n const k = originalHeight / originalWidth;\n\n //Getting the maximum possible axis hidden dots\n hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n //The count of hidden dot's can't be less than 1\n if (hideDots.x <= 0) hideDots.x = 1;\n //Check the limit of the maximum allowed axis hidden dots\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n //The count of dots should be odd\n if (hideDots.x % 2 === 0) hideDots.x--;\n imageSize.x = hideDots.x * dotSize;\n //Calculate opposite axis hidden dots based on axis value.\n //The value will be odd.\n //We use ceil to prevent dots covering by the image.\n hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n imageSize.y = Math.round(imageSize.x * k);\n //If the result dots count is bigger than max - then decrease size and calculate again\n if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n hideDots.y = maxHiddenAxisDots;\n if (hideDots.y % 2 === 0) hideDots.x--;\n } else {\n hideDots.y -= 2;\n }\n imageSize.y = hideDots.y * dotSize;\n hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n imageSize.x = Math.round(imageSize.y / k);\n }\n\n return {\n height: imageSize.y,\n width: imageSize.x,\n hideYDots: hideDots.y,\n hideXDots: hideDots.x\n };\n}\n","import { Window } from \"../types\";\n\nexport default async function toDataURL(url: string, window: Window): Promise<string> {\n return new Promise((resolve) => {\n const xhr = new window.XMLHttpRequest();\n xhr.onload = function () {\n const reader = new window.FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n });\n}\n","import { DrawTypes } from \"../types\";\n\nexport default {\n canvas: \"canvas\",\n svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n// 0: 0,\n// 1: 1,\n// ...\n// 40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport shapeTypes from \"../constants/shapeTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { ShapeType, DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n type: DrawType;\n shape: ShapeType;\n width: number;\n height: number;\n margin: number;\n data: string;\n qrOptions: {\n typeNumber: TypeNumber;\n mode?: Mode;\n errorCorrectionLevel: ErrorCorrectionLevel;\n };\n imageOptions: {\n saveAsBlob: boolean;\n hideBackgroundDots: boolean;\n imageSize: number;\n crossOrigin?: string;\n margin: number;\n };\n dotsOptions: {\n type: DotType;\n color: string;\n gradient?: Gradient;\n roundSize?: boolean;\n };\n backgroundOptions: {\n round: number;\n color: string;\n gradient?: Gradient;\n };\n}\n\nconst defaultOptions: RequiredOptions = {\n type: drawTypes.canvas,\n shape: shapeTypes.square,\n width: 300,\n height: 300,\n data: \"\",\n margin: 0,\n qrOptions: {\n typeNumber: qrTypes[0],\n mode: undefined,\n errorCorrectionLevel: errorCorrectionLevels.Q\n },\n imageOptions: {\n saveAsBlob: true,\n hideBackgroundDots: true,\n imageSize: 0.4,\n crossOrigin: undefined,\n margin: 0\n },\n dotsOptions: {\n type: \"square\",\n color: \"#000\",\n roundSize: true,\n },\n backgroundOptions: {\n round: 0,\n color: \"#fff\"\n }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n L: \"L\",\n M: \"M\",\n Q: \"Q\",\n H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n const newGradient = { ...gradient };\n\n if (!newGradient.colorStops || !newGradient.colorStops.length) {\n throw \"Field 'colorStops' is required in gradient\";\n }\n\n if (newGradient.rotation) {\n newGradient.rotation = Number(newGradient.rotation);\n } else {\n newGradient.rotation = 0;\n }\n\n newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n ...colorStop,\n offset: Number(colorStop.offset)\n }));\n\n return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n const newOptions = { ...options };\n\n newOptions.width = Number(newOptions.width);\n newOptions.height = Number(newOptions.height);\n newOptions.margin = Number(newOptions.margin);\n newOptions.imageOptions = {\n ...newOptions.imageOptions,\n hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n imageSize: Number(newOptions.imageOptions.imageSize),\n margin: Number(newOptions.imageOptions.margin)\n };\n\n if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n newOptions.margin = Math.min(newOptions.width, newOptions.height);\n }\n\n newOptions.dotsOptions = {\n ...newOptions.dotsOptions\n };\n if (newOptions.dotsOptions.gradient) {\n newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n }\n\n if (newOptions.cornersSquareOptions) {\n newOptions.cornersSquareOptions = {\n ...newOptions.cornersSquareOptions\n };\n if (newOptions.cornersSquareOptions.gradient) {\n newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n }\n }\n\n if (newOptions.cornersDotOptions) {\n newOptions.cornersDotOptions = {\n ...newOptions.cornersDotOptions\n };\n if (newOptions.cornersDotOptions.gradient) {\n newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n }\n }\n\n if (newOptions.backgroundOptions) {\n newOptions.backgroundOptions = {\n ...newOptions.backgroundOptions\n };\n if (newOptions.backgroundOptions.gradient) {\n newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n }\n }\n\n return newOptions;\n}\n","export default function getMimeType(extension: string) {\n if (!extension) throw new Error('Extension must be defined');\n if (extension[0] === \".\") {\n extension = extension.substring(1);\n }\n const type = {\n \"bmp\": \"image/bmp\",\n \"gif\": \"image/gif\",\n \"ico\": \"image/vnd.microsoft.icon\",\n \"jpeg\": \"image/jpeg\",\n \"jpg\": \"image/jpeg\",\n \"png\": \"image/png\",\n \"svg\": \"image/svg+xml\",\n \"tif\": \"image/tiff\",\n \"tiff\": \"image/tiff\",\n \"webp\": \"image/webp\",\n \"pdf\": \"application/pdf\",\n }[extension.toLowerCase()]\n\n if (!type) {\n throw new Error(`Extension \"${extension}\" is not supported`);\n }\n\n return type;\n}","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { FileExtension, QRCode, Options, DownloadOptions, ExtensionFunction, Window } from \"../types\";\nimport qrcode from \"qrcode-generator\";\nimport getMimeType from \"../tools/getMimeType\";\nimport { Canvas as NodeCanvas, Image } from \"canvas\";\n\ndeclare const window: Window;\n\nexport default class QRCodeStyling {\n _options: RequiredOptions;\n _window: Window;\n _container?: HTMLElement;\n _domCanvas?: HTMLCanvasElement;\n _nodeCanvas?: NodeCanvas;\n _svg?: SVGElement;\n _qr?: QRCode;\n _extension?: ExtensionFunction;\n _canvasDrawingPromise?: Promise<void>;\n _svgDrawingPromise?: Promise<void>;\n\n constructor(options?: Partial<Options>) {\n if (options?.jsdom) {\n this._window = new options.jsdom(\"\", { resources: \"usable\" }).window;\n } else {\n this._window = window;\n }\n this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n this.update();\n }\n\n static _clearContainer(container?: HTMLElement): void {\n if (container) {\n container.innerHTML = \"\";\n }\n }\n\n _setupSvg(): void {\n if (!this._qr) {\n return;\n }\n const qrSVG = new QRSVG(this._options, this._window);\n\n this._svg = qrSVG.getElement();\n this._svgDrawingPromise = qrSVG.drawQR(this._qr).then(() => {\n if (!this._svg) return;\n this._extension?.(qrSVG.getElement(), this._options);\n });\n }\n\n _setupCanvas(): void {\n if (!this._qr) {\n return;\n }\n\n if (this._options.nodeCanvas?.createCanvas) {\n this._nodeCanvas = this._options.nodeCanvas.createCanvas(this._options.width, this._options.height);\n this._nodeCanvas.width = this._options.width;\n this._nodeCanvas.height = this._options.height;\n } else {\n this._domCanvas = document.createElement(\"canvas\");\n this._domCanvas.width = this._options.width;\n this._domCanvas.height = this._options.height;\n }\n\n this._setupSvg();\n this._canvasDrawingPromise = this._svgDrawingPromise?.then(() => {\n if (!this._svg) return;\n\n const svg = this._svg;\n const xml = new this._window.XMLSerializer().serializeToString(svg);\n const svg64 = btoa(xml);\n const image64 = `data:${getMimeType('svg')};base64,${svg64}`;\n\n if (this._options.nodeCanvas?.loadImage) {\n return this._options.nodeCanvas.loadImage(image64).then((image: Image) => {\n // fix blurry svg\n image.width = this._options.width;\n image.height = this._options.height;\n this._nodeCanvas?.getContext(\"2d\")?.drawImage(image, 0, 0);\n });\n } else {\n const image = new this._window.Image();\n\n return new Promise((resolve) => {\n image.onload = (): void => {\n this._domCanvas?.getContext(\"2d\")?.drawImage(image, 0, 0);\n resolve();\n };\n\n image.src = image64;\n });\n }\n });\n }\n\n async _getElement(extension: FileExtension = \"png\") {\n if (!this._qr) throw \"QR code is empty\";\n\n if (extension.toLowerCase() === \"svg\") {\n if (!this._svg || !this._svgDrawingPromise) {\n this._setupSvg();\n }\n await this._svgDrawingPromise;\n return this._svg;\n } else {\n if (!(this._domCanvas || this._nodeCanvas) || !this._canvasDrawingPromise) {\n this._setupCanvas();\n }\n await this._canvasDrawingPromise;\n return this._domCanvas || this._nodeCanvas;\n }\n }\n\n update(options?: Partial<Options>): void {\n QRCodeStyling._clearContainer(this._container);\n this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n if (!this._options.data) {\n return;\n }\n\n this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n this._qr.make();\n\n if (this._options.type === drawTypes.canvas) {\n this._setupCanvas();\n } else {\n this._setupSvg();\n }\n\n this.append(this._container);\n }\n\n append(container?: HTMLElement): void {\n if (!container) {\n return;\n }\n\n if (typeof container.appendChild !== \"function\") {\n throw \"Container should be a single DOM node\";\n }\n\n if (this._options.type === drawTypes.canvas) {\n if (this._domCanvas) {\n container.appendChild(this._domCanvas);\n }\n } else {\n if (this._svg) {\n container.appendChild(this._svg);\n }\n }\n\n this._container = container;\n }\n\n applyExtension(extension: ExtensionFunction): void {\n if (!extension) {\n throw \"Extension function should be defined.\";\n }\n\n this._extension = extension;\n this.update();\n }\n\n deleteExtension(): void {\n this._extension = undefined;\n this.update();\n }\n\n async getRawData(extension: FileExtension = \"png\"): Promise<Blob | Buffer | null> {\n if (!this._qr) throw \"QR code is empty\";\n const element = await this._getElement(extension);\n const mimeType = getMimeType(extension);\n\n if (!element) {\n return null;\n }\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new this._window.XMLSerializer();\n const source = serializer.serializeToString(element as SVGElement);\n const svgString = `<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n${source}`;\n if (typeof Blob !== \"undefined\" && !this._options.jsdom) {\n return new Blob([svgString], { type: mimeType });\n } else {\n return Buffer.from(svgString);\n }\n } else {\n return new Promise((resolve) => {\n const canvas = element;\n if ('toBuffer' in canvas) {\n // Different call is needed to prevent error TS2769: No overload matches this call.\n if (mimeType === \"image/png\") {\n resolve(canvas.toBuffer(mimeType));\n } else if (mimeType === \"image/jpeg\") {\n resolve(canvas.toBuffer(mimeType));\n } else if (mimeType === \"application/pdf\") {\n resolve(canvas.toBuffer(mimeType));\n } else {\n throw Error(\"Unsupported extension\");\n }\n } else if ('toBlob' in canvas) {\n (canvas).toBlob(resolve, mimeType, 1);\n }\n });\n }\n }\n\n async download(downloadOptions?: Partial<DownloadOptions> | string): Promise<void> {\n if (!this._qr) throw \"QR code is empty\";\n if (typeof Blob === \"undefined\") throw \"Cannot download in Node.js, call getRawData instead.\";\n let extension = \"png\" as FileExtension;\n let name = \"qr\";\n\n //TODO remove deprecated code in the v2\n if (typeof downloadOptions === \"string\") {\n extension = downloadOptions as FileExtension;\n console.warn(\n \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n );\n } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n if (downloadOptions.name) {\n name = downloadOptions.name;\n }\n if (downloadOptions.extension) {\n extension = downloadOptions.extension;\n }\n }\n\n const element = await this._getElement(extension);\n\n if (!element) {\n return;\n }\n\n if (extension.toLowerCase() === \"svg\") {\n const serializer = new XMLSerializer();\n let source = serializer.serializeToString(element as SVGElement);\n\n source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n const url = `data:${getMimeType(extension)};charset=utf-8,${encodeURIComponent(source)}`;\n downloadURI(url, `${name}.svg`);\n } else {\n const url = (element as HTMLCanvasElement).toDataURL(getMimeType(extension));\n downloadURI(url, `${name}.${extension}`);\n }\n }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n switch (true) {\n case /^[0-9]*$/.test(data):\n return modes.numeric;\n case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n return modes.alphanumeric;\n default:\n return modes.byte;\n }\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\nimport shapeTypes from \"./constants/shapeTypes\";\nimport gradientTypes from \"./constants/gradientTypes\";\n\nexport * from \"./types\";\n\nexport {\n dotTypes,\n cornerDotTypes,\n cornerSquareTypes,\n errorCorrectionLevels,\n errorCorrectionPercents,\n modes,\n qrTypes,\n drawTypes,\n shapeTypes,\n gradientTypes\n};\n\nexport default QRCodeStyling;\n"]}