tplus-components-touch 1.25.8 → 1.26.2

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 (170) hide show
  1. package/README.md +16 -16
  2. package/dist/components/addLog/AddLogProcessor.js +6 -6
  3. package/dist/components/addLog/AddLogProcessor.js.map +1 -1
  4. package/dist/components/addLog/OperationLogApi.js +3 -3
  5. package/dist/components/addLog/OperationLogApi.js.map +1 -1
  6. package/dist/components/autoComplete/index.js +14 -14
  7. package/dist/components/autoComplete/index.js.map +1 -1
  8. package/dist/components/autoComplete/index.less +89 -89
  9. package/dist/components/autoComplete/option.js.map +1 -1
  10. package/dist/components/autoCompleteWithKeyboard/index.js +14 -14
  11. package/dist/components/autoCompleteWithKeyboard/index.js.map +1 -1
  12. package/dist/components/autoCompleteWithKeyboard/index.less +4 -4
  13. package/dist/components/billSearch/api.js +26 -26
  14. package/dist/components/billSearch/api.js.map +1 -1
  15. package/dist/components/billSearch/index.js +6 -6
  16. package/dist/components/billSearch/index.js.map +1 -1
  17. package/dist/components/billSearch/index.less +573 -573
  18. package/dist/components/cloudPrint/BTPrintFormatUtil.js +17 -17
  19. package/dist/components/cloudPrint/BTPrintFormatUtil.js.map +1 -1
  20. package/dist/components/cloudPrint/api.js.map +1 -1
  21. package/dist/components/cloudPrint/index.js +78 -51
  22. package/dist/components/cloudPrint/index.js.map +1 -1
  23. package/dist/components/cloudPrint/printDispatch.js +78 -67
  24. package/dist/components/cloudPrint/printDispatch.js.map +1 -1
  25. package/dist/components/commonForm/autoComplete/index.js.map +1 -1
  26. package/dist/components/commonForm/autoComplete/style.less +7 -7
  27. package/dist/components/commonForm/datePicker/index.js.map +1 -1
  28. package/dist/components/commonForm/datePicker/style.less +10 -10
  29. package/dist/components/commonForm/formControl/index.js +7 -7
  30. package/dist/components/commonForm/formControl/index.js.map +1 -1
  31. package/dist/components/commonForm/formControl/style.less +7 -7
  32. package/dist/components/commonForm/index.js +4 -4
  33. package/dist/components/commonForm/index.js.map +1 -1
  34. package/dist/components/commonForm/inputNumber/index.js.map +1 -1
  35. package/dist/components/commonForm/inputNumber/style.less +16 -16
  36. package/dist/components/commonForm/radio/index.js.map +1 -1
  37. package/dist/components/commonForm/radio/style.less +10 -10
  38. package/dist/components/commonForm/style.less +11 -11
  39. package/dist/components/deliverySearch/api.js +21 -21
  40. package/dist/components/deliverySearch/api.js.map +1 -1
  41. package/dist/components/deliverySearch/index.js +6 -6
  42. package/dist/components/deliverySearch/index.js.map +1 -1
  43. package/dist/components/deliverySearch/index.less +623 -623
  44. package/dist/components/form/index.js.map +1 -1
  45. package/dist/components/hotKey/config.js +23 -23
  46. package/dist/components/hotKey/config.js.map +1 -1
  47. package/dist/components/hotKey/hotKeyModal.js.map +1 -1
  48. package/dist/components/hotKey/index.js +26 -26
  49. package/dist/components/hotKey/index.js.map +1 -1
  50. package/dist/components/hotKey/localConfig.js.map +1 -1
  51. package/dist/components/hotKey/style.less +99 -99
  52. package/dist/components/hotKey/utils.js.map +1 -1
  53. package/dist/components/input/index.js +6 -6
  54. package/dist/components/input/index.js.map +1 -1
  55. package/dist/components/input/style.less +107 -107
  56. package/dist/components/input/tplusInput/index.js +30 -30
  57. package/dist/components/input/tplusInput/index.js.map +1 -1
  58. package/dist/components/input/tplusInput/inputContent.js.map +1 -1
  59. package/dist/components/input/tplusInput/inputs.js +7 -7
  60. package/dist/components/input/tplusInput/inputs.js.map +1 -1
  61. package/dist/components/input/tplusInput/style.less +194 -194
  62. package/dist/components/input/utils/index.js.map +1 -1
  63. package/dist/components/inventorySearch/api.js +58 -58
  64. package/dist/components/inventorySearch/api.js.map +1 -1
  65. package/dist/components/inventorySearch/index.js +3 -3
  66. package/dist/components/inventorySearch/index.js.map +1 -1
  67. package/dist/components/inventorySearch/index.less +243 -243
  68. package/dist/components/inventorySearch/store.js.map +1 -1
  69. package/dist/components/inventorySearch/tab.js.map +1 -1
  70. package/dist/components/keyboard/index.js.map +1 -1
  71. package/dist/components/keyboard/index.less +555 -555
  72. package/dist/components/keyboard/letterKeyboard.js +2 -2
  73. package/dist/components/keyboard/letterKeyboard.js.map +1 -1
  74. package/dist/components/keyboard/numKeyboard.js +4 -4
  75. package/dist/components/keyboard/numKeyboard.js.map +1 -1
  76. package/dist/components/keyboard/numKeyboardDigit.js +4 -4
  77. package/dist/components/keyboard/numKeyboardDigit.js.map +1 -1
  78. package/dist/components/keyboard/numKeyboardScan.js.map +1 -1
  79. package/dist/components/keyboard/numberButtonInteger.js +5 -5
  80. package/dist/components/keyboard/numberButtonInteger.js.map +1 -1
  81. package/dist/components/keyboard/numberButton_input.js +5 -5
  82. package/dist/components/keyboard/numberButton_input.js.map +1 -1
  83. package/dist/components/keyboard/onlyKeyboard.js +7 -7
  84. package/dist/components/keyboard/onlyKeyboard.js.map +1 -1
  85. package/dist/components/keyboard/onlyLetterButton.js +2 -2
  86. package/dist/components/keyboard/onlyLetterButton.js.map +1 -1
  87. package/dist/components/keyboard/onlyLetterButton2.js +2 -2
  88. package/dist/components/keyboard/onlyLetterButton2.js.map +1 -1
  89. package/dist/components/keyboard/onlyLetterButton2.less +183 -183
  90. package/dist/components/keyboard/onlyNumberButton.js +2 -2
  91. package/dist/components/keyboard/onlyNumberButton.js.map +1 -1
  92. package/dist/components/keyboard/onlyNumberButton2.js +3 -3
  93. package/dist/components/keyboard/onlyNumberButton2.js.map +1 -1
  94. package/dist/components/keyboard/textKeyboard.js.map +1 -1
  95. package/dist/components/layout/hamburger.js.map +1 -1
  96. package/dist/components/layout/index.js +10 -10
  97. package/dist/components/layout/index.js.map +1 -1
  98. package/dist/components/layout/layout.js.map +1 -1
  99. package/dist/components/layout/sider.js +12 -12
  100. package/dist/components/layout/sider.js.map +1 -1
  101. package/dist/components/layout/style.less +83 -83
  102. package/dist/components/loading/index.js +15 -15
  103. package/dist/components/loading/index.js.map +1 -1
  104. package/dist/components/loading/loadingContent.js.map +1 -1
  105. package/dist/components/loading/style.less +51 -51
  106. package/dist/components/loading/utils.js.map +1 -1
  107. package/dist/components/message/index.js +8 -8
  108. package/dist/components/message/index.js.map +1 -1
  109. package/dist/components/message/index.less +150 -150
  110. package/dist/components/modal/index.js.map +1 -1
  111. package/dist/components/modal/index.less +19 -19
  112. package/dist/components/modalVertical/style.less +114 -114
  113. package/dist/components/modalWraper/style.less +363 -363
  114. package/dist/components/modalWraper/utils.js.map +1 -1
  115. package/dist/components/notification/index.js +4 -4
  116. package/dist/components/notification/index.js.map +1 -1
  117. package/dist/components/notification/index.less +57 -57
  118. package/dist/components/overflowTip/index.js +15 -15
  119. package/dist/components/overflowTip/index.js.map +1 -1
  120. package/dist/components/overflowTip/style.less +66 -66
  121. package/dist/components/page/index.js.map +1 -1
  122. package/dist/components/page/index.less +25 -25
  123. package/dist/components/product/detail.js.map +1 -1
  124. package/dist/components/product/getCard.js +5 -5
  125. package/dist/components/product/getCard.js.map +1 -1
  126. package/dist/components/product/index.less +354 -354
  127. package/dist/components/progressState/EmptyAndErrorView.js.map +1 -1
  128. package/dist/components/progressState/ProgressState.js +10 -10
  129. package/dist/components/progressState/ProgressState.js.map +1 -1
  130. package/dist/components/progressState/index.js.map +1 -1
  131. package/dist/components/progressState/style.less +65 -65
  132. package/dist/components/scan/index.js.map +1 -1
  133. package/dist/components/scan/index.less +33 -33
  134. package/dist/components/select/index.js.map +1 -1
  135. package/dist/components/select/index.less +11 -11
  136. package/dist/components/settlement/asyncModal.js.map +1 -1
  137. package/dist/components/settlement/index.js.map +1 -1
  138. package/dist/components/settlement/settlement.js +5 -5
  139. package/dist/components/settlement/settlement.js.map +1 -1
  140. package/dist/components/settlement/settlement.less +1604 -1604
  141. package/dist/components/settlement/settlementStore.js +10 -10
  142. package/dist/components/settlement/settlementStore.js.map +1 -1
  143. package/dist/components/settlement/utils.js.map +1 -1
  144. package/dist/components/socket/index.js +11 -11
  145. package/dist/components/socket/index.js.map +1 -1
  146. package/dist/components/spin/index.js +6 -6
  147. package/dist/components/spin/index.js.map +1 -1
  148. package/dist/components/spin/spin-style.less +436 -436
  149. package/dist/components/test/index.js +3 -3
  150. package/dist/components/test/index.js.map +1 -1
  151. package/dist/components/ticon/iconfont/demo_index.html +4765 -4765
  152. package/dist/components/ticon/iconfont/iconfont.css +811 -811
  153. package/dist/components/ticon/iconfont/iconfont.svg +572 -572
  154. package/dist/components/ticon/index.js.map +1 -1
  155. package/dist/components/touchScroll/index.js +9 -9
  156. package/dist/components/touchScroll/index.js.map +1 -1
  157. package/dist/components/touchTable/AuthProcess.js.map +1 -1
  158. package/dist/components/touchTable/generateWater.js.map +1 -1
  159. package/dist/components/touchTable/index.js +9 -9
  160. package/dist/components/touchTable/index.js.map +1 -1
  161. package/dist/components/touchTable/index.less +189 -189
  162. package/dist/components/touchTable/utils.js.map +1 -1
  163. package/dist/demo/PopOverDemo.js.map +1 -1
  164. package/dist/index.js.map +1 -1
  165. package/dist/util/tools.js.map +1 -1
  166. package/locales/zh/tplus-components-touch.json +1 -1
  167. package/locales/zh-CN/tplus-components-touch.json +1 -1
  168. package/mocks/memberInfo.json +79 -79
  169. package/package.json +38 -38
  170. package/tsconfig.json +26 -26
@@ -1 +1 @@
1
- {"version":3,"sources":["tplus-components-touch/components/settlement/settlement.js"],"names":["TabPane","Settlement","observer","props","state","visible","czkVisible","djqVisible","jfdxVisible","currentIndex","connectCardStatus","connectCardError","amountChanged","type","isManualIntoAmount","isXianjin","changeToStorageData","IsCanToStorage","Storage","WipeChange","changeToStorgeValue","inputTarget2","inputChangeStorage","compoundHotkeysList","window","$","operationControl","control","map","key","toLocaleUpperCase","hotkeydebounced","hotkeydebouncedPayMode","currentInput","store","SettlementStore","resizeSettlementToolBtns","newStyle","isMemberStorePage","b","billingSettlementDocumnet","bWidth","offsetWidth","cWidth","firstChild","lastChild","childNodes","forEach","v","className","handleReadICard","readRfCard","handleCardonEntered","hasElectron","iCCardServer","updateInput","currentMode","paymode","member","exchangable","undefined","inputkey","input","value","Math","min","maxamount","setCurrentModeValue","inputJfdxAmount","balance","inputCzkAmount","bquick","id","parseFloat","amount","Message","error","setTimeout","handleCzkCancel","czkKeyboardOnClose","quickSettle","resolve","onValidate","then","result","init","context","onHandleAmount","dataSource","Code_02","storeInfo","dto","settleZero","PayStyle","hyczk","showCzkModal","handleSettle","handleGuestShow","showModal","setState","brefund","boriginReturn","viewModel","data","JSON","getCellValue","thePaymodes","m","checkModeDisabled","paymentType","setFocusAndSelectionMode","that","ModalWraper","confirm","title","content","onOk","onCancel","handleOk","e","handleCancel","data1","data2","onCancelSettle","cancelState","setInventoryFocus","clearInputStorageData","clean","append","setCurrentMode","_val","czkInput","focus","setSelectionRange","length","connectRfCard","handleCzkOk","loadCzk","mode","paymethodId","closeRfCard","calcMemberBalance","handleCzk","Keyboard","close","isHorizontalPad","doms","document","getElementsByClassName","getElementById","showDjqModal","djq","inputdjq","handleDjqOk","handleDjqCancel","djqs","checked","setCurrentFocusAndAddPay","showJfdxModal","jid","ID","djqmode","themode","IsRepelWithPoints","code","jfdx","handleJfdxOk","handleJfdxCancel","onTabsClick2","memberInfo","hasmember","Code","Name","omc","initData","warn","wx","zfb","smzf","checkScanDisabled","bdisabled","onTabsClick","paymodes","exchangeRate","forign","setCurrentFocusOnly","editModal","changeFocusAndAddPay","setFocusAndSelection","onDelPay","index","xianjin","ret","ret1","info","delPay","handleChange","target","amountMaxLength","parseInt","isNaN","changeValue","handleChangeToStorage","Idmember","getChangeToStorage","abs","receivable","resp","inputxianjinChangeStorage","innerHTML","changeInputStorageValue","handleInputChangeToStorage","val","max","onBlur","changeFocusOnly","onChangeToStorageBlur","onFocus","currentFocus","onFocusHack","appendCzkmode","bappend","djqChecked","q","calcDjqValue","addDjq","checkCoupon","czkdebounced","cancel","onHotKeyClick1","onHotKeyClickModal","onHotKeyClick2","onHotKeyEnter","notsettle","checkSettleDisabled","displayPayModeList","SaoMaPayMode","find","filter","paymodeOb","findHaveNoModlePayType","findModlePayBySplice","currenIndex","symbol","findIndex","endCurrentMode","item","endCurrentModeOb","startCurrentModeOb","settleUnReturn","__queryingModal","querySettleResult","destroy","Flag","setDtoID","settleSuccess","settleCanceled","clearVoucherData","calculationIsXianJin","received","charge","openCashBox","console","log","_this","showTwoScreen","getScreenType","flag","isHorizontalSunMi","localStore","get","shift","Value","params","step","screenType","sunMi_PresentationManager","sendMessageToSecondScreen","nativeMs","setIpcRendererMethod","onSettleSuccess","__loadingModal","onModalClose","isShowChangeTurn","__successModal","dtype","dt","guestshow_enable","guestshow_clear","guestshow_welcome","guestshow_collect","guestshow_refund","guestshow_change","other","replace","price","qty","total","inv","wel","HardwareAPI","sendDataCusDisp","dataType","args","promises","results","p","push","commit","handleUserInputs","isQuickPay","status","checkCharge","zeromode","value2","name","quickmode","inputConfirm","values","bTest","message","indexOf","reject","curmode","needPwd","inputPwd","validePwd","fKeyboardOnOk","paymethodeId","blur","fKeyboardOnClose","keyboardOnOk","keyboardOnClose","modal","onPressEnter","authCode","pwd","onPressEsc","maskClosable","keyboard","closable","width","isMobileEnvironment","inputTarget","open","getNewValue","isbtnDebouncedNext","btndebounced","btnDebounced","isProject","isLimit","totalProjectAmount","stores","memberProjectStore","Details","EffectiveDate","ExpirationDate","StorageAmount","Date","getTime","isCheckDate","CheckExpirationDate","IsSucceed","changeIsCheckDate","ErrorMsg","cancelable","okText","okType","onCzkChange","setCardNo","czkKeyboardOnOk","onDjqChange","isKeyBorad","debounced","djqKeyboardOnOk","djqKeyboardOnClose","onKeyboardChumoChange","mapFilterHidePayMode","newPayModes","isReturn","hasSMZF","theArr","t","xianjinChange","newValue","disabled","changeShowPopover","changeScanProduct","scanObj","startScan","onScanResult","el","setStateValue","submitHandler","onScanCzkResult","onScanDjqResult","getXianjinPayment","getXianjinBalance","getTurnPayment","getChangeTurn","onFocusChange","isStoredValueCard","zl","inputChangeStorage1","activeElement","select","getAttribute","PayIcon2","scan","xj","enabled","changeDecimalBuZero","number","bitNum","f_x","newBitNum","pow","round","s_x","toString","pos_decimal","paymodesCarouselList","carouselStart","CarouseOut","CarouselTp","Carousel","newParams","mapList","floor","modeList","modeIndex","renderToolbtn","loginInfo","ICCardServer","ICCardPassword","iCCardPassword","platform","env","constant","electron","bind","setTimer","initPaymodes","nextProps","cardPsw","cardSec","cardKm","hotkeyIndex","paymodeDisabled","paymodeSelected","checkThepaymode","PayIcon","omission","totalVariety","totalQuantity","quantityDetail","memberDisabled","isNullDate","isMinusAmount","totalTaxAmount","TotalTaxAmount","settle","_hasSMZF","quickPay","isQuick","productsIsEmpty","RetailDetails","moreToolbtns","pagination","spaceBetween","carouselStart2","quantity1","quantity2","quantity3","quantity4","sumQuantity","buyQuantity","returnQuantity","quantityPrecision","showAmount","sumRetailDetails","Quantity","r","i","iconclass","OnlinePaymentAmount","hotKey","hotKeyBindClass","maxHeight","body","clientHeight","hotKeyNotFilter","display","overchargesAmount","cardNo","onlineamount","TotalNonMemberDiscountAmount","TotalMemberDiscountAmount","onKeyboardChange","mindex","tm","sum","Add","CarouselFigure","keyCode","ref","errinfo","doorsill","bonusPoints","React","Component","contextTypes","PropTypes","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,UAAU,eAAKA,OAArB;;IAKMC,U,OADLC,mB;;;AAwBC;AAkBA,sBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AAAA,+IACXA,KADW;;AAAA,WAxCnBC,KAwCmB,GAxCX;AACNC,eAAS,KADH;AAENC,kBAAY,KAFN;AAGNC,kBAAY,KAHN;AAINC,mBAAa,KAJP;AAKNC,oBAAc,CALR;AAMNC,yBAAmB,KANb,EAMoB;AAC1BC,wBAAkB,EAPZ,EAOgB;AACtBC,qBAAe,KART;AASNC,YAAM,CATA;AAUNC,0BAAoB,gCAAY,oBAAZ,CAVd;AAWNC,iBAAW,KAXL;AAYNC,2BAAqB;AACnBC,wBAAgB,KADG;AAEnBC,iBAAS,CAFU;AAGnBC,oBAAY;AAHO,OAZf;AAiBNC,2BAAqB;AACnBC,sBAAc,CADK;AAEnBC,4BAAoB;AAFD,OAjBf,EAwCW;AAAA,WAjBnBC,mBAiBmB,GAjBG,CAACC,OAAOC,CAAP,CAASC,gBAAT,CAA0B,CAA1B,IAAgCF,OAAOC,CAAP,CAASC,gBAAT,CAA0B,CAA1B,EAA6BC,OAA7B,IAAwC,EAAxE,GAA8E,EAA/E,EAAmFC,GAAnF,CAAuF,UAACC,GAAD,EAAS;AACpH,aAAOA,IAAIC,iBAAJ,EAAP;AACD,KAFqB,CAiBH;AAAA,WAbnBC,eAamB,GAbD,IAaC;AAAA,WAZnBC,sBAYmB,GAZM,EAYN;AAAA,WAJnBC,YAImB,GAJJ,IAII;AAAA,WAFnBC,KAEmB,GAFX,IAAIC,yBAAJ,EAEW;;AAAA,WAgCnBC,wBAhCmB,GAgCQ,YAAM;AAAA,UACvBC,QADuB,GACV,OAAKH,KADK,CACvBG,QADuB;AAAA,UAEvBC,iBAFuB,GAED,OAAKnC,KAFJ,CAEvBmC,iBAFuB;;AAG/B,UAAIC,IAAI,OAAKC,yBAAb;AACA,UAAID,KAAKF,QAAL,IAAiB,CAACC,iBAAtB,EAAyC;AACvC,YAAIG,SAASF,EAAEG,WAAf;AACA,YAAIC,SAAS,CAAb;AACA,YAAIJ,EAAEK,UAAN,EAAkB;AAChBD,oBAAUJ,EAAEK,UAAF,CAAaF,WAAvB;AACD;AACD,YAAIH,EAAEM,SAAF,IAAeN,EAAEM,SAAF,CAAYC,UAA/B,EAA2C;AACzCP,YAAEM,SAAF,CAAYC,UAAZ,CAAuBC,OAAvB,CAA+B,aAAK;AAClCJ,sBAAUK,EAAEN,WAAZ;AACD,WAFD;AAGD;AACD,YAAIH,EAAEM,SAAN,EAAiB;AACf,cAAIJ,SAASE,MAAb,EAAqB;AACnBJ,cAAEM,SAAF,CAAYI,SAAZ,GAAwB,kBAAxB;AACD,WAFD,MAEO;AACLV,cAAEM,SAAF,CAAYI,SAAZ,GAAwB,MAAxB;AACD;AACF;AACF;AACF,KAvDkB;;AAAA,WAuGnBC,eAvGmB,GAuGD,YAAM;AACtB,aAAKC,UAAL;AACD,KAzGkB;;AAAA,WA2GnBC,mBA3GmB,GA2GG,YAAM;AAC1B,aAAKC,WAAL,KAAqB,IAArB,IAA6B,OAAKC,YAAL,KAAsB,CAAnD,IAAwD,OAAKH,UAAL,EAAxD;AACD,KA7GkB;;AAAA,WA+GnBI,WA/GmB,GA+GL,YAAM;AAAA,UACZC,WADY,GACI,OAAKtB,KAAL,CAAWuB,OADf,CACZD,WADY;;AAElB,UAAI,OAAKpD,KAAL,CAAWI,WAAX,IAA0BgD,WAA1B,IAAyCA,YAAYE,MAAZ,CAAmBC,WAAnB,KAAmCC,SAAhF,EAA2F;AACzF,eAAKC,QAAL,GAAgB,iBAAhB;AACA,eAAK,iBAAL,EAAwBC,KAAxB,CAA8BC,KAA9B,GAAsCP,eAAe,2BAAeQ,KAAKC,GAAL,CAAST,YAAYO,KAArB,EAA4BP,YAAYU,SAAxC,EAAmDV,YAAYE,MAAZ,CAAmBC,WAAtE,CAAf,CAArD;AACA,eAAKQ,mBAAL,CAAyB,OAAKC,eAAL,CAAqBN,KAArB,CAA2BC,KAApD,EAA2DC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBC,WAAnD,CAA3D;AACD,OAJD,MAIO,IAAI,OAAKvD,KAAL,CAAWE,UAAX,IAAyBkD,WAAzB,IAAwCA,YAAYO,KAAZ,IAAqB,CAA7D,IAAkEP,YAAYE,MAAZ,CAAmBW,OAAnB,KAA+BT,SAArG,EAAgH;AACrH,eAAKC,QAAL,GAAgB,gBAAhB;AACA,eAAK,gBAAL,EAAuBC,KAAvB,CAA6BC,KAA7B,GAAqC,2BAAeC,KAAKC,GAAL,CAAST,YAAYO,KAArB,EAA4BP,YAAYU,SAAxC,EAAmDV,YAAYE,MAAZ,CAAmBW,OAAtE,CAAf,CAArC;AACA,YAAMH,YAAYF,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAAlB;AACA,eAAKF,mBAAL,CAAyB,OAAKG,cAAL,CAAoBR,KAApB,CAA0BC,KAAnD,EAA0DG,SAA1D;AACA,YAAI,OAAKhC,KAAL,CAAWqC,MAAX,IAAqBf,YAAYE,MAAZ,CAAmBc,EAAxC,IAA8CC,WAAW,OAAKvC,KAAL,CAAWuB,OAAX,CAAmBiB,MAA9B,IAAwCD,WAAWP,SAAX,CAA1F,EAAiH;AAC/GS,4BAAQC,KAAR,CAAc,oBAAoB,2BAAeV,SAAf,CAApB,GAAgD,WAA9D;AACAW,qBAAW,YAAM;AACf,mBAAKC,eAAL;AACAD,uBAAW,YAAM;AAAE,qBAAKE,kBAAL;AAA2B,aAA9C,EAAgD,GAAhD;AACD,WAHD,EAGG,EAHH;AAID;AACF;AACF,KAlIkB;;AAAA,WAoInBC,WApImB,GAoIL,UAACnD,GAAD,EAAS;AACrB,wBAAQoD,OAAR,CAAgB,CAAC,OAAK9E,KAAL,CAAW+E,UAAZ,IAA0B,OAAK/E,KAAL,CAAW+E,UAAX,EAA1C,EAAmEC,IAAnE,CAAwE,kBAAU;AAChF,YAAIC,MAAJ,EAAY;AACV,iBAAKlD,KAAL,CAAWmD,IAAX,CAAgB,OAAKlF,KAAL,CAAWU,IAAX,IAAmB,CAAnB,GAAuB,IAAvB,GAA8B,OAAKyE,OAAnD,EAA4D,OAAKnF,KAAL,CAAWoF,cAAvE,EAAuF,OAAKpF,KAAL,CAAWqF,UAAX,CAAsBC,OAA7G,EAAsH,OAAKtF,KAAL,CAAWuF,SAAjI,EAA4I,IAA5I,EAAkJ,OAAKvF,KAAL,CAAWuE,MAA7J,EAAqK,OAAKvE,KAAL,CAAWU,IAAhL,EAAsL,OAAKV,KAAL,CAAWwF,GAAjM;AACA,cAAIjB,SAAS,OAAKxC,KAAL,CAAWuB,OAAX,CAAmBiB,MAAhC;AACA,cAAIA,UAAU,CAAd,EAAiB;AACf,mBAAKkB,UAAL;AACA;AACD;AACD,cAAI/D,OAAOgE,0BAASC,KAApB,EAA2B;AACzB,mBAAKC,YAAL;AACD,WAFD,MAEO;AACL,mBAAK7D,KAAL,CAAW8C,WAAX,CAAuBnD,GAAvB;AACA,mBAAKmE,YAAL,CAAkB,UAAlB;AACD;AACD,iBAAKC,eAAL,CAAqBvB,SAAS,CAAT,GAAa,CAAb,GAAiB,CAAtC,EAAyCA,MAAzC;AACD;AACF,OAhBD;AAiBD,KAtJkB;;AAAA,WAwJnBwB,SAxJmB,GAwJP,YAAM;AAChB;AACA,wBAAQjB,OAAR,CAAgB,CAAC,OAAK9E,KAAL,CAAW+E,UAAZ,IAA0B,OAAK/E,KAAL,CAAW+E,UAAX,EAA1C,EAAmEC,IAAnE,CAAwE,kBAAU;AAChF,YAAIC,MAAJ,EAAY;AACV,iBAAKlD,KAAL,CAAWmD,IAAX,CAAgB,OAAKlF,KAAL,CAAWU,IAAX,IAAmB,CAAnB,GAAuB,IAAvB,GAA8B,OAAKyE,OAAnD,EAA4D,OAAKnF,KAAL,CAAWoF,cAAvE,EAAuF,OAAKpF,KAAL,CAAWqF,UAAX,CAAsBC,OAA7G,EAAsH,OAAKtF,KAAL,CAAWuF,SAAjI,EAA4I,KAA5I,EAAmJ,OAAKvF,KAAL,CAAWuE,MAA9J,EAAsK,OAAKvE,KAAL,CAAWU,IAAjL,EAAuL,OAAKV,KAAL,CAAWwF,GAAlM;AACA,cAAIjB,SAAS,OAAKxC,KAAL,CAAWuB,OAAX,CAAmBiB,MAAhC;AACA,cAAIA,UAAU,CAAd,EAAiB;AACf,mBAAKkB,UAAL;AACA;AACD;AACD,iBAAKO,QAAL,CAAc,EAAE9F,SAAS,IAAX,EAAd;AACA,iBAAK4F,eAAL,CAAqBvB,SAAS,CAAT,GAAa,CAAb,GAAiB,CAAtC,EAAyCA,MAAzC;AACAG,qBAAW,YAAM;AAAA,+BACsB,OAAK3C,KAD3B;AAAA,gBACTuB,OADS,gBACTA,OADS;AAAA,gBACA2C,OADA,gBACAA,OADA;AAAA,gBACS/D,QADT,gBACSA,QADT;;AAEf,gBAAIgE,gBAAgB,OAAKf,OAAL,IAAgB,OAAKA,OAAL,CAAagB,SAA7B,IAA0C,OAAKhB,OAAL,CAAagB,SAAb,CAAuBC,IAAjE,IAAyEC,KAAKC,YAAL,CAAkB,OAAKnB,OAAL,CAAagB,SAAb,CAAuBC,IAAzC,EAA+C,kBAA/C,CAA7F;AACA,gBAAIG,cAAcrE,WAAW,sBAAQoB,QAAQiD,WAAhB,EAA6B,UAACC,CAAD,EAAO;AAAE,qBAAO,EAAE,OAAKC,iBAAL,CAAuBD,EAAEE,WAAzB,EAAsCT,OAAtC,EAA+CC,aAA/C,KAAiE5B,WAAWkC,EAAE5C,KAAb,KAAuB,CAA1F,CAAP;AAAsG,aAA5I,CAAX,GAA2JN,QAAQiD,WAArL;AACA,mBAAKI,wBAAL,CAA8BJ,WAA9B,EAA0C,CAAC,CAA3C;AACA,WALF,EAKI,GALJ;AAMD;AACF,OAjBD;AAkBD,KA5KkB;;AAAA,WA8KnBd,UA9KmB,GA8KN,YAAM;AACjB,UAAMmB,aAAN;AACAC,4BAAYC,OAAZ,CAAoB;AAClBhE,mBAAW,qBADO;AAElBiE,eAAO,IAFW;AAGlBC,iBAAS,gBAHS;AAIlBC,YAJkB,kBAIX;AACLL,eAAKf,YAAL,CAAkB,MAAlB;AACD,SANiB;AAOlBqB,gBAPkB,sBAOP,CAEV;AATiB,OAApB;AAWD,KA3LkB;;AAAA,WA6LnBC,QA7LmB,GA6LR,UAACC,CAAD,EAAO;AAChB,aAAKpB,QAAL,CAAc;AACZ9F,iBAAS;AADG,OAAd;AAGD,KAjMkB;;AAAA,WAmMnBmH,YAnMmB,GAmMJ,UAACD,CAAD,EAAO;AACpB,UAAIE,QAAQ;AACVxG,wBAAgB,KADN;AAEVC,iBAAS,CAFC;AAGVC,oBAAY;AAHF,OAAZ;AAKA,UAAIuG,QAAQ;AACVrG,sBAAc,CADJ;AAEVC,4BAAoB;AAFV,OAAZ;;AAKA,aAAK6E,QAAL,CAAc;AACZnF,6BAAqByG,KADT;AAEZrG,6BAAqBsG;AAFT,OAAd;AAIA,aAAKvH,KAAL,CAAWwH,cAAX,IAA6B,OAAKxH,KAAL,CAAWwH,cAAX,EAA7B;AACA,aAAKC,WAAL;AACA,aAAKC,iBAAL;AACD,KArNkB;;AAAA,WAsNnBD,WAtNmB,GAsNL,YAAM;AAClB,aAAK1F,KAAL,CAAW4F,qBAAX;AACA,aAAK5F,KAAL,CAAW6F,KAAX;AACA,aAAK5B,QAAL,CAAc;AACZ9F,iBAAS;AADG,OAAd;AAGD,KA5NkB;;AAAA,WA+NnB0F,YA/NmB,GA+NJ,UAACvB,EAAD,EAAKwD,MAAL,EAAgB;AAC7B,aAAK9F,KAAL,CAAW+F,cAAX,CAA0BzD,EAA1B,EAA8BqB,0BAASC,KAAvC,EAA8CkC,MAA9C;AACA,aAAKE,IAAL,GAAY,OAAKhG,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BO,KAA3C;AAF6B,UAGvBP,WAHuB,GAGP,OAAKtB,KAAL,CAAWuB,OAHJ,CAGvBD,WAHuB;;AAI7B,UAAMU,YAAYF,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAAlB;AACA,UAAI,OAAKnC,KAAL,CAAWqC,MAAX,IAAqBf,YAAYE,MAAZ,CAAmBc,EAAxC,IAA8CC,WAAW,OAAKvC,KAAL,CAAWuB,OAAX,CAAmBiB,MAA9B,IAAwCD,WAAWP,SAAX,CAA1F,EAAiH;AAC/GS,0BAAQC,KAAR,CAAc,oBAAoB,2BAAeV,SAAf,CAApB,GAAgD,WAA9D;AACD,OAFD,MAEO;AACL,eAAKiC,QAAL,CAAc;AACZ7F,sBAAY;AADA,SAAd;AAGD;AACDuE,iBAAW,YAAM;AACf,YAAI,CAACrB,YAAYE,MAAb,IAAuB,CAACF,YAAYE,MAAZ,CAAmBc,EAA/C,EAAmD;AACjD,iBAAK2D,QAAL,CAAcrE,KAAd,CAAoBsE,KAApB;AACD,SAFD,MAEO;AACL,cAAI,OAAK9D,cAAL,IAAuB,OAAKA,cAAL,CAAoBR,KAA/C,EAAsD;AACpD,mBAAKQ,cAAL,CAAoBR,KAApB,CAA0BsE,KAA1B;AACA,mBAAK9D,cAAL,CAAoBR,KAApB,CAA0BuE,iBAA1B,CAA4C,CAA5C,EAA+C,OAAK/D,cAAL,CAAoBR,KAApB,CAA0BC,KAA1B,CAAgCuE,MAA/E;AACD;AACF;AACF,OATD,EASG,GATH;AAUA,aAAKC,aAAL;AACD,KAtPkB;;AAAA,WAwPnBC,WAxPmB;AAAA,0FAwPL,iBAAOjB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA,oBAUP,OAAKrF,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BE,MAA/B,CAAsCc,EAV/B;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAWJ,OAAKtC,KAAL,CAAWuG,OAAX,CAAmB,OAAKN,QAAL,CAAcrE,KAAd,CAAoBC,KAAvC,CAXI;;AAAA;AAAA,oBAcP,OAAK7B,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BE,MAA/B,CAAsCc,EAd/B;AAAA;AAAA;AAAA;;AAeVG,kCAAQC,KAAR,CAAc,SAAd;AAfU;;AAAA;AAAA,qBAyBR,oBAAM,OAAK1C,KAAL,CAAWuB,OAAX,CAAmBiD,WAAzB,EAAsC,UAACgC,IAAD,EAAU;AAClD,yBAAOA,KAAKC,WAAL,IAAoB,OAAKzG,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BmF,WAAnD,IACLD,KAAK7B,WAAL,IAAoBhB,0BAASC,KADxB,IAEL4C,KAAKhF,MAAL,CAAYc,EAAZ,IAAkB,OAAKtC,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BE,MAA/B,CAAsCc,EAF1D;AAGD,iBAJG,CAzBQ;AAAA;AAAA;AAAA;;AA8BVG,kCAAQC,KAAR,CAAc,UAAd;AA9BU;;AAAA;AAAA,sBAiCR,OAAK1C,KAAL,CAAWqC,MAAX,IAAqB,OAAKrC,KAAL,CAAWuB,OAAX,CAAmBiB,MAAnB,IAA6B,OAAKxC,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BO,KAjCzE;AAAA;AAAA;AAAA;;AAkCVY,kCAAQC,KAAR,CAAc,cAAd;AAlCU;;AAAA;;AAsCZ,uBAAKuB,QAAL,CAAc;AACZ7F,8BAAY;AADA,iBAAd;AAGA,uBAAKsI,WAAL;AACA,uBAAK1G,KAAL,CAAWuB,OAAX,CAAmBoF,iBAAnB;AACA,uBAAKC,SAAL;;AA3CY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAxPK;;AAAA;AAAA;AAAA;AAAA;;AAAA,WAsSnBhE,eAtSmB,GAsSD,UAACyC,CAAD,EAAO;AACvB,UAAI,OAAKrF,KAAL,CAAWqC,MAAf,EAAuB;AACrB,eAAKpE,KAAL,CAAWwH,cAAX,IAA6B,OAAKxH,KAAL,CAAWwH,cAAX,EAA7B;AACA,eAAKzF,KAAL,CAAW6F,KAAX;AACD;AACD,aAAK5B,QAAL,CAAc;AACZ7F,oBAAY;AADA,OAAd;AAGA,aAAKsI,WAAL;AACAG,yBAASC,KAAT;AACA,aAAKnB,iBAAL;AACD,KAjTkB;;AAAA,WAoTnBA,iBApTmB,GAoTC,YAAM;AACxB,UAAI,CAAC,CAAC,OAAKoB,eAAX,EAA4B;AAC5B,UAAIC,OAAOC,SAASC,sBAAT,CAAgC,6BAAhC,CAAX;AACA,UAAItF,QAAQqF,SAASE,cAAT,CAAwB,cAAxB,CAAZ;AACA,UAAIvF,KAAJ,EAAWe,WAAW,YAAM;AAAE,YAAIqE,QAAQA,KAAKZ,MAAL,GAAc,CAA1B,EAA6B;AAAExE,gBAAMsE,KAAN;AAAe;AAAE,OAAnE,EAAqE,GAArE;AACZ,KAzTkB;;AAAA,WA4TnBkB,YA5TmB,GA4TJ,UAAC9E,EAAD,EAAQ;AACrB;AACA;AACA;AACA;AACA,aAAKtC,KAAL,CAAW+F,cAAX,CAA0BzD,EAA1B,EAA8BqB,0BAAS0D,GAAvC;AACA,aAAKpD,QAAL,CAAc;AACZ5F,oBAAY;AADA,OAAd;AAGAsE,iBAAW,YAAM;AACf,eAAK2E,QAAL,CAAc1F,KAAd,CAAoBsE,KAApB;AACD,OAFD,EAEG,GAFH;AAGD,KAxUkB;;AAAA,WA0UnBqB,WA1UmB,GA0UL,UAAClC,CAAD,EAAO;AACnB,UAAI,OAAKrF,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+B6C,aAAnC,EAAkD;AAChD,eAAKqD,eAAL,CAAqBnC,CAArB;AACA;AACD;AACD,UAAI,sBAAQ,OAAKrF,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BmG,IAAvC,EAA6C,UAACJ,GAAD,EAAS;AAAE,eAAOA,IAAIK,OAAX;AAAoB,OAA5E,EAA8EtB,MAA9E,IAAwF,CAA5F,EAA+F;AAC7F3D,0BAAQC,KAAR,CAAc,YAAd;AACA;AACD;AACD,UAAIH,WAAW,OAAKvC,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BO,KAA1C,IAAmDU,WAAW,OAAKvC,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BU,SAA1C,CAAvD,EAA6G;AAC3GS,0BAAQC,KAAR,CAAc,iBAAd;AACA;AACD;AACD,aAAKuB,QAAL,CAAc;AACZ5F,oBAAY;AADA,OAAd;AAGA,aAAKsJ,wBAAL,CAA8BhE,0BAAS0D,GAAvC;AACD,KA3VkB;;AAAA,WA6VnBG,eA7VmB,GA6VD,UAACnC,CAAD,EAAO;AACvB,aAAKpB,QAAL,CAAc;AACZ5F,oBAAY;AADA,OAAd;AAGD,KAjWkB;;AAAA,WAoWnBuJ,aApWmB,GAoWH,UAACC,GAAD,EAAS;AACvB,UAAIvF,KAAK,OAAKtC,KAAL,CAAWG,QAAX,GAAsB,CAAC,CAAvB,GAA2B0H,GAApC;AACA,UAAI,CAAC,OAAK7H,KAAL,CAAWwB,MAAZ,IAAsB,CAAC,OAAKxB,KAAL,CAAWwB,MAAX,CAAkBsG,EAA7C,EAAiD;AAC/CrF,0BAAQC,KAAR,CAAc,oBAAd;AACA;AACD;AACD,UAAIqF,UAAU,oBAAM,OAAK/H,KAAL,CAAWuB,OAAX,CAAmBiD,WAAzB,EAAsC,UAACwD,OAAD,EAAa;AAAE,eAAOA,QAAQrD,WAAR,IAAuBhB,0BAAS0D,GAAvC;AAA6C,OAAlG,CAAd;AACA,UAAIA,MAAMU,WAAW,oBAAMA,QAAQN,IAAd,EAAoB,UAACJ,GAAD,EAAS;AAAE,eAAO,CAACA,IAAIY,iBAAZ;AAA+B,OAA9D,CAArB;AACA,UAAIZ,GAAJ,EAAS;AACP5E,0BAAQC,KAAR,8BAAqB2E,IAAIa,IAAzB;AACA;AACD;AACD,aAAKlI,KAAL,CAAW+F,cAAX,CAA0BzD,EAA1B,EAA8BqB,0BAASwE,IAAvC;AACA,aAAKnC,IAAL,GAAY,OAAKhG,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BO,KAA3C;AACA,aAAKoC,QAAL,CAAc;AACZ3F,qBAAa;AADD,OAAd;AAGAqE,iBAAW,YAAM;AACf,eAAKT,eAAL,CAAqBN,KAArB,CAA2BsE,KAA3B;AACA,eAAKhE,eAAL,CAAqBN,KAArB,CAA2BuE,iBAA3B,CAA6C,CAA7C,EAAgD,OAAKjE,eAAL,CAAqBN,KAArB,CAA2BC,KAA3B,CAAiCuE,MAAjF;AACD,OAHD,EAGG,GAHH;AAID,KAzXkB;;AAAA,WA2XnBgC,YA3XmB,GA2XJ,UAAC/C,CAAD,EAAO;AACpB,aAAKpB,QAAL,CAAc;AACZ3F,qBAAa;AADD,OAAd;AAGA,aAAKsI,SAAL;AACD,KAhYkB;;AAAA,WAkYnByB,gBAlYmB,GAkYA,UAAChD,CAAD,EAAO;AACxB,aAAKpB,QAAL,CAAc;AACZ3F,qBAAa;AADD,OAAd;AAGD,KAtYkB;;AAAA,WAwYnBgK,YAxYmB,GAwYJ,UAAC/G,OAAD,EAAU2C,OAAV,EAAmB8D,OAAnB,EAA4BrI,GAA5B,EAAoC;AACjD4B,cAAQD,WAAR,GAAsB,IAAtB;AACA,cAAQ3B,GAAR;AACE,aAAKgE,0BAASC,KAAd;AACE,iBAAKC,YAAL,CAAkB,CAAC,CAAnB;AACA;AACF,aAAKF,0BAASwE,IAAd;AACE,iBAAKP,aAAL,CAAmB,CAAC,CAApB;AACA;AACF,aAAKjE,0BAAS0D,GAAd;AACE,cAAIkB,aAAa,OAAKvI,KAAL,IAAc,OAAKA,KAAL,CAAWwB,MAA1C;AACA,cAAIgH,YAAaD,WAAWT,EAAX,IAAiBS,WAAWE,IAA5B,IAAoCF,WAAWG,IAAhD,GAAwD,IAAxD,GAA+D,KAA/E;AACA,cAAIC,MAAM,OAAK1K,KAAL,CAAW2K,QAAX,CAAoB,wBAApB,CAAV;AACA,cAAID,OAAO,CAACH,SAAZ,EAAuB;AACrB/F,8BAAQoG,IAAR,CAAa,mBAAb;AACA;AACD;AACD,iBAAKzB,YAAL,CAAkB,CAAC,CAAnB;AACA;AACF,aAAKzD,0BAASmF,EAAd;AACE,cAAI,oBAAMvH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAOA,KAAK7B,WAAL,KAAqBhB,0BAASoF,GAA9B,IAAqCvC,KAAK7B,WAAL,KAAqBhB,0BAASqF,IAA1E;AAAgF,WAAvH,CAAJ,EAA8H;AAC5HvG,8BAAQC,KAAR,CAAc,yBAAd;AACD,WAFD,MAEO;AACL,mBAAKiF,wBAAL,CAA8BhI,GAA9B;AACD;AACD;AACF,aAAKgE,0BAASoF,GAAd;AACE,cAAI,oBAAMxH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAOA,KAAK7B,WAAL,KAAqBhB,0BAASmF,EAA9B,IAAoCtC,KAAK7B,WAAL,KAAqBhB,0BAASqF,IAAzE;AAA+E,WAAtH,CAAJ,EAA6H;AAC3HvG,8BAAQC,KAAR,CAAc,0BAAd;AACD,WAFD,MAEO;AACL,mBAAKiF,wBAAL,CAA8BhI,GAA9B;AACD;AACD;AACF,aAAKgE,0BAASqF,IAAd;AACE,cAAI,oBAAMzH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAOA,KAAK7B,WAAL,KAAqBhB,0BAASoF,GAA9B,IAAqCvC,KAAK7B,WAAL,KAAqBhB,0BAASmF,EAA1E;AAA8E,WAArH,CAAJ,EAA4H;AAC1HrG,8BAAQC,KAAR,CAAc,2BAAd;AACD,WAFD,MAEO;AACL,mBAAKiF,wBAAL,CAA8BhI,GAA9B;AACD;AACD;AACF;AACE,iBAAKgI,wBAAL,CAA8BhI,GAA9B;AACA;AAxCJ;AA0CD,KApbkB;;AAAA,WAsbnBsJ,iBAtbmB,GAsbC,UAACtJ,GAAD,EAAS;AAAA,0BACG,OAAKK,KADR;AAAA,UACnBuB,OADmB,iBACnBA,OADmB;AAAA,UACVpB,QADU,iBACVA,QADU;;AAE3B,UAAI+I,YAAY,KAAhB;AACA,UAAI,CAAC/I,QAAL,EAAe;AACb,eAAO+I,SAAP;AACD;AACD,cAAQvJ,GAAR;AACE,aAAKgE,0BAASmF,EAAd;AACE,cAAI,oBAAMvH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAO,CAACA,KAAK7B,WAAL,KAAqBhB,0BAASoF,GAA9B,IAAqCvC,KAAK7B,WAAL,KAAqBhB,0BAASqF,IAApE,KAA6EzG,WAAWiE,KAAK3E,KAAhB,KAA0B,CAA9G;AAAiH,WAAxJ,CAAJ,EAA+J;AAC7JqH,wBAAY,IAAZ;AACD;AACD;AACF,aAAKvF,0BAASoF,GAAd;AACE,cAAI,oBAAMxH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAO,CAACA,KAAK7B,WAAL,KAAqBhB,0BAASmF,EAA9B,IAAoCtC,KAAK7B,WAAL,KAAqBhB,0BAASqF,IAAnE,KAA4EzG,WAAWiE,KAAK3E,KAAhB,KAA0B,CAA7G;AAAgH,WAAvJ,CAAJ,EAA8J;AAC5JqH,wBAAY,IAAZ;AACD;AACD;AACF,aAAKvF,0BAASqF,IAAd;AACE,cAAI,oBAAMzH,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,mBAAO,CAACA,KAAK7B,WAAL,KAAqBhB,0BAASoF,GAA9B,IAAqCvC,KAAK7B,WAAL,KAAqBhB,0BAASmF,EAApE,KAA2EvG,WAAWiE,KAAK3E,KAAhB,KAA0B,CAA5G;AAA+G,WAAtJ,CAAJ,EAA6J;AAC3JqH,wBAAY,IAAZ;AACD;AACD;AAfJ;AAiBA,aAAOA,SAAP;AACD,KA9ckB;;AAAA,WAgdnBC,WAhdmB,GAgdL,UAACxJ,GAAD,EAAS;AAAA,0BACuB,OAAKK,KAD5B;AAAA,UACbuB,OADa,iBACbA,OADa;AAAA,UACJ2C,OADI,iBACJA,OADI;AAAA,UACKC,aADL,iBACKA,aADL;;AAErB,UAAI,OAAKO,iBAAL,CAAuB/E,GAAvB,EAA4BuE,OAA5B,EAAqCC,aAArC,CAAJ,EAAyD;AACvD;AACD;AACD,UAAI6D,UAAU,oBAAMzG,QAAQ6H,QAAd,EAAwB,EAAE,eAAezJ,GAAjB,EAAxB,CAAd;AACA,UAAIqI,QAAQqB,YAAR,IAAwB,CAA5B,EAA+B;AAC7B,YAAIC,SAAS,oBAAM/H,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,iBAAOA,KAAK6C,YAAL,IAAqB,CAArB,IAA0B7C,KAAK7B,WAAL,IAAoBhF,GAArD;AAA0D,SAAjG,CAAb;AACA,YAAI2J,MAAJ,EAAY;AACV7G,4BAAQC,KAAR,CAAc,YAAd;AACA;AACD;AACF;AACDsF,gBAAU,oBAAMzG,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAAE,eAAOA,KAAK7B,WAAL,KAAqBhF,GAA5B;AAAiC,OAAxE,CAAV;AACA,UAAMkF,aAAN;AACA,UAAImD,OAAJ,EAAa;AACX,eAAKuB,mBAAL,CAAyB5J,GAAzB;AACA;AACD,OAHD,MAGO,IAAI4B,QAAQiD,WAAR,CAAoB4B,MAApB,IAA8B,CAAlC,EAAqC;AAC1C,gBAAQ,OAAKnI,KAAL,CAAW2K,QAAX,CAAoB,UAApB,CAAR;AACE,eAAK,MAAL;AACEnG,8BAAQC,KAAR,CAAc,iBAAd;AACA;AACF,eAAK,MAAL;AACEoC,kCAAYC,OAAZ,CAAoB;AAClBhE,yBAAW,qBADO;AAElBiE,qBAAO,MAFW;AAGlBC,uBAAS,gBAHS;AAIlBC,kBAJkB,kBAIX;AACLL,qBAAKyD,YAAL,CAAkB/G,OAAlB,EAA2B2C,OAA3B,EAAoC8D,OAApC,EAA6CrI,GAA7C;AACD,eANiB;AAOlBwF,sBAPkB,sBAOP,CACV;AARiB,aAApB;AAUA;AACF;AACE,mBAAKmD,YAAL,CAAkB/G,OAAlB,EAA2B2C,OAA3B,EAAoC8D,OAApC,EAA6CrI,GAA7C;AACA;AAlBJ;AAoBD,OArBM,MAqBA;AACL,eAAK2I,YAAL,CAAkB/G,OAAlB,EAA2B2C,OAA3B,EAAoC8D,OAApC,EAA6CrI,GAA7C;AACD;AACF,KA1fkB;;AAAA,WA4fnB6J,SA5fmB,GA4fP,UAAClH,EAAD,EAAK3D,IAAL,EAAWwF,aAAX,EAA6B;AACvC,aAAKF,QAAL,CAAc,EAAE1F,cAAc+D,EAAhB,EAAd;AACA,cAAQ3D,IAAR;AACE,aAAKgF,0BAASC,KAAd;AACE,WAACO,aAAD,IAAkB,OAAKN,YAAL,CAAkBvB,EAAlB,CAAlB;AACA;AACF,aAAKqB,0BAASwE,IAAd;AACE,WAAChE,aAAD,IAAkB,OAAKyD,aAAL,CAAmBtF,EAAnB,CAAlB;AACA;AACF,aAAKqB,0BAAS0D,GAAd;AACE,iBAAKD,YAAL,CAAkB9E,EAAlB;AACA;AATJ;AAWD,KAzgBkB;;AAAA,WA2gBnBqF,wBA3gBmB,GA2gBQ,UAAChI,GAAD,EAAS;AAClC,aAAKK,KAAL,CAAWyJ,oBAAX,CAAgC9J,GAAhC;AACA,UAAI,OAAKK,KAAL,CAAWqC,MAAf,EAAuB;AACrB,eAAKyB,YAAL,CAAkB,UAAlB;AACD,OAFD,MAEO;AACL,eAAK4F,oBAAL,CAA0B/J,GAA1B;AACD;AACF,KAlhBkB;;AAAA,WAohBnBgK,QAphBmB,GAohBR,UAACC,KAAD,EAAQzF,aAAR,EAAuBxF,IAAvB,EAAgC;AACzC,UAAIA,SAASgF,0BAASkG,OAAtB,EAA+B;AAC7B,YAAIC,MAAM;AACR/K,0BAAgB,KADR;AAERC,mBAAS,CAFD;AAGRC,sBAAY;AAHJ,SAAV;AAKA,YAAI8K,OAAM;AACR5K,wBAAc,CADN;AAERC,8BAAoB;AAFZ,SAAV;AAIA,eAAK6E,QAAL,CAAc;AACZnF,+BAAqBgL,GADT;AAEZ5K,+BAAqB6K;AAFT,SAAd;AAID;AACD,UAAI5F,kBAAkBxF,QAAQgF,0BAASC,KAAjB,IAA0BjF,QAAQgF,0BAAS0D,GAA3C,IAAkD1I,QAAQgF,0BAASwE,IAArF,CAAJ,EAAgG;AAC9F1F,0BAAQuH,IAAR,CAAa,mBAAb;AACD,OAFD,MAEO;AACL,eAAKhK,KAAL,CAAWiK,MAAX,CAAkBL,KAAlB;AACD;AACF,KAziBkB;;AAAA,WA2iBnBM,YA3iBmB,GA2iBJ,UAACN,KAAD,EAAQvE,CAAR,EAAc;AAC3B,UAAItF,eAAesF,EAAE8E,MAArB;AACA,UAAIC,kBAAkBC,SAAS,OAAKpM,KAAL,CAAW2K,QAAX,CAAoB,iBAApB,KAA0C,EAAnD,CAAtB;AACA,UAAI,CAAC0B,MAAMjF,EAAE8E,MAAF,CAAStI,KAAf,CAAD,IAA0BwD,EAAE8E,MAAF,CAAStI,KAAT,IAAkB,GAAhD,EAAqD;AACnD,YAAIwD,EAAE8E,MAAF,CAAStI,KAAT,CAAeuE,MAAf,IAAyBgE,eAA7B,EAA8C;AAC5C,iBAAKpK,KAAL,CAAWuK,WAAX,CAAuBX,KAAvB,EAA8BvE,EAAE8E,MAAF,CAAStI,KAAvC,EAA8C,KAA9C;AACD;AACF;AACF,KAnjBkB;;AAAA,WAqjBnB2I,qBArjBmB;AAAA,2FAqjBK,kBAAOZ,KAAP,EAAcvE,CAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAClBtF,4BADkB,GACHsF,EAAE8E,MADC;AAElBC,+BAFkB,GAEAC,SAAS,OAAKpM,KAAL,CAAW2K,QAAX,CAAoB,iBAApB,KAA0C,EAAnD,CAFA;;AAGtB,oBAAI,CAAC0B,MAAMjF,EAAE8E,MAAF,CAAStI,KAAf,CAAD,IAA0BwD,EAAE8E,MAAF,CAAStI,KAAT,IAAkB,GAAhD,EAAqD;AACnD,sBAAIwD,EAAE8E,MAAF,CAAStI,KAAT,CAAeuE,MAAf,IAAyBgE,eAA7B,EAA8C;AAC5C,2BAAKpK,KAAL,CAAWuK,WAAX,CAAuBX,KAAvB,EAA8BvE,EAAE8E,MAAF,CAAStI,KAAvC,EAA8C,KAA9C;AACD;AACF;AACKN,uBARgB,GAQL,OAAKvB,KARA,CAQhBuB,OARgB;;AAAA,qBASlB,OAAKvB,KAAL,CAAWyD,GAAX,CAAegH,QATG;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAUH,OAAKC,kBAAL,CAAwB,2BAAe5I,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAAxB,CAVG;;AAAA;AAUhBC,oBAVgB;;AAWpB;AACA,uBAAK5G,QAAL,CAAc;AACZnF,uCAAqB+L;AADT,iBAAd;AAGA,oBAAIA,KAAK9L,cAAT,EAAyB;AACvB;AACA,sBAAI8L,KAAK7L,OAAL,GAAe,CAAf,IAAoB6L,KAAK7L,OAAL,KAAgB,CAAxC,EAA2C;AACzC;AACA,2BAAKI,kBAAL,KAA4B,OAAKA,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAe,CAAf,CAA5D;AACA,2BAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejJ,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAA3C;AACA,2BAAK5K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,IAA2B,OAAKA,kBAAL,CAAwByC,KAAhI;AACD,mBALD,MAKO;AACL,2BAAKzC,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAegJ,KAAK7L,OAApB,CAAhC;AACA,2BAAK8L,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAe,CAAf,CAA3C;AACA,2BAAK/K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACD;AACG3C,qCAZmB,GAYG;AACxBC,kCAAc,OAAK2L,yBAAL,CAA+BC,SADrB;AAExB3L,wCAAoB,OAAKA,kBAAL,IAA2B,OAAKA,kBAAL,CAAwByC;AAF/C,mBAZH;;AAgBvB,yBAAKoC,QAAL,CAAc;AACZ/E,yCAAqBA;AADT,mBAAd;AAGD;;AAlCmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OArjBL;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA2lBnB+L,0BA3lBmB,GA2lBU,YAAM,CAElC,CA7lBkB;;AAAA,WA+lBnBhJ,mBA/lBmB,GA+lBG,UAACiJ,GAAD,EAAMC,GAAN,EAAc;AAClC,UAAItJ,QAAQqJ,GAAZ;AACA,UAAId,kBAAkBC,SAAS,OAAKpM,KAAL,CAAW2K,QAAX,CAAoB,iBAApB,KAA0C,EAAnD,CAAtB;AACA,UAAI0B,MAAMY,GAAN,KAAcA,QAAQ,GAA1B,EAA+B;AAC7BrJ,gBAAQ,OAAKmE,IAAb;AACD,OAFD,MAEO,IAAI,CAAC,OAAKhG,KAAL,CAAWkE,OAAZ,IAAuB,CAACoG,MAAMY,GAAN,CAAxB,IAAsC3I,WAAW2I,GAAX,KAAmB,CAA7D,EAAgE;AACrErJ,gBAAQ,OAAKmE,IAAb;AACD,OAFM,MAEA,IAAInE,MAAMuE,MAAN,GAAegE,eAAnB,EAAoC;AACzCvI,gBAAQ,OAAKmE,IAAb;AACD,OAFM,MAEA;AACL,eAAKA,IAAL,GAAYkF,GAAZ;AACD;AACD,aAAK,OAAKvJ,QAAV,EAAoBC,KAApB,CAA0BC,KAA1B,GAAkCA,KAAlC;AACA,aAAK7B,KAAL,CAAWuB,OAAX,CAAmBU,mBAAnB,CAAuCJ,KAAvC,EAA8CsJ,GAA9C;AACD,KA7mBkB;;AAAA,WA+mBnBC,MA/mBmB,GA+mBV,UAACxB,KAAD,EAAQvE,CAAR,EAAc;AACrB,aAAKtF,YAAL,GAAoB,IAApB;AACA,aAAKC,KAAL,CAAWqL,eAAX,CAA2B,CAAC,CAA5B;AACA,aAAKrL,KAAL,CAAWuK,WAAX,CAAuBX,KAAvB,EAA8BvE,EAAE8E,MAAF,CAAStI,KAAT,IAAkB,GAAlB,GAAwB,CAAxB,GAA4BwD,EAAE8E,MAAF,CAAStI,KAAnE,EAA0E,IAA1E;AACD,KAnnBkB;;AAAA,WAqnBnByJ,qBArnBmB,GAqnBK,UAACjG,CAAD,EAAO,CAE9B,CAvnBkB;;AAAA,WAynBnBkG,OAznBmB,GAynBT,UAAC3B,KAAD,EAAQpD,IAAR,EAAcjF,OAAd,EAAuB8D,CAAvB,EAA6B;AACrC,aAAKtF,YAAL,GAAoBsF,EAAE8E,MAAtB;AACA,aAAKlG,QAAL,CAAc,EAAE1F,cAAcqL,KAAhB,EAAd;AACA,UAAIpD,KAAK7B,WAAL,IAAoBpD,QAAQiK,YAAhC,EAA8C;AAC9C,aAAKjC,mBAAL,CAAyB/C,KAAK7B,WAA9B;AACD,KA9nBkB;;AAAA,WAioBnB8G,WAjoBmB,GAioBJ,UAAC7B,KAAD,EAAQpD,IAAR,EAAcjF,OAAd,EAAuB8D,CAAvB,EAA6B;AAC1C,aAAKtF,YAAL,GAAoBsF,EAAE8E,MAAtB;AACA,aAAKlG,QAAL,CAAc,EAAE1F,cAAcqL,KAAhB,EAAd;AACA,UAAIpD,KAAK7B,WAAL,IAAoBpD,QAAQiK,YAAhC,EAA8C;AAC9C,aAAKxL,KAAL,CAAWqL,eAAX,CAA2B7E,KAAK7B,WAAhC;AACD,KAtoBkB;;AAAA,WAwoBnB4E,mBAxoBmB,GAwoBG,UAAC5J,GAAD,EAAS;AAC7B,aAAKK,KAAL,CAAWqL,eAAX,CAA2B1L,GAA3B;AACA,aAAK+J,oBAAL,CAA0B/J,GAA1B;AACD,KA3oBkB;;AAAA,WA6oBnB+L,aA7oBmB,GA6oBH,UAACvH,aAAD,EAAmB;AACjC,UAAIA,aAAJ,EAAmB;AACjB1B,0BAAQuH,IAAR,CAAa,wBAAb;AACA;AACD;AACD,UAAI2B,UAAU,IAAd;AALiC,0BAMK,OAAK3L,KANV;AAAA,UAMzBuB,OANyB,iBAMzBA,OANyB;AAAA,UAMhBpB,QANgB,iBAMhBA,QANgB;AAAA,UAMNqB,MANM,iBAMNA,MANM;;AAOjC,UAAIrB,YAAYqB,OAAOsG,EAAnB,IAAyB,yBAAWvG,QAAQiD,WAAnB,EAAgC,UAACgC,IAAD,EAAU;AAAE,eAAOA,KAAK7B,WAAL,KAAqBhB,0BAASC,KAA9B,IAAuC4C,KAAKhF,MAAL,CAAYc,EAAZ,IAAkBd,OAAOsG,EAAvE;AAA2E,OAAvH,KAA4H,CAAC,CAA1J,EAA6J;AAC3J6D,kBAAU,KAAV;AACD;AACD,aAAK9H,YAAL,CAAkB,CAAC,CAAnB,EAAsB8H,OAAtB;AACD,KAxpBkB;;AAAA,WA0pBnBC,UA1pBmB,GA0pBN,UAACC,CAAD,EAAO;AAClB,UAAI,OAAK7L,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+B6C,aAAnC,EAAkD;AAChD1B,0BAAQuH,IAAR,CAAa,gBAAb;AACA;AACD;AACD,aAAKhK,KAAL,CAAWuB,OAAX,CAAmBuK,YAAnB,CAAgCD,CAAhC;AACD,KAhqBkB;;AAAA,WAkqBnBE,MAlqBmB,GAkqBV,YAAM;AACb;AACA,UAAMjL,IAAI,oBAAM,OAAKwG,QAAL,CAAc1F,KAAd,CAAoBC,KAA1B,CAAV;AACA,UAAIf,MAAM,EAAV,EAAc;AACZ;AACD;AACD,aAAKd,KAAL,CAAWgM,WAAX,CAAuBlL,CAAvB,EAA0BmC,IAA1B,CAA+B,YAAM;AACnC,eAAKqE,QAAL,CAAc1F,KAAd,CAAoBC,KAApB,GAA4B,EAA5B;AACA,eAAKyF,QAAL,CAAc1F,KAAd,CAAoBsE,KAApB;AACD,OAHD;AAKD,KA7qBkB;;AAAA,WA+qBnBK,OA/qBmB,GA+qBT,UAACzF,CAAD,EAAO;AACf,UAAI,OAAKmL,YAAT,EAAuB;AACrB;AACD;AACD,aAAKA,YAAL,GAAoB,wBAAU,YAAM;AAClC,eAAKjM,KAAL,CAAWuG,OAAX,CAAmBzF,CAAnB;AACD,OAFmB,EAEjB,IAFiB,EAEX;AACP,mBAAW,IADJ;AAEP,oBAAY;AAFL,OAFW,CAApB;AAMA,aAAKmL,YAAL;AACAtJ,iBAAW,YAAM;AACf,eAAKsJ,YAAL,CAAkBC,MAAlB;AACA,eAAKD,YAAL,GAAoB,IAApB;AACD,OAHD,EAGG,IAHH;AAID,KA9rBkB;;AAAA,WAgsBnBE,cAhsBmB,GAgsBF,UAAC3F,IAAD,EAAOoD,KAAP,EAAczF,aAAd,EAAgC;AAC/C,UAAI,OAAKrE,sBAAL,IAA+B0G,IAAnC,EAAyC;AACvC;AACD;AACD,UAAI,OAAK3G,eAAT,EAA0B;AACxB,eAAKA,eAAL,CAAqBqM,MAArB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACD;AACD,aAAKA,eAAL,GAAuB,wBAAU,YAAM;AACrC,eAAKC,sBAAL,GAA8B0G,IAA9B;AACA,eAAK4F,kBAAL,CAAwB5F,IAAxB,EAA8BoD,KAA9B,EAAqCzF,aAArC;AACD,OAHsB,EAGpB,GAHoB,EAGf;AACN,mBAAW,IADL;AAEN,oBAAY;AAFN,OAHe,CAAvB;AAOA,aAAKtE,eAAL;AACA8C,iBAAW,YAAM;AACf,eAAK9C,eAAL,CAAqBqM,MAArB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACA,eAAKC,sBAAL,GAA8B,EAA9B;AACD,OAJD,EAIG,IAJH;AAKD,KArtBkB;;AAAA,WAutBnBsM,kBAvtBmB,GAutBE,UAAC5F,IAAD,EAAOoD,KAAP,EAAczF,aAAd,EAAgC;AAAA,UAC7CD,OAD6C,GACjC,OAAKlE,KAD4B,CAC7CkE,OAD6C;;AAEnD,UAAI,OAAKQ,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,CAAJ,EAAsE;AACpE;AACD;AACD,UAAIqC,KAAK7B,WAAL,IAAoBhB,0BAASC,KAAjC,EAAwC;AACtC,eAAK8H,aAAL,CAAmBvH,aAAnB;AACD,OAFD,MAEO;AACL,eAAKqF,SAAL,CAAeI,KAAf,EAAsBpD,KAAK7B,WAA3B,EAAwCR,aAAxC;AACD;AACF,KAjuBkB;;AAAA,WAmuBnBkI,cAnuBmB,GAmuBF,UAACzC,KAAD,EAAQpD,IAAR,EAAcjF,OAAd,EAAuB8D,CAAvB,EAA6B;AAC5C,UAAI,OAAKvF,sBAAL,IAA+B0G,IAAnC,EAAyC;AACvC;AACD;AACD,UAAI,OAAK3G,eAAT,EAA0B;AACxB,eAAKA,eAAL,CAAqBqM,MAArB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACD;AACD,aAAKA,eAAL,GAAuB,wBAAU,YAAM;AACrC,eAAKC,sBAAL,GAA8B0G,IAA9B;AACA,eAAK+E,OAAL,CAAa3B,KAAb,EAAoBpD,IAApB,EAA0BjF,OAA1B,EAAmC8D,CAAnC;AACD,OAHsB,EAGpB,GAHoB,EAGf;AACN,mBAAW,IADL;AAEN,oBAAY;AAFN,OAHe,CAAvB;AAOA,aAAKxF,eAAL;AACA8C,iBAAW,YAAM;AACf,eAAK9C,eAAL,CAAqBqM,MAArB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACA,eAAKC,sBAAL,GAA8B,EAA9B;AACD,OAJD,EAIG,IAJH;AAKD,KAxvBkB;;AAAA,WA0vBnBwM,aA1vBmB,GA0vBH,UAACjH,CAAD,EAAIkH,SAAJ,EAAkB;AAAA,0BACK,OAAKvM,KADV;AAAA,UAC1BuB,OAD0B,iBAC1BA,OAD0B;AAAA,UACjB2C,OADiB,iBACjBA,OADiB;AAAA,UACR/D,QADQ,iBACRA,QADQ;;;AAGhC,UAAI,OAAKN,eAAT,EAA0B;AACxB,eAAKA,eAAL,CAAqBqM,MAArB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACD;AACD,aAAKA,eAAL,GAAuB,wBAAU,YAAM;AACrC,YAAIsE,gBAAgB,OAAKf,OAAL,IAAgB,OAAKA,OAAL,CAAagB,SAA7B,IAA0C,OAAKhB,OAAL,CAAagB,SAAb,CAAuBC,IAAjE,IAAyEC,KAAKC,YAAL,CAAkB,OAAKnB,OAAL,CAAagB,SAAb,CAAuBC,IAAzC,EAA+C,kBAA/C,CAA7F;AACA,YAAIG,cAAcrE,WAAW,sBAAQoB,QAAQiD,WAAhB,EAA6B,UAACC,CAAD,EAAO;AAAE,iBAAO,EAAE,OAAKC,iBAAL,CAAuBD,EAAEE,WAAzB,EAAsCT,OAAtC,EAA+CC,aAA/C,KAAiE5B,WAAWkC,EAAE5C,KAAb,KAAuB,CAA1F,CAAP;AAAsG,SAA5I,CAAX,GAA2JN,QAAQiD,WAArL;AACA;AACA,eAAK1E,sBAAL,GAA8ByB,OAA9B;AACA,YAAI,CAACgL,SAAD,IAAc,CAAC,OAAKC,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CAAnB,EAAmE;AACjE,iBAAKV,YAAL;AACD,SAFD,MAEO,IAAI,CAACU,eAAe,EAAhB,EAAoB4B,MAApB,GAA6B,CAAjC,EAAoC;AACzC,iBAAKxB,wBAAL,CAA8BJ,WAA9B,EAA0C,OAAKtG,KAAL,CAAWK,YAArD;AACD;AACF,OAVsB,EAUpB,GAVoB,EAUf;AACN,mBAAW,IADL;AAEN,oBAAY;AAFN,OAVe,CAAvB;AAcA,aAAKsB,eAAL;AACA8C,iBAAW,YAAM;AACf,eAAK9C,eAAL,IAAwB,OAAKA,eAAL,CAAqBqM,MAArB,EAAxB;AACA,eAAKrM,eAAL,GAAuB,IAAvB;AACA,eAAKC,sBAAL,GAA8B,EAA9B;AACD,OAJD,EAIG,IAJH;AAKD,KArxBkB;;AAAA,WAwxBnB8E,wBAxxBmB,GAwxBQ,UAACJ,WAAD,EAAajG,YAAb,EAA8B;;AAEvD,UAAIkO,gEAAyBjI,WAAzB,EAAJ;AACA;AACA,UAAMkI,eAAeD,mBAAmBE,IAAnB,CAAyB;AAAA,eAASnG,KAAK7B,WAAL,IAAoBhB,0BAASqF,IAAtC;AAAA,OAAzB,CAArB;AACA;AACA,UAAG0D,YAAH,EAAgB;AACd;AACAD,6BAAqBA,mBAAmBG,MAAnB,CAA2B;AAAA,iBAAQpG,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAA7B,IAAoCvC,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAAzE;AAAA,SAA3B,CAArB;AACD;AACD;AACA,UAAI+D,YAAY,OAAKC,sBAAL,CAA4BL,kBAA5B,EAA+ClO,YAA/C,CAAhB;AACA,UAAGsO,SAAH,EAAa;AACX;AACA;AACD;AACF,KAxyBkB;;AAAA,WAkzBnBE,oBAlzBmB,GAkzBI,UAACvI,WAAD,EAAawI,WAAb,EAAyBC,MAAzB,EAAmC;AACxD,UAAIC,YAAYF,WAAhB;AACA,UAAMG,iBAAiB3I,YAAYmI,IAAZ,CAAiB,UAACnG,IAAD,EAAOoD,KAAP,EAAiB;AACvDsD;AACA,eAAO,CAACD,SAAQrD,QAAQoD,WAAhB,GAA4BpD,QAAQoD,WAArC,KACAxG,KAAK7B,WAAL,IAAoBhB,0BAASC,KAD7B,IAEA4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAF7B,IAGAb,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAHpC;AAID,OANsB,CAAvB;AAOA,UAAGgF,cAAH,EAAmB,OAAO,EAAE3G,MAAK2G,cAAP,EAAsBvD,OAAMsD,SAA5B,EAAP;AACnB,aAAO,IAAP;AACD,KA7zBkB;;AAAA,WA+zBnBJ,sBA/zBmB,GA+zBM,UAACtI,WAAD,EAAawI,WAAb,EAA6B;AACpD,UAAG,CAACxI,WAAD,IAAgBA,YAAY4B,MAAZ,IAAsB,CAAzC,EAA4C,OAAO,IAAP;AAC5C,UAAI8G,YAAY,CAAC,CAAjB;AACA1I,kBAAY3D,OAAZ,CAAoB,UAACuM,IAAD,EAAMxD,KAAN,EAAc;AAChC,YAAGwD,KAAK3G,WAAL,IAAoBuG,WAAvB,EAAoCE,YAAYtD,KAAZ;AACrC,OAFD;AAGA,UAAMyD,mBAAmB,OAAKN,oBAAL,CAA0BvI,WAA1B,EAAsC0I,SAAtC,EAAgD,IAAhD,CAAzB;AACA,UAAGG,gBAAH,EAAqB,OAAOA,gBAAP;AACrB,UAAMC,qBAAqB,OAAKP,oBAAL,CAA0BvI,WAA1B,EAAsC0I,SAAtC,EAAgD,KAAhD,CAA3B;AACA,UAAGI,kBAAH,EAAuB,OAAOA,kBAAP;AACvB,aAAO,IAAP;AACD,KA10BkB;;AAAA,WA60BnB5D,oBA70BmB,GA60BI,UAAC/J,GAAD,EAAS;AAC9B,UAAMkF,aAAN;AAD8B,UAEtBtD,OAFsB,GAEV,OAAKvB,KAFK,CAEtBuB,OAFsB;;AAG9B,UAAMyG,UAAU,oBAAMzG,QAAQiD,WAAd,EAA2B,UAACgC,IAAD;AAAA,eAAUA,KAAK7B,WAAL,KAAqBhF,GAA/B;AAAA,OAA3B,CAAhB;AACA,UAAMiK,QAAS5B,WAAWA,QAAQvB,WAApB,IAAoC,CAAC,CAAnD;AACA,UAAImD,UAAU,CAAC,CAAf,EAAkB;AAChBjH,mBAAW,YAAM;AACf,cAAMf,QAAQqF,SAASE,cAAT,YAAiCyC,KAAjC,CAAd;AACA,cAAI,CAAChI,KAAL,EAAY;AACZiD,eAAKZ,QAAL,CAAc,EAAE1F,cAAcqL,KAAhB,EAAd;AACAjH,qBAAW,YAAM;AACff,kBAAMsE,KAAN;AACAtE,kBAAMuE,iBAAN,CAAwB,CAAxB,EAA2BvE,MAAMC,KAAN,CAAYuE,MAAvC;AACD,WAHD,EAGG,EAHH;AAID,SARD,EAQG,GARH;AASD;AACF,KA71BkB;;AAAA,WA+1BnBmH,cA/1BmB,4EA+1BF;AAAA;AAAA;AAAA;AAAA;AAAA;AACT1I,kBADS;;AAEfC,oCAAYC,OAAZ,CAAoB;AAClBhE,2BAAW,qBADO;AAElBkE,yBAAS;AAAA;AAAA,oBAAK,WAAU,UAAf;AAA0B;AAAA;AAAA,sBAAK,WAAU,OAAf;AAAA;AAAA,mBAA1B;AAAuE;AAAA;AAAA;AAAA;AAAA;AAAvE,iBAFS;AAGZC,oBAHY,kBAGL;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACX5F,mCAAOkO,eAAP,GAAyB,+BAAzB;AADW;AAAA,mCAEQ3I,KAAK7E,KAAL,CAAWyN,iBAAX,EAFR;;AAAA;AAEPvK,kCAFO;;AAGXP,uCAAW,YAAM;AACf,kCAAIrD,OAAOkO,eAAX,EAA4B;AAC1BlO,uCAAOkO,eAAP,CAAuBE,OAAvB;AACApO,uCAAOkO,eAAP,GAAyB,IAAzB;AACD;AACF,6BALD,EAKG,CALH;AAHW,2CASHtK,OAAOyK,IATJ;AAAA,8DAUJ,GAVI,wBAcJ,GAdI,yBAkBJ,GAlBI;AAAA;;AAAA;AAUA;AACP9I,iCAAK7E,KAAL,CAAW4N,QAAX,CAAoB1K,OAAO4E,EAA3B;AACAjD,iCAAKgJ,aAAL;AAZO;;AAAA;AAcA;AACPhJ,iCAAK0I,cAAL;AACA;AAhBO;;AAAA;AAkBA;AACP9K,8CAAQuH,IAAR,iDAAwB9G,OAAOT,OAA/B;AAnBO;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBZ,iBAzBiB;AA0BlB0C,wBA1BkB,sBA0BP,CACV;AA3BiB,eAApB;;AAFe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KA/1BE;;AAAA,WA+3BnB2I,cA/3BmB,GA+3BF,YAAM;AACrB,aAAK7P,KAAL,CAAW8P,gBAAX,IAA+B,OAAK9P,KAAL,CAAW8P,gBAAX,EAA/B;AACA,aAAKrI,WAAL;AACD,KAl4BkB;;AAAA,WAo4BnBsI,oBAp4BmB,GAo4BI,UAACxH,IAAD,EAAU;AAC/B,aAAO,OAAKxG,KAAL,CAAWgO,oBAAX,CAAgCxH,IAAhC,CAAP;AACD,KAt4BkB;;AAAA,WAw4BnBqH,aAx4BmB,4EAw4BH;AAAA;;AAAA;AAAA;AAAA;AAAA;AACd;AADc,qCAE0B,OAAK7N,KAAL,CAAWuB,OAFrC,EAERiB,MAFQ,wBAERA,MAFQ,EAEAyL,QAFA,wBAEAA,QAFA,EAEUzJ,WAFV,wBAEUA,WAFV;AAGV0J,oBAHU,GAGD,OAAKlO,KAAL,CAAWuB,OAAX,CAAmB2M,MAHlB;AAId;;AACIC,yBALU,GAKI,CAAC,CAAC,oBAAM3J,WAAN,EAAmB,UAACgC,IAAD,EAAU;AAC/C,oBAAIA,KAAK3E,KAAL,IAAc,CAAd,IAAmB2E,KAAK3E,KAAL,KAAe,MAAtC,EAA8C;AAC5C,yBAAO,OAAKmM,oBAAL,CAA0BxH,IAA1B,CAAP;AACD;AACD,uBAAO,KAAP;AACD,eALmB,CALN;;AAWd4H,sBAAQC,GAAR,CAAY,SAAZ,EAAuBF,WAAvB;AACA;AACMG,mBAbQ;;AAcRC,2BAdQ,GAcQ,SAAhBA,aAAgB,CAAU/L,MAAV,EAAkByL,QAAlB,EAA4BC,MAA5B,EAAoC;AACxD,oBAAMM,gBAAgB,SAAhBA,aAAgB,GAAY;AAChC,sBAAIC,OAAO,KAAX;AACA,sBAAIH,MAAMnN,WAAN,KAAsB,IAAtB,IAA8BmN,MAAMI,iBAAxC,EAA2D;AACzD,wBAAIrK,OAAOsK,2BAAWC,GAAX,CAAe,iBAAf,KAAqC,EAAhD;AACAvK,2BAAOA,KAAKuI,MAAL,CAAY;AAAA,6BAAQQ,KAAK1E,IAAL,KAAc,oBAAtB;AAAA,qBAAZ,CAAP;AACArE,2BAAOA,QAAQA,KAAK+B,MAAL,GAAc,CAAtB,GAA0B/B,KAAKwK,KAAL,EAA1B,GAAyC,IAAhD;AACA,wBAAIxK,QAAQA,KAAKyK,KAAL,KAAe,GAA3B,EAAgC;AAC9BL,6BAAO,IAAP;AACD;AACF;AACD,yBAAOA,IAAP;AACD,iBAXD;AAYA,oBAAMM,SAAS;AACbC,wBAAM,CADO;AAEb3K,wBAAM;AACJ7B,4BAAQA,MADJ;AAEJyL,8BAAUA,QAFN;AAGJC,4BAAQA;AAHJ;AAFO,iBAAf;AAQA,oBAAIe,aAAaT,eAAjB;AACA,oBAAIS,eAAe,IAAnB,EAAyB;AAAG;AAC1B,sBAAIX,MAAMI,iBAAV,EAA6B;AAC3BpP,2BAAO4P,yBAAP,CAAiCC,yBAAjC,CAA2DJ,MAA3D;AACApM,+BAAW,YAAI;AACbrD,6BAAO4P,yBAAP,CAAiCC,yBAAjC,CAA2D,EAAEH,MAAM,CAAR,EAA3D;AACD,qBAFD,EAEE,IAFF;AAGD,mBALD,MAKO;AACLI,gDAAYA,yBAASC,oBAAT,CAA8B,aAA9B,EAA6CN,MAA7C,CAAZ;AACD;AACDpM,6BAAW,YAAM;AAAE2L,0BAAMrQ,KAAN,CAAYqR,eAAZ,IAA+BhB,MAAMrQ,KAAN,CAAYqR,eAAZ,CAA4B,EAAEnB,wBAAF,EAA5B,CAA/B;AAA6E,mBAAhG,EAAkG,IAAlG;AACD,iBAVD,MAUO;AACLG,wBAAMrQ,KAAN,CAAYqR,eAAZ,IAA+BhB,MAAMrQ,KAAN,CAAYqR,eAAZ,CAA4B,EAAEnB,wBAAF,EAA5B,CAA/B;AACD;AACF,eAjDa;;AAkDdxL,yBAAW,YAAM;AACf,oBAAIrD,OAAOiQ,cAAX,EAA2B;AACzBjQ,yBAAOiQ,cAAP,CAAsB7B,OAAtB;AACApO,yBAAOiQ,cAAP,GAAwB,IAAxB;AACD;AAJc,kCAKiDjB,MAAMpQ,KALvD;AAAA,oBAKPW,SALO,eAKPA,SALO;AAAA,oBAKIC,mBALJ,eAKIA,mBALJ;AAAA,oBAKyBI,mBALzB,eAKyBA,mBALzB;AAAA,kCAM4BoP,MAAMrQ,KANlC;AAAA,oBAMPuR,YANO,eAMPA,YANO;AAAA,oBAMOC,gBANP,eAMOA,gBANP;;AAOflB,8BAAc/L,MAAd,EAAsByL,QAAtB,EAAgCC,MAAhC;AACA,oBAAIrP,SAAJ,EAAe,OAAKkF,eAAL,CAAqB,CAArB,EAAwBmK,MAAxB;AACf5O,uBAAOoQ,cAAP,GAAwB,6BAAiBlN,MAAjB,EAAyByL,QAAzB,EAAmCC,MAAnC,EAA2CI,MAAMrQ,KAAN,CAAYuR,YAAvD,EAAqE3Q,SAArE,EAAgF,YAAM;AAC5GyP,wBAAMvK,eAAN,CAAsB,CAAtB;AACD,iBAFuB,EAErB0L,gBAFqB,EAEH3Q,mBAFG,EAEkBI,mBAFlB,CAAxB;AAGA,oBAAIqG,QAAQ;AACVxG,kCAAgB,KADN;AAEVC,2BAAS,CAFC;AAGVC,8BAAY;AAHF,iBAAZ;AAKA,oBAAIuG,QAAQ;AACVrG,gCAAc,CADJ;AAEVC,sCAAoB;AAFV,iBAAZ;AAIA,uBAAK6E,QAAL,CAAc,EAAEpF,WAAW,KAAb;AACZC,uCAAqByG,KADT;AAEZrG,uCAAqBsG;AAFT,iBAAd;AAIA,uBAAKE,WAAL;AACD,eA1BD,EA0BG,CA1BH;;AAlDc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAx4BG;;AAAA,WAu9BnB3B,eAv9BmB,GAu9BD,UAAC4L,KAAD,EAAQ9N,KAAR,EAAkB;AAClC,UAAI,OAAKV,WAAL,KAAqB,KAAzB,EAAgC;AAChC,UAAIyO,KAAKjB,2BAAWC,GAAX,CAAe,qBAAf,KAAyC,EAAlD;;AAFkC,kBAGsFgB,MAAM,EAH5F;AAAA,UAG1BC,gBAH0B,SAG1BA,gBAH0B;AAAA,UAGRC,eAHQ,SAGRA,eAHQ;AAAA,UAGSC,iBAHT,SAGSA,iBAHT;AAAA,UAG4BC,iBAH5B,SAG4BA,iBAH5B;AAAA,UAG+CC,gBAH/C,SAG+CA,gBAH/C;AAAA,UAGiEC,gBAHjE,SAGiEA,gBAHjE;;AAIlC,UAAIL,qBAAqB,KAAzB,EAAgC;AAChC,UAAIM,QAAQ,EAAZ;AACA,cAAQR,KAAR;AACE,aAAK,CAAL;AAAQ;AACNQ,kBAAQJ,iBAAR;AACA;AACF,aAAK,CAAL;AAAQ;AACNI,kBAAQ,CAACF,mBAAmB,EAApB,EAAwBG,OAAxB,CAAgC,SAAhC,EAA2CtO,KAAK6I,GAAL,CAAS9I,KAAT,CAA3C,CAAR;AACA;AACF,aAAK,CAAL;AAAQ;AACNsO,kBAAQ,CAACH,oBAAoB,EAArB,EAAyBI,OAAzB,CAAiC,SAAjC,EAA4CvO,KAA5C,CAAR;AACA;AACF,aAAK,CAAL;AAAQ;AACNsO,kBAAQ,CAACD,mBAAmB,EAApB,EAAwBE,OAAxB,CAAgC,QAAhC,EAA0C,2BAAevO,KAAf,CAA1C,CAAR;AACA;AACF,aAAK,CAAL;AAAQ;AACNsO,kBAAQL,eAAR;AACA;AAfJ;AAiBA,UAAIf,SAAS,yBAAe,EAAEsB,OAAO,EAAT,EAAaC,KAAK,EAAlB,EAAsBC,OAAO,EAA7B,EAAiCC,KAAK,EAAtC,EAA0CC,KAAK,EAA/C,EAAmDN,OAAOA,KAA1D,EAAf,CAAb;AACA/B,cAAQC,GAAR,mDAAwCsB,KAAxC,sBAAoDZ,MAApD;AACA2B,4BAAYC,eAAZ,CAA4B,EAAEtM,MAAM0K,MAAR,EAAgB6B,UAAUjB,KAA1B,EAA5B,EAA+D,eAAO;AAAEvB,gBAAQC,GAAR,qDAA0CsB,KAA1C,sBAAsD,yBAAe7F,GAAf,CAAtD;AAA8E,OAAtJ;AACD,KAj/BkB;;AAAA,WAm/BnBhG,YAn/BmB;AAAA,2FAm/BJ,kBAAO+M,IAAP;AAAA;AAAA,+FAgFb,kBAAgCC,QAAhC;AAAA;;AAAA;AAAA;AAAA;AAAA;AACMC,2BADN,GACgB,EADhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAGkBD,QAHlB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAGaE,qBAHb;AAAA;AAAA,2BAI2BA,CAJ3B;;AAAA;AAIY9N,2BAJZ;;AAKM6N,4BAAQE,IAAR,CAAa/N,OAAb;;AALN;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAOI5D,2BAAOiQ,cAAP,GAAwB,8BAAxB;AAPJ;AAAA,2BAQU2B,OAAOH,OAAP,CARV;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAhFa;;AAAA,0BAgFEI,gBAhFF;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAEb/C,wBAAQC,GAAR,CAAY,iCAAZ,EAA+C,CAACwC,IAAhD;AAFa,gCAGyC,OAAK7Q,KAH9C,EAGLuB,OAHK,iBAGLA,OAHK,EAGI2C,OAHJ,iBAGIA,OAHJ,EAGaC,aAHb,iBAGaA,aAHb,EAG4BhE,QAH5B,iBAG4BA,QAH5B;AAIPiR,0BAJO,GAIMP,SAAS,UAJf;AAKPhM,oBALO;AAMTwM,sBANS,GAMA,KANA;;AAOb9P,wBAAQiD,WAAR,CAAoB3D,OAApB,CAA4B,UAACC,CAAD,EAAO;AACjC,sBAAMjC,YAAY,OAAKmP,oBAAL,CAA0BlN,CAA1B,CAAlB;AACA,sBAAKjC,aAAaiC,EAAEe,KAAF,KAAY,MAA9B,EAAsC;AACpCwP,6BAAS,IAAT;AACD;AACF,iBALD;AAMA,uBAAKpN,QAAL,CAAc;AACZpF,6BAAWwS,SAAS,IAAT,GAAgB;AADf,iBAAd;;AAba,sBAgBTxM,KAAKyM,WAAL,MAAsBxP,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,IAA+B/F,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAhB5C;AAAA;AAAA;AAAA;;AAiBXnG,kCAAQC,KAAR,CAAc,kBAAkB,2BAAemC,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAAf,CAAlB,GAAgF,GAA9F;AAjBW;;AAAA;AAAA,sBAoBTiI,SAAS,MAAT,IAAmB,CAAC1Q,QApBX;AAAA;AAAA;AAAA;;AAqBPoR,wBArBO,GAqBI,oBAAMhQ,QAAQiD,WAAd,EAA2B,UAACgC,IAAD,EAAU;AAClD,yBAAOjE,WAAWiE,KAAK3E,KAAhB,KAA0B,CAA1B,IAA+B,CAAC2E,KAAK6C,YAAL,IAAqB,CAArB,GAAyB9G,WAAWiE,KAAKgL,MAAhB,CAAzB,GAAmDjP,WAAWiE,KAAK3E,KAAhB,CAApD,KAA+E,CAArH;AACD,iBAFc,CArBJ;;AAAA,qBAwBP0P,QAxBO;AAAA;AAAA;AAAA;;AAyBT9O,kCAAQC,KAAR,CAAc6O,SAASE,IAAT,GAAgB,iBAA9B;AAzBS;;AAAA;AA8BTX,wBA9BS,GA8BE,EA9BF;AA+BPtM,2BA/BO,GA+BO,sBAAQrE,WAAW,sBAAQoB,QAAQiD,WAAhB,EAA6B,UAACgC,IAAD,EAAU;AAAE,yBAAOjE,WAAWiE,KAAK3E,KAAhB,KAA0B,CAAjC;AAAqC,iBAA9E,CAAX,GAA6FN,QAAQiD,WAA7G,EAA0H,SAA1H,CA/BP;;AAAA,qBAgCT4M,UAhCS;AAAA;AAAA;AAAA;;AAiCPM,yBAjCO,GAiCKlN,YAAY,CAAZ,CAjCL;;AAAA,qBAkCP,OAAKE,iBAAL,CAAuBgN,UAAU/M,WAAjC,EAA8CT,OAA9C,EAAuDC,aAAvD,CAlCO;AAAA;AAAA;AAAA;;AAmCT1B,kCAAQC,KAAR,CAAc,WAAWgP,UAAUD,IAArB,GAA4B,eAA1C;AAnCS;;AAAA;AAuCb,uCAASjN,WAAT,EAAsB,UAACgC,IAAD,EAAU;AAC9B,sBAAI,EAAErC,iBAAiBD,OAAnB,MAAgCsC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAA7B,IAAoCvC,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAAjE,IAAuEtC,KAAK7B,WAAL,IAAoBhB,0BAASqF,IAApG,IAC9BnE,KAAKmJ,oBAAL,CAA0BxH,IAA1B,KAAmC4K,UADrC,CAAJ,EACuD;AACrDN,6BAASG,IAAT,CAAcpM,KAAK8M,YAAL,CAAkBnL,IAAlB,EAAwB4K,UAAxB,CAAd;AACD;AACF,iBALD;;AAOMF,sBA9CO;AAAA,uGA8CE,kBAAOU,MAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCACQ,OAAK5R,KAAL,CAAWkR,MAAX,CAAkB,OAAKjT,KAAL,CAAW4T,KAA7B,CADR;;AAAA;AACP3O,kCADO;;AAAA,kCAETA,WAAW,IAFF;AAAA;AAAA;AAAA;;AAES;AACpB2B,iCAAKgJ,aAAL;AACA,8CAAQ9K,OAAR;AAJW;AAAA;;AAAA;AAMX;AACAJ,uCAAW,YAAM;AACf,kCAAIrD,OAAOiQ,cAAX,EAA2B;AACzBjQ,uCAAOiQ,cAAP,CAAsB7B,OAAtB;AACApO,uCAAOiQ,cAAP,GAAwB,IAAxB;AACD;AACD;AACD,6BAND,EAMG,CANH;;AAPW,kCAcPrM,WAAWA,OAAOuF,IAAP,IAAevF,OAAOgF,IAAjC,CAdO;AAAA;AAAA;AAAA;;AAAA,2CAeDhF,OAAOuF,IAAP,IAAevF,OAAOgF,IAfrB;AAAA,8DAgBF,oBAhBE,yBAoBF,cApBE;AAAA;;AAAA;AAiBL,mCAAKjK,KAAL,CAAW8P,gBAAX,IAA+B,OAAK9P,KAAL,CAAW8P,gBAAX,EAA/B;AACA,mCAAKrI,WAAL;AAlBK;;AAAA;AAoBa;AAClBxC,mCAAO4O,OAAP,CAAeC,OAAf,CAAuB,SAAvB,IAAoC,CAAC,CAArC,IAA0ClN,KAAK0I,cAAL,EAA1C;AArBK;;AAAA;AAyBX,gCAAI6D,UAAJ,EAAgB;AACdvM,mCAAK5G,KAAL,CAAWwH,cAAX,IAA6BZ,KAAK5G,KAAL,CAAWwH,cAAX,EAA7B;AACAZ,mCAAKa,WAAL;AACD;;AA5BU;AAAA,mCA8BL,kBAAQsM,MAAR,EA9BK;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBA9CF;;AAAA,kCA8CPd,MA9CO;AAAA;AAAA;AAAA;;AAiGbC,iCAAiBL,QAAjB;;AAjGa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAn/BI;;AAAA;AAAA;AAAA;AAAA;;AAAA,WAulCnBlK,SAvlCmB,4EAulCP;AAAA;AAAA,8FAsBV,mBAAgCkK,QAAhC;AAAA;;AAAA;AAAA;AAAA;AAAA;AACMC,yBADN,GACgB,EADhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0DAGkBD,QAHlB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAGaE,mBAHb;AAAA;AAAA,yBAI2BA,CAJ3B;;AAAA;AAIY9N,0BAJZ;;AAKM6N,0BAAQE,IAAR,CAAa/N,QAAb;;AALN;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,yBAOUgO,OAAOH,OAAP,CAPV;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AASI,sBAAI,iBAAO,WAAX,EAAwB;AACtBtO,sCAAQC,KAAR;AACAC,+BAAW,YAAM;AAAEkC,2BAAK+B,SAAL;AAAmB,qBAAtC,EAAwC,GAAxC;AACD;;AAZL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAtBU;;AAAA,wBAsBKuK,gBAtBL;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACJtM,kBADI;AAEJoN,qBAFI,GAEM,OAAKjS,KAAL,CAAWuB,OAAX,CAAmBD,WAFzB;AAGNwP,sBAHM,GAGK,EAHL;;;AAKV,kBAAImB,QAAQzQ,MAAR,CAAe0Q,OAAf,IAA0BD,QAAQpQ,KAAR,GAAgB,CAA9C,EAAiD;AAC/CiP,yBAASG,IAAT,CAAcpM,KAAKsN,QAAL,CAAcF,OAAd,CAAd;AACD;;AAEKf,oBATI;AAAA,sGASK,kBAAOU,MAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAEEA,OAAOxL,MAAP,GAAgB,CAFlB;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAE6BvB,KAAK7E,KAAL,CAAWoS,SAAX,CAAqBR,OAAO,CAAP,CAArB,CAF7B;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,yCAEgE,EAFhE;;AAAA;AAEP1O,gCAFO;;AAAA,gCAGTA,UAAU,EAHD;AAAA;AAAA;AAAA;;AAGM;AACjB;AACA2B,+BAAK8C,wBAAL,CAA8BsK,QAAQtN,WAAtC;AACA,4CAAQ5B,OAAR;AANW;AAAA;;AAAA;AAAA;AAAA,iCASL,kBAAQiP,MAAR,CAAe9O,MAAf,CATK;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBATL;;AAAA,gCASJgO,MATI;AAAA;AAAA;AAAA;;AAsCVC,+BAAiBL,QAAjB;;AAtCU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAvlCO;;AAAA,WAgoCnBuB,aAhoCmB,GAgoCH,UAACC,YAAD,EAAkB;AAChC,UAAM1Q,QAAQ,kBAAc0Q,YAAd,EAA8B1Q,KAA5C;AACA,aAAO,UAACyD,CAAD,EAAO;AACZzD,iBAASA,MAAM2Q,IAAN,EAAT;AACA1L,2BAASC,KAAT;AACD,OAHD;AAID,KAtoCkB;;AAAA,WAuoCnB0L,gBAvoCmB,GAuoCA,UAACF,YAAD,EAAkB;AACnC,UAAM1Q,QAAQ,kBAAc0Q,YAAd,EAA8B1Q,KAA5C;AACA,aAAO,UAACyD,CAAD,EAAO;AACZzD,iBAASA,MAAM2Q,IAAN,EAAT;AACA1L,2BAASC,KAAT;AACD,OAHD;AAID,KA7oCkB;;AAAA,WA+oCnB2L,YA/oCmB,GA+oCJ,UAACpN,CAAD,EAAO;AACpB,aAAK1D,QAAL,IAAiB,OAAK,OAAKA,QAAV,CAAjB,IAAwC,OAAK,OAAKA,QAAV,EAAoBC,KAA5D,IAAqE,OAAK,OAAKD,QAAV,EAAoBC,KAApB,CAA0B2Q,IAA1B,EAArE;AACA1L,yBAASC,KAAT;AACD,KAlpCkB;;AAAA,WAopCnB4L,eAppCmB,GAopCD,UAACrN,CAAD,EAAO;AACvB,aAAK1D,QAAL,IAAiB,OAAK,OAAKA,QAAV,CAAjB,IAAwC,OAAK,OAAKA,QAAV,EAAoBC,KAA5D,IAAqE,OAAK,OAAKD,QAAV,EAAoBC,KAApB,CAA0B2Q,IAA1B,EAArE;AACA1L,yBAASC,KAAT;AACD,KAvpCkB;;AAAA,WAypCnBqL,QAzpCmB;AAAA,4FAypCR,mBAAO5Q,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACHsD,oBADG;AAAA,mDAEF,sBAAY,UAAU9B,OAAV,EAAmBiP,MAAnB,EAA2B;AAC5C,sBAAMW,QAAQ,0BAAW;AACvBC,kCAAc,wBAAM;AAClB/L,yCAASC,KAAT;AACA,0BAAMhG,IAAI,oBAAM+D,gBAActD,QAAQkF,WAAtB,EAAqC,OAArC,EAA8C,OAA9C,CAAN,CAAV;AACA;AACAkM,4BAAMjF,OAAN;;AAEA/K,iCAAW,YAAM;AACfpB,gCAAQsR,QAAR,GAAmB/R,CAAnB;AACAiC,gCAAQ;AACNT,8BAAIf,QAAQC,MAAR,CAAec,EADb;AAENwQ,+BAAKhS;AAFC,yBAAR;AAID,uBAND,EAMG,GANH;AAOA;AACA;AACA;AACA;AACD,qBAlBsB;AAmBvBiS,gCAAY,sBAAM;AAChBlM,yCAASC,KAAT;AACAkL,6BAAO,WAAP;AACD,qBAtBsB;AAuBvBgB,kCAAc,KAvBS;AAwBvBC,8BAAU,KAxBa;AAyBvBC,8BAAU,IAzBa;AA0BvBlO,2BAAOzD,QAAQkQ,IA1BQ;AA2BvB0B,2BAAO,GA3BgB;AA4BvBpS,+BAAY8D,KAAK6J,iBAAL,IAA0B,CAAC7J,KAAKuO,mBAAjC,GAAwD,UAAxD,GAAqE,sBA5BzD;AA6BvB;AACAnO,6BAAU;AAAA;AAAA,wBAAK,WAAU,WAAf;AACR;AAAA;AAAA;AACE;AAAA;AAAA,4BAAM,WAAU,OAAhB;AAAA;AAAA,yBADF;AACsC;AAAA;AAAA,4BAAM,WAAU,MAAhB;AAAwB,qDAAe1D,QAAQM,KAAvB;AAAxB;AADtC,uBADQ;AAIR;AAAA;AAAA,0BAAK,WAAU,kBAAf;AACE;AAAA;AAAA,4BAAM,WAAU,OAAhB;AAAA;AAAA,yBADF;AAEI,sDAAC,2BAAD;AACE,8CADF;AAEE,0CAFF;AAGE,qCAAU,SAHZ;AAIE,gDAAwB,IAJ1B;AAKE,gCAAK,QALP;AAME,uCAAY,0BANd;AAOE,oCAAU;AAAA,mCAASgD,gBAActD,QAAQkF,WAAtB,IAAuC,EAAC7E,OAAMA,KAAP,EAAhD;AAAA,2BAPZ;AAQE,oCAAS,UARX;AASE,kCAAQ,gBAACyD,CAAD,EAAO;AAAEwB,+CAASC,KAAT;AAAmB,2BATtC;AAUE,mCAAS,yBAAgB;AAAA,gCAAbqD,MAAa,UAAbA,MAAa;;AACvB,gCAAMkJ,cAAcxO,gBAActD,QAAQkF,WAAtB,EAAqC7E,KAAzD;AACAiF,+CAASyM,IAAT,CAAc,UAACxS,CAAD,EAAO;AACnB,kCAAMe,QAAQgF,mBAAS0M,WAAT,CAAqBF,WAArB,EAAkCA,YAAYxR,KAA9C,EAAqDf,CAArD,CAAd;AACAuS,0CAAYxR,KAAZ,GAAoBA,KAApB;AACD,6BAHD,EAGGgD,KAAKwN,aAAL,CAAmB9Q,QAAQkF,WAA3B,CAHH,EAG4C5B,KAAK2N,gBAAL,CAAsBjR,QAAQkF,WAA9B,CAH5C;AAID;AAhBH;AAFJ,uBAJQ;AAyBR;AAAA;AAAA,0BAAK,WAAU,cAAf;AACE;AAAA;AAAA,4BAAK,WAAU,IAAf;AACE;AAAA;AAAA;AACE,oCAAK,QADP;AAEE,yCAAU,oBAFZ,EAEiC,SAAS,mBAAM;AAC5CkM,sCAAMjF,OAAN;AACAsE,uCAAO,WAAP,EAF4C,CAEzB;AACpB,+BALH;AAAA;AAAA,2BADF;AAQE;AAAA;AAAA;AACE,oCAAK,QADP;AAEE,yCAAU,oCAFZ,EAEiD,SAAS,mBAAM;AAC5D,oCAAMlR,IAAI,oBAAM+D,gBAActD,QAAQkF,WAAtB,EAAqC,OAArC,EAA8C,OAA9C,CAAN,CAAV;AACA;AACAkM,sCAAMjF,OAAN;AACA;AACA;AACA;AACA/K,2CAAW,YAAM;AACfpB,0CAAQsR,QAAR,GAAmB/R,CAAnB;AACAiC,0CAAQ;AACNT,wCAAIf,QAAQC,MAAR,CAAec,EADb;AAENwQ,yCAAKhS;AAFC,mCAAR;AAID,iCAND,EAMG,GANH;AAOA;AACA;AACA;AACD,+BAnBH;AAAA;AAAA;AARF;AADF;AAzBQ;AA9Ba,mBAAX,CAAd;AAyFA;AACA6B,6BAAW,YAAM;AACfkC,oCAActD,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CsE,KAA3C;AACD,mBAFD,EAEG,GAFH;AAGD,iBA9FM,CAFE;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAzpCQ;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA4vCnBsN,kBA5vCmB;AAAA,4FA4vCE,mBAAO7U,IAAP,EAAa0D,MAAb;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,gCACmC,OAAKrC,KADxC,EACXuB,OADW,iBACXA,OADW,EACF2C,OADE,iBACFA,OADE,EACOC,aADP,iBACOA,aADP,EACsBhE,QADtB,iBACsBA,QADtB;AAEfkR,sBAFe,GAEN,KAFM;;AAGnB9P,wBAAQiD,WAAR,CAAoB3D,OAApB,CAA4B,UAACC,CAAD,EAAO;AACjC,sBAAI,OAAKkN,oBAAL,CAA0BlN,CAA1B,KAAgCA,EAAEe,KAAF,KAAY,MAAhD,EAAwD;AACtDwP,6BAAS,IAAT;AACD;AACF,iBAJD;AAKA,uBAAKpN,QAAL,CAAc;AACZpF,6BAAWwS,SAAS,IAAT,GAAgB;AADf,iBAAd;;AARmB,qBAWf,OAAKnT,KAAL,CAAWmT,MAXI;AAAA;AAAA;AAAA;;AAAA,qBAYb,OAAKrR,KAAL,CAAWyD,GAAX,CAAegH,QAZF;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAaE,OAAKC,kBAAL,CAAwB,CAAxB,CAbF;;AAAA;AAaXG,oBAbW;;AAcf;AACA,uBAAK5G,QAAL,CAAc;AACZnF,uCAAqB+L;AADT,iBAAd;AAfe;AAAA;;AAAA;AAmBXf,mBAnBW,GAmBL;AACR/K,kCAAgB,KADR;AAERC,2BAAS,CAFD;AAGRC,8BAAY;AAHJ,iBAnBK;;AAwBf,uBAAKgF,QAAL,CAAc;AACZnF,uCAAqBgL;AADT,iBAAd;;AAxBe;AAAA,qBA6Bf,OAAK2J,YA7BU;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAgCnB,uBAAKA,YAAL,GAAoB,wBAAU,YAAM;AAClC,sBAAIpR,MAAJ,EAAY;AACV,2BAAKS,WAAL,CAAiBnE,IAAjB;AACD,mBAFD,MAEO;AACL,2BAAKqF,SAAL;AACD;AACF,iBANmB,EAMjB,IANiB,EAMX;AACP,6BAAW,IADJ;AAEP,8BAAY;AAFL,iBANW,CAApB;AAUA,uBAAKyP,YAAL;AACA9Q,2BAAW,YAAM;AACf,yBAAK8Q,YAAL,CAAkBvH,MAAlB;AACA,yBAAKuH,YAAL,GAAoB,IAApB;AACD,iBAHD,EAGG,IAHH;;AA3CmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA5vCF;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA6yCnBC,YA7yCmB;AAAA,4FA6yCJ,mBAAO/U,IAAP,EAAa0D,MAAb;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qBACT,OAAKpE,KAAL,CAAW0V,SADF;AAAA;AAAA;AAAA;;AAAA,+BAE6B,OAAK1V,KAFlC,EAEH2V,OAFG,gBAEHA,OAFG,EAEMC,kBAFN,gBAEMA,kBAFN;AAAA,wCAGuDC,OAAOC,kBAAP,CAA0B1P,IAHjF,EAGH2P,OAHG,yBAGHA,OAHG,EAGMC,aAHN,yBAGMA,aAHN,EAGqBC,cAHrB,yBAGqBA,cAHrB,EAGqCC,aAHrC,yBAGqCA,aAHrC;;AAAA,oBAIPH,QAAQ5N,MAJD;AAAA;AAAA;AAAA;;AAKT3D,kCAAQoG,IAAR,CAAa,cAAb;AALS,mDAMF,KANE;;AAAA;AAAA,sBAQP,EAAEoL,iBAAiBC,cAAnB,KAAsC,CAACN,OARhC;AAAA;AAAA;AAAA;;AASTnR,kCAAQoG,IAAR,CAAa,qBAAb;AATS,mDAUF,KAVE;;AAAA;AAAA,sBAYP,IAAIuL,IAAJ,CAASH,aAAT,EAAwBI,OAAxB,KAAoC,IAAID,IAAJ,CAASF,cAAT,EAAyBG,OAAzB,EAZ7B;AAAA;AAAA;AAAA;;AAaT5R,kCAAQoG,IAAR,CAAa,cAAb;AAbS,mDAcF,KAdE;;AAAA;AAAA,sBAgBP+K,WAAWC,qBAAqBM,aAArB,GAAqC,CAhBzC;AAAA;AAAA;AAAA;;AAiBT1R,kCAAQoG,IAAR,CAAa,yBAAb;AAjBS,mDAkBF,KAlBE;;AAAA;AAAA,qBAoBP,OAAK7I,KAAL,CAAWsU,WApBJ;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAqBQ,OAAKtU,KAAL,CAAWuU,mBAAX,EArBR;;AAAA;AAqBL1J,oBArBK;;AAsBT,oBAAIA,KAAK2J,SAAT,EAAoB;AAClB,yBAAKhB,kBAAL,CAAwB7U,IAAxB,EAA8B0D,MAA9B;AACA,yBAAKrC,KAAL,CAAWyU,iBAAX,CAA6B,KAA7B;AACD,iBAHD,MAGO;AACL3P,wCAAYC,OAAZ,CAAoB;AAClBC,2BAAO,MADW;AAElBC,6BAAS4F,KAAK6J,QAFI;AAGlBC,gCAAY,KAHM;AAIlBC,4BAAQ,IAJU;AAKlBC,4BAAQ,SALU;AAMlB3P,0BAAM,gBAAM;AACV,6BAAKsO,kBAAL,CAAwB7U,IAAxB,EAA8B0D,MAA9B;AACA,6BAAKrC,KAAL,CAAWyU,iBAAX,CAA6B,KAA7B;AACD,qBATiB;AAUlBtP,8BAAU,oBAAM;AACd,6BAAKnF,KAAL,CAAWyU,iBAAX,CAA6B,IAA7B;AACA,6BAAO,KAAP;AACD;AAbiB,mBAApB;AAeD;AAzCQ;AAAA;;AAAA;AA2CT,uBAAKjB,kBAAL,CAAwB7U,IAAxB,EAA8B0D,MAA9B;;AA3CS;AAAA;AAAA;;AAAA;AA8CX,uBAAKmR,kBAAL,CAAwB7U,IAAxB,EAA8B0D,MAA9B;;AA9CW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA7yCI;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA+1CnByS,WA/1CmB,GA+1CL,UAAChU,CAAD,EAAO;AACnB,aAAKd,KAAL,CAAWuB,OAAX,CAAmBD,WAAnB,CAA+BE,MAA/B,CAAsCuT,SAAtC,CAAgDjU,CAAhD;AACD,KAj2CkB;;AAAA,WAk2CnBkU,eAl2CmB,GAk2CD,UAAC3P,CAAD,EAAO;AACvB,aAAKY,QAAL,CAAcrE,KAAd,CAAoB2Q,IAApB;AACA1L,yBAASC,KAAT;AACA,aAAKP,OAAL,CAAa,OAAKN,QAAL,CAAcrE,KAAd,CAAoB,OAApB,CAAb;AACD,KAt2CkB;;AAAA,WAu2CnBiB,kBAv2CmB,GAu2CE,UAACwC,CAAD,EAAO;AAC1B,aAAKY,QAAL,IAAiB,OAAKA,QAAL,CAAcrE,KAAd,CAAoB2Q,IAApB,EAAjB;AACA1L,yBAASC,KAAT;AACD,KA12CkB;;AAAA,WA42CnBmO,WA52CmB,GA42CL,UAACnU,CAAD,EAA2B;AAAA,UAAvBoU,UAAuB,uEAAV,KAAU;;AACvC,aAAK5N,QAAL,CAAc1F,KAAd,CAAoBC,KAApB,GAA4Bf,CAA5B;AACA,UAAI,OAAKqU,SAAT,EAAoB;AAClB,eAAKA,SAAL,CAAejJ,MAAf;AACA,eAAKiJ,SAAL,GAAiB,IAAjB;AACD;AACD,UAAI,CAACD,UAAL,EAAiB;AACf,eAAKC,SAAL,GAAiB,wBAAU,YAAM;AAAE,iBAAKpJ,MAAL;AAAe,SAAjC,EAAmC,IAAnC,CAAjB;AACA,eAAKoJ,SAAL;AACD;AACF,KAt3CkB;;AAAA,WAu3CnBC,eAv3CmB,GAu3CD,UAAC/P,CAAD,EAAO;AACvB,aAAKiC,QAAL,CAAc1F,KAAd,CAAoB2Q,IAApB;AACA1L,yBAASC,KAAT;AACA,aAAKiF,MAAL;AACD,KA33CkB;;AAAA,WA43CnBsJ,kBA53CmB,GA43CE,UAAChQ,CAAD,EAAO;AAC1B,aAAKiC,QAAL,CAAc1F,KAAd,CAAoB2Q,IAApB;AACA1L,yBAASC,KAAT;AACD,KA/3CkB;;AAAA,WAi4CnBwK,WAj4CmB,GAi4CL,YAAM;AAAA,UACV/P,OADU,GACE,OAAKvB,KADP,CACVuB,OADU;;AAElB,UAAMyG,UAAU,oBAAMzG,QAAQiD,WAAd,EAA2B;AAAA,eAAQ,OAAKwJ,oBAAL,CAA0BxH,IAA1B,CAAR;AAAA,OAA3B,CAAhB;AACA,aAAQjF,QAAQqJ,UAAR,GAAqB,CAArB,IAA0B5C,OAA1B,IAAqCA,QAAQnG,KAAR,IAAiBC,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAA9D;AACD,KAr4CkB;;AAAA,WAq5CnB0K,qBAr5CmB;AAAA,4FAq5CK,mBAAO3V,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAChBkC,qBADgB,GACRgF,mBAAS0M,WAAT,CAAqB,OAAKxT,YAA1B,EAAwC,OAAKA,YAAL,CAAkB8B,KAA1D,EAAiElC,GAAjE,EAAsE,IAAtE,CADQ;AAEtB;;AAFsB,sBAGlB,OAAKI,YAAL,CAAkBuC,EAAlB,KAAyB,mBAHP;AAAA;AAAA;AAAA;;AAIpB,oBAAI,CAACgI,MAAMzI,KAAN,CAAD,IAAiBA,SAAS,GAA9B,EAAmC;AACjC,yBAAK9B,YAAL,CAAkB8B,KAAlB,GAA0BA,KAA1B;AACD;AANmB;AAAA;;AAAA;AAAA,qBAOX,OAAK9B,YAPM;AAAA;AAAA;AAAA;;AAQpB,oBAAI,CAACuK,MAAMzI,KAAN,CAAD,IAAiBA,SAAS,GAA9B,EAAmC;AACjC,yBAAK9B,YAAL,CAAkB8B,KAAlB,GAA0BA,KAA1B;AACA,yBAAK7B,KAAL,CAAWuK,WAAX,CAAuB,OAAKrM,KAAL,CAAWK,YAAlC,EAAgDsD,KAAhD,EAAuD,KAAvD;AACD;AACKN,uBAZc,GAYH,OAAKvB,KAZF,CAYduB,OAZc;;AAAA,qBAahB,OAAKvB,KAAL,CAAWyD,GAAX,CAAegH,QAbC;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAcD,OAAKC,kBAAL,CAAwB,2BAAe5I,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAAxB,CAdC;;AAAA;AAcdC,oBAdc;;AAelB;AACA,uBAAK5G,QAAL,CAAc;AACZnF,uCAAqB+L;AADT,iBAAd;AAGA,oBAAIA,KAAK9L,cAAT,EAAyB;AACvB;AACA,sBAAI8L,KAAK7L,OAAL,GAAe,CAAf,IAAoB6L,KAAK7L,OAAL,KAAgB,CAAxC,EAA2C;AACzC;AACA,2BAAKI,kBAAL,KAA4B,OAAKA,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAe,CAAf,CAA5D;AACA,2BAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejJ,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAA3C;AACA,2BAAK5K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,IAA2B,OAAKA,kBAAL,CAAwByC,KAAhI;AACD,mBALD,MAKO;AACL,2BAAKzC,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAegJ,KAAK7L,OAApB,CAAhC;AACA,2BAAK8L,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAe,CAAf,CAA3C;AACA,2BAAK/K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACD;AACG3C,qCAZmB,GAYG;AACxBC,kCAAc,OAAK2L,yBAAL,CAA+BC,SADrB;AAExB3L,wCAAoB,OAAKA,kBAAL,IAA2B,OAAKA,kBAAL,CAAwByC;AAF/C,mBAZH;;AAgBvB,yBAAKoC,QAAL,CAAc;AACZ/E,yCAAqBA;AADT,mBAAd;AAGD;;AAtCiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAr5CL;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA09CnBqW,oBA19CmB,GA09CI,UAAC/Q,WAAD,EAAiB;AACtC,UAAG,CAACA,WAAD,IAAgBA,YAAY4B,MAAZ,IAAsB,CAAzC,EAA4C,OAAO,EAAP;AAC5C,UAAIoP,cAAchR,YAAYoI,MAAZ,CAAmB,UAACpG,IAAD,EAAQ;AAAA,YACrCiP,QADqC,GACxB,OAAKxX,KADmB,CACrCwX,QADqC;AAAA,YAErClU,OAFqC,GAEzB,OAAKvB,KAFoB,CAErCuB,OAFqC;;AAG3C,YAAImU,UAAU,oBAAMnU,QAAQ6H,QAAd,EAAwB,UAACgE,IAAD,EAAU;AAAE,iBAAOA,KAAKzI,WAAL,KAAqBhB,0BAASqF,IAArC;AAA2C,SAA/E,CAAd;AACA;AACA,YAAI,CAACyM,QAAD,IAAaC,OAAjB,EAA0B;AACxB,cAAIlP,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAA7B,IAAmCtC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAApE,EAAyE;AACvE,mBAAO,KAAP;AACD,WAFD,MAEO;AACL,gBAAI4M,SAAS,sBAAQpU,QAAQ6H,QAAhB,EAA0B,aAAK;AAAE,qBAAOwM,EAAEjR,WAAF,IAAiBhB,0BAASmF,EAA1B,IAAgC8M,EAAEjR,WAAF,IAAiBhB,0BAASoF,GAAjE;AAAsE,aAAvG,CAAb;AACD;AACF;AACD,eAAO,IAAP;AACD,OAbiB,CAAlB;AAcA,aAAOyM,WAAP;AACD,KA3+CkB;;AAAA,WA8+CnBK,aA9+CmB;AAAA,4FA8+CH,mBAAOpP,WAAP,EAAoByE,GAApB,EAAyBN,UAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AACRyI,2BADQ,GACM,kBAAc5M,WAAd,EAA6B7E,KAA7B,CAAmCA,KADzC;AAERzC,4BAFQ,GAEO,kBAAcsH,WAAd,OAFP;AAGV5E,qBAHU,GAGFqJ,GAHE;;AAId,oBAAIZ,MAAMzI,KAAN,KAAgBA,UAAU,GAA9B,EAAmC;AACjCA,0BAAQU,WAAWqI,UAAX,IAAyBrI,WAAWpD,aAAa4L,SAAxB,CAAjC;AACD;AACDsI,4BAAYxR,KAAZ,GAAoBA,KAApB;AACIiU,wBARU,GAQC,2BAAevT,WAAWV,SAAS,CAApB,IAAyBU,WAAWqI,UAAX,CAAxC,CARD;AASd;AACA;;AACQ6E,gCAXM,GAWe,OAAKxR,KAXpB,CAWNwR,gBAXM;;AAAA,sBAYV,OAAKzP,KAAL,CAAWyD,GAAX,CAAegH,QAAf,IAA2BgF,gBAZjB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAaK,OAAK/E,kBAAL,CAAwBoL,QAAxB,CAbL;;AAAA;AAaRjL,oBAbQ;;AAcZ;AACA,uBAAK5G,QAAL,CAAc;AACZnF,uCAAqB+L;AADT,iBAAd;AAGA,oBAAIA,KAAK9L,cAAT,EAAyB;AACnBK,oCADmB,GACE,8BAA4BwC,KAA5B,CAAkCA,KADpC;AAEvB;;AACA,sBAAIiJ,KAAK7L,OAAL,GAAe,CAAf,IAAoB6L,KAAK7L,OAAL,KAAgB,CAAxC,EAA2C;AACzCI,uCAAmB2W,QAAnB,GAA8B,IAA9B;AACA5W,iCAAa4L,SAAb,GAAyB+K,QAAzB;AACA1W,uCAAmByC,KAAnB,GAA2B,IAA3B;AACA,kDAA4BmU,iBAA5B,CAA8C,IAA9C,EAAoD,CAApD;AACA,2BAAKhW,KAAL,CAAWgL,uBAAX,CAAmC7L,aAAa4L,SAAhD,EAA2D,IAA3D;AACD,mBAND,MAMO;AACL3L,uCAAmB2W,QAAnB,GAA8B,KAA9B;AACA3W,uCAAmByC,KAAnB,GAA2B,2BAAegJ,KAAK7L,OAApB,CAA3B;AACAG,iCAAa4L,SAAb,GAAyB,2BAAe,CAAf,CAAzB;AACA,kDAA4BiL,iBAA5B,CAA8C,KAA9C,EAAqD,2BAAenL,KAAK7L,OAApB,CAArD;AACA,2BAAKgB,KAAL,CAAWgL,uBAAX,CAAmC7L,aAAa4L,SAAhD,EAA2D3L,mBAAmByC,KAA9E;AACD;AACG3C,qCAhBmB,GAgBG;AACxBC,kCAAcA,aAAa4L,SADH;AAExB3L,wCAAoBA,mBAAmByC;AAFf,mBAhBH;;AAoBvB,yBAAKoC,QAAL,CAAc;AACZ/E,yCAAqBA;AADT,mBAAd;AAGD,iBAvBD,MAuBO;AACLC,+BAAa4L,SAAb,GAAyB+K,QAAzB;AACD;AA3CW;AAAA;;AAAA;AA6CZ3W,6BAAa4L,SAAb,GAAyB+K,QAAzB;;AA7CY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA9+CG;;AAAA;AAAA;AAAA;AAAA;;AAAA,WAgiDnBG,iBAhiDmB,GAgiDC,YAAM;AACxB,UAAI,OAAKC,OAAT,EAAkB,OAAKA,OAAL,CAAaC,SAAb;AACnB,KAliDkB;;AAAA,WAmiDnBC,YAniDmB,GAmiDJ,UAAClL,GAAD,EAAMyH,KAAN,EAAa0D,EAAb,EAAoB;AACjC,UAAI/H,QAAQ,YAAQ+H,EAAR,CAAZ;AACA,UAAI/H,KAAJ,EAAWA,MAAMgI,aAAN,CAAoBpL,GAApB,EAAyB,YAAM;AACxC,YAAIyH,KAAJ,EAAWA,MAAM4D,aAAN;AACZ,OAFU;AAGZ,KAxiDkB;;AAAA,WAyiDnBC,eAziDmB,GAyiDD,UAACtL,GAAD,EAAS;AACzB,UAAIoD,cAAJ;AACA,aAAKwG,WAAL,CAAiB5J,GAAjB;AACAvI,iBAAW,YAAM;AAAE2L,cAAM/H,OAAN,CAAc2E,GAAd;AAAoB,OAAvC,EAAyC,CAAzC;AACD,KA7iDkB;;AAAA,WAgjDnBuL,eAhjDmB,GAgjDD,UAACvL,GAAD,EAAS;AACzB,UAAImL,KAAK,OAAK/O,QAAd;AACA,UAAI+O,MAAMA,GAAGzU,KAAb,EAAoByU,GAAGzU,KAAH,CAASC,KAAT,GAAiBqJ,GAAjB;AACpB,aAAKa,MAAL,CAAYb,GAAZ;AACD,KApjDkB;;AAAA,WAujDnBwL,iBAvjDmB,GAujDC,UAACnV,OAAD,EAAa;AAAA,UACvBM,KADuB,GACbN,OADa,CACvBM,KADuB;AAAA,UAEvBjD,kBAFuB,GAEA,OAAKV,KAFL,CAEvBU,kBAFuB;;AAG/B,aAAO,OAAKoP,oBAAL,CAA0BzM,OAA1B,KAAsC3C,uBAAuB,GAA7D,IAAoEiD,QAAQ,CAA5E,GAAgF,EAAhF,GAAqFA,KAA5F;AACD,KA3jDkB;;AAAA,WA8jDnB8U,iBA9jDmB,GA8jDC,UAACpV,OAAD,EAAa;AAAA,UACvBM,KADuB,GACbN,OADa,CACvBM,KADuB;AAAA,UAEvBjD,kBAFuB,GAEA,OAAKV,KAFL,CAEvBU,kBAFuB;;AAG/B,aAAO,OAAKoP,oBAAL,CAA0BzM,OAA1B,KAAsC3C,uBAAuB,GAA7D,IAAoEiD,QAAQ,CAA5E,GAAgF,2BAAe,IAAIA,KAAnB,CAAhF,GAA4G,MAAnH;AACD,KAlkDkB;;AAAA,WAokDnB+U,cApkDmB,GAokDF,UAAC/R,IAAD,EAAOtD,OAAP,EAAmB;AAAA,UAC1BrC,mBAD0B,GACF,OAAKhB,KADH,CAC1BgB,mBAD0B;;AAEnC,aAAO,IAAP;AACA,KAvkDkB;;AAAA,WAykDnB2X,aAzkDmB,GAykDH,UAACtV,OAAD,EAAa;AAC3B,UAAM8R,cAAc,kBAAc9R,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CA,KAA/D;AACA,UAAMzC,eAAe,kBAAcoC,QAAQkF,WAAtB,OAArB;AACA,UAAMrH,qBAAqB,8BAA4BwC,KAA5B,CAAkCA,KAA7D;AAH2B,UAInB9C,mBAJmB,GAIK,OAAKZ,KAJV,CAInBY,mBAJmB;;AAK3BuU,kBAAYxR,KAAZ,GAAoB,2BAAewR,YAAYxR,KAA3B,CAApB;AACA,UAAIzC,mBAAmByC,KAAnB,GAA2B/C,oBAAoBE,OAAnD,EAA4D;AAC1DyD,0BAAQoG,IAAR,wHAAmC/J,oBAAoBE,OAAvD;AACA,sCAA4BgX,iBAA5B,CAA8C,KAA9C,EAAqD,CAArD;AACA7W,qBAAa4L,SAAb,GAAyB,2BAAesI,YAAYxR,KAAZ,GAAoBN,QAAQM,KAA3C,CAAzB;AACD,OAJD,MAIO;AACL1C,qBAAa4L,SAAb,GAAyB,2BAAejM,oBAAoBE,OAApB,GAA8BI,mBAAmByC,KAAhE,CAAzB;AACAzC,2BAAmByC,KAAnB,GAA2B,2BAAezC,mBAAmByC,KAAlC,CAA3B;AACA,YAAI/C,oBAAoBE,OAApB,GAA8B,CAAlC,EAAqC;AACnC,iBAAKgB,KAAL,CAAWgL,uBAAX,CAAmC7L,aAAa4L,SAAhD,EAA2D3L,mBAAmByC,KAA9E;AACD;AACF;AACD,UAAI3C,sBAAsB;AACxBC,sBAAcA,aAAa4L,SADH;AAExB3L,4BAAoBA,mBAAmByC;AAFf,OAA1B;AAIA,aAAKoC,QAAL,CAAc;AACZ/E,6BAAqBA;AADT,OAAd;AAGD,KAjmDkB;;AAAA,WAmmDnB4X,aAnmDmB,GAmmDH,YAAM;AAAA,yBACiC,OAAK5Y,KADtC;AAAA,UACZY,mBADY,gBACZA,mBADY;AAAA,UACSI,mBADT,gBACSA,mBADT;AAEpB;AACA;AACA;AACA;AACD,KAzmDkB;;AAAA,WA2mDnBwL,kBA3mDmB,GA2mDE,UAAC7I,KAAD,EAAW;AAC9B,aAAO,OAAK7B,KAAL,CAAW0K,kBAAX,CAA8B7I,KAA9B,CAAP;AACD,KA7mDkB;;AAAA,WA+mDnB8P,YA/mDmB;AAAA,4FA+mDJ,mBAAOpQ,OAAP,EAAgB6P,UAAhB;AAAA;;AAAA;AAAA;AAAA;AAAA;AACPvM,oBADO;AAEPkS,iCAFO,GAEa,KAFb;AAGTnY,kCAHS;AAIb;;AAJa,gCAK0B,OAAKX,KAL/B,EAKLwR,gBALK,iBAKLA,gBALK,EAKagG,QALb,iBAKaA,QALb;;AAAA,sBAMTlU,QAAQoD,WAAR,IAAuBhB,0BAASkG,OAAhC,IAA2C,OAAK7J,KAAL,CAAWyD,GAAX,CAAegH,QANjD;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAOM,OAAKC,kBAAL,CAAwB,CAAxB,CAPN;;AAAA;AAOPG,oBAPO;;AAQX;AACA,uBAAK5G,QAAL,CAAc;AACZnF,uCAAqB+L;AADT,iBAAd;AATW;AAAA;;AAAA;AAaPf,mBAbO,GAaD;AACR/K,kCAAgB,KADR;AAERC,2BAAS,CAFD;AAGRC,8BAAY;AAHJ,iBAbC;;AAkBX,uBAAKgF,QAAL,CAAc;AACZnF,uCAAqBgL;AADT,iBAAd;;AAlBW;AAsBPhL,mCAtBO,GAsBiB,OAAKZ,KAtBtB,CAsBPY,mBAtBO;AAuBb;;AAvBa,mDAwBN,sBAAY,UAAUiE,OAAV,EAAmBiP,MAAnB,EAA2B;AAC5C,sBAAMW,QAAQ,0BAAW;AACvBC,kCAAc,wBAAM;AAClB,0BAAI/N,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACtC,4BAAIyV,KAAKzU,WAAWsC,gBAActD,QAAQkF,WAAtB,QAAsCsE,SAAjD,CAAT;AACA,4BAAIiM,KAAK,CAAT,EAAY;AACVvU,4CAAQC,KAAR,CAAc,cAAd;AACA,gCAAM,OAAN;AACD,yBAHD,MAGO,IAAIsU,KAAKnS,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAAT,EAAsD;AAC3DnG,4CAAQC,KAAR,CAAc,kBAAkB,2BAAemC,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAAf,CAAlB,GAAgF,GAA9F;AACA,gCAAM,OAAN;AACD;AARqC,4BAShC1J,mBATgC,GASR2F,KAAK3G,KATG,CAShCgB,mBATgC;;AAUtC,4BAAIJ,oBAAoBC,cAApB,IAAsCG,oBAAoBE,kBAApB,GAAyC,CAA/E,IAAoFyF,KAAKoS,mBAAzF,IAAgHpS,gBAActD,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CA,KAA3C,KAAqDqF,SAASiQ,aAAlL,EAAiM;AAC/L,8BAAI,CAACrS,KAAKoS,mBAAL,CAAyBrV,KAAzB,CAA+BA,KAA/B,CAAqCmU,QAA1C,EAAoD;AAClDlR,iCAAKoS,mBAAL,CAAyBrV,KAAzB,CAA+BA,KAA/B,CAAqCuV,MAArC;AACA,kCAAM,OAAN;AACD;AACF;AACF;AACD,0BAAMrW,IAAI,oBAAM+D,gBAActD,QAAQkF,WAAtB,EAAqC,OAArC,EAA8C,OAA9C,EAAuD2Q,YAAvD,CAAoE,OAApE,CAAN,CAAV;AACA,0BAAItW,MAAM,EAAV,EAAc;AACZ6R,8BAAMjF,OAAN;AACA/K,mCAAW,YAAM;AACf,8BAAIkC,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACtCsD,iCAAK7E,KAAL,CAAWuK,WAAX,CAAuBhJ,QAAQkF,WAA/B,EAA4C3F,CAA5C,EAA+C,KAA/C;AACD,2BAFD,MAEO;AACLS,oCAAQsR,QAAR,GAAmB/R,CAAnB;AACD;AACDiC;AACD,yBAPD,EAOG,GAPH;AAQD,uBAVD,MAUO;AACL,4BAAI8B,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACtCkB,4CAAQC,KAAR,CAAc,SAAd;AACD,yBAFD,MAEO;AACLD,4CAAQC,KAAR,CAAc,WAAd;AACD;AACD,8BAAM,OAAN;AACD;AACF,qBAtCsB;AAuCvBqQ,gCAAY,sBAAM;AAChBlM,yCAASC,KAAT;AACAjC,2BAAK7E,KAAL,CAAWqC,MAAX,IAAqBwC,KAAK5G,KAAL,CAAWwH,cAAhC,IAAkDZ,KAAK5G,KAAL,CAAWwH,cAAX,EAAlD;AACAuM,4DAAgBzQ,QAAQkQ,IAAxB;AACD,qBA3CsB;AA4CvBuB,kCAAc,KA5CS;AA6CvBC,8BAAU,KA7Ca;AA8CvBC,8BAAU,KA9Ca;AA+CvBC,2BAAO,GA/CgB;AAgDvBlO,6BACE;AAAA;AAAA,wBAAK,WAAU,WAAf;AACE;AAAA;AAAA,0BAAK,WAAW,0DAAa,QAAQ,IAArB,IAA4B,UAAU1D,QAAQoD,WAA9C,EAA4D,IAA5D,EAAhB;AAAqF,sDAAC,eAAD,IAAO,MAAM0S,0BAAS9V,QAAQoD,WAAjB,CAAb;AAArF,uBADF;AAEE;AAAA;AAAA,0BAAK,WAAU,OAAf;AAAwBpD,gCAAQkQ;AAAhC,uBAFF;AAGE;AAAA;AAAA;AACE;AAAA;AAAA,4BAAM,WAAU,OAAhB;AAAA;AAAA,yBADF;AACsC;AAAA;AAAA,4BAAM,WAAU,MAAhB;AAAwBlQ,kCAAQM;AAAhC;AADtC,uBAHF;AAOKgD,2BAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAD,IACA;AAAA;AAAA,0BAAK,WAAU,WAAf;AACE;AAAA;AAAA,4BAAM,WAAU,cAAhB;AAAgCA,kCAAQkQ,IAAxC;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA;AACE,wDAAC,qBAAD;AACE,uCAAU,SADZ;AAEE,kCAAK,MAFP;AAGE,yCAAY,4CAHd;AAIE,sCAAUlQ,QAAQM,KAAR,GAAgB,CAJ5B;AAKE,0CAAcgD,KAAK6R,iBAAL,CAAuBnV,OAAvB,CALhB;AAME,sCAAU,kBAACM,KAAD,EAAW;AAAEgD,mCAAKgR,aAAL,CAAmBtU,QAAQkF,WAA3B,EAAwC5E,KAAxC,EAA+CN,QAAQM,KAAvD;AAAgE,6BANzF;AAOE,iCAAK;AAAA,qCAASgD,gBAActD,QAAQkF,WAAtB,IAAuC7E,KAAhD;AAAA,6BAPP;AAQE,oCAAQ,gBAACyD,CAAD,EAAO;AACb,kCAAMgO,cAAcxO,gBAActD,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CA,KAA/D;AACA,kCAAIiD,KAAK3G,KAAL,CAAWU,kBAAX,KAAkC,GAAlC,IAAyCiG,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAzC,IAA+E8R,YAAYxR,KAAZ,KAAsB,EAAzG,EAA6G;AAC3G;AACD;AACDwR,0CAAYxR,KAAZ,GAAoB,2BAAewR,YAAYxR,KAA3B,CAApB;AACD;AAdH;AADF;AAFF,uBARJ;AA+BKN,8BAAQoD,WAAR,IAAuBhB,0BAASkG,OAAhC,IAA2C4F,gBAA3C,IAA+D3Q,oBAAoBC,cAApF,IAAuG,CAAC0W,QAAxG,IACA;AAAA;AAAA,0BAAK,WAAU,2BAAf;AACE;AAAA;AAAA,4BAAM,WAAU,cAAhB;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA;AACE,wDAAC,sCAAD;AACE,uCAAU,SADZ;AAEE,kCAAK,MAFP;AAGE,yCAAY,kDAHd;AAIE,qCAAS,iBAACpQ,CAAD;AAAA,qCAAOR,KAAKiS,aAAL,CAAmBvV,OAAnB,CAAP;AAAA,6BAJX;AAKE,sCAAUzC,oBAAoBE,OAApB,GAA8B,CAA9B,IAAmCF,oBAAoBE,OAApB,KAAgC,CAL/E;AAME,iCAAK;AAAA,qCAAS6F,8BAA8BjD,KAAvC;AAAA;AACL;AAPF,8BAQE,UAAU,kBAACC,KAAD;AAAA,qCAAWgD,KAAKgS,aAAL,CAAmBtV,OAAnB,CAAX;AAAA,6BARZ;AASE,oCAAQ,gBAAC8D,CAAD;AAAA,qCAAOR,KAAKgS,aAAL,CAAmBtV,OAAnB,CAAP;AAAA;AATV;AADF;AAFF,uBAhCJ;AAkDKA,8BAAQoD,WAAR,IAAuBhB,0BAASkG,OAAjC,IACA;AAAA;AAAA,0BAAK,WAAU,MAAf;AACE;AAAA;AAAA,4BAAM,WAAU,OAAhB;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA,4BAAM,WAAU,MAAhB,EAAuB,KAAK;AAAA,qCAAShF,gBAActD,QAAQkF,WAAtB,UAAwC7E,KAAjD;AAAA,6BAA5B;AAAqFiD,+BAAK8R,iBAAL,CAAuBpV,OAAvB;AAArF;AAFF,uBAnDJ;AAyDI,uBAACA,QAAQoD,WAAR,IAAuBhB,0BAASmF,EAAhC,IAAsCvH,QAAQoD,WAAR,IAAuBhB,0BAASoF,GAAtE,IAA6ExH,QAAQoD,WAAR,IAAuBhB,0BAASqF,IAA9G,KACA;AAAA;AAAA,0BAAK,WAAU,WAAf;AACE;AAAA;AAAA,4BAAM,WAAU,cAAhB;AAAgCzH,kCAAQkQ,IAAxC;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA;AACE,wDAAC,yBAAD;AACE,uCAAU,UADZ;AAEE,kCAAK,MAFP;AAGE,yCAAY,kDAHd;AAIE,iCAAK;AAAA,qCAAS5M,gBAActD,QAAQkF,WAAtB,IAAuC7E,KAAhD;AAAA,6BAJP;AADF,yBAFF;AAUIiD,6BAAKkC,eAAL,IACA;AAAA;AAAA,4BAAM,WAAU,aAAhB;AACE,wDAAC,eAAD,IAAO,MAAK,UAAZ,EAAuB,WAAU,MAAjC,EAAwC,SAASlC,KAAKoR,iBAAtD,GADF;AAEE,wDAAC,cAAD,IAAM,KAAK;AAAA,qCAAQpR,KAAKqR,OAAL,GAAeoB,IAAvB;AAAA,6BAAX,EAAwC,UAAU;AAAA,qCAASzS,KAAKuR,YAAL,CAAkBvU,KAAlB,EAAyB8Q,KAAzB,aAAyCpR,QAAQkF,WAAjD,CAAT;AAAA,6BAAlD;AAFF;AAXJ,uBA1DJ;AA4EE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,gBAAgB,IAAlB,EAAwB,iBAAiB5B,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAzC,EAAX,CAAhB;AACE;AAAA;AAAA,4BAAK,WAAU,IAAf;AACE;AAAA;AAAA;AACE,oCAAK,QADP;AAEE,uCAAS,mBAAM;AACbsD,qCAAK7E,KAAL,CAAW4F,qBAAX;AACA+M,sCAAMjF,OAAN;AACA7I,qCAAK7E,KAAL,CAAWqC,MAAX,IAAqBwC,KAAK5G,KAAL,CAAWwH,cAAhC,IAAkDZ,KAAK5G,KAAL,CAAWwH,cAAX,EAAlD;AACAuM,sEAAgBzQ,QAAQkQ,IAAxB;AACD,+BAPH;AAAA;AAAA,2BADF;AASE;AAAA;AAAA;AACE,oCAAK,QADP;AAEE,uCAAS,mBAAM;AACb,oCAAI5M,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACtC,sCAAIyV,KAAKzU,WAAWsC,gBAActD,QAAQkF,WAAtB,QAAsCsE,SAAjD,CAAT;AACA,sCAAIiM,KAAK,CAAT,EAAY;AACV,wCAAInS,gBAActD,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CA,KAA3C,CAAiDC,KAAjD,KAA2D,EAA/D,EAAmE;AACjEY,wDAAQC,KAAR,CAAc,SAAd;AACD,qCAFD,MAEO;AACLD,wDAAQC,KAAR,CAAc,cAAd;AACD;AACD;AACD,mCAPD,MAOO,IAAIsU,KAAKnS,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAAT,EAAsD;AAC3DnG,sDAAQC,KAAR,CAAc,kBAAkB,2BAAemC,KAAK5G,KAAL,CAAW2K,QAAX,CAAoB,sBAApB,CAAf,CAAlB,GAAgF,GAA9F;AACA;AACD;AACF;AACD,oCAAM9H,IAAI,oBAAM+D,gBAActD,QAAQkF,WAAtB,EAAqC,OAArC,EAA8C,OAA9C,EAAuD2Q,YAAvD,CAAoE,OAApE,CAAN,CAAV;AAfa,oCAgBLtY,mBAhBK,GAgBmB+F,KAAK3G,KAhBxB,CAgBLY,mBAhBK;;AAiBb,oCAAIA,oBAAoBC,cAApB,IAAsC0Q,gBAA1C,EAA4D;AAC1D,sCAAMtQ,eAAe0F,gBAActD,QAAQkF,WAAtB,OAArB;AACA,sCAAMrH,qBAAqByF,4BAA4BjD,KAA5B,CAAkCA,KAA7D;AACA,sCAAI1C,sBAAsB;AACxBC,kDAAcA,aAAa4L,SADH;AAExB3L,wDAAoBA,mBAAmByC;AAFf,mCAA1B;AAIAgD,uCAAKZ,QAAL,CAAc;AACZ/E,yDAAqBA;AADT,mCAAd;AAGD;AACD,oCAAI4B,MAAM,EAAV,EAAc;AACZ6R,wCAAMjF,OAAN;AACA/K,6CAAW,YAAM;AACf,wCAAIkC,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACpCsD,2CAAK7E,KAAL,CAAWuK,WAAX,CAAuBhJ,QAAQkF,WAA/B,EAA4C3F,CAA5C,EAA+C,KAA/C;AACH,qCAFD,MAEO;AACLS,8CAAQsR,QAAR,GAAmB/R,CAAnB;AACD;AACDiC;AACD,mCAPD,EAOG,GAPH;AAQD,iCAVD,MAUO;AACL,sCAAI8B,KAAKmJ,oBAAL,CAA0BzM,OAA1B,CAAJ,EAAwC;AACtCkB,sDAAQC,KAAR,CAAc,SAAd;AACD,mCAFD,MAEO;AACLD,sDAAQC,KAAR,CAAc,WAAd;AACD;AACF;AACF,+BA/CH;AAAA;AAAA;AATF;AADF;AA5EF;AAjDqB,mBAAX,CAAd;AA2LA;AACAC,6BAAW,YAAM;AACfkC,oCAActD,QAAQkF,WAAtB,EAAqC7E,KAArC,CAA2CA,KAA3C,CAAiDsE,KAAjD;AACD,mBAFD,EAEG,GAFH;AAGD,iBAhMM,CAxBM;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OA/mDI;;AAAA;AAAA;AAAA;AAAA;;AAAA,WA00DnBxB,iBA10DmB,GA00DC,UAAC/F,IAAD,EAAOuF,OAAP,EAAgBC,aAAhB,EAAkC;AACpD,aAAO,CAAED,YAAYvF,QAAQgF,0BAASmF,EAAjB,IAAuBnK,QAAQgF,0BAASoF,GAAxC,IAA+CpK,QAAQgF,0BAASqF,IAAhE,IAAwErK,QAAQgF,0BAASwE,IAAzF,IAAiGxJ,QAAQgF,0BAAS0D,GAA9H,CAAD,IACFlD,iBAAiBxF,QAAQgF,0BAASC,KADjC,KAEF,EAAEO,kBAAkBxF,QAAQgF,0BAASmF,EAAjB,IAAuBnK,QAAQgF,0BAASoF,GAA1D,CAAF,CAFL;AAGD,KA90DkB;;AAAA,WAg1DnByD,mBAh1DmB,GAg1DG,UAACjL,OAAD,EAAUiD,WAAV,EAA0B;AAC9C4J,cAAQC,GAAR,CAAY,wCAAZ,EAAsD,EAAE9M,gBAAF,EAAWiD,wBAAX,EAAtD;AACA,UAAIjD,QAAQiB,MAAR,IAAkB,CAAlB,IAAuBjB,QAAQ0M,QAAR,IAAoB,CAA/C,EAAkD;AAChDG,gBAAQC,GAAR,CAAY,qCAAZ,EAAmD,KAAnD;AACA,eAAO,KAAP;AACD;AACD,UAAI,OAAKrO,KAAL,CAAWkE,OAAf,EAAwB;AACtB,YAAIhB,WAAS,EAAE3B,QAAQqJ,UAAR,IAAsB,CAAtB,IAA2BpG,YAAY4B,MAAZ,GAAqB,CAAlD,CAAb;AACAgI,gBAAQC,GAAR,CAAY,qCAAZ,EAAmDnL,QAAnD;AACA,eAAOA,QAAP;AACD;AACD,UAAIqU,KAAK,oBAAM/S,WAAN,EAAmB,UAACgC,IAAD,EAAU;AAAE,eAAO,OAAKwH,oBAAL,CAA0BxH,IAA1B,CAAP;AAAwC,OAAvE,CAAT;AACA,UAAIgR,UAAUjW,QAAQqJ,UAAR,IAAsB,CAAtB,IAA2BpG,YAAY4B,MAAZ,GAAqB,CAA9D;AACA,UAAImR,MAAMA,GAAG1V,KAAH,IAAY,CAAtB,EAAyB;AACvB2V,kBAAUjW,QAAQqJ,UAAR,IAAsB,CAAtB,IAA2BpG,YAAY4B,MAAZ,GAAqB,CAAhD,IAAsDtE,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,IAA+B2M,GAAG1V,KAAlG;AACD;AACDuM,cAAQC,GAAR,CAAY,qCAAZ,EAAmD,CAACmJ,OAApD;AACA,aAAO,CAACA,OAAR;AACD,KAl2DkB;;AAAA,WAo2DnBC,mBAp2DmB,GAo2DG,UAACC,MAAD,EAASC,MAAT,EAAoB;AACxC,UAAIA,UAAU,CAAd,EAAiB,OAAOD,MAAP;AACjB,UAAIE,MAAMrV,WAAWmV,MAAX,CAAV;AACA,UAAIpN,MAAMsN,GAAN,CAAJ,EAAgB;AACd,eAAO,EAAP;AACD;AACD,UAAIC,YAAY/V,KAAKgW,GAAL,CAAS,EAAT,EAAaH,MAAb,CAAhB;AACAC,YAAM9V,KAAKiW,KAAL,CAAWL,SAASG,SAApB,IAAiCA,SAAvC;AACA,UAAIG,MAAMJ,IAAIK,QAAJ,EAAV;AACA,UAAIC,cAAcF,IAAIjG,OAAJ,CAAY,GAAZ,CAAlB;AACA,UAAImG,cAAc,CAAlB,EAAqB;AACnBA,sBAAcF,IAAI5R,MAAlB;AACA4R,eAAO,GAAP;AACD;AACD,aAAOA,IAAI5R,MAAJ,IAAc8R,cAAcP,MAAnC,EAA2C;AACzCK,eAAO,GAAP;AACD;AACD,aAAOA,GAAP;AACD,KAt3DkB;;AAAA,WAw3DnBG,oBAx3DmB,GAw3DI,UAACpJ,MAAD,EAAQ3F,QAAR,EAAiBgP,aAAjB,EAA+BC,UAA/B,EAA8C;AACnE,UAAMC,aAAaD,cAAcE,kBAAjC;AACA,UAAMC,YAAYH,aAAW,EAAX,GAActJ,MAAhC;AACA,UAAM0J,UAAU,EAAhB;AACArP,eAASvI,OAAT,CAAiB,UAACuM,IAAD,EAAMxD,KAAN,EAAc;AAC7B;AACA,YAAGA,QAAQwO,aAAR,KAA0B,CAA7B,EAA+B;AAC7BK,kBAAQ3W,KAAK4W,KAAL,CAAW9O,QAAMwO,aAAjB,CAAR,IAA2C,EAA3C;AACD;AACDK,gBAAQ3W,KAAK4W,KAAL,CAAW9O,QAAMwO,aAAjB,CAAR,EAAyCnH,IAAzC,CAA8C7D,IAA9C;AACD,OAND;AAOA,aAAO;AAAC,kBAAD;AAAgBoL,iBAAhB;AACJ,2BAAKC,OAAL,EAAc,UAACE,QAAD,EAAW/O,KAAX,EAAqB;AAClC,iBAAO;AAAA;AAAA,cAAK,WAAW,mBAAiBA,KAAjC;AAED,+BAAK+O,QAAL,EAAe,UAACnS,IAAD,EAAOoS,SAAP,EAAqB;AAClC,qBAAO,OAAKC,aAAL,CAAmBrS,IAAnB,EAAyBoD,QAAMwO,aAAN,GAAoBQ,SAA7C,CAAP;AACD,aAFD;AAFC,WAAP;AAOD,SARA;AADI,OAAP;AAWD,KA94DkB;;AAAA,iBAE4CjK,2BAAWC,GAAX,CAAe,MAAf,KAA0B,EAFtE;AAAA,kCAETkK,SAFS;;AAAA,wDAEqC,EAFrC;AAAA,QAEIC,YAFJ,oBAEIA,YAFJ;AAAA,QAEkBC,cAFlB,oBAEkBA,cAFlB;;AAGjB,WAAK5X,YAAL,GAAoBiJ,SAAS0O,YAAT,CAApB,CAHiB,CAG4B;AAC7C,WAAKE,cAAL,GAAsBD,cAAtB,CAJiB,CAIyB;AAC1C;;AALiB,iBAM8BE,yBAAY,EAN1C;AAAA,QAMTnS,eANS,UAMTA,eANS;AAAA,QAMQ2H,iBANR,UAMQA,iBANR;;AAOjB,WAAK3H,eAAL,GAAuB,CAAC,CAACA,eAAzB;AACA,WAAK2H,iBAAL,GAAyB,CAAC,CAACA,iBAA3B;AACA,WAAK0E,mBAAL,GAA2B,CAAC,CAACrM,eAAF,IAAqB,CAAC,CAAC2H,iBAAlD;AACA,WAAKvN,WAAL,GAAoBgY,oBAAID,QAAJ,KAAiBC,oBAAIC,QAAJ,CAAaF,QAAb,CAAsBG,QAA3D;AACA,WAAKrY,eAAL,GAAuB,OAAKA,eAAL,CAAqBsY,IAArB,QAAvB;AACA,WAAKpY,mBAAL,GAA2B,OAAKA,mBAAL,CAAyBoY,IAAzB,QAA3B;AACA,WAAKC,QAAL,GAAgB,IAAhB;AAbiB;AAclB;;;;wCAEmB;AAClB,WAAKvZ,KAAL,CAAWwZ,YAAX,CAAwB,KAAKnY,WAA7B,EAAyC,KAAKpD,KAAL,CAAWU,IAApD,EAA0D,KAAKV,KAAL,CAAW0V,SAArE;AACD;;;yCAEoB;AACnB,WAAKzT,wBAAL;AACD;;;8CAEyBuZ,S,EAAW;AACnC,UAAIA,UAAUjX,MAAV,IAAoB,KAAKvE,KAAL,CAAWuE,MAAnC,EAA2C;AACzC,aAAKxC,KAAL,CAAWtB,aAAX,CAAyB+a,UAAUjX,MAAnC;AACA,aAAKyB,QAAL,CAAc,EAAEvF,eAAe,CAAC,KAAKR,KAAL,CAAWQ,aAA7B,EAAd;AACD;AACF;;AAED;;;;;;AA0BA;oCACgB;AAAA;;AACd;AACA,UAAI,KAAKyC,WAAL,KAAqB,IAArB,IAA6B,KAAKC,YAAL,KAAsB,CAAvD,EAA0D;AACxDgO,iCAASC,oBAAT,CAA8B,eAA9B,EAA+C,IAA/C,EAAqD,eAAO;AAC1D,cAAInM,SAAS,EAAb;AACA,cAAI4G,IAAIuH,MAAJ,KAAe,CAAnB,EAAsB;AACpBnO,qBAAS,EAAE1E,mBAAmB,KAArB,EAA4BC,kBAAkBqL,IAAIjI,KAAlD,EAAT;AACD,WAFD,MAEO;AACLqB,qBAAS,EAAE1E,mBAAmB,IAArB,EAA2BC,kBAAkB,EAA7C,EAAT;AACD;AACD,iBAAKwF,QAAL,CAAcf,MAAd;AACD,SARD;AASD;AACF;AACD;;;;iCACa;AAAA;;AACX;AACA,UAAI,KAAK/B,WAAL,KAAqB,IAArB,IAA6B,KAAKC,YAAL,KAAsB,CAAvD,EAA0D;AAAA,qBACR,KAAKlD,KADG;AAAA,YAChDM,iBADgD,UAChDA,iBADgD;AAAA,YAC7BC,gBAD6B,UAC7BA,gBAD6B;;AAExD,YAAID,sBAAsB,KAA1B,EAAiC;AAC/BiE,4BAAQC,KAAR,CAAcjE,mBAAmBA,gBAAnB,GAAsC,SAApD;AACA,eAAK4H,aAAL,GAF+B,CAET;AACtB;AACD;AACD,YAAI0I,SAAS,EAAE2K,SAAS,KAAKT,cAAhB,EAAgCU,SAAS,EAAzC,EAA6CC,QAAQ,CAArD,EAAb;AACAxK,iCAASC,oBAAT,CAA8B,YAA9B,6BAAiDN,MAAjD,GAA2D,eAAO;AAChE,cAAIjF,IAAIuH,MAAJ,KAAe,CAAnB,EAAsB;AACpB5O,8BAAQC,KAAR,CAAcoH,IAAIjI,KAAlB;AACA,mBAAKwE,aAAL,GAFoB,CAEE;AACtB;AACD,WAJD,MAIO,IAAIyD,IAAIuH,MAAJ,KAAe,CAAnB,EAAsB;AAC3B;AACA,mBAAKpL,QAAL,CAAcrE,KAAd,CAAoB,OAApB,IAA+BkI,IAAIjI,KAAnC;AACA,mBAAK0E,OAAL,CAAauD,IAAIjI,KAAjB;AACD;AACF,SAVD;AAWD;AACF;;AAED;;;;kCACc;AACZ,UAAI,KAAKV,WAAL,KAAqB,IAArB,IAA6B,KAAKC,YAAL,KAAsB,CAAvD,EAA0D;AACxDgO,iCAASC,oBAAT,CAA8B,aAA9B;AACD;AACF;;AAwHD;;;AAqFA;;;AAQA;;;AAwCA;;;AAycA;;;;;;;AA0KA;;AAyKA;;;;oCAwQgB1P,G,EAAK;AACnB,aAAO,yBAAW,KAAKK,KAAL,CAAWuB,OAAX,CAAmBiD,WAA9B,EAA2C,EAAEG,aAAahF,GAAf,EAA3C,IAAmE,CAAC,CAA3E;AACD;;;qCAEgBA,G,EAAK;AACpB,UAAI,KAAKI,YAAT,EAAuB;AACrB,YAAM8B,QAAQgF,mBAAS0M,WAAT,CAAqB,KAAKxT,YAA1B,EAAwC,KAAKA,YAAL,CAAkB8B,KAA1D,EAAiElC,GAAjE,EAAsE,IAAtE,CAAd;AACA,YAAI,CAAC2K,MAAMzI,KAAN,CAAD,IAAiBA,SAAS,GAA9B,EAAmC;AACjC,eAAK9B,YAAL,CAAkB8B,KAAlB,GAA0BA,KAA1B;AACA,eAAK7B,KAAL,CAAWuK,WAAX,CAAuB,KAAKrM,KAAL,CAAWK,YAAlC,EAAgDsD,KAAhD,EAAuD,KAAvD;AACD;AACF;AACF;;;kCA6Ca2E,I,EAAMoD,K,EAAO;AAAA;;AAAA,UAEnB6L,QAFmB,GAEN,KAAKxX,KAFC,CAEnBwX,QAFmB;AAAA,mBAGiB,KAAKzV,KAHtB;AAAA,UAGnBuB,OAHmB,UAGnBA,OAHmB;AAAA,UAGV2C,OAHU,UAGVA,OAHU;AAAA,UAGDC,aAHC,UAGDA,aAHC;;AAIzB,UAAIuR,UAAU,oBAAMnU,QAAQ6H,QAAd,EAAwB,UAACgE,IAAD,EAAU;AAAE,eAAOA,KAAKzI,WAAL,KAAqBhB,0BAASqF,IAArC;AAA2C,OAA/E,CAAd;AACA;AACA,UAAI6Q,cAAcjQ,KAAlB;AACA,UAAI,CAAC6L,QAAD,IAAaC,OAAjB,EAA0B;AACxB,YAAIlP,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAA7B,IAAmCtC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAApE,EAAyE;AACvE,iBAAO,IAAP;AACD,SAFD,MAEO;AACL,cAAI4M,SAAS,sBAAQpU,QAAQ6H,QAAhB,EAA0B,aAAK;AAAE,mBAAOwM,EAAEjR,WAAF,IAAiBhB,0BAASmF,EAA1B,IAAgC8M,EAAEjR,WAAF,IAAiBhB,0BAASoF,GAAjE;AAAsE,WAAvG,CAAb;AACA8Q,wBAAc,yBAAWlE,MAAX,EAAmB,aAAK;AAAE,mBAAOlR,EAAEE,WAAF,IAAiB6B,KAAK7B,WAA7B;AAA0C,WAApE,CAAd;AACD;AACF;AACD,UAAMmV,kBAAkB,KAAKpV,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,IAAkE,iBAAlE,GAAoF,EAA5G;AACA,UAAM4V,kBAAkB,KAAKC,eAAL,CAAqBxT,KAAK7B,WAA1B,IAAwC,iBAAxC,GAA0D,EAAlF;AACA,aACE;AAAA;AAAA,UAAK,KAAKiF,QAAQ,EAAlB,EAAsB,WAAWkQ,kBAAgB,GAAhB,GAAoBC,eAApB,GAAsC,mBAAtC,GAA4D,KAAK1a,mBAAL,CAAyBwa,WAAzB,CAA7F,EAAoI,SAAS,mBAAM;AAAE,mBAAK1Q,WAAL,CAAiB3C,KAAK7B,WAAtB;AAAoC,WAAzL;AACE;AAAA;AAAA,YAAK,WAAU,MAAf;AAAsB;AAAA;AAAA,cAAK,WAAU,MAAf;AAAsB,0CAAC,eAAD,IAAO,MAAMsV,yBAAQzT,KAAK7B,WAAb,KAA6BsV,yBAAQ,SAAR,CAA1C;AAAtB;AAAtB,SADF;AAEE;AAAA;AAAA,YAAK,WAAU,MAAf;AAAuBzT,eAAKiL,IAAL,CAAUrL,MAAV,GAAmB,CAAnB,GAAuB,wBAAUI,KAAKiL,IAAf,EAAqB,EAAErL,QAAQ,CAAV,EAAa8T,UAAU,EAAvB,EAArB,IAAoD,KAA3E,GAAmF1T,KAAKiL;AAA/G,SAFF;AAGE;AAAA;AAAA,YAAK,WAAU,QAAf;AAAyB,eAAK1K,eAAL,GAAuB,EAAvB,GAA4B,KAAK1H,mBAAL,CAAyBwa,WAAzB,KAAyC;AAA9F;AAHF,OADF;AAOD;;AAuED;;;AAgBA;;;AAOA;;;AAOA;;;;6BAmVS;AAAA;;AAAA,oBAC8B,KAAK7Z,KADnC;AAAA,UACDuB,OADC,WACDA,OADC;AAAA,UACQ2C,OADR,WACQA,OADR;AAAA,UACiB/D,QADjB,WACiBA,QADjB;AAAA,mBAE+I,KAAKlC,KAFpJ;AAAA,UAEDU,IAFC,UAEDA,IAFC;AAAA,UAEK6D,MAFL,UAEKA,MAFL;AAAA,UAEa2X,YAFb,UAEaA,YAFb;AAAA,UAE2BC,aAF3B,UAE2BA,aAF3B;AAAA,UAE0C3E,QAF1C,UAE0CA,QAF1C;AAAA,UAEoD4E,cAFpD,UAEoDA,cAFpD;AAAA,UAEoEC,cAFpE,UAEoEA,cAFpE;AAAA,UAEoF3G,SAFpF,UAEoFA,SAFpF;AAAA,UAE+F4G,UAF/F,UAE+FA,UAF/F;AAAA,UAE2GC,aAF3G,UAE2GA,aAF3G;AAAA,UAE0H/K,gBAF1H,UAE0HA,gBAF1H;AAGP;;AACA,UAAItL,gBAAgB,KAAKf,OAAL,IAAgB,KAAKA,OAAL,CAAagB,SAA7B,IAA0C,KAAKhB,OAAL,CAAagB,SAAb,CAAuBC,IAAjE,IAAyEC,KAAKC,YAAL,CAAkB,KAAKnB,OAAL,CAAagB,SAAb,CAAuBC,IAAzC,EAA+C,kBAA/C,CAA7F;AACA,UAAIoW,iBAAiB,KAAKrX,OAAL,IAAgB,KAAKA,OAAL,CAAagB,SAA7B,IAA0C,KAAKhB,OAAL,CAAagB,SAAb,CAAuBC,IAAjE,IAAyE,KAAKjB,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4BqW,cAA1H;AACA;AACA,UAAIlW,cAAcrE,WAAW,sBAAQoB,QAAQiD,WAAhB,EAA6B,UAACC,CAAD,EAAO;AAAE,eAAO,EAAE,OAAKC,iBAAL,CAAuBD,EAAEE,WAAzB,EAAsCT,OAAtC,EAA+CC,aAA/C,KAAiE5B,WAAWkC,EAAE5C,KAAb,KAAuB,CAA1F,CAAP;AAAsG,OAA5I,CAAX,GAA2JN,QAAQiD,WAArL;AAPO,UAQD4E,QARC,GAQiC7H,OARjC,CAQD6H,QARC;AAAA,UAQSuR,MART,GAQiCpZ,OARjC,CAQSoZ,MART;AAAA,UAQiBrZ,WARjB,GAQiCC,OARjC,CAQiBD,WARjB;;;AAUP,UAAIsZ,WAAW,oBAAMxR,QAAN,EAAgB,UAACgE,IAAD,EAAU;AAAE,eAAOA,KAAKzI,WAAL,KAAqBhB,0BAASqF,IAArC;AAA2C,OAAvE,CAAf;;AAEA;AACA,UAAI,CAACyM,QAAD,IAAamF,QAAjB,EAA2B;AACzBxR,mBAAWA,SAASwD,MAAT,CAAgB,UAACpG,IAAD,EAAQ;AACjC,cAAIA,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAA7B,IAAmCtC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAApE,EAAyE,OAAO,IAAP;AACzE,iBAAO,IAAP;AACD,SAHU,CAAX;AAID;;AAED,UAAM8R,WAAW1W,gBAAgB,EAAhB,GAAqB,sBAAQiF,QAAR,EAAkB;AAAA,eAAW7H,QAAQuZ,OAAnB;AAAA,OAAlB,CAAtC;AACA1M,cAAQC,GAAR,CAAY,uBAAZ,EAAqC,KAAKpQ,KAAL,CAAWU,IAAhD;AACA;;AAEA,UAAIoc,kBAAoBpc,QAAQ,CAAR,IAAa,KAAKyE,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B2W,aAA5B,CAA0C5U,MAA1C,IAAoD,CAAlE,IAAyEzH,QAAQ,CAAR,IAAa4D,WAAWC,UAAU,CAArB,KAA2B,CAAjH,IAAuH8X,cAA9I;AACA,UAAI3G,SAAJ,EAAe;AACboH,0BAAmBpc,QAAQ,CAAR,IAAa,KAAKyE,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B2W,aAA5B,CAA0C5U,MAA1C,IAAoD,CAAlE,IAAwE5D,WAAW,GAAnF,IAA0F+X,UAA1F,IAAyG5b,QAAQ,CAAR,IAAa4D,WAAWC,UAAU,CAArB,MAA4B,CAAlJ,IAAwJ8X,cAA1K;AACD;;AAED,UAAIE,aAAJ,EAAmB;AACjBO,0BAAmBpc,QAAQ,CAAR,IAAa,KAAKyE,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B2W,aAA5B,CAA0C5U,MAA1C,IAAoD,CAAlE,IAAwE5D,WAAW,GAAnF,IAA2F7D,QAAQ,CAAR,IAAa4D,WAAWC,UAAU,CAArB,MAA4B,CAApI,IAA0I8X,cAA5J;AACD;;AAED,UAAMW,eAAe,EAArB;AACA,UAAMlM,SAAS;AACbmM,oBAAY;AACV7E,cAAI;AADM,SADC;AAIb8E,sBAAc;AAJD,OAAf;AAMA,UAAM/C,gBAAgB,EAAtB;AACA,UAAMgD,iBAAiB,CAAvB;AACA,UAAM7c,eAAe,KAAKL,KAAL,CAAWK,YAAhC;AACA,UAAMiK,YAAYlH,eAAeA,YAAYE,MAA3B,IAAqCF,YAAYE,MAAZ,CAAmBc,EAA1E;AA3CO,UA4CCxD,mBA5CD,GA4CyB,KAAKZ,KA5C9B,CA4CCY,mBA5CD;;AA6CP,UAAIuc,YAAY,CAAhB;AAAA,UAAmBC,YAAY,CAA/B;AAAA,UAAkCC,YAAY,CAA9C;AAAA,UAAiDC,YAAY,CAA7D;AACA,UAAIC,cAAc,CAAlB,CA9CO,CA8Ca;;AA9Cb,mBA+CuCpB,kBAAkB,EA/CzD;AAAA,sCA+CDqB,WA/CC;AAAA,UA+CDA,WA/CC,sCA+Ca,CA/Cb;AAAA,yCA+CgBC,cA/ChB;AAAA,UA+CgBA,cA/ChB,yCA+CiC,CA/CjC;;AAgDP,UAAIC,oBAAoB,gCAAY,mBAAZ,CAAxB;AACAA,0BAAoBA,oBAAoBvR,SAASuR,iBAAT,CAApB,GAAkD,EAAtE;AACA,UAAI,KAAK3d,KAAL,CAAW4d,UAAf,EAA2B;AACzBR,oBAAYlB,gBAAgB,KAAK/W,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B2W,aAA5B,CAA0C5U,MAAtE;AACAkV,oBAAY,KAAK7D,mBAAL,CAAyB2C,aAAzB,EAAwCwB,iBAAxC,CAAZ;AACAL,oBAAY,KAAK9D,mBAAL,CAAyBiE,WAAzB,EAAsCE,iBAAtC,CAAZ;AACAJ,oBAAY,KAAK/D,mBAAL,CAAyBkE,cAAzB,EAAyCC,iBAAzC,CAAZ;AACA,YAAIE,mBAAmB,KAAK1Y,OAAL,IAAgB,KAAKA,OAAL,CAAagB,SAA7B,IAA0C,KAAKhB,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B2W,aAA7F;AACA,YAAIc,oBAAoBA,iBAAiB1V,MAAjB,GAA0B,CAAlD,EAAqD;AACnD0V,2BAAiBjb,OAAjB,CAAyB,aAAK;AAC5B4a,2BAAe3Z,KAAK6I,GAAL,CAAS7J,EAAEib,QAAX,CAAf;AACD,WAFD;AAGD;AACDN,sBAAc,KAAKhE,mBAAL,CAAyBgE,WAAzB,EAAsCG,iBAAtC,CAAd;AACD;AACD,aACE;AAAA;AAAA,UAAK,WAAU,mBAAf,EAAmC,KAAK;AAAA,mBAAK,OAAKtb,yBAAL,GAAiC0b,CAAtC;AAAA,WAAxC;AAEI,aAAK/d,KAAL,CAAW4d,UAAX,IAAyB;AAAA;AAAA,YAAK,WAAU,YAAf;AACvB;AAAA;AAAA,cAAK,WAAU,SAAf;AACE;AAAA;AAAA,gBAAK,WAAU,MAAf;AAAA;AAAA,aADF;AAEE;AAAA;AAAA,gBAAK,WAAW,0BAAW,EAAE,UAAU,IAAZ,EAAkB,aAAa/Z,KAAK6I,GAAL,CAAS8P,cAAT,IAA2B,MAA1D,EAAX,CAAhB;AAAiG,yCAAeA,cAAf;AAAjG;AAFF,WADuB;AAMrBhF,uBAAa,IAAb,GACE;AAAA;AAAA,cAAK,WAAU,SAAf;AACE;AAAA;AAAA;AAAA,yBAAW4F,SAAX;AAAA,aADF;AAEE;AAAA;AAAA,gBAAM,WAAU,MAAhB;AAAA;AAAA,aAFF;AAEiC;AAAA;AAAA;AAAOE;AAAP,aAFjC;AAEyD;AAAA;AAAA;AAAA;AAAA,aAFzD;AAGE;AAAA;AAAA,gBAAM,WAAU,MAAhB;AAAA;AAAA,aAHF;AAGiC;AAAA;AAAA;AAAOC;AAAP,aAHjC;AAGyD;AAAA;AAAA;AAAA;AAAA,aAHzD;AAIE;AAAA;AAAA,gBAAM,WAAU,MAAhB;AAAA;AAAA,aAJF;AAIkC;AAAA;AAAA;AAAOC;AAAP;AAJlC,WADF,GAQE;AAAA;AAAA,cAAK,WAAU,SAAf;AACE;AAAA;AAAA;AAAA,yBAAWJ,SAAX;AAAA,aADF;AAEE;AAAA;AAAA,gBAAM,WAAU,MAAhB;AAAwBC;AAAxB,aAFF;AAE2C;AAAA;AAAA;AAAA;AAAA,aAF3C;AAGE;AAAA;AAAA,gBAAM,WAAU,MAAhB;AAAA;AAAA,aAHF;AAGkC;AAAA;AAAA;AAAOG;AAAP;AAHlC;AAdmB,SAF7B;AAwBE;AAAA;AAAA,YAAK,WAAU,MAAf;AAEI,WAAC,KAAK1U,eAAN,IACA,mBAAK8T,QAAL,EAAe,UAAC7J,CAAD,EAAIiL,CAAJ,EAAU;AAAA;;AACvB,gBAAIC,YAAY7E,0BAASrG,EAAErM,WAAX,eAAkChG,SAAO,CAAP,GAAW,CAAX,GAAeqS,EAAErM,WAAnD,IAAmE,cAAnF;;AAEA,mBACE;AAAA;AAAA;AACE,2BAAWhG,SAAS,CAAT,GAAa,QAAb,GAAwB,OADrC;AAEE,sCAAoBqS,EAAErM,WAFxB;AAGE,yBAAS,mBAAM;AAAE,yBAAK+O,YAAL,CAAkB1C,EAAErM,WAApB,EAAiC,IAAjC;AAAwC,iBAH3D;AAIE,0BAAUoW,mBAAoBpc,QAAQ,CAAR,IAAa,OAAK+F,iBAAL,CAAuBsM,EAAErM,WAAzB,EAAsC,CAAC,OAAKvB,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4BqW,cAA5B,IAA8C,IAAI,OAAKtX,OAAL,CAAagB,SAAb,CAAuBC,IAAvB,CAA4B8X,mBAA9E,IAAqG,CAAtG,IAA2G,CAAjJ,EAAoJhY,aAApJ;AAJ7C;AAME;AAAA;AAAA,kBAAK,WAAW,0FAAc+X,SAAd,EAA0B,IAA1B,+CAAgC,MAAhC,EAAwC,IAAxC,iBAAhB;AAAiE,8CAAC,eAAD,IAAO,MAAM7E,0BAASrG,EAAErM,WAAX,KAA2B0S,0BAAS,SAAT,CAAxC;AAAjE,eANF;AAOE;AAAA;AAAA,kBAAK,WAAU,MAAf;AAAuBrG,kBAAES,IAAF,CAAOrL,MAAP,GAAgB,CAAhB,GAAoB,wBAAU4K,EAAES,IAAZ,EAAkB,EAAErL,QAAQ,CAAV,EAAa8T,UAAU,EAAvB,EAAlB,IAAiD,KAArE,GAA6ElJ,EAAES;AAAtG;AAPF,aADF;AAUD,WAbD,CAHJ;AAkBE;AAAA;AAAA,cAAQ,KAAI,QAAZ,EAAqB,WAAW,0BAAW,EAAE,UAAU,IAAZ,EAAkB,WAAW9S,QAAQ,CAArC,EAAX,CAAhC,EAAsF,SAAS,mBAAM;AAAE,uBAAK+U,YAAL;AAAqB,eAA5H,EAA8H,UAAUqH,eAAxI;AAA0JJ,mBAAOlJ;AAAjK;AAlBF,SAxBF;AA4CIhC,2BAAmB9Q,QAAQ,CAAR,IAAa,CAACwB,QAAd,IAA0B;AAAA;AAAA;AAC7C,mBAAM,0BADuC;AAE7C,mBAAM,OAFuC;AAG7C,uBAAU,OAHmC;AAI7C,0BAAc,KAJ+B;AAK7C,sBAAU,KALmC;AAM7C,qBAAS,KAAKmF,YAN+B;AAO7C,kBAAM,KAAKpH,KAAL,CAAWC,OAP4B;AAQ7C,8CAAgCie,cAAOC,eAAP,CAAuB,GAAvB;AARa;AAU3C;AAAA;AAAA,cAAK,WAAU,YAAf;AACA;AAAA;AAAA,gBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,YAAYjT,SAAShD,MAAT,GAAkBgS,aAAjD,EAAX,CAAhB;AACGhP,uBAAShD,MAAT,IAAmBgS,aAAnB,IAAoC;AAAA;AAAA;AAAM,mCAAKhP,QAAL,EAAe,UAAC5C,IAAD,EAAOoD,KAAP,EAAiB;AACzE,yBAAO,OAAKiP,aAAL,CAAmBrS,IAAnB,EAAyBoD,KAAzB,CAAP;AACD,iBAF0C;AAAN,eADvC;AAIGR,uBAAShD,MAAT,GAAkBgS,aAAlB,IAAmC,KAAKD,oBAAL,CAA0BpJ,MAA1B,EAAiC3F,QAAjC,EAA0CgP,aAA1C;AAJtC,aADA;AAOA;AAAA;AAAA,gBAAK,WAAU,WAAf,EAA2B,OAAO,EAAEkE,WAAYrV,SAASsV,IAAT,CAAcC,YAAd,IAA8BpT,SAAShD,MAAT,GAAkB,CAAlB,GAAsB,GAAtB,GAA4B,GAA1D,CAAD,GAAmE,IAAhF,EAAlC;AACE;AAAA;AAAA,kBAAK,WAAU,MAAf;AAEI5B,4BAAY4B,MAAZ,IAAsB,CAAtB,IAA2B;AAAA;AAAA,oBAAK,WAAU,uBAAf;AAAA;AAAA,iBAF/B;AAKI,mCAAK5B,WAAL,EAAkB,UAACgC,IAAD,EAAU;AAC1B,sBAAMoD,QAAQpD,KAAKC,WAAnB;AACA,yBAAQ;AAAA;AAAA,sBAAK,KAAKmD,QAAQ,EAAlB,EAAsB,WAAU,UAAhC;AACN;AAAA;AAAA,wBAAK,WAAU,MAAf;AACE;AAAA;AAAA,0BAAK,WAAU,UAAf,EAA0B,SAAS,mBAAM;AACvC,mCAAKD,QAAL,CAAcC,KAAd,EAAqBzF,iBAAiBqC,KAAKrC,aAA3C,EAA0DqC,KAAK7B,WAA/D;AACD,2BAFD;AAEG,sDAAC,eAAD,IAAO,MAAK,QAAZ,EAAqB,WAAU,OAA/B;AAFH,uBADF;AAIE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAepG,gBAAgBqL,KAA/C,EAAX,CAAhB;AAAqFpD,6BAAKiL;AAA1F,uBAJF;AAKE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAelT,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEKpD,6BAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAAnE,IAA2E3B,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAAzG,GACE,yCAAO,eAAauC,KAApB;AACE,qCAAWwS,cAAOK,eAAP,EADb;AAEE,mCAAS,mBAAM;AAAE,mCAAKjT,SAAL,CAAeI,KAAf,EAAsBpD,KAAK7B,WAA3B,EAAwCR,aAAxC;AAAwD,2BAF3E,EAE6E,OAAO,2BAAeqC,KAAK3E,KAApB,CAFpF,GADF,GAKE,yCAAO,eAAa+H,KAApB;AACE,qCAAWwS,cAAOK,eAAP,EADb;AAEE,iCAAOjW,KAAK6C,YAAL,IAAqB,CAArB,GAAyB7C,KAAKgL,MAA9B,GAAuChL,KAAK3E,KAFrD;AAGE,kCAAQ;AAAA,mCAAK,OAAKuJ,MAAL,CAAYxB,KAAZ,EAAmBvE,CAAnB,CAAL;AAAA,2BAHV;AAIE,mCAAS;AAAA,mCAAK,OAAKoG,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA,2BAJX;AAKE,oCAAU;AAAA,mCAAKmB,KAAK7B,WAAL,KAAqBhB,0BAASkG,OAA9B,GACZ,OAAKW,qBAAL,CAA2BZ,KAA3B,EAAkCvE,CAAlC,CADY,GAEX,OAAK6E,YAAL,CAAkBN,KAAlB,EAAyBvE,CAAzB,EAA4BmB,KAAK7B,WAAjC,EAA8ChB,yBAA9C,CAFM;AAAA;AALZ;AAPN,uBALF;AAwBE;AAAA;AAAA,0BAAK,WAAU,WAAf,EAA2B,OAAO,EAAE+Y,SAASlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,GAAqC,cAArC,GAAsD,MAAjE,EAAlC;AACE,mCAAS,mBAAM;AACb,mCAAK8H,aAAL,CAAmBvH,aAAnB;AACD,2BAHH;AAGK,sDAAC,eAAD,IAAO,MAAK,SAAZ,EAAsB,WAAU,MAAhC;AAHL;AAxBF,qBADM;AA+BJqC,yBAAK7B,WAAL,IAAoBhB,0BAAS0D,GAA7B,GACE;AAAA;AAAA,wBAAK,WAAU,QAAf,EAAwB,OAAO,EAAEqV,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,0BAAM,WAAU,SAAhB;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA;AAAOb,6BAAKmW;AAAZ;AAFF,qBADF,GAKE;AAAA;AAAA,wBAAK,WAAU,QAAf,EAAwB,OAAO,EAAED,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAsBb,6BAAKhF,MAAL,IAAegF,KAAKhF,MAAL,CAAYob;AAAjD,uBAFF;AAGE,+DAHF;AAIE;AAAA;AAAA,0BAAM,WAAU,YAAhB;AAAA;AAAA,uBAJF;AAKE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAsB,mDAAepW,KAAKrE,OAApB;AAAtB;AALF;AApCE,mBAAR;AA6CD,iBA/CD;AALJ,eADF;AA2DE;AAAA;AAAA,kBAAK,WAAU,OAAf;AACE;AAAA;AAAA,oBAAK,WAAU,UAAf;AACGZ,0BAAQsb,YAAR,GAAuB,CAAvB,IAA4B;AAAA;AAAA,sBAAK,WAAU,YAAf;AAC3B;AAAA;AAAA;AAAA;AAAA,qBAD2B;AAE3B;AAAA;AAAA;AAAOtb,8BAAQsb;AAAf;AAF2B,mBAD/B;AAKE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOtb,8BAAQiB;AAAf;AAFF,mBALF;AASE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOjB,8BAAQqJ;AAAf;AAFF,mBATF;AAaE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4BrJ,8BAAQ0M;AAApC;AAFF,mBAbF;AAiBE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,2BAAKjO,KAAL,CAAWyD,GAAX,IAAkB,2BAAe,KAAKzD,KAAL,CAAWyD,GAAX,CAAeqZ,4BAA9B;AAA9C;AAFF,mBAjBF;AAqBE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,2BAAK9c,KAAL,CAAWyD,GAAX,IAAkB,2BAAe,KAAKzD,KAAL,CAAWyD,GAAX,CAAesZ,yBAA9B;AAA9C;AAFF,mBArBF;AAyBE;AAAA;AAAA,sBAAK,WAAU,YAAf,EAA4B,OAAO,EAAEL,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACE;AAAA;AAAA,wBAAM,WAAU,iBAAhB;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,KAAK;AAAA,iCAAS,sCAAoC1P,KAA7C;AAAA,yBAAX,EAA+D,WAAU,UAAzE;AAAqF,iDAAeE,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAArF;AAFF,mBAzBF;AA6BG;AAAA;AAAA,sBAAK,WAAU,YAAf;AAEC,uCAAKpG,WAAL,EAAkB,UAACgC,IAAD,EAAU;AAC1B,0BAAIA,KAAK7B,WAAL,KAAqBhB,0BAASkG,OAA9B,IAAyC4F,gBAAzC,IAA6D3Q,oBAAoBC,cAAjF,IAAmGD,oBAAoBE,OAApB,GAA8B,CAAjI,IAAsI,CAACyW,QAA3I,EAAqJ;AACnJ,4BAAM7L,QAAQpD,KAAKC,WAAnB;AACA,+BAAQ;AAAA;AAAA,4BAAK,KAAKmD,QAAQ,EAAlB,EAAsB,WAAU,0CAAhC;AACN;AAAA;AAAA,8BAAK,WAAU,MAAf;AACE;AAAA;AAAA,gCAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAerL,gBAAgBqL,KAA/C,EAAX,CAAhB;AAAA;AAAA,6BADF;AAEE;AAAA;AAAA,gCAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAerL,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEI,uEAAO,KAAK;AAAA,yCAAS,+BAA6BhI,KAAtC;AAAA,iCAAZ;AACE,2CAAWwa,cAAOK,eAAP,EADb;AAEE,oCAAG,mBAFL;AAGE,wCAAQ,mBAAK;AACX,yCAAKxR,0BAAL,CAAgCrB,KAAhC,EAAuCvE,CAAvC,EAA0CmB,KAAK7B,WAA/C,EAA4DhB,yBAA5D;AACA,sCAAMvE,qBAAqB,4BAA3B;AAFW,sCAGHN,mBAHG,GAGqB,OAAKZ,KAH1B,CAGHY,mBAHG;;AAIX,sCAAIM,mBAAmByC,KAAnB,GAA2B/C,oBAAoBE,OAAnD,EAA4D;AAC1DyD,sDAAQoG,IAAR,wHAAmC/J,oBAAoBE,OAAvD;AACAI,uDAAmByC,KAAnB,GAA2B,2BAAe,CAAf,CAA3B;AACA,2CAAKzC,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAe,CAAf,CAAhC;AACA,2CAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejJ,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAA3C;AACA,2CAAK5K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACA;AACD,mCAPD,MAOO;AACL;AACAzC,uDAAmByC,KAAnB,GAA2B,2BAAezC,mBAAmByC,KAAlC,CAA3B;AACA,2CAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejM,oBAAoBE,OAApB,GAA8BI,mBAAmByC,KAAhE,CAA3C;AACA,wCAAI/C,oBAAoBE,OAApB,GAA8B,CAAlC,EAAqC;AACnC,6CAAKgB,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACA;AACD;AACF;AACD,sCAAI3C,sBAAsB;AACxBC,kDAAc,OAAK2L,yBAAL,CAA+BC,SADrB;AAExB3L,wDAAoB,OAAKA,kBAAL,CAAwByC;AAFpB,mCAA1B;AAIA,yCAAKoC,QAAL,CAAc;AACZ/E,yDAAqBA;AADT,mCAAd;AAGD,iCA9BH;AA+BE,yCAAS,oBAAK;AACZ,yCAAKuM,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC;AACA,+DAA2B8R,MAA3B;AACD;AAlCH;AAFJ;AAFF;AADM,yBAAR;AA6CD;AACF,qBAjDD;AAFD;AA7BH,iBADF;AAqFE;AAAA;AAAA,oBAAK,WAAW,KAAKpQ,eAAL,GAAuB,cAAvB,GAAwC,UAAxD;AAEI,mBAAC,KAAKA,eAAN,IACA,8BAAC,kBAAD,IAAU,MAAK,QAAf,EAAwB,UAAU,KAAKuO,qBAAL,CAA2BgE,IAA3B,CAAgC,IAAhC,CAAlC;AAHJ;AArFF;AA3DF,aAPA;AA+JA;AAAA;AAAA,gBAAK,WAAU,WAAf;AACE,sDAAM,WAAU,aAAhB,EAA8B,SAAS,KAAKhN,aAA5C,GADF;AAEE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKhH,YAAzC;AAAA;AAAA;AAAN,eAFF;AAGE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAW,KAAKyB,eAAL,GAAuB,SAAvB,GAAmC,QAAtD,EAAgE,SAAS,KAAKjD,YAA9E;AACJ,8BAAU,KAAK0I,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CADN;AAAA;AAAA;AAAN;AAHF;AA/JA;AAV2C,SAA7C,GAgLU7F,QAAQ,CAAR,IAAa,CAACwB,QAAd,IAA0B;AAAA;AAAA;AACpC,mBAAM,0BAD8B;AAEpC,mBAAM,OAF8B;AAGpC,uBAAU,OAH0B;AAIpC,0BAAc,KAJsB;AAKpC,sBAAU,KAL0B;AAMpC,qBAAS,KAAKmF,YANsB;AAOpC,kBAAM,KAAKpH,KAAL,CAAWC,OAPmB;AAQpC,8CAAgCie,cAAOC,eAAP,CAAuB,GAAvB;AARI;AAUlC;AAAA;AAAA,cAAK,WAAU,YAAf;AACA;AAAA;AAAA,gBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,YAAYjT,SAAShD,MAAT,GAAkBgS,aAAjD,EAAX,CAAhB;AACGhP,uBAAShD,MAAT,IAAmBgS,aAAnB,IAAoC;AAAA;AAAA;AAAM,mCAAKhP,QAAL,EAAe,UAAC5C,IAAD,EAAOoD,KAAP,EAAiB;AACzE,yBAAO,OAAKiP,aAAL,CAAmBrS,IAAnB,EAAyBoD,KAAzB,CAAP;AACD,iBAF0C;AAAN,eADvC;AAIGR,uBAAShD,MAAT,GAAkBgS,aAAlB,IAAmC,KAAKD,oBAAL,CAA0BpJ,MAA1B,EAAiC3F,QAAjC,EAA0CgP,aAA1C;AAJtC,aADA;AAOA;AAAA;AAAA,gBAAK,WAAU,WAAf,EAA2B,OAAO,EAAEkE,WAAYrV,SAASsV,IAAT,CAAcC,YAAd,IAA8BpT,SAAShD,MAAT,GAAkB,CAAlB,GAAsB,GAAtB,GAA4B,GAA1D,CAAD,GAAmE,IAAhF,EAAlC;AACE;AAAA;AAAA,kBAAK,WAAU,MAAf;AAEI5B,4BAAY4B,MAAZ,IAAsB,CAAtB,IAA2B;AAAA;AAAA,oBAAK,WAAU,uBAAf;AAAA;AAAA,iBAF/B;AAKI,mCAAK5B,WAAL,EAAkB,UAACgC,IAAD,EAAU;AAC1B,sBAAMoD,QAAQpD,KAAKC,WAAnB;AACA,yBAAQ;AAAA;AAAA,sBAAK,KAAKmD,QAAQ,EAAlB,EAAsB,WAAU,UAAhC;AACN;AAAA;AAAA,wBAAK,WAAU,MAAf;AACE;AAAA;AAAA,0BAAK,WAAU,UAAf,EAA0B,SAAS,mBAAM;AACvC,mCAAKD,QAAL,CAAcC,KAAd,EAAqBzF,iBAAiBqC,KAAKrC,aAA3C,EAA0DqC,KAAK7B,WAA/D;AACD,2BAFD;AAEG,sDAAC,eAAD,IAAO,MAAK,QAAZ,EAAqB,WAAU,OAA/B;AAFH,uBADF;AAIE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAepG,gBAAgBqL,KAA/C,EAAX,CAAhB;AAAqFpD,6BAAKiL;AAA1F,uBAJF;AAKE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAelT,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEKpD,6BAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAAnE,IAA2E3B,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAAzG,GACE,yCAAO,eAAauC,KAApB;AACE,qCAAWwS,cAAOK,eAAP,EADb;AAEE,mCAAS,mBAAM;AAAE,mCAAKjT,SAAL,CAAeI,KAAf,EAAsBpD,KAAK7B,WAA3B,EAAwCR,aAAxC;AAAwD,2BAF3E,EAE6E,OAAO,2BAAeqC,KAAK3E,KAApB,CAFpF,GADF,GAKE,yCAAO,eAAa+H,KAApB;AACE,qCAAWwS,cAAOK,eAAP,EADb;AAEE,iCAAOjW,KAAK6C,YAAL,IAAqB,CAArB,GAAyB7C,KAAKgL,MAA9B,GAAuChL,KAAK3E,KAFrD;AAGE,kCAAQ;AAAA,mCAAK,OAAKuJ,MAAL,CAAYxB,KAAZ,EAAmBvE,CAAnB,CAAL;AAAA,2BAHV;AAIE,mCAAS;AAAA,mCAAK,OAAKoG,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA,2BAJX;AAKE,oCAAU;AAAA,mCAAK,OAAK6E,YAAL,CAAkBN,KAAlB,EAAyBvE,CAAzB,CAAL;AAAA;AALZ;AAPN,uBALF;AAqBE;AAAA;AAAA,0BAAK,WAAU,WAAf,EAA2B,OAAO,EAAEqX,SAASlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,GAAqC,cAArC,GAAsD,MAAjE,EAAlC;AACE,mCAAS,mBAAM;AACb,mCAAK8H,aAAL,CAAmBvH,aAAnB;AACD,2BAHH;AAGK,sDAAC,eAAD,IAAO,MAAK,SAAZ,EAAsB,WAAU,MAAhC;AAHL;AArBF,qBADM;AA4BJqC,yBAAK7B,WAAL,IAAoBhB,0BAAS0D,GAA7B,GACE;AAAA;AAAA,wBAAK,WAAU,QAAf,EAAwB,OAAO,EAAEqV,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,0BAAM,WAAU,SAAhB;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA;AAAOb,6BAAKmW;AAAZ;AAFF,qBADF,GAKE;AAAA;AAAA,wBAAK,WAAU,QAAf,EAAwB,OAAO,EAAED,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAsBb,6BAAKhF,MAAL,IAAegF,KAAKhF,MAAL,CAAYob;AAAjD,uBAFF;AAGE,+DAHF;AAIE;AAAA;AAAA,0BAAM,WAAU,YAAhB;AAAA;AAAA,uBAJF;AAKE;AAAA;AAAA,0BAAM,WAAU,IAAhB;AAAsB,mDAAepW,KAAKrE,OAApB;AAAtB;AALF;AAjCE,mBAAR;AA0CD,iBA5CD;AALJ,eADF;AAqDE;AAAA;AAAA,kBAAK,WAAU,OAAf;AACE;AAAA;AAAA,oBAAK,WAAU,UAAf;AACGZ,0BAAQsb,YAAR,GAAuB,CAAvB,IAA4B;AAAA;AAAA,sBAAK,WAAU,YAAf;AAC3B;AAAA;AAAA;AAAA;AAAA,qBAD2B;AAE3B;AAAA;AAAA;AAAOtb,8BAAQsb;AAAf;AAF2B,mBAD/B;AAKE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOtb,8BAAQiB;AAAf;AAFF,mBALF;AASE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOjB,8BAAQqJ;AAAf;AAFF,mBATF;AAaE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4BrJ,8BAAQ0M;AAApC;AAFF,mBAbF;AAiBE;AAAA;AAAA,sBAAK,WAAU,YAAf,EAA4B,OAAO,EAAEyO,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,iDAAexP,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAA5B;AAFF;AAjBF,iBADF;AAuBE,0DAvBF;AAyBE;AAAA;AAAA,oBAAK,WAAW,KAAK7D,eAAL,GAAuB,cAAvB,GAAwC,UAAxD;AAEI,mBAAC,KAAKA,eAAN,IACA,8BAAC,kBAAD,IAAU,MAAK,QAAf,EAAwB,UAAU,KAAKiW,gBAAL,CAAsB1D,IAAtB,CAA2B,IAA3B,CAAlC;AAHJ;AAzBF;AArDF,aAPA;AA6FA;AAAA;AAAA,gBAAK,WAAU,WAAf;AACE,sDAAM,WAAU,aAAhB,EAA8B,SAAS,KAAKhN,aAA5C,GADF;AAEE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKhH,YAAzC;AAAA;AAAA;AAAN,eAFF;AAGE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAW,KAAKyB,eAAL,GAAuB,SAAvB,GAAmC,QAAtD,EAAgE,SAAS,KAAKjD,YAA9E;AACJ,8BAAU,KAAK0I,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CADN;AAAA;AAAA;AAAN;AAHF;AA7FA;AAVkC,SA5NxC;AA2UG7F,gBAAQ,CAAR,IAAawB,QAAb,IAAyB;AAAA;AAAA;AACxB,mBAAM,0BADkB;AAExB,mBAAM,OAFkB;AAGxB,uBAAU,OAHc;AAIxB,0BAAc,KAJU;AAKxB,sBAAU,KALc;AAMxB,qBAAS,KAAKmF,YANU;AAOxB,kBAAM,KAAKpH,KAAL,CAAWC,OAPO;AAQxB,8CAAgCie,cAAOC,eAAP,CAAuB,GAAvB;AARR;AAUxB;AAAA;AAAA,cAAK,WAAU,YAAf;AACE;AAAA;AAAA,gBAAK,WAAU,oBAAf;AACE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE;AAAA;AAAA,oBAAK,WAAU,UAAf;AACG9a,0BAAQsb,YAAR,GAAuB,CAAvB,IAA4B;AAAA;AAAA,sBAAK,WAAU,YAAf;AAC3B;AAAA;AAAA;AAAA;AAAA,qBAD2B;AAE3B;AAAA;AAAA;AAAOtb,8BAAQsb;AAAf;AAF2B,mBAD/B;AAKE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOtb,8BAAQiB;AAAf;AAFF,mBALF;AASE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOjB,8BAAQqJ;AAAf;AAFF,mBATF;AAaE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4BrJ,8BAAQ0M;AAApC;AAFF,mBAbF;AAiBE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,2BAAKjO,KAAL,CAAWyD,GAAX,IAAkB,2BAAe,KAAKzD,KAAL,CAAWyD,GAAX,CAAeqZ,4BAA9B;AAA9C;AAFF,mBAjBF;AAqBE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,2BAAK9c,KAAL,CAAWyD,GAAX,IAAkB,2BAAe,KAAKzD,KAAL,CAAWyD,GAAX,CAAesZ,yBAA9B;AAA9C;AAFF,mBArBF;AA2BItN,qCAAmB;AAAA;AAAA,sBAAK,WAAU,YAAf,EAA4B,OAAO,EAAEiN,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACnB;AAAA;AAAA;AAAA;AAAA,qBADmB;AAEjB;AAAA;AAAA,wBAAM,KAAK;AAAA,iCAAS,sCAAoC1P,KAA7C;AAAA,yBAAX,EAA+D,WAAU,UAAzE;AAAqF,iDAAeE,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAArF;AAFiB,mBAAnB,GAIA;AAAA;AAAA,sBAAK,WAAU,YAAf,EAA4B,OAAO,EAAE8R,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACA;AAAA;AAAA;AAAA;AAAA,qBADA;AAEA;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,iDAAexP,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAA5B;AAFA,mBA/BJ;AAoCG;AAAA;AAAA,sBAAK,WAAU,YAAf;AAEC,uCAAKpG,WAAL,EAAkB,UAACgC,IAAD,EAAU;AAC1B,0BAAIA,KAAK7B,WAAL,KAAqBhB,0BAASkG,OAA9B,IAAyC4F,gBAAzC,IAA6D3Q,oBAAoBC,cAAjF,IAAmGD,oBAAoBE,OAApB,GAA8B,CAAjI,IAAsI,CAACyW,QAA3I,EAAqJ;AACnJ,4BAAM7L,QAAQpD,KAAKC,WAAnB;AACA,+BAAQ;AAAA;AAAA,4BAAK,KAAKmD,QAAQ,EAAlB,EAAsB,WAAU,+BAAhC;AACN;AAAA;AAAA,8BAAK,WAAU,MAAf;AACE;AAAA;AAAA,gCAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAerL,gBAAgBqL,KAA/C,EAAX,CAAhB;AAAA;AAAA,6BADF;AAEI;AAAA;AAAA,gCAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAerL,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEI,uEAAO,KAAK;AAAA,yCAAS,+BAA6BhI,KAAtC;AAAA,iCAAZ;AACE,2CAAWwa,cAAOK,eAAP,EADb;AAEE,wCAAQ,mBAAK;AACX,yCAAKxR,0BAAL,CAAgCrB,KAAhC,EAAuCvE,CAAvC,EAA0CmB,KAAK7B,WAA/C,EAA4DhB,yBAA5D;AACA,sCAAMvE,qBAAqB,4BAA3B;AAFW,sCAGHN,mBAHG,GAGqB,OAAKZ,KAH1B,CAGHY,mBAHG;;AAIX,sCAAIM,mBAAmByC,KAAnB,GAA2B/C,oBAAoBE,OAAnD,EAA4D;AAC1DyD,sDAAQoG,IAAR,wHAAmC/J,oBAAoBE,OAAvD;AACAI,uDAAmByC,KAAnB,GAA2B,2BAAe,CAAf,CAA3B;AACA,2CAAKzC,kBAAL,CAAwByC,KAAxB,GAAgC,2BAAe,CAAf,CAAhC;AACA,2CAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejJ,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf,CAA3C;AACA,2CAAK5K,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACA;AACD,mCAPD,MAOO;AACL;AACAzC,uDAAmByC,KAAnB,GAA2B,2BAAezC,mBAAmByC,KAAlC,CAA3B;AACA,2CAAKiJ,yBAAL,CAA+BC,SAA/B,GAA2C,2BAAejM,oBAAoBE,OAApB,GAA8BI,mBAAmByC,KAAhE,CAA3C;AACA,wCAAI/C,oBAAoBE,OAApB,GAA8B,CAAlC,EAAqC;AACnC,6CAAKgB,KAAL,CAAWgL,uBAAX,CAAmC,OAAKF,yBAAL,CAA+BC,SAAlE,EAA6E,OAAK3L,kBAAL,CAAwByC,KAArG;AACA;AACD;AACF;AACD,sCAAI3C,sBAAsB;AACxBC,kDAAc,OAAK2L,yBAAL,CAA+BC,SADrB;AAExB3L,wDAAoB,OAAKA,kBAAL,CAAwByC;AAFpB,mCAA1B;AAIA,yCAAKoC,QAAL,CAAc;AACZ/E,yDAAqBA;AADT,mCAAd;AAGD,iCA7BH;AA8BE,yCAAS;AAAA,yCAAK,OAAKuM,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA;AA9BX;AAFJ;AAFJ;AADM,yBAAR;AAyCC;AACF,qBA7CH;AAFD;AApCH;AADF,eADF;AA0FE;AAAA;AAAA,kBAAK,WAAU,QAAf;AAEIb,4BAAY4B,MAAZ,IAAsB,CAAtB,IAA2B;AAAA;AAAA,oBAAK,WAAU,uBAAf;AAAA;AAAA,iBAF/B;AAKM,mCAAK5B,WAAL,EAAkB,UAACgC,IAAD,EAAOyW,MAAP,EAAkB;AAAA,sBAC5BxH,QAD4B,GACf,OAAKxX,KADU,CAC5BwX,QAD4B;;AAElC,sBAAIC,UAAU,oBAAMlR,WAAN,EAAmB,aAAK;AAAE,2BAAOC,EAAEE,WAAF,KAAkBhB,0BAASqF,IAAlC;AAAwC,mBAAlE,CAAd;AACA,sBAAI6Q,cAAcoD,MAAlB;AACA;AACA,sBAAI,CAACxH,QAAD,IAAaC,OAAjB,EAA0B;AACxB,wBAAIlP,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAA7B,IAAmCtC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAApE,EAAyE;AACvE,6BAAO,IAAP;AACD,qBAFD,MAEO;AACL,0BAAI4M,SAAS,sBAAQnR,WAAR,EAAqB,aAAK;AAAE,+BAAOoR,EAAEjR,WAAF,IAAiBhB,0BAASmF,EAA1B,IAAgC8M,EAAEjR,WAAF,IAAiBhB,0BAASoF,GAAjE;AAAsE,uBAAlG,CAAb;AACA8Q,oCAAc,yBAAWlE,MAAX,EAAmB,aAAK;AAAE,+BAAOlR,EAAEE,WAAF,IAAiB6B,KAAK7B,WAA7B;AAA0C,uBAApE,CAAd;AACD;AACF;AACH,sBAAMiF,QAAQpD,KAAKC,WAAnB;AACA,yBAAQD,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC,yBAAWY,WAAX,EAAwB,UAACC,CAAD,EAAO;AAAE,2BAAOA,EAAEE,WAAF,IAAiBhB,0BAASC,KAAjC;AAAyC,mBAA1E,KAA+EqZ,MAArH,GAA8H,0CAA9H,GACN;AAAA;AAAA,sBAAK,KAAKrT,QAAQ,EAAlB,EAAsB,WAAU,UAAhC;AACE;AAAA;AAAA,wBAAK,WAAU,MAAf;AACE,6DAAK,WAAU,UAAf,GADF;AAEE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAerL,gBAAgBqL,KAA/C,EAAX,CAAhB;AACE;AAAA;AAAA,4BAAK,WAAU,MAAf;AAAsB,wDAAC,eAAD,IAAO,MAAMqQ,yBAAQzT,KAAK7B,WAAb,KAA6BsV,yBAAQ,SAAR,CAA1C;AAAtB,yBADF;AAEE;AAAA;AAAA,4BAAK,WAAU,MAAf;AAAuBzT,+BAAKiL;AAA5B,yBAFF;AAGE;AAAA;AAAA,4BAAK,WAAU,QAAf;AAAyB,iCAAK1K,eAAL,GAAuB,EAAvB,GAA4B,OAAK1H,mBAAL,CAAyBwa,WAAzB,KAAyC;AAA9F;AAHF,uBAFF;AAOE;AAAA;AAAA,0BAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAetb,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEKpD,6BAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAAnE,IAA2E3B,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAAzG,GAEE,yCAAO,eAAauC,KAApB;;AAEE,qCAAWwS,cAAOK,eAAP,CAAuB,oBAAoB,OAAKpd,mBAAL,CAAyBwa,WAAzB,CAA3C,CAFb;AAGE,oCAAU,OAAKnV,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,CAHZ;AAIE,mCAAS,mBAAM;AACb,mCAAKgI,cAAL,CAAoB3F,IAApB,EAA0BoD,KAA1B,EAAiCzF,aAAjC;AACD,2BANH;AAOE,iCAAOqC,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,GAAqC,2BAC1C,sBAAQ,sBAAQY,WAAR,EAAqB,UAAC0Y,EAAD,EAAQ;AAAE,mCAAOA,GAAGvY,WAAH,IAAkBhB,0BAASC,KAAlC;AAAyC,2BAAxE,CAAR,EAAmF,UAAUuZ,GAAV,EAAe1Y,CAAf,EAAkB;AACnG,mCAAO3C,KAAKsb,GAAL,CAASD,GAAT,EAAc1Y,EAAE5C,KAAhB,CAAP;AACD,2BAFD,EAEG,CAFH,CAD0C,CAArC,GAIH,2BAAe2E,KAAK3E,KAApB,CAXN,GAFF,GAeE,yCAAO,eAAa+H,KAApB;AACE,qCAAWwS,cAAOK,eAAP,CAAuB,oBAAoB,OAAKpd,mBAAL,CAAyBwa,WAAzB,CAA3C,CADb;AAEE,oCAAU,OAAKnV,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,KAAoE,OAAK8E,iBAAL,CAAuBzC,KAAK7B,WAA5B,CAFhF;AAGE,iCAAO6B,KAAK6C,YAAL,IAAqB,CAArB,GAAyB7C,KAAKgL,MAA9B,GAAuChL,KAAK3E,KAHrD;AAIE,mCAAS;AAAA,mCAAK,OAAKwK,cAAL,CAAoBzC,KAApB,EAA2BpD,IAA3B,EAAiCjF,OAAjC,EAA0C8D,CAA1C,CAAL;AAAA,2BAJX;AAKE,kCAAQ;AAAA,mCAAK,OAAK+F,MAAL,CAAYxB,KAAZ,EAAmBvE,CAAnB,CAAL;AAAA,2BALV;AAME,mCAAS;AAAA,mCAAK,OAAKoG,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA,2BANX;AAOE,oCAAU;AAAA,mCAAKmB,KAAK7B,WAAL,KAAqBhB,0BAASkG,OAA9B,GACb,OAAKW,qBAAL,CAA2BZ,KAA3B,EAAkCvE,CAAlC,CADa,GAEZ,OAAK6E,YAAL,CAAkBN,KAAlB,EAAyBvE,CAAzB,EAA4BmB,KAAK7B,WAAjC,EAA8ChB,yBAA9C,CAFO;AAAA;AAPZ;AAjBN;AAPF,qBADF;AAwCG6C,yBAAK7B,WAAL,IAAoBhB,0BAAS0D,GAA7B,IAAoC;AAAA;AAAA,wBAAK,WAAU,QAAf;AACnC;AAAA;AAAA,0BAAM,WAAU,SAAhB;AAAA;AAAA,uBADmC;AAEnC;AAAA;AAAA;AAAOb,6BAAKmW;AAAZ;AAFmC,qBAxCvC;AA4CG,uCAAK,sBAAQnY,WAAR,EAAqB,UAAC0Y,EAAD,EAAQ;AAAE,6BAAO1W,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsCrB,WAAW2a,GAAGrb,KAAH,IAAY,CAAvB,KAA6B,CAAnE,IAAwEqb,GAAGvY,WAAH,IAAkBhB,0BAASC,KAA1G;AAAiH,qBAAhJ,CAAL,EAAwJ,UAACa,CAAD,EAAO;AAC9J,6BAAO;AAAA;AAAA,0BAAK,WAAU,QAAf;AACL;AAAA;AAAA;AAAA;AAAA,yBADK;AAEL;AAAA;AAAA;AAAQA,4BAAEjD,MAAF,IAAYiD,EAAEjD,MAAF,CAASob;AAA7B,yBAFK;AAGL;AAAA;AAAA,4BAAM,WAAU,IAAhB;AAAsB,qDAAenY,EAAE5C,KAAjB;AAAtB,yBAHK;AAIL;AAAA;AAAA,4BAAM,WAAU,YAAhB;AAAA;AAAA;AAJK,uBAAP;AAMD,qBAPA;AA5CH,mBADF;AAsDD,iBApEC;AALN;AA1FF,aADF;AAwKE;AAAA;AAAA,gBAAK,WAAU,WAAf;AACE,sDAAM,WAAU,aAAhB,EAA8B,SAAS,KAAKyK,aAA5C,GADF;AAEE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKhH,YAAzC;AAAA;AAAA;AAAN,eAFF;AAGE;AAAA;AAAA;AAAM;AAAA;AAAA,oBAAQ,WAAW,KAAKyB,eAAL,GAAuB,SAAvB,GAAmC,QAAtD,EAAgE,SAAS,KAAKjD,YAA9E;AACJ,8BAAU,KAAK0I,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CADN;AAAA;AAAA;AAAN;AAHF;AAxKF;AAVwB,SA3U5B;AAsgBI7F,gBAAQ,CAAR,IAAa,CAACwB,QAAd,IACA;AAAA;AAAA;AACE,+CAAiCic,cAAOC,eAAP,CAAuB,GAAvB,CADnC;AAEE,mBAAM,OAFR;AAGE,kBAAM,KAAKne,KAAL,CAAWC,OAHnB;AAIE,8BAAkB,KAJpB;AAKE,oBAAQ,IALV;AAME,oBAAQ,KAAKmH;AANf;AASE;AAAA,6BAAO,MAAP;AAAA,cAAc,iBAAd;AACE;AAAA,+BAAO,KAAP;AAAA,gBAAa,WAAU,YAAvB;AAAqC;AAArC;AADF,WATF;AAaE;AAAA,6BAAO,IAAP;AAAA;AACE;AAAA;AAAA,gBAAK,WAAU,YAAf;AACE;AAAA;AAAA,kBAAK,WAAU,eAAf;AACE;AAAA;AAAA,oBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,YAAY3G,QAAQ,CAAvC,EAA0C,YAAYyK,SAAShD,MAAT,GAAkBgV,cAAxE,EAAX,CAAhB;AAEIhS,2BAAShD,MAAT,IAAmBgV,cAAnB,IACA;AAAA;AAAA;AAEI,uCAAKhS,QAAL,EAAe,UAAC5C,IAAD,EAAOoD,KAAP,EAAiB;AAC9B,6BAAO,OAAKiP,aAAL,CAAmBrS,IAAnB,EAAyBoD,KAAzB,CAAP;AACD,qBAFD;AAFJ,mBAHJ;AAWGR,2BAAShD,MAAT,GAAkBgV,cAAlB,IAAoC,KAAKjD,oBAAL,CAA0BpJ,MAA1B,EAAiC3F,QAAjC,EAA0CgS,cAA1C,EAAyDiC,2BAAzD;AAXvC,iBADF;AAcE;AAAA;AAAA,oBAAK,WAAU,aAAf;AAEI9b,0BAAQsb,YAAR,GAAuB,CAAvB,IAA4B;AAAA;AAAA,sBAAK,WAAU,YAAf;AAC1B;AAAA;AAAA;AAAA;AAAA,qBAD0B;AAE1B;AAAA;AAAA;AAAOtb,8BAAQsb;AAAf;AAF0B,mBAFhC;AAOE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOtb,8BAAQiB;AAAf;AAFF,mBAPF;AAWE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA;AAAOjB,8BAAQqJ;AAAf;AAFF,mBAXF;AAeE;AAAA;AAAA,sBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4BrJ,8BAAQ0M;AAApC;AAFF,mBAfF;AAmBE;AAAA;AAAA,sBAAK,WAAU,YAAf,EAA4B,OAAO,EAAEyO,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACE;AAAA;AAAA;AAAA;AAAA,qBADF;AAEE;AAAA;AAAA,wBAAM,WAAU,UAAhB;AAA4B,iDAAexP,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAA5B;AAFF;AAnBF;AAdF,eADF;AAwCE;AAAA;AAAA,kBAAK,WAAU,WAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAEIpG,8BAAY4B,MAAZ,IAAsB,CAAtB,IAA2B;AAAA;AAAA,sBAAK,WAAU,wBAAf;AAAA;AAAA,mBAF/B;AAKI,qCAAK5B,WAAL,EAAkB,UAACgC,IAAD,EAAU;AAC1B,wBAAMoD,QAAQpD,KAAKC,WAAnB;AACA,2BACE;AAAA;AAAA,wBAAK,KAAKmD,QAAQ,EAAlB,EAAsB,WAAU,UAAhC;AACE;AAAA;AAAA,0BAAK,WAAU,MAAf;AACE;AAAA;AAAA,4BAAK,WAAU,UAAf,EAA0B,SAAS,mBAAM;AACvC,qCAAKD,QAAL,CAAcC,KAAd;AACD,6BAFD;AAEG,wDAAC,eAAD,IAAO,MAAK,QAAZ,EAAqB,WAAU,OAA/B;AAFH,yBADF;AAIE;AAAA;AAAA,4BAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAerL,gBAAgBqL,KAA/C,EAAX,CAAhB;AAAqFpD,+BAAKiL;AAA1F,yBAJF;AAKE;AAAA;AAAA,4BAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAelT,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEKpD,+BAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAAnE,IAA2E3B,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAAzG,GAEE,yCAAO,WAAW+U,cAAOK,eAAP,CAAuB,EAAvB,CAAlB,EAA8C,eAAa7S,KAA3D;AACE,qCAAS,mBAAM;AAAE,qCAAKJ,SAAL,CAAeI,KAAf,EAAsBpD,KAAK7B,WAA3B;AAAyC,6BAD5D,EAC8D,OAAO,2BAAe6B,KAAK3E,KAApB,CADrE,GAFF,GAII,yCAAO,WAAWua,cAAOK,eAAP,CAAuB,EAAvB,CAAlB,EAA8C,eAAa7S,KAA3D;AACA,mCAAOpD,KAAK6C,YAAL,IAAqB,CAArB,GAAyB7C,KAAKgL,MAA9B,GAAuChL,KAAK3E,KADnD;AAEA,oCAAQ;AAAA,qCAAK,OAAKuJ,MAAL,CAAYxB,KAAZ,EAAmBvE,CAAnB,CAAL;AAAA,6BAFR;AAGA,sCAAU;AAAA,qCAAK,OAAK6E,YAAL,CAAkBN,KAAlB,EAAyBvE,CAAzB,CAAL;AAAA,6BAHV;AAIA,qCAAS;AAAA,qCAAK,OAAKoG,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA;AAJT;AANR,yBALF;AAmBE;AAAA;AAAA,4BAAK,WAAU,WAAf,EAA2B,OAAO,EAAEqX,SAASlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,GAAqC,cAArC,GAAsD,MAAjE,EAAlC;AACE,qCAAS,mBAAM;AACb,qCAAK8H,aAAL;AACD,6BAHH;AAGK,wDAAC,eAAD,IAAO,MAAK,SAAZ,EAAsB,WAAU,MAAhC;AAHL;AAnBF,uBADF;AA0BIlF,2BAAK7B,WAAL,IAAoBhB,0BAAS0D,GAA7B,GACE;AAAA;AAAA,0BAAK,WAAU,QAAf,EAAwB,OAAO,EAAEqV,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,4BAAM,WAAU,SAAhB;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA;AAAOb,+BAAKmW;AAAZ;AAFF,uBADF,GAME;AAAA;AAAA,0BAAK,WAAU,QAAf,EAAwB,OAAO,EAAED,SAAUlW,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAApE,GAA2E,OAA3E,GAAqF,MAAhG,EAA/B;AACE;AAAA;AAAA,4BAAM,WAAU,IAAhB;AAAA;AAAA,yBADF;AAEE;AAAA;AAAA,4BAAM,WAAU,IAAhB;AAAsBb,+BAAKhF,MAAL,IAAegF,KAAKhF,MAAL,CAAYob;AAAjD,yBAFF;AAGE,iEAHF;AAIE;AAAA;AAAA,4BAAM,WAAU,YAAhB;AAAA;AAAA,yBAJF;AAKE;AAAA;AAAA,4BAAM,WAAU,IAAhB;AAAsB,qDAAepW,KAAKrE,OAApB;AAAtB;AALF;AAhCN,qBADF;AA2CD,mBA7CD;AALJ,iBADF;AAsDE;AAAA;AAAA,oBAAK,WAAU,OAAf;AACE;AAAA;AAAA,sBAAK,WAAW,KAAK4E,eAAL,GAAuB,cAAvB,GAAwC,UAAxD;AAEI,qBAAC,KAAKA,eAAN,IACA,8BAAC,kBAAD,IAAU,MAAK,QAAf,EAAwB,UAAU,KAAKiW,gBAAL,CAAsB1D,IAAtB,CAA2B,IAA3B,CAAlC;AAHJ;AADF;AAtDF,eAxCF;AAuGE;AAAA;AAAA,kBAAK,WAAU,YAAf;AACE,wDAAM,WAAU,aAAhB,EAA8B,SAAS,KAAKhN,aAA5C,GADF;AAEE;AAAA;AAAA;AAAM;AAAA;AAAA,sBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKhH,YAAzC;AAAA;AAAA;AAAN,iBAFF;AAGE;AAAA;AAAA;AAAM;AAAA;AAAA,sBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKxB,YAAzC;AACJ,gCAAU,KAAK0I,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CADN;AAAA;AAAA;AAAN;AAHF;AAvGF;AADF;AAbF,SAvgBJ;AAuoBI7F,gBAAQ,CAAR,IAAawB,QAAb,IACA;AAAA;AAAA;AACE,+CAAiCic,cAAOC,eAAP,CAAuB,GAAvB,CADnC;AAEE,mBAAM,OAFR;AAGE,kBAAM,KAAKne,KAAL,CAAWC,OAHnB;AAIE,8BAAkB,KAJpB;AAKE,oBAAQ,IALV;AAME,oBAAQ,KAAKmH;AANf;AASE;AAAA,6BAAO,MAAP;AAAA,cAAc,iBAAd;AACE;AAAA,+BAAO,KAAP;AAAA,gBAAa,WAAU,YAAvB;AAAqC;AAArC;AADF,WATF;AAaE;AAAA,6BAAO,IAAP;AAAA;AACE;AAAA;AAAA,gBAAK,WAAU,YAAf;AACE;AAAA;AAAA,kBAAK,WAAU,8BAAf;AACE;AAAA;AAAA,oBAAK,WAAU,KAAf;AACE;AAAA;AAAA,sBAAK,WAAU,UAAf;AACG/D,4BAAQsb,YAAR,GAAuB,CAAvB,IAA4B;AAAA;AAAA,wBAAK,WAAU,YAAf;AAC3B;AAAA;AAAA;AAAA;AAAA,uBAD2B;AAE3B;AAAA;AAAA;AAAOtb,gCAAQsb;AAAf;AAF2B,qBAD/B;AAKE;AAAA;AAAA,wBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA;AAAOtb,gCAAQiB;AAAf;AAFF,qBALF;AASE;AAAA;AAAA,wBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA;AAAOjB,gCAAQqJ;AAAf;AAFF,qBATF;AAaE;AAAA;AAAA,wBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA,0BAAM,WAAU,UAAhB;AAA4BrJ,gCAAQ0M;AAApC;AAFF,qBAbF;AAiBE;AAAA;AAAA,wBAAK,WAAU,YAAf,EAA4B,OAAO,EAAEyO,SAAS,KAAKpL,WAAL,KAAqB,OAArB,GAA+B,MAA1C,EAAnC;AACE;AAAA;AAAA;AAAA;AAAA,uBADF;AAEE;AAAA;AAAA,0BAAM,WAAU,UAAhB;AAA4B,mDAAexP,KAAK6I,GAAL,CAASpJ,QAAQqJ,UAAjB,CAAf;AAA5B;AAFF;AAjBF;AADF,iBADF;AAyBE;AAAA;AAAA,oBAAK,WAAU,QAAf;AAEIpG,8BAAY4B,MAAZ,IAAsB,CAAtB,IAA2B;AAAA;AAAA,sBAAK,WAAU,uBAAf;AAAA;AAAA,mBAF/B;AAKI,qCAAK5B,WAAL,EAAkB,UAACgC,IAAD,EAAOyW,MAAP,EAAkB;AAAA,wBAC5BxH,QAD4B,GACf,OAAKxX,KADU,CAC5BwX,QAD4B;;AAElC,wBAAIC,UAAU,oBAAMlR,WAAN,EAAmB,aAAK;AAAE,6BAAOC,EAAEE,WAAF,KAAkBhB,0BAASqF,IAAlC;AAAwC,qBAAlE,CAAd;AACA,wBAAI6Q,cAAcoD,MAAlB;AACA;AACA,wBAAI,CAACxH,QAAD,IAAaC,OAAjB,EAA0B;AACxB,0BAAIlP,KAAK7B,WAAL,IAAoBhB,0BAASmF,EAA7B,IAAmCtC,KAAK7B,WAAL,IAAoBhB,0BAASoF,GAApE,EAAyE;AACvE,+BAAO,IAAP;AACD,uBAFD,MAEO;AACL,4BAAI4M,SAAS,sBAAQnR,WAAR,EAAqB,aAAK;AAAE,iCAAOoR,EAAEjR,WAAF,IAAiBhB,0BAASmF,EAA1B,IAAgC8M,EAAEjR,WAAF,IAAiBhB,0BAASoF,GAAjE;AAAsE,yBAAlG,CAAb;AACA8Q,sCAAc,yBAAWlE,MAAX,EAAmB,aAAK;AAAE,iCAAOlR,EAAEE,WAAF,IAAiB6B,KAAK7B,WAA7B;AAA0C,yBAApE,CAAd;AACD;AACF;AACD,wBAAMiF,QAAQpD,KAAKC,WAAnB;AACA,2BAAQD,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC,yBAAWY,WAAX,EAAwB,UAACC,CAAD,EAAO;AAAE,6BAAOA,EAAEE,WAAF,IAAiBhB,0BAASC,KAAjC;AAAyC,qBAA1E,KAA+EqZ,MAArH,GAA8H,0CAA9H,GACN;AAAA;AAAA,wBAAK,KAAKrT,QAAQ,EAAlB,EAAsB,WAAU,UAAhC;AACE;AAAA;AAAA,0BAAK,WAAU,MAAf;AACE,+DAAK,WAAU,UAAf,GADF;AAEE;AAAA;AAAA,4BAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,eAAerL,gBAAgBqL,KAA/C,EAAX,CAAhB;AACE;AAAA;AAAA,8BAAK,WAAU,MAAf;AAAsB,0DAAC,eAAD,IAAO,MAAMqQ,yBAAQzT,KAAK7B,WAAb,KAA6BsV,yBAAQ,SAAR,CAA1C;AAAtB,2BADF;AAEE;AAAA;AAAA,8BAAK,WAAU,MAAf;AAAuBzT,iCAAKiL;AAA5B,2BAFF;AAGE;AAAA;AAAA,8BAAK,WAAU,QAAf;AAAyB,mCAAK1K,eAAL,GAAuB,EAAvB,GAA4B,OAAK1H,mBAAL,CAAyBwa,WAAzB,KAAyC;AAA9F;AAHF,yBAFF;AAOE;AAAA;AAAA,4BAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,eAAetb,gBAAgBqL,KAAlD,EAAX,CAAhB;AAEKpD,+BAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsC4C,KAAK7B,WAAL,IAAoBhB,0BAASwE,IAAnE,IAA2E3B,KAAK7B,WAAL,IAAoBhB,0BAAS0D,GAAzG,GAEE,yCAAO,eAAauC,KAApB;AACE,uCAAWwS,cAAOK,eAAP,CAAuB,oBAAoB,OAAKpd,mBAAL,CAAyBwa,WAAzB,CAA3C,CADb;AAEE,sCAAU,OAAKnV,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,CAFZ;AAGE,qCAAS,mBAAM;AACb,qCAAKgI,cAAL,CAAoB3F,IAApB,EAA0BoD,KAA1B,EAAiCzF,aAAjC;AACD,6BALH;AAME,mCAAOqC,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,GAAqC,2BAC1C,sBAAQ,sBAAQY,WAAR,EAAqB,UAAC0Y,EAAD,EAAQ;AAAE,qCAAOA,GAAGvY,WAAH,IAAkBhB,0BAASC,KAAlC;AAAyC,6BAAxE,CAAR,EAAmF,UAAUuZ,GAAV,EAAe1Y,CAAf,EAAkB;AACnG,qCAAO3C,KAAKsb,GAAL,CAASD,GAAT,EAAc1Y,EAAE5C,KAAhB,CAAP;AACD,6BAFD,EAEG,CAFH,CAD0C,CAArC,GAIH,2BAAe2E,KAAK3E,KAApB,CAVN,GAFF,GAcE,yCAAO,eAAa+H,KAApB;AACE,uCAAWwS,cAAOK,eAAP,CAAuB,oBAAoB,OAAKpd,mBAAL,CAAyBwa,WAAzB,CAA3C,CADb;AAEE,sCAAU,OAAKnV,iBAAL,CAAuB8B,KAAK7B,WAA5B,EAAyCT,OAAzC,EAAkDC,aAAlD,KAAoE,OAAK8E,iBAAL,CAAuBzC,KAAK7B,WAA5B,CAFhF;AAGE,mCAAO6B,KAAK6C,YAAL,IAAqB,CAArB,GAAyB7C,KAAKgL,MAA9B,GAAuChL,KAAK3E,KAHrD;AAIE,qCAAS;AAAA,qCAAK,OAAKwK,cAAL,CAAoBzC,KAApB,EAA2BpD,IAA3B,EAAiCjF,OAAjC,EAA0C8D,CAA1C,CAAL;AAAA,6BAJX;AAKE,oCAAQ;AAAA,qCAAK,OAAK+F,MAAL,CAAYxB,KAAZ,EAAmBvE,CAAnB,CAAL;AAAA,6BALV;AAME,qCAAS;AAAA,qCAAK,OAAKoG,WAAL,CAAiB7B,KAAjB,EAAwBpD,IAAxB,EAA8BjF,OAA9B,EAAuC8D,CAAvC,CAAL;AAAA,6BANX;AAOE,sCAAU;AAAA,qCAAK,OAAK6E,YAAL,CAAkBN,KAAlB,EAAyBvE,CAAzB,CAAL;AAAA;AAPZ;AAhBN;AAPF,uBADF;AAoCGmB,2BAAK7B,WAAL,IAAoBhB,0BAAS0D,GAA7B,IAAoC;AAAA;AAAA,0BAAK,WAAU,QAAf;AACnC;AAAA;AAAA,4BAAM,WAAU,SAAhB;AAAA;AAAA,yBADmC;AAEnC;AAAA;AAAA;AAAOb,+BAAKmW;AAAZ;AAFmC,uBApCvC;AAwCG,yCAAK,sBAAQnY,WAAR,EAAqB,UAAC0Y,EAAD,EAAQ;AAAE,+BAAO1W,KAAK7B,WAAL,IAAoBhB,0BAASC,KAA7B,IAAsCrB,WAAW2a,GAAGrb,KAAH,IAAY,CAAvB,KAA6B,CAAnE,IAAwEqb,GAAGvY,WAAH,IAAkBhB,0BAASC,KAA1G;AAAiH,uBAAhJ,CAAL,EAAwJ,UAACa,CAAD,EAAO;AAC9J,+BAAO;AAAA;AAAA,4BAAK,WAAU,QAAf;AACL;AAAA;AAAA;AAAA;AAAA,2BADK;AAEL;AAAA;AAAA;AAAQA,8BAAEjD,MAAF,IAAYiD,EAAEjD,MAAF,CAASob;AAA7B,2BAFK;AAGL;AAAA;AAAA,8BAAM,WAAU,IAAhB;AAAsB,uDAAenY,EAAE5C,KAAjB;AAAtB,2BAHK;AAIL;AAAA;AAAA,8BAAM,WAAU,YAAhB;AAAA;AAAA;AAJK,yBAAP;AAMD,uBAPA;AAxCH,qBADF;AAkDD,mBAhED;AALJ;AAzBF,eADF;AAmGE;AAAA;AAAA,kBAAK,WAAU,YAAf;AACE,wDAAM,WAAU,aAAhB,EAA8B,SAAS,KAAKyK,aAA5C,GADF;AAEE;AAAA;AAAA;AAAM;AAAA;AAAA,sBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKhH,YAAzC;AAAA;AAAA;AAAN,iBAFF;AAGE;AAAA;AAAA;AAAM;AAAA;AAAA,sBAAQ,WAAU,QAAlB,EAA2B,SAAS,KAAKxB,YAAzC;AACJ,gCAAU,KAAK0I,mBAAL,CAAyBjL,OAAzB,EAAkCiD,WAAlC,CADN;AAAA;AAAA;AAAN;AAHF;AAnGF;AADF;AAbF,SAxoBJ;AAmwBE;AAAA;AAAA;AACE,iCAAkB,KAAKuC,eAAL,GAAuB,aAAvB,GAAuC,EAAzD,CADF;AAEE,mBAAM,OAFR;AAGE,kBAAM,KAAK7I,KAAL,CAAWE,UAHnB;AAIE,8BAAkB,KAJpB;AAKE,oBAAQ,IALV;AAME,oBAAQ,KAAKwE,eANf;AAOE,sBAAU,KAPZ;AAQE,sBAAU,CAAC,KAAKmE,eAAN,GAAwB,IAAxB,GAA+B,KAR3C;AASE,uBAAW,KAAK7F;AATlB;AAWE;AAAA,6BAAO,MAAP;AAAA,cAAc,iBAAd;AACE;AAAA,+BAAO,KAAP;AAAA,gBAAa,WAAU,YAAvB;AAAqC;AAArC;AADF,WAXF;AAeE;AAAA,6BAAO,IAAP;AAAA;AACE;AAAA;AAAA,gBAAK,WAAU,MAAf;AACGsH,2BAAa;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,aAAaA,SAA7B,EAAX,CAAhB;AACZ;AAAA;AAAA,oBAAK,WAAU,iBAAf;AAAmClH,iCAAeA,YAAYE,MAAZ,CAAmB7C,IAAnC,IAA4C;AAA9E,iBADY;AAEZ;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFY,eADhB;AAKE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE,uDAAK,WAAU,MAAf,GADF;AAEE,uDAAK,WAAU,MAAf,GAFF;AAGE,uDAAK,WAAU,MAAf;AAHF,eALF;AAUE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,aAAa,CAAC6J,SAAjC,EAA4C,aAAaA,SAAzD,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,OAAf;AAAwBlH,iCAAe,2BAAeA,YAAYE,MAAZ,CAAmBW,OAAlC;AAAvC,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF,eAVF;AAcE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE,uDAAK,WAAU,MAAf,GADF;AAEE,uDAAK,WAAU,MAAf,GAFF;AAGE,uDAAK,WAAU,MAAf;AAHF,eAdF;AAmBE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,aAAa,IAAf,EAAqB,aAAa,CAACqG,SAAnC,EAA8C,aAAaA,SAA3D,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,OAAf;AAAwBlH,iCAAe,2BAAeQ,KAAKqJ,GAAL,CAAS,CAAT,EAAYrJ,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAAZ,CAAf;AAAvC,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF;AAnBF,aADF;AAyBE;AAAA;AAAA,gBAAK,WAAU,IAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA;AACE;AACE,wBAAK,MADP;AAEE,+BAAY,wDAFd;AAGE,yCAAqB,KAAKhB,WAAL,KAAqB,IAArB,IAA6B,KAAKC,YAAL,KAAsB,CAAnD,IAAwD,KAAK2F,eAAL,KAAyB,IAAlF,GAA0F,MAA1F,GAAmG,EAAvH,CAHF;AAIE,4BAAU,KAAK+N,WAJjB;AAKE,yBAAOxT,eAAeA,YAAYE,MAAZ,CAAmBob,MAL3C;AAME,uBAAK;AAAA,2BAAS,OAAK3W,QAAL,GAAgBrE,KAAzB;AAAA,mBANP;AAOE,6BACE,mBAACyD,CAAD,EAAO;AAAE,wBAAIA,EAAEiY,OAAF,IAAa,EAAjB,EAAqB;AAAE,6BAAK/W,OAAL,CAAalB,EAAE8E,MAAF,CAAStI,KAAtB;AAA+B;AAAE,mBARrE;AAUE,2BAAS,iBAACwD,CAAD,EAAO;AACd,2BAAKgO,WAAL,GAAmB,OAAKpN,QAAL,CAAcrE,KAAjC;AACAiF,uCAASyM,IAAT,CAAc,UAACxS,CAAD,EAAO;AACnB,0BAAMe,QAAQgF,mBAAS0M,WAAT,CAAqB,OAAKF,WAA1B,EAAuC,OAAKA,WAAL,CAAiBxR,KAAxD,EAA+Df,CAA/D,CAAd;AACA,6BAAKgU,WAAL,CAAiBjT,KAAjB;AACD,qBAHD,EAGG,OAAKmT,eAHR,EAGyB,OAAKnS,kBAH9B;AAID,mBAhBH;AAkBE,0BAAQ,gBAACwC,CAAD,EAAO;AACbwB,uCAASC,KAAT;AACD;AApBH;AADF,eAFF;AA2BI,mBAAK3F,WAAL,KAAqB,IAArB,IAA6B,KAAKC,YAAL,KAAsB,CAAnD,IACA,8BAAC,eAAD,IAAO,WAAU,MAAjB,EAAwB,SAAS,KAAKJ,eAAtC,EAAuD,MAAK,MAA5D,GA5BJ;AA+BI,mBAAK+F,eAAL,IACA,8BAAC,eAAD,IAAO,MAAK,UAAZ,EAAuB,WAAU,MAAjC,EAAwC,SAAS,KAAKkP,iBAAtD,GAhCJ;;AAmCI;AACA,mBAAKlP,eAAL,IACA,8BAAC,cAAD,IAAM,KAAK;AAAA,yBAAQ,OAAKmP,OAAL,GAAeoB,IAAvB;AAAA,iBAAX,EAAwC,UAAU,KAAKd,eAAvD;AArCJ,aAzBF;AAiEE;AAAA;AAAA,gBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA;AAAOjV,wBAAQqJ;AAAf;AAFF,aAjEF;AAyEE;AAAA;AAAA,gBAAK,WAAU,UAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA;AACE;AACE,wBAAK,MADP;AAEE,6BAAWwR,cAAOK,eAAP,CAAuB,OAAvB,CAFb;AAGE,4BAAU,kBAAC5a,KAAD,EAAW;AAAE,2BAAKI,mBAAL,CAAyBJ,KAAzB,EAAgCC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAAhC;AAA8F,mBAHvH;AAIE,gCAAcb,eAAe,2BAAe4C,UAAU5C,YAAYO,KAAtB,GAA8BC,KAAKC,GAAL,CAAST,YAAYO,KAArB,EAA4BP,YAAYU,SAAxC,EAAmDV,YAAYE,MAAZ,CAAmBW,OAAtE,CAA7C,CAJ/B;AAKE,uBAAK;AAAA,2BAAO,OAAK,gBAAL,IAAyBob,MAAhC;AAAA,mBALP;AAME,2BAAS,iBAAClY,CAAD,EAAO;AACd,2BAAK1D,QAAL,GAAgB,gBAAhB;AACA,2BAAKS,cAAL,CAAoBR,KAApB,CAA0BuV,MAA1B;AACAtQ,uCAASyM,IAAT,CAAc,UAACxS,CAAD,EAAO;AACnB,0BAAMe,QAAQgF,mBAAS0M,WAAT,CAAqB,OAAK,OAAK5R,QAAV,EAAoBC,KAAzC,EAAgD,OAAK,OAAKD,QAAV,EAAoBC,KAApB,CAA0BC,KAA1E,EAAiFf,CAAjF,CAAd;AACA,6BAAKmB,mBAAL,CAAyBJ,KAAzB,EAAgCC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAAhC;AACD,qBAHD,EAGG,OAAKsQ,YAHR,EAGsB,OAAKC,eAH3B;AAID,mBAbH;AAeE,0BAAQ,gBAACrN,CAAD,EAAO;AACbwB,uCAASC,KAAT;AACA,2BAAK7E,mBAAL,CAAyB,2BAAe,OAAKG,cAAL,CAAoBR,KAApB,CAA0BC,KAAzC,CAAzB,EAA0EC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBW,OAAnD,CAA1E;AACD;AAlBH;AADF;AAFF,aAzEF;AAkGE;AAAA;AAAA,gBAAK,WAAU,OAAf;AAAwBb,6BAAeA,YAAYkc;AAAnD,aAlGF;AAmGG,aAAC,CAAC,KAAKxd,KAAL,CAAWwB,MAAZ,IAAsB,CAAC,KAAKxB,KAAL,CAAWwB,MAAX,CAAkBsG,EAA1C,KAAiD;AAAA;AAAA,gBAAK,WAAU,UAAf;AAAA;AAAA,aAnGpD;AAoGE;AAAA;AAAA,gBAAK,WAAU,QAAf;AACE;AAAA;AAAA,kBAAQ,SAAS,KAAKlF,eAAtB;AAAA;AAAA,eADF;AAEE;AAAA;AAAA,kBAAQ,UAAUtB,eAAeA,YAAYkc,OAAZ,IAAuB,EAAxD,EAA4D,SAAS,KAAKlX,WAA1E;AAAA;AAAA;AAFF;AApGF;AAfF,SAnwBF;AA43BE;AAAA;AAAA;AACE,iCAAkB,KAAKS,eAAL,GAAuB,aAAvB,GAAuC,EAAzD,CADF;AAEE,mBAAM,OAFR;AAGE,kBAAM,KAAK7I,KAAL,CAAWG,UAHnB;AAIE,8BAAkB,KAJpB;AAKE,kBAAM,KAAKkJ,WALb;AAME,sBAAU,KAAKC,eANjB;AAOE,oBAAQ,KAAKA,eAPf;AAQE,sBAAU,CAAC,KAAKT,eAAN,GAAwB,IAAxB,GAA+B;AAR3C;AAUE;AAAA,6BAAO,MAAP;AAAA,cAAc,iBAAd;AACE;AAAA,+BAAO,KAAP;AAAA,gBAAa,WAAU,YAAvB;AAAqC;AAArC;AADF,WAVF;AAcE;AAAA,6BAAO,IAAP;AAAA;AACGzF,2BAAe,CAACA,YAAY6C,aAA5B,IAA6C;AAAA;AAAA,gBAAK,WAAU,MAAf;AAC5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AAAA;AAAA,eAD4C;AAE5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA;AACE;AACE,0BAAK,MADP;AAEE,iCAAY,mDAFd;AAGE,+BAAU,OAHZ;AAIE,yBAAK;AAAA,6BAAS,OAAKmD,QAAL,GAAgB1F,KAAzB;AAAA,qBAJP;AAKE,+BACE,mBAACyD,CAAD,EAAO;AAAE,0BAAIA,EAAEiY,OAAF,IAAa,EAAjB,EAAqB;AAAE,+BAAKvR,MAAL,CAAY1G,EAAE8E,MAAF,CAAStI,KAArB;AAA6B;AAAE,qBANnE;AAQE,6BAAS,oBAAK;AACZ,6BAAKwR,WAAL,GAAmB,OAAK/L,QAAL,CAAc1F,KAAjC;AACAiF,yCAASyM,IAAT,CAAc,UAACxS,CAAD,EAAO;AACnB,4BAAMe,QAAQgF,mBAAS0M,WAAT,CAAqB,OAAKF,WAA1B,EAAuC,OAAKA,WAAL,CAAiBxR,KAAxD,EAA+Df,CAA/D,CAAd;AACA,+BAAKmU,WAAL,CAAiBpT,KAAjB,EAAwB,IAAxB;AACD,uBAHD,EAGG,OAAKuT,eAHR,EAGyB,OAAKC,kBAH9B;AAID,qBAdH;AAeE,4BAAQ,gBAAChQ,CAAD,EAAO;AAAEwB,yCAASC,KAAT;AAAkB;AAfrC;AADF,iBADF;AAoBE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuBxF,iCAAeA,YAAYkc;AAAlD;AApBF,eAF4C;AAyB1C,mBAAKzW,eAAL,IACA;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE,8CAAC,eAAD,IAAO,MAAK,UAAZ,EAAuB,WAAU,MAAjC,EAAwC,SAAS,KAAKkP,iBAAtD,GADF;AAEE,8CAAC,cAAD,IAAM,KAAK;AAAA,2BAAQ,OAAKC,OAAL,GAAeoB,IAAvB;AAAA,mBAAX,EAAwC,UAAU,KAAKb,eAAvD;AAFF;AA1B0C,aADhD;AAiCE;AAAA;AAAA,gBAAK,WAAU,WAAf;AACE;AAAA;AAAA,kBAAK,WAAU,MAAf;AAEI,mCAAKnV,eAAeA,YAAYmG,IAA3B,IAAmC,EAAxC,EAA4C,UAACoE,CAAD,EAAIjC,KAAJ,EAAc;AACxD,yBAAQ;AAAA;AAAA,sBAAK,KAAKA,QAAQ,EAAlB,EAAsB,WAAU,SAAhC;AACN;AAAA;AAAA,wBAAK,WAAU,SAAf;AACE;AAAA;AAAA,0BAAK,WAAU,QAAf;AAAwB;AAAA;AAAA;AAAOiC,4BAAErJ;AAAT,yBAAxB;AAA+C;AAAA;AAAA;AAAA;AAAA;AAA/C,uBADF;AAEE;AAAA;AAAA,0BAAK,WAAU,QAAf;AAAA;AAAA;AAFF,qBADM;AAMN;AAAA;AAAA,wBAAK,WAAW,0BAAW,UAAX,EAAuB,EAAE,oBAAoBqJ,EAAEnE,OAAxB,EAAvB,CAAhB,EAA2E,SAAS,iBAACrC,CAAD;AAAA,iCAAO,OAAKuG,UAAL,CAAgBC,CAAhB,CAAP;AAAA,yBAApF;AACE;AAAA;AAAA,0BAAK,WAAU,MAAf;AAAuBA,0BAAE4F;AAAzB,uBADF;AAEE;AAAA;AAAA,0BAAK,WAAU,MAAf;AAAsB;AAAA;AAAA;AAAA;AAAA,yBAAtB;AAAwC;AAAA;AAAA;AAAO5F,4BAAE4R;AAAT,yBAAxC;AAAiE;AAAA;AAAA;AAAA;AAAA;AAAjE;AAFF;AANM,mBAAR;AAYD,iBAbD;AAFJ;AADF,aAjCF;AAqDGnc,2BAAe,CAACA,YAAY6C,aAA5B,IAA6C;AAAA;AAAA,gBAAK,WAAU,MAAf;AAC5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuB7C,gCAAcA,YAAYsJ,UAA1B,GAAuC;AAA9D;AAFF,eAD4C;AAK5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuBtJ,gCAAcA,YAAYU,SAA1B,GAAsC;AAA7D;AAFF,eAL4C;AAS5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuBV,gCAAcA,YAAYO,KAA1B,GAAkC;AAAzD;AAFF,eAT4C;AAa5C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuBP,gCAAcA,YAAYqb,iBAA1B,GAA8C;AAArE;AAFF;AAb4C,aArDhD;AAuEGrb,2BAAeA,YAAY6C,aAA3B,IAA4C;AAAA;AAAA,gBAAK,WAAU,MAAf;AAC3C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuB7C,iCAAeA,YAAYmG,IAA3B,GAAkCnG,YAAYmG,IAAZ,CAAiBrB,MAAnD,GAA4D;AAAnF;AAFF,eAD2C;AAK3C;AAAA;AAAA,kBAAK,WAAU,MAAf;AACE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAuB9E,gCAAcA,YAAYO,KAA1B,GAAkC;AAAzD;AAFF;AAL2C,aAvE/C;AAiFE;AAAA;AAAA,gBAAK,WAAU,QAAf;AACE;AAAA;AAAA,kBAAQ,SAAS,KAAK2F,eAAtB;AAAA;AAAA,eADF;AAEE;AAAA;AAAA,kBAAQ,UAAUlG,eAAeA,YAAYkc,OAAZ,IAAuB,EAAxD,EAA4D,SAAS,KAAKjW,WAA1E;AAAA;AAAA;AAFF;AAjFF;AAdF,SA53BF;AAk+BE;AAAA;AAAA;AACE,iCAAkB,KAAKR,eAAL,GAAuB,aAAvB,GAAuC,EAAzD,CADF;AAEE,mBAAM,OAFR;AAGE,kBAAM,KAAK7I,KAAL,CAAWI,WAHnB;AAIE,8BAAkB,KAJpB;AAKE,oBAAQ,IALV;AAME,oBAAQ,KAAK+J,gBANf;AAOE,sBAAU,CAAC,KAAKtB,eAAN,GAAwB,IAAxB,GAA+B;AAP3C;AASE;AAAA,6BAAO,MAAP;AAAA,cAAc,iBAAd;AACE;AAAA,+BAAO,KAAP;AAAA,gBAAa,WAAU,YAAvB;AAAqC;AAArC;AADF,WATF;AAaE;AAAA,6BAAO,IAAP;AAAA;AACE;AAAA;AAAA,gBAAK,WAAU,MAAf;AACE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,QAAQ,IAAV,EAAgB,aAAayB,SAA7B,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,iBAAf;AAAmClH,iCAAeA,YAAYE,MAAZ,CAAmB7C,IAAnC,IAA4C;AAA9E,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF,eADF;AAKE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE,uDAAK,WAAU,MAAf,GADF;AAEE,uDAAK,WAAU,MAAf,GAFF;AAGE,uDAAK,WAAU,MAAf;AAHF,eALF;AAUE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,aAAa6J,SAAhC,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,OAAf;AAAwBlH,iCAAeA,YAAYE,MAAZ,CAAmBkc;AAA1D,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF,eAVF;AAcE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE,uDAAK,WAAU,MAAf,GADF;AAEE,uDAAK,WAAU,MAAf,GAFF;AAGE,uDAAK,WAAU,MAAf;AAHF,eAdF;AAmBE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,WAAW,IAAb,EAAmB,aAAalV,SAAhC,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,OAAf;AAAwBlH,iCAAe,2BAAeA,YAAYE,MAAZ,CAAmBC,WAAlC;AAAvC,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF,eAnBF;AAuBE;AAAA;AAAA,kBAAK,WAAU,KAAf;AACE,uDAAK,WAAU,MAAf,GADF;AAEE,uDAAK,WAAU,MAAf,GAFF;AAGE,uDAAK,WAAU,MAAf;AAHF,eAvBF;AA4BE;AAAA;AAAA,kBAAK,WAAW,0BAAW,EAAE,aAAa,IAAf,EAAqB,aAAa+G,SAAlC,EAAX,CAAhB;AACE;AAAA;AAAA,oBAAK,WAAU,OAAf;AAAwBlH,iCAAe,2BAAeQ,KAAKqJ,GAAL,CAAS,CAAT,EAAYrJ,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBC,WAAnD,CAAZ,CAAf;AAAvC,iBADF;AAEE;AAAA;AAAA,oBAAK,WAAU,MAAf;AAAA;AAAA;AAFF;AA5BF,aADF;AAkCE;AAAA;AAAA,gBAAK,WAAU,IAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA,kBAAM,WAAU,QAAhB;AAA0BH,+BAAeA,YAAYE,MAAZ,CAAmBob;AAA5D;AAFF,aAlCF;AAsCE;AAAA;AAAA,gBAAK,WAAU,YAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA;AAAOrb,wBAAQqJ;AAAf;AAFF,aAtCF;AA0CE;AAAA;AAAA,gBAAK,WAAU,UAAf;AACE;AAAA;AAAA;AAAA;AAAA,eADF;AAEE;AAAA;AAAA;AACE;AACE,6BAAWwR,cAAOK,eAAP,CAAuB,OAAvB,CADb;AAEE,wBAAK,MAFP;AAGE,4BAAU,kBAAC5a,KAAD,EAAW;AAAE,2BAAKI,mBAAL,CAAyBJ,KAAzB,EAAgCC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBC,WAAnD,CAAhC;AAAkG,mBAH3H;AAIE,gCAAcH,eAAe,2BAAeQ,KAAKC,GAAL,CAAST,YAAYO,KAArB,EAA4BP,YAAYU,SAAxC,EAAmDV,YAAYE,MAAZ,CAAmBC,WAAtE,CAAf,CAJ/B;AAKE,uBAAK;AAAA,2BAAO,OAAK,iBAAL,IAA0B8b,MAAjC;AAAA,mBALP;AAME,2BAAS,iBAAClY,CAAD,EAAO;AACd,2BAAK1D,QAAL,GAAgB,iBAAhB;AACAkF,uCAASyM,IAAT,CAAc,UAACxS,CAAD,EAAO;AACnB,0BAAMe,QAAQgF,mBAAS0M,WAAT,CAAqB,OAAK,OAAK5R,QAAV,EAAoBC,KAAzC,EAAgD,OAAK,OAAKD,QAAV,EAAoBC,KAApB,CAA0BC,KAA1E,EAAiFf,CAAjF,CAAd;AACA,6BAAKmB,mBAAL,CAAyBJ,KAAzB,EAAgCC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBC,WAAnD,CAAhC;AACD,qBAHD,EAGG,OAAKgR,YAHR,EAGsB,OAAKC,eAH3B;AAID,mBAZH;AAcE,0BAAQ,gBAACrN,CAAD,EAAO;AACbwB,uCAASC,KAAT;AACA,2BAAK7E,mBAAL,CAAyB,2BAAe,OAAKC,eAAL,CAAqBN,KAArB,CAA2BC,KAA1C,CAAzB,EAA2EC,KAAKC,GAAL,CAAST,YAAYU,SAArB,EAAgCV,YAAYE,MAAZ,CAAmBC,WAAnD,CAA3E;AACD;AAjBH;AADF;AAFF,aA1CF;AAkEE;AAAA;AAAA,gBAAK,WAAU,OAAf;AAAwBH,6BAAeA,YAAYkc;AAAnD,aAlEF;AAmEE;AAAA;AAAA,gBAAK,WAAU,QAAf;AACE;AAAA;AAAA,kBAAQ,SAAS,KAAKnV,gBAAtB;AAAA;AAAA,eADF;AAEE;AAAA;AAAA,kBAAQ,UAAU/G,eAAeA,YAAYkc,OAAZ,IAAuB,EAAxD,EAA4D,SAAS,KAAKpV,YAA1E;AAAA;AAAA;AAFF;AAnEF;AAbF;AAl+BF,OADF;AA4jCD;;;EApjGsBuV,gBAAMC,S,WAgCtBC,Y,GAAe;AACpBzZ,aAAW0Z,oBAAUC,MADD;AAEpBjK,UAAQgK,oBAAUC;AAFE,C;;kBAuhGThgB,U","file":"settlement.js","sourcesContent":["import React from 'react'\r\nimport { observer } from 'mobx-react'\r\nimport _filter from 'lodash/filter';\r\nimport _map from 'lodash/map';\r\nimport _find from 'lodash/find';\r\nimport _findIndex from 'lodash/findIndex';\r\nimport _sortBy from 'lodash/sortBy';\r\nimport _forEach from 'lodash/forEach';\r\nimport _trim from 'lodash/trim';\r\nimport _truncate from 'lodash/truncate';\r\nimport _debounce from 'lodash/debounce';\r\nimport _reduce from 'lodash/reduce';\r\nimport classnames from 'classnames'\r\nimport { FormControl as Input, Modal, Button, Row, Col, Tabs, Icon, Spin, notification, Drawer, Checkbox, Popover } from 'tinper-bee'\r\nimport Carousel from \"tinper-bee/lib/Carousel\";\r\nimport CarouselFigure from 'bee-carousel-figure';\r\nimport 'bee-carousel-figure/build/CarouselFigure.css';\r\nimport Message from '../message'\r\nimport asyncModal from './asyncModal'\r\nimport ModalWraper from '../modalWraper'\r\nimport { openLoadingModal, openQueryingModal, showSuccessModal, getFixedNumber } from './utils'\r\nimport SettlementStore, { PayStyle, PayIcon, PayIcon2,BankNoType } from './settlementStore'\r\nimport Keyboard from '../keyboard'\r\nimport { NumKeyboardDigit , Input as TplusInput} from 'tplus-components-touch'\r\nimport NumKeyboard from '../keyboard/numKeyboard';\r\nimport NumKeyboardScan from '../keyboard/numKeyboardScan';\r\nimport Ticon from '../ticon'\r\nimport PropTypes from 'prop-types'\r\nimport Scan from '../scan'\r\nimport HardwareAPI from '../hardwareAPI'\r\nimport { nativeMs, env, localStore } from 'mutants-microfx';\r\nimport { platform } from 'mutants-util';\r\nimport { hotKey } from '../../index';\r\nimport { PosInitData } from 'tplus-poslogin';\r\n\r\nconst TabPane = Tabs.TabPane;\r\n\r\n\r\n\r\n@observer\r\nclass Settlement extends React.Component {\r\n state = {\r\n visible: false,\r\n czkVisible: false,\r\n djqVisible: false,\r\n jfdxVisible: false,\r\n currentIndex: 0,\r\n connectCardStatus: false, //连接IC卡状态\r\n connectCardError: '', //连接IC卡错误后记录错误信息\r\n amountChanged: false,\r\n type: 0,\r\n isManualIntoAmount: PosInitData(\"IsManualIntoAmount\"),\r\n isXianjin: false,\r\n changeToStorageData: {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n },\r\n changeToStorgeValue: {\r\n inputTarget2: 0,\r\n inputChangeStorage: 0\r\n }\r\n }\r\n // 复核结算方式快捷键列表\r\n compoundHotkeysList = (window.$.operationControl[5] ? (window.$.operationControl[5].control || []) : []).map((key) => {\r\n return key.toLocaleUpperCase();\r\n })\r\n\r\n hotkeydebounced = null;\r\n hotkeydebouncedPayMode = \"\";\r\n\r\n \r\n static contextTypes = {\r\n viewModel: PropTypes.object,\r\n stores: PropTypes.object,\r\n }\r\n\r\n currentInput = null;\r\n\r\n store = new SettlementStore()\r\n\r\n constructor(props) {\r\n super(props);\r\n const { loginInfo: { ICCardServer, ICCardPassword } = {} } = localStore.get('user') || {};\r\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\r\n this.iCCardPassword = ICCardPassword; //IC卡密码\r\n //移动端环境下,没有读取IC卡的方式。\r\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\r\n this.isHorizontalPad = !!isHorizontalPad;\r\n this.isHorizontalSunMi = !!isHorizontalSunMi;\r\n this.isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\r\n this.hasElectron = (env.platform === env.constant.platform.electron);\r\n this.handleReadICard = this.handleReadICard.bind(this);\r\n this.handleCardonEntered = this.handleCardonEntered.bind(this);\r\n this.setTimer = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.store.initPaymodes(this.updateInput,this.props.type, this.props.isProject);\r\n }\r\n\r\n componentDidUpdate() {\r\n this.resizeSettlementToolBtns()\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.amount != this.props.amount) {\r\n this.store.amountChanged(nextProps.amount);\r\n this.setState({ amountChanged: !this.state.amountChanged });\r\n }\r\n }\r\n\r\n //对结算按钮超出的处理\r\n resizeSettlementToolBtns = () => {\r\n const { newStyle } = this.store;\r\n const { isMemberStorePage } = this.props;\r\n let b = this.billingSettlementDocumnet;\r\n if (b && newStyle && !isMemberStorePage) {\r\n let bWidth = b.offsetWidth;\r\n let cWidth = 0;\r\n if (b.firstChild) {\r\n cWidth += b.firstChild.offsetWidth;\r\n }\r\n if (b.lastChild && b.lastChild.childNodes) {\r\n b.lastChild.childNodes.forEach(v => {\r\n cWidth += v.offsetWidth;\r\n })\r\n }\r\n if (b.lastChild) {\r\n if (bWidth < cWidth) {\r\n b.lastChild.className = 'btns voucherMode';\r\n } else {\r\n b.lastChild.className = 'btns';\r\n }\r\n }\r\n }\r\n }\r\n\r\n //IC卡连接\r\n connectRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('ConnectRfCard', null, ret => {\r\n let result = {}\r\n if (ret.status === 0) {\r\n result = { connectCardStatus: false, connectCardError: ret.value }\r\n } else {\r\n result = { connectCardStatus: true, connectCardError: '' };\r\n }\r\n this.setState(result)\r\n })\r\n }\r\n }\r\n //IC卡读取\r\n readRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n const { connectCardStatus, connectCardError } = this.state;\r\n if (connectCardStatus === false) {\r\n Message.error(connectCardError ? connectCardError : '读取IC卡失败');\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n }\r\n let params = { cardPsw: this.iCCardPassword, cardSec: 13, cardKm: 0 }\r\n nativeMs.setIpcRendererMethod('ReadRfCard', { ...params }, ret => {\r\n if (ret.status === 0) {\r\n Message.error(ret.value);\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n } else if (ret.status === 1) {\r\n //this.searchMember(ret.value);\r\n this.czkInput.input[\"value\"] = ret.value;\r\n this.loadCzk(ret.value);\r\n }\r\n })\r\n }\r\n }\r\n\r\n //IC卡关闭\r\n closeRfCard() {\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('CloseRfCard')\r\n }\r\n }\r\n handleReadICard = () => {\r\n this.readRfCard();\r\n }\r\n\r\n handleCardonEntered = () => {\r\n this.hasElectron === true && this.iCCardServer === 1 && this.readRfCard();\r\n }\r\n\r\n updateInput = () => {\r\n let { currentMode } = this.store.paymode;\r\n if (this.state.jfdxVisible && currentMode && currentMode.member.exchangable !== undefined) {\r\n this.inputkey = \"inputJfdxAmount\";\r\n this[\"inputJfdxAmount\"].input.value = currentMode && getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.exchangable))\r\n this.setCurrentModeValue(this.inputJfdxAmount.input.value, Math.min(currentMode.maxamount, currentMode.member.exchangable));\r\n } else if (this.state.czkVisible && currentMode && currentMode.value >= 0 && currentMode.member.balance !== undefined) {\r\n this.inputkey = \"inputCzkAmount\";\r\n this[\"inputCzkAmount\"].input.value = getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.balance));\r\n const maxamount = Math.min(currentMode.maxamount, currentMode.member.balance);\r\n this.setCurrentModeValue(this.inputCzkAmount.input.value, maxamount);\r\n if (this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount) > parseFloat(maxamount)) {\r\n Message.error(\"本单最大可用储值卡结算金额为:\" + getFixedNumber(maxamount) + \",请使用复合结算!\");\r\n setTimeout(() => {\r\n this.handleCzkCancel();\r\n setTimeout(() => { this.czkKeyboardOnClose() }, 150)\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n quickSettle = (key) => {\r\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result => {\r\n if (result) {\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, true, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n if (key == PayStyle.hyczk) {\r\n this.showCzkModal();\r\n } else {\r\n this.store.quickSettle(key);\r\n this.handleSettle(\"quickPay\");\r\n }\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n }\r\n })\r\n }\r\n\r\n showModal = () => {\r\n // 支持异步验证过程\r\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result => {\r\n if (result) {\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, false, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n this.setState({ visible: true });\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n setTimeout(() => { \r\n let { paymode, brefund, newStyle } = this.store;\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n this.setFocusAndSelectionMode(thePaymodes,-1);\r\n }, 100)\r\n }\r\n })\r\n }\r\n\r\n settleZero = () => {\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '结算',\r\n content: '当前收款金额为0,确认结算?',\r\n onOk() {\r\n that.handleSettle(\"zero\");\r\n },\r\n onCancel() {\r\n\r\n },\r\n });\r\n }\r\n\r\n handleOk = (e) => {\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n handleCancel = (e) => {\r\n let data1 = {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n }\r\n let data2 = {\r\n inputTarget2: 0,\r\n inputChangeStorage: 0\r\n }\r\n\r\n this.setState({\r\n changeToStorageData: data1,\r\n changeToStorgeValue: data2\r\n })\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.cancelState();\r\n this.setInventoryFocus();\r\n }\r\n cancelState = () => {\r\n this.store.clearInputStorageData()\r\n this.store.clean();\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n //czk\r\n showCzkModal = (id, append) => {\r\n this.store.setCurrentMode(id, PayStyle.hyczk, append);\r\n this._val = this.store.paymode.currentMode.value;\r\n let { currentMode } = this.store.paymode;\r\n const maxamount = Math.min(currentMode.maxamount, currentMode.member.balance);\r\n if (this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount) > parseFloat(maxamount)) {\r\n Message.error(\"本单最大可用储值卡结算金额为:\" + getFixedNumber(maxamount) + \",请使用复合结算!\");\r\n } else {\r\n this.setState({\r\n czkVisible: true,\r\n });\r\n }\r\n setTimeout(() => {\r\n if (!currentMode.member || !currentMode.member.id) {\r\n this.czkInput.input.focus()\r\n } else {\r\n if (this.inputCzkAmount && this.inputCzkAmount.input) {\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n this.connectRfCard();\r\n }\r\n\r\n handleCzkOk = async (e) => {\r\n // const maxamount=Math.min(this.store.paymode.currentMode.maxamount,this.store.paymode.currentMode.member.balance);\r\n // if(this.store.bquick && this.store.paymode.amount>maxamount){\r\n // Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n\r\n if (!this.store.paymode.currentMode.member.id) {\r\n await this.store.loadCzk(this.czkInput.input.value);\r\n }\r\n\r\n if (!this.store.paymode.currentMode.member.id) {\r\n Message.error(\"请录入储值卡!\");\r\n return;\r\n }\r\n // if(this.store.paymode.currentMode.value > 0 && this.store.paymode.currentMode.member.NeedModifyPassword){\r\n // Message.error(\"U会员中密码为空,请设置密码后使用!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n if (_find(this.store.paymode.thePaymodes, (mode) => {\r\n return mode.paymethodId != this.store.paymode.currentMode.paymethodId &&\r\n mode.paymentType == PayStyle.hyczk &&\r\n mode.member.id == this.store.paymode.currentMode.member.id\r\n })) {\r\n Message.error(\"该储值卡已使用。\");\r\n return;\r\n }\r\n if (this.store.bquick && this.store.paymode.amount != this.store.paymode.currentMode.value) {\r\n Message.error(\"实收金额应等于应收金额。\");\r\n return;\r\n }\r\n\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n this.store.paymode.calcMemberBalance();\r\n this.handleCzk();\r\n }\r\n\r\n handleCzkCancel = (e) => {\r\n if (this.store.bquick) {\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.store.clean();\r\n }\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n Keyboard.close();\r\n this.setInventoryFocus();\r\n }\r\n\r\n //关闭弹框时,执行此方法,把焦点设定到商品录入框\r\n setInventoryFocus = () => {\r\n if (!!this.isHorizontalPad) return;\r\n let doms = document.getElementsByClassName('app hot-key-focus-container');\r\n let input = document.getElementById('productPoint');\r\n if (input) setTimeout(() => { if (doms && doms.length > 0) { input.focus() } }, 300);\r\n }\r\n\r\n //djq\r\n showDjqModal = (id) => {\r\n // if(!this.store.member || !this.store.member.Uid){\r\n // Message.error('请先输入会员再使用代金券结算!');\r\n // return ;\r\n // }\r\n this.store.setCurrentMode(id, PayStyle.djq);\r\n this.setState({\r\n djqVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputdjq.input.focus()\r\n }, 200)\r\n }\r\n\r\n handleDjqOk = (e) => {\r\n if (this.store.paymode.currentMode.boriginReturn) {\r\n this.handleDjqCancel(e);\r\n return;\r\n }\r\n if (_filter(this.store.paymode.currentMode.djqs, (djq) => { return djq.checked }).length == 0) {\r\n Message.error(\"请录入并使用代金券。\");\r\n return;\r\n }\r\n if (parseFloat(this.store.paymode.currentMode.value) > parseFloat(this.store.paymode.currentMode.maxamount)) {\r\n Message.error(\"超过了代金券可支付的最大金额。\");\r\n return;\r\n }\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n this.setCurrentFocusAndAddPay(PayStyle.djq);\r\n }\r\n\r\n handleDjqCancel = (e) => {\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n }\r\n\r\n //jfdx\r\n showJfdxModal = (jid) => {\r\n let id = this.store.newStyle ? -1 : jid;\r\n if (!this.store.member || !this.store.member.ID) {\r\n Message.error('请先输入会员再使用会员积分抵现结算!');\r\n return;\r\n }\r\n let djqmode = _find(this.store.paymode.thePaymodes, (themode) => { return themode.paymentType == PayStyle.djq; });\r\n let djq = djqmode && _find(djqmode.djqs, (djq) => { return !djq.IsRepelWithPoints });\r\n if (djq) {\r\n Message.error(`代金券(${djq.code})不可与积分一起使用`);\r\n return;\r\n }\r\n this.store.setCurrentMode(id, PayStyle.jfdx);\r\n this._val = this.store.paymode.currentMode.value;\r\n this.setState({\r\n jfdxVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputJfdxAmount.input.focus();\r\n this.inputJfdxAmount.input.setSelectionRange(0, this.inputJfdxAmount.input.value.length);\r\n }, 200)\r\n }\r\n\r\n handleJfdxOk = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n this.handleCzk();\r\n }\r\n\r\n handleJfdxCancel = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n }\r\n\r\n onTabsClick2 = (paymode, brefund, themode, key) => {\r\n paymode.currentMode = null;\r\n switch (key) {\r\n case PayStyle.hyczk:\r\n this.showCzkModal(-1);\r\n break;\r\n case PayStyle.jfdx:\r\n this.showJfdxModal(-1);\r\n break;\r\n case PayStyle.djq:\r\n let memberInfo = this.store && this.store.member;\r\n let hasmember = (memberInfo.ID || memberInfo.Code || memberInfo.Name) ? true : false;\r\n let omc = this.props.initData(\"OnlyMemberCanUseCoupon\")\r\n if (omc && !hasmember) {\r\n Message.warn('仅会员可以使用优惠券,请录入会员!');\r\n return;\r\n }\r\n this.showDjqModal(-1);\r\n break;\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf })) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用微信了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf })) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用支付宝了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx })) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用扫码支付了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n default:\r\n this.setCurrentFocusAndAddPay(key);\r\n break;\r\n }\r\n }\r\n\r\n checkScanDisabled = (key) => {\r\n const { paymode, newStyle } = this.store;\r\n let bdisabled = false;\r\n if (!newStyle) {\r\n return bdisabled;\r\n }\r\n switch (key) {\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value) != 0 })) {\r\n bdisabled = true;\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value) != 0 })) {\r\n bdisabled = true;\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx) && parseFloat(mode.value) != 0 })) {\r\n bdisabled = true;\r\n }\r\n break;\r\n }\r\n return bdisabled;\r\n }\r\n\r\n onTabsClick = (key) => {\r\n const { paymode, brefund, boriginReturn } = this.store;\r\n if (this.checkModeDisabled(key, brefund, boriginReturn)) {\r\n return;\r\n }\r\n let themode = _find(paymode.paymodes, { 'paymentType': key });\r\n if (themode.exchangeRate != 1) {\r\n let forign = _find(paymode.thePaymodes, (mode) => { return mode.exchangeRate != 1 && mode.paymentType != key });\r\n if (forign) {\r\n Message.error(\"只允许一种外币结算。\");\r\n return;\r\n }\r\n }\r\n themode = _find(paymode.thePaymodes, (mode) => { return mode.paymentType === key });\r\n const that = this;\r\n if (themode) {\r\n this.setCurrentFocusOnly(key);\r\n return;\r\n } else if (paymode.thePaymodes.length >= 1) {\r\n switch (this.props.initData(\"multiPay\")) {\r\n case \"1197\":\r\n Message.error(\"当前设置为不支持多种结算方式。\");\r\n break;\r\n case \"1198\":\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '复合结算',\r\n content: '您确定要使用多种结算方式吗?',\r\n onOk() {\r\n that.onTabsClick2(paymode, brefund, themode, key);\r\n },\r\n onCancel() {\r\n },\r\n });\r\n break;\r\n default:\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n break;\r\n }\r\n } else {\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n }\r\n }\r\n\r\n editModal = (id, type, boriginReturn) => {\r\n this.setState({ currentIndex: id });\r\n switch (type) {\r\n case PayStyle.hyczk:\r\n !boriginReturn && this.showCzkModal(id);\r\n break;\r\n case PayStyle.jfdx:\r\n !boriginReturn && this.showJfdxModal(id);\r\n break;\r\n case PayStyle.djq:\r\n this.showDjqModal(id);\r\n break;\r\n }\r\n }\r\n\r\n setCurrentFocusAndAddPay = (key) => {\r\n this.store.changeFocusAndAddPay(key);\r\n if (this.store.bquick) {\r\n this.handleSettle(\"quickPay\");\r\n } else {\r\n this.setFocusAndSelection(key);\r\n }\r\n }\r\n\r\n onDelPay = (index, boriginReturn, type) => {\r\n if (type === PayStyle.xianjin) {\r\n let ret = {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n }\r\n let ret1 ={\r\n inputTarget2: 0,\r\n inputChangeStorage: 0\r\n }\r\n this.setState({\r\n changeToStorageData: ret,\r\n changeToStorgeValue: ret1\r\n })\r\n }\r\n if (boriginReturn && (type == PayStyle.hyczk || type == PayStyle.djq || type == PayStyle.jfdx)) {\r\n Message.info('原单退货时,该结算方式不可以删除。');\r\n } else {\r\n this.store.delPay(index);\r\n }\r\n }\r\n\r\n handleChange = (index, e) => {\r\n let currentInput = e.target;\r\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\r\n if (!isNaN(e.target.value) || e.target.value == '-') {\r\n if (e.target.value.length <= amountMaxLength) {\r\n this.store.changeValue(index, e.target.value, false);\r\n }\r\n }\r\n }\r\n\r\n handleChangeToStorage = async (index, e) => {\r\n let currentInput = e.target;\r\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\r\n if (!isNaN(e.target.value) || e.target.value == '-') {\r\n if (e.target.value.length <= amountMaxLength) {\r\n this.store.changeValue(index, e.target.value, false);\r\n }\r\n }\r\n let { paymode} = this.store;\r\n if (this.store.dto.Idmember) {\r\n let resp = await this.getChangeToStorage(getFixedNumber(Math.abs(paymode.receivable)));\r\n //获取是否有权限找零转储值\r\n this.setState({\r\n changeToStorageData: resp\r\n })\r\n if (resp.IsCanToStorage) {\r\n // 零转储值不能编辑\r\n if (resp.Storage < 0 || resp.Storage ===0) {\r\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\r\n this.inputChangeStorage && (this.inputChangeStorage.value = getFixedNumber(0));\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage && this.inputChangeStorage.value);\r\n } else {\r\n this.inputChangeStorage.value = getFixedNumber(resp.Storage);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(0);\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\r\n inputChangeStorage: this.inputChangeStorage && this.inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleInputChangeToStorage = () => {\r\n\r\n }\r\n\r\n setCurrentModeValue = (val, max) => {\r\n let value = val;\r\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\r\n if (isNaN(val) && val !== '-') {\r\n value = this._val;\r\n } else if (!this.store.brefund && !isNaN(val) && parseFloat(val) <= 0) {\r\n value = this._val;\r\n } else if (value.length > amountMaxLength) {\r\n value = this._val;\r\n } else {\r\n this._val = val;\r\n }\r\n this[this.inputkey].input.value = value;\r\n this.store.paymode.setCurrentModeValue(value, max);\r\n }\r\n\r\n onBlur = (index, e) => {\r\n this.currentInput = null;\r\n this.store.changeFocusOnly(-1);\r\n this.store.changeValue(index, e.target.value == '-' ? 0 : e.target.value, true);\r\n }\r\n\r\n onChangeToStorageBlur = (e) => {\r\n\r\n }\r\n\r\n onFocus = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.setCurrentFocusOnly(mode.paymentType);\r\n }\r\n\r\n\r\n onFocusHack = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.store.changeFocusOnly(mode.paymentType);\r\n }\r\n\r\n setCurrentFocusOnly = (key) => {\r\n this.store.changeFocusOnly(key);\r\n this.setFocusAndSelection(key);\r\n }\r\n\r\n appendCzkmode = (boriginReturn) => {\r\n if (boriginReturn) {\r\n Message.info('原单退货时不可以使用非原单的储值卡结算方式。');\r\n return;\r\n }\r\n let bappend = true;\r\n const { paymode, newStyle, member } = this.store;\r\n if (newStyle && member.ID && _findIndex(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.hyczk && mode.member.id == member.ID }) == -1) {\r\n bappend = false;\r\n }\r\n this.showCzkModal(-1, bappend);\r\n }\r\n\r\n djqChecked = (q) => {\r\n if (this.store.paymode.currentMode.boriginReturn) {\r\n Message.info('原单退货时代金券不可以取消。');\r\n return;\r\n }\r\n this.store.paymode.calcDjqValue(q);\r\n }\r\n\r\n addDjq = () => {\r\n // this.store.addDjq('10000','5元代金券',5,'无门槛','2019-12-31',true);\r\n const v = _trim(this.inputdjq.input.value);\r\n if (v === '') {\r\n return;\r\n }\r\n this.store.checkCoupon(v).then(() => {\r\n this.inputdjq.input.value = '';\r\n this.inputdjq.input.focus();\r\n })\r\n\r\n }\r\n\r\n loadCzk = (v) => {\r\n if (this.czkdebounced) {\r\n return;\r\n }\r\n this.czkdebounced = _debounce(() => {\r\n this.store.loadCzk(v);\r\n }, 1000, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.czkdebounced();\r\n setTimeout(() => {\r\n this.czkdebounced.cancel();\r\n this.czkdebounced = null;\r\n }, 2000)\r\n }\r\n\r\n onHotKeyClick1 = (mode, index, boriginReturn) => {\r\n if (this.hotkeydebouncedPayMode == mode) {\r\n return;\r\n }\r\n if (this.hotkeydebounced) {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n }\r\n this.hotkeydebounced = _debounce(() => {\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onHotKeyClickModal(mode, index, boriginReturn);\r\n }, 500, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(() => {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n }, 1000)\r\n }\r\n\r\n onHotKeyClickModal = (mode, index, boriginReturn) => {\r\n let { brefund } = this.store;\r\n if (this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)) {\r\n return;\r\n }\r\n if (mode.paymentType == PayStyle.hyczk) {\r\n this.appendCzkmode(boriginReturn);\r\n } else {\r\n this.editModal(index, mode.paymentType, boriginReturn)\r\n }\r\n }\r\n\r\n onHotKeyClick2 = (index, mode, paymode, e) => {\r\n if (this.hotkeydebouncedPayMode == mode) {\r\n return;\r\n }\r\n if (this.hotkeydebounced) {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n }\r\n this.hotkeydebounced = _debounce(() => {\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onFocus(index, mode, paymode, e);\r\n }, 500, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(() => {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n }, 1000)\r\n }\r\n\r\n onHotKeyEnter = (e, notsettle) => {\r\n let { paymode, brefund, newStyle } = this.store;\r\n\r\n if (this.hotkeydebounced) {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n }\r\n this.hotkeydebounced = _debounce(() => {\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n // 定义当前检测的paymode\r\n this.hotkeydebouncedPayMode = paymode;\r\n if (!notsettle && !this.checkSettleDisabled(paymode, thePaymodes)) {\r\n this.handleSettle();\r\n } else if ((thePaymodes || []).length > 0) {\r\n this.setFocusAndSelectionMode(thePaymodes,this.state.currentIndex);\r\n }\r\n }, 500, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(() => {\r\n this.hotkeydebounced && this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n }, 1000)\r\n }\r\n\r\n \r\n setFocusAndSelectionMode = (thePaymodes,currentIndex) => {\r\n\r\n let displayPayModeList = [...thePaymodes];\r\n // 复制支付方式列表\r\n const SaoMaPayMode = displayPayModeList.find( mode => mode.paymentType == PayStyle.smzf);\r\n // 查找扫码支付\r\n if(SaoMaPayMode){\r\n // 如果扫码支付存在 则 排除微信支付宝\r\n displayPayModeList = displayPayModeList.filter( mode => mode.paymentType != PayStyle.zfb && mode.paymentType != PayStyle.wx )\r\n }\r\n // 查找到下一次enter键后的支付方式\r\n let paymodeOb = this.findHaveNoModlePayType(displayPayModeList,currentIndex);\r\n if(paymodeOb){\r\n // 获取焦点\r\n // this.setFocusAndSelection(paymodeOb.mode.paymentType);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * \r\n * @param {*} thePaymodes 支付方式列表\r\n * @param {*} currenIndex 当前支付方式下标\r\n * @param {*} symbol 从当前currenIndex开始 还是从当前currenIndex截止\r\n */\r\n findModlePayBySplice = (thePaymodes,currenIndex,symbol) =>{\r\n let findIndex = currenIndex;\r\n const endCurrentMode = thePaymodes.find((mode, index) => {\r\n findIndex++;\r\n return (symbol? index > currenIndex:index < currenIndex) && \r\n mode.paymentType != PayStyle.hyczk && \r\n mode.paymentType != PayStyle.djq &&\r\n mode.paymentType != PayStyle.jfdx\r\n });\r\n if(endCurrentMode) return { mode:endCurrentMode,index:findIndex}\r\n return null;\r\n }\r\n\r\n findHaveNoModlePayType = (thePaymodes,currenIndex) => {\r\n if(!thePaymodes || thePaymodes.length == 0) return null;\r\n let findIndex = -1;\r\n thePaymodes.forEach((item,index)=>{\r\n if(item.paymethodId == currenIndex) findIndex = index;\r\n })\r\n const endCurrentModeOb = this.findModlePayBySplice(thePaymodes,findIndex,true)\r\n if(endCurrentModeOb) return endCurrentModeOb;\r\n const startCurrentModeOb = this.findModlePayBySplice(thePaymodes,findIndex,false)\r\n if(startCurrentModeOb) return startCurrentModeOb;\r\n return null\r\n }\r\n\r\n\r\n setFocusAndSelection = (key) => {\r\n const that = this;\r\n const { paymode } = this.store;\r\n const themode = _find(paymode.thePaymodes, (mode) => mode.paymentType === key);\r\n const index = (themode && themode.paymethodId) || -1;\r\n if (index !== -1) {\r\n setTimeout(() => {\r\n const input = document.getElementById(`inputS${index}`)\r\n if (!input) return;\r\n that.setState({ currentIndex: index });\r\n setTimeout(() => {\r\n input.focus();\r\n input.setSelectionRange(0, input.value.length)\r\n }, 10)\r\n }, 200)\r\n }\r\n }\r\n\r\n settleUnReturn = async () => {\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n content: <div className='unReturn'><div className='title'>支付超时,需要重新查询支付结果!</div><div>若不重新查询,会出现顾客支付成功,但零售单收款不成功的情况。</div></div>,\r\n async onOk() {\r\n window.__queryingModal = openQueryingModal();\r\n let result = await that.store.querySettleResult();\r\n setTimeout(() => {\r\n if (window.__queryingModal) {\r\n window.__queryingModal.destroy()\r\n window.__queryingModal = null\r\n }\r\n }, 0)\r\n switch (result.Flag) {\r\n case \"0\"://成功\r\n that.store.setDtoID(result.ID);\r\n that.settleSuccess();\r\n break;\r\n case \"1\"://处理中\r\n that.settleUnReturn();\r\n // Message.info(\"结算正在处理中,请稍后再次查询。\");\r\n break;\r\n case \"2\"://失败\r\n Message.info(`结算失败,原因:${result.Message}。`);\r\n break;\r\n }\r\n },\r\n onCancel() {\r\n },\r\n });\r\n }\r\n settleCanceled = () => {\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n }\r\n\r\n calculationIsXianJin = (mode) => {\r\n return this.store.calculationIsXianJin(mode);\r\n } \r\n \r\n settleSuccess = async () => {\r\n //提示成功\r\n let { amount, received, thePaymodes } = this.store.paymode;\r\n let charge = this.store.paymode.charge;\r\n // 如果不存在bankNoType 则按照原始判断方式 判断支付方式\r\n let openCashBox = !!_find(thePaymodes, (mode) => {\r\n if (mode.value != 0 || mode.value !== '0.00') {\r\n return this.calculationIsXianJin(mode)\r\n }\r\n return false;\r\n });\r\n console.log('是否允许弹钱箱', openCashBox);\r\n // 判断双屏显示。\r\n const _this = this;\r\n const showTwoScreen = function (amount, received, charge) {\r\n const getScreenType = function () {\r\n let flag = false;\r\n if (_this.hasElectron === true || _this.isHorizontalSunMi) {\r\n let data = localStore.get('setting_setData') || [];\r\n data = data.filter(item => item.Name === 'EnableDoubleScreen');\r\n data = data && data.length > 0 ? data.shift() : null;\r\n if (data && data.Value === '1') {\r\n flag = true;\r\n }\r\n }\r\n return flag;\r\n }\r\n const params = {\r\n step: 3,\r\n data: {\r\n amount: amount,\r\n received: received,\r\n charge: charge\r\n }\r\n }\r\n let screenType = getScreenType();\r\n if (screenType === true) { //副屏-第二屏幕\r\n if (_this.isHorizontalSunMi) {\r\n window.sunMi_PresentationManager.sendMessageToSecondScreen(params);\r\n setTimeout(()=>{\r\n window.sunMi_PresentationManager.sendMessageToSecondScreen({ step: 1 });\r\n },3000)\r\n } else {\r\n nativeMs && nativeMs.setIpcRendererMethod('ReplyScreen', params);\r\n }\r\n setTimeout(() => { _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox }) }, 1500)\r\n } else {\r\n _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox });\r\n }\r\n }\r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n const { isXianjin, changeToStorageData, changeToStorgeValue } = _this.state;\r\n const { onModalClose, isShowChangeTurn } = _this.props;\r\n showTwoScreen(amount, received, charge);\r\n if (isXianjin) this.handleGuestShow(4, charge);\r\n window.__successModal = showSuccessModal(amount, received, charge, _this.props.onModalClose, isXianjin, () => {\r\n _this.handleGuestShow(5)\r\n }, isShowChangeTurn, changeToStorageData, changeToStorgeValue)\r\n let data1 = {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n }\r\n let data2 = {\r\n inputTarget2: 0,\r\n inputChangeStorage: 0\r\n }\r\n this.setState({ isXianjin: false,\r\n changeToStorageData: data1,\r\n changeToStorgeValue: data2\r\n })\r\n this.cancelState();\r\n }, 0)\r\n }\r\n // 处理客显显示功能\r\n handleGuestShow = (dtype, value) => {\r\n if (this.hasElectron === false) return;\r\n let dt = localStore.get('portsetting_hardSet') || [];\r\n const { guestshow_enable, guestshow_clear, guestshow_welcome, guestshow_collect, guestshow_refund, guestshow_change } = dt || {};\r\n if (guestshow_enable === false) return;\r\n let other = '';\r\n switch (dtype) {\r\n case 0: //欢迎\r\n other = guestshow_welcome;\r\n break;\r\n case 2: //退款\r\n other = (guestshow_refund + \"\").replace('[含税总金额]', Math.abs(value))\r\n break;\r\n case 3: //收款\r\n other = (guestshow_collect + \"\").replace('[含税总金额]', value)\r\n break;\r\n case 4: //找零\r\n other = (guestshow_change + \"\").replace('[找零金额]', getFixedNumber(value))\r\n break;\r\n case 5: //清除\r\n other = guestshow_clear;\r\n break;\r\n }\r\n let params = JSON.stringify({ price: '', qty: '', total: '', inv: '', wel: '', other: other })\r\n console.log(`Send客显sendDataCusDisp:状态-${dtype},参数-${params}`)\r\n HardwareAPI.sendDataCusDisp({ data: params, dataType: dtype }, ret => { console.log(`Return客显sendDataCusDisp:状态-${dtype},返回-${JSON.stringify(ret)}`) })\r\n }\r\n\r\n handleSettle = async (args) => {\r\n\r\n console.log(\"settlement.handleSettle开始执行,参数:\", +args);\r\n const { paymode, brefund, boriginReturn, newStyle } = this.store;\r\n const isQuickPay = args === 'quickPay'\r\n const that = this;\r\n let status = false\r\n paymode.thePaymodes.forEach((v) => {\r\n const isXianjin = this.calculationIsXianJin(v)\r\n if ( isXianjin && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n if (that.checkCharge() && Math.abs(paymode.receivable) > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n return;\r\n }\r\n if (args !== \"zero\" && !newStyle) {\r\n let zeromode = _find(paymode.thePaymodes, (mode) => {\r\n return parseFloat(mode.value) == 0 || (mode.exchangeRate != 1 ? parseFloat(mode.value2) : parseFloat(mode.value)) == 0;\r\n })\r\n if (zeromode) {\r\n Message.error(zeromode.name + ' 的结算金额为零,不可以结算。');\r\n return;\r\n }\r\n }\r\n\r\n let promises = []\r\n const thePaymodes = _sortBy(newStyle ? _filter(paymode.thePaymodes, (mode) => { return parseFloat(mode.value) != 0; }) : paymode.thePaymodes, 'orderBy')\r\n if (isQuickPay) {\r\n let quickmode = thePaymodes[0];\r\n if (this.checkModeDisabled(quickmode.paymentType, brefund, boriginReturn)) {\r\n Message.error('退款不能使用' + quickmode.name + '结算,请使用其他结算方式!');\r\n return;\r\n }\r\n }\r\n _forEach(thePaymodes, (mode) => {\r\n if (!(boriginReturn && brefund) && (mode.paymentType == PayStyle.zfb || mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.smzf\r\n || (that.calculationIsXianJin(mode) && isQuickPay))) {\r\n promises.push(that.inputConfirm(mode, isQuickPay))\r\n }\r\n });\r\n\r\n const commit = async (values) => {\r\n const result = await this.store.commit(this.props.bTest);\r\n if (result === true) {//成功\r\n that.settleSuccess();\r\n Promise.resolve()\r\n } else {\r\n //提示失败\r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n //撤销支付\r\n }, 0)\r\n if (result && (result.Code || result.code)) {\r\n switch (result.Code || result.code) {\r\n case 'RE_Settle_UnReturn':\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n break;\r\n case 'ECONNABORTED'://error.code === 'ECONNABORTED' && error.message.indexOf('timeout')\r\n result.message.indexOf('timeout') > -1 && that.settleUnReturn();\r\n break;\r\n }\r\n }\r\n if (isQuickPay) {\r\n that.props.onCancelSettle && that.props.onCancelSettle();\r\n that.cancelState();\r\n }\r\n\r\n await Promise.reject()\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n window.__loadingModal = openLoadingModal()\r\n await commit(results);\r\n } catch (err) {\r\n // notification.open({\r\n // message: '错误',\r\n // description: '失败, 请重新结算',\r\n // });\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n\r\n handleCzk = async () => {\r\n const that = this;\r\n const curmode = this.store.paymode.currentMode;\r\n let promises = [];\r\n\r\n if (curmode.member.needPwd && curmode.value > 0) {\r\n promises.push(that.inputPwd(curmode))\r\n }\r\n\r\n const commit = async (values) => {\r\n //密码校验\r\n const result = values.length > 0 ? (await that.store.validePwd(values[0])) : \"\";\r\n if (result == \"\") {//成功\r\n //返回\r\n that.setCurrentFocusAndAddPay(curmode.paymentType);\r\n Promise.resolve()\r\n } else {\r\n //Message.info(\"密码不正确\");\r\n await Promise.reject(result)\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n await commit(results);\r\n } catch (err) {\r\n if (err != \"cancelpwd\") {\r\n Message.error(err);\r\n setTimeout(() => { that.handleCzk(); }, 500);\r\n }\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n //that[`inputS${paymode.paymethodId}`]\r\n fKeyboardOnOk = (paymethodeId) => {\r\n const input = this[`inputS${paymethodeId}`].input;\r\n return (e) => {\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n fKeyboardOnClose = (paymethodeId) => {\r\n const input = this[`inputS${paymethodeId}`].input;\r\n return (e) => {\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n\r\n keyboardOnOk = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n keyboardOnClose = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n inputPwd = async (paymode) => {\r\n const that = this\r\n return new Promise(function (resolve, reject) {\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n Keyboard.close();\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['value'])\r\n // if (v !== '') {\r\n modal.destroy()\r\n\r\n setTimeout(() => {\r\n paymode.authCode = v;\r\n resolve({\r\n id: paymode.member.id,\r\n pwd: v,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // throw \"error\";\r\n // }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n reject('cancelpwd')\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: true,\r\n title: paymode.name,\r\n width: 450,\r\n className: (that.isHorizontalSunMi || !that.isMobileEnvironment) ? 'pwdModal' : 'pwdModal extraHeight',\r\n // 储值卡结账时显示为密码框\r\n content: (<div className=\"scanInput\">\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{getFixedNumber(paymode.value)}</span>\r\n </div>\r\n <div className=\"pwd pwd_chuzhika\">\r\n <span className=\"label\">储值卡密码:</span>\r\n <TplusInput\r\n noAutocomplete\r\n tplusInput\r\n className=\"content\"\r\n isPasswordFixedInput = {true}\r\n type='native'\r\n placeholder='输入密码'\r\n inputRef={input => that[`inputS${paymode.paymethodId}`] = {input:input}}\r\n htmlType='password'\r\n onBlur={(e) => { Keyboard.close(); }}\r\n onFocus={({ target }) => {\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input;\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(inputTarget, inputTarget.value, v);\r\n inputTarget.value = value;\r\n }, that.fKeyboardOnOk(paymode.paymethodId), that.fKeyboardOnClose(paymode.paymethodId))()\r\n }}\r\n />\r\n </div>\r\n <div className=\"buttonRegion\">\r\n <div className=\"fr\">\r\n <button\r\n type=\"button\"\r\n className=\"ant-btn ant-btn-lg\" onClick={() => {\r\n modal.destroy()\r\n reject('cancelpwd')//\r\n }}>取消\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"ant-btn ant-btn-primary ant-btn-lg\" onClick={() => {\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['value'])\r\n // if (v !== '') {\r\n modal.destroy()\r\n // if (isQuickPay) {\r\n // window.__loadingModal = openLoadingModal()\r\n // }\r\n setTimeout(() => {\r\n paymode.authCode = v;\r\n resolve({\r\n id: paymode.member.id,\r\n pwd: v,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // }\r\n }}>确定\r\n </button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n that[`inputS${paymode.paymethodId}`].input.focus()\r\n }, 200)\r\n })\r\n }\r\n\r\n isbtnDebouncedNext = async (type, bquick) => {\r\n const { paymode, brefund, boriginReturn, newStyle } = this.store;\r\n let status = false\r\n paymode.thePaymodes.forEach((v) => {\r\n if (this.calculationIsXianJin(v) && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n if (this.state.status) {\r\n if (this.store.dto.Idmember) {\r\n let resp = await this.getChangeToStorage(0);\r\n //获取是否有权限找零转储值\r\n this.setState({\r\n changeToStorageData: resp\r\n })\r\n } else {\r\n let ret = {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n }\r\n this.setState({\r\n changeToStorageData: ret\r\n })\r\n }\r\n }\r\n if (this.btndebounced) {\r\n return;\r\n }\r\n this.btndebounced = _debounce(() => {\r\n if (bquick) {\r\n this.quickSettle(type);\r\n } else {\r\n this.showModal();\r\n }\r\n }, 1000, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.btndebounced();\r\n setTimeout(() => {\r\n this.btndebounced.cancel();\r\n this.btndebounced = null;\r\n }, 2000)\r\n }\r\n\r\n btnDebounced = async (type, bquick) => {\r\n if (this.props.isProject) {\r\n const { isLimit, totalProjectAmount } = this.props;\r\n const { Details, EffectiveDate, ExpirationDate, StorageAmount } = stores.memberProjectStore.data;\r\n if(!Details.length) {\r\n Message.warn('项目不能为空,请选择项目');\r\n return false;\r\n }\r\n if (!(EffectiveDate && ExpirationDate) && !isLimit) {\r\n Message.warn('不限次卡生效日期、失效日期均不能为空!');\r\n return false;\r\n }\r\n if (new Date(EffectiveDate).getTime() > new Date(ExpirationDate).getTime()) {\r\n Message.warn('失效日期应大于生效日期!');\r\n return false;\r\n }\r\n if (isLimit && totalProjectAmount * StorageAmount < 0) {\r\n Message.warn(\"不允许储值金额与项目金额合计一正一负,请修改!\");\r\n return false;\r\n }\r\n if (this.store.isCheckDate) {\r\n let resp = await this.store.CheckExpirationDate();\r\n if (resp.IsSucceed) {\r\n this.isbtnDebouncedNext(type, bquick)\r\n this.store.changeIsCheckDate(false);\r\n } else {\r\n ModalWraper.confirm({\r\n title: \"温馨提示\",\r\n content: resp.ErrorMsg,\r\n cancelable: false,\r\n okText: '确定',\r\n okType: 'warning',\r\n onOk: () => {\r\n this.isbtnDebouncedNext(type, bquick)\r\n this.store.changeIsCheckDate(false);\r\n },\r\n onCancel: () => { \r\n this.store.changeIsCheckDate(true);\r\n return false;\r\n }\r\n })\r\n }\r\n } else {\r\n this.isbtnDebouncedNext(type, bquick)\r\n } \r\n } else {\r\n this.isbtnDebouncedNext(type, bquick)\r\n }\r\n }\r\n\r\n onCzkChange = (v) => {\r\n this.store.paymode.currentMode.member.setCardNo(v);\r\n }\r\n czkKeyboardOnOk = (e) => {\r\n this.czkInput.input.blur();\r\n Keyboard.close();\r\n this.loadCzk(this.czkInput.input[\"value\"]);\r\n }\r\n czkKeyboardOnClose = (e) => {\r\n this.czkInput && this.czkInput.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n onDjqChange = (v, isKeyBorad = false) => {\r\n this.inputdjq.input.value = v;\r\n if (this.debounced) {\r\n this.debounced.cancel();\r\n this.debounced = null;\r\n }\r\n if (!isKeyBorad) {\r\n this.debounced = _debounce(() => { this.addDjq() }, 2000);\r\n this.debounced();\r\n }\r\n }\r\n djqKeyboardOnOk = (e) => {\r\n this.inputdjq.input.blur();\r\n Keyboard.close();\r\n this.addDjq();\r\n }\r\n djqKeyboardOnClose = (e) => {\r\n this.inputdjq.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n checkCharge = () => {\r\n const { paymode } = this.store;\r\n const themode = _find(paymode.thePaymodes, mode => this.calculationIsXianJin(mode));\r\n return (paymode.receivable < 0 && themode && themode.value >= Math.abs(paymode.receivable));\r\n }\r\n\r\n checkThepaymode(key) {\r\n return _findIndex(this.store.paymode.thePaymodes, { paymentType: key }) > -1;\r\n }\r\n\r\n onKeyboardChange(key) {\r\n if (this.currentInput) {\r\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\r\n if (!isNaN(value) || value == '-') {\r\n this.currentInput.value = value;\r\n this.store.changeValue(this.state.currentIndex, value, false);\r\n }\r\n }\r\n }\r\n\r\n onKeyboardChumoChange = async (key) => {\r\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\r\n //判断是找零转储值\r\n if (this.currentInput.id === 'changeToStorageId') {\r\n if (!isNaN(value) || value == '-') {\r\n this.currentInput.value = value;\r\n }\r\n } else if (this.currentInput) {\r\n if (!isNaN(value) || value == '-') {\r\n this.currentInput.value = value;\r\n this.store.changeValue(this.state.currentIndex, value, false);\r\n }\r\n let { paymode} = this.store;\r\n if (this.store.dto.Idmember) {\r\n let resp = await this.getChangeToStorage(getFixedNumber(Math.abs(paymode.receivable)));\r\n //获取是否有权限找零转储值\r\n this.setState({\r\n changeToStorageData: resp\r\n })\r\n if (resp.IsCanToStorage) {\r\n // 零转储值不能编辑\r\n if (resp.Storage < 0 || resp.Storage ===0) {\r\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\r\n this.inputChangeStorage && (this.inputChangeStorage.value = getFixedNumber(0));\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage && this.inputChangeStorage.value);\r\n } else {\r\n this.inputChangeStorage.value = getFixedNumber(resp.Storage);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(0);\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\r\n inputChangeStorage: this.inputChangeStorage && this.inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n renderToolbtn(mode, index) {\r\n \r\n let { isReturn } = this.props;\r\n let { paymode, brefund, boriginReturn } = this.store;\r\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf });\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n let hotkeyIndex = index;\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const paymodeDisabled = this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)? 'paymodeDisabled':'';\r\n const paymodeSelected = this.checkThepaymode(mode.paymentType)? 'paymodeSelected':'';\r\n return (\r\n <div key={index + \"\"} className={paymodeDisabled+' '+paymodeSelected + ' paymode hotkey_' + this.compoundHotkeysList[hotkeyIndex]} onClick={() => { this.onTabsClick(mode.paymentType) }}>\r\n <div className=\"logo\"><div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div></div>\r\n <div className=\"text\">{mode.name.length > 8 ? _truncate(mode.name, { length: 7, omission: '' }) + '...' : mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n )\r\n }\r\n\r\n mapFilterHidePayMode = (thePaymodes) => {\r\n if(!thePaymodes && thePaymodes.length == 0) return [];\r\n let newPayModes = thePaymodes.filter((mode)=>{\r\n let { isReturn } = this.props;\r\n let { paymode } = this.store;\r\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf });\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return false;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n }\r\n }\r\n return true\r\n })\r\n return newPayModes;\r\n }\r\n\r\n\r\n xianjinChange = async (paymethodId, val, receivable) => {\r\n const inputTarget = this[`inputS${paymethodId}`].input.input;\r\n const inputTarget2 = this[`inputS${paymethodId}2`];\r\n let value = val;\r\n if (isNaN(value) && value !== '-') {\r\n value = parseFloat(receivable) + parseFloat(inputTarget2.innerHTML);\r\n }\r\n inputTarget.value = value;\r\n let newValue = getFixedNumber(parseFloat(value || 0) - parseFloat(receivable));\r\n // inputTarget2.innerHTML = newValue;\r\n // 仅开单的时候才涉及到转储值\r\n const { isShowChangeTurn } = this.props;\r\n if (this.store.dto.Idmember && isShowChangeTurn) {\r\n let resp = await this.getChangeToStorage(newValue);\r\n //获取是否有权限找零转储值\r\n this.setState({\r\n changeToStorageData: resp\r\n })\r\n if (resp.IsCanToStorage) {\r\n let inputChangeStorage = this[`inputChangeStorage1`].input.input;\r\n // 零转储值不能编辑\r\n if (resp.Storage < 0 || resp.Storage ===0) {\r\n inputChangeStorage.disabled = true;\r\n inputTarget2.innerHTML = newValue;\r\n inputChangeStorage.value = null;\r\n this[`inputChangeStorage1`].changeShowPopover(true, 0)\r\n this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\r\n } else {\r\n inputChangeStorage.disabled = false;\r\n inputChangeStorage.value = getFixedNumber(resp.Storage);\r\n inputTarget2.innerHTML = getFixedNumber(0);\r\n this[`inputChangeStorage1`].changeShowPopover(false, getFixedNumber(resp.Storage))\r\n this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: inputTarget2.innerHTML,\r\n inputChangeStorage: inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n } else {\r\n inputTarget2.innerHTML = newValue;\r\n }\r\n } else {\r\n inputTarget2.innerHTML = newValue;\r\n }\r\n }\r\n\r\n //移动端:扫描商品\r\n changeScanProduct = () => {\r\n if (this.scanObj) this.scanObj.startScan()\r\n }\r\n onScanResult = (val, modal, el) => {\r\n let _this = this[`${el}`];\r\n if (_this) _this.setStateValue(val, () => {\r\n if (modal) modal.submitHandler()\r\n })\r\n }\r\n onScanCzkResult = (val) => {\r\n let _this = this;\r\n this.onCzkChange(val);\r\n setTimeout(() => { _this.loadCzk(val) }, 0)\r\n }\r\n\r\n //代金券\r\n onScanDjqResult = (val) => {\r\n let el = this.inputdjq;\r\n if (el && el.input) el.input.value = val;\r\n this.addDjq(val);\r\n }\r\n\r\n //现金支付-存在权限控制\r\n getXianjinPayment = (paymode) => {\r\n const { value } = paymode\r\n const { isManualIntoAmount } = this.state\r\n return this.calculationIsXianJin(paymode) && isManualIntoAmount === \"1\" && value > 0 ? \"\" : value\r\n }\r\n\r\n //找零金额-存在权限控制\r\n getXianjinBalance = (paymode) => {\r\n const { value } = paymode\r\n const { isManualIntoAmount } = this.state\r\n return this.calculationIsXianJin(paymode) && isManualIntoAmount === \"1\" && value > 0 ? getFixedNumber(0 - value) : '0.00'\r\n }\r\n\r\n getTurnPayment = (that, paymode) => {\r\n const { changeToStorgeValue } = this.state;\r\n return 1.00;\r\n }\r\n\r\n getChangeTurn = (paymode) => {\r\n const inputTarget = this[`inputS${paymode.paymethodId}`].input.input;\r\n const inputTarget2 = this[`inputS${paymode.paymethodId}2`];\r\n const inputChangeStorage = this[`inputChangeStorage1`].input.input;\r\n const { changeToStorageData } = this.state;\r\n inputTarget.value = getFixedNumber(inputTarget.value);\r\n if (inputChangeStorage.value > changeToStorageData.Storage) {\r\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\r\n this[`inputChangeStorage1`].changeShowPopover(false, 0)\r\n inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\r\n } else {\r\n inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\r\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\r\n if (changeToStorageData.Storage > 0) {\r\n this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\r\n }\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: inputTarget2.innerHTML,\r\n inputChangeStorage: inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }\r\n\r\n onFocusChange = () => {\r\n const { changeToStorageData, changeToStorgeValue } = this.state;\r\n // setTimeout(() => {\r\n // const inputChangeStorage = this[`inputChangeStorage1`].input.input;\r\n // inputChangeStorage.value = changeToStorgeValue.inputChangeStorage;\r\n // }, 100)\r\n }\r\n\r\n getChangeToStorage = (value) => {\r\n return this.store.getChangeToStorage(value);\r\n }\r\n\r\n inputConfirm = async (paymode, isQuickPay) => {\r\n const that = this\r\n const isStoredValueCard = false\r\n let isManualIntoAmount\r\n // 仅开单的时候才涉及到转储值\r\n const { isShowChangeTurn, isReturn } = this.props;\r\n if (paymode.paymentType == PayStyle.xianjin && this.store.dto.Idmember) {\r\n let resp = await this.getChangeToStorage(0);\r\n //获取是否有权限找零转储值\r\n this.setState({\r\n changeToStorageData: resp\r\n })\r\n } else {\r\n let ret = {\r\n IsCanToStorage: false,\r\n Storage: 0,\r\n WipeChange: 0\r\n }\r\n this.setState({\r\n changeToStorageData: ret\r\n })\r\n }\r\n let { changeToStorageData } = this.state;\r\n // 付款弹窗\r\n return new Promise(function (resolve, reject) {\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n if (that.calculationIsXianJin(paymode)) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n Message.error('支付金额不能小于应收金额');\r\n throw \"error\";\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n throw \"error\";\r\n }\r\n let { changeToStorgeValue } = that.state;\r\n if (changeToStorageData.IsCanToStorage && changeToStorgeValue.inputChangeStorage > 0 && that.inputChangeStorage1 && that[`inputS${paymode.paymethodId}`].input.input === document.activeElement) {\r\n if (!that.inputChangeStorage1.input.input.disabled) {\r\n that.inputChangeStorage1.input.input.select();\r\n throw \"error\";\r\n }\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (that.calculationIsXianJin(paymode)) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (that.calculationIsXianJin(paymode)) {\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n throw \"error\";\r\n }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n reject(`支付方式: ${paymode.name}失败`)\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: false,\r\n width: 440,\r\n content: (\r\n <div className=\"scanInput\">\r\n <div className={classnames({ \"icon\": true, [\"color\" + paymode.paymentType]: true })}><Ticon type={PayIcon2[paymode.paymentType]} /></div>\r\n <div className=\"title\">{paymode.name}</div>\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{paymode.value}</span>\r\n </div>\r\n {\r\n (that.calculationIsXianJin(paymode)) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboard\r\n className=\"content\"\r\n type='text'\r\n placeholder='请输入付款金额'\r\n disabled={paymode.value < 0}\r\n defaultValue={that.getXianjinPayment(paymode)}\r\n onChange={(value) => { that.xianjinChange(paymode.paymethodId, value, paymode.value); }}\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\r\n onBlur={(e) => {\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input.input;\r\n if (that.state.isManualIntoAmount === \"1\" && that.calculationIsXianJin(paymode) && inputTarget.value === \"\") {\r\n return;\r\n }\r\n inputTarget.value = getFixedNumber(inputTarget.value)\r\n }}\r\n />\r\n </span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage) && !isReturn &&\r\n <div className='contentzf contentzfChange'>\r\n <span className=\"contentlabel\">找零转储值:</span>\r\n <span>\r\n <NumKeyboardDigit\r\n className=\"content\"\r\n type='text'\r\n placeholder='请输入转储值金额'\r\n onFocus={(e) => that.onFocusChange(paymode)}\r\n disabled={changeToStorageData.Storage < 0 || changeToStorageData.Storage === 0}\r\n ref={input => that[`inputChangeStorage1`] = input}\r\n // defaultValue={that.getTurnPayment(paymode.paymentType, paymode.value)}\r\n onChange={(value) => that.getChangeTurn(paymode)}\r\n onBlur={(e) => that.getChangeTurn(paymode)}\r\n />\r\n </span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.xianjin) &&\r\n <div className=\"zlje\">\r\n <span className=\"label\">找零金额:</span>\r\n <span className=\"yfje\" ref={input => that[`inputS${paymode.paymethodId}2`] = input}>{that.getXianjinBalance(paymode)}</span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.wx || paymode.paymentType == PayStyle.zfb || paymode.paymentType == PayStyle.smzf) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboardScan\r\n className=\"content \"\r\n type='text'\r\n placeholder=\"扫描或输入付款码\"\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input} />\r\n </span>\r\n {\r\n that.isHorizontalPad &&\r\n <span className='contentscan'>\r\n <Ticon type='saomiao1' className='icon' onClick={that.changeScanProduct} />\r\n <Scan ref={scan => that.scanObj = scan} onChange={value => that.onScanResult(value, modal, `inputS${paymode.paymethodId}`)} />\r\n </span>\r\n }\r\n </div>\r\n }\r\n <div className={classnames({ \"buttonRegion\": true, \"buttonRegion2\": that.calculationIsXianJin(paymode) })}>\r\n <div className=\"fr\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n that.store.clearInputStorageData();\r\n modal.destroy()\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n reject(`支付方式: ${paymode.name}失败`)\r\n }}>取消</button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n if (that.calculationIsXianJin(paymode)) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n if (that[`inputS${paymode.paymethodId}`].input.input.value === '') {\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('支付金额不能小于应收金额');\r\n }\r\n return;\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n return;\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n const { changeToStorageData } = that.state;\r\n if (changeToStorageData.IsCanToStorage && isShowChangeTurn) {\r\n const inputTarget2 = that[`inputS${paymode.paymethodId}2`];\r\n const inputChangeStorage = that[`inputChangeStorage1`].input.input;\r\n let changeToStorgeValue = {\r\n inputTarget2: inputTarget2.innerHTML,\r\n inputChangeStorage: inputChangeStorage.value\r\n }\r\n that.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (that.calculationIsXianJin(paymode)) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (that.calculationIsXianJin(paymode)) {\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n }\r\n }}>确定</button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n that[`inputS${paymode.paymethodId}`].input.input.focus()\r\n }, 360)\r\n })\r\n }\r\n\r\n checkModeDisabled = (type, brefund, boriginReturn) => {\r\n return ((brefund && (type == PayStyle.wx || type == PayStyle.zfb || type == PayStyle.smzf || type == PayStyle.jfdx || type == PayStyle.djq))\r\n || (boriginReturn && type == PayStyle.hyczk))\r\n && !(boriginReturn && (type == PayStyle.wx || type == PayStyle.zfb));\r\n }\r\n\r\n checkSettleDisabled = (paymode, thePaymodes) => {\r\n console.log(\"settlement.checkSettleDisabled开始执行,参数:\", { paymode, thePaymodes })\r\n if (paymode.amount == 0 && paymode.received == 0) {\r\n console.log(\"settlement.checkSettleDisabled返回结果:\", false)\r\n return false;\r\n }\r\n if (this.store.brefund) {\r\n let result = !(paymode.receivable == 0 && thePaymodes.length > 0);\r\n console.log(\"settlement.checkSettleDisabled返回结果:\", result)\r\n return result;\r\n }\r\n let xj = _find(thePaymodes, (mode) => { return this.calculationIsXianJin(mode) });\r\n let enabled = paymode.receivable == 0 && thePaymodes.length > 0;\r\n if (xj && xj.value != 0) {\r\n enabled = paymode.receivable <= 0 && thePaymodes.length > 0 && (Math.abs(paymode.receivable) < xj.value);\r\n }\r\n console.log(\"settlement.checkSettleDisabled返回结果:\", !enabled)\r\n return !enabled;\r\n }\r\n\r\n changeDecimalBuZero = (number, bitNum) => {\r\n if (bitNum == 0) return number;\r\n var f_x = parseFloat(number);\r\n if (isNaN(f_x)) {\r\n return '';\r\n }\r\n let newBitNum = Math.pow(10, bitNum)\r\n f_x = Math.round(number * newBitNum) / newBitNum;\r\n let s_x = f_x.toString();\r\n let pos_decimal = s_x.indexOf('.');\r\n if (pos_decimal < 0) {\r\n pos_decimal = s_x.length;\r\n s_x += '.';\r\n }\r\n while (s_x.length <= pos_decimal + bitNum) {\r\n s_x += '0';\r\n }\r\n return s_x;\r\n }\r\n\r\n paymodesCarouselList = (params,paymodes,carouselStart,CarouseOut) => {\r\n const CarouselTp = CarouseOut || Carousel\r\n const newParams = CarouseOut?{}:params\r\n const mapList = [];\r\n paymodes.forEach((item,index)=>{\r\n // 整除则新增轮播页面\r\n if(index % carouselStart === 0){\r\n mapList[Math.floor(index/carouselStart)] = [];\r\n }\r\n mapList[Math.floor(index/carouselStart)].push(item);\r\n })\r\n return <CarouselTp {...newParams}>\r\n {_map(mapList, (modeList, index) => {\r\n return <div className={\"carousel-demo-\"+index}>\r\n {\r\n _map(modeList, (mode, modeIndex) => {\r\n return this.renderToolbtn(mode, index*carouselStart+modeIndex)\r\n })\r\n }\r\n </div>\r\n })}\r\n </CarouselTp>\r\n }\r\n\r\n render() {\r\n let { paymode, brefund, newStyle } = this.store;\r\n let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail, memberDisabled, isProject, isNullDate, isMinusAmount, isShowChangeTurn } = this.props\r\n // 原单退货\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let totalTaxAmount = this.context && this.context.viewModel && this.context.viewModel.data && this.context.viewModel.data.TotalTaxAmount;\r\n // 单据模式\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n let { paymodes, settle, currentMode } = paymode;\r\n\r\n let _hasSMZF = _find(paymodes, (item) => { return item.paymentType === PayStyle.smzf });\r\n \r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && _hasSMZF) {\r\n paymodes = paymodes.filter((mode)=>{\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) return null;\r\n return true;\r\n })\r\n }\r\n\r\n const quickPay = boriginReturn ? [] : _filter(paymodes, paymode => paymode.isQuick);\r\n console.log('settlement props type', this.props.type)\r\n // const quickPayLength = quickPay && quickPay.length || 0;\r\n \r\n let productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || (type == 1 && parseFloat(amount || 0) <= 0) || memberDisabled;\r\n if (isProject) {\r\n productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || amount === '-' || isNullDate || (type == 1 && parseFloat(amount || 0) === 0) || memberDisabled;\r\n }\r\n \r\n if (isMinusAmount) {\r\n productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || amount === '-' || (type == 1 && parseFloat(amount || 0) === 0) || memberDisabled;\r\n }\r\n\r\n const moreToolbtns = [];\r\n const params = {\r\n pagination: {\r\n el: '.swiper-pagination',\r\n },\r\n spaceBetween: 30\r\n }\r\n const carouselStart = 12;\r\n const carouselStart2 = 8;\r\n const currentIndex = this.state.currentIndex;\r\n const hasmember = currentMode && currentMode.member && currentMode.member.id;\r\n const { changeToStorageData } = this.state;\r\n let quantity1 = 0, quantity2 = 0, quantity3 = 0, quantity4 = 0;\r\n let sumQuantity = 0;//数量总和的值,包括称重的。\r\n let { buyQuantity = 0, returnQuantity = 0 } = quantityDetail || {};\r\n let quantityPrecision = PosInitData(\"QuantityPrecision\");\r\n quantityPrecision = quantityPrecision ? parseInt(quantityPrecision) : '';\r\n if (this.props.showAmount) {\r\n quantity1 = totalVariety || this.context.viewModel.data.RetailDetails.length;\r\n quantity2 = this.changeDecimalBuZero(totalQuantity, quantityPrecision);\r\n quantity3 = this.changeDecimalBuZero(buyQuantity, quantityPrecision);\r\n quantity4 = this.changeDecimalBuZero(returnQuantity, quantityPrecision);\r\n let sumRetailDetails = this.context && this.context.viewModel && this.context.viewModel.data.RetailDetails;\r\n if (sumRetailDetails && sumRetailDetails.length > 0) {\r\n sumRetailDetails.forEach(v => {\r\n sumQuantity += Math.abs(v.Quantity);\r\n })\r\n }\r\n sumQuantity = this.changeDecimalBuZero(sumQuantity, quantityPrecision);\r\n }\r\n return (\r\n <div className=\"billingSettlement\" ref={r => this.billingSettlementDocumnet = r}>\r\n {\r\n this.props.showAmount && <div className=\"receivable\">\r\n <div className='summary'>\r\n <div className=\"text\">本次应收:</div>\r\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\r\n </div>\r\n {\r\n isReturn === true ?\r\n <div className=\"remark1\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className='span'>销</span><span>{quantity3}</span><span>件</span>\r\n <span className='span'>退</span><span>{quantity4}</span><span>件</span>\r\n <span className='span'>合计</span><span>{sumQuantity}</span>\r\n </div>\r\n :\r\n <div className=\"remark2\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className=\"span\">{quantity2}</span><span>件</span>\r\n <span className=\"span\">合计</span><span>{sumQuantity}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div className=\"btns\">\r\n {\r\n !this.isHorizontalPad &&\r\n _map(quickPay, (p, i) => {\r\n let iconclass = PayIcon2[p.paymentType] ? `color${type!==1 ? 1 : p.paymentType}` : \"colordefault\";\r\n \r\n return (\r\n <button \r\n className={type === 1 ? \"quick2\" : \"quick\"} \r\n key={`paymentType_${p.paymentType}`} \r\n onClick={() => { this.btnDebounced(p.paymentType, true) }}\r\n disabled={productsIsEmpty || (type != 1 && this.checkModeDisabled(p.paymentType, (this.context.viewModel.data.TotalTaxAmount || 0 - this.context.viewModel.data.OnlinePaymentAmount || 0) < 0, boriginReturn))}\r\n >\r\n <div className={classnames({ [iconclass]: true, \"icon\": true })}><Ticon type={PayIcon2[p.paymentType] || PayIcon2['default']} /></div>\r\n <div className=\"text\">{p.name.length > 8 ? _truncate(p.name, { length: 7, omission: '' }) + '...' : p.name}</div>\r\n </button>)\r\n })\r\n }\r\n <button key=\"settle\" className={classnames({ \"settle\": true, \"settle2\": type == 1 })} onClick={() => { this.btnDebounced() }} disabled={productsIsEmpty}>{settle.name}</button>\r\n </div>\r\n { isShowChangeTurn ? type != 1 && !newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n show={this.state.visible}\r\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\r\n >\r\n <div className=\"settlement\">\r\n <div className={classnames({ \"toolbar\": true, \"carousel\": paymodes.length > carouselStart })}>\r\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })}</div>}\r\n {paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)}\r\n </div>\r\n <div className=\"paydetail\" style={{ maxHeight: (document.body.clientHeight - (paymodes.length > 6 ? 275 : 200)) + 'px' }}>\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode) => {\r\n const index = mode.paymethodId\r\n return (<div key={index + ''} className=\"modeItem\">\r\n <div className=\"main\">\r\n <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index, boriginReturn && mode.boriginReturn, mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => mode.paymentType === PayStyle.xianjin ?\r\n this.handleChangeToStorage(index, e)\r\n : this.handleChange(index, e, mode.paymentType, PayStyle)\r\n }\r\n />\r\n }\r\n </div>\r\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn);\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\r\n </div>\r\n {\r\n mode.paymentType == PayStyle.djq ?\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div> :\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n {\r\n \r\n }\r\n <div className=\"right\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span className='receivableRight'>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span className='receivableRight'>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span className='receivableRight'>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span className='receivableRight'>折扣金额</span>\r\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalNonMemberDiscountAmount)}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span className='receivableRight'>会员折扣金额</span>\r\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalMemberDiscountAmount)}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span className='receivableRight'>找零金额</span>\r\n <span ref={input => this[`inputxianjinChangeStorage`] = input} className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n {\r\n _map(thePaymodes, (mode) => {\r\n if (mode.paymentType === PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage && changeToStorageData.Storage > 0 && !isReturn) {\r\n const index = mode.paymethodId;\r\n return (<div key={index + ''} className=\"changeToStorageItem chumoChangeToStorage\">\r\n <div className=\"main\">\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>找零转储值</div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index})}>\r\n {\r\n <input ref={input => this[`inputChangeStorage`] = input}\r\n className={hotKey.hotKeyNotFilter()}\r\n id='changeToStorageId'\r\n onBlur={e => {\r\n this.handleInputChangeToStorage(index, e, mode.paymentType, PayStyle)\r\n const inputChangeStorage = this[`inputChangeStorage`];\r\n const { changeToStorageData } = this.state;\r\n if (inputChangeStorage.value > changeToStorageData.Storage) {\r\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\r\n inputChangeStorage.value = getFixedNumber(0);\r\n this.inputChangeStorage.value = getFixedNumber(0);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n // inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\r\n } else {\r\n // inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\r\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\r\n if (changeToStorageData.Storage > 0) {\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\r\n }\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\r\n inputChangeStorage: this.inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }}\r\n onFocus={e => {\r\n this.onFocusHack(index, mode, paymode, e)\r\n this[`inputChangeStorage`].select()\r\n }}\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n }\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChumoChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\r\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\r\n </div>\r\n </div>\r\n </Drawer> : type != 1 && !newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n show={this.state.visible}\r\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\r\n >\r\n <div className=\"settlement\">\r\n <div className={classnames({ \"toolbar\": true, \"carousel\": paymodes.length > carouselStart })}>\r\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })}</div>}\r\n {paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)}\r\n </div>\r\n <div className=\"paydetail\" style={{ maxHeight: (document.body.clientHeight - (paymodes.length > 6 ? 275 : 200)) + 'px' }}>\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode) => {\r\n const index = mode.paymethodId\r\n return (<div key={index + ''} className=\"modeItem\">\r\n <div className=\"main\">\r\n <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index, boriginReturn && mode.boriginReturn, mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn);\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\r\n </div>\r\n {\r\n mode.paymentType == PayStyle.djq ?\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div> :\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n <div>\r\n </div>\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\r\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {type != 1 && newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n show={this.state.visible}\r\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\r\n >\r\n <div className=\"settlement\">\r\n <div className=\"paydetail newstyle\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>折扣金额</span>\r\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalNonMemberDiscountAmount)}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>会员折扣金额</span>\r\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalMemberDiscountAmount)}</span>\r\n </div>\r\n\r\n {\r\n isShowChangeTurn ? <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span ref={input => this[`inputxianjinChangeStorage`] = input} className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>: \r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n }\r\n <div className=\"receivable\">\r\n {\r\n _map(thePaymodes, (mode) => {\r\n if (mode.paymentType === PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage && changeToStorageData.Storage > 0 && !isReturn) {\r\n const index = mode.paymethodId;\r\n return (<div key={index + ''} className=\"changeToStorageItem modeItem1\">\r\n <div className=\"main\">\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>找零转储值</div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n <input ref={input => this[`inputChangeStorage`] = input}\r\n className={hotKey.hotKeyNotFilter()}\r\n onBlur={e => {\r\n this.handleInputChangeToStorage(index, e, mode.paymentType, PayStyle)\r\n const inputChangeStorage = this[`inputChangeStorage`];\r\n const { changeToStorageData } = this.state;\r\n if (inputChangeStorage.value > changeToStorageData.Storage) {\r\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\r\n inputChangeStorage.value = getFixedNumber(0);\r\n this.inputChangeStorage.value = getFixedNumber(0);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n // inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\r\n } else {\r\n // inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\r\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\r\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\r\n if (changeToStorageData.Storage > 0) {\r\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\r\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\r\n }\r\n }\r\n let changeToStorgeValue = {\r\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\r\n inputChangeStorage: this.inputChangeStorage.value\r\n }\r\n this.setState({\r\n changeToStorgeValue: changeToStorgeValue\r\n })\r\n }}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n }\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode, mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\r\n let hotkeyIndex = mindex;\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index = mode.paymethodId;\r\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\r\n <div key={index + ''} className=\"modeItem\">\r\n <div className=\"main\">\r\n <div className=\"lefticon\"></div>\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\r\n ?\r\n <input id={`inputS${index}`}\r\n\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\r\n onClick={() => {\r\n this.onHotKeyClick1(mode, index, boriginReturn);\r\n }}\r\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\r\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\r\n return Math.Add(sum, m.value);\r\n }, 0)\r\n ) : getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => mode.paymentType === PayStyle.xianjin ?\r\n this.handleChangeToStorage(index, e)\r\n : this.handleChange(index, e, mode.paymentType, PayStyle)\r\n }\r\n />\r\n }\r\n </div>\r\n </div>\r\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\r\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {\r\n type == 1 && !newStyle &&\r\n <Modal\r\n className={`settlement-wraper2 ${hotKey.hotKeyBindClass('5')}`}\r\n width=\"600px\"\r\n show={this.state.visible}\r\n backdropClosable={false}\r\n footer={null}\r\n onHide={this.handleCancel}\r\n >\r\n {/* 会员结算 触屏模式 */}\r\n <Modal.Header closeButton>\r\n <Modal.Title className=\"modalTitle\">{\"复合结算\"}</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n <div className=\"settlement\">\r\n <div className='settlementTop'>\r\n <div className={classnames({ \"toolbar\": true, \"toolbar2\": type == 1, \"carousel\": paymodes.length > carouselStart2 })}>\r\n {\r\n paymodes.length <= carouselStart2 &&\r\n <div>\r\n {\r\n _map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })\r\n }\r\n </div>\r\n }\r\n {paymodes.length > carouselStart2 && this.paymodesCarouselList(params,paymodes,carouselStart2,CarouselFigure)}\r\n </div>\r\n <div className=\"rightheader\">\r\n {\r\n paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>\r\n }\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"paydetail\">\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty2\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode) => {\r\n const index = mode.paymethodId;\r\n return (\r\n <div key={index + ''} className=\"modeItem\">\r\n <div className=\"main\">\r\n <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\r\n ?\r\n <input className={hotKey.hotKeyNotFilter(\"\")} id={`inputS${index}`}\r\n onClick={() => { this.editModal(index, mode.paymentType) }} value={getFixedNumber(mode.value)} />\r\n : <input className={hotKey.hotKeyNotFilter(\"\")} id={`inputS${index}`}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onBlur={e => this.onBlur(index, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n />\r\n }\r\n </div>\r\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\r\n onClick={() => {\r\n this.appendCzkmode();\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\r\n </div>\r\n {\r\n mode.paymentType == PayStyle.djq ?\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>\r\n :\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>\r\n )\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\r\n <span><button className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\r\n </div>\r\n </div>\r\n </Modal.Body>\r\n </Modal>\r\n }\r\n {\r\n type == 1 && newStyle &&\r\n <Modal\r\n className={`settlement-wraper2 ${hotKey.hotKeyBindClass('5')}`}\r\n width=\"600px\"\r\n show={this.state.visible}\r\n backdropClosable={false}\r\n footer={null}\r\n onHide={this.handleCancel}\r\n >\r\n {/* 会员结算单据模式 */}\r\n <Modal.Header closeButton>\r\n <Modal.Title className=\"modalTitle\">{\"复合结算\"}</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n <div className=\"settlement\">\r\n <div className=\"paydetail newstyle newstyle2\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode, mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\r\n let hotkeyIndex = mindex;\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index = mode.paymethodId;\r\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\r\n <div key={index + ''} className=\"modeItem\">\r\n <div className=\"main\">\r\n <div className=\"lefticon\"></div>\r\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || \"\"}</div>\r\n </div>\r\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\r\n ?\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\r\n onClick={() => {\r\n this.onHotKeyClick1(mode, index, boriginReturn);\r\n }}\r\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\r\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\r\n return Math.Add(sum, m.value);\r\n }, 0)\r\n ) : getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n </div>\r\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\r\n <span><button className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\r\n </div>\r\n </div>\r\n </Modal.Body>\r\n </Modal>\r\n }\r\n <Modal\r\n className={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"400px\"\r\n show={this.state.czkVisible}\r\n backdropClosable={false}\r\n footer={null}\r\n onHide={this.handleCzkCancel}\r\n keyboard={false}\r\n centered={!this.isHorizontalPad ? true : false}\r\n onEntered={this.handleCardonEntered}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title className=\"modalTitle\">{\"储值卡结算\"}</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n <div className=\"info\">\r\n {hasmember && <div className={classnames({ \"type\": true, 'colwidth3': hasmember })}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>}\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({ \"balance\": true, 'colwidth2': !hasmember, 'colwidth3': hasmember })}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.balance)}</div>\r\n <div className=\"name\">可用余额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({ \"available\": true, 'colwidth2': !hasmember, 'colwidth3': hasmember })}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0, Math.min(currentMode.maxamount, currentMode.member.balance)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>储值卡号:</span>\r\n <span>\r\n <Input\r\n type='text'\r\n placeholder=\"请扫描或输入储值卡\"\r\n className={`input ${(this.hasElectron === true && this.iCCardServer === 1 || this.isHorizontalPad === true) ? 'temp' : ''}`}\r\n onChange={this.onCzkChange}\r\n value={currentMode && currentMode.member.cardNo}\r\n ref={input => this.czkInput = input}\r\n onKeyDown={\r\n (e) => { if (e.keyCode == 13) { this.loadCzk(e.target.value); } }\r\n }\r\n onFocus={(e) => {\r\n this.inputTarget = this.czkInput.input;\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onCzkChange(value);\r\n }, this.czkKeyboardOnOk, this.czkKeyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e) => {\r\n Keyboard.close();\r\n }}\r\n />\r\n </span>\r\n {\r\n this.hasElectron === true && this.iCCardServer === 1 &&\r\n <Ticon className='icon' onClick={this.handleReadICard} type=\"ICka\" />\r\n }\r\n {\r\n this.isHorizontalPad &&\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n }\r\n {\r\n /* 扫描组件 */\r\n this.isHorizontalPad &&\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanCzkResult} />\r\n }\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n {/* <div className=\"receivable\">\r\n <span>限收金额:</span>\r\n <span>{currentMode && getFixedNumber(currentMode.maxamount)}</span>\r\n </div> */}\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n <Input\r\n type='text'\r\n className={hotKey.hotKeyNotFilter('input')}\r\n onChange={(value) => { this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.balance)) }}\r\n defaultValue={currentMode && getFixedNumber(brefund ? currentMode.value : Math.min(currentMode.value, currentMode.maxamount, currentMode.member.balance))}\r\n ref={ref => this[\"inputCzkAmount\"] = ref}\r\n onFocus={(e) => {\r\n this.inputkey = \"inputCzkAmount\";\r\n this.inputCzkAmount.input.select();\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.balance));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e) => {\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputCzkAmount.input.value), Math.min(currentMode.maxamount, currentMode.member.balance));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n {(!this.store.member || !this.store.member.ID) && <div className=\"tipStype\">在此处录入会员不会享有折扣、会员价等优惠,若需要优惠请返回至开单界面录入会员!</div>}\r\n <div className=\"action\">\r\n <button onClick={this.handleCzkCancel}>取消</button>\r\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleCzkOk}>确定</button>\r\n </div>\r\n </Modal.Body>\r\n </Modal>\r\n <Modal\r\n className={`djq ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"810px\"\r\n show={this.state.djqVisible}\r\n backdropClosable={false}\r\n onOk={this.handleDjqOk}\r\n onCancel={this.handleDjqCancel}\r\n onHide={this.handleDjqCancel}\r\n centered={!this.isHorizontalPad ? true : false}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title className=\"modalTitle\">{\"代金券支付\"}</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq1\">\r\n <div className=\"col1\">代金券号</div>\r\n <div className=\"col2\">\r\n <div>\r\n <Input\r\n type='text'\r\n placeholder=\"扫描/输入代金券号\"\r\n className=\"input\"\r\n ref={input => this.inputdjq = input}\r\n onKeyDown={\r\n (e) => { if (e.keyCode == 13) { this.addDjq(e.target.value) } }\r\n }\r\n onFocus={e => {\r\n this.inputTarget = this.inputdjq.input;\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onDjqChange(value, true);\r\n }, this.djqKeyboardOnOk, this.djqKeyboardOnClose)()\r\n }}\r\n onBlur={(e) => { Keyboard.close() }}\r\n />\r\n </div>\r\n <div className=\"row2\">{currentMode && currentMode.errinfo}</div>\r\n </div>\r\n {\r\n this.isHorizontalPad &&\r\n <div className=\"col3\">\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanDjqResult} />\r\n </div>\r\n }\r\n </div>}\r\n <div className=\"djq2outer\">\r\n <div className=\"djq2\">\r\n {\r\n _map(currentMode && currentMode.djqs || [], (q, index) => {\r\n return (<div key={index + ''} className=\"djqItem\">\r\n <div className=\"djqLeft\">\r\n <div className=\"amount\"><span>{q.amount}</span><span>元</span></div>\r\n <div className=\"lijian\">立减</div>\r\n {/* <div className=\"lingqu\" style={{display:q.checked?'none':'block'}}>立即使用</div> */}\r\n </div>\r\n <div className={classnames('djqRight', { 'djqRightSelected': q.checked })} onClick={(e) => this.djqChecked(q)}>\r\n <div className=\"name\">{q.name}</div>\r\n <div className=\"info\"><span>使用门槛:</span><span>{q.doorsill}</span><span>元</span></div>\r\n {/* <div className=\"info\"><span>到期日:</span><span>{q.expired}</span></div> */}\r\n </div>\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">剩余应收</div>\r\n <div className=\"row2\">{currentMode ? currentMode.receivable : '0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">本单可用</div>\r\n <div className=\"row2\">{currentMode ? currentMode.maxamount : '0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">代金券结算金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value : '0.00'}</div>\r\n </div>\r\n <div className=\"col3\">\r\n <div className=\"row1\">溢收金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.overchargesAmount : '0.00'}</div>\r\n </div>\r\n </div>}\r\n {currentMode && currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">数量</div>\r\n <div className=\"row2\">{currentMode && currentMode.djqs ? currentMode.djqs.length : '0'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">退款金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value : '0.00'}</div>\r\n </div>\r\n </div>}\r\n <div className=\"action\">\r\n <button onClick={this.handleDjqCancel}>取消</button>\r\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleDjqOk}>确定</button>\r\n </div>\r\n </Modal.Body>\r\n\r\n </Modal>\r\n <Modal\r\n className={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"420px\"\r\n show={this.state.jfdxVisible}\r\n backdropClosable={false}\r\n footer={null}\r\n onHide={this.handleJfdxCancel}\r\n centered={!this.isHorizontalPad ? true : false}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title className=\"modalTitle\">{\"积分抵现\"}</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n <div className=\"info\">\r\n <div className={classnames({ \"type\": true, 'colwidth4': hasmember })}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({ \"balance\": true, 'colwidth4': hasmember })}>\r\n <div className=\"value\">{currentMode && currentMode.member.bonusPoints}</div>\r\n <div className=\"name\">积分</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({ \"balance\": true, 'colwidth4': hasmember })}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.exchangable)}</div>\r\n <div className=\"name\">可抵现金额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({ \"available\": true, 'colwidth4': hasmember })}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0, Math.min(currentMode.maxamount, currentMode.member.exchangable)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>会员卡号:</span>\r\n <span className=\"notext\">{currentMode && currentMode.member.cardNo}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n <Input\r\n className={hotKey.hotKeyNotFilter('input')}\r\n type='text'\r\n onChange={(value) => { this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.exchangable)) }}\r\n defaultValue={currentMode && getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.exchangable))}\r\n ref={ref => this[\"inputJfdxAmount\"] = ref}\r\n onFocus={(e) => {\r\n this.inputkey = \"inputJfdxAmount\";\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.exchangable));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e) => {\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputJfdxAmount.input.value), Math.min(currentMode.maxamount, currentMode.member.exchangable));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n <div className=\"action\">\r\n <button onClick={this.handleJfdxCancel}>取消</button>\r\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleJfdxOk}>确定</button>\r\n </div>\r\n </Modal.Body>\r\n\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Settlement"]}
1
+ {"version":3,"sources":["tplus-components-touch/components/settlement/settlement.js"],"names":["TabPane","Settlement","observer","props","state","visible","czkVisible","djqVisible","jfdxVisible","currentIndex","connectCardStatus","connectCardError","amountChanged","type","isManualIntoAmount","isXianjin","changeToStorageData","IsCanToStorage","Storage","WipeChange","changeToStorgeValue","inputTarget2","inputChangeStorage","compoundHotkeysList","window","$","operationControl","control","map","key","toLocaleUpperCase","hotkeydebounced","hotkeydebouncedPayMode","currentInput","store","SettlementStore","resizeSettlementToolBtns","newStyle","isMemberStorePage","b","billingSettlementDocumnet","bWidth","offsetWidth","cWidth","firstChild","lastChild","childNodes","forEach","v","className","handleReadICard","readRfCard","handleCardonEntered","hasElectron","iCCardServer","updateInput","currentMode","paymode","member","exchangable","undefined","inputkey","input","value","Math","min","maxamount","setCurrentModeValue","inputJfdxAmount","balance","inputCzkAmount","bquick","id","parseFloat","amount","Message","error","setTimeout","handleCzkCancel","czkKeyboardOnClose","quickSettle","resolve","onValidate","then","result","init","context","onHandleAmount","dataSource","Code_02","storeInfo","dto","settleZero","PayStyle","hyczk","showCzkModal","handleSettle","handleGuestShow","showModal","setState","brefund","boriginReturn","viewModel","data","JSON","getCellValue","thePaymodes","m","checkModeDisabled","paymentType","setFocusAndSelectionMode","that","ModalWraper","confirm","title","content","onOk","onCancel","handleOk","e","handleCancel","data1","data2","onCancelSettle","cancelState","setInventoryFocus","clearInputStorageData","clean","append","setCurrentMode","_val","czkInput","focus","setSelectionRange","length","connectRfCard","handleCzkOk","loadCzk","mode","paymethodId","closeRfCard","calcMemberBalance","handleCzk","Keyboard","close","isHorizontalPad","doms","document","getElementsByClassName","getElementById","showDjqModal","djq","inputdjq","handleDjqOk","handleDjqCancel","djqs","checked","setCurrentFocusAndAddPay","showJfdxModal","jid","ID","djqmode","themode","IsRepelWithPoints","code","jfdx","handleJfdxOk","handleJfdxCancel","onTabsClick2","memberInfo","hasmember","Code","Name","omc","initData","warn","wx","zfb","smzf","checkScanDisabled","bdisabled","onTabsClick","paymodes","exchangeRate","forign","setCurrentFocusOnly","editModal","changeFocusAndAddPay","setFocusAndSelection","onDelPay","index","xianjin","ret","ret1","info","delPay","handleChange","target","amountMaxLength","parseInt","isNaN","changeValue","handleChangeToStorage","Idmember","getChangeToStorage","abs","receivable","resp","inputxianjinChangeStorage","innerHTML","changeInputStorageValue","handleInputChangeToStorage","val","max","onBlur","changeFocusOnly","onChangeToStorageBlur","onFocus","currentFocus","onFocusHack","appendCzkmode","bappend","djqChecked","q","calcDjqValue","addDjq","checkCoupon","czkdebounced","cancel","onHotKeyClick1","onHotKeyClickModal","onHotKeyClick2","onHotKeyEnter","notsettle","checkSettleDisabled","displayPayModeList","SaoMaPayMode","find","filter","paymodeOb","findHaveNoModlePayType","findModlePayBySplice","currenIndex","symbol","findIndex","endCurrentMode","item","endCurrentModeOb","startCurrentModeOb","settleUnReturn","__queryingModal","querySettleResult","destroy","Flag","setDtoID","settleSuccess","settleCanceled","clearVoucherData","calculationIsXianJin","received","charge","openCashBox","console","log","_this","showTwoScreen","getScreenType","flag","isHorizontalSunMi","localStore","get","shift","Value","params","step","screenType","sunMi_PresentationManager","sendMessageToSecondScreen","nativeMs","setIpcRendererMethod","onSettleSuccess","__loadingModal","onModalClose","isShowChangeTurn","__successModal","dtype","dt","guestshow_enable","guestshow_clear","guestshow_welcome","guestshow_collect","guestshow_refund","guestshow_change","other","replace","price","qty","total","inv","wel","HardwareAPI","sendDataCusDisp","dataType","args","promises","results","p","push","commit","handleUserInputs","isQuickPay","status","checkCharge","zeromode","value2","name","quickmode","inputConfirm","values","bTest","message","indexOf","reject","curmode","needPwd","inputPwd","validePwd","fKeyboardOnOk","paymethodeId","blur","fKeyboardOnClose","keyboardOnOk","keyboardOnClose","modal","onPressEnter","authCode","pwd","onPressEsc","maskClosable","keyboard","closable","width","isMobileEnvironment","inputTarget","open","getNewValue","isbtnDebouncedNext","btndebounced","btnDebounced","isProject","isLimit","totalProjectAmount","stores","memberProjectStore","Details","EffectiveDate","ExpirationDate","StorageAmount","Date","getTime","isCheckDate","CheckExpirationDate","IsSucceed","changeIsCheckDate","ErrorMsg","cancelable","okText","okType","onCzkChange","setCardNo","czkKeyboardOnOk","onDjqChange","isKeyBorad","debounced","djqKeyboardOnOk","djqKeyboardOnClose","onKeyboardChumoChange","mapFilterHidePayMode","newPayModes","isReturn","hasSMZF","theArr","t","xianjinChange","newValue","disabled","changeShowPopover","changeScanProduct","scanObj","startScan","onScanResult","el","setStateValue","submitHandler","onScanCzkResult","onScanDjqResult","getXianjinPayment","getXianjinBalance","getTurnPayment","getChangeTurn","onFocusChange","isStoredValueCard","zl","inputChangeStorage1","activeElement","select","getAttribute","PayIcon2","scan","xj","enabled","changeDecimalBuZero","number","bitNum","f_x","newBitNum","pow","round","s_x","toString","pos_decimal","paymodesCarouselList","carouselStart","CarouseOut","CarouselTp","Carousel","newParams","mapList","floor","modeList","modeIndex","renderToolbtn","loginInfo","ICCardServer","ICCardPassword","iCCardPassword","platform","env","constant","electron","bind","setTimer","initPaymodes","nextProps","cardPsw","cardSec","cardKm","hotkeyIndex","paymodeDisabled","paymodeSelected","checkThepaymode","PayIcon","omission","totalVariety","totalQuantity","quantityDetail","memberDisabled","isNullDate","isMinusAmount","totalTaxAmount","TotalTaxAmount","settle","_hasSMZF","quickPay","isQuick","productsIsEmpty","RetailDetails","moreToolbtns","pagination","spaceBetween","carouselStart2","quantity1","quantity2","quantity3","quantity4","sumQuantity","buyQuantity","returnQuantity","quantityPrecision","showAmount","sumRetailDetails","Quantity","r","i","iconclass","OnlinePaymentAmount","hotKey","hotKeyBindClass","maxHeight","body","clientHeight","hotKeyNotFilter","display","overchargesAmount","cardNo","onlineamount","TotalNonMemberDiscountAmount","TotalMemberDiscountAmount","onKeyboardChange","mindex","tm","sum","Add","CarouselFigure","keyCode","ref","errinfo","doorsill","bonusPoints","React","Component","contextTypes","PropTypes","object"],"mappings":"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","file":"settlement.js","sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport _filter from 'lodash/filter';\nimport _map from 'lodash/map';\nimport _find from 'lodash/find';\nimport _findIndex from 'lodash/findIndex';\nimport _sortBy from 'lodash/sortBy';\nimport _forEach from 'lodash/forEach';\nimport _trim from 'lodash/trim';\nimport _truncate from 'lodash/truncate';\nimport _debounce from 'lodash/debounce';\nimport _reduce from 'lodash/reduce';\nimport classnames from 'classnames'\nimport { FormControl as Input, Modal, Button, Row, Col, Tabs, Icon, Spin, notification, Drawer, Checkbox, Popover } from 'tinper-bee'\nimport Carousel from \"tinper-bee/lib/Carousel\";\nimport CarouselFigure from 'bee-carousel-figure';\nimport 'bee-carousel-figure/build/CarouselFigure.css';\nimport Message from '../message'\nimport asyncModal from './asyncModal'\nimport ModalWraper from '../modalWraper'\nimport { openLoadingModal, openQueryingModal, showSuccessModal, getFixedNumber } from './utils'\nimport SettlementStore, { PayStyle, PayIcon, PayIcon2,BankNoType } from './settlementStore'\nimport Keyboard from '../keyboard'\nimport { NumKeyboardDigit , Input as TplusInput} from 'tplus-components-touch'\nimport NumKeyboard from '../keyboard/numKeyboard';\nimport NumKeyboardScan from '../keyboard/numKeyboardScan';\nimport Ticon from '../ticon'\nimport PropTypes from 'prop-types'\nimport Scan from '../scan'\nimport HardwareAPI from '../hardwareAPI'\nimport { nativeMs, env, localStore } from 'mutants-microfx';\nimport { platform } from 'mutants-util';\nimport { hotKey } from '../../index';\nimport { PosInitData } from 'tplus-poslogin';\n\nconst TabPane = Tabs.TabPane;\n\n\n\n@observer\nclass Settlement extends React.Component {\n state = {\n visible: false,\n czkVisible: false,\n djqVisible: false,\n jfdxVisible: false,\n currentIndex: 0,\n connectCardStatus: false, //连接IC卡状态\n connectCardError: '', //连接IC卡错误后记录错误信息\n amountChanged: false,\n type: 0,\n isManualIntoAmount: PosInitData(\"IsManualIntoAmount\"),\n isXianjin: false,\n changeToStorageData: {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n },\n changeToStorgeValue: {\n inputTarget2: 0,\n inputChangeStorage: 0\n }\n }\n // 复核结算方式快捷键列表\n compoundHotkeysList = (window.$.operationControl[5] ? (window.$.operationControl[5].control || []) : []).map((key) => {\n return key.toLocaleUpperCase();\n })\n\n hotkeydebounced = null;\n hotkeydebouncedPayMode = \"\";\n\n \n static contextTypes = {\n viewModel: PropTypes.object,\n stores: PropTypes.object,\n }\n\n currentInput = null;\n\n store = new SettlementStore()\n\n constructor(props) {\n super(props);\n const { loginInfo: { ICCardServer, ICCardPassword } = {} } = localStore.get('user') || {};\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\n this.iCCardPassword = ICCardPassword; //IC卡密码\n //移动端环境下,没有读取IC卡的方式。\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\n this.isHorizontalPad = !!isHorizontalPad;\n this.isHorizontalSunMi = !!isHorizontalSunMi;\n this.isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\n this.hasElectron = (env.platform === env.constant.platform.electron);\n this.handleReadICard = this.handleReadICard.bind(this);\n this.handleCardonEntered = this.handleCardonEntered.bind(this);\n this.setTimer = null;\n }\n\n componentDidMount() {\n this.store.initPaymodes(this.updateInput,this.props.type, this.props.isProject);\n }\n\n componentDidUpdate() {\n this.resizeSettlementToolBtns()\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.amount != this.props.amount) {\n this.store.amountChanged(nextProps.amount);\n this.setState({ amountChanged: !this.state.amountChanged });\n }\n }\n\n //对结算按钮超出的处理\n resizeSettlementToolBtns = () => {\n const { newStyle } = this.store;\n const { isMemberStorePage } = this.props;\n let b = this.billingSettlementDocumnet;\n if (b && newStyle && !isMemberStorePage) {\n let bWidth = b.offsetWidth;\n let cWidth = 0;\n if (b.firstChild) {\n cWidth += b.firstChild.offsetWidth;\n }\n if (b.lastChild && b.lastChild.childNodes) {\n b.lastChild.childNodes.forEach(v => {\n cWidth += v.offsetWidth;\n })\n }\n if (b.lastChild) {\n if (bWidth < cWidth) {\n b.lastChild.className = 'btns voucherMode';\n } else {\n b.lastChild.className = 'btns';\n }\n }\n }\n }\n\n //IC卡连接\n connectRfCard() {\n //客户端环境下,并开启了启用IC卡。\n if (this.hasElectron === true && this.iCCardServer === 1) {\n nativeMs.setIpcRendererMethod('ConnectRfCard', null, ret => {\n let result = {}\n if (ret.status === 0) {\n result = { connectCardStatus: false, connectCardError: ret.value }\n } else {\n result = { connectCardStatus: true, connectCardError: '' };\n }\n this.setState(result)\n })\n }\n }\n //IC卡读取\n readRfCard() {\n //客户端环境下,并开启了启用IC卡。\n if (this.hasElectron === true && this.iCCardServer === 1) {\n const { connectCardStatus, connectCardError } = this.state;\n if (connectCardStatus === false) {\n Message.error(connectCardError ? connectCardError : '读取IC卡失败');\n this.connectRfCard(); //读取失败后,重新连接一下。\n return;\n }\n let params = { cardPsw: this.iCCardPassword, cardSec: 13, cardKm: 0 }\n nativeMs.setIpcRendererMethod('ReadRfCard', { ...params }, ret => {\n if (ret.status === 0) {\n Message.error(ret.value);\n this.connectRfCard(); //读取失败后,重新连接一下。\n return;\n } else if (ret.status === 1) {\n //this.searchMember(ret.value);\n this.czkInput.input[\"value\"] = ret.value;\n this.loadCzk(ret.value);\n }\n })\n }\n }\n\n //IC卡关闭\n closeRfCard() {\n if (this.hasElectron === true && this.iCCardServer === 1) {\n nativeMs.setIpcRendererMethod('CloseRfCard')\n }\n }\n handleReadICard = () => {\n this.readRfCard();\n }\n\n handleCardonEntered = () => {\n this.hasElectron === true && this.iCCardServer === 1 && this.readRfCard();\n }\n\n updateInput = () => {\n let { currentMode } = this.store.paymode;\n if (this.state.jfdxVisible && currentMode && currentMode.member.exchangable !== undefined) {\n this.inputkey = \"inputJfdxAmount\";\n this[\"inputJfdxAmount\"].input.value = currentMode && getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.exchangable))\n this.setCurrentModeValue(this.inputJfdxAmount.input.value, Math.min(currentMode.maxamount, currentMode.member.exchangable));\n } else if (this.state.czkVisible && currentMode && currentMode.value >= 0 && currentMode.member.balance !== undefined) {\n this.inputkey = \"inputCzkAmount\";\n this[\"inputCzkAmount\"].input.value = getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.balance));\n const maxamount = Math.min(currentMode.maxamount, currentMode.member.balance);\n this.setCurrentModeValue(this.inputCzkAmount.input.value, maxamount);\n if (this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount) > parseFloat(maxamount)) {\n Message.error(\"本单最大可用储值卡结算金额为:\" + getFixedNumber(maxamount) + \",请使用复合结算!\");\n setTimeout(() => {\n this.handleCzkCancel();\n setTimeout(() => { this.czkKeyboardOnClose() }, 150)\n }, 50);\n }\n }\n }\n\n quickSettle = (key) => {\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result => {\n if (result) {\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, true, this.props.amount, this.props.type, this.props.dto);\n let amount = this.store.paymode.amount;\n if (amount == 0) {\n this.settleZero();\n return;\n }\n if (key == PayStyle.hyczk) {\n this.showCzkModal();\n } else {\n this.store.quickSettle(key);\n this.handleSettle(\"quickPay\");\n }\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\n }\n })\n }\n\n showModal = () => {\n // 支持异步验证过程\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result => {\n if (result) {\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, false, this.props.amount, this.props.type, this.props.dto);\n let amount = this.store.paymode.amount;\n if (amount == 0) {\n this.settleZero();\n return;\n }\n this.setState({ visible: true });\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\n setTimeout(() => { \n let { paymode, brefund, newStyle } = this.store;\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\n this.setFocusAndSelectionMode(thePaymodes,-1);\n }, 100)\n }\n })\n }\n\n settleZero = () => {\n const that = this;\n ModalWraper.confirm({\n className: 'tplus-confirm-modal',\n title: '结算',\n content: '当前收款金额为0,确认结算?',\n onOk() {\n that.handleSettle(\"zero\");\n },\n onCancel() {\n\n },\n });\n }\n\n handleOk = (e) => {\n this.setState({\n visible: false,\n });\n }\n\n handleCancel = (e) => {\n let data1 = {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n }\n let data2 = {\n inputTarget2: 0,\n inputChangeStorage: 0\n }\n\n this.setState({\n changeToStorageData: data1,\n changeToStorgeValue: data2\n })\n this.props.onCancelSettle && this.props.onCancelSettle();\n this.cancelState();\n this.setInventoryFocus();\n }\n cancelState = () => {\n this.store.clearInputStorageData()\n this.store.clean();\n this.setState({\n visible: false,\n });\n }\n\n //czk\n showCzkModal = (id, append) => {\n this.store.setCurrentMode(id, PayStyle.hyczk, append);\n this._val = this.store.paymode.currentMode.value;\n let { currentMode } = this.store.paymode;\n const maxamount = Math.min(currentMode.maxamount, currentMode.member.balance);\n if (this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount) > parseFloat(maxamount)) {\n Message.error(\"本单最大可用储值卡结算金额为:\" + getFixedNumber(maxamount) + \",请使用复合结算!\");\n } else {\n this.setState({\n czkVisible: true,\n });\n }\n setTimeout(() => {\n if (!currentMode.member || !currentMode.member.id) {\n this.czkInput.input.focus()\n } else {\n if (this.inputCzkAmount && this.inputCzkAmount.input) {\n this.inputCzkAmount.input.focus();\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\n }\n }\n }, 350)\n this.connectRfCard();\n }\n\n handleCzkOk = async (e) => {\n // const maxamount=Math.min(this.store.paymode.currentMode.maxamount,this.store.paymode.currentMode.member.balance);\n // if(this.store.bquick && this.store.paymode.amount>maxamount){\n // Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\");\n // this.setState({\n // czkVisible: false,\n // });\n // return;\n // }\n\n if (!this.store.paymode.currentMode.member.id) {\n await this.store.loadCzk(this.czkInput.input.value);\n }\n\n if (!this.store.paymode.currentMode.member.id) {\n Message.error(\"请录入储值卡!\");\n return;\n }\n // if(this.store.paymode.currentMode.value > 0 && this.store.paymode.currentMode.member.NeedModifyPassword){\n // Message.error(\"U会员中密码为空,请设置密码后使用!\");\n // this.setState({\n // czkVisible: false,\n // });\n // return;\n // }\n if (_find(this.store.paymode.thePaymodes, (mode) => {\n return mode.paymethodId != this.store.paymode.currentMode.paymethodId &&\n mode.paymentType == PayStyle.hyczk &&\n mode.member.id == this.store.paymode.currentMode.member.id\n })) {\n Message.error(\"该储值卡已使用。\");\n return;\n }\n if (this.store.bquick && this.store.paymode.amount != this.store.paymode.currentMode.value) {\n Message.error(\"实收金额应等于应收金额。\");\n return;\n }\n\n this.setState({\n czkVisible: false,\n });\n this.closeRfCard();\n this.store.paymode.calcMemberBalance();\n this.handleCzk();\n }\n\n handleCzkCancel = (e) => {\n if (this.store.bquick) {\n this.props.onCancelSettle && this.props.onCancelSettle();\n this.store.clean();\n }\n this.setState({\n czkVisible: false,\n });\n this.closeRfCard();\n Keyboard.close();\n this.setInventoryFocus();\n }\n\n //关闭弹框时,执行此方法,把焦点设定到商品录入框\n setInventoryFocus = () => {\n if (!!this.isHorizontalPad) return;\n let doms = document.getElementsByClassName('app hot-key-focus-container');\n let input = document.getElementById('productPoint');\n if (input) setTimeout(() => { if (doms && doms.length > 0) { input.focus() } }, 300);\n }\n\n //djq\n showDjqModal = (id) => {\n // if(!this.store.member || !this.store.member.Uid){\n // Message.error('请先输入会员再使用代金券结算!');\n // return ;\n // }\n this.store.setCurrentMode(id, PayStyle.djq);\n this.setState({\n djqVisible: true,\n });\n setTimeout(() => {\n this.inputdjq.input.focus()\n }, 200)\n }\n\n handleDjqOk = (e) => {\n if (this.store.paymode.currentMode.boriginReturn) {\n this.handleDjqCancel(e);\n return;\n }\n if (_filter(this.store.paymode.currentMode.djqs, (djq) => { return djq.checked }).length == 0) {\n Message.error(\"请录入并使用代金券。\");\n return;\n }\n if (parseFloat(this.store.paymode.currentMode.value) > parseFloat(this.store.paymode.currentMode.maxamount)) {\n Message.error(\"超过了代金券可支付的最大金额。\");\n return;\n }\n this.setState({\n djqVisible: false,\n });\n this.setCurrentFocusAndAddPay(PayStyle.djq);\n }\n\n handleDjqCancel = (e) => {\n this.setState({\n djqVisible: false,\n });\n }\n\n //jfdx\n showJfdxModal = (jid) => {\n let id = this.store.newStyle ? -1 : jid;\n if (!this.store.member || !this.store.member.ID) {\n Message.error('请先输入会员再使用会员积分抵现结算!');\n return;\n }\n let djqmode = _find(this.store.paymode.thePaymodes, (themode) => { return themode.paymentType == PayStyle.djq; });\n let djq = djqmode && _find(djqmode.djqs, (djq) => { return !djq.IsRepelWithPoints });\n if (djq) {\n Message.error(`代金券(${djq.code})不可与积分一起使用`);\n return;\n }\n this.store.setCurrentMode(id, PayStyle.jfdx);\n this._val = this.store.paymode.currentMode.value;\n this.setState({\n jfdxVisible: true,\n });\n setTimeout(() => {\n this.inputJfdxAmount.input.focus();\n this.inputJfdxAmount.input.setSelectionRange(0, this.inputJfdxAmount.input.value.length);\n }, 200)\n }\n\n handleJfdxOk = (e) => {\n this.setState({\n jfdxVisible: false,\n });\n this.handleCzk();\n }\n\n handleJfdxCancel = (e) => {\n this.setState({\n jfdxVisible: false,\n });\n }\n\n onTabsClick2 = (paymode, brefund, themode, key) => {\n paymode.currentMode = null;\n switch (key) {\n case PayStyle.hyczk:\n this.showCzkModal(-1);\n break;\n case PayStyle.jfdx:\n this.showJfdxModal(-1);\n break;\n case PayStyle.djq:\n let memberInfo = this.store && this.store.member;\n let hasmember = (memberInfo.ID || memberInfo.Code || memberInfo.Name) ? true : false;\n let omc = this.props.initData(\"OnlyMemberCanUseCoupon\")\n if (omc && !hasmember) {\n Message.warn('仅会员可以使用优惠券,请录入会员!');\n return;\n }\n this.showDjqModal(-1);\n break;\n case PayStyle.wx:\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf })) {\n Message.error('已使用了其他的付款码支付,不可以再使用微信了。');\n } else {\n this.setCurrentFocusAndAddPay(key);\n }\n break;\n case PayStyle.zfb:\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf })) {\n Message.error('已使用了其他的付款码支付,不可以再使用支付宝了。');\n } else {\n this.setCurrentFocusAndAddPay(key);\n }\n break;\n case PayStyle.smzf:\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx })) {\n Message.error('已使用了其他的付款码支付,不可以再使用扫码支付了。');\n } else {\n this.setCurrentFocusAndAddPay(key);\n }\n break;\n default:\n this.setCurrentFocusAndAddPay(key);\n break;\n }\n }\n\n checkScanDisabled = (key) => {\n const { paymode, newStyle } = this.store;\n let bdisabled = false;\n if (!newStyle) {\n return bdisabled;\n }\n switch (key) {\n case PayStyle.wx:\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value) != 0 })) {\n bdisabled = true;\n }\n break;\n case PayStyle.zfb:\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value) != 0 })) {\n bdisabled = true;\n }\n break;\n case PayStyle.smzf:\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx) && parseFloat(mode.value) != 0 })) {\n bdisabled = true;\n }\n break;\n }\n return bdisabled;\n }\n\n onTabsClick = (key) => {\n const { paymode, brefund, boriginReturn } = this.store;\n if (this.checkModeDisabled(key, brefund, boriginReturn)) {\n return;\n }\n let themode = _find(paymode.paymodes, { 'paymentType': key });\n if (themode.exchangeRate != 1) {\n let forign = _find(paymode.thePaymodes, (mode) => { return mode.exchangeRate != 1 && mode.paymentType != key });\n if (forign) {\n Message.error(\"只允许一种外币结算。\");\n return;\n }\n }\n themode = _find(paymode.thePaymodes, (mode) => { return mode.paymentType === key });\n const that = this;\n if (themode) {\n this.setCurrentFocusOnly(key);\n return;\n } else if (paymode.thePaymodes.length >= 1) {\n switch (this.props.initData(\"multiPay\")) {\n case \"1197\":\n Message.error(\"当前设置为不支持多种结算方式。\");\n break;\n case \"1198\":\n ModalWraper.confirm({\n className: 'tplus-confirm-modal',\n title: '复合结算',\n content: '您确定要使用多种结算方式吗?',\n onOk() {\n that.onTabsClick2(paymode, brefund, themode, key);\n },\n onCancel() {\n },\n });\n break;\n default:\n this.onTabsClick2(paymode, brefund, themode, key);\n break;\n }\n } else {\n this.onTabsClick2(paymode, brefund, themode, key);\n }\n }\n\n editModal = (id, type, boriginReturn) => {\n this.setState({ currentIndex: id });\n switch (type) {\n case PayStyle.hyczk:\n !boriginReturn && this.showCzkModal(id);\n break;\n case PayStyle.jfdx:\n !boriginReturn && this.showJfdxModal(id);\n break;\n case PayStyle.djq:\n this.showDjqModal(id);\n break;\n }\n }\n\n setCurrentFocusAndAddPay = (key) => {\n this.store.changeFocusAndAddPay(key);\n if (this.store.bquick) {\n this.handleSettle(\"quickPay\");\n } else {\n this.setFocusAndSelection(key);\n }\n }\n\n onDelPay = (index, boriginReturn, type) => {\n if (type === PayStyle.xianjin) {\n let ret = {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n }\n let ret1 ={\n inputTarget2: 0,\n inputChangeStorage: 0\n }\n this.setState({\n changeToStorageData: ret,\n changeToStorgeValue: ret1\n })\n }\n if (boriginReturn && (type == PayStyle.hyczk || type == PayStyle.djq || type == PayStyle.jfdx)) {\n Message.info('原单退货时,该结算方式不可以删除。');\n } else {\n this.store.delPay(index);\n }\n }\n\n handleChange = (index, e) => {\n let currentInput = e.target;\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\n if (!isNaN(e.target.value) || e.target.value == '-') {\n if (e.target.value.length <= amountMaxLength) {\n this.store.changeValue(index, e.target.value, false);\n }\n }\n }\n\n handleChangeToStorage = async (index, e) => {\n let currentInput = e.target;\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\n if (!isNaN(e.target.value) || e.target.value == '-') {\n if (e.target.value.length <= amountMaxLength) {\n this.store.changeValue(index, e.target.value, false);\n }\n }\n let { paymode} = this.store;\n if (this.store.dto.Idmember) {\n let resp = await this.getChangeToStorage(getFixedNumber(Math.abs(paymode.receivable)));\n //获取是否有权限找零转储值\n this.setState({\n changeToStorageData: resp\n })\n if (resp.IsCanToStorage) {\n // 零转储值不能编辑\n if (resp.Storage < 0 || resp.Storage ===0) {\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\n this.inputChangeStorage && (this.inputChangeStorage.value = getFixedNumber(0));\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage && this.inputChangeStorage.value);\n } else {\n this.inputChangeStorage.value = getFixedNumber(resp.Storage);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(0);\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n }\n let changeToStorgeValue = {\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\n inputChangeStorage: this.inputChangeStorage && this.inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }\n }\n }\n\n handleInputChangeToStorage = () => {\n\n }\n\n setCurrentModeValue = (val, max) => {\n let value = val;\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\n if (isNaN(val) && val !== '-') {\n value = this._val;\n } else if (!this.store.brefund && !isNaN(val) && parseFloat(val) <= 0) {\n value = this._val;\n } else if (value.length > amountMaxLength) {\n value = this._val;\n } else {\n this._val = val;\n }\n this[this.inputkey].input.value = value;\n this.store.paymode.setCurrentModeValue(value, max);\n }\n\n onBlur = (index, e) => {\n this.currentInput = null;\n this.store.changeFocusOnly(-1);\n this.store.changeValue(index, e.target.value == '-' ? 0 : e.target.value, true);\n }\n\n onChangeToStorageBlur = (e) => {\n\n }\n\n onFocus = (index, mode, paymode, e) => {\n this.currentInput = e.target;\n this.setState({ currentIndex: index });\n if (mode.paymentType == paymode.currentFocus) return;\n this.setCurrentFocusOnly(mode.paymentType);\n }\n\n\n onFocusHack = (index, mode, paymode, e) => {\n this.currentInput = e.target;\n this.setState({ currentIndex: index });\n if (mode.paymentType == paymode.currentFocus) return;\n this.store.changeFocusOnly(mode.paymentType);\n }\n\n setCurrentFocusOnly = (key) => {\n this.store.changeFocusOnly(key);\n this.setFocusAndSelection(key);\n }\n\n appendCzkmode = (boriginReturn) => {\n if (boriginReturn) {\n Message.info('原单退货时不可以使用非原单的储值卡结算方式。');\n return;\n }\n let bappend = true;\n const { paymode, newStyle, member } = this.store;\n if (newStyle && member.ID && _findIndex(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.hyczk && mode.member.id == member.ID }) == -1) {\n bappend = false;\n }\n this.showCzkModal(-1, bappend);\n }\n\n djqChecked = (q) => {\n if (this.store.paymode.currentMode.boriginReturn) {\n Message.info('原单退货时代金券不可以取消。');\n return;\n }\n this.store.paymode.calcDjqValue(q);\n }\n\n addDjq = () => {\n // this.store.addDjq('10000','5元代金券',5,'无门槛','2019-12-31',true);\n const v = _trim(this.inputdjq.input.value);\n if (v === '') {\n return;\n }\n this.store.checkCoupon(v).then(() => {\n this.inputdjq.input.value = '';\n this.inputdjq.input.focus();\n })\n\n }\n\n loadCzk = (v) => {\n if (this.czkdebounced) {\n return;\n }\n this.czkdebounced = _debounce(() => {\n this.store.loadCzk(v);\n }, 1000, {\n 'leading': true,\n 'trailing': false\n });\n this.czkdebounced();\n setTimeout(() => {\n this.czkdebounced.cancel();\n this.czkdebounced = null;\n }, 2000)\n }\n\n onHotKeyClick1 = (mode, index, boriginReturn) => {\n if (this.hotkeydebouncedPayMode == mode) {\n return;\n }\n if (this.hotkeydebounced) {\n this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n }\n this.hotkeydebounced = _debounce(() => {\n this.hotkeydebouncedPayMode = mode;\n this.onHotKeyClickModal(mode, index, boriginReturn);\n }, 500, {\n 'leading': true,\n 'trailing': false\n });\n this.hotkeydebounced();\n setTimeout(() => {\n this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n this.hotkeydebouncedPayMode = \"\";\n }, 1000)\n }\n\n onHotKeyClickModal = (mode, index, boriginReturn) => {\n let { brefund } = this.store;\n if (this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)) {\n return;\n }\n if (mode.paymentType == PayStyle.hyczk) {\n this.appendCzkmode(boriginReturn);\n } else {\n this.editModal(index, mode.paymentType, boriginReturn)\n }\n }\n\n onHotKeyClick2 = (index, mode, paymode, e) => {\n if (this.hotkeydebouncedPayMode == mode) {\n return;\n }\n if (this.hotkeydebounced) {\n this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n }\n this.hotkeydebounced = _debounce(() => {\n this.hotkeydebouncedPayMode = mode;\n this.onFocus(index, mode, paymode, e);\n }, 500, {\n 'leading': true,\n 'trailing': false\n });\n this.hotkeydebounced();\n setTimeout(() => {\n this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n this.hotkeydebouncedPayMode = \"\";\n }, 1000)\n }\n\n onHotKeyEnter = (e, notsettle) => {\n let { paymode, brefund, newStyle } = this.store;\n\n if (this.hotkeydebounced) {\n this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n }\n this.hotkeydebounced = _debounce(() => {\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\n // 定义当前检测的paymode\n this.hotkeydebouncedPayMode = paymode;\n if (!notsettle && !this.checkSettleDisabled(paymode, thePaymodes)) {\n this.handleSettle();\n } else if ((thePaymodes || []).length > 0) {\n this.setFocusAndSelectionMode(thePaymodes,this.state.currentIndex);\n }\n }, 500, {\n 'leading': true,\n 'trailing': false\n });\n this.hotkeydebounced();\n setTimeout(() => {\n this.hotkeydebounced && this.hotkeydebounced.cancel();\n this.hotkeydebounced = null;\n this.hotkeydebouncedPayMode = \"\";\n }, 1000)\n }\n\n \n setFocusAndSelectionMode = (thePaymodes,currentIndex) => {\n\n let displayPayModeList = [...thePaymodes];\n // 复制支付方式列表\n const SaoMaPayMode = displayPayModeList.find( mode => mode.paymentType == PayStyle.smzf);\n // 查找扫码支付\n if(SaoMaPayMode){\n // 如果扫码支付存在 则 排除微信支付宝\n displayPayModeList = displayPayModeList.filter( mode => mode.paymentType != PayStyle.zfb && mode.paymentType != PayStyle.wx )\n }\n // 查找到下一次enter键后的支付方式\n let paymodeOb = this.findHaveNoModlePayType(displayPayModeList,currentIndex);\n if(paymodeOb){\n // 获取焦点\n // this.setFocusAndSelection(paymodeOb.mode.paymentType);\n }\n }\n\n\n\n /**\n * \n * @param {*} thePaymodes 支付方式列表\n * @param {*} currenIndex 当前支付方式下标\n * @param {*} symbol 从当前currenIndex开始 还是从当前currenIndex截止\n */\n findModlePayBySplice = (thePaymodes,currenIndex,symbol) =>{\n let findIndex = currenIndex;\n const endCurrentMode = thePaymodes.find((mode, index) => {\n findIndex++;\n return (symbol? index > currenIndex:index < currenIndex) && \n mode.paymentType != PayStyle.hyczk && \n mode.paymentType != PayStyle.djq &&\n mode.paymentType != PayStyle.jfdx\n });\n if(endCurrentMode) return { mode:endCurrentMode,index:findIndex}\n return null;\n }\n\n findHaveNoModlePayType = (thePaymodes,currenIndex) => {\n if(!thePaymodes || thePaymodes.length == 0) return null;\n let findIndex = -1;\n thePaymodes.forEach((item,index)=>{\n if(item.paymethodId == currenIndex) findIndex = index;\n })\n const endCurrentModeOb = this.findModlePayBySplice(thePaymodes,findIndex,true)\n if(endCurrentModeOb) return endCurrentModeOb;\n const startCurrentModeOb = this.findModlePayBySplice(thePaymodes,findIndex,false)\n if(startCurrentModeOb) return startCurrentModeOb;\n return null\n }\n\n\n setFocusAndSelection = (key) => {\n const that = this;\n const { paymode } = this.store;\n const themode = _find(paymode.thePaymodes, (mode) => mode.paymentType === key);\n const index = (themode && themode.paymethodId) || -1;\n if (index !== -1) {\n setTimeout(() => {\n const input = document.getElementById(`inputS${index}`)\n if (!input) return;\n that.setState({ currentIndex: index });\n setTimeout(() => {\n input.focus();\n input.setSelectionRange(0, input.value.length)\n }, 10)\n }, 200)\n }\n }\n\n settleUnReturn = async () => {\n const that = this;\n ModalWraper.confirm({\n className: 'tplus-confirm-modal',\n content: <div className='unReturn'><div className='title'>支付超时,需要重新查询支付结果!</div><div>若不重新查询,会出现顾客支付成功,但零售单收款不成功的情况。</div></div>,\n async onOk() {\n window.__queryingModal = openQueryingModal();\n let result = await that.store.querySettleResult();\n setTimeout(() => {\n if (window.__queryingModal) {\n window.__queryingModal.destroy()\n window.__queryingModal = null\n }\n }, 0)\n switch (result.Flag) {\n case \"0\"://成功\n that.store.setDtoID(result.ID);\n that.settleSuccess();\n break;\n case \"1\"://处理中\n that.settleUnReturn();\n // Message.info(\"结算正在处理中,请稍后再次查询。\");\n break;\n case \"2\"://失败\n Message.info(`结算失败,原因:${result.Message}。`);\n break;\n }\n },\n onCancel() {\n },\n });\n }\n settleCanceled = () => {\n this.props.clearVoucherData && this.props.clearVoucherData();\n this.cancelState();\n }\n\n calculationIsXianJin = (mode) => {\n return this.store.calculationIsXianJin(mode);\n } \n \n settleSuccess = async () => {\n //提示成功\n let { amount, received, thePaymodes } = this.store.paymode;\n let charge = this.store.paymode.charge;\n // 如果不存在bankNoType 则按照原始判断方式 判断支付方式\n let openCashBox = !!_find(thePaymodes, (mode) => {\n if (mode.value != 0 || mode.value !== '0.00') {\n return this.calculationIsXianJin(mode)\n }\n return false;\n });\n console.log('是否允许弹钱箱', openCashBox);\n // 判断双屏显示。\n const _this = this;\n const showTwoScreen = function (amount, received, charge) {\n const getScreenType = function () {\n let flag = false;\n if (_this.hasElectron === true || _this.isHorizontalSunMi) {\n let data = localStore.get('setting_setData') || [];\n data = data.filter(item => item.Name === 'EnableDoubleScreen');\n data = data && data.length > 0 ? data.shift() : null;\n if (data && data.Value === '1') {\n flag = true;\n }\n }\n return flag;\n }\n const params = {\n step: 3,\n data: {\n amount: amount,\n received: received,\n charge: charge\n }\n }\n let screenType = getScreenType();\n if (screenType === true) { //副屏-第二屏幕\n if (_this.isHorizontalSunMi) {\n window.sunMi_PresentationManager.sendMessageToSecondScreen(params);\n setTimeout(()=>{\n window.sunMi_PresentationManager.sendMessageToSecondScreen({ step: 1 });\n },3000)\n } else {\n nativeMs && nativeMs.setIpcRendererMethod('ReplyScreen', params);\n }\n setTimeout(() => { _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox }) }, 1500)\n } else {\n _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox });\n }\n }\n setTimeout(() => {\n if (window.__loadingModal) {\n window.__loadingModal.destroy()\n window.__loadingModal = null\n }\n const { isXianjin, changeToStorageData, changeToStorgeValue } = _this.state;\n const { onModalClose, isShowChangeTurn } = _this.props;\n showTwoScreen(amount, received, charge);\n if (isXianjin) this.handleGuestShow(4, charge);\n window.__successModal = showSuccessModal(amount, received, charge, _this.props.onModalClose, isXianjin, () => {\n _this.handleGuestShow(5)\n }, isShowChangeTurn, changeToStorageData, changeToStorgeValue)\n let data1 = {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n }\n let data2 = {\n inputTarget2: 0,\n inputChangeStorage: 0\n }\n this.setState({ isXianjin: false,\n changeToStorageData: data1,\n changeToStorgeValue: data2\n })\n this.cancelState();\n }, 0)\n }\n // 处理客显显示功能\n handleGuestShow = (dtype, value) => {\n if (this.hasElectron === false) return;\n let dt = localStore.get('portsetting_hardSet') || [];\n const { guestshow_enable, guestshow_clear, guestshow_welcome, guestshow_collect, guestshow_refund, guestshow_change } = dt || {};\n if (guestshow_enable === false) return;\n let other = '';\n switch (dtype) {\n case 0: //欢迎\n other = guestshow_welcome;\n break;\n case 2: //退款\n other = (guestshow_refund + \"\").replace('[含税总金额]', Math.abs(value))\n break;\n case 3: //收款\n other = (guestshow_collect + \"\").replace('[含税总金额]', value)\n break;\n case 4: //找零\n other = (guestshow_change + \"\").replace('[找零金额]', getFixedNumber(value))\n break;\n case 5: //清除\n other = guestshow_clear;\n break;\n }\n let params = JSON.stringify({ price: '', qty: '', total: '', inv: '', wel: '', other: other })\n console.log(`Send客显sendDataCusDisp:状态-${dtype},参数-${params}`)\n HardwareAPI.sendDataCusDisp({ data: params, dataType: dtype }, ret => { console.log(`Return客显sendDataCusDisp:状态-${dtype},返回-${JSON.stringify(ret)}`) })\n }\n\n handleSettle = async (args) => {\n\n console.log(\"settlement.handleSettle开始执行,参数:\", +args);\n const { paymode, brefund, boriginReturn, newStyle } = this.store;\n const isQuickPay = args === 'quickPay'\n const that = this;\n let status = false\n paymode.thePaymodes.forEach((v) => {\n const isXianjin = this.calculationIsXianJin(v)\n if ( isXianjin && v.value !== '0.00') {\n status = true\n }\n })\n this.setState({\n isXianjin: status ? true : false\n })\n if (that.checkCharge() && Math.abs(paymode.receivable) > that.props.initData(\"posChangeUpperAmount\")) {\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\n return;\n }\n if (args !== \"zero\" && !newStyle) {\n let zeromode = _find(paymode.thePaymodes, (mode) => {\n return parseFloat(mode.value) == 0 || (mode.exchangeRate != 1 ? parseFloat(mode.value2) : parseFloat(mode.value)) == 0;\n })\n if (zeromode) {\n Message.error(zeromode.name + ' 的结算金额为零,不可以结算。');\n return;\n }\n }\n\n let promises = []\n const thePaymodes = _sortBy(newStyle ? _filter(paymode.thePaymodes, (mode) => { return parseFloat(mode.value) != 0; }) : paymode.thePaymodes, 'orderBy')\n if (isQuickPay) {\n let quickmode = thePaymodes[0];\n if (this.checkModeDisabled(quickmode.paymentType, brefund, boriginReturn)) {\n Message.error('退款不能使用' + quickmode.name + '结算,请使用其他结算方式!');\n return;\n }\n }\n _forEach(thePaymodes, (mode) => {\n if (!(boriginReturn && brefund) && (mode.paymentType == PayStyle.zfb || mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.smzf\n || (that.calculationIsXianJin(mode) && isQuickPay))) {\n promises.push(that.inputConfirm(mode, isQuickPay))\n }\n });\n\n const commit = async (values) => {\n const result = await this.store.commit(this.props.bTest);\n if (result === true) {//成功\n that.settleSuccess();\n Promise.resolve()\n } else {\n //提示失败\n setTimeout(() => {\n if (window.__loadingModal) {\n window.__loadingModal.destroy()\n window.__loadingModal = null\n }\n //撤销支付\n }, 0)\n if (result && (result.Code || result.code)) {\n switch (result.Code || result.code) {\n case 'RE_Settle_UnReturn':\n this.props.clearVoucherData && this.props.clearVoucherData();\n this.cancelState();\n break;\n case 'ECONNABORTED'://error.code === 'ECONNABORTED' && error.message.indexOf('timeout')\n result.message.indexOf('timeout') > -1 && that.settleUnReturn();\n break;\n }\n }\n if (isQuickPay) {\n that.props.onCancelSettle && that.props.onCancelSettle();\n that.cancelState();\n }\n\n await Promise.reject()\n }\n }\n\n async function handleUserInputs(promises) {\n let results = []\n try {\n for (let p of promises) {\n const result = await p\n results.push(result)\n }\n window.__loadingModal = openLoadingModal()\n await commit(results);\n } catch (err) {\n // notification.open({\n // message: '错误',\n // description: '失败, 请重新结算',\n // });\n }\n }\n\n handleUserInputs(promises)\n }\n\n handleCzk = async () => {\n const that = this;\n const curmode = this.store.paymode.currentMode;\n let promises = [];\n\n if (curmode.member.needPwd && curmode.value > 0) {\n promises.push(that.inputPwd(curmode))\n }\n\n const commit = async (values) => {\n //密码校验\n const result = values.length > 0 ? (await that.store.validePwd(values[0])) : \"\";\n if (result == \"\") {//成功\n //返回\n that.setCurrentFocusAndAddPay(curmode.paymentType);\n Promise.resolve()\n } else {\n //Message.info(\"密码不正确\");\n await Promise.reject(result)\n }\n }\n\n async function handleUserInputs(promises) {\n let results = []\n try {\n for (let p of promises) {\n const result = await p\n results.push(result)\n }\n await commit(results);\n } catch (err) {\n if (err != \"cancelpwd\") {\n Message.error(err);\n setTimeout(() => { that.handleCzk(); }, 500);\n }\n }\n }\n\n handleUserInputs(promises)\n }\n //that[`inputS${paymode.paymethodId}`]\n fKeyboardOnOk = (paymethodeId) => {\n const input = this[`inputS${paymethodeId}`].input;\n return (e) => {\n input && input.blur();\n Keyboard.close();\n }\n }\n fKeyboardOnClose = (paymethodeId) => {\n const input = this[`inputS${paymethodeId}`].input;\n return (e) => {\n input && input.blur();\n Keyboard.close();\n }\n }\n\n keyboardOnOk = (e) => {\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\n Keyboard.close();\n }\n\n keyboardOnClose = (e) => {\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\n Keyboard.close();\n }\n\n inputPwd = async (paymode) => {\n const that = this\n return new Promise(function (resolve, reject) {\n const modal = asyncModal({\n onPressEnter: () => {\n Keyboard.close();\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['value'])\n // if (v !== '') {\n modal.destroy()\n\n setTimeout(() => {\n paymode.authCode = v;\n resolve({\n id: paymode.member.id,\n pwd: v,\n })\n }, 100)\n // } else {\n // Message.info('请输入密码');\n // throw \"error\";\n // }\n },\n onPressEsc: () => {\n Keyboard.close();\n reject('cancelpwd')\n },\n maskClosable: false,\n keyboard: false,\n closable: true,\n title: paymode.name,\n width: 450,\n className: (that.isHorizontalSunMi || !that.isMobileEnvironment) ? 'pwdModal' : 'pwdModal extraHeight',\n // 储值卡结账时显示为密码框\n content: (<div className=\"scanInput\">\n <div>\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{getFixedNumber(paymode.value)}</span>\n </div>\n <div className=\"pwd pwd_chuzhika\">\n <span className=\"label\">储值卡密码:</span>\n <TplusInput\n noAutocomplete\n tplusInput\n className=\"content\"\n isPasswordFixedInput = {true}\n type='native'\n placeholder='输入密码'\n inputRef={input => that[`inputS${paymode.paymethodId}`] = {input:input}}\n htmlType='password'\n onBlur={(e) => { Keyboard.close(); }}\n onFocus={({ target }) => {\n const inputTarget = that[`inputS${paymode.paymethodId}`].input;\n Keyboard.open((v) => {\n const value = Keyboard.getNewValue(inputTarget, inputTarget.value, v);\n inputTarget.value = value;\n }, that.fKeyboardOnOk(paymode.paymethodId), that.fKeyboardOnClose(paymode.paymethodId))()\n }}\n />\n </div>\n <div className=\"buttonRegion\">\n <div className=\"fr\">\n <button\n type=\"button\"\n className=\"ant-btn ant-btn-lg\" onClick={() => {\n modal.destroy()\n reject('cancelpwd')//\n }}>取消\n </button>\n <button\n type=\"button\"\n className=\"ant-btn ant-btn-primary ant-btn-lg\" onClick={() => {\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['value'])\n // if (v !== '') {\n modal.destroy()\n // if (isQuickPay) {\n // window.__loadingModal = openLoadingModal()\n // }\n setTimeout(() => {\n paymode.authCode = v;\n resolve({\n id: paymode.member.id,\n pwd: v,\n })\n }, 100)\n // } else {\n // Message.info('请输入密码');\n // }\n }}>确定\n </button>\n </div>\n </div>\n </div>),\n })\n // 扫码框自动聚焦\n setTimeout(() => {\n that[`inputS${paymode.paymethodId}`].input.focus()\n }, 200)\n })\n }\n\n isbtnDebouncedNext = async (type, bquick) => {\n const { paymode, brefund, boriginReturn, newStyle } = this.store;\n let status = false\n paymode.thePaymodes.forEach((v) => {\n if (this.calculationIsXianJin(v) && v.value !== '0.00') {\n status = true\n }\n })\n this.setState({\n isXianjin: status ? true : false\n })\n if (this.state.status) {\n if (this.store.dto.Idmember) {\n let resp = await this.getChangeToStorage(0);\n //获取是否有权限找零转储值\n this.setState({\n changeToStorageData: resp\n })\n } else {\n let ret = {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n }\n this.setState({\n changeToStorageData: ret\n })\n }\n }\n if (this.btndebounced) {\n return;\n }\n this.btndebounced = _debounce(() => {\n if (bquick) {\n this.quickSettle(type);\n } else {\n this.showModal();\n }\n }, 1000, {\n 'leading': true,\n 'trailing': false\n });\n this.btndebounced();\n setTimeout(() => {\n this.btndebounced.cancel();\n this.btndebounced = null;\n }, 2000)\n }\n\n btnDebounced = async (type, bquick) => {\n if (this.props.isProject) {\n const { isLimit, totalProjectAmount } = this.props;\n const { Details, EffectiveDate, ExpirationDate, StorageAmount } = stores.memberProjectStore.data;\n if(!Details.length) {\n Message.warn('项目不能为空,请选择项目');\n return false;\n }\n if (!(EffectiveDate && ExpirationDate) && !isLimit) {\n Message.warn('不限次卡生效日期、失效日期均不能为空!');\n return false;\n }\n if (new Date(EffectiveDate).getTime() > new Date(ExpirationDate).getTime()) {\n Message.warn('失效日期应大于生效日期!');\n return false;\n }\n if (isLimit && totalProjectAmount * StorageAmount < 0) {\n Message.warn(\"不允许储值金额与项目金额合计一正一负,请修改!\");\n return false;\n }\n if (this.store.isCheckDate) {\n let resp = await this.store.CheckExpirationDate();\n if (resp.IsSucceed) {\n this.isbtnDebouncedNext(type, bquick)\n this.store.changeIsCheckDate(false);\n } else {\n ModalWraper.confirm({\n title: \"温馨提示\",\n content: resp.ErrorMsg,\n cancelable: false,\n okText: '确定',\n okType: 'warning',\n onOk: () => {\n this.isbtnDebouncedNext(type, bquick)\n this.store.changeIsCheckDate(false);\n },\n onCancel: () => { \n this.store.changeIsCheckDate(true);\n return false;\n }\n })\n }\n } else {\n this.isbtnDebouncedNext(type, bquick)\n } \n } else {\n this.isbtnDebouncedNext(type, bquick)\n }\n }\n\n onCzkChange = (v) => {\n this.store.paymode.currentMode.member.setCardNo(v);\n }\n czkKeyboardOnOk = (e) => {\n this.czkInput.input.blur();\n Keyboard.close();\n this.loadCzk(this.czkInput.input[\"value\"]);\n }\n czkKeyboardOnClose = (e) => {\n this.czkInput && this.czkInput.input.blur();\n Keyboard.close();\n }\n\n onDjqChange = (v, isKeyBorad = false) => {\n this.inputdjq.input.value = v;\n if (this.debounced) {\n this.debounced.cancel();\n this.debounced = null;\n }\n if (!isKeyBorad) {\n this.debounced = _debounce(() => { this.addDjq() }, 2000);\n this.debounced();\n }\n }\n djqKeyboardOnOk = (e) => {\n this.inputdjq.input.blur();\n Keyboard.close();\n this.addDjq();\n }\n djqKeyboardOnClose = (e) => {\n this.inputdjq.input.blur();\n Keyboard.close();\n }\n\n checkCharge = () => {\n const { paymode } = this.store;\n const themode = _find(paymode.thePaymodes, mode => this.calculationIsXianJin(mode));\n return (paymode.receivable < 0 && themode && themode.value >= Math.abs(paymode.receivable));\n }\n\n checkThepaymode(key) {\n return _findIndex(this.store.paymode.thePaymodes, { paymentType: key }) > -1;\n }\n\n onKeyboardChange(key) {\n if (this.currentInput) {\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\n if (!isNaN(value) || value == '-') {\n this.currentInput.value = value;\n this.store.changeValue(this.state.currentIndex, value, false);\n }\n }\n }\n\n onKeyboardChumoChange = async (key) => {\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\n //判断是找零转储值\n if (this.currentInput.id === 'changeToStorageId') {\n if (!isNaN(value) || value == '-') {\n this.currentInput.value = value;\n }\n } else if (this.currentInput) {\n if (!isNaN(value) || value == '-') {\n this.currentInput.value = value;\n this.store.changeValue(this.state.currentIndex, value, false);\n }\n let { paymode} = this.store;\n if (this.store.dto.Idmember) {\n let resp = await this.getChangeToStorage(getFixedNumber(Math.abs(paymode.receivable)));\n //获取是否有权限找零转储值\n this.setState({\n changeToStorageData: resp\n })\n if (resp.IsCanToStorage) {\n // 零转储值不能编辑\n if (resp.Storage < 0 || resp.Storage ===0) {\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\n this.inputChangeStorage && (this.inputChangeStorage.value = getFixedNumber(0));\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage && this.inputChangeStorage.value);\n } else {\n this.inputChangeStorage.value = getFixedNumber(resp.Storage);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(0);\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n }\n let changeToStorgeValue = {\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\n inputChangeStorage: this.inputChangeStorage && this.inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }\n }\n }\n }\n\n renderToolbtn(mode, index) {\n \n let { isReturn } = this.props;\n let { paymode, brefund, boriginReturn } = this.store;\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf });\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\n let hotkeyIndex = index;\n if (!isReturn && hasSMZF) {\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\n return null;\n } else {\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\n }\n }\n const paymodeDisabled = this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)? 'paymodeDisabled':'';\n const paymodeSelected = this.checkThepaymode(mode.paymentType)? 'paymodeSelected':'';\n return (\n <div key={index + \"\"} className={paymodeDisabled+' '+paymodeSelected + ' paymode hotkey_' + this.compoundHotkeysList[hotkeyIndex]} onClick={() => { this.onTabsClick(mode.paymentType) }}>\n <div className=\"logo\"><div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div></div>\n <div className=\"text\">{mode.name.length > 8 ? _truncate(mode.name, { length: 7, omission: '' }) + '...' : mode.name}</div>\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\n </div>\n )\n }\n\n mapFilterHidePayMode = (thePaymodes) => {\n if(!thePaymodes && thePaymodes.length == 0) return [];\n let newPayModes = thePaymodes.filter((mode)=>{\n let { isReturn } = this.props;\n let { paymode } = this.store;\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf });\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\n if (!isReturn && hasSMZF) {\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\n return false;\n } else {\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\n }\n }\n return true\n })\n return newPayModes;\n }\n\n\n xianjinChange = async (paymethodId, val, receivable) => {\n const inputTarget = this[`inputS${paymethodId}`].input.input;\n const inputTarget2 = this[`inputS${paymethodId}2`];\n let value = val;\n if (isNaN(value) && value !== '-') {\n value = parseFloat(receivable) + parseFloat(inputTarget2.innerHTML);\n }\n inputTarget.value = value;\n let newValue = getFixedNumber(parseFloat(value || 0) - parseFloat(receivable));\n // inputTarget2.innerHTML = newValue;\n // 仅开单的时候才涉及到转储值\n const { isShowChangeTurn } = this.props;\n if (this.store.dto.Idmember && isShowChangeTurn) {\n let resp = await this.getChangeToStorage(newValue);\n //获取是否有权限找零转储值\n this.setState({\n changeToStorageData: resp\n })\n if (resp.IsCanToStorage) {\n let inputChangeStorage = this[`inputChangeStorage1`].input.input;\n // 零转储值不能编辑\n if (resp.Storage < 0 || resp.Storage ===0) {\n inputChangeStorage.disabled = true;\n inputTarget2.innerHTML = newValue;\n inputChangeStorage.value = null;\n this[`inputChangeStorage1`].changeShowPopover(true, 0)\n this.store.changeInputStorageValue(inputTarget2.innerHTML, null);\n } else {\n inputChangeStorage.disabled = false;\n inputChangeStorage.value = getFixedNumber(resp.Storage);\n inputTarget2.innerHTML = getFixedNumber(0);\n this[`inputChangeStorage1`].changeShowPopover(false, getFixedNumber(resp.Storage))\n this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\n }\n let changeToStorgeValue = {\n inputTarget2: inputTarget2.innerHTML,\n inputChangeStorage: inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n } else {\n inputTarget2.innerHTML = newValue;\n }\n } else {\n inputTarget2.innerHTML = newValue;\n }\n }\n\n //移动端:扫描商品\n changeScanProduct = () => {\n if (this.scanObj) this.scanObj.startScan()\n }\n onScanResult = (val, modal, el) => {\n let _this = this[`${el}`];\n if (_this) _this.setStateValue(val, () => {\n if (modal) modal.submitHandler()\n })\n }\n onScanCzkResult = (val) => {\n let _this = this;\n this.onCzkChange(val);\n setTimeout(() => { _this.loadCzk(val) }, 0)\n }\n\n //代金券\n onScanDjqResult = (val) => {\n let el = this.inputdjq;\n if (el && el.input) el.input.value = val;\n this.addDjq(val);\n }\n\n //现金支付-存在权限控制\n getXianjinPayment = (paymode) => {\n const { value } = paymode\n const { isManualIntoAmount } = this.state\n return this.calculationIsXianJin(paymode) && isManualIntoAmount === \"1\" && value > 0 ? \"\" : value\n }\n\n //找零金额-存在权限控制\n getXianjinBalance = (paymode) => {\n const { value } = paymode\n const { isManualIntoAmount } = this.state\n return this.calculationIsXianJin(paymode) && isManualIntoAmount === \"1\" && value > 0 ? getFixedNumber(0 - value) : '0.00'\n }\n\n getTurnPayment = (that, paymode) => {\n const { changeToStorgeValue } = this.state;\n return 1.00;\n }\n\n getChangeTurn = (paymode) => {\n const inputTarget = this[`inputS${paymode.paymethodId}`].input.input;\n const inputTarget2 = this[`inputS${paymode.paymethodId}2`];\n const inputChangeStorage = this[`inputChangeStorage1`].input.input;\n const { changeToStorageData } = this.state;\n inputTarget.value = getFixedNumber(inputTarget.value);\n if (inputChangeStorage.value > changeToStorageData.Storage) {\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\n this[`inputChangeStorage1`].changeShowPopover(false, 0)\n inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\n } else {\n inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\n if (changeToStorageData.Storage > 0) {\n this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\n }\n }\n let changeToStorgeValue = {\n inputTarget2: inputTarget2.innerHTML,\n inputChangeStorage: inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }\n\n onFocusChange = () => {\n const { changeToStorageData, changeToStorgeValue } = this.state;\n // setTimeout(() => {\n // const inputChangeStorage = this[`inputChangeStorage1`].input.input;\n // inputChangeStorage.value = changeToStorgeValue.inputChangeStorage;\n // }, 100)\n }\n\n getChangeToStorage = (value) => {\n return this.store.getChangeToStorage(value);\n }\n\n inputConfirm = async (paymode, isQuickPay) => {\n const that = this\n const isStoredValueCard = false\n let isManualIntoAmount\n // 仅开单的时候才涉及到转储值\n const { isShowChangeTurn, isReturn } = this.props;\n if (paymode.paymentType == PayStyle.xianjin && this.store.dto.Idmember) {\n let resp = await this.getChangeToStorage(0);\n //获取是否有权限找零转储值\n this.setState({\n changeToStorageData: resp\n })\n } else {\n let ret = {\n IsCanToStorage: false,\n Storage: 0,\n WipeChange: 0\n }\n this.setState({\n changeToStorageData: ret\n })\n }\n let { changeToStorageData } = this.state;\n // 付款弹窗\n return new Promise(function (resolve, reject) {\n const modal = asyncModal({\n onPressEnter: () => {\n if (that.calculationIsXianJin(paymode)) {\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\n if (zl < 0) {\n Message.error('支付金额不能小于应收金额');\n throw \"error\";\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\n throw \"error\";\n }\n let { changeToStorgeValue } = that.state;\n if (changeToStorageData.IsCanToStorage && changeToStorgeValue.inputChangeStorage > 0 && that.inputChangeStorage1 && that[`inputS${paymode.paymethodId}`].input.input === document.activeElement) {\n if (!that.inputChangeStorage1.input.input.disabled) {\n that.inputChangeStorage1.input.input.select();\n throw \"error\";\n }\n }\n }\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\n if (v !== '') {\n modal.destroy()\n setTimeout(() => {\n if (that.calculationIsXianJin(paymode)) {\n that.store.changeValue(paymode.paymethodId, v, false);\n } else {\n paymode.authCode = v;\n }\n resolve();\n }, 100)\n } else {\n if (that.calculationIsXianJin(paymode)) {\n Message.error('请输入付款金额');\n } else {\n Message.error('请录入或扫描付款码');\n }\n throw \"error\";\n }\n },\n onPressEsc: () => {\n Keyboard.close();\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\n reject(`支付方式: ${paymode.name}失败`)\n },\n maskClosable: false,\n keyboard: false,\n closable: false,\n width: 440,\n content: (\n <div className=\"scanInput\">\n <div className={classnames({ \"icon\": true, [\"color\" + paymode.paymentType]: true })}><Ticon type={PayIcon2[paymode.paymentType]} /></div>\n <div className=\"title\">{paymode.name}</div>\n <div>\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{paymode.value}</span>\n </div>\n {\n (that.calculationIsXianJin(paymode)) &&\n <div className='contentzf'>\n <span className=\"contentlabel\">{paymode.name}支付:</span>\n <span>\n <NumKeyboard\n className=\"content\"\n type='text'\n placeholder='请输入付款金额'\n disabled={paymode.value < 0}\n defaultValue={that.getXianjinPayment(paymode)}\n onChange={(value) => { that.xianjinChange(paymode.paymethodId, value, paymode.value); }}\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\n onBlur={(e) => {\n const inputTarget = that[`inputS${paymode.paymethodId}`].input.input;\n if (that.state.isManualIntoAmount === \"1\" && that.calculationIsXianJin(paymode) && inputTarget.value === \"\") {\n return;\n }\n inputTarget.value = getFixedNumber(inputTarget.value)\n }}\n />\n </span>\n </div>\n }\n {\n (paymode.paymentType == PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage) && !isReturn &&\n <div className='contentzf contentzfChange'>\n <span className=\"contentlabel\">找零转储值:</span>\n <span>\n <NumKeyboardDigit\n className=\"content\"\n type='text'\n placeholder='请输入转储值金额'\n onFocus={(e) => that.onFocusChange(paymode)}\n disabled={changeToStorageData.Storage < 0 || changeToStorageData.Storage === 0}\n ref={input => that[`inputChangeStorage1`] = input}\n // defaultValue={that.getTurnPayment(paymode.paymentType, paymode.value)}\n onChange={(value) => that.getChangeTurn(paymode)}\n onBlur={(e) => that.getChangeTurn(paymode)}\n />\n </span>\n </div>\n }\n {\n (paymode.paymentType == PayStyle.xianjin) &&\n <div className=\"zlje\">\n <span className=\"label\">找零金额:</span>\n <span className=\"yfje\" ref={input => that[`inputS${paymode.paymethodId}2`] = input}>{that.getXianjinBalance(paymode)}</span>\n </div>\n }\n {\n (paymode.paymentType == PayStyle.wx || paymode.paymentType == PayStyle.zfb || paymode.paymentType == PayStyle.smzf) &&\n <div className='contentzf'>\n <span className=\"contentlabel\">{paymode.name}支付:</span>\n <span>\n <NumKeyboardScan\n className=\"content \"\n type='text'\n placeholder=\"扫描或输入付款码\"\n ref={input => that[`inputS${paymode.paymethodId}`] = input} />\n </span>\n {\n that.isHorizontalPad &&\n <span className='contentscan'>\n <Ticon type='saomiao1' className='icon' onClick={that.changeScanProduct} />\n <Scan ref={scan => that.scanObj = scan} onChange={value => that.onScanResult(value, modal, `inputS${paymode.paymethodId}`)} />\n </span>\n }\n </div>\n }\n <div className={classnames({ \"buttonRegion\": true, \"buttonRegion2\": that.calculationIsXianJin(paymode) })}>\n <div className=\"fr\">\n <button\n type=\"button\"\n onClick={() => {\n that.store.clearInputStorageData();\n modal.destroy()\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\n reject(`支付方式: ${paymode.name}失败`)\n }}>取消</button>\n <button\n type=\"button\"\n onClick={() => {\n if (that.calculationIsXianJin(paymode)) {\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\n if (zl < 0) {\n if (that[`inputS${paymode.paymethodId}`].input.input.value === '') {\n Message.error('请输入付款金额');\n } else {\n Message.error('支付金额不能小于应收金额');\n }\n return;\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\n return;\n }\n }\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\n const { changeToStorageData } = that.state;\n if (changeToStorageData.IsCanToStorage && isShowChangeTurn) {\n const inputTarget2 = that[`inputS${paymode.paymethodId}2`];\n const inputChangeStorage = that[`inputChangeStorage1`].input.input;\n let changeToStorgeValue = {\n inputTarget2: inputTarget2.innerHTML,\n inputChangeStorage: inputChangeStorage.value\n }\n that.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }\n if (v !== '') {\n modal.destroy()\n setTimeout(() => {\n if (that.calculationIsXianJin(paymode)) {\n that.store.changeValue(paymode.paymethodId, v, false);\n } else {\n paymode.authCode = v;\n }\n resolve();\n }, 100)\n } else {\n if (that.calculationIsXianJin(paymode)) {\n Message.error('请输入付款金额');\n } else {\n Message.error('请录入或扫描付款码');\n }\n }\n }}>确定</button>\n </div>\n </div>\n </div>),\n })\n // 扫码框自动聚焦\n setTimeout(() => {\n that[`inputS${paymode.paymethodId}`].input.input.focus()\n }, 360)\n })\n }\n\n checkModeDisabled = (type, brefund, boriginReturn) => {\n return ((brefund && (type == PayStyle.wx || type == PayStyle.zfb || type == PayStyle.smzf || type == PayStyle.jfdx || type == PayStyle.djq))\n || (boriginReturn && type == PayStyle.hyczk))\n && !(boriginReturn && (type == PayStyle.wx || type == PayStyle.zfb));\n }\n\n checkSettleDisabled = (paymode, thePaymodes) => {\n console.log(\"settlement.checkSettleDisabled开始执行,参数:\", { paymode, thePaymodes })\n if (paymode.amount == 0 && paymode.received == 0) {\n console.log(\"settlement.checkSettleDisabled返回结果:\", false)\n return false;\n }\n if (this.store.brefund) {\n let result = !(paymode.receivable == 0 && thePaymodes.length > 0);\n console.log(\"settlement.checkSettleDisabled返回结果:\", result)\n return result;\n }\n let xj = _find(thePaymodes, (mode) => { return this.calculationIsXianJin(mode) });\n let enabled = paymode.receivable == 0 && thePaymodes.length > 0;\n if (xj && xj.value != 0) {\n enabled = paymode.receivable <= 0 && thePaymodes.length > 0 && (Math.abs(paymode.receivable) < xj.value);\n }\n console.log(\"settlement.checkSettleDisabled返回结果:\", !enabled)\n return !enabled;\n }\n\n changeDecimalBuZero = (number, bitNum) => {\n if (bitNum == 0) return number;\n var f_x = parseFloat(number);\n if (isNaN(f_x)) {\n return '';\n }\n let newBitNum = Math.pow(10, bitNum)\n f_x = Math.round(number * newBitNum) / newBitNum;\n let s_x = f_x.toString();\n let pos_decimal = s_x.indexOf('.');\n if (pos_decimal < 0) {\n pos_decimal = s_x.length;\n s_x += '.';\n }\n while (s_x.length <= pos_decimal + bitNum) {\n s_x += '0';\n }\n return s_x;\n }\n\n paymodesCarouselList = (params,paymodes,carouselStart,CarouseOut) => {\n const CarouselTp = CarouseOut || Carousel\n const newParams = CarouseOut?{}:params\n const mapList = [];\n paymodes.forEach((item,index)=>{\n // 整除则新增轮播页面\n if(index % carouselStart === 0){\n mapList[Math.floor(index/carouselStart)] = [];\n }\n mapList[Math.floor(index/carouselStart)].push(item);\n })\n return <CarouselTp {...newParams}>\n {_map(mapList, (modeList, index) => {\n return <div className={\"carousel-demo-\"+index}>\n {\n _map(modeList, (mode, modeIndex) => {\n return this.renderToolbtn(mode, index*carouselStart+modeIndex)\n })\n }\n </div>\n })}\n </CarouselTp>\n }\n\n render() {\n let { paymode, brefund, newStyle } = this.store;\n let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail, memberDisabled, isProject, isNullDate, isMinusAmount, isShowChangeTurn } = this.props\n // 原单退货\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\n let totalTaxAmount = this.context && this.context.viewModel && this.context.viewModel.data && this.context.viewModel.data.TotalTaxAmount;\n // 单据模式\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\n let { paymodes, settle, currentMode } = paymode;\n\n let _hasSMZF = _find(paymodes, (item) => { return item.paymentType === PayStyle.smzf });\n \n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\n if (!isReturn && _hasSMZF) {\n paymodes = paymodes.filter((mode)=>{\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) return null;\n return true;\n })\n }\n\n const quickPay = boriginReturn ? [] : _filter(paymodes, paymode => paymode.isQuick);\n console.log('settlement props type', this.props.type)\n // const quickPayLength = quickPay && quickPay.length || 0;\n \n let productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || (type == 1 && parseFloat(amount || 0) <= 0) || memberDisabled;\n if (isProject) {\n productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || amount === '-' || isNullDate || (type == 1 && parseFloat(amount || 0) === 0) || memberDisabled;\n }\n \n if (isMinusAmount) {\n productsIsEmpty = (type != 1 && this.context.viewModel.data.RetailDetails.length == 0) || amount === '-' || (type == 1 && parseFloat(amount || 0) === 0) || memberDisabled;\n }\n\n const moreToolbtns = [];\n const params = {\n pagination: {\n el: '.swiper-pagination',\n },\n spaceBetween: 30\n }\n const carouselStart = 12;\n const carouselStart2 = 8;\n const currentIndex = this.state.currentIndex;\n const hasmember = currentMode && currentMode.member && currentMode.member.id;\n const { changeToStorageData } = this.state;\n let quantity1 = 0, quantity2 = 0, quantity3 = 0, quantity4 = 0;\n let sumQuantity = 0;//数量总和的值,包括称重的。\n let { buyQuantity = 0, returnQuantity = 0 } = quantityDetail || {};\n let quantityPrecision = PosInitData(\"QuantityPrecision\");\n quantityPrecision = quantityPrecision ? parseInt(quantityPrecision) : '';\n if (this.props.showAmount) {\n quantity1 = totalVariety || this.context.viewModel.data.RetailDetails.length;\n quantity2 = this.changeDecimalBuZero(totalQuantity, quantityPrecision);\n quantity3 = this.changeDecimalBuZero(buyQuantity, quantityPrecision);\n quantity4 = this.changeDecimalBuZero(returnQuantity, quantityPrecision);\n let sumRetailDetails = this.context && this.context.viewModel && this.context.viewModel.data.RetailDetails;\n if (sumRetailDetails && sumRetailDetails.length > 0) {\n sumRetailDetails.forEach(v => {\n sumQuantity += Math.abs(v.Quantity);\n })\n }\n sumQuantity = this.changeDecimalBuZero(sumQuantity, quantityPrecision);\n }\n return (\n <div className=\"billingSettlement\" ref={r => this.billingSettlementDocumnet = r}>\n {\n this.props.showAmount && <div className=\"receivable\">\n <div className='summary'>\n <div className=\"text\">本次应收:</div>\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\n </div>\n {\n isReturn === true ?\n <div className=\"remark1\">\n <span>{`共${quantity1}种`}</span>\n <span className='span'>销</span><span>{quantity3}</span><span>件</span>\n <span className='span'>退</span><span>{quantity4}</span><span>件</span>\n <span className='span'>合计</span><span>{sumQuantity}</span>\n </div>\n :\n <div className=\"remark2\">\n <span>{`共${quantity1}种`}</span>\n <span className=\"span\">{quantity2}</span><span>件</span>\n <span className=\"span\">合计</span><span>{sumQuantity}</span>\n </div>\n }\n </div>\n }\n <div className=\"btns\">\n {\n !this.isHorizontalPad &&\n _map(quickPay, (p, i) => {\n let iconclass = PayIcon2[p.paymentType] ? `color${type!==1 ? 1 : p.paymentType}` : \"colordefault\";\n \n return (\n <button \n className={type === 1 ? \"quick2\" : \"quick\"} \n key={`paymentType_${p.paymentType}`} \n onClick={() => { this.btnDebounced(p.paymentType, true) }}\n disabled={productsIsEmpty || (type != 1 && this.checkModeDisabled(p.paymentType, (this.context.viewModel.data.TotalTaxAmount || 0 - this.context.viewModel.data.OnlinePaymentAmount || 0) < 0, boriginReturn))}\n >\n <div className={classnames({ [iconclass]: true, \"icon\": true })}><Ticon type={PayIcon2[p.paymentType] || PayIcon2['default']} /></div>\n <div className=\"text\">{p.name.length > 8 ? _truncate(p.name, { length: 7, omission: '' }) + '...' : p.name}</div>\n </button>)\n })\n }\n <button key=\"settle\" className={classnames({ \"settle\": true, \"settle2\": type == 1 })} onClick={() => { this.btnDebounced() }} disabled={productsIsEmpty}>{settle.name}</button>\n </div>\n { isShowChangeTurn ? type != 1 && !newStyle && <Drawer\n title=\"复合结算\"\n width=\"600px\"\n placement=\"right\"\n maskClosable={false}\n closable={false}\n onClose={this.handleCancel}\n show={this.state.visible}\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\n >\n <div className=\"settlement\">\n <div className={classnames({ \"toolbar\": true, \"carousel\": paymodes.length > carouselStart })}>\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\n return this.renderToolbtn(mode, index)\n })}</div>}\n {paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)}\n </div>\n <div className=\"paydetail\" style={{ maxHeight: (document.body.clientHeight - (paymodes.length > 6 ? 275 : 200)) + 'px' }}>\n <div className=\"left\">\n {\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\n }\n {\n _map(thePaymodes, (mode) => {\n const index = mode.paymethodId\n return (<div key={index + ''} className=\"modeItem\">\n <div className=\"main\">\n <div className=\"lefticon\" onClick={() => {\n this.onDelPay(index, boriginReturn && mode.boriginReturn, mode.paymentType);\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter()}\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\n :\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter()}\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\n onBlur={e => this.onBlur(index, e)}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n onChange={e => mode.paymentType === PayStyle.xianjin ?\n this.handleChangeToStorage(index, e)\n : this.handleChange(index, e, mode.paymentType, PayStyle)\n }\n />\n }\n </div>\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\n onClick={() => {\n this.appendCzkmode(boriginReturn);\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\n </div>\n {\n mode.paymentType == PayStyle.djq ?\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"balance\">溢收金额:</span>\n <span>{mode.overchargesAmount}</span>\n </div> :\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"fl\">卡号:</span>\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\n <br />\n <span className=\"balance fl\">余额:</span>\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\n </div>\n }\n </div>)\n })\n }\n </div>\n {\n \n }\n <div className=\"right\">\n <div className=\"righttop\">\n {paymode.onlineamount > 0 && <div className=\"receivable\">\n <span>线上已收</span>\n <span>{paymode.onlineamount}</span>\n </div>}\n <div className=\"receivable\">\n <span className='receivableRight'>应收金额</span>\n <span>{paymode.amount}</span>\n </div>\n <div className=\"receivable\">\n <span className='receivableRight'>剩余应收</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"receivable\">\n <span className='receivableRight'>实收金额</span>\n <span className=\"received\">{paymode.received}</span>\n </div>\n <div className=\"receivable\">\n <span className='receivableRight'>折扣金额</span>\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalNonMemberDiscountAmount)}</span>\n </div>\n <div className=\"receivable\">\n <span className='receivableRight'>会员折扣金额</span>\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalMemberDiscountAmount)}</span>\n </div>\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span className='receivableRight'>找零金额</span>\n <span ref={input => this[`inputxianjinChangeStorage`] = input} className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>\n <div className=\"receivable\">\n {\n _map(thePaymodes, (mode) => {\n if (mode.paymentType === PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage && changeToStorageData.Storage > 0 && !isReturn) {\n const index = mode.paymethodId;\n return (<div key={index + ''} className=\"changeToStorageItem chumoChangeToStorage\">\n <div className=\"main\">\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>找零转储值</div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index})}>\n {\n <input ref={input => this[`inputChangeStorage`] = input}\n className={hotKey.hotKeyNotFilter()}\n id='changeToStorageId'\n onBlur={e => {\n this.handleInputChangeToStorage(index, e, mode.paymentType, PayStyle)\n const inputChangeStorage = this[`inputChangeStorage`];\n const { changeToStorageData } = this.state;\n if (inputChangeStorage.value > changeToStorageData.Storage) {\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\n inputChangeStorage.value = getFixedNumber(0);\n this.inputChangeStorage.value = getFixedNumber(0);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n // inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\n } else {\n // inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\n if (changeToStorageData.Storage > 0) {\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\n }\n }\n let changeToStorgeValue = {\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\n inputChangeStorage: this.inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }}\n onFocus={e => {\n this.onFocusHack(index, mode, paymode, e)\n this[`inputChangeStorage`].select()\n }}\n />\n }\n </div>\n </div>\n </div>)\n }\n })\n }\n </div>\n </div>\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\n {\n !this.isHorizontalPad &&\n <Keyboard type=\"number\" onChange={this.onKeyboardChumoChange.bind(this)}></Keyboard>\n }\n </div>\n </div>\n </div>\n <div className=\"payfooter\">\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\n </div>\n </div>\n </Drawer> : type != 1 && !newStyle && <Drawer\n title=\"复合结算\"\n width=\"600px\"\n placement=\"right\"\n maskClosable={false}\n closable={false}\n onClose={this.handleCancel}\n show={this.state.visible}\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\n >\n <div className=\"settlement\">\n <div className={classnames({ \"toolbar\": true, \"carousel\": paymodes.length > carouselStart })}>\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\n return this.renderToolbtn(mode, index)\n })}</div>}\n {paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)}\n </div>\n <div className=\"paydetail\" style={{ maxHeight: (document.body.clientHeight - (paymodes.length > 6 ? 275 : 200)) + 'px' }}>\n <div className=\"left\">\n {\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\n }\n {\n _map(thePaymodes, (mode) => {\n const index = mode.paymethodId\n return (<div key={index + ''} className=\"modeItem\">\n <div className=\"main\">\n <div className=\"lefticon\" onClick={() => {\n this.onDelPay(index, boriginReturn && mode.boriginReturn, mode.paymentType);\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter()}\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\n :\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter()}\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\n onBlur={e => this.onBlur(index, e)}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n onChange={e => this.handleChange(index, e)}\n />\n }\n </div>\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\n onClick={() => {\n this.appendCzkmode(boriginReturn);\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\n </div>\n {\n mode.paymentType == PayStyle.djq ?\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"balance\">溢收金额:</span>\n <span>{mode.overchargesAmount}</span>\n </div> :\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"fl\">卡号:</span>\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\n <br />\n <span className=\"balance fl\">余额:</span>\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\n </div>\n }\n </div>)\n })\n }\n </div>\n <div className=\"right\">\n <div className=\"righttop\">\n {paymode.onlineamount > 0 && <div className=\"receivable\">\n <span>线上已收</span>\n <span>{paymode.onlineamount}</span>\n </div>}\n <div className=\"receivable\">\n <span>应收金额</span>\n <span>{paymode.amount}</span>\n </div>\n <div className=\"receivable\">\n <span>剩余应收</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"receivable\">\n <span>实收金额</span>\n <span className=\"received\">{paymode.received}</span>\n </div>\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span>找零金额</span>\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>\n </div>\n <div>\n </div>\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\n {\n !this.isHorizontalPad &&\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\n }\n </div>\n </div>\n </div>\n <div className=\"payfooter\">\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\n </div>\n </div>\n </Drawer>}\n {type != 1 && newStyle && <Drawer\n title=\"复合结算\"\n width=\"600px\"\n placement=\"right\"\n maskClosable={false}\n closable={false}\n onClose={this.handleCancel}\n show={this.state.visible}\n className={`settlement-wraper ${hotKey.hotKeyBindClass('5')}`}\n >\n <div className=\"settlement\">\n <div className=\"paydetail newstyle\">\n <div className=\"top\">\n <div className=\"righttop\">\n {paymode.onlineamount > 0 && <div className=\"receivable\">\n <span>线上已收</span>\n <span>{paymode.onlineamount}</span>\n </div>}\n <div className=\"receivable\">\n <span>应收金额</span>\n <span>{paymode.amount}</span>\n </div>\n <div className=\"receivable\">\n <span>剩余应收</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"receivable\">\n <span>实收金额</span>\n <span className=\"received\">{paymode.received}</span>\n </div>\n <div className=\"receivable\">\n <span>折扣金额</span>\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalNonMemberDiscountAmount)}</span>\n </div>\n <div className=\"receivable\">\n <span>会员折扣金额</span>\n <span className=\"received\">{this.store.dto && getFixedNumber(this.store.dto.TotalMemberDiscountAmount)}</span>\n </div>\n\n {\n isShowChangeTurn ? <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span>找零金额</span>\n <span ref={input => this[`inputxianjinChangeStorage`] = input} className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>: \n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span>找零金额</span>\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>\n }\n <div className=\"receivable\">\n {\n _map(thePaymodes, (mode) => {\n if (mode.paymentType === PayStyle.xianjin && isShowChangeTurn && changeToStorageData.IsCanToStorage && changeToStorageData.Storage > 0 && !isReturn) {\n const index = mode.paymethodId;\n return (<div key={index + ''} className=\"changeToStorageItem modeItem1\">\n <div className=\"main\">\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>找零转储值</div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n <input ref={input => this[`inputChangeStorage`] = input}\n className={hotKey.hotKeyNotFilter()}\n onBlur={e => {\n this.handleInputChangeToStorage(index, e, mode.paymentType, PayStyle)\n const inputChangeStorage = this[`inputChangeStorage`];\n const { changeToStorageData } = this.state;\n if (inputChangeStorage.value > changeToStorageData.Storage) {\n Message.warn(`不允许零转储值金额大于最大零转储值金额${changeToStorageData.Storage},请修改`);\n inputChangeStorage.value = getFixedNumber(0);\n this.inputChangeStorage.value = getFixedNumber(0);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(Math.abs(paymode.receivable));\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n // inputTarget2.innerHTML = getFixedNumber(inputTarget.value - paymode.value);\n } else {\n // inputTarget2.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\n inputChangeStorage.value = getFixedNumber(inputChangeStorage.value);\n this.inputxianjinChangeStorage.innerHTML = getFixedNumber(changeToStorageData.Storage - inputChangeStorage.value);\n if (changeToStorageData.Storage > 0) {\n this.store.changeInputStorageValue(this.inputxianjinChangeStorage.innerHTML, this.inputChangeStorage.value);\n // this.store.changeInputStorageValue(inputTarget2.innerHTML, inputChangeStorage.value);\n }\n }\n let changeToStorgeValue = {\n inputTarget2: this.inputxianjinChangeStorage.innerHTML,\n inputChangeStorage: this.inputChangeStorage.value\n }\n this.setState({\n changeToStorgeValue: changeToStorgeValue\n })\n }}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n />\n }\n </div>\n </div>\n </div>)\n }\n })\n }\n </div>\n </div>\n </div>\n <div className=\"bottom\">\n {\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\n }\n {\n _map(thePaymodes, (mode, mindex) => {\n let { isReturn } = this.props;\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\n let hotkeyIndex = mindex;\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\n if (!isReturn && hasSMZF) {\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\n return null;\n } else {\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\n }\n }\n const index = mode.paymethodId;\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\n <div key={index + ''} className=\"modeItem\">\n <div className=\"main\">\n <div className=\"lefticon\"></div>\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\n <div className=\"text\">{mode.name}</div>\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\n </div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\n ?\n <input id={`inputS${index}`}\n\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\n onClick={() => {\n this.onHotKeyClick1(mode, index, boriginReturn);\n }}\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\n return Math.Add(sum, m.value);\n }, 0)\n ) : getFixedNumber(mode.value)} />\n :\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\n onBlur={e => this.onBlur(index, e)}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n onChange={e => mode.paymentType === PayStyle.xianjin ?\n this.handleChangeToStorage(index, e)\n : this.handleChange(index, e, mode.paymentType, PayStyle)\n }\n />\n }\n </div>\n </div>\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\n <span className=\"balance\">溢收金额:</span>\n <span>{mode.overchargesAmount}</span>\n </div>}\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\n return <div className=\"append\">\n <span >卡号:</span>\n <span >{m.member && m.member.cardNo}</span>\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\n <span className=\"balance fr\">支付金额:</span>\n </div>\n })}\n </div>)\n })\n }\n </div>\n </div>\n <div className=\"payfooter\">\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\n <span><button className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\n </div>\n </div>\n </Drawer>}\n {\n type == 1 && !newStyle &&\n <Modal\n className={`settlement-wraper2 ${hotKey.hotKeyBindClass('5')}`}\n width=\"600px\"\n show={this.state.visible}\n backdropClosable={false}\n footer={null}\n onHide={this.handleCancel}\n >\n {/* 会员结算 触屏模式 */}\n <Modal.Header closeButton>\n <Modal.Title className=\"modalTitle\">{\"复合结算\"}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <div className=\"settlement\">\n <div className='settlementTop'>\n <div className={classnames({ \"toolbar\": true, \"toolbar2\": type == 1, \"carousel\": paymodes.length > carouselStart2 })}>\n {\n paymodes.length <= carouselStart2 &&\n <div>\n {\n _map(paymodes, (mode, index) => {\n return this.renderToolbtn(mode, index)\n })\n }\n </div>\n }\n {paymodes.length > carouselStart2 && this.paymodesCarouselList(params,paymodes,carouselStart2,CarouselFigure)}\n </div>\n <div className=\"rightheader\">\n {\n paymode.onlineamount > 0 && <div className=\"receivable\">\n <span>线上已收</span>\n <span>{paymode.onlineamount}</span>\n </div>\n }\n <div className=\"receivable\">\n <span>应收金额</span>\n <span>{paymode.amount}</span>\n </div>\n <div className=\"receivable\">\n <span>剩余应收</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"receivable\">\n <span>实收金额</span>\n <span className=\"received\">{paymode.received}</span>\n </div>\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span>找零金额</span>\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>\n </div>\n </div>\n <div className=\"paydetail\">\n <div className=\"left\">\n {\n thePaymodes.length == 0 && <div className=\"emptydata detailempty2\">请添加结算方式</div>\n }\n {\n _map(thePaymodes, (mode) => {\n const index = mode.paymethodId;\n return (\n <div key={index + ''} className=\"modeItem\">\n <div className=\"main\">\n <div className=\"lefticon\" onClick={() => {\n this.onDelPay(index);\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>{mode.name}</div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\n ?\n <input className={hotKey.hotKeyNotFilter(\"\")} id={`inputS${index}`}\n onClick={() => { this.editModal(index, mode.paymentType) }} value={getFixedNumber(mode.value)} />\n : <input className={hotKey.hotKeyNotFilter(\"\")} id={`inputS${index}`}\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\n onBlur={e => this.onBlur(index, e)}\n onChange={e => this.handleChange(index, e)}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n />\n }\n </div>\n <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\n onClick={() => {\n this.appendCzkmode();\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div>\n </div>\n {\n mode.paymentType == PayStyle.djq ?\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"balance\">溢收金额:</span>\n <span>{mode.overchargesAmount}</span>\n </div>\n :\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\n <span className=\"fl\">卡号:</span>\n <span className=\"fl\">{mode.member && mode.member.cardNo}</span>\n <br />\n <span className=\"balance fl\">余额:</span>\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\n </div>\n }\n </div>\n )\n })\n }\n </div>\n <div className=\"right\">\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\n {\n !this.isHorizontalPad &&\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\n }\n </div>\n </div>\n </div>\n <div className=\"payfooter2\">\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\n <span><button className=\"settle\" onClick={this.handleSettle}\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\n </div>\n </div>\n </Modal.Body>\n </Modal>\n }\n {\n type == 1 && newStyle &&\n <Modal\n className={`settlement-wraper2 ${hotKey.hotKeyBindClass('5')}`}\n width=\"600px\"\n show={this.state.visible}\n backdropClosable={false}\n footer={null}\n onHide={this.handleCancel}\n >\n {/* 会员结算单据模式 */}\n <Modal.Header closeButton>\n <Modal.Title className=\"modalTitle\">{\"复合结算\"}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <div className=\"settlement\">\n <div className=\"paydetail newstyle newstyle2\">\n <div className=\"top\">\n <div className=\"righttop\">\n {paymode.onlineamount > 0 && <div className=\"receivable\">\n <span>线上已收</span>\n <span>{paymode.onlineamount}</span>\n </div>}\n <div className=\"receivable\">\n <span>应收金额</span>\n <span>{paymode.amount}</span>\n </div>\n <div className=\"receivable\">\n <span>剩余应收</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"receivable\">\n <span>实收金额</span>\n <span className=\"received\">{paymode.received}</span>\n </div>\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\n <span>找零金额</span>\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\n </div>\n </div>\n </div>\n <div className=\"bottom\">\n {\n thePaymodes.length == 0 && <div className=\"emptydata detailempty\">请添加结算方式</div>\n }\n {\n _map(thePaymodes, (mode, mindex) => {\n let { isReturn } = this.props;\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\n let hotkeyIndex = mindex;\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\n if (!isReturn && hasSMZF) {\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\n return null;\n } else {\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\n }\n }\n const index = mode.paymethodId;\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\n <div key={index + ''} className=\"modeItem\">\n <div className=\"main\">\n <div className=\"lefticon\"></div>\n <div className={classnames({ \"name\": true, \"focusbottom\": currentIndex == index })}>\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\n <div className=\"text\">{mode.name}</div>\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || \"\"}</div>\n </div>\n <div className={classnames({ \"content\": true, \"focusbottom\": currentIndex == index })}>\n {\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\n ?\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\n onClick={() => {\n this.onHotKeyClick1(mode, index, boriginReturn);\n }}\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\n return Math.Add(sum, m.value);\n }, 0)\n ) : getFixedNumber(mode.value)} />\n :\n <input id={`inputS${index}`}\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\n onBlur={e => this.onBlur(index, e)}\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\n onChange={e => this.handleChange(index, e)}\n />\n }\n </div>\n </div>\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\n <span className=\"balance\">溢收金额:</span>\n <span>{mode.overchargesAmount}</span>\n </div>}\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\n return <div className=\"append\">\n <span >卡号:</span>\n <span >{m.member && m.member.cardNo}</span>\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\n <span className=\"balance fr\">支付金额:</span>\n </div>\n })}\n </div>)\n })\n }\n </div>\n </div>\n <div className=\"payfooter2\">\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\n <span><button className=\"cancel\" onClick={this.handleCancel}>取消</button></span>\n <span><button className=\"settle\" onClick={this.handleSettle}\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</button></span>\n </div>\n </div>\n </Modal.Body>\n </Modal>\n }\n <Modal\n className={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\n width=\"400px\"\n show={this.state.czkVisible}\n backdropClosable={false}\n footer={null}\n onHide={this.handleCzkCancel}\n keyboard={false}\n centered={!this.isHorizontalPad ? true : false}\n onEntered={this.handleCardonEntered}\n >\n <Modal.Header closeButton>\n <Modal.Title className=\"modalTitle\">{\"储值卡结算\"}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <div className=\"info\">\n {hasmember && <div className={classnames({ \"type\": true, 'colwidth3': hasmember })}>\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\n <div className=\"name\">类型</div>\n </div>}\n <div className=\"gap\">\n <div className=\"gap1\"></div>\n <div className=\"gap2\"></div>\n <div className=\"gap1\"></div>\n </div>\n <div className={classnames({ \"balance\": true, 'colwidth2': !hasmember, 'colwidth3': hasmember })}>\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.balance)}</div>\n <div className=\"name\">可用余额</div>\n </div>\n <div className=\"gap\">\n <div className=\"gap1\"></div>\n <div className=\"gap2\"></div>\n <div className=\"gap1\"></div>\n </div>\n <div className={classnames({ \"available\": true, 'colwidth2': !hasmember, 'colwidth3': hasmember })}>\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0, Math.min(currentMode.maxamount, currentMode.member.balance)))}</div>\n <div className=\"name\">本单可用</div>\n </div>\n </div>\n <div className=\"no\">\n <span>储值卡号:</span>\n <span>\n <Input\n type='text'\n placeholder=\"请扫描或输入储值卡\"\n className={`input ${(this.hasElectron === true && this.iCCardServer === 1 || this.isHorizontalPad === true) ? 'temp' : ''}`}\n onChange={this.onCzkChange}\n value={currentMode && currentMode.member.cardNo}\n ref={input => this.czkInput = input}\n onKeyDown={\n (e) => { if (e.keyCode == 13) { this.loadCzk(e.target.value); } }\n }\n onFocus={(e) => {\n this.inputTarget = this.czkInput.input;\n Keyboard.open((v) => {\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\n this.onCzkChange(value);\n }, this.czkKeyboardOnOk, this.czkKeyboardOnClose)()\n }\n }\n onBlur={(e) => {\n Keyboard.close();\n }}\n />\n </span>\n {\n this.hasElectron === true && this.iCCardServer === 1 &&\n <Ticon className='icon' onClick={this.handleReadICard} type=\"ICka\" />\n }\n {\n this.isHorizontalPad &&\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\n }\n {\n /* 扫描组件 */\n this.isHorizontalPad &&\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanCzkResult} />\n }\n </div>\n <div className=\"receivable\">\n <span>剩余应收:</span>\n <span>{paymode.receivable}</span>\n </div>\n {/* <div className=\"receivable\">\n <span>限收金额:</span>\n <span>{currentMode && getFixedNumber(currentMode.maxamount)}</span>\n </div> */}\n <div className=\"received\">\n <span>实收金额:</span>\n <span>\n <Input\n type='text'\n className={hotKey.hotKeyNotFilter('input')}\n onChange={(value) => { this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.balance)) }}\n defaultValue={currentMode && getFixedNumber(brefund ? currentMode.value : Math.min(currentMode.value, currentMode.maxamount, currentMode.member.balance))}\n ref={ref => this[\"inputCzkAmount\"] = ref}\n onFocus={(e) => {\n this.inputkey = \"inputCzkAmount\";\n this.inputCzkAmount.input.select();\n Keyboard.open((v) => {\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\n this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.balance));\n }, this.keyboardOnOk, this.keyboardOnClose)()\n }\n }\n onBlur={(e) => {\n Keyboard.close();\n this.setCurrentModeValue(getFixedNumber(this.inputCzkAmount.input.value), Math.min(currentMode.maxamount, currentMode.member.balance));\n }}\n />\n </span>\n </div>\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\n {(!this.store.member || !this.store.member.ID) && <div className=\"tipStype\">在此处录入会员不会享有折扣、会员价等优惠,若需要优惠请返回至开单界面录入会员!</div>}\n <div className=\"action\">\n <button onClick={this.handleCzkCancel}>取消</button>\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleCzkOk}>确定</button>\n </div>\n </Modal.Body>\n </Modal>\n <Modal\n className={`djq ${this.isHorizontalPad ? 'extraHeight' : ''}`}\n width=\"810px\"\n show={this.state.djqVisible}\n backdropClosable={false}\n onOk={this.handleDjqOk}\n onCancel={this.handleDjqCancel}\n onHide={this.handleDjqCancel}\n centered={!this.isHorizontalPad ? true : false}\n >\n <Modal.Header closeButton>\n <Modal.Title className=\"modalTitle\">{\"代金券支付\"}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n {currentMode && !currentMode.boriginReturn && <div className=\"djq1\">\n <div className=\"col1\">代金券号</div>\n <div className=\"col2\">\n <div>\n <Input\n type='text'\n placeholder=\"扫描/输入代金券号\"\n className=\"input\"\n ref={input => this.inputdjq = input}\n onKeyDown={\n (e) => { if (e.keyCode == 13) { this.addDjq(e.target.value) } }\n }\n onFocus={e => {\n this.inputTarget = this.inputdjq.input;\n Keyboard.open((v) => {\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\n this.onDjqChange(value, true);\n }, this.djqKeyboardOnOk, this.djqKeyboardOnClose)()\n }}\n onBlur={(e) => { Keyboard.close() }}\n />\n </div>\n <div className=\"row2\">{currentMode && currentMode.errinfo}</div>\n </div>\n {\n this.isHorizontalPad &&\n <div className=\"col3\">\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanDjqResult} />\n </div>\n }\n </div>}\n <div className=\"djq2outer\">\n <div className=\"djq2\">\n {\n _map(currentMode && currentMode.djqs || [], (q, index) => {\n return (<div key={index + ''} className=\"djqItem\">\n <div className=\"djqLeft\">\n <div className=\"amount\"><span>{q.amount}</span><span>元</span></div>\n <div className=\"lijian\">立减</div>\n {/* <div className=\"lingqu\" style={{display:q.checked?'none':'block'}}>立即使用</div> */}\n </div>\n <div className={classnames('djqRight', { 'djqRightSelected': q.checked })} onClick={(e) => this.djqChecked(q)}>\n <div className=\"name\">{q.name}</div>\n <div className=\"info\"><span>使用门槛:</span><span>{q.doorsill}</span><span>元</span></div>\n {/* <div className=\"info\"><span>到期日:</span><span>{q.expired}</span></div> */}\n </div>\n </div>)\n })\n }\n </div>\n </div>\n {currentMode && !currentMode.boriginReturn && <div className=\"djq3\">\n <div className=\"col1\">\n <div className=\"row1\">剩余应收</div>\n <div className=\"row2\">{currentMode ? currentMode.receivable : '0.00'}</div>\n </div>\n <div className=\"col2\">\n <div className=\"row1\">本单可用</div>\n <div className=\"row2\">{currentMode ? currentMode.maxamount : '0.00'}</div>\n </div>\n <div className=\"col2\">\n <div className=\"row1\">代金券结算金额</div>\n <div className=\"row2\">{currentMode ? currentMode.value : '0.00'}</div>\n </div>\n <div className=\"col3\">\n <div className=\"row1\">溢收金额</div>\n <div className=\"row2\">{currentMode ? currentMode.overchargesAmount : '0.00'}</div>\n </div>\n </div>}\n {currentMode && currentMode.boriginReturn && <div className=\"djq3\">\n <div className=\"col1\">\n <div className=\"row1\">数量</div>\n <div className=\"row2\">{currentMode && currentMode.djqs ? currentMode.djqs.length : '0'}</div>\n </div>\n <div className=\"col2\">\n <div className=\"row1\">退款金额</div>\n <div className=\"row2\">{currentMode ? currentMode.value : '0.00'}</div>\n </div>\n </div>}\n <div className=\"action\">\n <button onClick={this.handleDjqCancel}>取消</button>\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleDjqOk}>确定</button>\n </div>\n </Modal.Body>\n\n </Modal>\n <Modal\n className={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\n width=\"420px\"\n show={this.state.jfdxVisible}\n backdropClosable={false}\n footer={null}\n onHide={this.handleJfdxCancel}\n centered={!this.isHorizontalPad ? true : false}\n >\n <Modal.Header closeButton>\n <Modal.Title className=\"modalTitle\">{\"积分抵现\"}</Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <div className=\"info\">\n <div className={classnames({ \"type\": true, 'colwidth4': hasmember })}>\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\n <div className=\"name\">类型</div>\n </div>\n <div className=\"gap\">\n <div className=\"gap1\"></div>\n <div className=\"gap2\"></div>\n <div className=\"gap1\"></div>\n </div>\n <div className={classnames({ \"balance\": true, 'colwidth4': hasmember })}>\n <div className=\"value\">{currentMode && currentMode.member.bonusPoints}</div>\n <div className=\"name\">积分</div>\n </div>\n <div className=\"gap\">\n <div className=\"gap1\"></div>\n <div className=\"gap2\"></div>\n <div className=\"gap1\"></div>\n </div>\n <div className={classnames({ \"balance\": true, 'colwidth4': hasmember })}>\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.exchangable)}</div>\n <div className=\"name\">可抵现金额</div>\n </div>\n <div className=\"gap\">\n <div className=\"gap1\"></div>\n <div className=\"gap2\"></div>\n <div className=\"gap1\"></div>\n </div>\n <div className={classnames({ \"available\": true, 'colwidth4': hasmember })}>\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0, Math.min(currentMode.maxamount, currentMode.member.exchangable)))}</div>\n <div className=\"name\">本单可用</div>\n </div>\n </div>\n <div className=\"no\">\n <span>会员卡号:</span>\n <span className=\"notext\">{currentMode && currentMode.member.cardNo}</span>\n </div>\n <div className=\"receivable\">\n <span>剩余应收:</span>\n <span>{paymode.receivable}</span>\n </div>\n <div className=\"received\">\n <span>实收金额:</span>\n <span>\n <Input\n className={hotKey.hotKeyNotFilter('input')}\n type='text'\n onChange={(value) => { this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.exchangable)) }}\n defaultValue={currentMode && getFixedNumber(Math.min(currentMode.value, currentMode.maxamount, currentMode.member.exchangable))}\n ref={ref => this[\"inputJfdxAmount\"] = ref}\n onFocus={(e) => {\n this.inputkey = \"inputJfdxAmount\";\n Keyboard.open((v) => {\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\n this.setCurrentModeValue(value, Math.min(currentMode.maxamount, currentMode.member.exchangable));\n }, this.keyboardOnOk, this.keyboardOnClose)()\n }\n }\n onBlur={(e) => {\n Keyboard.close();\n this.setCurrentModeValue(getFixedNumber(this.inputJfdxAmount.input.value), Math.min(currentMode.maxamount, currentMode.member.exchangable));\n }}\n />\n </span>\n </div>\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\n <div className=\"action\">\n <button onClick={this.handleJfdxCancel}>取消</button>\n <button disabled={currentMode && currentMode.errinfo != ''} onClick={this.handleJfdxOk}>确定</button>\n </div>\n </Modal.Body>\n\n </Modal>\n </div>\n );\n }\n}\n\nexport default Settlement"]}