{"version":3,"sources":["app.js","ng-jcrop.js","appFactory.js","BCAAgreement.js","ChangePassword.js","CIF-1.js","CIF-2.js","CIF-3.js","CIF-4.js","CIF-Final.js","CIF-KTP.js","CIF-TakenAJA.js","CIFCam.js","CIFDashboard.js","CIFHead.js","CIFProfile.js","forgetpassword.js","login.js","ng-webcam.js","register-activation.js","register.js"],"names":["app","angular","module","_typeof","obj","Symbol","iterator","constructor","prototype","$rootScope","icon","title","text","allowOutsideClick","allowEscapeKey","allowEnterKey","backdrop","showCancelButton","confirmButtonColor","cancelButtonColor","focusConfirm","timer","onOpen","swal","showLoading","textFooter","showConfirmButton","templateUrl","controller","$routeProvider","$locationProvider","$translateProvider","ngJcropConfigProvider","hashPrefix","when","otherwise","prefix","suffix","factory","getLang","setLang","webcam","patData","patOpts","y","w","webcamError","hiddenCanvas","height","getImageData","h","snapshotData","imgBase64","makeSnapshot","_video","patCanvas","width","idata","getVideoData","sendSnapshotToServer","ctxPat","putImageData","onSuccess","channel","x","onStream","isTurnOn","activeStream","err","getVideoTracks","checker","console","downloadSnapshot","getContext","window","location","href","dataURL","ctx","toDataURL","service","success","substr","indexOf","length","video","stream","log","stop","turnOff","document","querySelector","drawImage","onError","_stream","createElement","$scope","login","Email","Notelp","urlNow","lang","name","languageSelected","languages","addClass","$translate","use","$window","$filter","$http","$q","$cookies","appFactory","Username","Password","signOut","PostGetSwal","SWALtranslate","showLoaderOnConfirm","preConfirm","then","data","updateLanguage","result","$","message","removeClass","allPromise","all","getData","status","d","error","value","requestToken","preconfirmtranslate","urlsvc","postData","method","callback","localStorage","Swal","fire","checkLoginStep","userSession","IsFinished","reload","preConf","Stage","showValidationMessage","concat","checkLogin","retrieveSessions","url","Authorization","access_token","setItem","IsRevised","currentUser","translateLocale","footer","element","transformedInput","ngModelCtrl","$setViewValue","$render","undefined","directive","attr","fromUser","restrict","event","shiftKey","preventDefault","which","get","put","deferred","promise","postGetData","link","defer","$parsers","push","replace","accept","$uibModalInstance","require","scope","Broker","ConfirmPassword","checkPassword","elm","attrs","ctrl","formChange","txtConfirmPassword","$invalid","$log","responseType","cache","resolve","reject","getDataByID","id","agreementNumber","close","retrieveSession","cancel","dismiss","$routeParams","User","GeneratedKey","generatedkey","NewPassword","email","submit","chgPass","issuccess","CIFInvestor","Sex","Religion","MaritalStatus","Education","ResidencyStatus","tmpdate","Date","setFullYear","getFullYear","maxDate","toISOString","slice","Kewarganegaraan","KewarganegaraanOption","IDLength","chkSeumurHidup","DisabledSeumurHidup","chkSpouseSeumurHidup","SpouseDisabledSeumurHidup","IDCardCitySelected","DomicileCitySelected","NationalitySelected","IDCardCountrySelected","IDCardKecamatanSelected","IDCardOK","ListNationality","ListLookup","ListReligion","ListMarital","ListEducation","ListResidencyStatus","ListKecamatan","ListKecamatanDomicile","ListKecamatanAll","ListKelurahan","ListKelurahanDomicile","checkIDCardNumber","IDCardNumber","key","myForm1","$valid","txtNoIDCard","KewarganegaraanChange","Nationality","IDCardCountry","CopyID","IDCardExpireDate","IDCardCity","IDCardKecamatan","IDCardKelurahan","IDCardRT","IDCardRW","IDCardAddress","selectNationality","item","model","label","CIFCountryNID","selectSpouseNationality","SpouseNationality","SpouseNationalitySelected","selectIDCardCountry","selectIDCardCity","CIFProvinceCityNID","kecamatanChange","selectDomicileCity","DomicileCity","Kecamatan","kelurahanChange","temp","Kelurahan","IDCardPostalCode","PostalCode","kecamatanDomicileChange","DomicileKecamatan","kelurahanDomicileChange","DomicileKelurahan","DomicilePostalCode","CopyFromID","DomicileAddress","DomicileRT","DomicileRW","mustSelect","field","keyCode","returnValue","CorrespondenceCity","ListCountry","ListProvinceCity","CIFLookupID","BirthDate","ResidencyNStatusDate","imageUrl","imageAlt","imageHeight","animation","prepareData","AccountStatus","Number","EducationText","language","navigator","userLanguage","Language","date1","ClientBirthDate1","toLocaleDateString","ClientBirthDate2","ClientBirthDate3","cifdata","validationinput","errorForm","$error","required","validation","i","$name","FirstName","SpouseKewarganegaraan","SpouseName","SpouseRelationship","MotherName","BirthPlace","listBankRDN","rdnbca","bankRDN","PhoneCode","bankpribadi","SpouseKewarganegaraanOption","disabledNPWPNumber","OPBBCA","occupation","occupationText","position","positionText","business","businessText","OPBOTHER","OPSPOUSE","disableBank","disableCIFInvestorQuestionRDN","selectedFundSource","selectedSpouseFundSource","ListBank","listpekerjaan_BCA","listjabatan_BCA","listusaha_BCA","ListOccupation","ListSpouseIncome","CompanyCitySelected","SpouseCompanyCitySelected","selectCity","SpouseCompanyCity","CompanyCity","SpouseKewarganegaraanChange","spouseMandatory","SpouseIDCardExpiredDate","questionRDNchange","BankName","QuestionRDN","changeSpouseMandatory","param","flag","spouseMandatory2","spouseMandatory1","CIFLookupInteger","SpouseCompanyName","SpouseIncomePerAnnum","SpouseOccupation","SpousePosition","SpouseNatureOfBusiness","SpouseCompanyPostalCode","SpouseCompanyAddress","SpouseFundSource","NPWPNumber","QuestionNPWP","updateNPWP","NPWPReason","occupationChange_BCA","positionChange_BCA","occupationChange_OTHER","toggleFundSourceItem","fundsource","indexCIFLookupInteger","splice","FundSourceText","toggleSpouseFundSourceItem","SpouseFundSourceText","Occupation","OccupationText","Position","PositionText","NatureOfBusiness","NatureOfBusinessText","SpouseOccupationText","FundSource","response","AlertYesNo","AlertShowLoading","BankCabang","CompanyName","CompanyAddress","CompanyPostalCode","IncomePerAnnum","ContactPersonName","ContactPersonRelationn","ContactPersonMobilePhone","selected","ListFundSource","ListIncomePerAnnum","listposition_BCA","listnature_BCA","BankOwner","SpouseBirthDate","split","$uibModal","chkquestionfatca","chkquestion1","chkquestion2","chkquestion3","chkquestion4","validateAgreementFATCA","agree3","disclaimerFATCA","showAgreement","number","open","size","agree","agree1","ListInvestmentObjectives","ListRisk","FATCA1","FATCA2","FATCA3","InvestmentObjectives","Question1","Question1_Text","Question2","Question2_Text","Question3","Question3_Text","Question4","Question4_Text","chkquestion5","Question5","Question5_Text","chkquestion6","Question6","Question6_Text","Risk","KTPCamService","SELFIECamService","$timeout","deviceDetector","allowedExt","agree2","agree4","device","filenameKTP","fileKTP","fileKTPext","KTPFile","filenameNPWP","fileNPWP","fileNPWPext","NPWPile","filenameFotoDiri","fileFotoDiri","fileFotoDiriext","fotodiriFile","filenameTandaTangan","fileTandaTangan","fileTandaTanganext","tandatanganFile","append","finishSignature","tnc1","focus","disclaimerTNC1","openCamera","tipe","items","resolvedResponse","ktpPhoto","npwpPhoto","selfiePhoto","ttdPhoto","remove","selectKTP","files","allowed","reader","FileReader","onload","e","btoa","target","toString","readAsBinaryString","lastIndexOf","toLowerCase","alert","selectNPWP","NPWPFile","selectFotoDiri","selectTandaTangan","clickRemoveKTP","file","clickRemoveNPWP","clickRemoveFotoDiri","clickRemoveTandaTangan","resetSign","clear","completeSign","signature","dataUrl","isEmpty","TandaTanganFile","validateAgreement","disclaimerBank","GlobalAlert","validateAgreementRDNBCA","disclaimerRDNBCA","validateAgreementTAPRESBCA","disclaimerTAPRESBCA","validateAgreementDEKLARASI","disclaimerDEKLARASI","validateAgreementDECLARATION","disclaimerDECLARATION","modalMessage","SelfieFile","endsWith","readAsDataURL","onloadend","showKTP","saveErrors","errorMessages","reader2","disclaimerPTMKES","uibDateParser","$location","Upload","stage","counter","series5","myAppUtility","isMobile","matchMedia","matches","takeCamera","onTimeout","mytimeout","$broadcast","reset","camfacing","KTPconfig","outputWidth","outputHeight","delay","shots","countdown","flashFallbackUrl","shutterUrl","flashNotDetectedText","KTPonCaptureComplete","src","KTPonLive","KTPonError","KTPonLoad","KTPcapture","KTPon","KTPoff","captureButtonEnable","KTPremove","changeStage","newstage","imageData","logOff","editMode","base64","image","ktpimage","ocrVerijelas","print","user","printXyz","code1","generatedconfirmation","OTP","code2","code3","code4","strText","$document","useCam","$on","ev","configName","imageSrc","switchCam","canvas","coords","context","Image","setTimeout","png","val","ok","page","datanasabah","stepClass","active","imgMale","imgDoc","imgFemale","State1","State2","State3","State4","stepActive","current","hash","showForm","goto","back","URLFolderKYC","imgItem","editing","now","type","navbarOptions","user_reset","UserNID","UserForget","showPassword","inputType","toggleShowPassword","UserLogin","AlertShowFooter","on","constant","widthLimit","heightLimit","previewImgStyle","overflow","margin-left","eventName","jcrop","aspectRatio","maxWidth","maxHeight","provider","ngJcroptDefaultConfig","ngJcropTemplate","_configs","_getConfig","copy","template","setConfig","objConfig","config","extend","setJcropConfig","setPreviewStyle","styleObject","$get","run","jQuery","Error","Jcrop","ngJcropConfig","ngJcrop","thumbnail","selection","ngJcropConfigName","ngJcropInput","$element","onFileReaderLoad","setImage","onChange","currentTarget","setUrl","isUndefined","isArray","mainImg","imgStyle","previewImg","updateCurrentSizes","img","widthShrinkRatio","heightShrinkRatio","widthConstraining","heightConstraining","squareConstraining","getShrinkRatio","setSelection","x2","y2","shrinkRatio","Math","round","showPreview","rx","ry","selectionWatcher","$apply","parseInt","Array","trueSize","css","marginLeft","marginTop","onMainImageLoad","off","onSelect","setSelect","destroy","initMainImage","init","imageWrapper","find","empty","$watch","newValue","oldValue","show","hide","ngWebcam","join","bindToController","ngWebcamController","controllerAs","onCaptureComplete","onLoad","onCaptureProgress","onLive","$interval","sound","snapshotTimer","countdownTimer","vm","this","images","viewerWidth","viewerHeight","Webcam","webcamLoaded","isDefined","webcamLive","Audio","autoplay","userAgent","match","set","dest_width","dest_height","force_flash","image_format","jpeg_quality","facingMode","setSWFLocation","attach","configure","capture","index","snap","data_uri","progress","count","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","$inject","ListSales","disablesales","SalesSelected","showPasswordConfirmation","inputTypeConfirmation","toggleShowPasswordConfirmation","formRegister","infolengthpass","ListCountryPhone","selectSales","SalesPersonNID","Sales","checkBankNumber","BankNumber","disclaimerClose","Handphone","disclaimerRek","disclaimerBO","disclaimerAgreement"],"mappings":"aAAA,IAAAA,IAAAC,QAAAC,OAAA,QAAA,CAAA,QAAA,eAAA,YAAA,cAAA,UAAA,YAAA,aAAA,eAAA,YAAA,YAAA,SAAA,yBAAA,iBAAA,oBAAA,uBAAA,YAAA,YCEA,SAASC,QAAQC,GAAmV,OAAtOD,QAArD,mBAAXE,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBF,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,IAAyBA,GDFnXJ,IAAIA,IAAAA,CAAAA,aAEJA,SAASS,GAILA,EAEcC,YAAAA,SAAAA,EAAAA,EAAAA,GACNC,OAAOA,KAAAA,KAAAA,CACDC,KAAAA,EACNC,MAAAA,EACAC,KAAAA,EACAC,mBAAe,EACfC,gBAAU,EADVD,eAAe,EACfC,UAAU,KAIlBP,EAEcC,WAAAA,SAAAA,EAAAA,EAAAA,GACNC,OAAOA,KAAAA,KAAAA,CACDC,KAAAA,EACNK,MAAAA,EACAC,KAAAA,EACAC,kBAAmB,EACnBC,mBAAc,UACdP,kBAAmB,OACnBC,cAAgB,EAChBC,mBAAe,EADfD,gBAAgB,EAChBC,eAAe,KAIvBN,EAEcC,iBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACNC,OAAOA,KAAAA,KAAAA,CACDC,KAAAA,EACNS,MAAOA,EACPR,KAAAA,EACAC,MAAAA,EACAC,mBAAe,EACfO,gBAAQ,EACJC,eAAKC,EADTF,OAAQ,WACJC,KAAKC,kBAKjBf,EAEgBgB,gBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACRf,OAAMA,KAAAA,KAAAA,CACNC,OAAOA,EACDC,KAAAA,EACNS,MAAOA,EACPK,KAAAA,EADAL,MAAOA,EACPK,mBAAmB,QAK/B1B,IAMK2B,OAAAA,CAAAA,WAAa,iBAAA,oBAAA,qBAAA,wBACbC,SAAAA,EAAYC,EAAAC,EAAAC,EAAAC,GALbF,EAOKG,WACR,IACIN,EAPJO,KAQIN,IAPJ,CAWID,YAAa,uBACbC,WAAY,cAIZD,KAAAA,YAXJ,CAcGO,YAAK,0BAEJP,WAAa,iBAZdO,KAeAA,gBAdH,CAiBIN,YAAY,0BAEbM,WAAK,iBAGJN,KAAAA,4BAjBJ,CAqBID,YAAa,4BACbC,WAAY,mBAIZD,KAAAA,kBArBJ,CAwBGO,YAAK,gCAEJP,WAAa,uBAtBdO,KAyBAA,iCAxBH,CA2BIN,YAAY,gCAEbM,WAAK,uBAGJN,KAAAA,SA3BJ,CA+BID,YAAa,uBACbC,WAAY,cAIZD,KAAAA,aA/BJ,CAkCGO,YAAK,wBAEJP,WAAa,gBAhCdO,KAmCAA,oBAlCH,CAqCIN,YAAY,uBAEhBO,WACA,aApCGD,KAAK,sBACR,CAwCOE,YAAQ,uBACRC,WAAQ,cAEZN,KAAAA,sBAtCH,CAyCGO,YAAQ,uBACRV,WAAW,cAEPW,KAAAA,uBAvCP,CACIZ,YAAa,uBA0CVa,WAAS,cAvCbN,KAyCQ,aAxCX,CACIP,YAAa,qCACbC,WAAY,sBA4CbM,KAAIO,WAzCP,CA2CGA,YAAOC,mCACPd,WAAa,oBAEba,KAAOE,aAzCV,CAyC4BC,YAAG,+BAAGC,WAAG,gBArClCX,KAAK,8BACR,CAsCGO,YAAOK,8BApCNlB,WAAY,qBAEhBO,UACA,CAsCOY,WAAaC,YAGbjB,EAAWkB,qBAAsBC,CApCjCd,OAAQ,gBACRC,OAAQ,UAuCRI,EAAOU,kBAAeC,SAlC9BpD,IAqCIyC,QAAOY,cAAe,WAClB,IAAIC,EAAAA,GApCR,MAqCYC,CACJhB,QAAKgB,WAELA,OAAUC,GAIVhB,QAAIiB,SAAQC,GAGZC,OAFAC,EAAOC,MAjCnB7D,IAAIsC,QAAQ,gBAAiB,WA4CzBG,IAAAA,EAAOqB,CACHR,UAAgBS,EAChBtB,QAAeI,MACfJ,EAAOE,KAzCXF,EAAOE,QAAU,CAAEqB,EAAG,EAAGpB,EAAG,EAAGC,EAAG,GAAIK,EAAG,IACzCT,EAAOsB,QAAU,GA4CjBtB,EAAOwB,aAAW,EA8BlB,OAfIxB,EAAOyB,aAAW,WA1ClB,IA+CeC,EAvCPV,EA8BaW,GAtCjBd,IA2CAa,EAAgBA,SAAaE,cAAAA,mBAEzBC,EAASd,MAAAF,EAAAE,MACTe,EAAYvB,OAAOmB,EAAAA,OACZA,EAAAA,EAAaE,WAAiB,MAvCrCZ,EAqBUU,SAAAA,EAAAA,EAAAA,EAAAA,GAClB,IAAOA,EAAAA,SAAAA,cAAAA,UA1CPpB,EAAaS,MAAQF,EAAOE,MAC5BT,EAAaC,OAASM,EAAON,OA4C1BwB,EAAAA,EAAmBC,WAASD,MAzC/B,OA0CAE,EAAOC,UAASC,EAAOC,EAAAA,EAAAA,EAAAA,MAAAA,EAAAA,QA1ChBC,EAAI7B,aAAae,EAAGpB,EAAGC,EAAGK,GAgBjBQ,CAAajB,EAAOE,QAAQqB,EAAGvB,EAAOE,QAAQC,EAAGH,EAAOE,QAAQE,EAAGJ,EAAOE,QAAQO,GAyC9FU,EAAOC,aAAAJ,EAAA,EAAA,GAXUW,EA3BIb,EAAUwB,YAfnCtC,EAAOU,aAAeC,EAiBlBX,EAAOC,QAAUe,EAyCrBuB,EAAUC,QAAAxC,EAAAU,aAAA+B,OAAAzC,EAAAU,aAAAgC,QAAA,WAAA,UAAAC,QAAA,eAMd9C,EAAAA,UAAQ,WACJG,EAASA,EAAAsB,QAAAsB,MACb5C,EAAOyB,QAAWrB,EAAAS,EAAAE,MAClBf,EAAOC,QAAUQ,EAAAI,EAAAN,OACbM,EAASY,UAAA,GAEMF,EAAGC,SAAA,SAAAqB,GAAmB,OAAbnB,aAAAmB,EAAMf,QAAAgB,IAAA,KAAApB,cAAOA,cAEzC1B,EAAOK,iBAAc,SAAA+B,GAlCjBH,OAAOC,SAASC,KAAOC,GAsCvB9B,EAAAA,QAAaS,SAAQF,GACrBP,EAAAA,YAAsBO,GAGtBb,EAAOqC,QAAI7B,WAjCX,OADAR,EAAOyB,UAAW,KACdC,eAAgBA,aAAaE,kBAoCoBjB,mBAA9Be,aAASR,iBAjCxBY,QAAQgB,IAAI,MAAOpB,aAAaE,kBACzBF,aAAaE,iBAAiB,GAAGmB,UA2CxC5B,CAEJnB,OAAIgB,KAhChBzD,IAAIsC,QAAQ,mBAAoB,WAC5B,IAAIG,EAAS,CACbA,UAAkB,EA0ClBA,QAAmB,MACfa,EAASb,KAETA,EAAOE,QAAQO,CAAII,EAAAA,EAAAA,EAAON,EAAAA,EAAAA,GAAAA,EAAAA,IAC1BP,EAAOyB,QAAAA,GAxCXzB,EAAOK,aAAc,EA4ErB,OA7DAL,EAAOY,aAAe,WAClB,IAMQO,EAyCQ2B,EApDqCnC,GAKjDE,IA0CDmC,EAAUC,SAAYC,cAAA,sBAErBxB,EAAAA,MAAgBA,EAAaE,MACvBC,EAAUtB,OAAOmB,EAAAA,OAvCnBP,EAASL,EAAUkB,WAAW,MAyCtBc,EApBF,SAAkBvB,EAAApB,EAAAC,EAAAK,GAChCiB,IAAAA,EAAemB,SAAAA,cAAAA,UACff,EAAYf,MAAMW,EAAAA,MAClBpB,EAAOoB,OAAAA,EAAAA,OAxCHW,EAAM/B,EAAa0B,WAAW,MA2CtChC,OA1CIqC,EAAIc,UAAUtC,EAAQ,EAAG,EAAGA,EAAOE,MAAOF,EAAON,QA0C9CwB,EAAAA,aAAmBR,EAAApB,EAAS4B,EAAAA,GAcXd,CAAMS,EAAaE,QAAAA,EAAAA,EAAAA,QAAAA,EAAAA,EAAAA,QAAAA,EAAAA,EAAAA,QAAAA,GAC/BT,EAAOO,aAAaE,EAAAA,EAAAA,GArDyBjB,EAgB5BG,EAAUwB,YA0BvCtC,EAAOoD,aAAoBzB,EAxBnB3B,EAAOC,QAAUe,EAuCdhB,EAAAwC,QAAAxC,EAAAU,aAAA+B,OAAAzC,EAAAU,aAAAgC,QAAA,WAAA,UAAAC,QAAA,eAhCX3C,EAAOqB,UAAY,WAwCnBR,EAAO0B,EAAAA,QAAAA,MAtCHvC,EAAOE,QAAQE,EAAIS,EAAOE,MAyC9BlB,EAAQK,QAAAO,EAAAI,EAAAN,OACJP,EAASyB,UAAA,GAGbzB,EAAIa,SAAS,SAAAgC,GAES,OADlBQ,aAAUR,EACd7C,QAAOE,IAAU,KAAAwB,cAAKA,cAAgBjB,EAAGsB,iBAAA,SAAAK,GAnCrCH,OAAOC,SAASC,KAAOC,GAG3BpC,EAAOoD,QAAU,SAAUzB,GAoCvBV,EAAAA,YAAeU,EACXrB,QAAAA,IAAAA,MAAe2C,EAASK,cAG5BtD,EAAIqC,QAAM/B,WAEV,OADI6C,EAAAA,UAAkB,KACfd,eAAiBd,aAASd,kBAlC0B,mBAAhCiB,aAAaE,iBAqCxCV,QAAAA,IAAAA,KAAuBQ,aAASR,kBACzBR,aAAeC,iBAAAA,GAAAA,UAQRI,CACVD,OAAUP,KA7BtBhD,IAAIsC,QAAQ,sBAAuB,WAC/B,IAAIG,EAAS,CACbA,UAAkB,EA0ClBA,QAAmB,MACfa,EAASb,KAETA,EAAOE,QAAQO,CAAII,EAAAA,EAAAA,EAAON,EAAAA,EAAAA,GAAAA,EAAAA,IAC1BP,EAAOyB,QAAAA,GAxCXzB,EAAOK,aAAc,EA0IrB,OA3HAL,EAAOY,aAAe,WAClB,IAMQO,EAyCQ2B,EApDqCnC,GAKjDE,IA0CDmC,EAAUC,SAAYC,cAAA,yBAErBxB,EAAAA,MAAgBA,EAAaE,MACvBC,EAAUtB,OAAOmB,EAAAA,OAvCnBP,EAASL,EAAUkB,WAAW,MAyCtBc,EApBF,SAAkBvB,EAAApB,EAAAC,EAAAK,GAChCiB,IAAAA,EAAemB,SAAAA,cAAAA,UACff,EAAYf,MAAMW,EAAAA,MAClBpB,EAAOoB,OAAAA,EAAAA,OAxCHW,EAAM/B,EAAa0B,WAAW,MA2CtChC,OA1CIqC,EAAIc,UAAUtC,EAAQ,EAAG,EAAGA,EAAOE,MAAOF,EAAON,QA0C9CwB,EAAAA,aAAmBR,EAAApB,EAAS4B,EAAAA,GAcXd,CAAMS,EAAaE,QAAAA,EAAAA,EAAAA,QAAAA,EAAAA,EAAAA,QAAAA,EAAAA,EAAAA,QAAAA,GAC/BT,EAAOO,aAAaE,EAAAA,EAAAA,GArDyBjB,EAgB5BG,EAAUwB,YA0BvCtC,EAAOoD,aAAoBzB,EAxBnB3B,EAAOC,QAAUe,EAuCdhB,EAAAwC,QAAAxC,EAAAU,aAAA+B,OAAAzC,EAAAU,aAAAgC,QAAA,WAAA,UAAAC,QAAA,eAhCX3C,EAAOqB,UAAY,WAwCnBR,EAAO0B,EAAAA,QAAAA,MAtCHvC,EAAOE,QAAQE,EAAIS,EAAOE,MA4C9B5B,EAAWe,QAAAO,EAAAI,EAAmBN,OAE9BgD,EAAOC,UAAQ,GAGXC,EAAOjC,SAAA,SAAAqB,GAzCP,OA0CAa,aAAQb,EA3CRf,QAAQgB,IAAI,KAAMpB,cACXA,cAgDP1B,EAAI2D,iBAAU,SACAvB,GA7CdH,OAAOC,SAASC,KAAOC,GA0DpBwB,EAAMR,QAAA,SAAAzB,GACNkC,EAAMxD,YAAAsB,EAEVG,QAAAgB,IAAA,MAAA9C,EAAAK,cArDHL,EAAOgD,QAAU,WAEb,OAyDJO,EAAOO,UAAAA,KAzDCpC,eAAgBA,aAAaE,kBA4DG,mBAAhBF,aAAgBE,iBAGzBkC,QAAAA,IAAAA,KAAmBP,aAAOQ,kBACpBC,aAASpC,iBAAA,GAAAmB,UArDhB,CA+DVkB,OAAWC,KApDnB3G,IAAI4B,WAoEgBgF,iBAAiBhC,CAAO,SAAA,aAAA,UAAA,QAAA,UAAA,KAAA,WAAA,aAAA,aAnExC,SAAUoB,EAAQvF,EAAYoG,EAASC,EAAOF,EAASG,EAAIC,EAAUN,EAAYO,GACjFjB,EAAOC,MAAQ,CACXiB,SAAU,GACVC,SAAU,GACVjB,MAAO,GACPC,OAAQ,IAyER1F,EAAAA,cAAsB,WAIduF,IAAAA,EAAOoB,OAAAA,SAAAA,KAAAA,OAAAA,OAAAA,SAAAA,KAAAA,YAAAA,KAAAA,GAvEf,MAAc,gBAAVhB,GACU,kBAAVA,GACU,kBAAVA,GACU,mBAAVA,GACU,aAAVA,GAyEDiB,WAAAA,GAjEPrB,EA2EQrF,UAAO2G,CACP1G,CACAK,KAAAA,KACAC,KAAAA,WAEAqG,CACAC,KAAAA,KAEMlB,KAAOQ,cAxErBd,EA4EgByB,iBAAKC,EAAQlB,UAAA,GAzE7BR,EA6EiB2B,eAAgBC,SAAQvB,GAEjBiB,MAAJjB,GA5EZL,EA+EgBrF,iBAAqBA,EAAAA,UAAAA,GA9ErCkH,EA+EgBjH,WAAM0G,SAAcQ,cA9EpCD,EA+EgBnH,WAAMqH,YAAA,gBA5EtB/B,EAAOO,iBAAmBP,EAAOQ,UAAU,GAC3CqB,EAAE,WAgFcE,YAAA,cAEHF,EAAA,WAAIP,SAAgBtB,eA7ErCU,EAkFoBhG,IAAMsF,EAAAO,iBAAAF,MAjF1BW,EAkFoBtF,IAAAA,OAAAA,EAAmB6E,iBAAAF,OA/EvC2B,EAAajB,EAAGkB,IAAI,IAKxBjC,EAAOoB,QAAU,WAEbH,EAAWiB,QAAX,+BAAkDT,KAAK,SAAUC,GAE1C,KAAfA,EAAKS,QAEc,GAAfT,EAAKA,KAAKU,IACVxB,EAAQjC,SAASC,KAAO,UAOxCoB,EAsFY0B,gBAAa,WAGbnD,IAAAA,EAAiBmD,EAAKU,cAAAA,cAE3B3H,EAAU4H,WAAO,WAAAf,EAAA3G,MAAA2G,EAAAQ,SAtFnBL,KAAK,SAACG,GACCA,EAAOU,OAyFZC,EAAAA,aAjFPvC,EAAOqB,YAAc,SAAUmB,EAAqBC,EAAQC,EAAUC,EAAQC,GA4FtErE,QAASmD,IAAKU,sBAAgBK,GAG1B7B,QAAQiC,IAAAA,sBAAqBF,GA3FrCpE,QAAQgB,IAAI,wBAAyBmD,GAgGlCpB,EAAiBtB,EAAAsB,cAAAkB,GA5FpB,OAAOM,KAAKC,KAAK,CACbrI,KAAM,WA+FPsI,MAAAA,EAAiBrI,MA7FhBC,KAAM0G,EAAcQ,QAgGpBmB,kBAAYC,EACZtC,mBAAwB,UACxBA,kBAAiBuC,SA9FjB5B,qBAAqB,EACrBC,WAAY,SAAC4B,GAiGbH,OAAYI,EAAS,CACb1E,OAASC,EACTD,IAASwE,EA9FTzB,KAAMgB,IACNjB,KAAK,SAAAC,GAIJ,GA6FG2B,QAAO9D,IAAAmC,EAAAA,KAAAU,EAAAR,SA7FNF,EAAKA,KAAKU,EAAER,OA6GJhD,CA/FJ0C,EAAgBtB,EAAOsB,cAAcI,EAAKA,KAAKU,EAAEN,SAQtD,OANAgB,KAAKC,KAAK,CAkGNM,MAAY/B,EAAA3G,MACPiE,KAAO0C,EAAAQ,QACPqB,KAAAA,QAhGLzH,mBAAmB,KAEhB,EA4EHiD,IAASC,EAAOoB,EAAAsB,cAAAI,EAAAA,KAAAU,EAAAN,SAErBgB,KAAAC,KAAA,CAEcnE,MAAO0C,EAAA3G,MACPwI,KAAAA,EAAAA,QAhGTzI,KAAM,UACNgB,mBAAmB,EACnBL,MAAO,MAkHf4H,EAAYC,EAAAA,KAAcd,EAAGR,UApCzByB,MAsCI1E,SAAAA,GACLmE,KAAAQ,sBACK3E,2KA/FRJ,QAAQgB,IAAR,mBAAAgE,OAA+BlB,UAQ/CrC,EAAOwD,WAAa,WAEhB1C,EAAM,CAmGH2C,OAAAA,OAEGC,IAAA,wCACFf,KAAQ,SAAAjB,GACHA,EAAAA,KAAAU,IAGG7C,EAAImC,eAAAA,EAAAA,KAAAA,GAnGRnD,QAAQgB,IAAImC,EAAKA,KAAKU,KAsGtBpC,SAAOoB,OAhGnBpB,EAsGOuC,aAAiB,WApGpBzB,EAAM,CACF6B,OAAQ,OAuGTrB,IAAAA,mCAECM,QAAS,CAtGL+B,cAAiB,wBAyGhBlC,KAAA,SAAAC,GAIDA,EAAAA,KAAAU,EAAAwB,cAGOjJ,EAAQkG,aAAQgD,QAAa,QAAAnC,EAAAA,KAAAU,EAAAwB,eAKpChC,SAAOjH,OApGnBqF,EAuGagD,eAAA,SAAAC,GAID,GAAAA,EAAAC,aAvGJtC,EAAQjC,SAASC,KAAO,cAwGnBgC,EAAAjC,SAAAwE,UAnGgB,GAArBF,EAAYI,QAwGPzC,EAAAjC,SAAAC,KAAA,cAEDgD,EAAOjH,SAAQkG,UAGdoC,EAAAI,QAEsB,GAAhB1I,EAAQkG,QArGc,GAAzBoC,EAAYa,UAwGflD,EAAAjC,SAAAC,KAAA,cAnGGgC,EAAQjC,SAASC,KAAO,qBAqGrBjE,EAAQkG,SAAQsC,UAQtB,GAAAF,EAAAI,QAEM1I,EAAQkG,SAAQjC,KAAA,uBAChBkD,EAAAA,SAAkBqB,UAIF,GAAhBxI,EAAQkG,QACRiB,EAAAA,SAAkBlD,KAAA,uBACzBgC,EAAAjC,SAAAwE,UAIyB,GAAlBrB,EAAUjB,QArGa,GAA1BoC,EAAYC,YAwGftC,EAAAjC,SAAAC,KAAA,cAEMjE,EAAQkG,SAAQsC,UAEvBvC,EAAAjC,SAAAC,KAAA,wBAIyB,GAAlBkD,EAAUjB,YACjBD,EAAAjC,SAAAC,KAAA,cAvGIgC,EAAQjC,SAASwE,aAQjCnD,EAwGY4B,iBAAiBf,WAtGzBC,EAAM,CAwGG6B,OAAA,OAEDf,IAAOjH,wCACPiH,KAAOE,SAAUjB,GAtGrBtC,QAAQgB,IAAImC,GAwGPA,EAAAA,KAAAU,EAKApC,EAAA+D,YAAArC,EAAAA,KAAAU,EAFMN,EAAAA,UAKAA,QAAAA,IAAUjB,EAAQkD,cACzB,SAAA1B,OApGZrC,EAwGY4B,cAAiBf,SAAQmD,GAtGjC,IAAIpC,EAAS,GA0GLA,OAAOjH,GACPiH,IAAOE,aAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,eAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,yBAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,2BAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,4BAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,gBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,kCAEMlG,MACPiH,IAAOE,iBAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,eAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,uBAEMlG,MACPiH,IAAOE,kBAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,gBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,yBAEMlG,MACPiH,IAAOE,aAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,mBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,aAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,mBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,aAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,mBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,aAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,mBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,aAEMlG,MACPiH,IAAOE,oBAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,gBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,0BAEMlG,MACPiH,IAAOE,gBAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBAwGnCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,qBAEMlG,MACPiH,IAAOE,eAtGPF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBAwGxCe,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,qBAEWlG,EAAQsJ,OAAApD,EAAA,YAAAA,CAAA,oCACRiB,MACP,IAAA,gBAtGAF,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBAwGrCe,EAAAA,QAAAA,EAAAA,YAAAA,CAAAA,sBAtGC,MACJ,IAAK,cAyGJZ,EAAarG,MACdqG,EAAAA,YAAAA,CAAqB,oBAvGjBY,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,aACtC,MACJ,IAAK,cAEDe,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,aACtC,MACJ,IAAK,cAEDe,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,aACtC,MACJ,IAAK,WAEDe,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,eACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,iBACtC,MACJ,IAAK,wBAEDe,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,8BACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,uBACtC,MACJ,IAAK,qBAiHHe,EAAAjH,MAAYkG,EAAY,YAAZA,CAAY,aAC3Be,EAAAE,QAAAjB,EAAA,YAAAA,CAAA,2BACM,MACH,IAAA,wBAGUtB,EAAI2E,MAAAA,EAAAA,YAAAA,CAAAA,gBA/GZtC,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,8BAiHlCjG,MAEA,IAAIuJ,qBAGAC,EAAYC,MAAAA,EAAcF,YAAdE,CAAcF,+BAC1BC,EAAYE,QAAAA,EAAAA,YAAAA,CAAAA,0BAjHpB,MAmHI,IAAOH,oBAhHXvC,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,0BAkH7B0D,EAAAA,QAAAA,EAAAA,YAAAA,CAAAA,6BAhHP,MACJ,IAAK,uBAED3C,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,6BACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,aACtC,MAkHZ2D,IAAU,UAEG5C,EAAAjH,MAAAkG,EAAA,YAAAA,CAAA,gBACHe,EAAAE,QAAiBoC,EAASO,YAATP,CAAeE,oCACzBM,MACD9J,IAAAA,eA/GJgH,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,eAkH5BsD,EAAAA,QAAAA,EAA2B,YAA3BA,CAA2B,qBAC3BC,MACAA,IAAAA,WA/GRxC,EAAOjH,MAAQ,qBAiHXiH,EAAOuC,QAAAA,EAAAA,YAAAA,CAAAA,iBA/GX,MACJ,IAAK,iCAEDvC,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,oBACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,mCA+G1CuD,MA7GA,IAAK,kBAEDxC,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,mBAgHtCe,EAAAE,QAAejB,EAAY,YAAZA,CAAY,sBAC9B,MACH8D,IAAU,eAEC/C,EAAAjH,MAAWkG,EAAU+D,YAAV/D,CAAiB,qBAC3B+D,EAAMC,QAAUhE,EAAA,YAAAA,CAAA,eAAQiE,MAAkB,IAAO,oBA3GrDlD,EAAOjH,MAAQkG,EAAQ,YAARA,CAAqB,eACpCe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,kBA4G9B,MA1GZ,IAAK,qBA6GMe,EAAIgD,MAAMG,EAAS,YAATA,CAAqBA,eA1GtCnD,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,mBA4GlC,MA1GR,IA2GW,eAEHe,EAAOjH,MAAAkG,EAAA,YAAAA,CAAA,qBA1GXe,EAAOE,QAAUjB,EAAQ,YAARA,CAAqB,eACtC,MACJ,QA8GSe,EAAAjH,MAAA,gBACKmK,EAAAA,QAAAA,+BAzGlB,OAAOlD,GAmFfI,EAAAP,KAAA,WEl8BAT,EAAAgE,IAAA,QAGWhF,EAAA2B,eAAAX,EAAAgE,IAAA,SFi3BChE,EAASiE,IAAI,OAAQ,WAgCjCjL,IAAIwK,UE/2BeU,WAASC,WFg3BxB,MAAO,CE92BHC,QAAa,UACTC,KAAIH,SAAcI,EAAAA,EAAAA,EAAAA,GCxC9BlB,EAAAmB,SAAAC,KDyCkB,SAAA5K,GAIE,GAFC8I,QAAAA,IAAAA,GAED9I,EAAU8G,CAELW,EAAOzH,EAAA6K,QAAA,kBAAA,IAUbP,OAHa7C,EAAAA,cAAAA,GACLA,EAAAA,UAEC8C,SFo3B5BnL,IGx6BIgG,UAAO0F,cAAS,WAEZC,MAAAA,CHw6BAC,QAAS,UACTP,KAAM,SAAUQ,EAAO3B,EAASO,EAAML,GIh7B9CA,EAAAmB,SAAAC,KDUWM,SAASlL,GAEZoH,GAAajB,EAAO,CAMPoB,IAAUgC,EAAKvJ,EAAA6K,QAAA,UAAA,IAWhB,OHw5BItB,IAAqBvJ,IACrBwJ,EAAYC,cAAcF,GG75B9BC,EAAYE,WAIZH,SHq6BpBnK,IAAIwK,UAAU,cAAe,WI37BzBxE,MAAO+F,CJ67BHpB,SAAU,II57Bd3E,KAAOgG,SAAAA,EAAgBC,EAAAC,EAAYC,GAC3BnG,EAAO+F,GAAAA,UAAAA,SAAmB/F,GACnBoG,OAAAA,EAAWC,UAAAA,EAAmBC,kBAAW,IAEA,EAAzCF,CAAAA,EAAWC,GAAAA,GAAAA,GAAAA,GAAAA,GAAmBC,IAAAA,QAAW1B,EAAAG,SJg8BlB,IAAfH,EAAMG,OAAeH,EAAMG,OAAS,KIz7BvD,IAAAH,EAAAG,OAAAH,EAAAG,OAAA,MJq8BYH,EAAME,kBACC,WEz9B3B9K,IAAIsC,QAAQ,aAAc,CAAC,QAAS,OAAQ,KACxC,SAAUwE,EAAOyF,EAAMxF,GAEvB,MAAO,CACHmB,QAAS,SAAUwB,EAAI8C,GACnB,IAAItB,EAAWnE,EAAGuE,QAkBlB,OAjBAxE,EAAM,CACF6B,OAAQ,MACRe,IAAKA,EACL+C,OAAO,EACPD,aAAcA,IACf/E,KAAK,SAAUC,GACdwD,EAASwB,QAAQhF,IAClB,SAAUW,GACTS,KAAKC,KACD,SACA,sKAEA,SAEJmC,EAASyB,OAAOtE,GAChBkE,EAAKlE,MAAMA,KAER6C,EAASC,SAEpByB,YAAa,SAAUlD,EAAKmD,GACxB,IAAI3B,EAAWnE,EAAGuE,QAWlB,OAVAxE,EAAM,CACF6B,OAAQ,MACRe,IAAKA,EAAMmD,EACXJ,OAAO,IACRhF,KAAK,SAAUC,GACdwD,EAASwB,QAAQhF,IAClB,SAAUW,GACT6C,EAASyB,OAAOtE,GAChBkE,EAAKlE,MAAMA,KAER6C,EAASC,SAEpBC,YAAa,SAAU1B,EAAKf,EAAQjB,GAChC,IAAIwD,EAAWnE,EAAGuE,QAiBlB,OAhBAxE,EAAM,CACF6B,OAAQA,EACRe,IAAKA,EACLhC,KAAMA,IACPD,KAAK,SAAUC,GACdwD,EAASwB,QAAQhF,IAClB,SAAUW,GACTS,KAAKC,KACD,SACA,sKAEA,SAEJmC,EAASyB,OAAOtE,GAChBkE,EAAKlE,MAAMA,KAER6C,EAASC,aCzD5BnL,IAAI4B,WAAW,mBAAoB,CAAC,SAAU,oBAAqB,kBAAmB,KAAM,aACxF,SAAUoE,EAAQ2F,EAAmBmB,EAAiB/F,EAAIE,GAE1DjB,EAAO8G,gBAAkBA,EAEzB9G,EAAO0F,OAAS,WAEZC,EAAkBoB,MAAM,SAAU/G,EAAO8G,kBAG7C9G,EAAO8F,OAAS,GAEC/E,EAAGkB,IAAI,CAEpBjC,EAAOgH,gBAEP/F,EAAWiB,QAAX,uCAA0DT,KAAK,SAAUC,GAElD,KAAfA,EAAKS,SAELnC,EAAO8F,OAASpE,EAAKA,KAAKU,OAK3BX,KAAK,cAIhBzB,EAAOiH,OAAS,WAEZtB,EAAkBuB,QAAQ,SAAUlH,EAAO8G,qBC/BnD9M,IAAI4B,WAAW,qBAAsB,CAAC,SAAU,eAAgB,UAAW,KAAM,aAC7E,SAAUoE,EAAQmH,EAAcvG,EAASG,EAAIE,GAE7CjB,EAAOoH,KAAO,GACdpH,EAAOoH,KAAKC,aAAeF,EAAaG,aAGxCtH,EAAO+F,gBAAkB,GACzB/F,EAAOgG,cAAgB,WACfhG,EAAO+F,iBAAmB/F,EAAOoH,KAAKG,YACtCvH,EAAOoG,WAAWC,mBAAmBC,UAAW,EAEhDtG,EAAOoG,WAAWC,mBAAmBC,UAAW,GAKpDa,EAAaG,cAEbrG,EAAWiB,QAAX,gDAAAqB,OAAmEvD,EAAOoH,KAAKC,eAAgB5F,KAAK,SAAUC,GAEvF,KAAfA,EAAKS,SACAT,EAAKA,KAAKU,EAAER,OAMjB5B,EAAOoH,KAAKlH,MAAQwB,EAAKA,KAAKU,EAAEoF,MAJ5B5G,EAAQjC,SAASC,KAAO,SASvBmC,EAAGkB,IAAI,IAExBjC,EAAOyH,OAAS,WASZ,IAEI/E,EAAW,CAAEgF,QAAS1H,EAAOoH,MAEjCpH,EAAOqB,YAHmB,qBADb,qCAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,iBCnDxC5E,IAAI4B,WAAW,WAAY,CAAC,SAAU,UAAW,KAAM,UAAW,aAC9D,SAAUoE,EAAQY,EAASG,EAAIF,EAASI,GAEpCjB,EAAO4H,YAAc,CACjBC,IAAK,GACLC,SAAU,GACVC,cAAe,GACfC,UAAW,GACXC,gBAAiB,IAErB,IAAIC,EAAU,IAAIC,KAClBD,EAAQE,YAAYF,EAAQG,cAAgB,IAC5CrI,EAAOsI,QAAUJ,EAAQK,cAAcC,MAAM,EAAG,IAChDxI,EAAOyI,gBAAkB,mBACzBzI,EAAO0I,sBAAwB,CAAC,oBAChC1I,EAAO2I,SAAW,GAClB3I,EAAO4I,gBAAiB,EACxB5I,EAAO6I,qBAAsB,EAE7B7I,EAAO8I,sBAAuB,EAC9B9I,EAAO+I,2BAA4B,EAEnC/I,EAAOgJ,mBAAqB,GAC5BhJ,EAAOiJ,qBAAuB,GAC9BjJ,EAAOkJ,oBAAsB,GAC7BlJ,EAAOmJ,sBAAwB,GAC/BnJ,EAAOoJ,wBAA0B,GACjCpJ,EAAOqJ,UAAW,EAElBrJ,EAAOsJ,gBAAkB,GACzBtJ,EAAOuJ,WAAa,GACpBvJ,EAAOwJ,aAAe,GACtBxJ,EAAOyJ,YAAc,GACrBzJ,EAAO0J,cAAgB,GACvB1J,EAAO2J,oBAAsB,GAC7B3J,EAAO4J,cAAgB,GACvB5J,EAAO6J,sBAAwB,GAC/B7J,EAAO8J,iBAAmB,GAC1B9J,EAAO+J,cAAgB,GACvB/J,EAAOgK,sBAAwB,GAE/BhK,EAAOiK,kBAAoB,WACnBjK,EAAO4H,YAAYsC,cAEnBjJ,EAAWiB,QAAX,6CAAAqB,OAAgEvD,EAAO4H,YAAYsC,eAAgBzI,KAAK,SAAUC,GAE3F,KAAfA,EAAKS,QAEc,MAAfT,EAAKA,KAAKU,KAENhI,EAAMsH,EAAKA,KAAKU,GACZ+H,KAAkB,GAAX/P,EAAI+P,KAEfnK,EAAOoK,QAAQC,QAAS,EACxBrK,EAAOqJ,UAAW,EAClBrJ,EAAOoK,QAAQE,YAAYhE,UAAW,EAElChF,EAAgBtB,EAAOsB,cAAclH,EAAIkI,OAC7CQ,KAAKC,KAAKzB,EAAcQ,QAASR,EAAc3G,MAAO,WAEtDqF,EAAOqJ,UAAW,EAClBrJ,EAAOoK,QAAQE,YAAYhE,UAAW,OAQ9DtG,EAAOuK,sBAAwB,WAEG,oBAA1BvK,EAAOyI,iBAEPzI,EAAO2I,SAAW,GAClB3I,EAAO4I,gBAAiB,EACxB5I,EAAO6I,qBAAsB,EAC7B7I,EAAO4H,YAAY4C,YAAc,IACjCxK,EAAO4H,YAAY6C,cAAgB,IACnCzK,EAAO4H,YAAY8C,QAAS,EAC5B1K,EAAO4H,YAAY+C,iBAAmB,IAAIxC,KAAK,KAAM,GAAI,KAE1B,oBAA1BnI,EAAOyI,kBAEZzI,EAAO2I,SAAW,EAClB3I,EAAO4I,gBAAiB,EACxB5I,EAAO6I,qBAAsB,EAC7B7I,EAAO4H,YAAY4C,YAAc,EACjCxK,EAAO4H,YAAY6C,cAAgB,EACnCzK,EAAO4H,YAAY8C,QAAS,EAC5B1K,EAAO4H,YAAY+C,iBAAmB,GACtC3K,EAAO4H,YAAYgD,WAAa,EAChC5K,EAAO4H,YAAYiD,gBAAkB,GACrC7K,EAAO4H,YAAYkD,gBAAkB,GACrC9K,EAAO4H,YAAYmD,SAAW,GAC9B/K,EAAO4H,YAAYoD,SAAW,GAC9BhL,EAAO4H,YAAYqD,cAAgB,GACnCjL,EAAOgJ,mBAAqB,KAMpChJ,EAAOkL,kBAAoB,SAAUC,EAAMC,EAAOC,EAAOzG,GACjDuG,EAAKG,gBAELtL,EAAO4H,YAAY4C,YAAcW,EAAKG,cACtCtL,EAAO4H,YAAY6C,cAAgBU,EAAKG,cACxCtL,EAAOkJ,oBAAsBiC,EAC7BnL,EAAOmJ,sBAAwBgC,IAIvCnL,EAAOuL,wBAA0B,SAAUJ,EAAMC,EAAOC,EAAOzG,GACvDuG,EAAKG,gBAELtL,EAAO4H,YAAY4D,kBAAoBL,EAAKG,cAC5CtL,EAAOyL,0BAA4BN,IAI3CnL,EAAO0L,oBAAsB,SAAUP,EAAMC,EAAOC,EAAOzG,GACnDuG,EAAKG,gBACLtL,EAAO4H,YAAY6C,cAAgBU,EAAKG,gBAIhDtL,EAAO2L,iBAAmB,SAAUR,EAAMC,EAAOC,EAAOzG,GACpD5E,EAAO4J,cAAgB,GACvB5J,EAAO+J,cAAgB,GAEnBoB,EAAKS,qBAEL5L,EAAO4H,YAAYgD,WAAaO,EAAKS,mBAErC3K,EAAWiB,QAAX,2DAAAqB,OAA8E4H,EAAKS,qBAAsBnK,KAAK,SAAUC,GAEjG,KAAfA,EAAKS,SAELnC,EAAO4J,cAAgBlI,EAAKA,KAAKU,EACjCpC,EAAO6L,uBAOvB7L,EAAO8L,mBAAqB,SAAUX,EAAMC,EAAOC,EAAOzG,GACtD5E,EAAO6J,sBAAwB,GAC/B7J,EAAOgK,sBAAwB,GAE3BmB,EAAKS,qBACL5L,EAAO4H,YAAYmE,aAAeZ,EAAKS,mBAEvC3K,EAAWiB,QAAX,2DAAAqB,OAA8E4H,EAAKS,qBAAsBnK,KAAK,SAAUC,GAEjG,KAAfA,EAAKS,SAELnC,EAAO6J,sBAAwBnI,EAAKA,KAAKU,EACzCpC,EAAO6L,uBAMvB7L,EAAO6L,gBAAkB,WAEjB7L,EAAO4H,YAAYiD,kBACnB7K,EAAO+J,cAAgBlJ,EAAQ,SAARA,CAAkBb,EAAO4J,cAAe,CAAEoC,UAAWhM,EAAO4H,YAAYiD,kBAAmB,KAG1H7K,EAAOiM,gBAAkB,WAErB,IAEQC,GAFJlM,EAAO4H,YAAYkD,kBAEfoB,EAAOrL,EAAQ,SAARA,CAAkBb,EAAO4J,cAAe,CAAEuC,UAAWnM,EAAO4H,YAAYkD,kBAAmB,MAElG9K,EAAO4H,YAAYwE,iBAAmBF,EAAK,GAAGG,aAK1DrM,EAAOsM,wBAA0B,WACzBtM,EAAO4H,YAAY2E,oBACnBvM,EAAOgK,sBAAwBnJ,EAAQ,SAARA,CAAkBb,EAAO6J,sBAAuB,CAAEmC,UAAWhM,EAAO4H,YAAY2E,oBAAqB,KAG5IvM,EAAOwM,wBAA0B,WAC7B,IACQN,GADJlM,EAAO4H,YAAY6E,oBACfP,EAAOrL,EAAQ,SAARA,CAAkBb,EAAO6J,sBAAuB,CAAEsC,UAAWnM,EAAO4H,YAAY6E,oBAAqB,MAE5GzM,EAAO4H,YAAY8E,mBAAqBR,EAAK,GAAGG,aAI5DrM,EAAO2M,WAAa,WACZ3M,EAAO4H,YAAY8C,QAEnB1K,EAAO4H,YAAY8E,mBAAqB1M,EAAO4H,YAAYwE,iBAC3DpM,EAAO4H,YAAYgF,gBAAkB5M,EAAO4H,YAAYqD,cACxDjL,EAAO4H,YAAYiF,WAAa7M,EAAO4H,YAAYmD,SACnD/K,EAAO4H,YAAYkF,WAAa9M,EAAO4H,YAAYoD,SACnDhL,EAAO4H,YAAY6E,kBAAoBzM,EAAO4H,YAAYkD,gBAC1D9K,EAAO4H,YAAY2E,kBAAoBvM,EAAO4H,YAAYiD,gBAC1D7K,EAAO4H,YAAYmE,aAAe/L,EAAO4H,YAAYgD,WACrD5K,EAAOiJ,qBAAuBjJ,EAAOgJ,qBAGrChJ,EAAO4H,YAAY8E,mBAAqB,GACxC1M,EAAO4H,YAAYgF,gBAAkB,GACrC5M,EAAO4H,YAAYiF,WAAa,GAChC7M,EAAO4H,YAAYkF,WAAa,GAChC9M,EAAO4H,YAAY6E,kBAAoB,GACvCzM,EAAO4H,YAAY2E,kBAAoB,GACvCvM,EAAO4H,YAAYmE,aAAe,EAClC/L,EAAOiJ,qBAAuB,KAItCjJ,EAAO+M,WAAa,SAAUnI,EAAOoI,GAEjC,GAAqB,IAAjBpI,EAAMqI,QAgBV,OAAO,EAdH,IAAIC,GAAc,EAClB,OAAQF,GAEJ,IAAK,SAAUhN,EAAO4H,YAAYgD,WAAa,GAAIsC,GAAc,EAC7D,MACJ,IAAK,WAAYlN,EAAO4H,YAAYmE,aAAe,GAAImB,GAAc,EACjE,MACJ,IAAK,iBAAkBlN,EAAO4H,YAAYuF,mBAAqB,GAAID,GAAc,EAKrF,OAAOA,GAKEnM,EAAGkB,IAAI,CACpBjC,EAAOyD,mBAEPxC,EAAWiB,QAAX,qCAAwDT,KAAK,SAAUC,GAEhD,KAAfA,EAAKS,SAELnC,EAAOsJ,gBAAkB5H,EAAKA,KAAKU,KAI3CnB,EAAWiB,QAAX,wCAA2DT,KAAK,SAAUC,GAEnD,KAAfA,EAAKS,SAELnC,EAAOoN,YAAc1L,EAAKA,KAAKU,KAIvCnB,EAAWiB,QAAX,0CAA6DT,KAAK,SAAUC,GAErD,KAAfA,EAAKS,SAELnC,EAAOqN,iBAAmB3L,EAAKA,KAAKU,KAI5CnB,EAAWiB,QAAX,oCAAuDT,KAAK,SAAUC,GAE/C,KAAfA,EAAKS,SAELnC,EAAOuJ,WAAa7H,EAAKA,KAAKU,EAC1BpC,EAAOuJ,aAEPvJ,EAAOwJ,aAAe3I,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,aAAc,GACxFtN,EAAOyJ,YAAc5I,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,kBAAmB,GAC5FtN,EAAO0J,cAAgB7I,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,gBAAiB,GAC5FtN,EAAO2J,oBAAsB9I,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,oBAAqB,SAO3G7L,KAAK,WAEZR,EAAWiB,QAAX,8BAAiDT,KAAK,SAAUC,GAEzC,KAAfA,EAAKS,QAEoB,MAArBT,EAAKA,KAAKU,EAAElC,QAEFwB,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYvE,MAAQ,EAEG,GAA1BrD,EAAO4H,YAAYC,MACnB7H,EAAO4H,YAAYC,IAAM,IAEM,GAA/B7H,EAAO4H,YAAYE,WACnB9H,EAAO4H,YAAYE,SAAW,IAEM,GAApC9H,EAAO4H,YAAYG,gBACnB/H,EAAO4H,YAAYG,cAAgB,IAEH,GAAhC/H,EAAO4H,YAAYI,YACnBhI,EAAO4H,YAAYI,UAAY,IAEO,GAAtChI,EAAO4H,YAAYK,kBACnBjI,EAAO4H,YAAYK,gBAAkB,IAErCvG,EAAKA,KAAKU,EAAEmL,YACZvN,EAAO4H,YAAY2F,UAAY,IAAIpF,KAAKzG,EAAKA,KAAKU,EAAEmL,YAGpD7L,EAAKA,KAAKU,EAAEoL,uBACZxN,EAAO4H,YAAY4F,qBAAuB,IAAIrF,KAAKzG,EAAKA,KAAKU,EAAEoL,uBAE/D9L,EAAKA,KAAKU,EAAEwI,aAEZ5K,EAAOgJ,mBAAqBnI,EAAQ,SAARA,CAAkBb,EAAOqN,iBAAkB,CAAEzB,mBAAoBlK,EAAKA,KAAKU,EAAEwI,aAAc,GAAM,GAE7H3J,EAAWiB,QAAX,2DAAAqB,OAA8E7B,EAAKA,KAAKU,EAAEwI,aAAcnJ,KAAK,SAAUC,GAEhG,KAAfA,EAAKS,SAELnC,EAAO4J,cAAgBlI,EAAKA,KAAKU,EAC7BpC,EAAO4J,gBACP5J,EAAO+J,cAAgBlJ,EAAQ,SAARA,CAAkBb,EAAO4J,cAAe,CAAEoC,UAAWhM,EAAO4H,YAAYiD,kBAAmB,QAK9HnJ,EAAKA,KAAKU,EAAE2J,eAEZ/L,EAAOiJ,qBAAuBpI,EAAQ,SAARA,CAAkBb,EAAOqN,iBAAkB,CAAEzB,mBAAoBlK,EAAKA,KAAKU,EAAE2J,eAAgB,GAAM,GAEjI9K,EAAWiB,QAAX,2DAAAqB,OAA8E7B,EAAKA,KAAKU,EAAE2J,eAAgBtK,KAAK,SAAUC,GAElG,KAAfA,EAAKS,SAELnC,EAAO6J,sBAAwBnI,EAAKA,KAAKU,EACrCpC,EAAO6J,wBACP7J,EAAOgK,sBAAwBnJ,EAAQ,SAARA,CAAkBb,EAAO6J,sBAAuB,CAAEmC,UAAWhM,EAAO4H,YAAY2E,oBAAqB,QAKhJ7K,EAAKA,KAAKU,EAAEoI,YAEmB,KAA3B9I,EAAKA,KAAKU,EAAEoI,aAEZxK,EAAO2I,SAAW,GAClB3I,EAAO4I,gBAAiB,EACxB5I,EAAO6I,qBAAsB,EAC7B7I,EAAO4H,YAAY4C,YAAc,IACjCxK,EAAO4H,YAAY6C,cAAgB,IACnCzK,EAAOyI,gBAAkBzI,EAAO0I,sBAAsB,GACtD1I,EAAO4H,YAAY+C,iBAAmB,IAAIxC,KAAK,KAAM,GAAI,MAGzDnI,EAAO2I,SAAW,EAClB3I,EAAO4I,gBAAiB,EACxB5I,EAAO6I,qBAAsB,EAC7B7I,EAAOyI,gBAAkBzI,EAAO0I,sBAAsB,GACtD1I,EAAOkJ,oBAAsBrI,EAAQ,SAARA,CAAkBb,EAAOsJ,gBAAiB,CAAEgC,cAAe5J,EAAKA,KAAKU,EAAEoI,cAAe,GAAM,GACzHxK,EAAOmJ,sBAAwBtI,EAAQ,SAARA,CAAkBb,EAAOoN,YAAa,CAAE9B,cAAe5J,EAAKA,KAAKU,EAAEqI,gBAAiB,GAAM,GAErH/I,EAAKA,KAAKU,EAAEuI,mBACZ3K,EAAO4H,YAAY+C,iBAAmB,IAAIxC,KAAKzG,EAAKA,KAAKU,EAAEuI,oBAGnE3K,EAAOuK,wBAKP7I,EAAKA,KAAKU,EAAEsI,QACZ1K,EAAO2M,aAEPrL,EAAgBtB,EAAOsB,cAAc,kCAEL,MAAhCtB,EAAOO,iBAAiBF,MACxByC,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM,+BACN6S,SAAU,2BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,IAKiB,MAAhC5N,EAAOO,iBAAiBF,MACxByC,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QACpB2L,SAAU,4BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,SAQnC5N,EAAO6N,YAAc,WAEb7N,EAAO4H,YAAY8C,SAEnB1K,EAAO4H,YAAY8E,mBAAqB1M,EAAO4H,YAAYwE,iBAC3DpM,EAAO4H,YAAYgF,gBAAkB5M,EAAO4H,YAAYqD,cACxDjL,EAAO4H,YAAYiF,WAAa7M,EAAO4H,YAAYmD,SACnD/K,EAAO4H,YAAYkF,WAAa9M,EAAO4H,YAAYoD,SACnDhL,EAAO4H,YAAY6E,kBAAoBzM,EAAO4H,YAAYkD,gBAC1D9K,EAAO4H,YAAY2E,kBAAoBvM,EAAO4H,YAAYiD,gBAC1D7K,EAAO4H,YAAYmE,aAAe/L,EAAO4H,YAAYgD,WACrD5K,EAAOiJ,qBAAuBjJ,EAAOgJ,oBAGrChJ,EAAO4H,YAAYkG,gBACnB9N,EAAO4H,YAAYkG,cAAgBC,OAAO/N,EAAO4H,YAAYkG,gBAc7D9N,EAAO4H,YAAY4C,cACnBxK,EAAO4H,YAAY4C,YAAcuD,OAAO/N,EAAO4H,YAAY4C,cAE3DxK,EAAO4H,YAAY6C,gBACnBzK,EAAO4H,YAAY6C,cAAgBsD,OAAO/N,EAAO4H,YAAY6C,gBAE7DzK,EAAO4H,YAAYgD,aACnB5K,EAAO4H,YAAYgD,WAAamD,OAAO/N,EAAO4H,YAAYgD,aAE1D5K,EAAO4H,YAAYmE,eACnB/L,EAAO4H,YAAYmE,aAAegC,OAAO/N,EAAO4H,YAAYmE,eAE5B,GAAhC/L,EAAO4H,YAAYI,YACnBhI,EAAO4H,YAAYoG,cAAgB,IAKnCC,EAFAvP,OAAOwP,UAAU1N,UAEN9B,OAAOwP,UAAU1N,UAAU,GAG3B9B,OAAOwP,UAAUC,cAAgBzP,OAAOwP,UAAUD,SAGjEjO,EAAO4H,YAAYwG,SAAWH,EAE9B,IAAII,EAAQxN,EAAQ,OAARA,CAAgB,IAAIsH,KAAKnI,EAAO4H,YAAY2F,WAAY,cAEhEvN,EAAO4H,YAAY2F,YAEnBvN,EAAO4H,YAAY0G,iBAAmBtO,EAAO4H,YAAY2F,UAAUgB,mBAAmB,SACtFvO,EAAO4H,YAAY4G,iBAAmBxO,EAAO4H,YAAY2F,UACzDvN,EAAO4H,YAAY6G,iBAAmBJ,IAI9CrO,EAAOyH,OAAS,WACZzH,EAAO6N,cAQP,IAEInL,EAAW,CAAEgM,QAAS1O,EAAO4H,aAEjC5H,EAAOqB,YAHmB,aADb,8BAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,2BAIpCoB,EAAO2O,gBAAkB,WAErB,IAAIC,EAAY5O,EAAOoK,QAAQyE,OAAOC,SAClCC,EAAa/O,EAAOoK,QAAQC,OAC5BvI,EAAU,GAGd,GAAI8M,EAAW,CACX,IAAK,IAAII,EAAI,EAAGA,EAAIJ,EAAUxP,OAAQ4P,IAElClN,EAAQ0D,KAAKoJ,EAAUI,GAAGC,OAGS,MAAnCjP,EAAO4H,YAAYsC,eACnBlK,EAAOqJ,UAAW,GAEc,MAAhCrJ,EAAO4H,YAAYsH,WACU,MAA1BlP,EAAOyI,iBACyB,MAAhCzI,EAAOmP,uBAC4B,MAAnCnP,EAAO4H,YAAYsC,cACc,MAAjClK,EAAO4H,YAAYwH,YACsB,MAAzCpP,EAAO4H,YAAYyH,oBACc,MAAjCrP,EAAO4H,YAAY0H,YACO,MAA1BtP,EAAO4H,YAAYC,KACc,MAAjC7H,EAAO4H,YAAY2H,YACa,MAAhCvP,EAAO4H,YAAY2F,WACY,MAA/BvN,EAAO4H,YAAYE,UACiB,MAApC9H,EAAO4H,YAAYG,eACa,MAAhC/H,EAAO4H,YAAYI,WACiB,MAApChI,EAAO4H,YAAYoG,eACmB,MAAtChO,EAAO4H,YAAYK,iBACsB,MAAzCjI,EAAO4H,YAAYoB,oBACmB,MAAtChJ,EAAO4H,YAAYiD,iBACmB,MAAtC7K,EAAO4H,YAAYkD,iBACY,MAA/B9K,EAAO4H,YAAYmD,UACY,MAA/B/K,EAAO4H,YAAYoD,UACoB,MAAvChL,EAAO4H,YAAYwE,kBACiB,MAApCpM,EAAO4H,YAAYqD,eACY,MAA/BjL,EAAOiJ,sBACiC,MAAxCjJ,EAAO4H,YAAY2E,mBACqB,MAAxCvM,EAAO4H,YAAY6E,mBACc,MAAjCzM,EAAO4H,YAAYiF,YACc,MAAjC7M,EAAO4H,YAAYkF,YACsB,MAAzC9M,EAAO4H,YAAY8E,oBACmB,MAAtC1M,EAAO4H,YAAYgF,iBAEtBrO,QAAQgB,IAAI,sBAKF,GAAdwP,IACAxQ,QAAQgB,IAAI,WAAauC,GAErBR,EAAgBtB,EAAOsB,cAAc,mBACzCwB,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QACpB2L,SAAU,2BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,SC1iB/B5T,IAAI4B,WAAW,YAAa,CAAC,SAAS,aAAa,QAAS,UAAW,KAAM,UAAW,aACpF,SAAUoE,EAAOvF,EAAWqG,EAAOF,EAASG,EAAIF,EAASI,GAEzDjB,EAAOwP,YAAc,CAAC,eAAgB,oBAAqB,iBAAkB,sBAC7ExP,EAAOyP,OAASzP,EAAOwP,YAAY,GACnCxP,EAAO0P,QAAU,GACjB1P,EAAO2P,UAAY,MACnB3P,EAAO4H,YAAc,GACrB5H,EAAO4P,YAAc,GACrB5P,EAAOmP,sBAAwB,mBAC/BnP,EAAO6P,4BAA8B,CAAC,mBAAoB,oBAC1D7P,EAAO8I,sBAAuB,EAC9B9I,EAAO8P,oBAAqB,EAE5B9P,EAAO+P,OAAS,CACZC,WAAY,GACZC,eAAgB,GAChBC,SAAU,GACVC,aAAc,GACdC,SAAU,GACVC,aAAc,IAGlBrQ,EAAOsQ,SAAW,CACdN,WAAY,GACZC,eAAgB,GAChBC,SAAU,GACVC,aAAc,GACdC,SAAU,GACVC,aAAc,IAGlBrQ,EAAOuQ,SAAW,CACdP,WAAY,GACZC,eAAgB,GAChBC,SAAU,GACVE,SAAU,IAGdpQ,EAAOwQ,aAAc,EACrBxQ,EAAOyQ,+BAAgC,EAEvCzQ,EAAO0Q,mBAAqB,GAC5B1Q,EAAO2Q,yBAA2B,GAElC3Q,EAAO4Q,SAAW,GAClB5Q,EAAO6Q,kBAAoB,GAC3B7Q,EAAO8Q,gBAAkB,GACzB9Q,EAAO+Q,cAAgB,GACvB/Q,EAAOuJ,WAAa,GACpBvJ,EAAOgR,eAAiB,GACxBhR,EAAOiR,iBAAmB,GAE1BjR,EAAOkR,oBAAsB,GAC7BlR,EAAOmR,0BAA4B,GACnCnR,EAAO+M,WAAa,SAAUnI,EAAOoI,GAEjC,OAAqB,IAAjBpI,EAAMqI,UAENjN,EAAO4H,YAAYmE,aAAe,IAC3B,IAIf/L,EAAOoR,WAAa,SAAUjG,EAAMC,EAAOC,EAAOzG,GAE1CuG,EAAKS,qBAEL5L,EAAO4H,YAAYyJ,kBAAoBlG,EAAKS,mBAC5C5L,EAAO4H,YAAY0J,YAAcnG,EAAKS,qBAI9C5L,EAAOuL,wBAA0B,SAAUJ,EAAMC,EAAOC,EAAOzG,GACvDuG,EAAKG,gBAELtL,EAAO4H,YAAY4D,kBAAoBL,EAAKG,cAC5CtL,EAAOyL,0BAA4BN,IAI3CnL,EAAOuR,4BAA8B,WAEG,oBAAhCvR,EAAOmP,uBAA+CnP,EAAOwR,iBAE7DxR,EAAO2I,SAAW,GAClB3I,EAAO8I,sBAAuB,EAC9B9I,EAAO+I,2BAA4B,EACnC/I,EAAO4H,YAAY4D,kBAAoB,IACvCxL,EAAO4H,YAAY6J,wBAA0B,IAAItJ,KAAK,KAAM,GAAI,KAE3B,oBAAhCnI,EAAOmP,wBAEZnP,EAAO2I,SAAW,EAClB3I,EAAO8I,sBAAuB,EAC9B9I,EAAO+I,2BAA4B,EACnC/I,EAAO4H,YAAY4D,kBAAoB,EACvCxL,EAAO4H,YAAY6J,wBAA0B,KAIrDzR,EAAO0R,kBAAoB,WAEvB1R,EAAO+P,OAAOC,WAAa,GAC3BhQ,EAAO+P,OAAOE,eAAiB,GAC/BjQ,EAAO+P,OAAOG,SAAW,GACzBlQ,EAAO+P,OAAOI,aAAe,GAC7BnQ,EAAO+P,OAAOK,SAAW,GACzBpQ,EAAO+P,OAAOM,aAAe,GAE7BrQ,EAAOsQ,SAASN,WAAa,GAC7BhQ,EAAOsQ,SAASL,eAAiB,GACjCjQ,EAAOsQ,SAASJ,SAAW,GAC3BlQ,EAAOsQ,SAASH,aAAe,GAC/BnQ,EAAOsQ,SAASF,SAAW,GAC3BpQ,EAAOsQ,SAASD,aAAe,GAE/BrQ,EAAO4H,YAAY+J,SAAW,GAC9B3R,EAAOwQ,aAAc,EAEiB,KAAlCxQ,EAAO4H,YAAYgK,aAAwD,GAAlC5R,EAAO4H,YAAYgK,cAE5D5R,EAAO4P,YAAc,oBACrB5P,EAAOwQ,aAAc,IAI7BxQ,EAAO6R,sBAAwB,SAAUC,GAEjCA,EAEA9R,EAAOwR,iBAAkB,GAErBO,GAAO,EAEP/R,EAAO+P,SAE6B,GAAhC/P,EAAO+P,OAAOC,WAAW7F,KAA4C,GAAhCnK,EAAO+P,OAAOC,WAAW7F,MAG9DnK,EAAOgS,iBADPD,GAAO,EAEP/R,EAAOiS,kBAAmB,IAI9BjS,EAAOsQ,WAEiC,GAApCtQ,EAAOsQ,SAAS4B,kBAA6D,GAApClS,EAAOsQ,SAAS4B,mBAGzDlS,EAAOgS,iBADPD,GAAO,EAEP/R,EAAOiS,kBAAmB,KAKU,EAAxCjS,EAAO0Q,mBAAmBvR,QAAQ,KAGlCa,EAAOgS,iBADPD,GAAO,EAEP/R,EAAOiS,kBAAmB,IAGc,EAAxCjS,EAAO0Q,mBAAmBvR,QAAQ,KAGlCa,EAAOiS,iBADPF,GAAO,EAEP/R,EAAOgS,kBAAmB,GAGzBD,IAED/R,EAAO4H,YAAYuK,kBAAoB,GACvCnS,EAAO4H,YAAYwK,qBAAuB,GAC1CpS,EAAO4H,YAAYyK,iBAAmB,GACtCrS,EAAO4H,YAAY0K,eAAiB,GACpCtS,EAAO4H,YAAY2K,uBAAyB,GAC5CvS,EAAO4H,YAAYyJ,kBAAoB,GACvCrR,EAAO4H,YAAY4K,wBAA0B,GAC7CxS,EAAO4H,YAAY6K,qBAAuB,GAC1CzS,EAAO4H,YAAY8K,iBAAmB,GAEtC1S,EAAOmR,0BAA4B,GACnCnR,EAAO2Q,yBAA2B,GAElC3Q,EAAOuQ,SAASP,WAAa,GAC7BhQ,EAAOuQ,SAASN,eAAiB,GACjCjQ,EAAOuQ,SAASL,SAAW,GAC3BlQ,EAAOuQ,SAASH,SAAW,IAG/BpQ,EAAOwR,gBAAkBO,IAIjC/R,EAAO2S,WAAa,WACuB,GAAnC3S,EAAO4H,YAAYgL,eACnB5S,EAAO4H,YAAY+K,WAAa3S,EAAO4H,YAAYsC,aACnDlK,EAAO8P,oBAAqB,IAIpC9P,EAAO6S,WAAa,WAEZ7S,EAAO4H,YAAY+K,aAES,IAAvB3S,EAAO4S,aAER5S,EAAO4H,YAAY+K,YAGnB3S,EAAO4H,YAAYkL,WACnB9S,EAAO4H,YAAY+K,WAAa,MAK5C3S,EAAO+S,qBAAuB,WAEtB/S,EAAO+P,OAAOC,aAEdhQ,EAAO+P,OAAOE,eAAiB,GAC/BjQ,EAAO+P,OAAOG,SAAW,EACzBlQ,EAAO+P,OAAOI,aAAe,GAC7BnQ,EAAO+P,OAAOK,SAAW,EACzBpQ,EAAO+P,OAAOM,aAAe,GAEO,GAAhCrQ,EAAO+P,OAAOC,WAAW7F,KAA4C,GAAhCnK,EAAO+P,OAAOC,WAAW7F,IAC9DnK,EAAO6R,uBAAsB,GAE7B7R,EAAO6R,wBAEX5Q,EAAWiB,QAAX,4CAAAqB,OAA+DvD,EAAO+P,OAAOC,WAAW7F,MAAO1I,KAAK,SAAUC,GAEvF,KAAfA,EAAKS,SAELnC,EAAO8Q,gBAAkBpP,EAAKA,KAAKU,EAE/BpC,EAAO8Q,gBAAgB1R,SACvBY,EAAO+P,OAAOI,aAAe,GAC7BnQ,EAAO+P,OAAOG,SAAWlQ,EAAO8Q,gBAAgB,GAEhD9Q,EAAOgT,2BAO3BhT,EAAOgT,mBAAqB,WAExB/R,EAAWiB,QAAX,8CAAAqB,OAAiEvD,EAAO+P,OAAOG,SAAS/F,IAAxF,eAAA5G,OAAyGvD,EAAO+P,OAAOC,WAAW7F,MAAO1I,KAAK,SAAUC,GAEjI,KAAfA,EAAKS,SAELnC,EAAO+Q,cAAgBrP,EAAKA,KAAKU,EAE7BpC,EAAO+Q,cAAc3R,SAErBY,EAAO+P,OAAOM,aAAe,GAC7BrQ,EAAO+P,OAAOK,SAAWpQ,EAAO+Q,cAAc,QAM9D/Q,EAAOiT,uBAAyB,WAExBjT,EAAOsQ,SAASN,aAEhBhQ,EAAOsQ,SAASL,eAAiB,GACjCjQ,EAAOsQ,SAASJ,SAAW,GAC3BlQ,EAAOsQ,SAASH,aAAe,GAC/BnQ,EAAOsQ,SAASF,SAAW,GAC3BpQ,EAAOsQ,SAASD,aAAe,GAEG,KAA9BrQ,EAAOsQ,SAASN,YAAmD,KAA9BhQ,EAAOsQ,SAASN,WACrDhQ,EAAO6R,uBAAsB,GAE7B7R,EAAO6R,0BAInB7R,EAAOkT,qBAAuB,SAAUC,GAEpC,IAAIC,EAAwBpT,EAAO0Q,mBAAmBvR,QAAQgU,EAAWjB,mBAE5C,EAAzBkB,EACApT,EAAO0Q,mBAAmB2C,OAAOD,EAAuB,GAExDpT,EAAO0Q,mBAAmBlL,KAAK2N,EAAWjB,kBAE1ClS,EAAO0Q,mBAAmBvR,QAAQ,GAAK,IACvCa,EAAO4H,YAAY0L,eAAiB,IAExCtT,EAAO6R,yBAGX7R,EAAOuT,2BAA6B,SAAUJ,GAE1CnT,EAAO4H,YAAY8K,iBAAmB,GACtC,IAAIU,EAAwBpT,EAAO2Q,yBAAyBxR,QAAQgU,EAAWjB,mBAElD,EAAzBkB,EACApT,EAAO2Q,yBAAyB0C,OAAOD,EAAuB,GAE9DpT,EAAO2Q,yBAAyBnL,KAAK2N,EAAWjB,kBAEhDlS,EAAO2Q,yBAAyBxR,QAAQ,GAAK,IAC7Ca,EAAO4H,YAAY4L,qBAAuB,KAGlDxT,EAAO6N,YAAc,WA6CjB,GA3CsC,KAAlC7N,EAAO4H,YAAYgK,aAAwD,GAAlC5R,EAAO4H,YAAYgK,aAE5D5R,EAAO4H,YAAY+J,SAAW3R,EAAO4P,YACrC5P,EAAO4H,YAAY6L,WAAazT,EAAO+P,OAAOC,WAAW7F,IACzDnK,EAAO4H,YAAY8L,eAAiB1T,EAAO+P,OAAOE,eAClDjQ,EAAO4H,YAAY+L,SAAW3T,EAAO+P,OAAOG,SAAS/F,IACrDnK,EAAO4H,YAAYgM,aAAe5T,EAAO+P,OAAOI,aAChDnQ,EAAO4H,YAAYiM,iBAAmB7T,EAAO+P,OAAOK,SAASjG,IAC7DnK,EAAO4H,YAAYkM,qBAAuB9T,EAAO+P,OAAOM,eAGxDrQ,EAAO4H,YAAY6L,WAAa1F,OAAO/N,EAAOsQ,SAASN,YACvDhQ,EAAO4H,YAAY+J,SAAW3R,EAAO4P,YACrC5P,EAAO4H,YAAY8L,eAAiB1T,EAAOsQ,SAASL,eACpDjQ,EAAO4H,YAAY+L,SAAW,EAC9B3T,EAAO4H,YAAYiM,iBAAmB,EAEJ,KAA9B7T,EAAOsQ,SAASN,YAEhBhQ,EAAO4H,YAAYgM,aAAe,GAClC5T,EAAO4H,YAAYkM,qBAAuB,KAG1C9T,EAAO4H,YAAYgM,aAAe5T,EAAOsQ,SAASH,aAClDnQ,EAAO4H,YAAYiM,iBAAmB,EACtC7T,EAAO4H,YAAYkM,qBAAuB9T,EAAOsQ,SAASD,eAI9DrQ,EAAOwR,iBAEPxR,EAAO4H,YAAYyK,iBAAmBtE,OAAO/N,EAAOuQ,SAASP,YAC7DhQ,EAAO4H,YAAYmM,qBAAuB/T,EAAO+T,qBACjD/T,EAAO4H,YAAY0K,eAAiBtS,EAAOuQ,SAASL,SACpDlQ,EAAO4H,YAAY2K,uBAA0BvS,EAAOuQ,SAASH,WAI7DpQ,EAAO4H,YAAYwK,qBAAuB,EAC1CpS,EAAO4H,YAAYyK,iBAAmB,EACtCrS,EAAO4H,YAAYyJ,kBAAoB,GAGvCrR,EAAO0Q,mBAAoB,CAE3B1Q,EAAO4H,YAAYoM,WAAa,GAEhC,IAAK,IAAIhF,EAAI,EAAGA,EAAIhP,EAAO0Q,mBAAmBtR,OAAQ4P,IAEP,EAAvChP,EAAO4H,YAAYoM,WAAW5U,SAC9BY,EAAO4H,YAAYoM,YAAc,KACrChU,EAAO4H,YAAYoM,YAAchU,EAAO0Q,mBAAmB1B,GAKnE,GAAIhP,EAAO2Q,yBAA0B,CAEjC3Q,EAAO4H,YAAY8K,iBAAmB,GAEtC,IAAS1D,EAAI,EAAGA,EAAIhP,EAAO2Q,yBAAyBvR,OAAQ4P,IAEP,EAA7ChP,EAAO4H,YAAY8K,iBAAiBtT,SACpCY,EAAO4H,YAAY8K,kBAAoB,KAC3C1S,EAAO4H,YAAY8K,kBAAoB1S,EAAO2Q,yBAAyB3B,KAMnFhP,EAAOyH,OAAS,WACZzH,EAAO6N,cAQP,IAEInL,EAAW,CAAEgM,QAAS1O,EAAO4H,aAEjC5H,EAAOqB,YAHmB,aADb,8BAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,EACA/G,EAAQjC,SAASC,KAAO,uBAExBkE,KAAKC,KAAK,SAAUrB,KAAKA,KAAKU,EAAE6R,SAAU,YAKtDjU,EAAOyH,OAAS,WACZzH,EAAO6N,cAGPpT,EAAWyZ,WAAW,WAAY,aAAc,wCAC/CzS,KAAK,SAACG,GACCA,EAAOU,QACP7H,EAAW0Z,iBAAiB,UAAW,aAAc,GAAI,GACzDrT,EAAM,CACF6B,OAAQ,OACRe,IAAK,8BACLhC,KACI,CACIgN,QAAS1O,EAAO4H,eAEzBnG,KAAK,SAAUC,GAEVA,EAAKA,KAAKU,EAAER,QACZkB,KAAKiE,QACLnG,EAAQjC,SAASC,KAAO,wBAGxBkE,KAAKC,KAAK,SAAUrB,EAAKA,KAAKU,EAAE6R,SAAU,UAE/C,SAAU5R,GACTS,KAAKC,KAAK,QAAS,uCAAwC,eAQ3E/C,EAAO2O,gBAAkB,WAErB,IA6BQrN,EA7B8B,MAAlCtB,EAAO4H,YAAYwM,YACmB,MAAnCpU,EAAO4H,YAAYgL,cACc,MAAjC5S,EAAO4H,YAAY+K,YACc,MAAjC3S,EAAO4H,YAAYkL,YACS,MAA5B9S,EAAO+P,OAAOC,YACgB,MAA9BhQ,EAAO+P,OAAOI,cACgB,MAA9BnQ,EAAO+P,OAAOM,cACqB,MAAlCrQ,EAAO4H,YAAYyM,aAAyD,IAAlCrU,EAAO4H,YAAYyM,aACzB,MAArCrU,EAAO4H,YAAY0M,gBACW,MAA9BtU,EAAOkR,qBACiC,MAAxClR,EAAO4H,YAAY2M,mBACE,MAArBvU,EAAOgU,YAC8B,MAArChU,EAAO4H,YAAY4M,gBACqB,MAAxCxU,EAAO4H,YAAY6M,mBAC0B,MAA7CzU,EAAO4H,YAAY8M,wBAC4B,MAA/C1U,EAAO4H,YAAY+M,0BACqB,MAAxC3U,EAAO4H,YAAYuK,mBACwB,MAA3CnS,EAAO4H,YAAYwK,sBACW,MAA9BpS,EAAOuQ,SAASP,YACY,MAA5BhQ,EAAOuQ,SAASL,UACoB,MAApClQ,EAAOmR,2BACuC,MAA9CnR,EAAO4H,YAAY4K,yBACwB,MAA3CxS,EAAO4H,YAAY6K,sBACiB,MAApCzS,EAAO0S,iBAAiBkC,UACmB,MAA3C5U,EAAO4H,YAAY4L,sBAKlBlS,EAAgBtB,EAAOsB,cAAc,mBAEzCwB,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QACpB2L,SAAU,2BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,KAXfrP,QAAQgB,IAAI,uBAgBHwB,EAAGkB,IAAI,CAElBhB,EAAWiB,QAAX,qCAAwDT,KAAK,SAAUC,GAEhD,KAAfA,EAAKS,SAELnC,EAAOsJ,gBAAkB5H,EAAKA,KAAKU,KAI7CnB,EAAWiB,QAAX,0CAA6DT,KAAK,SAAUC,GAErD,KAAfA,EAAKS,SAELnC,EAAOqN,iBAAmB3L,EAAKA,KAAKU,KAI5CnB,EAAWiB,QAAX,oCAAuDT,KAAK,SAAUC,GAE/C,KAAfA,EAAKS,SAELnC,EAAOuJ,WAAa7H,EAAKA,KAAKU,EAE1BpC,EAAOuJ,aAEPvJ,EAAOgR,eAAiBnQ,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,eAAgB,GAC5FtN,EAAOiR,iBAAmBpQ,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,mBAAoB,GAClGtN,EAAO6U,eAAiBhU,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,eAAgB,GAC5FtN,EAAO8U,mBAAqBjU,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,mBAAoB,OAKhHrM,EAAWiB,QAAX,kCAAqDT,KAAK,SAAUC,GAE7C,KAAfA,EAAKS,SAELnC,EAAO4Q,SAAWlP,EAAKA,KAAKU,KAIpCnB,EAAWiB,QAAX,uCAA0DT,KAAK,SAAUC,GAElD,KAAfA,EAAKS,SAELnC,EAAO6Q,kBAAoBnP,EAAKA,KAAKU,KAI7CnB,EAAWiB,QAAX,kCAAqDT,KAAK,SAAUC,GAE7C,KAAfA,EAAKS,SAELnC,EAAO+U,iBAAmBrT,EAAKA,KAAKU,KAI5CnB,EAAWiB,QAAX,sCAAyDT,KAAK,SAAUC,GAEjD,KAAfA,EAAKS,SAELnC,EAAOgV,eAAiBtT,EAAKA,KAAKU,OAKnCX,KAAK,WAEZR,EAAWiB,QAAX,8BAAiDT,KAAK,SAAUC,GAE5D,GAAmB,KAAfA,EAAKS,QAEc,MAAfT,EAAKA,KAAKU,EAAW,CAEXV,EAAKA,KAAKU,EA+GpB,GA9GApC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYvE,MAAQ,EACW,GAAlCrD,EAAO4H,YAAYgK,cAEnB5R,EAAO4H,YAAYgK,YAAc,IAGD,IAAhC5R,EAAO4H,YAAYqN,WAAoBjV,EAAO4H,YAAYqN,YAC1DjV,EAAO4H,YAAYqN,UAAYjV,EAAO4H,YAAYsH,WAEtDlP,EAAO4P,YAAc5P,EAAO4H,YAAY+J,SAEpC3R,EAAO4H,YAAYyJ,oBACnBrR,EAAOmR,0BAA4BtQ,EAAQ,SAARA,CAAkBb,EAAOqN,iBAAkB,CAAEzB,mBAAoB5L,EAAO4H,YAAYmE,eAAgB,GAAM,IAE7I/L,EAAO4H,YAAY0J,cACnBtR,EAAOkR,oBAAsBrQ,EAAQ,SAARA,CAAkBb,EAAOqN,iBAAkB,CAAEzB,mBAAoB5L,EAAO4H,YAAY0J,cAAe,GAAM,IAEtI5P,EAAKA,KAAKU,EAAEqP,0BACZzR,EAAO4H,YAAY6J,wBAA0B,IAAItJ,KAAKzG,EAAKA,KAAKU,EAAEqP,0BAElE/P,EAAKA,KAAKU,EAAE8S,kBACZlV,EAAO4H,YAAYsN,gBAAkB,IAAI/M,KAAKzG,EAAKA,KAAKU,EAAE8S,kBAG1DlV,EAAO4H,YAAYgK,cAEmB,KAAlC5R,EAAO4H,YAAYgK,aAAwD,GAAlC5R,EAAO4H,YAAYgK,aAE5D5R,EAAO+P,OAAOE,eAAiBjQ,EAAO4H,YAAY8L,eAClD1T,EAAO+P,OAAOI,aAAenQ,EAAO4H,YAAYgM,aAChD5T,EAAO+P,OAAOM,aAAerQ,EAAO4H,YAAYkM,qBAE5C9T,EAAO4H,YAAY6L,YAA8C,EAAhCzT,EAAO4H,YAAY6L,aAEpDzT,EAAO+P,OAAOC,WAAanP,EAAQ,SAARA,CAAkBb,EAAO6Q,kBAAmB,CAAE1G,IAAKnK,EAAO4H,YAAY6L,aAAc,GAAM,GAErHxS,EAAWiB,QAAX,4CAAAqB,OAA+DvD,EAAO+P,OAAOC,WAAW7F,MAAO1I,KAAK,SAAUC,GAEvF,KAAfA,EAAKS,SAELnC,EAAO8Q,gBAAkBpP,EAAKA,KAAKU,EAE/BpC,EAAO8Q,gBAAgB1R,QAEnBY,EAAO4H,YAAY+L,UAA0C,EAA9B3T,EAAO4H,YAAY+L,WAElD3T,EAAO+P,OAAOG,SAAWrP,EAAQ,SAARA,CAAkBb,EAAO8Q,gBAAiB,CAAE3G,IAAKnK,EAAO4H,YAAY+L,WAAY,GAAM,GAE/G1S,EAAWiB,QAAX,8CAAAqB,OAAiEvD,EAAO+P,OAAOG,SAAS/F,IAAxF,eAAA5G,OAAyGvD,EAAO+P,OAAOC,WAAW7F,MAAO1I,KAAK,SAAUC,GAEjI,KAAfA,EAAKS,SAELnC,EAAO+Q,cAAgBrP,EAAKA,KAAKU,EAE7BpC,EAAO+Q,cAAc3R,QAEsB,MAAvCY,EAAO4H,YAAYiM,mBACnB7T,EAAO+P,OAAOK,SAAWvP,EAAQ,SAARA,CAAkBb,EAAO+Q,cAAe,CAAE5G,IAAKnK,EAAO4H,YAAYiM,mBAAoB,GAAM,cAWzJ7T,EAAOsQ,SAASN,WAAahQ,EAAO4H,YAAY6L,WAChDzT,EAAOsQ,SAASL,eAAiBjQ,EAAO4H,YAAY8L,eACpD1T,EAAOsQ,SAASJ,SAAWlQ,EAAO4H,YAAY+L,SAC9C3T,EAAOsQ,SAASH,aAAenQ,EAAO4H,YAAYgM,aAClD5T,EAAOsQ,SAASF,SAAWpQ,EAAO4H,YAAYiM,iBAC9C7T,EAAOsQ,SAASD,aAAerQ,EAAO4H,YAAYkM,uBAKtDpS,EAAKA,KAAKU,EAAEoJ,kBAEyB,KAAjC9J,EAAKA,KAAKU,EAAEoJ,mBAEZxL,EAAO2I,SAAW,GAClB3I,EAAO8I,sBAAuB,EAC9B9I,EAAO6I,qBAAsB,EAC7B7I,EAAO4H,YAAY4D,kBAAoB,IACvCxL,EAAOmP,sBAAwBnP,EAAO6P,4BAA4B,GAClE7P,EAAO4H,YAAY6J,wBAA0B,IAAItJ,KAAK,KAAM,GAAI,MAGhEnI,EAAO2I,SAAW,EAClB3I,EAAO8I,sBAAuB,EAC9B9I,EAAO6I,qBAAsB,EAC7B7I,EAAOmP,sBAAwBnP,EAAO6P,4BAA4B,GAClE7P,EAAOyL,0BAA4B5K,EAAQ,SAARA,CAAkBb,EAAOsJ,gBAAiB,CAAEgC,cAAe5J,EAAKA,KAAKU,EAAEoJ,oBAAqB,GAAM,GAEjI9J,EAAKA,KAAKU,EAAEqP,0BACZzR,EAAO4H,YAAY6J,wBAA0B,IAAItJ,KAAKzG,EAAKA,KAAKU,EAAEqP,2BAG1EzR,EAAOuR,8BAGiC,GAAxCvR,EAAO4H,YAAYyJ,oBACnBrR,EAAO4H,YAAYyJ,kBAAoB,IAEL,GAAlCrR,EAAO4H,YAAY0J,cACnBtR,EAAO4H,YAAY0J,YAAc,IAEjCtR,EAAO4H,YAAYoM,WAAY,CAE/BhU,EAAO0Q,mBAAqB,GAG5B,IAFA,IAAIxE,EAAOlM,EAAO4H,YAAYoM,WAAWmB,MAAM,KAEtCnG,EAAI,EAAGA,EAAI9C,EAAK9M,OAAQ4P,IAE7BhP,EAAO0Q,mBAAmBlL,KAAKuI,OAAO7B,EAAK8C,KAGnD,GAAIhP,EAAO4H,YAAY8K,iBAAkB,CAErC1S,EAAO2Q,yBAA2B,GAGlC,IAFA,IAAIzE,EAAOlM,EAAO4H,YAAY8K,iBAAiByC,MAAM,KAE5CnG,EAAI,EAAGA,EAAI9C,EAAK9M,OAAQ4P,IAE7BhP,EAAO2Q,yBAAyBnL,KAAKuI,OAAO7B,EAAK8C,KAId,GAAvChP,EAAO4H,YAAYyK,mBACnBrS,EAAO4H,YAAYyK,iBAAmB,IAEK,GAA3CrS,EAAO4H,YAAYwK,uBACnBpS,EAAO4H,YAAYwK,qBAAuB,IAE9CpS,EAAO6R,wBACP7R,EAAOuQ,SAASP,WAAahQ,EAAO4H,YAAYyK,iBAChDrS,EAAOuQ,SAASN,eAAiBjQ,EAAO4H,YAAYmM,qBACpD/T,EAAOuQ,SAASL,SAAWlQ,EAAO4H,YAAY0K,eAC9CtS,EAAOuQ,SAASH,SAAWpQ,EAAO4H,YAAY2K,+BC7rBlEvY,IAAI4B,WAAW,YAAa,CAAC,SAAU,UAAW,KAAM,UAAW,aAAc,YAC7E,SAAUoE,EAAQY,EAASG,EAAIF,EAASI,EAAYmU,GAEpDpV,EAAO4H,YAAc,GACrB5H,EAAOqV,kBAAmB,EAC1BrV,EAAOsV,cAAe,EACtBtV,EAAOuV,cAAe,EACtBvV,EAAOwV,cAAe,EACtBxV,EAAOyV,cAAe,EAGtBzV,EAAO0V,uBAAyB,WACnB1V,EAAO2V,SAER3V,EAAO4V,iBAAkB,EACzB5V,EAAO6V,cAAc,KAIjC7V,EAAO6V,cAAgB,SAAUC,GAGTV,EACnBW,KAAK,CACFnI,WAAW,EACXjS,YAJW,2BAA6Bma,EAAS,QAKjDla,WAAY,mBACZoa,KAAM,KACNhb,SAAU,SACV0L,QAAS,CAELI,gBAAiB,WAEb,OAAOgP,MAKLlU,OAAOH,KAAK,SAAUwS,EAAUgC,GAE1B,UAAZhC,GAEc,GAAV6B,IAEA9V,EAAOkW,QAAS,EAChBlW,EAAO4V,iBAAkB,IAIlC,eAGU7U,EAAGkB,IAAI,CAEpBhB,EAAWiB,QAAX,oCAAuDT,KAAK,SAAUC,GAE/C,KAAfA,EAAKS,SAELnC,EAAOuJ,WAAa7H,EAAKA,KAAKU,EAE1BpC,EAAOuJ,aAEPvJ,EAAOmW,yBAA2BtV,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,yBAA0B,GAChHtN,EAAOoW,SAAWvV,EAAQ,SAARA,CAAkBb,EAAOuJ,WAAY,CAAE+D,YAAa,SAAU,OAK5FtN,EAAOyD,qBAGAhC,KAAK,WAEZR,EAAWiB,QAAX,8BAAiDT,KAAK,SAAUC,GAEzC,KAAfA,EAAKS,QAEc,MAAfT,EAAKA,KAAKU,IAEAV,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYvE,MAAQ,EAEM,MAA7BrD,EAAO4H,YAAYyO,QAA+C,MAA7BrW,EAAO4H,YAAY0O,QAA+C,MAA7BtW,EAAO4H,YAAY2O,SAC7FvW,EAAOqV,kBAAmB,GAEiB,GAA3CrV,EAAO4H,YAAY4O,uBACnBxW,EAAO4H,YAAY4O,qBAAuB,SAM9DxW,EAAO6N,YAAc,WAEb7N,EAAOsV,eAEHtV,EAAOsV,cAAe,EAEtBtV,EAAO4H,YAAY6O,UAAY,KAC/BzW,EAAO4H,YAAY8O,eAAiB,IAIxC1W,EAAOuV,eAEHvV,EAAOuV,cAAe,EAEtBvV,EAAO4H,YAAY+O,UAAY,KAC/B3W,EAAO4H,YAAYgP,eAAiB,IAIxC5W,EAAOwV,eAEHxV,EAAOsV,cAAe,EAEtBtV,EAAO4H,YAAYiP,UAAY,KAC/B7W,EAAO4H,YAAYkP,eAAiB,IAIxC9W,EAAOyV,eAEHzV,EAAOyV,cAAe,EAEtBzV,EAAO4H,YAAYmP,UAAY,KAC/B/W,EAAO4H,YAAYoP,eAAiB,IAIxChX,EAAOiX,eAEHjX,EAAOiX,cAAe,EAEtBjX,EAAO4H,YAAYsP,UAAY,KAC/BlX,EAAO4H,YAAYuP,eAAiB,IAIxCnX,EAAOoX,eAEHpX,EAAOoX,cAAe,EAEtBpX,EAAO4H,YAAYyP,UAAY,KAC/BrX,EAAO4H,YAAY0P,eAAiB,IAIxCtX,EAAOqV,mBAEHrV,EAAOqV,kBAAmB,EAE1BrV,EAAO4H,YAAYyO,OAAS,QAC5BrW,EAAO4H,YAAY0O,OAAS,QAC5BtW,EAAO4H,YAAY2O,OAAS,UAKxCvW,EAAOyH,OAAS,WACZzH,EAAO6N,cASP,IACInL,EAAW,CAAEgM,QAAS1O,EAAO4H,aAGjC5H,EAAOqB,YAFmB,aAFb,8BAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,4BAIpCoB,EAAO2O,gBAAkB,WAErB,IAqBQrN,EArByB,MAA7BtB,EAAO4H,YAAYyO,QACa,MAA7BrW,EAAO4H,YAAY0O,QACU,MAA7BtW,EAAO4H,YAAY2O,QACyB,MAA3CvW,EAAO4H,YAAY4O,sBAA2E,GAA3CxW,EAAO4H,YAAY4O,sBAC5C,MAA3BxW,EAAO4H,YAAY2P,MACa,MAAhCvX,EAAO4H,YAAY6O,WACkB,MAArCzW,EAAO4H,YAAY8O,gBACa,MAAhC1W,EAAO4H,YAAY+O,WACkB,MAArC3W,EAAO4H,YAAYgP,gBACa,MAAhC5W,EAAO4H,YAAYiP,WACkB,MAArC7W,EAAO4H,YAAYkP,gBACa,MAAhC9W,EAAO4H,YAAYmP,WACkB,MAArC/W,EAAO4H,YAAYoP,gBACa,MAAhChX,EAAO4H,YAAYsP,WACkB,MAArClX,EAAO4H,YAAYuP,gBACa,MAAhCnX,EAAO4H,YAAYyP,WACkB,MAArCrX,EAAO4H,YAAY0P,gBAKlBhW,EAAgBtB,EAAOsB,cAAc,mBAEzCwB,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QACpB2L,SAAU,2BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,KAXfrP,QAAQgB,IAAI,0BCzMxBvF,IAAI4B,WAAW,YAAa,CAAC,SAAU,aAAc,YAAa,KAAM,aAAa,UAAU,gBAAiB,mBAAmB,QAAQ,WAAW,iBAClJ,SAAUoE,EAAQvF,EAAY2a,EAAWrU,EAAIE,EAAYL,EAAS4W,EAAeC,EAAkB3W,EAAO4W,EAAUC,GAEpH3X,EAAO4X,WAAa,CAAC,OAAQ,QAAS,OAAQ,QAC9C5X,EAAOkW,QAAS,EAChBlW,EAAO6X,QAAS,EAChB7X,EAAO2V,QAAS,EAChB3V,EAAO8X,QAAS,EAChB9X,EAAO+X,OAASJ,EAEhB3X,EAAOgY,YAAc,GACrBhY,EAAOiY,QAAU,GACjBjY,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GAEjBnY,EAAOoY,aAAe,GACtBpY,EAAOqY,SAAW,GAClBrY,EAAOsY,YAAc,GACrBtY,EAAOuY,QAAU,GAEjBvY,EAAOwY,iBAAmB,GAC1BxY,EAAOyY,aAAe,GACtBzY,EAAO0Y,gBAAkB,GACzB1Y,EAAO2Y,aAAe,GAEtB3Y,EAAO4Y,oBAAsB,GAC7B5Y,EAAO6Y,gBAAkB,GACzB7Y,EAAO8Y,mBAAqB,GAC5B9Y,EAAO+Y,gBAAkB,GAEzB/Y,EAAOgZ,OAAS,GAEhBhZ,EAAOiZ,iBAAkB,EAEzBjZ,EAAOkZ,KAAO,WAEAtY,EAAQmV,KAAK,6DAA8D,UACjFoD,QACJnZ,EAAOoZ,gBAAiB,GAG5BpZ,EAAOqZ,WAAa,SAAUC,GAC1B,IAAIxX,EAAUwX,EAWMlE,EAAUW,KAAK,CAC/BnI,WAAW,EACXjS,YAZM,mBAaNC,WAZO,mBAaPoa,KAAM,KACNtP,QAAS,CACL6S,MAAO,WACH,OAAOzX,MAILF,OAAOH,KAAK,SAAU+X,GAChCjb,QAAQgB,IAAI,MAAMia,GACdA,IACY,OAARF,EACAtZ,EAAOyZ,SAAWD,EACL,QAARF,EACLtZ,EAAO0Z,UAAYF,EACN,UAARF,IACLtZ,EAAO2Z,YAAcH,GAIrBlY,EAAgBtB,EAAOsB,cAAc,YAElB,IAAnBtB,EAAO4Z,UACP9W,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QAEpB4L,SAAU,cACVC,YAAa,IACbC,WAAW,MAIxB,eAGP5N,EAAO6Z,OAAS,SAAUP,GACV,OAARA,EACAtZ,EAAOyZ,SAAW,GACL,UAARH,EACLtZ,EAAO2Z,YAAc,GACR,QAARL,IACLtZ,EAAO0Z,UAAY,KAK3B1Z,EAAO8Z,UAAY,SAAUC,GAEzB/Z,EAAOmY,QAAU4B,EACjB,IAAIC,GAAU,EACVC,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAUC,GAElBJ,IACAha,EAAOiY,QAAUoC,KAAKD,EAAEE,OAAO1Y,OAAO2Y,cAG9CN,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAOkY,WAAa6B,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MAE/Dza,EAAO4X,WAAWzY,QAAQa,EAAOkY,WAAWwC,eAAiB,GAE7DV,GAAU,EACVha,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GACjBwC,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAOgY,YAAc+B,EAAM,GAAGzZ,MAItCN,EAAO4a,WAAa,SAAUb,GAE1B/Z,EAAO6a,SAAWd,EAClB,IAAIC,GAAU,EACVC,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAUC,GAElBJ,IACAha,EAAOqY,SAAWgC,KAAKD,EAAEE,OAAO1Y,OAAO2Y,cAG/CN,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAOsY,YAAcyB,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MAEhEza,EAAO4X,WAAWzY,QAAQa,EAAOsY,YAAYoC,eAAiB,GAE9DV,GAAU,EACVha,EAAOsY,YAAc,GACrBtY,EAAO6a,SAAW,GAClBF,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAOoY,aAAe2B,EAAM,GAAGzZ,MAIvCN,EAAO8a,eAAiB,SAAUf,GAE9B/Z,EAAO2Y,aAAeoB,EACtB,IAAIC,GAAU,EACVC,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAUC,GAElBJ,IACAha,EAAOyY,aAAe4B,KAAKD,EAAEE,OAAO1Y,OAAO2Y,cAGnDN,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAO0Y,gBAAkBqB,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MAEpEza,EAAO4X,WAAWzY,QAAQa,EAAO0Y,gBAAgBgC,eAAiB,GAElEV,GAAU,EACVha,EAAO0Y,gBAAkB,GACzB1Y,EAAO2Y,aAAe,GACtBgC,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAOwY,iBAAmBuB,EAAM,GAAGzZ,MAI3CN,EAAO+a,kBAAoB,SAAUhB,GACjC/Z,EAAO+Y,gBAAkBgB,EACzB,IAAIC,GAAU,EACVC,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAUC,GAClBJ,IACAha,EAAO6Y,gBAAkBwB,KAAKD,EAAEE,OAAO1Y,OAAO2Y,cAItDN,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAO8Y,mBAAqBiB,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MACvEza,EAAO4X,WAAWzY,QAAQa,EAAO8Y,mBAAmB4B,eAAiB,GACrEV,GAAU,EACVha,EAAO8Y,mBAAqB,GAC5B9Y,EAAO+Y,gBAAkB,GACzB4B,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAO4Y,oBAAsBmB,EAAM,GAAGzZ,MAG9CN,EAAOgb,eAAiB,SAAUC,EAAMrW,EAAOuF,GAQ3C,OANAvF,EAAME,iBACN9E,EAAOiY,QAAU,GACjBjY,EAAOgY,YAAc,GACrBhY,EAAOkY,WAAa,IACpBlY,EAAOmY,QAAQ9E,OAAOlJ,EAAK,GAC3BnK,EAAOmY,QAAU,GACV,MAGXnY,EAAOkb,gBAAkB,SAAUD,EAAMrW,EAAOuF,GAQ5C,OANAvF,EAAME,iBACN9E,EAAOqY,SAAW,GAClBrY,EAAOoY,aAAe,GACtBpY,EAAOsY,YAAc,IACrBtY,EAAO6a,SAASxH,OAAOlJ,EAAK,GAC5BnK,EAAO6a,SAAW,GACX,MAGX7a,EAAOmb,oBAAsB,SAAUF,EAAMrW,EAAOuF,GAShD,OAPAvF,EAAME,iBACN9E,EAAOyY,aAAe,GACtBzY,EAAOwY,iBAAmB,GAC1BxY,EAAO0Y,gBAAkB,IACzB1Y,EAAO2Y,aAAatF,OAAOlJ,EAAK,GAChCnK,EAAO2Y,aAAe,GAEf,MAGX3Y,EAAOob,uBAAyB,SAAUH,EAAMrW,EAAOuF,GAOnD,OANAvF,EAAME,iBACN9E,EAAO6Y,gBAAkB,GACzB7Y,EAAO4Y,oBAAsB,GAC7B5Y,EAAO8Y,mBAAqB,IAC5B9Y,EAAO+Y,gBAAgB1F,OAAOlJ,EAAK,GACnCnK,EAAO+Y,gBAAkB,GAClB,MAIX/Y,EAAOqb,UAAY,WACf5gB,EAAWyZ,WAAW,WAAY,aAAc,4BAChDzS,KAAK,SAACG,GACCA,EAAOU,QACPtC,EAAOiZ,iBAAkB,EACzBjZ,EAAO4Y,oBAAsB,GAC7B5Y,EAAOgZ,OAAS,GAChBhZ,EAAOsb,YAKlBtb,EAAOub,aAAe,WAClBhd,QAAQgB,IAAI,aACZS,EAAOwb,UAAYxb,EAAO0F,SAC1B1F,EAAOgZ,OAAS,GACZhZ,EAAOwb,UAAUC,UAAYzb,EAAOwb,UAAUE,SAC9C1b,EAAOiZ,iBAAkB,EACzBjZ,EAAO4H,YAAY+T,gBAAkB3b,EAAOwb,UAAUC,QAAQvc,OAAOc,EAAOwb,UAAUC,QAAQhB,YAAY,KAAO,GACjHza,EAAO4Y,oBAAsB5Y,EAAO4H,YAAY+T,gBAChD3b,EAAOgZ,OAAS,0BAGhBhZ,EAAO4Y,oBAAsB,IAGrC5Y,EAAO4b,kBAAoB,WAEvB,IAgBYta,EAhB0B,GAAlCtB,EAAO4H,YAAYgK,cAEd5R,EAAOkW,QAAWlW,EAAO6X,SAEtBvW,EAAgBtB,EAAOsB,cAAc,eACzCtB,EAAO6b,gBAAiB,IAGvB7b,EAAOkW,QAAUlW,EAAO6X,SAErBvW,EAAgBtB,EAAOsB,cAAc,eACzCtB,EAAO6b,gBAAiB,GAGxB7b,EAAOkW,SAAWlW,EAAO6X,SAErBvW,EAAgBtB,EAAOsB,cAAc,eACzCtB,EAAO6b,gBAAiB,GAGxB7b,EAAOkW,QAAUlW,EAAO6X,QAAU7X,EAAO2V,OAEzC3V,EAAO6b,gBAAiB,EAG5BphB,EAAWqhB,YAAY,QAAS,GAAIxa,EAAc3G,SAI1DqF,EAAO+b,wBAA0B,WAES,GAAlC/b,EAAO4H,YAAYgK,cAEd5R,EAAOkW,SAERlW,EAAOgc,kBAAmB,EAC1Bhc,EAAO6V,cAAc,MAKjC7V,EAAOic,2BAA6B,WAEM,GAAlCjc,EAAO4H,YAAYgK,cAEd5R,EAAO6X,SAER7X,EAAOkc,qBAAsB,EAC7Blc,EAAO6V,cAAc,MAKjC7V,EAAOmc,2BAA6B,WAEM,GAAlCnc,EAAO4H,YAAYgK,cAEd5R,EAAO2V,SAER3V,EAAOoc,qBAAsB,EAC7Bpc,EAAO6V,cAAc,MAKjC7V,EAAOqc,6BAA+B,WAEI,GAAlCrc,EAAO4H,YAAYgK,cAEd5R,EAAO8X,SAER9X,EAAOsc,uBAAwB,EAC/Btc,EAAO6V,cAAc,MAKjC7V,EAAOuc,aAAe,CAElBza,QAAS,GACTgQ,MAAO,IAIX9R,EAAO6V,cAAgB,SAAUC,GAGTV,EACnBW,KAAK,CACFnI,WAAW,EACXjS,YAJW,yBAA2Bma,EAAS,QAK/Cla,WAAY,mBACZoa,KAAM,KACNhb,SAAU,SACV0L,QAAS,CAELI,gBAAiB,WAEb,OAAOgP,MAKLlU,OAAOH,KAAK,SAAUwS,EAAUgC,GAE1B,UAAZhC,IAEc,GAAV6B,IAEA9V,EAAOkW,QAAS,EAChBlW,EAAOgc,kBAAmB,GAGhB,GAAVlG,IAEA9V,EAAO6X,QAAS,EAChB7X,EAAOkc,qBAAsB,GAGnB,GAAVpG,IAEA9V,EAAO2V,QAAS,EAChB3V,EAAOoc,qBAAsB,GAGnB,GAAVtG,IAEA9V,EAAO8X,QAAS,EAChB9X,EAAOsc,uBAAwB,GAGJ,GAA3Btc,EAAOgc,kBAA0D,GAA9Bhc,EAAOkc,qBAA6D,GAA9Blc,EAAOoc,qBAA+D,GAAhCpc,EAAOsc,wBACtHtc,EAAO6b,gBAAiB,KAEjC,eAKU9a,EAAGkB,IAAI,CAChBjC,EAAOyD,qBAGJhC,KAAK,WAEZR,EAAWiB,QAAX,8BAAiDT,KAAK,SAAUC,GAEzC,KAAfA,EAAKS,QAEoB,MAArBT,EAAKA,KAAKU,EAAElC,QAEFwB,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYvE,MAAQ,EAC3BrD,EAAOgY,YAAchY,EAAO4H,YAAYuQ,QACxCnY,EAAOwY,iBAAmBxY,EAAO4H,YAAY4U,WAC7Cxc,EAAO4Y,oBAAsB5Y,EAAO4H,YAAY+T,gBAChD3b,EAAOoY,aAAepY,EAAO4H,YAAYiT,SAGrC7a,EAAOgY,cAEFhY,EAAOgY,YAAYyE,SAAS,SAC7B3b,EAAM,CACF6B,OAAQ,MACRe,IAAK,WAAa1D,EAAOgY,YACzBxR,aAAc,SAEf/E,KAAK,SAAUwS,GACd,IACQgG,EADJhG,EAASvS,QACLuY,EAAS,IAAIC,YACVwC,cAAczI,EAASvS,MAC9BuY,EAAO0C,UAAY,WACf3c,EAAOyZ,SAAWQ,EAAOrY,OACzB5B,EAAO4c,SAAU,KAM1B,SAAU3I,GACTjU,EAAO6c,YAAa,EACpB7c,EAAO8c,cAAgB,CACnBliB,KAAM,kDAEV8c,EAAS,WACL1X,EAAO6c,YAAa,GACrB,QAIX7c,EAAOoY,eAEFpY,EAAOoY,aAAaqE,SAAS,SAC9B3b,EAAM,CACF6B,OAAQ,MACRe,IAAK,WAAa1D,EAAOoY,aACzB5R,aAAc,SAEf/E,KAAK,SAAUwS,GACd,IACQ8I,EADJ9I,EAASvS,QACLqb,EAAU,IAAI7C,YACVwC,cAAczI,EAASvS,MAC/Bqb,EAAQJ,UAAY,WAChB3c,EAAO0Z,UAAYqD,EAAQnb,UAMpC,SAAUqS,GACTjU,EAAO6c,YAAa,EACpB7c,EAAO8c,cAAgB,CACnBliB,KAAM,kDAEV8c,EAAS,WACL1X,EAAO6c,YAAa,GACrB,QAIX7c,EAAOwY,mBAEFxY,EAAOwY,iBAAiBiE,SAAS,SAClC3b,EAAM,CACF6B,OAAQ,MACRe,IAAK,WAAa1D,EAAOwY,iBACzBhS,aAAc,SACf/E,KAAK,SAAUwS,GACd,IACQ8I,EADJ9I,EAASvS,QACLqb,EAAU,IAAI7C,YACVwC,cAAczI,EAASvS,MAC/Bqb,EAAQJ,UAAY,WAChB3c,EAAO2Z,YAAcoD,EAAQnb,UAMtC,SAAUqS,GACTjU,EAAO6c,YAAa,EACpB7c,EAAO8c,cAAgB,CACnBliB,KAAM,kDAEV8c,EAAS,WACL1X,EAAO6c,YAAa,GACrB,QAIX7c,EAAO4H,YAAY+T,iBACnB7a,EAAM,CACF6B,OAAQ,MACRe,IAAK,WAAa1D,EAAO4H,YAAY+T,gBACrCnV,aAAc,SAEf/E,KAAK,SAAUwS,GACdjU,EAAOgZ,OAAS,GAChB,IAAIiB,EAAS,IAAIC,WACjBD,EAAOyC,cAAczI,EAASvS,MAC9BuY,EAAO0C,UAAY,WACf3c,EAAO4Y,oBAAsBqB,EAAOrY,SAIzC,SAAUqS,GACTjU,EAAO6c,YAAa,EACpB7c,EAAO8c,cAAgB,CACnBliB,KAAM,kDAEV8c,EAAS,WACL1X,EAAO6c,YAAa,GACrB,OAM0B,GAAjC7c,EAAO4H,YAAY1E,aAEnBlD,EAAO6b,gBAAiB,EACxB7b,EAAOgc,kBAAmB,EAC1Bhc,EAAOkc,qBAAsB,EAC7Blc,EAAOgd,kBAAmB,EAC1Bhd,EAAOoc,qBAAsB,GAGjC7d,QAAQgB,IAAI,OAAQS,EAAOO,kBAES,MAAhCP,EAAOO,iBAAiBF,MACxByC,KAAKC,KAAK,CACNpI,MAAO,cACPC,KAAM,+BACN6S,SAAU,2BACVC,SAAU,QACVlQ,MAAO,QACPoQ,WAAW,IAKiB,MAAhC5N,EAAOO,iBAAiBF,MACxByC,KAAKC,KAAK,CACNpI,MAAO,cACPC,KAAM,iCACN6S,SAAU,4BACVC,SAAU,QACVlQ,MAAO,QACPoQ,WAAW,SAUnC5N,EAAOyH,OAAS,WACZlJ,QAAQgB,IAAI,MAAOS,EAAOyZ,UAEtBzZ,EAAOyZ,WACPzZ,EAAO4H,YAAYuQ,QAAUnY,EAAOyZ,SAAShU,QAAQ,yBAA0B,KAEnFlH,QAAQgB,IAAI,OAAQS,EAAO4H,YAAYuQ,SAEnCnY,EAAO0Z,YACP1Z,EAAO4H,YAAYiT,SAAW7a,EAAO0Z,UAAUjU,QAAQ,yBAA0B,KAgBrF,IACI/C,EAAW,CAAEgM,QAAS1O,EAAO4H,aAGjC5H,EAAOqB,YAFmB,aAFb,8BAImCqB,EADnC,OACqD,SAAUiF,GAGpE/G,EAAQjC,SAASC,KADjB+I,EACwB,cAUA,gBChoBxC3N,IAAI4B,WAAW,cAAe,CAAC,SAAU,aAAc,eAAgB,gBAAiB,iBACpF,YAAa,QAAS,UAAW,YAAa,WAAY,SAAU,KAAM,UAAW,SAAUoE,EAAQvF,EAAY0M,EAAc8V,EAAetF,EAChJvC,EAAWtU,EAAOF,EAASsc,EAAWxF,EAAUyF,EAAQpc,EAAIF,GAExDb,EAAOod,MAAQ,EACfpd,EAAO4H,YAAc,GACrB5H,EAAOyZ,SAAW,GAClBzZ,EAAO+X,OAASJ,EAChB3X,EAAOgZ,OAAS,GAEhBhZ,EAAOqd,QAAU,EAEjBrd,EAAOsd,QAAU,GAGjB7iB,EAAW8iB,aAAe,CACtBC,SAAU,WACN,OAAO9e,QAAUA,OAAO+e,WAAW,sBAAsBC,UAIjE1d,EAAO2d,WAAa,WAehB3d,EAAOqd,QAAU,EACD3F,EAAS1X,EAAO4d,UAAW,MAG/C5d,EAAO4d,UAAY,WACf5d,EAAOqd,UACc,EAAjBrd,EAAOqd,QACPQ,UAAYnG,EAAS1X,EAAO4d,UAAW,MAGvCrf,QAAQgB,IAAI,eAAgBS,EAAOod,OACnCpd,EAAO8d,WAAW,sBAO1B9d,EAAO+d,MAAQ,WACX/d,EAAOqd,QAAU,EACjBQ,UAAYnG,EAAS1X,EAAO4d,UAAW,MAK3C5d,EAAOge,UAAY,MACnBhe,EAAOyZ,SAAW,GAElBzZ,EAAOie,UAAY,CAGfC,YAAa,KACbC,aAAc,KACdC,MAAO,EACPC,MAAO,EACPC,UAAW,EACXC,iBAAkB,8BAClBC,WAAY,cACZC,qBAAsB,0CAG1Bze,EAAO0e,qBAAuB,SAAUC,GAepC,GAdApgB,QAAQgB,IAAI,kBAAmBS,EAAOod,OACtCpd,EAAOqd,QAAU,EAaG,GAAhBrd,EAAOod,MAAY,CACnB7e,QAAQgB,IAAI,4BACZS,EAAOqd,QAAU,EAEjBrd,EAAOsd,QAAU,GACjB,IAAK,IAAItO,EAAI,EAAGA,EAAI2P,EAAIvf,OAAQ4P,IAC5BhP,EAAOsd,QAAQ9X,KAAKmZ,EAAI3P,IAE5BhP,EAAOyH,WAcfzH,EAAO4e,UAAY,SAAUxgB,GACzBG,QAAQgB,IAAI,SAIhBS,EAAO6e,WAAa,SAAUzgB,GAO1B0E,KAAKC,KAAK,QAAS,2GAA4G,SAAStB,KAAK,WACzIb,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,WAErB5E,QAAQgB,IAAI,MAAOnB,IAGvB4B,EAAO8e,UAAY,WAEfvgB,QAAQgB,IAAI,SAGhBS,EAAO+e,WAAa,WAChB/e,EAAO8d,WAAW,qBAGtB9d,EAAOgf,MAAQ,WACXhf,EAAO8d,WAAW,gBAGtB9d,EAAOif,OAAS,WACZjf,EAAO8d,WAAW,gBAClB9d,EAAOkf,qBAAsB,GAGjClf,EAAOmf,UAAY,WACfnf,EAAOyZ,SAAW,IAMtBzZ,EAAOqZ,WAAa,WAChB,IACI3V,EAAM,mBACNyC,EAAO,mBAGPnG,EAAO+X,OAAOyF,aACd9Z,EAAM,mBACNyC,EAAO,mBACPnG,EAAOgZ,OAAS,0BAGA5D,EAAUW,KAAK,CAC/BnI,WAAW,EACXjS,YAAa+H,EACb9H,WAAYuK,EACZ6P,KAAM,KACNtP,QAAS,CACL6S,MAAO,WACH,MAlBE,UAsBA3X,OAAOH,KAAK,SAAU+X,GAE5BA,IACAxZ,EAAOyZ,SAAWD,IAEvB,eAGPxZ,EAAOmf,UAAY,WACfnf,EAAOyZ,SAAW,IAIlBzX,EAAajB,EAAGkB,IAAI,CACnBnB,EAAM,CACF6B,OAAQ,OACRe,IAAK,+CACNjC,KAAK,SAAUC,GACTA,EAAKA,KAAKU,EAYXpC,EAAO+D,YAAcrC,EAAKA,KAAKU,EAX/BtB,EAAM,CACF6B,OAAQ,MACRe,IAAK,+BACNjC,KAAK,SAAUC,GACK,GAAfA,EAAKA,KAAKU,IACVxB,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,WAEtB,SAAUd,OAIlB,SAAUA,QAQlBrC,EAAOof,YAAc,SAAUC,GAC3Brf,EAAOod,MAAQiC,EAEK,GAAhBrf,EAAOod,QACPpd,EAAO8d,WAAW,mBAClB9d,EAAOge,UAAY,QAoD3Bhc,EAAWP,KAAK,WAEZX,EAAM,CACF6B,OAAQ,MACRe,IAAK,8BACNjC,KAAK,SAAUC,GACK,MAAfA,EAAKA,KAAKU,IACAV,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYvE,MAAQ,IAGhC,SAAUhB,QAKjBrC,EAAOyH,OAAS,WACZhN,EAAW0Z,iBAAiB,UAAW,aAAc,GAAI,GACzDrT,EAAM,CACF6B,OAAQ,OACRe,IAAK,uCACLhC,KACA,CACI4d,UAAW,CACPhC,QAAStd,EAAOsd,YAIzB7b,KAAK,SAAUC,GACdoB,KAAKC,KAAK,UAAW,gFAAiF,WAAWtB,KAAK,WAClHb,EAAQjC,SAASC,KAAO,iBAG7B,SAAUyD,GACTS,KAAKC,KAAK,QAAS,uCAAyCV,EAAO,YAI3ErC,EAAOuf,OAAS,WACZze,EAAM,CACF6B,OAAQ,OACRe,IAAK,8BACNjC,KAAK,SAAUC,GACdnD,QAAQgB,IAAImC,GACO,GAAfA,EAAKA,KAAKU,IACVxB,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,WAEtB,SAAUd,UCtUzBrI,IAAI4B,WAAW,cAAe,CAAC,SAAU,aAAc,eAAgB,gBAAgB,iBACnF,YAAa,QAAS,UAAW,YAAa,WAAY,SAAU,KAAM,UAC1E,SAAUoE,EAAQvF,EAAY0M,EAAc8V,EAActF,EAC1DvC,EAAWtU,EAAOF,EAASsc,EAAWxF,EAAUyF,EAAQpc,EAAIF,GAE5Db,EAAO4H,YAAc,GACrB5H,EAAOyZ,SAAW,GAClBzZ,EAAO+X,OAASJ,EAChB3X,EAAOgZ,OAAS,GAChBhZ,EAAOwf,UAAW,EAQlBxf,EAAOqZ,WAAa,WAuBhBrZ,EAAOgZ,OAAS,yBAGI5D,EAAUW,KAAK,CAC/BnI,WAAW,EACXjS,YAdM,mBAeNC,WAdO,mBAePoa,KAAM,KACNtP,QAAS,CACL6S,MAAO,WACH,MApBE,UAwBA3X,OAAOH,KAAK,SAAU+X,GAE5BA,IACAxZ,EAAOyZ,SAAWD,EAElBjb,QAAQgB,IAAI,SAAUS,EAAOgZ,QAC7Bza,QAAQgB,IAAI,MAAOS,EAAOyZ,YAE/B,eAGPzZ,EAAOmf,UAAY,WACfnf,EAAOyZ,SAAW,GAClBzZ,EAAOwf,UAAW,GAILze,EAAGkB,IAAI,IAyBbR,KAAK,cAiBhBzB,EAAOyH,OAAS,SAAU0D,GAElBA,EAAKsU,QACDC,EAAQvU,EAAKsU,OAAOha,QAAQ,0BAA2B,IAC3DlH,QAAQgB,IAAI,aACZ9E,EAAW0Z,iBAAiB,UAAW,aAAc,GAAI,GACzDrT,EAAM,CACF6B,OAAQ,OACRe,IAAK,4BACLhC,KAAM,CACFie,SAAYD,KAEjBje,KAAK,SAAUC,GACdnD,QAAQgB,IAAI,YACZhE,KAAKwL,QACDrF,EAAKA,KAAKU,EAAER,OACZ5B,EAAO4f,cAAe,EACtBhf,EAAQjC,SAASC,KAAO,sBAQ7B,SAAUyD,GACT9G,KAAK,QAAS,uCAAyC8G,EAAO,YAIlE9G,KAAK,QAAS,4BAA6B,UAInDyE,EAAOuf,OAAS,WACZze,EAAM,CACF6B,OAAQ,OACRe,IAAK,8BACNjC,KAAK,SAAUC,GACdnD,QAAQgB,IAAImC,GACO,GAAfA,EAAKA,KAAKU,IACVxB,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,WAEtB,SAAUd,OAGjBrC,EAAO6f,MAAQ,WACX7f,EAAO6N,kBCjKf7T,IAAI4B,WAAW,mBAAA,CAAA,SAAA,eAAA,aAAA,gBAAA,QAAA,UAAA,YAAA,WAAA,SAAA,KAAA,aAAoB,SAAUoE,EAAQmH,EAAc1M,EAAYwiB,EAAenc,EAAOF,EAASsc,EAAWxF,EAAUyF,EAAQpc,EAAIL,GAC3IV,EAAO8f,KAAO,CACV5f,MAAO,IAGXF,EAAO+f,SAAW,WACdxhB,QAAQgB,IAAIS,EAAO8f,MACnBvhB,QAAQgB,IAAI,OAAQS,EAAO8f,KAAKE,OAChCzhB,QAAQgB,IAAI,QAASS,EAAO8f,KAAK5f,QAGjCiH,EAAa8Y,sBACbjgB,EAAO8f,KAAKG,sBAAwB9Y,EAAa8Y,uBAGjDrf,EAAQjC,SAASC,KAAO,aACxBgC,EAAQjC,SAASwE,UAGjBnB,EAAajB,EAAGkB,IAAI,CACnBnB,EAAM,CACF6B,OAAQ,MACRe,IAAK,kDAAoDhF,OAAOC,SAASC,KAAKM,OAAOR,OAAOC,SAASC,KAAK6b,YAAY,KAAO,KAC9HhZ,KAAK,SAAUC,GACd1B,EAAO4B,OAASF,EAAKA,KAAKU,EAC1B7D,QAAQgB,IAAI,SAAUS,EAAO4B,SAE9B,SAAUS,QAOlBrC,EAAOyH,OAAS,WACZzH,EAAO8f,KAAKI,IAAMlgB,EAAO8f,KAAKE,MAAQhgB,EAAO8f,KAAKK,MAAQngB,EAAO8f,KAAKM,MAAQpgB,EAAO8f,KAAKO,MAC1F9hB,QAAQgB,IAAI,OAAQS,EAAO8f,MAC3Bpf,EAAW,yBAAyBe,KAAK,SAAU6e,GAC/C7lB,EAAWyZ,WAAW,WAAY,aAAcoM,GAC/C7e,KAAK,SAACG,GACCA,EAAOU,QACP7H,EAAW0Z,iBAAiB,UAAW,aAAc,GAAI,GACzDrT,EAAM,CACF6B,OAAQ,OACRe,IAAK,mCACLhC,KAAM,CACF0F,KAAMpH,EAAO8f,QAElBre,KAAK,SAAUC,GAEVA,EAAKA,KAAKU,EAAER,OACZrG,KAAK,qBAAsBmG,EAAKA,KAAKU,EAAEN,QAAS,WAAWL,KAAK,WAC5Db,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,WAIrB5H,KAAK,6BAA8BmG,EAAKA,KAAKU,EAAEN,QAAS,SAE7D,SAAUO,YAO7BL,EAAWP,KAAK,iBClEpBzH,IAAI4B,WAAW,mBAAoB,CAAC,SAAU,oBAAqB,QAClE,gBAAiB,QAAS,UAAW,YAAa,WAAY,SAAU,KAAM,WAAY,aAAc,iBAAkB,YAC1H,SAAUoE,EAAQ2F,EAAmB4T,EAAO0D,EAAenc,EAAOF,EAASsc,EAAWxF,EAAUyF,EAAQpc,EAAIC,EAAUN,EAAYiX,EAAgB4I,GAE9IvgB,EAAOuZ,MAAQA,EACfvZ,EAAOge,UAAY,MACnBhe,EAAOyZ,SAAW,GAElBzZ,EAAO5F,IAAM,GAEb4F,EAAO+X,OAASJ,EAChB3X,EAAOwd,SAAWxd,EAAO+X,OAAOyF,WAChCxd,EAAOwgB,QAAS,EAEhBxgB,EAAOie,UAAY,CAKfG,MAAO,EACPC,MAAO,EACPC,UAAW,EACXC,iBAAkB,8BAClBC,WAAY,cACZC,qBAAsB,0CAG1Bze,EAAOygB,IAAI,iBAAkB,SAAUC,EAAI/B,EAAKgC,GAE5CpiB,QAAQgB,IAAI,aACZS,EAAO4gB,SAAWjC,IAItBpgB,QAAQgB,IAAIS,EAAO8d,WAAW,sBAE9B9d,EAAO6gB,UAAY,WACftiB,QAAQgB,IAAIS,EAAOge,WACK,OAApBhe,EAAOge,WACPzf,QAAQgB,IAAI,QACZS,EAAO8d,WAAW,mBAClB9d,EAAOge,UAAY,QAGnBzf,QAAQgB,IAAI,QACZS,EAAO8d,WAAW,mBAClB9d,EAAOge,UAAY,OAGvBzf,QAAQgB,IAAIS,EAAOge,YAGvBhe,EAAO0e,qBAAuB,SAAUC,GAEpC3e,EAAOyZ,SAAWkF,EAAI,GACtB,IAAImC,EAASjf,EAAE,WAAW,GAEtBkf,EAAS,CACbA,EAAW,GACXA,EAAW,IACXA,GAAY,IACZA,GAAY,IACZA,EAAW,IACXA,EAAW,KAEXD,EAAOtjB,MAAQ,KACfsjB,EAAO9jB,OAAS,IAKhB,IAAIgkB,EAAUF,EAAOriB,WAAW,MAE5BihB,EAAQ,IAAIuB,MAChBvB,EAAMvF,OAAS,WACX+G,WAAW,WACPF,EAAQphB,UAAU8f,EAAOqB,EAAO/iB,EAAG+iB,EAAOnkB,EAAGmkB,EAAOlkB,EAAGkkB,EAAO7jB,EAAG,EAAG,EAAG4jB,EAAOtjB,MAAOsjB,EAAO9jB,QAE5F,IAAImkB,EAAMtf,EAAE,WAAW,GAAG9C,UAAU,aAEpC4G,EAAkBoB,MAAMoa,IACzB,MAGPzB,EAAMf,IAAMA,EAAI,IAapB3e,EAAOmhB,IAAM,WAET,IAAIA,EAAMtf,EAAE,WAAW,GAAG9C,UAAU,aAEpCR,QAAQgB,IAAI,MAAO4hB,GACnBtf,EAAE,QAAQuf,IAAID,IAGlBnhB,EAAO6e,WAAa,SAAUzgB,GAG1B7C,KAAK,QAAS,8IAA+I,QAC7JoK,EAAkBuB,QAAQ,WAG9BlH,EAAO8e,UAAY,aAInB9e,EAAO+e,WAAa,WAEhBxgB,QAAQgB,IAAI,kBACZS,EAAO8d,WAAW,qBAGtB9d,EAAOgf,MAAQ,WACXzgB,QAAQgB,IAAI,kBAEZS,EAAO8d,WAAW,gBAGtB9d,EAAOif,OAAS,WACZjf,EAAO8d,WAAW,gBAClB9d,EAAOkf,qBAAsB,GAGjClf,EAAOmf,UAAY,WACfnf,EAAOyZ,SAAW,IAGtBzZ,EAAO4X,WAAa,CAAC,OAAQ,QAAS,OAAQ,QAG9C5X,EAAOgY,YAAc,GACrBhY,EAAOiY,QAAU,GACjBjY,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GAIjBnY,EAAO8Z,UAAY,SAAUC,GAEzB,IAGQC,EACAC,EAJW,EAAfF,EAAM3a,QACNb,QAAQgB,IAAI,QAASwa,GACrB/Z,EAAOmY,QAAU4B,EACbC,GAAU,GACVC,EAAS,IAAIC,YAEVC,OAAS,SAAUC,GAClBJ,IACAha,EAAOiY,QAAUoC,KAAKD,EAAEE,OAAO1Y,OAAO2Y,YACtC5U,EAAkBoB,MAAM/G,EAAOiY,WAGvC1Z,QAAQgB,IAAI,SAAUS,EAAOmY,SAC7B8B,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAOkY,WAAa6B,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MAE/Dza,EAAO4X,WAAWzY,QAAQa,EAAOkY,WAAWwC,eAAiB,GAC7DV,GAAU,EACVha,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GACjBwC,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAOgY,YAAc+B,EAAM,GAAGzZ,MAGlC/B,QAAQgB,IAAI,mBAIpBS,EAAOgb,eAAiB,SAAUC,EAAMrW,EAAOuF,GAO3C,OANAvF,EAAME,iBACN9E,EAAOiY,QAAU,GACjBjY,EAAOgY,YAAc,GACrBhY,EAAOkY,WAAa,IACpBlY,EAAOmY,QAAQ9E,OAAOlJ,EAAK,GAC3BnK,EAAOmY,QAAU,GACV,MAKXnY,EAAOqhB,GAAK,WACR1b,EAAkBoB,MAAM/G,EAAOmL,OAGnCnL,EAAOiH,OAAS,WACZtB,EAAkBuB,QAAQ,cASnClN,IAAI4B,WAAW,mBAAA,CAAA,SAAA,oBAAA,QAAA,gBAAA,QAAA,UAAA,YAAA,WAAA,SAAA,KAAA,WAAA,aAAoB,SAAUoE,EAAQ2F,EAAmB4T,EAAO0D,EAAenc,EAAOF,EAASsc,EAAWxF,EAAUyF,EAAQpc,EAAIC,EAAUN,GAErJV,EAAOuZ,MAAQA,EACfvZ,EAAO4X,WAAa,CAAC,OAAQ,QAAS,OAAQ,QAG9C5X,EAAOgY,YAAc,GACrBhY,EAAOiY,QAAU,GACjBjY,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GAIjBnY,EAAO8Z,UAAY,SAAUC,GAEzB,IAGQC,EACAC,EAJW,EAAfF,EAAM3a,QACNb,QAAQgB,IAAI,QAASwa,GACrB/Z,EAAOmY,QAAU4B,EACbC,GAAU,GACVC,EAAS,IAAIC,YAEVC,OAAS,SAAUC,GAClBJ,IACAha,EAAOiY,QAAUoC,KAAKD,EAAEE,OAAO1Y,OAAO2Y,YACtC5U,EAAkBoB,MAAM/G,EAAOiY,WAGvC1Z,QAAQgB,IAAI,SAAUS,EAAOmY,SAC7B8B,EAAOO,mBAAmBT,EAAM,IAChC/Z,EAAOkY,WAAa6B,EAAM,GAAGzZ,KAAKpB,OAAO6a,EAAM,GAAGzZ,KAAKma,YAAY,MAE/Dza,EAAO4X,WAAWzY,QAAQa,EAAOkY,WAAWwC,eAAiB,GAC7DV,GAAU,EACVha,EAAOkY,WAAa,GACpBlY,EAAOmY,QAAU,GACjBwC,MAAM,6BAA+B3a,EAAO4X,aAG5C5X,EAAOgY,YAAc+B,EAAM,GAAGzZ,MAGlC/B,QAAQgB,IAAI,mBAIpBS,EAAOgb,eAAiB,SAAUC,EAAMrW,EAAOuF,GAO3C,OANAvF,EAAME,iBACN9E,EAAOiY,QAAU,GACjBjY,EAAOgY,YAAc,GACrBhY,EAAOkY,WAAa,IACpBlY,EAAOmY,QAAQ9E,OAAOlJ,EAAK,GAC3BnK,EAAOmY,QAAU,GACV,SCjQfne,IAAI4B,WAAW,oBAAqB,CAAC,SAAU,QAAS,UAAW,WAAY,KAAM,aACjF,SAAUoE,EAAQc,EAAOF,EAAS8W,EAAU3W,EAAIE,GAEhDjB,EAAO4H,YAAc,GACrB5H,EAAOshB,KAAO,GAEdthB,EAAOuhB,YAAc,WAEjB3gB,EAAQjC,SAASC,KAAO,aAG5BoB,EAAOwhB,UAAY,CAAC,GAAI,OAAQ,OAAQ,OAAQ,QAEhDxhB,EAAOyhB,OAAS,iBAEhBzhB,EAAO0hB,QAAU,GACjB1hB,EAAO2hB,OAAS,GAChB3hB,EAAO4hB,UAAY,GACnB5hB,EAAOqV,iBAAmB,EAETtU,EAAGkB,IAAI,CAEpBjC,EAAOyD,qBAGAhC,KAAK,WAEZR,EAAWiB,QAAX,oCAAuDT,KAAK,SAAUC,GAE/C,KAAfA,EAAKS,QAEc,MAAfT,EAAKA,KAAKU,IAEAV,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAE3BpC,EAAO4H,YAAYia,SACnB7hB,EAAOwhB,UAAU,GAAK,kBAEtBxhB,EAAO4H,YAAYka,SACnB9hB,EAAOwhB,UAAU,GAAK,kBAEtBxhB,EAAO4H,YAAYma,SACnB/hB,EAAOwhB,UAAU,GAAK,kBAEtBxhB,EAAO4H,YAAYoa,SACnBhiB,EAAOwhB,UAAU,GAAK,kBAEW,GAAjCxhB,EAAO4H,YAAY1E,aACnBlD,EAAOshB,KAAO,YAEkB,GAAhCthB,EAAO4H,YAAY9D,YACnB9D,EAAOshB,KAAO,gBAMlCthB,EAAOC,MAAQ,WACXW,EAAQjC,SAASC,KAAO,yBC3DhC5E,IAAI4B,WAAW,cAAe,CAAC,SAAU,UAAW,KAAM,aACtD,SAAUoE,EAAQY,EAASG,EAAIE,GAC/BjB,EAAOwhB,UAAY,CAAC,GAAG,GAAI,GAAI,GAAI,IACnCxhB,EAAOiiB,WAAa,iBACpBjiB,EAAOkiB,QAAU,EAEAnhB,EAAGkB,IAAI,CACpBhB,EAAWmE,YAAX,sCAA8D,QAAQ3D,KAAK,SAAUC,GAE9D,KAAfA,EAAKS,SAEAT,EAAKA,KAAKU,EAKXpC,EAAO+D,YAAcrC,EAAKA,KAAKU,EAH/BpC,EAAOoB,eAQZK,KAAK,WAEZ,IAAI,IAAIuN,EAAE,EAAEA,EAAE,EAAEA,IAERA,GAAKhP,EAAO+D,YAAYV,QACxBrD,EAAOwhB,UAAUxS,GAAK,QAG9B,OAAQpO,EAAQjC,SAASwjB,MACrB,IAAK,qBAAsBniB,EAAOkiB,QAAU,EAAGliB,EAAOwhB,UAAU,GAAKxhB,EAAOiiB,WAAY,MACxF,IAAK,uBAAwBjiB,EAAOkiB,QAAU,EAAGliB,EAAOwhB,UAAU,GAAKxhB,EAAOiiB,WAAY,MAC1F,IAAK,uBAAwBjiB,EAAOkiB,QAAU,EAAGliB,EAAOwhB,UAAU,GAAKxhB,EAAOiiB,WAAY,MAC1F,IAAK,wBAAyBjiB,EAAOkiB,QAAU,EAAGliB,EAAOwhB,UAAU,GAAKxhB,EAAOiiB,cAKvFjiB,EAAOoiB,SAAW,SAAUC,GACxB,GAAIA,GAAQriB,EAAO+D,YAAYV,MAC/B,CACI,IAAIie,EAAO,qBAEX,OAAQe,GACJ,KAAK,EAAGf,EAAO,qBAAsB,MACrC,KAAK,EAAGA,EAAO,uBAAwB,MACvC,KAAK,EAAGA,EAAO,uBAAwB,MACvC,KAAK,EAAGA,EAAO,wBAEnB1gB,EAAQjC,SAASC,KAAO0iB,EACxB1gB,EAAQjC,SAASwE,cClD7BnJ,IAAI4B,WAAW,kBAAmB,CAAC,SAAU,QAAS,UAAW,KAAM,aACnE,SAAUoE,EAAQc,EAAOF,EAASG,EAAIE,GAEtCjB,EAAO4H,YAAc,GACrB5H,EAAOqV,iBAAmB,EAE1BrV,EAAOsiB,KAAO,WACV1hB,EAAQjC,SAASC,KAAO,eAEXmC,EAAGkB,IAAI,CACpBjC,EAAOyD,qBAIAhC,KAAK,WAEZR,EAAWiB,QAAX,oCAAuDT,KAAK,SAAUC,GAE/C,KAAfA,EAAKS,QAEc,MAAfT,EAAKA,KAAKU,IAEAV,EAAKA,KAAKU,EACpBpC,EAAO4H,YAAclG,EAAKA,KAAKU,EAC/BpC,EAAO4H,YAAYgK,YAAc,oBACjC5R,EAAOgY,YAAchY,EAAO4H,YAAYuQ,QACxCnY,EAAOwY,iBAAmBxY,EAAO4H,YAAY4U,WAC7Cxc,EAAO4Y,oBAAsB5Y,EAAO4H,YAAY+T,gBAChD3b,EAAOuiB,aAAe7gB,EAAKA,KAAKU,EAAEmgB,aAElChkB,QAAQgB,IAAIS,EAAO4H,YAAYiT,UAE/B7a,EAAOwiB,QAAU,GACkB,KAA/BxiB,EAAO4H,YAAYuQ,SACnBnY,EAAOwiB,QAAQhd,KAAK,CAAEid,SAAS,EAAO/e,IAAK,YAAc1D,EAAO4H,YAAYuQ,QAAU,cAAgBhQ,KAAKua,MAAOC,KAAM,MAAOtX,MAAO,QAEpG,KAAlCrL,EAAO4H,YAAY4U,YACnBxc,EAAOwiB,QAAQhd,KAAK,CAAEid,SAAS,EAAO/e,IAAK,YAAc1D,EAAO4H,YAAY4U,WAAa,cAAgBrU,KAAKua,MAAOC,KAAM,WAAYtX,MAAO,0BAEvG,KAAvCrL,EAAO4H,YAAY+T,iBACnB3b,EAAOwiB,QAAQhd,KAAK,CAAEid,SAAS,EAAO/e,IAAK,YAAc1D,EAAO4H,YAAY+T,gBAAkB,cAAgBxT,KAAKua,MAAOC,KAAM,cAAetX,MAAO,yBAEtH,KAAhCrL,EAAO4H,YAAYiT,UACnB7a,EAAOwiB,QAAQhd,KAAK,CAAEid,SAAS,EAAO/e,IAAK,YAAc1D,EAAO4H,YAAYiT,SAAW,cAAgB1S,KAAKua,MAAOC,KAAM,OAAQtX,MAAO,iBAExIrL,EAAO4H,YAAYC,MACW,QAA1B7H,EAAO4H,YAAYC,MACnB7H,EAAO0hB,QAAU,8BAGS,UAA1B1hB,EAAO4H,YAAYC,MACnB7H,EAAO0hB,QAAU,kCAIQ,SAA7B1hB,EAAO4H,YAAYyO,QAAkD,SAA7BrW,EAAO4H,YAAY0O,QAAkD,SAA7BtW,EAAO4H,YAAY2O,SACnGvW,EAAOqV,iBAAmB,GAGO,GAAjCrV,EAAO4H,YAAY1E,aACnBlD,EAAOyhB,OAAS,qBAOhCzhB,EAAO4iB,eAAgB,OCnE/B5oB,IAAI4B,WAAW,qBAAsB,CAAC,SAAU,QAAS,UAAW,KAChE,SAAUoE,EAAQc,EAAOF,EAASG,GAElCf,EAAO6iB,WAAa,GAEpB7iB,EAAO8iB,QAAU,GAEjB9iB,EAAOsiB,KAAO,WACV1hB,EAAQjC,SAASC,KAAO,eAG5BoB,EAAOyH,OAAS,WASZ,IAEI/E,EAAW,CAAEqgB,WAAY/iB,EAAO6iB,YAEpC7iB,EAAOqB,YAHmB,qBADb,sCAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,iBC3BxC5E,IAAI4B,WAAW,YAAa,CAAC,SAAU,aAAc,UAAW,QAAS,KAAM,aAC3E,SAAUoE,EAAQvF,EAAYmG,EAASE,EAAOC,EAAIE,GAEjCF,EAAGkB,IAAI,CAGpBjC,EAAOwD,eAIA/B,KAAK,cAIhBzB,EAAO8f,KAAO,GAGd9f,EAAOgjB,cAAe,EACtBhjB,EAAOijB,UAAY,WACnBjjB,EAAOkjB,mBAAqB,WACxBljB,EAAOgjB,cAAgBhjB,EAAOgjB,aACN,YAApBhjB,EAAOijB,UACPjjB,EAAOijB,UAAY,OAEnBjjB,EAAOijB,UAAY,YAI3BjjB,EAAOyH,OAAS,WAEZxG,EAAWmE,YAAX,gCAEI,OACA,CAAE+d,UAAWnjB,EAAO8f,OACtBre,KAAK,SAAUC,GAEb,GAAmB,KAAfA,EAAKS,OAAe,CAEpBnC,EAAO4B,OAASF,EAAKA,KAAKU,EAEtBd,EAAgBtB,EAAOsB,cAActB,EAAO4B,OAAOE,SAGvD,OAAI9B,EAAO4B,OAAOA,QAEdrD,QAAQgB,IAAIS,EAAO4B,aAEnB5B,EAAOgD,eAAehD,EAAO4B,SAKJ,gBAAzB5B,EAAO4B,OAAOE,SAEdrH,EAAW2oB,gBAAgB,UAAW9hB,EAAc3G,MAAO2G,EAAcQ,QACrE,6BAA+BR,EAAc2C,OAA7C,eAAsE,QAE1EpC,EAAE,cAAcwhB,GAAG,QAAS,WASxB,IAAI5gB,EAAS,wCAA0CzC,EAAO8f,KAAK5f,MAInEF,EAAOqB,YAHmB,uBAGcoB,EAFzB,GACF,MACqD,SAAUkF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,qBAOxCnE,EAAWqhB,YAAY,UAAWxa,EAAc3G,MAAO2G,EAAcQ,QAAS,UhBnE9F,SAAU7H,GAGNA,EAAQC,OAAO,UAAW,IAEzBopB,SAAS,aAAcpJ,YAEvBoJ,SAAS,wBAAyB,CAC/BC,WAAY,IACZC,YAAa,IACbC,gBAAiB,CAACjmB,MAAS,QAASR,OAAU,QAAS0mB,SAAY,SAAUC,cAAe,OAC5FC,UAAW,SACXC,MAAO,CACHC,YAAa,EACbC,SAAU,IACVC,UAAW,OAIlBV,SAAS,kBACN,+OAUHW,SAAS,gBAAiB,CAAC,wBAAyB,kBAAmB,SAASC,EAAuBC,GAEpG,IAAIC,EAAW,GAGf,SAASC,EAAW/jB,GAWhB,OATIA,EADgB,WAAhBnG,QAAOmG,GACA,UAGLA,KAAQ8jB,IAEVA,EAAS9jB,GAAQrG,EAAQqqB,KAAKJ,GAC9BE,EAAS9jB,GAAMikB,SAAWJ,GAGvBC,EAAS9jB,GAMpB,OAFA+jB,EAAW,WAEJ,CACHG,UAAW,SAASlkB,EAAMmkB,GACtB,IAAIC,EAASL,EAAW/jB,GACxBrG,EAAQ0qB,OAAOD,EAAwB,WAAhBvqB,QAAOmG,GAAoBA,EAAOmkB,IAE7DG,eAAgB,SAAStkB,EAAMmkB,GAC3B,IAAIC,EAASL,EAAW/jB,GACxBrG,EAAQ0qB,OAAOD,EAAOb,MAAuB,WAAhB1pB,QAAOmG,GAAoBA,EAAOmkB,IAEnEI,gBAAiB,SAASvkB,EAAMwkB,GAC5B,IAAIJ,EAASL,EAAW/jB,GACxBrG,EAAQ0qB,OAAOD,EAAOjB,gBAAiC,WAAhBtpB,QAAOmG,GAAoBA,EAAOwkB,IAE7EC,KAAM,WACF,OAAOX,OAMlBY,IAAI,CAAC,UAAW,SAASpkB,GACtB,IAAKA,EAAQqkB,OACT,MAAM,IAAIC,MAAM,yBAGpB,IAAKtkB,EAAQqkB,OAAOE,MAChB,MAAM,IAAID,MAAM,2BAIvB1gB,UAAU,UAAW,CAAC,gBAAiB,SAAS4gB,GAG7C,MAAO,CACHzgB,SAAU,IACVkB,MAAO,CAAEwf,QAAS,IAAKC,UAAW,KAAMC,UAAW,IAAKxE,OAAQ,KAAMyE,kBAAmB,KACzFjB,UALJa,EAAgBA,EAAc,SAKFb,SACxB3oB,WAAY,sBAKnB4I,UAAU,eAAgB,WAEvB,MAAO,CACHqB,MAAO,CAAC4f,aAAc,KACtB9gB,SAAU,IACV/I,WAAY,0BAKnBA,WAAW,uBAAwB,CAAC,aAAc,WAAY,SAAU,aAAc,gBACvF,SAASnB,EAAYirB,EAAU1lB,EAAQka,EAAYkL,GAC/C,IAAIzE,EAAa3gB,EAAOylB,cAAgB,UAGxC,GAFAL,EAAiBA,EAAczE,GAEN,SAArB+E,EAAS,GAAG/C,KAEZ3iB,EAAO2lB,iBAAmB,SAASjF,GAC/BjmB,EAAWqjB,WAAW,iBAAkB4C,EAAGpG,OAAO1Y,OAAQ+e,GAEtEpiB,QAAQgB,IAAI,WAEAmmB,EAAS,GAAGpjB,MAAQ,IAGxBtC,EAAO4lB,SAAW,SAASlG,GACvB,IAAIzF,EAAS,IAAIC,EACjBD,EAAOE,OAASna,EAAO2lB,iBACvB1L,EAAOyC,cAAcgD,IAGzB1f,EAAO6lB,SAAW,SAASnF,GACnBhB,EAAQgB,EAAGoF,cAAc/L,MAAM,GACnC/Z,EAAO4lB,SAASlG,QAEjB,CAAA,GAAyB,QAArBgG,EAAS,GAAG/C,KAYnB,MAAM,IAAIuC,MAAM,yFAVhBllB,EAAO+lB,OAAS,SAASriB,GACrBjJ,EAAWqjB,WAAW,iBAAkBpa,EAAKid,IAGjD3gB,EAAO6lB,SAAW,SAASnF,GACnBhd,EAAMgd,EAAGoF,cAAcxjB,MAC3BtC,EAAO+lB,OAAOriB,IAOtBgiB,EAASrC,GAAG+B,EAAcxB,UAAW5jB,EAAO6lB,aAG/CjqB,WAAW,kBAAmB,CAAC,SAAU,WAAY,gBACtD,SAASoE,EAAQ0lB,EAAUN,GAOvB,GANKplB,EAAOwlB,oBACRxlB,EAAOwlB,kBAAoB,aAG/BJ,EAAgBA,EAAcplB,EAAOwlB,oBAGjC,MAAM,IAAIN,MAAM,+BAA+Bzf,QAAQ,SAAUzF,EAAOwlB,oBAI5E,GAAIvrB,EAAQ+rB,YAAYhmB,EAAOulB,YAAmC,OAArBvlB,EAAOulB,UAChD,MAAM,IAAIL,MAAM,+CAEpB,IAAKjrB,EAAQgsB,QAAQjmB,EAAOulB,WACxB,MAAM,IAAIL,MAAM,mDAYpB,GAJIjrB,EAAQ+rB,YAAYhmB,EAAO+gB,UAC3B/gB,EAAO+gB,OAAS/gB,EAAOulB,UAAUhiB,OAAO,MAGtCtJ,EAAQgsB,QAAQjmB,EAAO+gB,QACzB,MAAM,IAAImE,MAAM,0DAQpBllB,EAAOkmB,QAAU,KACjBlmB,EAAOmmB,SAAW,CAAC3oB,MAAS4nB,EAAcvB,MAAME,SAAU/mB,OAAUooB,EAAcvB,MAAMG,WAMxFhkB,EAAOomB,WAAa,KACpBpmB,EAAOyjB,gBAAkB2B,EAAc3B,gBAMvCzjB,EAAO6jB,MAAQ,KAMf7jB,EAAOqmB,mBAAqB,SAASC,GACjC,IAAIC,EAAmBD,EAAI9oB,MAAQ4nB,EAAcvB,MAAME,SACnDyC,EAAoBF,EAAItpB,OAASooB,EAAcvB,MAAMG,UACrDyC,EAAoBH,EAAI9oB,MAAQ4nB,EAAcvB,MAAME,UAA+ByC,EAAnBD,EAChEG,EAAqBJ,EAAItpB,OAASooB,EAAcvB,MAAMG,WAAiCuC,EAApBC,EACnEG,EAAqBL,EAAItpB,SAAWspB,EAAI9oB,OAAS8oB,EAAI9oB,MAAQ4nB,EAAcvB,MAAME,SAEjF0C,GACAzmB,EAAOmmB,SAAS3oB,MAAQ4nB,EAAcvB,MAAME,SAC5C/jB,EAAOmmB,SAASnpB,OAASspB,EAAItpB,OAASupB,GAC/BG,GACP1mB,EAAOmmB,SAASnpB,OAASooB,EAAcvB,MAAMG,UAC7ChkB,EAAOmmB,SAAS3oB,MAAQ8oB,EAAI9oB,MAAQgpB,GAC7BG,GACP3mB,EAAOmmB,SAASnpB,OAASooB,EAAcvB,MAAMG,UAC7ChkB,EAAOmmB,SAAS3oB,MAAQ4nB,EAAcvB,MAAME,WAE5C/jB,EAAOmmB,SAASnpB,OAASspB,EAAItpB,OAC7BgD,EAAOmmB,SAAS3oB,MAAQ8oB,EAAI9oB,QAOpCwC,EAAO4mB,eAAiB,WACpB,IAAIN,EAAMzkB,EAAE,SAAS4C,KAAK,MAAOzE,EAAOkmB,QAAQ,GAAGvH,KAAK,GAExD,GAAGyG,EAAcvB,MAAME,SAAWuC,EAAI9oB,OAAS4nB,EAAcvB,MAAMG,UAAYsC,EAAItpB,OAC/E,OAAO,EAGX,IAAIupB,EAAmBD,EAAI9oB,MAAQ4nB,EAAcvB,MAAME,SACnDyC,EAAoBF,EAAItpB,OAASooB,EAAcvB,MAAMG,UAGzD,OAFwBsC,EAAI9oB,MAAQ4nB,EAAcvB,MAAME,UAA+ByC,EAAnBD,EAGzDA,EAEAC,GAQfxmB,EAAO6mB,aAAe,SAAS9F,GACtB9mB,EAAQgsB,QAAQjmB,EAAO+gB,UACxB/gB,EAAO+gB,OAAS,IAGf9mB,EAAQgsB,QAAQjmB,EAAOulB,aACxBvlB,EAAOulB,UAAY,IAGvBvlB,EAAO+gB,OAAO,GAAKA,EAAO/iB,EAC1BgC,EAAO+gB,OAAO,GAAKA,EAAOnkB,EAC1BoD,EAAO+gB,OAAO,GAAKA,EAAO+F,GAC1B9mB,EAAO+gB,OAAO,GAAKA,EAAOgG,GAC1B/mB,EAAO+gB,OAAO,GAAKA,EAAOlkB,EAC1BmD,EAAO+gB,OAAO,GAAKA,EAAO7jB,EAE1B,IAAI8pB,EAAchnB,EAAO4mB,iBACzB5mB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAO/iB,EAAIgpB,GAC5ChnB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAOnkB,EAAIoqB,GAC5ChnB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAO+F,GAAKE,GAC7ChnB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAOgG,GAAKC,GAC7ChnB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAOlkB,EAAImqB,GAC5ChnB,EAAOulB,UAAU,GAAK0B,KAAKC,MAAMnG,EAAO7jB,EAAI8pB,IAOhDhnB,EAAOmnB,YAAc,SAASpG,GAO1B,IAIIqG,EACAC,EAEA7pB,EACAR,EAdCgD,EAAOsnB,kBACRtnB,EAAOunB,OAAO,WACVvnB,EAAO6mB,aAAa9F,KAIvB/gB,EAAOslB,YAIR8B,EAAKI,SAASxnB,EAAOyjB,gBAAgBjmB,OAASujB,EAAOlkB,EACrDwqB,EAAKG,SAASxnB,EAAOyjB,gBAAgBzmB,QAAU+jB,EAAO7jB,EAEtDM,EAASwC,EAAOmmB,SAAS3oB,MACzBR,EAASgD,EAAOmmB,SAASnpB,OAEzByqB,MAAMxB,QAAQb,EAAcvB,MAAM6D,YAClClqB,EAAS4nB,EAAcvB,MAAM6D,SAAS,GACtC1qB,EAASooB,EAAcvB,MAAM6D,SAAS,IAG1C1nB,EAAOomB,WAAWuB,IAAI,CAClBnqB,MAAOypB,KAAKC,MAAME,EAAK5pB,GAAS,KAChCumB,SAAUkD,KAAKC,MAAME,EAAK5pB,GAAS,KACnCR,OAAQiqB,KAAKC,MAAMG,EAAKrqB,GAAU,KAClCgnB,UAAWiD,KAAKC,MAAMG,EAAKrqB,GAAU,KACrC4qB,WAAY,IAAMX,KAAKC,MAAME,EAAKrG,EAAO/iB,GAAK,KAC9C6pB,UAAW,IAAMZ,KAAKC,MAAMG,EAAKtG,EAAOnkB,GAAK,SAOrDoD,EAAO8nB,gBAAkB,WACrB9nB,EAAOkmB,QAAQ6B,IAAI,OAAQ/nB,EAAO8nB,iBAClC9nB,EAAOqmB,mBAAmBxkB,EAAE,SAAS4C,KAAK,MAAOzE,EAAOkmB,QAAQ,GAAGvH,KAAK,IAExE,IAAI+F,EAASzqB,EAAQ0qB,OAAO,CACxBkB,SAAU7lB,EAAOmnB,YACjBa,SAAUhoB,EAAOmnB,aAClB/B,EAAcvB,OAEb7jB,EAAOulB,WAAyC,IAA5BvlB,EAAOulB,UAAUnmB,SACrCslB,EAAOuD,UAAYjoB,EAAOulB,WAG9BvlB,EAAO6jB,MAAQoB,OAAOE,MAAMnlB,EAAOkmB,QAAQ,GAAIxB,IAMnD1kB,EAAOkoB,QAAU,WACTloB,EAAO6jB,QACH7jB,EAAOkmB,SAAWlmB,EAAOkmB,QAAQ6B,IAAI,QACzC/nB,EAAO6jB,MAAMqE,UACbloB,EAAO6jB,MAAQ,OAQvB7jB,EAAOmoB,cAAgB,SAASxJ,GAC5B3e,EAAOkmB,QAAUrkB,EAAE,SAASpB,SAAS,kBACrCT,EAAOkmB,QAAQ7C,GAAG,OAAQrjB,EAAO8nB,iBACjC9nB,EAAOkmB,QAAQyB,IAAI,CAAE5D,SAAUqB,EAAcvB,MAAME,SAAUC,UAAWoB,EAAcvB,MAAMG,YAC5FhkB,EAAOkmB,QAAQzhB,KAAK,MAAOka,IAM/B3e,EAAOooB,KAAO,SAASzJ,GACnB3e,EAAOkoB,UAEPloB,EAAOmoB,cAAcxJ,GAErB3e,EAAOqoB,aAAe3C,EAAS4C,KAAK,2BACpCtoB,EAAOqoB,aAAaE,QAAQvP,OAAOhZ,EAAOkmB,SAE1ClmB,EAAOomB,WAAaV,EAAS4C,KAAK,uBAClCtoB,EAAOomB,WAAW3hB,KAAK,MAAOka,IAGlC3e,EAAOygB,IAAI,WAAYzgB,EAAOkoB,SAE9BloB,EAAOygB,IAAI,iBAAkB,SAASC,EAAI/B,EAAKgC,GAEvC3gB,EAAOwlB,oBAAsB7E,GAIjC3gB,EAAOunB,OAAO,WACVvnB,EAAO6mB,aAAa,CAChB7oB,EAAG,EACHpB,EAAG,EACHkqB,GAAI1B,EAAc7B,WAClBwD,GAAI3B,EAAc5B,YAClB3mB,EAAGuoB,EAAc7B,WACjBrmB,EAAGkoB,EAAc5B,cAGrBxjB,EAAOqlB,QAAU1G,MAIzB3e,EAAOwoB,OAAO,UAAW,SAASC,EAAUC,EAAU7iB,GAClDA,EAAMuiB,KAAKK,KAGfzoB,EAAOwoB,OAAO,YAAa,SAASC,EAAUC,EAAU7iB,GAChDA,EAAMyf,UACNzf,EAAMugB,WAAWuC,OAEjB9iB,EAAMugB,WAAWwC,YA/YjC,CAsZG3uB,SiBnaH,WAKE,SAAS4uB,IACP,IAAIrkB,EAAY,CACdG,SAAU,IACV4f,SAeF,SAAkBrgB,EAASgC,GACzB,MAAO,CAAC,2BACN,4EACA,UAAU4iB,KAAK,KAjBjBzjB,KAoBF,SAAcQ,EAAO3B,EAASgC,EAAOC,GACnCA,EAAKiiB,OACLviB,EAAM4a,IAAI,WAAY,WACpBta,EAAK+hB,aAtBPa,kBAAkB,EAClBntB,WAAYotB,EACZC,aAAc,MACdpjB,MAAO,CACL6e,OAAQ,IACRwE,kBAAmB,IACnBrpB,QAAS,IACTspB,OAAQ,IACRC,kBAAmB,IACnBC,OAAQ,MAmBZ,SAASL,EAAmBhpB,EAAQspB,EAAW1oB,GAE7C,IACI2oB,EAAOC,EAAeC,EADtBC,EAAKC,KAELC,EAAS,GAiBb,SAASxB,IACPsB,EAAGhF,OAASgF,EAAGhF,QAAU,GACtBzqB,QAAQ+rB,YAAY0D,EAAGhF,OAAOmF,eAAcH,EAAGhF,OAAOmF,YAAc,QACpE5vB,QAAQ+rB,YAAY0D,EAAGhF,OAAOoF,gBAAeJ,EAAGhF,OAAOoF,aAAe,QACtE7vB,QAAQ+rB,YAAY0D,EAAGhF,OAAOxG,eAAcwL,EAAGhF,OAAOxG,YAAc,KACpEjkB,QAAQ+rB,YAAY0D,EAAGhF,OAAOvG,gBAAeuL,EAAGhF,OAAOvG,aAAe,KACtElkB,QAAQ+rB,YAAY0D,EAAGhF,OAAOtG,SAAQsL,EAAGhF,OAAOtG,MAAQ,GACxDnkB,QAAQ+rB,YAAY0D,EAAGhF,OAAOrG,SAAQqL,EAAGhF,OAAOrG,MAAQ,GACvDpkB,QAAQ+rB,YAAY0D,EAAGhF,OAAOpG,aAAYoL,EAAGhF,OAAOpG,UAAY,GACpEoL,EAAGrM,QAAU,EA8Cb0M,OAAO1G,GAAG,OAAQ,WAChBrjB,EAAOunB,OAAO,WACZmC,EAAGM,cAAe,EACf/vB,QAAQgwB,UAAUP,EAAGP,SACtBO,EAAGP,aAITY,OAAO1G,GAAG,OAAQ,WAChBrjB,EAAOunB,OAAO,WACZmC,EAAGQ,YAAa,EACbjwB,QAAQgwB,UAAUP,EAAGL,SACtBK,EAAGL,aAITU,OAAO1G,GAAG,QAAS,SAASjlB,GAC1B,GAAGnE,QAAQgwB,UAAUP,EAAG7pB,SACtB,OAAO6pB,EAAG7pB,QAAQ,CAACzB,IAAIA,MArD7B,WACKnE,QAAQgwB,UAAUP,EAAGhF,OAAOlG,eAC7B+K,EAAQ,IAAIY,OACNC,UAAW,EACdlc,UAAUmc,UAAUC,MAAM,WAC3Bf,EAAM5K,IAAM+K,EAAGhF,OAAOlG,WAAWrJ,MAAM,KAAK,GAAK,OAEjDoU,EAAM5K,IAAM+K,EAAGhF,OAAOlG,YAI1BuL,OAAOQ,IAAI,CACT/sB,MAAOksB,EAAGhF,OAAOmF,YACjB7sB,OAAQ0sB,EAAGhF,OAAOoF,aAClBU,WAAYd,EAAGhF,OAAOxG,YACtBuM,YAAaf,EAAGhF,OAAOvG,aACvBuM,aAAa,EACbC,aAAc,OACdC,aAAc,MAGhBb,OAAOQ,IAAI,cAAe,CACtBM,WAAY,gBAGb5wB,QAAQgwB,UAAUP,EAAGhF,OAAOnG,mBAC7BwL,OAAOe,eAAepB,EAAGhF,OAAOnG,kBAE/BtkB,QAAQgwB,UAAUP,EAAGhF,OAAOjG,uBAC7BsL,OAAOQ,IAAI,uBAAwBb,EAAGhF,OAAOjG,sBAE/CsL,OAAOgB,OAAO,wBAxCdC,GAGF,SAAS9C,IACP6B,OAAOhM,QACP2L,EAAGQ,YAAa,EAChBR,EAAGM,cAAe,EA6DpB,SAASiB,EAAQC,GAEf3sB,QAAQgB,IAAI,QAAS2rB,GACjBA,IAAWxB,EAAGhF,OAAOrG,MAAQ,GAE7BiL,EAAUriB,OAAOuiB,GAGrBO,OAAOoB,KAAK,SAAUC,GAIlB,IAEQC,EAGR,GANAzB,EAAOsB,GAASE,EACZF,EAASxB,EAAGhF,OAAOrG,MAAQ,GAAMpkB,QAAQgwB,UAAUP,EAAGN,qBAElDiC,EAAWpE,KAAKC,MAAmB,KAAXgE,EAAM,GAAYxB,EAAGhF,OAAOrG,OACxDqL,EAAGN,kBAAkB,CAACzK,IAAKyM,EAASC,SAAUA,KAE9CH,IAAWxB,EAAGhF,OAAOrG,MAAQ,GAAMpkB,QAAQgwB,UAAUP,EAAGR,mBAExD,OAAOQ,EAAGR,kBAAkB,CAACvK,IAAKiL,MAjH5CF,EAAGM,cAAe,EAClBN,EAAGQ,YAAa,EAChBR,EAAG2B,SAAW,KACd3B,EAAGrM,QAAU,EACbqM,EAAGtB,KAAOA,EACVsB,EAAGxB,QAAUA,EAEbloB,EAAOygB,IAAI,mBA+GX,WAGI,CAAA,IAKS6K,EANT/sB,QAAQgB,IAAI,eAAemqB,EAAGhF,OAAOpG,WACjCrkB,QAAQ+rB,YAAY0D,EAAGhF,OAAOpG,YAE9B/f,QAAQgB,IAAI,KAGP+rB,EAAQ,EACZ9B,EAAgBF,EAAU,WACxB2B,EAAQK,GACRA,KACoB,IAAlB5B,EAAGhF,OAAOtG,MAAcsL,EAAGhF,OAAOrG,SAIvC9f,QAAQgB,IAAI,KACZhB,QAAQgB,IAAI,QAASmqB,EAAGhF,OAAOrG,OAC/B9f,QAAQgB,IAAI,QAASmqB,EAAGhF,OAAOtG,OAC/B7f,QAAQgB,IAAI,UAAWmqB,EAAGrM,SAEzBoM,EAAiBH,EAAU,WAGzB,IAOQgC,IARN5B,EAAGrM,QACa,IAAfqM,EAAGrM,UAEEoM,GAEDH,EAAUriB,OAAOwiB,GAGhB6B,EAAQ,EACV9B,EAAgBF,EAAU,WACzB2B,EAAQK,GACRA,KACqB,IAAlB5B,EAAGhF,OAAOtG,MAAcsL,EAAGhF,OAAOrG,SAE3C,IAAKqL,EAAGhF,OAAOpG,eAnJ3Bte,EAAOygB,IAAI,cAuJX,WACEsJ,OAAOgB,OAAO,0BAvJhB/qB,EAAOygB,IAAI,eA0JX,WACEyH,MAzJFloB,EAAOygB,IAAI,kBAmLX,WACIsJ,OAAOQ,IAAI,cAAe,CACtBM,WAAY,gBAEhBd,OAAOhM,QACPgM,OAAOgB,OAAO,wBACdxsB,QAAQgB,IAAIwqB,UAxLhB/pB,EAAOygB,IAAI,kBA2LX,WACIsJ,OAAOQ,IAAI,cAAe,CACtBM,WAAY,SAEhBd,OAAOhM,QACPgM,OAAOgB,OAAO,0BA/LlB/qB,EAAOygB,IAAI,mBAAoB2H,GAC/BpoB,EAAOygB,IAAI,oBAyJX,WACE,OAAQ7f,EAAQsN,UAAUqd,cAAgB3qB,EAAQsN,UAAUsd,oBAC5D5qB,EAAQsN,UAAUud,iBAAmB7qB,EAAQsN,UAAUwd,iBAwC3D,OAxNA1C,EAAmB2C,QAAU,CAAC,SAAU,YAAa,WAwN9CnnB,EA1PTvK,QAAQC,OAAO,YAAa,IAAIsK,UAAU,WAAYqkB,GACtDA,EAAS8C,QAAU,GAHrB,GCAA3xB,IAAI4B,WAAW,iBAAkB,CAAC,SAAU,eAAgB,QAAS,UAAW,KAAM,aAClF,SAAUoE,EAAQmH,EAAcrG,EAAOF,EAASG,EAAIE,GAEpDjB,EAAO8f,KAAO,GAEV3Y,EAAaG,eACbtH,EAAO8f,KAAKxY,aAAeH,EAAaG,cAG5CtH,EAAOshB,KAAO,aAEGvgB,EAAGkB,IAAI,CAEpBhB,EAAWiB,QAAX,gDAAAqB,OAAmE4D,EAAaG,eAAgB7F,KAAK,SAAUC,GAExF,KAAfA,EAAKS,SAEAT,EAAKA,KAAKU,EAAER,QAKbhB,EAAQjC,SAASC,KAAO,UAEpB0C,EAAgBtB,EAAOsB,cAAc,qBACzCwB,KAAKC,KAAKzB,EAAc3G,MAAO2G,EAAcQ,QAAS,aAPtDlB,EAAQjC,SAASC,KAAO,UACxBgC,EAAQjC,SAASwE,eAYtB1B,KAAK,iBC/BpBzH,IAAI4B,WAAW,eAAgB,CAAC,SAAU,eAAgB,QAAS,UAAW,KAAM,aAAc,YAClG,SAAUoE,EAAQmH,EAAcrG,EAAOF,EAASG,EAAIE,EAAYmU,GAE5DpV,EAAO8f,KAAO,GACd9f,EAAO4rB,UAAY,GAEnB5rB,EAAO8f,KAAKnQ,UAAY,MACxB3P,EAAO8f,KAAKlO,YAAc,IAE1B5R,EAAO6rB,cAAe,EACtB7rB,EAAO8rB,cAAgB,GAEvB9rB,EAAOshB,KAAO,QAEdthB,EAAOgjB,cAAe,EACtBhjB,EAAOijB,UAAY,WACnBjjB,EAAOkjB,mBAAqB,WACxBljB,EAAOgjB,cAAgBhjB,EAAOgjB,aACN,YAApBhjB,EAAOijB,UACPjjB,EAAOijB,UAAY,OAEnBjjB,EAAOijB,UAAY,YAG3BjjB,EAAO+rB,0BAA2B,EAClC/rB,EAAOgsB,sBAAwB,WAC/BhsB,EAAOisB,+BAAiC,WACpCjsB,EAAO+rB,0BAA4B/rB,EAAO+rB,yBACN,YAAhC/rB,EAAOgsB,sBACPhsB,EAAOgsB,sBAAwB,OAE/BhsB,EAAOgsB,sBAAwB,YAGvChsB,EAAOgG,cAAgB,WACfhG,EAAO+F,iBAAmB/F,EAAO8f,KAAK3e,WACtCnB,EAAOksB,aAAa7lB,mBAAmBC,UAAW,EAClDtG,EAAOmsB,gBAAiB,IAIfprB,EAAGkB,IAAI,CACpBhB,EAAWiB,QAAX,uCAA0DT,KAAK,SAAUC,GAElD,KAAfA,EAAKS,SACLnC,EAAOosB,iBAAmB1qB,EAAKA,KAAKU,KAE5CnB,EAAWiB,QAAX,mCAAsDT,KAAK,SAAUC,GAE9C,KAAfA,EAAKS,SACLnC,EAAO4rB,UAAYlqB,EAAKA,KAAKU,OAI9BX,KAAK,cAKhBzB,EAAOqsB,YAAc,SAAUlhB,EAAMC,EAAOC,EAAOzG,GAE3CuG,EAAKmhB,iBACLtsB,EAAO8f,KAAKyM,MAAQphB,EAAKmhB,eACzBtsB,EAAO8rB,cAAgB3gB,IAK/BnL,EAAOwsB,gBAAkB,WACjBxsB,EAAO8f,KAAK2M,YAEZxrB,EAAWiB,QAAX,0CAAAqB,OAA6DvD,EAAO8f,KAAK2M,aAAchrB,KAAK,SAAUC,GAE/E,KAAfA,EAAKS,SAEc,MAAfT,EAAKA,KAAKU,IACNhI,EAAMsH,EAAKA,KAAKU,GACZ+H,KAAkB,GAAX/P,EAAI+P,MACfnK,EAAO8f,KAAK2M,WAAa,GACzB3pB,KAAKC,KAAK,SAAU3I,EAAIkI,MAAO,cAQvDtC,EAAO6V,cAAgB,SAAUC,GAGTV,EACnBW,KAAK,CACFnI,WAAW,EACXjS,YAJW,8BAAgCma,EAAS,QAKpDla,WAAY,wBACZoa,KAAM,KACNhb,SAAU,SACV0L,QAAS,CAELI,gBAAiB,WAEb,OAAOgP,MAKLlU,OAAOH,KAAK,SAAUwS,EAAUgC,GAE1B,UAAZhC,IAEc,GAAV6B,IAEA9V,EAAOkW,QAAS,EAChBlW,EAAO0sB,iBAAkB,GAIzB1sB,EAAO0sB,kBAEhB,eAqBP1sB,EAAO6N,YAAc,aAMrB7N,EAAOyH,OAAS,WAEZzH,EAAO6N,cASP,IAEInL,EAAW,CAAE0E,KAAMpH,EAAO8f,MAE9B9f,EAAOqB,YAHmB,yBADb,qCAImCqB,EADnC,OACqD,SAAUiF,GAEpEA,IACA/G,EAAQjC,SAASC,KAAO,cAIpCoB,EAAO2O,gBAAkB,WAErB,IAcQrN,EAdqB,MAAzBtB,EAAO8f,KAAK5Q,WACY,MAArBlP,EAAO8f,KAAK5f,OACa,MAAzBF,EAAO8f,KAAK6M,WACa,MAAzB3sB,EAAO8f,KAAK7K,WACc,MAA1BjV,EAAO8f,KAAK2M,YACY,MAAxBzsB,EAAO8f,KAAK3e,UACc,MAA1BnB,EAAO+F,iBACiB,MAAxB/F,EAAO4sB,eACqB,MAA5B5sB,EAAO8f,KAAK+M,cACuB,MAAnC7sB,EAAO8f,KAAKgN,oBAEfvuB,QAAQgB,IAAI,uBAGR+B,EAAgBtB,EAAOsB,cAAc,mBAEzCwB,KAAKC,KAAK,CACNpI,MAAO2G,EAAc3G,MACrBC,KAAM0G,EAAcQ,QACpB2L,SAAU,2BACVC,SAAU,cACVC,YAAa,IACbC,WAAW,SAQ3B5T,IAAI4B,WAAW,wBAAyB,CAAC,SAAU,oBAAqB,kBAAmB,KAAM,aAC7F,SAAUoE,EAAQ2F,EAAmBmB,EAAiB/F,EAAIE,GAEtDjB,EAAO8G,gBAAkBA,EAEzB9G,EAAO0F,OAAS,WAEZC,EAAkBoB,MAAM,SAAU/G,EAAO8G,kBAI5B/F,EAAGkB,IAAI,IAKbR,KAAK,cAIhBzB,EAAOiH,OAAS,WAEZtB,EAAkBuB,QAAQ,SAAUlH,EAAO8G","file":"app.min.js","sourcesContent":["var app = angular.module(\"myApp\", ['slick', 'ui.bootstrap', 'ngAnimate', 'angular-jwt', 'ngRoute', 'ngCookies', 'ngMessages', 'ngFileUpload', 'ngCookies', 'signature', 'webcam', 'pascalprecht.translate', 'angular.filter', 'ng.deviceDetector', 'imgEditor.directives', 'ng-webcam', 'ngJcrop']);\r\n\r\napp.run(['$rootScope',\r\nfunction ($rootScope) {\r\n \r\n\r\n $rootScope.GlobalAlert = function (icon, title, text) {\r\n return Swal.fire({\r\n icon: icon,\r\n title: title,\r\n text: text,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: false,\r\n backdrop: true,\r\n })\r\n };\r\n\r\n $rootScope.AlertYesNo = function (icon, title, text) {\r\n return Swal.fire({\r\n icon: icon,\r\n title: title,\r\n text: text,\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n focusConfirm: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n })\r\n };\r\n\r\n $rootScope.AlertShowLoading = function (icon, title, text, timer) {\r\n return Swal.fire({\r\n icon: icon,\r\n title: title,\r\n text: text,\r\n timer: timer,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: false,\r\n onOpen: () => {\r\n swal.showLoading()\r\n }\r\n })\r\n };\r\n\r\n $rootScope.AlertShowFooter = function (icon, title, text, textFooter, timer) {\r\n return Swal.fire({\r\n footer: textFooter,\r\n icon: icon,\r\n title: title,\r\n text: text,\r\n timer: timer,\r\n showConfirmButton: false,\r\n })\r\n };\r\n}]);\r\n\r\napp.config(['$provide', '$routeProvider', '$locationProvider', '$translateProvider','ngJcropConfigProvider',\r\n function ($provide, $routeProvider, $locationProvider, $translateProvider, ngJcropConfigProvider) {\r\n $locationProvider.hashPrefix('');\r\n $routeProvider.\r\n\twhen('/',\r\n\t{\r\n\t templateUrl: '/template/login.html',\r\n\t controller: 'LoginCtrl'\r\n\t}).\r\n when('/register',\r\n\t{\r\n\t templateUrl: '/template/register.html',\r\n\t controller: 'RegisterCtrl'\r\n\t}).\r\n when('/register/:id',\r\n\t{\r\n\t templateUrl: '/template/register.html',\r\n\t controller: 'RegisterCtrl'\r\n\t}).\r\n when('/activation/:generatedkey',\r\n\t{\r\n\t templateUrl: '/template/activation.html',\r\n\t controller: 'ActivationCtrl'\r\n\t}).\r\n when('/forgetpassword',\r\n\t{\r\n\t templateUrl: '/template/forgetpassword.html',\r\n\t controller: 'forgetPasswordCtrl'\r\n\t}).\r\n when('/change_password/:generatedkey',\r\n\t{\r\n\t templateUrl: '/template/changePassword.html',\r\n\t controller: 'changePasswordCtrl'\r\n\t}).\r\n when('/login',\r\n\t{\r\n\t templateUrl: '/template/login.html',\r\n\t controller: 'LoginCtrl'\r\n\t}).\r\n when('/cif/start',\r\n\t{\r\n\t templateUrl: 'template/CIF-KTP.html',\r\n\t controller: 'CIFKTP-CTRL'\r\n\t}).\r\n when('/cif/data-pribadi',\r\n\t{\r\n\t templateUrl: '/template/CIF-1.html',\r\n\t controller: 'CIF-CTRL'\r\n\t}).\r\n when('/cif/data-pekerjaan',\r\n\t{\r\n\t templateUrl: '/template/CIF-2.html',\r\n\t controller: 'CIF2-CTRL'\r\n\t}).\r\n when('/cif/data-pendukung',\r\n\t{\r\n\t templateUrl: '/template/CIF-3.html',\r\n\t controller: 'CIF3-CTRL'\r\n\t}).\r\n when('/cif/data-pernyataan',\r\n\t{\r\n\t templateUrl: '/template/CIF-4.html',\r\n\t controller: 'CIF4-CTRL'\r\n\t}).\r\n when('/dashboard',\r\n\t{\r\n\t templateUrl: '/template/dashboard/dashboard.html',\r\n\t controller: 'CIFDashboard-CTRL'\r\n\t}).\r\n when('/profile',\r\n\t{\r\n\t templateUrl: '/template/dashboard/profile.html',\r\n\t controller: 'CIFProfile-CTRL'\r\n\t}).\r\n when('/cif/final',\r\n\t{\r\n\t templateUrl: '/template/CIF-Final.html?v=3',\r\n\t controller: 'CIFFIN-CTRL'\r\n\t}).\r\n when('/cif/:generatedconfirmation',\r\n\t{\r\n\t templateUrl: '/template/CIF-TakenAJA.html',\r\n\t controller: 'CIFTakenAJA-CTRL'\r\n\t}).\r\n\totherwise(\r\n\t{\r\n\t redirectTo: '/logout'\r\n\t});\r\n\r\n $translateProvider.useStaticFilesLoader({\r\n prefix: '/lang/locale-',\r\n suffix: '.json'\r\n });\r\n $translateProvider.preferredLanguage('en');\r\n}]);\r\n\r\napp.factory('S21Language', function () {\r\n var lang = '';\r\n return {\r\n getLang: function () {\r\n return lang;\r\n },\r\n\r\n setLang: function (value) {\r\n lang = value;\r\n return value;\r\n }\r\n };\r\n});\r\n\r\napp.factory('KTPCamService', function () {\r\n var webcam = {};\r\n webcam.isTurnOn = false;\r\n webcam.patData = null;\r\n var _video = null;\r\n var _stream = null;\r\n webcam.patOpts = { x: 0, y: 0, w: 25, h: 25 };\r\n webcam.channel = {};\r\n webcam.webcamError = false;\r\n\r\n var getVideoData = function getVideoData(x, y, w, h) {\r\n var hiddenCanvas = document.createElement('canvas');\r\n hiddenCanvas.width = _video.width;\r\n hiddenCanvas.height = _video.height;\r\n var ctx = hiddenCanvas.getContext('2d');\r\n ctx.drawImage(_video, 0, 0, _video.width, _video.height);\r\n return ctx.getImageData(x, y, w, h);\r\n };\r\n\r\n var sendSnapshotToServer = function sendSnapshotToServer(imgBase64) {\r\n webcam.snapshotData = imgBase64;\r\n };\r\n\r\n webcam.makeSnapshot = function () {\r\n if (_video) {\r\n var patCanvas = document.querySelector('#KTPsnapshot');\r\n if (!patCanvas) return;\r\n\r\n patCanvas.width = _video.width;\r\n patCanvas.height = _video.height;\r\n var ctxPat = patCanvas.getContext('2d');\r\n\r\n var idata = getVideoData(webcam.patOpts.x, webcam.patOpts.y, webcam.patOpts.w, webcam.patOpts.h);\r\n ctxPat.putImageData(idata, 0, 0);\r\n\r\n sendSnapshotToServer(patCanvas.toDataURL());\r\n\r\n webcam.patData = idata;\r\n\r\n webcam.success(webcam.snapshotData.substr(webcam.snapshotData.indexOf('base64,') + 'base64,'.length), 'image/png');\r\n //webcam.turnOff();\r\n }\r\n };\r\n\r\n webcam.onSuccess = function () {\r\n _video = webcam.channel.video;\r\n webcam.patOpts.w = _video.width;\r\n webcam.patOpts.h = _video.height;\r\n webcam.isTurnOn = true;\r\n };\r\n\r\n webcam.onStream = function (stream) {\r\n activeStream = stream;\r\n console.log('kt', activeStream);\r\n return activeStream;\r\n };\r\n\r\n webcam.downloadSnapshot = function downloadSnapshot(dataURL) {\r\n window.location.href = dataURL;\r\n };\r\n\r\n webcam.onError = function (err) {\r\n webcam.webcamError = err;\r\n };\r\n\r\n webcam.turnOff = function () {\r\n webcam.isTurnOn = false;\r\n if (activeStream && activeStream.getVideoTracks) {\r\n const checker = typeof activeStream.getVideoTracks === 'function';\r\n if (checker) {\r\n console.log('ktp', activeStream.getVideoTracks());\r\n return activeStream.getVideoTracks()[0].stop();\r\n }\r\n return false;\r\n }\r\n return false;\r\n };\r\n\r\n var service = {\r\n webcam: webcam\r\n };\r\n return service;\r\n});\r\n\r\napp.factory('SELFIECamService', function () {\r\n var webcam = {};\r\n webcam.isTurnOn = false;\r\n webcam.patData = null;\r\n var _video = null;\r\n var _stream = null;\r\n webcam.patOpts = { x: 0, y: 0, w: 25, h: 25 };\r\n webcam.channel = {};\r\n webcam.webcamError = false;\r\n\r\n var getVideoData = function getVideoData(x, y, w, h) {\r\n var hiddenCanvas = document.createElement('canvas');\r\n hiddenCanvas.width = _video.width;\r\n hiddenCanvas.height = _video.height;\r\n var ctx = hiddenCanvas.getContext('2d');\r\n ctx.drawImage(_video, 0, 0, _video.width, _video.height);\r\n return ctx.getImageData(x, y, w, h);\r\n };\r\n\r\n var sendSnapshotToServer = function sendSnapshotToServer(imgBase64) {\r\n webcam.snapshotData = imgBase64;\r\n };\r\n\r\n webcam.makeSnapshot = function () {\r\n if (_video) {\r\n var patCanvas = document.querySelector('#SELFIEsnapshot');\r\n if (!patCanvas) return;\r\n\r\n patCanvas.width = _video.width;\r\n patCanvas.height = _video.height;\r\n var ctxPat = patCanvas.getContext('2d');\r\n\r\n var idata = getVideoData(webcam.patOpts.x, webcam.patOpts.y, webcam.patOpts.w, webcam.patOpts.h);\r\n ctxPat.putImageData(idata, 0, 0);\r\n\r\n sendSnapshotToServer(patCanvas.toDataURL());\r\n\r\n webcam.patData = idata;\r\n\r\n webcam.success(webcam.snapshotData.substr(webcam.snapshotData.indexOf('base64,') + 'base64,'.length), 'image/png');\r\n //webcam.turnOff();\r\n }\r\n };\r\n\r\n webcam.onSuccess = function () {\r\n _video = webcam.channel.video;\r\n webcam.patOpts.w = _video.width;\r\n webcam.patOpts.h = _video.height;\r\n webcam.isTurnOn = true;\r\n };\r\n\r\n webcam.onStream = function (stream) {\r\n activeStream = stream;\r\n console.log('se', activeStream);\r\n return activeStream;\r\n };\r\n\r\n webcam.downloadSnapshot = function downloadSnapshot(dataURL) {\r\n window.location.href = dataURL;\r\n };\r\n\r\n webcam.onError = function (err) {\r\n webcam.webcamError = err;\r\n console.log('ERR', webcam.webcamError)\r\n };\r\n\r\n webcam.turnOff = function () {\r\n webcam.isTurnOn = false;\r\n if (activeStream && activeStream.getVideoTracks) {\r\n const checker = typeof activeStream.getVideoTracks === 'function';\r\n if (checker) {\r\n console.log('se', activeStream.getVideoTracks());\r\n return activeStream.getVideoTracks()[0].stop();\r\n }\r\n return false;\r\n }\r\n return false;\r\n };\r\n\r\n var service = {\r\n webcam: webcam\r\n };\r\n\r\n\r\n return service;\r\n});\r\n\r\napp.factory('SIGNATURECamService', function () {\r\n var webcam = {};\r\n webcam.isTurnOn = false;\r\n webcam.patData = null;\r\n var _video = null;\r\n var _stream = null;\r\n webcam.patOpts = { x: 0, y: 0, w: 25, h: 25 };\r\n webcam.channel = {};\r\n webcam.webcamError = false;\r\n\r\n var getVideoData = function getVideoData(x, y, w, h) {\r\n var hiddenCanvas = document.createElement('canvas');\r\n hiddenCanvas.width = _video.width;\r\n hiddenCanvas.height = _video.height;\r\n var ctx = hiddenCanvas.getContext('2d');\r\n ctx.drawImage(_video, 0, 0, _video.width, _video.height);\r\n return ctx.getImageData(x, y, w, h);\r\n };\r\n\r\n var sendSnapshotToServer = function sendSnapshotToServer(imgBase64) {\r\n webcam.snapshotData = imgBase64;\r\n };\r\n\r\n webcam.makeSnapshot = function () {\r\n if (_video) {\r\n var patCanvas = document.querySelector('#SIGNATUREsnapshot');\r\n if (!patCanvas) return;\r\n\r\n patCanvas.width = _video.width;\r\n patCanvas.height = _video.height;\r\n var ctxPat = patCanvas.getContext('2d');\r\n\r\n var idata = getVideoData(webcam.patOpts.x, webcam.patOpts.y, webcam.patOpts.w, webcam.patOpts.h);\r\n ctxPat.putImageData(idata, 0, 0);\r\n\r\n sendSnapshotToServer(patCanvas.toDataURL());\r\n\r\n webcam.patData = idata;\r\n\r\n webcam.success(webcam.snapshotData.substr(webcam.snapshotData.indexOf('base64,') + 'base64,'.length), 'image/png');\r\n //webcam.turnOff();\r\n }\r\n };\r\n\r\n webcam.onSuccess = function () {\r\n _video = webcam.channel.video;\r\n webcam.patOpts.w = _video.width;\r\n webcam.patOpts.h = _video.height;\r\n webcam.isTurnOn = true;\r\n };\r\n\r\n webcam.onStream = function (stream) {\r\n activeStream = stream;\r\n console.log('se', activeStream);\r\n return activeStream;\r\n };\r\n\r\n webcam.downloadSnapshot = function downloadSnapshot(dataURL) {\r\n window.location.href = dataURL;\r\n };\r\n\r\n webcam.onError = function (err) {\r\n webcam.webcamError = err;\r\n console.log('ERR', webcam.webcamError)\r\n };\r\n\r\n webcam.turnOff = function () {\r\n webcam.isTurnOn = false;\r\n if (activeStream && activeStream.getVideoTracks) {\r\n const checker = typeof activeStream.getVideoTracks === 'function';\r\n if (checker) {\r\n console.log('se', activeStream.getVideoTracks());\r\n return activeStream.getVideoTracks()[0].stop();\r\n }\r\n return false;\r\n }\r\n return false;\r\n };\r\n\r\n var service = {\r\n webcam: webcam\r\n };\r\n\r\n\r\n return service;\r\n});\r\n\r\n\r\n\r\n\r\napp.controller('HomeController', ['$scope', '$rootScope', '$filter', '$http', '$window', '$q', '$cookies', '$translate', 'appFactory',\r\n function ($scope, $rootScope, $filter, $http, $window, $q, $cookies, $translate, appFactory) {\r\n $scope.login = {\r\n Username: '',\r\n Password: '',\r\n Email: '',\r\n Notelp: ''\r\n };\r\n\r\n $scope.showLogoutBtn = function () {\r\n\r\n var urlNow = window.location.href.substr(window.location.href.lastIndexOf('/') + 1);\r\n if (urlNow == \"data-pribadi\" || \r\n urlNow == \"data-pekerjaan\" || \r\n urlNow == \"data-pendukung\" || \r\n urlNow == \"data-pernyataan\" || \r\n urlNow == \"dashboard\" || \r\n urlNow == \"profile\"\r\n )\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n $scope.languages = [\r\n {\r\n lang: 'en',\r\n name: 'English',\r\n },\r\n {\r\n lang: 'id',\r\n name: 'Indonesia'\r\n }\r\n ];\r\n\r\n $scope.languageSelected = $scope.languages[0];\r\n //$scope.language = 'en';\r\n\r\n $scope.updateLanguage = function (lang) {\r\n if (lang == 'id'){\r\n\r\n $scope.languageSelected = $scope.languages[1];\r\n $(\"#langID\").addClass('bg-primary');\r\n $(\"#langEN\").removeClass('bg-primary');\r\n } else {\r\n\r\n $scope.languageSelected = $scope.languages[0];\r\n $(\"#langID\").removeClass('bg-primary');\r\n $(\"#langEN\").addClass('bg-primary');\r\n }\r\n\r\n \r\n $translate.use($scope.languageSelected.lang);\r\n $cookies.put(\"lang\", $scope.languageSelected.lang);\r\n };\r\n\r\n var allPromise = $q.all([\r\n\r\n ]);\r\n\r\n // trigger sign out dan kembali ke halaman login\r\n $scope.signOut = function () {\r\n\r\n appFactory.getData(`/service/client.svc/SignOut`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d == true) {\r\n $window.location.href = \"/#/\";\r\n }\r\n }\r\n });\r\n };\r\n\r\n // dengan sweet alert confirmation dialog sebelum logout\r\n $scope.signOutWithConf = function () {\r\n \r\n var SWALtranslate = $scope.SWALtranslate('logoutConf');\r\n\r\n $rootScope.AlertYesNo('question', SWALtranslate.title, SWALtranslate.message)\r\n .then((result) => {\r\n if (result.value) {\r\n\r\n $scope.signOut();\r\n }\r\n });\r\n }\r\n\r\n // the dynamic post or get sweet alert 2 \r\n $scope.PostGetSwal = function (preconfirmtranslate, urlsvc, postData, method, callback) {\r\n\r\n console.log(\"postgetswal-urlsvc:\", urlsvc)\r\n console.log(\"postgetswal-method:\", method)\r\n console.log(\"postgetswal-postdata:\", postData)\r\n\r\n var SWALtranslate = $scope.SWALtranslate(preconfirmtranslate);\r\n\r\n return Swal.fire({\r\n icon: 'question',\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n showCancelButton: true,\r\n confirmButtonColor: '#3a3963',\r\n confirmButtonText: 'Submit',\r\n showLoaderOnConfirm: true,\r\n preConfirm: (preConf) => {\r\n\r\n return $http({\r\n method: method,\r\n url: urlsvc,\r\n data: postData \r\n }).then(data => {\r\n\r\n console.log(data.data.d.result)\r\n\r\n if (data.data.d.result) {\r\n\r\n var SWALtranslate = $scope.SWALtranslate(data.data.d.message);\r\n\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n icon: \"success\",\r\n showConfirmButton: false,\r\n timer: 3000,\r\n })\r\n\r\n } else {\r\n\r\n var SWALtranslate = $scope.SWALtranslate(data.data.d.message);\r\n\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n icon: \"error\",\r\n showConfirmButton: true,\r\n })\r\n return false;\r\n }\r\n\r\n callback(data.data.d.result); // send /return callback to .js\r\n })\r\n .catch(error => {\r\n Swal.showValidationMessage(\r\n \"There is a problem connecting to the server. \\\r\n Please ensure your internet connection is active. If the problem persists, please try again later.\"\r\n )\r\n console.log(`Request failed: ${error}`)\r\n })\r\n }\r\n })\r\n };\r\n\r\n // checking halaman login,\r\n // jika ada session maka lanjutkan ke $scope.checkLoginStep\r\n $scope.checkLogin = function () {\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/service/client.svc/retrieveSession',\r\n }).then(function (data) {\r\n if (data.data.d) {\r\n\r\n $scope.checkLoginStep(data.data.d);\r\n console.log(data.data.d)\r\n }\r\n }, function (error) { })\r\n }\r\n\r\n // req token: \r\n $scope.requestToken = function () {\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/service/client.svc/RequestToken',\r\n headers: {\r\n 'Authorization': \"Basic eHh4Onl5eQ==\"\r\n }\r\n }).then(function (data) {\r\n\r\n\r\n if (data.data.d.access_token) {\r\n\r\n\r\n $window.localStorage.setItem('token', data.data.d.access_token)\r\n\r\n //$scope.checkLoginStep(data.data.d);\r\n //console.log(data.data.d)\r\n }\r\n }, function (error) { })\r\n }\r\n\r\n // check login step\r\n $scope.checkLoginStep = function (userSession) {\r\n\r\n // stage: finished\r\n if (userSession.IsFinished == 1) {\r\n $window.location.href = \"#/dashboard\";\r\n $window.location.reload();\r\n }\r\n\r\n // stage: 0\r\n if (userSession.Stage == 0) {\r\n $window.location.href = \"#/cif/start\";\r\n $window.location.reload();\r\n }\r\n\r\n // stage: 1\r\n if (userSession.Stage) {\r\n if (userSession.Stage == 1) {\r\n\r\n // stage: 1 and revised\r\n if (userSession.IsRevised == 1) {\r\n $window.location.href = \"#/dashboard\";\r\n $window.location.reload();\r\n } else {\r\n\r\n $window.location.href = \"#/cif/data-pribadi\";\r\n $window.location.reload();\r\n }\r\n }\r\n\r\n // stage: 2\r\n if (userSession.Stage == 2) {\r\n $window.location.href = \"#/cif/data-pekerjaan\";\r\n $window.location.reload();\r\n }\r\n\r\n // stage: 3\r\n if (userSession.Stage == 3) {\r\n $window.location.href = \"#/cif/data-pendukung\";\r\n $window.location.reload();\r\n }\r\n\r\n // stage: 4\r\n if (userSession.Stage == 4) {\r\n\r\n // stage: 4 and finished\r\n if (userSession.IsFinished == 1) {\r\n $window.location.href = \"#/dashboard\";\r\n $window.location.reload();\r\n } else {\r\n $window.location.href = \"#/cif/data-pernyataan\";\r\n }\r\n\r\n // stage: 4 and revised\r\n if (userSession.IsRevised == 1) {\r\n $window.location.href = \"#/dashboard\";\r\n $window.location.reload();\r\n }\r\n }\r\n }\r\n }\r\n\r\n // scope untuk mengecek session saja\r\n // jika tidak ada session maka trigger $scope.signOut\r\n $scope.retrieveSessions = function () {\r\n\r\n $http({\r\n method: 'POST',\r\n url: '/service/client.svc/retrieveSession',\r\n }).then(function (data) {\r\n\r\n console.log(data)\r\n if (!data.data.d) {\r\n\r\n $scope.signOut();\r\n }\r\n else\r\n $scope.currentUser = data.data.d;\r\n\r\n console.log($scope.currentUser)\r\n }, function (error) { })\r\n }\r\n\r\n // kumpulan sweet alert translate untuk di lempar di ui sweet alert-- title, message, footer\r\n $scope.SWALtranslate = function (translateLocale) {\r\n\r\n var result = [];\r\n\r\n switch (translateLocale) {\r\n case 'logoutConf':\r\n \r\n result.title = $filter('translate')('INFO.logout');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitregistrationconf':\r\n\r\n result.title = $filter('translate')('INFO.submitregistration');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitregistrationsuccess':\r\n\r\n result.title = $filter('translate')('INFO.success');\r\n result.message = $filter('translate')('INFO.submitregistrationsuccess');\r\n break;\r\n case 'emailduplicate':\r\n\r\n result.title = $filter('translate')('INFO.failed');\r\n result.message = $filter('translate')('INFO.emailduplicate');\r\n break;\r\n case 'savedatasuccess':\r\n\r\n result.title = $filter('translate')('INFO.success');\r\n result.message = $filter('translate')('INFO.succcessdatasave');\r\n break;\r\n case 'submitCif1':\r\n\r\n result.title = $filter('translate')('INFO.submitcif1');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitCif2':\r\n\r\n result.title = $filter('translate')('INFO.submitcif2');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitCif3':\r\n\r\n result.title = $filter('translate')('INFO.submitcif3');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitCif4':\r\n\r\n result.title = $filter('translate')('INFO.submitcif4');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'submitCif4success':\r\n\r\n result.title = $filter('translate')('INFO.success');\r\n result.message = $filter('translate')('INFO.submitcif4success');\r\n break;\r\n case 'logindisabled':\r\n\r\n result.title = $filter('translate')('INFO.loginfailed');\r\n result.message = $filter('translate')('INFO.notactivated');\r\n break;\r\n case 'notactivated':\r\n\r\n result.title = $filter('translate')('INFO.loginfailed');\r\n result.message = $filter('translate')('INFO.notactivated');\r\n result.footer = $filter('translate')('INFO.clicktoresendactivationlink');\r\n break;\r\n case 'wronguserpass':\r\n\r\n result.title = $filter('translate')('INFO.loginfailed');\r\n result.message = $filter('translate')('INFO.wronguserpass');\r\n break;\r\n case 'aggreement1':\r\n\r\n result.title = $filter('translate')('INFO.aggreement1');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'aggreement2':\r\n\r\n result.title = $filter('translate')('INFO.aggreement2');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'aggreement3':\r\n\r\n result.title = $filter('translate')('INFO.aggreement3');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'bcagagal':\r\n\r\n result.title = $filter('translate')('INFO.failed');\r\n result.message = $filter('translate')('INFO.bcagagal');\r\n break;\r\n case 'forgetpasswordsuccess':\r\n\r\n result.title = $filter('translate')('INFO.forgetpasswordsuccess');\r\n result.message = $filter('translate')('INFO.checkyouremail');\r\n break;\r\n case 'changepasswordconf':\r\n\r\n result.title = $filter('translate')('INFO.conf');\r\n result.message = $filter('translate')('INFO.changepasswordconf');\r\n break;\r\n case 'changepasswordsuccess':\r\n\r\n result.title = $filter('translate')('INFO.success');\r\n result.message = $filter('translate')('INFO.changepasswordsuccess');\r\n break;\r\n case 'sendforgetpassword':\r\n\r\n result.title = $filter('translate')('INFO.sendchangepasswordlink');\r\n result.message = $filter('translate')('INFO.sureForgetPasword');\r\n break;\r\n case 'activationsuccess':\r\n\r\n result.title = $filter('translate')('INFO.activationsuccess');\r\n result.message = $filter('translate')('INFO.activationsuccessmsg');\r\n break;\r\n case 'resendactivationlink':\r\n\r\n result.title = $filter('translate')('INFO.resendactivationlink');\r\n result.message = $filter('translate')('INFO.sure');\r\n break;\r\n case 'otpsent':\r\n\r\n result.title = $filter('translate')('INFO.success');\r\n result.message = $filter('translate')('INFO.resendactivationlinksuccess');\r\n break;\r\n case 'usernotfound':\r\n\r\n result.title = $filter('translate')('INFO.failed');\r\n result.message = $filter('translate')('INFO.usernotfound');\r\n break;\r\n case 'tttembed':\r\n\r\n result.title = \"Embed Tanda Tangan\";\r\n result.message = $filter('translate')('INFO.ttdembed');\r\n break;\r\n case 'preparationinfouploadphotocif1':\r\n\r\n result.title = $filter('translate')('INFO.uploadphoto');\r\n result.message = $filter('translate')('INFO.preparationinfouploadphoto');\r\n break;\r\n case 'validationinput':\r\n\r\n result.title = $filter('translate')('INFO.validinput');\r\n result.message = $filter('translate')('INFO.validinputmsg');\r\n break;\r\n case 'duplicatektp':\r\n\r\n result.title = $filter('translate')('INFO.duplicatektp');\r\n result.message = $filter('translate')('INFO.failed');\r\n break;\r\n case 'validatefirstname':\r\n\r\n result.title = $filter('translate')('INFO.failed');\r\n result.message = $filter('translate')('INFO.firstname');\r\n break;\r\n case 'validatespousename':\r\n\r\n result.title = $filter('translate')('INFO.failed');\r\n result.message = $filter('translate')('INFO.spousename');\r\n break;\r\n case 'duplicatektp':\r\n\r\n result.title = $filter('translate')('INFO.duplicatektp');\r\n result.message = $filter('translate')('INFO.failed');\r\n break;\r\n default:\r\n\r\n result.title = \"Update Needed\";\r\n result.message = \"Needed to update the apps.js\";\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n allPromise.then(function () {\r\n if (!$cookies.get('lang'))\r\n $cookies.put(\"lang\", 'id');\r\n else\r\n $scope.updateLanguage($cookies.get('lang'));\r\n });\r\n}]);\r\n\r\n//app.directive('numericOnly', ['filter', function ($filter) {\r\n// return {\r\n// require: '?ngModel',\r\n// link: function (scope, elem, attrs, ctrl) {\r\n// if (!ctrl) {\r\n// return;\r\n// }\r\n\r\n// ctrl.$formatters.unshift(function () {\r\n// return $filter('number')(ctrl.$modelValue);\r\n// });\r\n\r\n// ctrl.$parsers.unshift(function (viewValue) {\r\n// var plainNumber = viewValue.replace(/[^\\d]/g, ''),\r\n// b = $filter('number')(plainNumber);\r\n\r\n// elem.val(b);\r\n// if (plainNumber == '') {\r\n// plainNumber = 0;\r\n// }\r\n// return parseInt(plainNumber);\r\n// });\r\n// }\r\n// };\r\n//}]);\r\n\r\napp.directive('textOnly', function () {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, element, attr, ngModelCtrl) {\r\n function fromUser(text) {\r\n\r\n console.log(element)\r\n\r\n if (text) {\r\n\r\n var transformedInput = text.replace(/[^A-Za-z\\' \\s]/g, '');\r\n\r\n //if (transformedInput !== text) {\r\n ngModelCtrl.$setViewValue(transformedInput);\r\n ngModelCtrl.$render();\r\n //}\r\n return transformedInput;\r\n }\r\n return undefined;\r\n }\r\n ngModelCtrl.$parsers.push(fromUser);\r\n }\r\n };\r\n});\r\n\r\napp.directive('numbersOnly', function () {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, element, attr, ngModelCtrl) {\r\n function fromUser(text) {\r\n if (text) {\r\n var transformedInput = text.replace(/[^0-9]/g, '');\r\n\r\n if (transformedInput !== text) {\r\n ngModelCtrl.$setViewValue(transformedInput);\r\n ngModelCtrl.$render();\r\n }\r\n return transformedInput;\r\n }\r\n return undefined;\r\n }\r\n ngModelCtrl.$parsers.push(fromUser);\r\n }\r\n };\r\n});\r\n\r\napp.directive('onlyNumbers', function () {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, elm, attrs, ctrl) {\r\n elm.on('keydown', function (event) {\r\n if (event.shiftKey) { event.preventDefault(); return false; }\r\n //console.log(event.which);\r\n if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) {\r\n // backspace, enter, escape, arrows\r\n return true;\r\n } else if (event.which >= 48 && event.which <= 57) {\r\n // numbers 0 to 9\r\n return true;\r\n } else if (event.which >= 96 && event.which <= 105) {\r\n // numpad number\r\n return true;\r\n }\r\n // else if ([110, 190].indexOf(event.which) > -1) {\r\n // // dot and numpad dot\r\n // return true;\r\n // }\r\n else {\r\n event.preventDefault();\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n});\r\n\r\n","/* global angular:true */\n\n\n/**\n * @typedef {object} Coords\n * @property {number} x\n * @property {number} y\n * @property {number} x2\n * @property {number} y2\n * @property {number} w\n * @property {number} h\n */\n\n(function(angular){\n 'use strict';\n\n angular.module('ngJcrop', [])\n\n .constant('FileReader', FileReader)\n\n .constant('ngJcroptDefaultConfig', {\n widthLimit: 1000,\n heightLimit: 1000,\n previewImgStyle: {'width': '100px', 'height': '100px', 'overflow': 'hidden', 'margin-left': '5px'},\n eventName: 'change',\n jcrop: {\n aspectRatio: 1,\n maxWidth: 300,\n maxHeight: 300\n }\n })\n\n .constant('ngJcropTemplate',\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
'\n )\n\n .provider('ngJcropConfig', ['ngJcroptDefaultConfig', 'ngJcropTemplate', function(ngJcroptDefaultConfig, ngJcropTemplate){\n // All configs\n var _configs = {};\n\n // Returns the correct configuration relying the arguments\n function _getConfig(name){\n if( typeof name === 'object' ){\n name = 'default';\n }\n\n if (!(name in _configs)) {\n // If this is a new config, create as default config\n _configs[name] = angular.copy(ngJcroptDefaultConfig);\n _configs[name].template = ngJcropTemplate;\n }\n\n return _configs[name];\n }\n\n // Must have the default at least\n _getConfig('default');\n\n return {\n setConfig: function(name, objConfig){\n var config = _getConfig(name);\n angular.extend(config, typeof name === 'object' ? name : objConfig);\n },\n setJcropConfig: function(name, objConfig){\n var config = _getConfig(name);\n angular.extend(config.jcrop, typeof name === 'object' ? name : objConfig);\n },\n setPreviewStyle: function(name, styleObject){\n var config = _getConfig(name);\n angular.extend(config.previewImgStyle, typeof name === 'object' ? name : styleObject);\n },\n $get: function(){\n return _configs;\n }\n };\n\n }])\n\n .run(['$window', function($window){\n if( !$window.jQuery ){\n throw new Error(\"jQuery isn't included\");\n }\n\n if( !$window.jQuery.Jcrop ){\n throw new Error(\"Jcrop isn't included\");\n }\n }])\n\n .directive('ngJcrop', ['ngJcropConfig', function(ngJcropConfig){\n ngJcropConfig = ngJcropConfig['default'];\n\n return {\n restrict: 'A',\n scope: { ngJcrop: '=', thumbnail: '=?', selection: '=', coords: '=?', ngJcropConfigName: '@' },\n template: ngJcropConfig.template,\n controller: 'JcropController'\n };\n\n }])\n\n .directive('ngJcropInput', function(){\n\n return {\n scope: {ngJcropInput: '@'},\n restrict: 'A',\n controller: 'JcropInputController'\n };\n\n })\n\n .controller('JcropInputController', ['$rootScope', '$element', '$scope', 'FileReader', 'ngJcropConfig',\n function($rootScope, $element, $scope, FileReader, ngJcropConfig){\n var configName = $scope.ngJcropInput || 'default';\n ngJcropConfig = ngJcropConfig[configName];\n\n if ($element[0].type === 'file') {\n // Treating the input[type=\"file\"]\n $scope.onFileReaderLoad = function(ev){\n $rootScope.$broadcast('JcropChangeSrc', ev.target.result, configName);\n\t\t\t\t\n\t\t\t\tconsole.log('okkkxxx')\n\t\t\t\t\n $element[0].value = '';\n };\n\n $scope.setImage = function(image){\n var reader = new FileReader();\n reader.onload = $scope.onFileReaderLoad;\n reader.readAsDataURL(image);\n };\n\n $scope.onChange = function(ev){\n var image = ev.currentTarget.files[0];\n $scope.setImage(image);\n };\n } else if ($element[0].type === 'url') {\n // Treating the input[type=\"url\"]\n $scope.setUrl = function(url) {\n $rootScope.$broadcast('JcropChangeSrc', url, configName);\n };\n\n $scope.onChange = function(ev) {\n var url = ev.currentTarget.value;\n $scope.setUrl(url);\n };\n } else {\n // None of them? Error!\n throw new Error('ngJcropInput directive must be placed with an input[type=\"file\"] or input[type=\"url\"]');\n }\n\n $element.on(ngJcropConfig.eventName, $scope.onChange);\n }])\n\n .controller('JcropController', ['$scope', '$element', 'ngJcropConfig',\n function($scope, $element, ngJcropConfig){\n if (!$scope.ngJcropConfigName) {\n $scope.ngJcropConfigName = 'default';\n }\n\n ngJcropConfig = ngJcropConfig[$scope.ngJcropConfigName];\n\n if (!ngJcropConfig) {\n throw new Error('Unknown \"{name}\" config name'.replace('{name}', $scope.ngJcropConfigName));\n }\n\n /* Checking the mandatory attributes */\n if( angular.isUndefined($scope.selection) || $scope.selection === null ){\n throw new Error('ngJcrop: attribute `selection` is mandatory');\n }\n if( !angular.isArray($scope.selection) ){\n throw new Error('ngJcrop: attribute `selection` must be an array');\n }\n\n /**\n * The coords of current selection\n * If not given, we copy from selection\n * @type {Coords[]}\n */\n if( angular.isUndefined($scope.coords) ) {\n $scope.coords = $scope.selection.concat([]);\n }\n\n if ( !angular.isArray($scope.coords) ) {\n throw new Error('ngJcrop: if given, attribute `coords` must be an array');\n }\n\n\n /**\n * jquery element storing the main img tag\n * @type {jQuery}\n */\n $scope.mainImg = null;\n $scope.imgStyle = {'width': ngJcropConfig.jcrop.maxWidth, 'height': ngJcropConfig.jcrop.maxHeight};\n\n /**\n * jquery element storing the preview img tag\n * @type {jQuery}\n */\n $scope.previewImg = null;\n $scope.previewImgStyle = ngJcropConfig.previewImgStyle;\n\n /**\n * Stores the jcrop instance\n * @type {jCrop}\n */\n $scope.jcrop = null;\n\n /**\n * Updates the `imgStyle` with width and height\n * @param {Image} img\n */\n $scope.updateCurrentSizes = function(img){\n var widthShrinkRatio = img.width / ngJcropConfig.jcrop.maxWidth,\n heightShrinkRatio = img.height / ngJcropConfig.jcrop.maxHeight,\n widthConstraining = img.width > ngJcropConfig.jcrop.maxWidth && widthShrinkRatio > heightShrinkRatio,\n heightConstraining = img.height > ngJcropConfig.jcrop.maxHeight && heightShrinkRatio > widthShrinkRatio,\n squareConstraining = img.height === img.width && img.width > ngJcropConfig.jcrop.maxWidth;\n\n if (widthConstraining) {\n $scope.imgStyle.width = ngJcropConfig.jcrop.maxWidth;\n $scope.imgStyle.height = img.height / widthShrinkRatio;\n } else if (heightConstraining) {\n $scope.imgStyle.height = ngJcropConfig.jcrop.maxHeight;\n $scope.imgStyle.width = img.width / heightShrinkRatio;\n } else if (squareConstraining) {\n $scope.imgStyle.height = ngJcropConfig.jcrop.maxHeight;\n $scope.imgStyle.width = ngJcropConfig.jcrop.maxWidth;\n } else {\n $scope.imgStyle.height = img.height;\n $scope.imgStyle.width = img.width;\n }\n };\n\n /**\n * get the current shrink ratio\n */\n $scope.getShrinkRatio = function(){\n var img = $('').attr('src', $scope.mainImg[0].src)[0];\n\n if(ngJcropConfig.jcrop.maxWidth > img.width && ngJcropConfig.jcrop.maxHeight > img.height){\n return 1;\n }\n\n var widthShrinkRatio = img.width / ngJcropConfig.jcrop.maxWidth,\n heightShrinkRatio = img.height / ngJcropConfig.jcrop.maxHeight,\n widthConstraining = img.width > ngJcropConfig.jcrop.maxWidth && widthShrinkRatio > heightShrinkRatio;\n\n if(widthConstraining) {\n return widthShrinkRatio;\n } else {\n return heightShrinkRatio;\n }\n };\n\n /**\n * set the `$scope.selection` and `$scope.originalSelection` variables\n * @param {Coords} coords An object like this: {x: 1, y: 1, x2: 1, y2: 1, w: 1, h: 1}\n */\n $scope.setSelection = function(coords){\n if( !angular.isArray($scope.coords) ){\n $scope.coords = [];\n }\n\n if( !angular.isArray($scope.selection) ){\n $scope.selection = [];\n }\n\n $scope.coords[0] = coords.x;\n $scope.coords[1] = coords.y;\n $scope.coords[2] = coords.x2;\n $scope.coords[3] = coords.y2;\n $scope.coords[4] = coords.w;\n $scope.coords[5] = coords.h;\n\n var shrinkRatio = $scope.getShrinkRatio();\n $scope.selection[0] = Math.round(coords.x * shrinkRatio);\n $scope.selection[1] = Math.round(coords.y * shrinkRatio);\n $scope.selection[2] = Math.round(coords.x2 * shrinkRatio);\n $scope.selection[3] = Math.round(coords.y2 * shrinkRatio);\n $scope.selection[4] = Math.round(coords.w * shrinkRatio);\n $scope.selection[5] = Math.round(coords.h * shrinkRatio);\n };\n\n /**\n * Updates the preview regarding the coords form jCrop\n * @param {Coords} coords\n */\n $scope.showPreview = function(coords){\n if( !$scope.selectionWatcher ){\n $scope.$apply(function(){\n $scope.setSelection(coords);\n });\n }\n\n if( !$scope.thumbnail ){\n return;\n }\n\n var rx = parseInt($scope.previewImgStyle.width) / coords.w;\n var ry = parseInt($scope.previewImgStyle.height) / coords.h;\n\n var width = $scope.imgStyle.width;\n var height = $scope.imgStyle.height;\n\n if( Array.isArray(ngJcropConfig.jcrop.trueSize) ) {\n width = ngJcropConfig.jcrop.trueSize[0];\n height = ngJcropConfig.jcrop.trueSize[1];\n }\n\n $scope.previewImg.css({\n width: Math.round(rx * width) + 'px',\n maxWidth: Math.round(rx * width) + 'px',\n height: Math.round(ry * height) + 'px',\n maxHeight: Math.round(ry * height) + 'px',\n marginLeft: '-' + Math.round(rx * coords.x) + 'px',\n marginTop: '-' + Math.round(ry * coords.y) + 'px'\n });\n };\n\n /**\n * @event\n */\n $scope.onMainImageLoad = function(){\n $scope.mainImg.off('load', $scope.onMainImageLoad);\n $scope.updateCurrentSizes($('').attr('src', $scope.mainImg[0].src)[0]);\n\n var config = angular.extend({\n onChange: $scope.showPreview,\n onSelect: $scope.showPreview\n }, ngJcropConfig.jcrop);\n\n if( $scope.selection && $scope.selection.length === 6 ){\n config.setSelect = $scope.selection;\n }\n\n $scope.jcrop = jQuery.Jcrop($scope.mainImg[0], config);\n };\n\n /**\n * Destroys the current jcrop instance\n */\n $scope.destroy = function(){\n if( $scope.jcrop ){\n if( $scope.mainImg ){ $scope.mainImg.off('load'); }\n $scope.jcrop.destroy();\n $scope.jcrop = null;\n }\n };\n\n\n /**\n * @init main image\n */\n $scope.initMainImage = function(src){\n $scope.mainImg = $('').addClass('ng-jcrop-image');\n $scope.mainImg.on('load', $scope.onMainImageLoad);\n $scope.mainImg.css({ maxWidth: ngJcropConfig.jcrop.maxWidth, maxHeight: ngJcropConfig.jcrop.maxHeight });\n $scope.mainImg.attr('src', src);\n };\n\n /**\n * @init\n */\n $scope.init = function(src){\n $scope.destroy();\n\n $scope.initMainImage(src);\n\n $scope.imageWrapper = $element.find('.ng-jcrop-image-wrapper');\n $scope.imageWrapper.empty().append($scope.mainImg);\n\n $scope.previewImg = $element.find('.ng-jcrop-thumbnail');\n $scope.previewImg.attr('src', src);\n };\n\n $scope.$on('$destroy', $scope.destroy);\n\n $scope.$on('JcropChangeSrc', function(ev, src, configName){\n\n if ($scope.ngJcropConfigName !== configName) {\n return; // To update only the correct configured jCrop instances\n }\n\n $scope.$apply(function(){\n $scope.setSelection({\n x: 0,\n y: 0,\n x2: ngJcropConfig.widthLimit,\n y2: ngJcropConfig.heightLimit,\n w: ngJcropConfig.widthLimit,\n h: ngJcropConfig.heightLimit\n });\n\n $scope.ngJcrop = src;\n });\n });\n\n $scope.$watch('ngJcrop', function(newValue, oldValue, scope){\n scope.init(newValue);\n });\n\n $scope.$watch('thumbnail', function(newValue, oldValue, scope){\n if( scope.thumbnail ){\n scope.previewImg.show();\n } else {\n scope.previewImg.hide();\n }\n });\n\n }]);\n\n\n})(angular);\n","app.factory('appFactory', ['$http', '$log', '$q',\r\n function ($http, $log, $q) {\r\n\r\n return {\r\n getData: function (url,responseType) {\r\n var deferred = $q.defer();\r\n $http({\r\n method: 'GET',\r\n url: url,\r\n cache: false,\r\n responseType: responseType,\r\n }).then(function (data) {\r\n deferred.resolve(data);\r\n }, function (error) {\r\n Swal.fire(\r\n \"Failed\",\r\n \"There is a problem connecting to the server. \\\r\n Please ensure your internet connection is active. If the problem persists, please try again later.\",\r\n \"error\"\r\n )\r\n deferred.reject(error);\r\n $log.error(error);\r\n });\r\n return deferred.promise;\r\n },\r\n getDataByID: function (url, id) {\r\n var deferred = $q.defer();\r\n $http({\r\n method: 'GET',\r\n url: url + id,\r\n cache: false,\r\n }).then(function (data) {\r\n deferred.resolve(data);\r\n }, function (error) {\r\n deferred.reject(error);\r\n $log.error(error);\r\n });\r\n return deferred.promise;\r\n },\r\n postGetData: function (url, method, data) {\r\n var deferred = $q.defer();\r\n $http({\r\n method: method,\r\n url: url,\r\n data: data\r\n }).then(function (data) {\r\n deferred.resolve(data);\r\n }, function (error) {\r\n Swal.fire(\r\n \"Failed\",\r\n \"There is a problem connecting to the server. \\\r\n Please ensure your internet connection is active. If the problem persists, please try again later.\",\r\n \"error\"\r\n )\r\n deferred.reject(error);\r\n $log.error(error);\r\n });\r\n return deferred.promise;\r\n },\r\n }\r\n}]);","app.controller('BCAAgreementCtrl', ['$scope', '$uibModalInstance', 'agreementNumber', '$q', 'appFactory',\r\n function ($scope, $uibModalInstance, agreementNumber, $q, appFactory) {\r\n\r\n $scope.agreementNumber = agreementNumber;\r\n\r\n $scope.accept = function () {\r\n\r\n $uibModalInstance.close('accept', $scope.agreementNumber);\r\n };\r\n \r\n $scope.Broker = '';\r\n\r\n var allPromise = $q.all([\r\n\r\n $scope.retrieveSession,\r\n\r\n appFactory.getData(`/service/client.svc/getBrokerClient`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.Broker = data.data.d;\r\n }\r\n })\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n });\r\n\r\n $scope.cancel = function () {\r\n\r\n $uibModalInstance.dismiss('cancel', $scope.agreementNumber);\r\n };\r\n}]);","app.controller('changePasswordCtrl', ['$scope', '$routeParams', '$window', '$q', 'appFactory',\r\n function ($scope, $routeParams, $window, $q, appFactory) {\r\n\r\n $scope.User = {};\r\n $scope.User.GeneratedKey = $routeParams.generatedkey;\r\n\r\n // confirm password harus sama\r\n $scope.ConfirmPassword = '';\r\n $scope.checkPassword = function () {\r\n if ($scope.ConfirmPassword != $scope.User.NewPassword) {\r\n $scope.formChange.txtConfirmPassword.$invalid = true;\r\n } else {\r\n $scope.formChange.txtConfirmPassword.$invalid = false;\r\n }\r\n };\r\n\r\n // get params, jika genkey salah maka kembali ke halaman awal / login\r\n if ($routeParams.generatedkey) {\r\n\r\n appFactory.getData(`/service/client.svc/GetChangePasswordKey?key=${$scope.User.GeneratedKey}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n if (!data.data.d.result) {\r\n\r\n $window.location.href = \"/#/\";\r\n return;\r\n }\r\n\r\n $scope.User.Email = data.data.d.email;\r\n }\r\n });\r\n }\r\n\r\n var allPromise = $q.all([]);\r\n\r\n $scope.submit = function () {\r\n\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/changePassword'; // 1\r\n var preconfirmtranslate = \"changepasswordconf\"; // 2\r\n var postData = { chgPass: $scope.User } // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/login\"; \r\n });\r\n };\r\n}]);","app.controller('CIF-CTRL', ['$scope', '$window', '$q', '$filter', 'appFactory',\r\n function ($scope, $window, $q, $filter, appFactory) {\r\n\r\n $scope.CIFInvestor = {\r\n Sex: '',\r\n Religion: '',\r\n MaritalStatus: '',\r\n Education: '',\r\n ResidencyStatus: '',\r\n }\r\n let tmpdate = new Date();\r\n tmpdate.setFullYear(tmpdate.getFullYear() - 17);\r\n $scope.maxDate = tmpdate.toISOString().slice(0, 10);\r\n $scope.Kewarganegaraan = 'WNI / Indonesian';\r\n $scope.KewarganegaraanOption = ['WNI / Indonesian'];\r\n $scope.IDLength = 16;\r\n $scope.chkSeumurHidup = true;\r\n $scope.DisabledSeumurHidup = true;\r\n\r\n $scope.chkSpouseSeumurHidup = true;\r\n $scope.SpouseDisabledSeumurHidup = true;\r\n\r\n $scope.IDCardCitySelected = '';\r\n $scope.DomicileCitySelected = '';\r\n $scope.NationalitySelected = '';\r\n $scope.IDCardCountrySelected = '';\r\n $scope.IDCardKecamatanSelected = '';\r\n $scope.IDCardOK = false;\r\n\r\n $scope.ListNationality = [];\r\n $scope.ListLookup = [];\r\n $scope.ListReligion = [];\r\n $scope.ListMarital = [];\r\n $scope.ListEducation = [];\r\n $scope.ListResidencyStatus = [];\r\n $scope.ListKecamatan = [];\r\n $scope.ListKecamatanDomicile = [];\r\n $scope.ListKecamatanAll = [];\r\n $scope.ListKelurahan = [];\r\n $scope.ListKelurahanDomicile = [];\r\n\r\n $scope.checkIDCardNumber = function () {\r\n if ($scope.CIFInvestor.IDCardNumber) {\r\n\r\n appFactory.getData(`/service/client.svc/checkIDCardNumber?KTP=${$scope.CIFInvestor.IDCardNumber}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n\r\n var obj = data.data.d;\r\n if (obj.key && obj.key == 1) {\r\n\r\n $scope.myForm1.$valid = false;\r\n $scope.IDCardOK = false;\r\n $scope.myForm1.txtNoIDCard.$invalid = true;\r\n\r\n var SWALtranslate = $scope.SWALtranslate(obj.value);\r\n Swal.fire(SWALtranslate.message, SWALtranslate.title, \"error\");\r\n } else {\r\n $scope.IDCardOK = true;\r\n $scope.myForm1.txtNoIDCard.$invalid = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n $scope.KewarganegaraanChange = function () {\r\n\r\n if ($scope.Kewarganegaraan == 'WNI / Indonesian') {\r\n\r\n $scope.IDLength = 16;\r\n $scope.chkSeumurHidup = true;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.CIFInvestor.Nationality = 102;\r\n $scope.CIFInvestor.IDCardCountry = 102;\r\n $scope.CIFInvestor.CopyID = true;\r\n $scope.CIFInvestor.IDCardExpireDate = new Date(9998, 11, 31);\r\n }\r\n else if ($scope.Kewarganegaraan == 'Lainnya / Others') {\r\n\r\n $scope.IDLength = 8;\r\n $scope.chkSeumurHidup = false;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.CIFInvestor.Nationality = 0;\r\n $scope.CIFInvestor.IDCardCountry = 0;\r\n $scope.CIFInvestor.CopyID = false;\r\n $scope.CIFInvestor.IDCardExpireDate = '';\r\n $scope.CIFInvestor.IDCardCity = 0;\r\n $scope.CIFInvestor.IDCardKecamatan = '';\r\n $scope.CIFInvestor.IDCardKelurahan = '';\r\n $scope.CIFInvestor.IDCardRT = '';\r\n $scope.CIFInvestor.IDCardRW = '';\r\n $scope.CIFInvestor.IDCardAddress = '';\r\n $scope.IDCardCitySelected = '';\r\n }\r\n }\r\n\r\n \r\n\r\n $scope.selectNationality = function (item, model, label, event) {\r\n if (item.CIFCountryNID) {\r\n\r\n $scope.CIFInvestor.Nationality = item.CIFCountryNID;\r\n $scope.CIFInvestor.IDCardCountry = item.CIFCountryNID;\r\n $scope.NationalitySelected = item;\r\n $scope.IDCardCountrySelected = item;\r\n }\r\n };\r\n\r\n $scope.selectSpouseNationality = function (item, model, label, event) {\r\n if (item.CIFCountryNID) {\r\n\r\n $scope.CIFInvestor.SpouseNationality = item.CIFCountryNID;\r\n $scope.SpouseNationalitySelected = item;\r\n }\r\n };\r\n\r\n $scope.selectIDCardCountry = function (item, model, label, event) {\r\n if (item.CIFCountryNID)\r\n $scope.CIFInvestor.IDCardCountry = item.CIFCountryNID;\r\n\r\n };\r\n\r\n $scope.selectIDCardCity = function (item, model, label, event) {\r\n $scope.ListKecamatan = '';\r\n $scope.ListKelurahan = '';\r\n\r\n if (item.CIFProvinceCityNID) {\r\n\r\n $scope.CIFInvestor.IDCardCity = item.CIFProvinceCityNID;\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFKecamatanByCityNID?CIFCityNID=${item.CIFProvinceCityNID}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListKecamatan = data.data.d;\r\n $scope.kecamatanChange();\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n $scope.selectDomicileCity = function (item, model, label, event) {\r\n $scope.ListKecamatanDomicile = '';\r\n $scope.ListKelurahanDomicile = '';\r\n\r\n if (item.CIFProvinceCityNID) {\r\n $scope.CIFInvestor.DomicileCity = item.CIFProvinceCityNID;\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFKecamatanByCityNID?CIFCityNID=${item.CIFProvinceCityNID}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListKecamatanDomicile = data.data.d;\r\n $scope.kecamatanChange();\r\n }\r\n });\r\n }\r\n };\r\n\r\n $scope.kecamatanChange = function () {\r\n\r\n if ($scope.CIFInvestor.IDCardKecamatan)\r\n $scope.ListKelurahan = $filter('filter')($scope.ListKecamatan, { Kecamatan: $scope.CIFInvestor.IDCardKecamatan }, true);\r\n }\r\n\r\n $scope.kelurahanChange = function () {\r\n\r\n if ($scope.CIFInvestor.IDCardKelurahan) {\r\n\r\n let temp = $filter('filter')($scope.ListKecamatan, { Kelurahan: $scope.CIFInvestor.IDCardKelurahan }, true);\r\n if (temp)\r\n $scope.CIFInvestor.IDCardPostalCode = temp[0].PostalCode;\r\n\r\n }\r\n }\r\n\r\n $scope.kecamatanDomicileChange = function () {\r\n if ($scope.CIFInvestor.DomicileKecamatan)\r\n $scope.ListKelurahanDomicile = $filter('filter')($scope.ListKecamatanDomicile, { Kecamatan: $scope.CIFInvestor.DomicileKecamatan }, true);\r\n }\r\n\r\n $scope.kelurahanDomicileChange = function () {\r\n if ($scope.CIFInvestor.DomicileKelurahan) {\r\n let temp = $filter('filter')($scope.ListKecamatanDomicile, { Kelurahan: $scope.CIFInvestor.DomicileKelurahan }, true);\r\n if (temp)\r\n $scope.CIFInvestor.DomicilePostalCode = temp[0].PostalCode;\r\n }\r\n }\r\n\r\n $scope.CopyFromID = function () {\r\n if ($scope.CIFInvestor.CopyID) {\r\n\r\n $scope.CIFInvestor.DomicilePostalCode = $scope.CIFInvestor.IDCardPostalCode;\r\n $scope.CIFInvestor.DomicileAddress = $scope.CIFInvestor.IDCardAddress;\r\n $scope.CIFInvestor.DomicileRT = $scope.CIFInvestor.IDCardRT;\r\n $scope.CIFInvestor.DomicileRW = $scope.CIFInvestor.IDCardRW;\r\n $scope.CIFInvestor.DomicileKelurahan = $scope.CIFInvestor.IDCardKelurahan;\r\n $scope.CIFInvestor.DomicileKecamatan = $scope.CIFInvestor.IDCardKecamatan;\r\n $scope.CIFInvestor.DomicileCity = $scope.CIFInvestor.IDCardCity;\r\n $scope.DomicileCitySelected = $scope.IDCardCitySelected;\r\n } else {\r\n\r\n $scope.CIFInvestor.DomicilePostalCode = '';\r\n $scope.CIFInvestor.DomicileAddress = '';\r\n $scope.CIFInvestor.DomicileRT = '';\r\n $scope.CIFInvestor.DomicileRW = '';\r\n $scope.CIFInvestor.DomicileKelurahan = '';\r\n $scope.CIFInvestor.DomicileKecamatan = '';\r\n $scope.CIFInvestor.DomicileCity = 0;\r\n $scope.DomicileCitySelected = '';\r\n }\r\n };\r\n\r\n $scope.mustSelect = function (event, field) {\r\n\r\n if (event.keyCode == 27) {\r\n\r\n let returnValue = true;\r\n switch (field) {\r\n\r\n case 'IDCard': $scope.CIFInvestor.IDCardCity = ''; returnValue = false;\r\n break;\r\n case 'Domicile': $scope.CIFInvestor.DomicileCity = ''; returnValue = false;\r\n break;\r\n case 'Correspondence': $scope.CIFInvestor.CorrespondenceCity = ''; returnValue = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n return returnValue;\r\n }\r\n return true;\r\n }\r\n\r\n var allPromise = $q.all([\r\n $scope.retrieveSessions(),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFCountry`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListNationality = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFCountryAll`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListCountry = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFProvinceCity`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListProvinceCity = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFLookup`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListLookup = data.data.d;\r\n if ($scope.ListLookup) {\r\n\r\n $scope.ListReligion = $filter('filter')($scope.ListLookup, { CIFLookupID: 'Religion' }, true);\r\n $scope.ListMarital = $filter('filter')($scope.ListLookup, { CIFLookupID: 'MaritalStatus' }, true);\r\n $scope.ListEducation = $filter('filter')($scope.ListLookup, { CIFLookupID: 'Educational' }, true);\r\n $scope.ListResidencyStatus = $filter('filter')($scope.ListLookup, { CIFLookupID: 'ResidencyStatus' }, true);\r\n\r\n }\r\n }\r\n })\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIF`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d.Email != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.Stage = 1;\r\n\r\n if ($scope.CIFInvestor.Sex == 0)\r\n $scope.CIFInvestor.Sex = '';\r\n\r\n if ($scope.CIFInvestor.Religion == 0)\r\n $scope.CIFInvestor.Religion = '';\r\n\r\n if ($scope.CIFInvestor.MaritalStatus == 0)\r\n $scope.CIFInvestor.MaritalStatus = '';\r\n\r\n if ($scope.CIFInvestor.Education == 0)\r\n $scope.CIFInvestor.Education = '';\r\n\r\n if ($scope.CIFInvestor.ResidencyStatus == 0)\r\n $scope.CIFInvestor.ResidencyStatus = '';\r\n\r\n if (data.data.d.BirthDate)\r\n $scope.CIFInvestor.BirthDate = new Date(data.data.d.BirthDate);\r\n\r\n \r\n if (data.data.d.ResidencyNStatusDate)\r\n $scope.CIFInvestor.ResidencyNStatusDate = new Date(data.data.d.ResidencyNStatusDate);\r\n\r\n if (data.data.d.IDCardCity) {\r\n\r\n $scope.IDCardCitySelected = $filter('filter')($scope.ListProvinceCity, { CIFProvinceCityNID: data.data.d.IDCardCity }, true)[0];\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFKecamatanByCityNID?CIFCityNID=${data.data.d.IDCardCity}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListKecamatan = data.data.d;\r\n if ($scope.ListKecamatan)\r\n $scope.ListKelurahan = $filter('filter')($scope.ListKecamatan, { Kecamatan: $scope.CIFInvestor.IDCardKecamatan }, true);\r\n }\r\n })\r\n }\r\n\r\n if (data.data.d.DomicileCity) {\r\n\r\n $scope.DomicileCitySelected = $filter('filter')($scope.ListProvinceCity, { CIFProvinceCityNID: data.data.d.DomicileCity }, true)[0];\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFKecamatanByCityNID?CIFCityNID=${data.data.d.DomicileCity}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListKecamatanDomicile = data.data.d;\r\n if ($scope.ListKecamatanDomicile)\r\n $scope.ListKelurahanDomicile = $filter('filter')($scope.ListKecamatanDomicile, { Kecamatan: $scope.CIFInvestor.DomicileKecamatan }, true);\r\n }\r\n });\r\n }\r\n\r\n if (data.data.d.Nationality) {\r\n\r\n if (data.data.d.Nationality == 102) {\r\n\r\n $scope.IDLength = 16;\r\n $scope.chkSeumurHidup = true;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.CIFInvestor.Nationality = 102;\r\n $scope.CIFInvestor.IDCardCountry = 102;\r\n $scope.Kewarganegaraan = $scope.KewarganegaraanOption[0];\r\n $scope.CIFInvestor.IDCardExpireDate = new Date(9998, 11, 31);\r\n } else {\r\n\r\n $scope.IDLength = 8;\r\n $scope.chkSeumurHidup = false;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.Kewarganegaraan = $scope.KewarganegaraanOption[1];\r\n $scope.NationalitySelected = $filter('filter')($scope.ListNationality, { CIFCountryNID: data.data.d.Nationality }, true)[0];\r\n $scope.IDCardCountrySelected = $filter('filter')($scope.ListCountry, { CIFCountryNID: data.data.d.IDCardCountry }, true)[0];\r\n\r\n if (data.data.d.IDCardExpireDate)\r\n $scope.CIFInvestor.IDCardExpireDate = new Date(data.data.d.IDCardExpireDate);\r\n }\r\n } else {\r\n $scope.KewarganegaraanChange();\r\n }\r\n\r\n \r\n\r\n if (data.data.d.CopyID)\r\n $scope.CopyFromID();\r\n\r\n var SWALtranslate = $scope.SWALtranslate('preparationinfouploadphotocif1');\r\n\r\n if ($scope.languageSelected.lang == 'id') {\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: 'Ketentuan untuk ambil gambar',\r\n imageUrl: 'img/logo/Unggah Foto.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n\r\n } \r\n \r\n if ($scope.languageSelected.lang == 'en') {\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n imageUrl: 'img/logo/Upload Photo.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n $scope.prepareData = function () {\r\n\r\n if ($scope.CIFInvestor.CopyID) {\r\n\r\n $scope.CIFInvestor.DomicilePostalCode = $scope.CIFInvestor.IDCardPostalCode;\r\n $scope.CIFInvestor.DomicileAddress = $scope.CIFInvestor.IDCardAddress;\r\n $scope.CIFInvestor.DomicileRT = $scope.CIFInvestor.IDCardRT;\r\n $scope.CIFInvestor.DomicileRW = $scope.CIFInvestor.IDCardRW;\r\n $scope.CIFInvestor.DomicileKelurahan = $scope.CIFInvestor.IDCardKelurahan;\r\n $scope.CIFInvestor.DomicileKecamatan = $scope.CIFInvestor.IDCardKecamatan;\r\n $scope.CIFInvestor.DomicileCity = $scope.CIFInvestor.IDCardCity;\r\n $scope.DomicileCitySelected = $scope.IDCardCitySelected;\r\n }\r\n\r\n if ($scope.CIFInvestor.AccountStatus)\r\n $scope.CIFInvestor.AccountStatus = Number($scope.CIFInvestor.AccountStatus);\r\n\r\n //if ($scope.CIFInvestor.Sex)\r\n // $scope.CIFInvestor.Sex = Number($scope.CIFInvestor.Sex);\r\n\r\n //if ($scope.CIFInvestor.Religion)\r\n // $scope.CIFInvestor.Religion = Number($scope.CIFInvestor.Religion);\r\n\r\n //if ($scope.CIFInvestor.MaritalStatus)\r\n // $scope.CIFInvestor.MaritalStatus = Number($scope.CIFInvestor.MaritalStatus);\r\n\r\n //if ($scope.CIFInvestor.Education)\r\n // $scope.CIFInvestor.Education = Number($scope.CIFInvestor.Education);\r\n\r\n if ($scope.CIFInvestor.Nationality)\r\n $scope.CIFInvestor.Nationality = Number($scope.CIFInvestor.Nationality);\r\n\r\n if ($scope.CIFInvestor.IDCardCountry)\r\n $scope.CIFInvestor.IDCardCountry = Number($scope.CIFInvestor.IDCardCountry);\r\n\r\n if ($scope.CIFInvestor.IDCardCity)\r\n $scope.CIFInvestor.IDCardCity = Number($scope.CIFInvestor.IDCardCity);\r\n\r\n if ($scope.CIFInvestor.DomicileCity)\r\n $scope.CIFInvestor.DomicileCity = Number($scope.CIFInvestor.DomicileCity);\r\n\r\n if ($scope.CIFInvestor.Education != 1)\r\n $scope.CIFInvestor.EducationText = '';\r\n\r\n var language;\r\n if (window.navigator.languages) {\r\n\r\n language = window.navigator.languages[0];\r\n } else {\r\n\r\n language = window.navigator.userLanguage || window.navigator.language;\r\n }\r\n\r\n $scope.CIFInvestor.Language = language;\r\n\r\n var date1 = $filter('date')(new Date($scope.CIFInvestor.BirthDate), 'yyyy-MM-dd');\r\n\r\n if ($scope.CIFInvestor.BirthDate) {\r\n\r\n $scope.CIFInvestor.ClientBirthDate1 = $scope.CIFInvestor.BirthDate.toLocaleDateString('en-US');\r\n $scope.CIFInvestor.ClientBirthDate2 = $scope.CIFInvestor.BirthDate;\r\n $scope.CIFInvestor.ClientBirthDate3 = date1;\r\n }\r\n }\r\n\r\n $scope.submit = function () {\r\n $scope.prepareData();\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/SaveCIF'; // 1 \r\n var preconfirmtranslate = \"submitCif1\"; // 2\r\n var postData = { cifdata: $scope.CIFInvestor } // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/cif/data-pekerjaan\";\r\n });\r\n }\r\n\r\n $scope.validationinput = function () {\r\n\r\n var errorForm = $scope.myForm1.$error.required\r\n var validation = $scope.myForm1.$valid;\r\n var message = [];\r\n //console.log('error :', errorForm);\r\n\r\n if (errorForm) {\r\n for (let i = 0; i < errorForm.length; i++) {\r\n //message += errorForm[i].$name + \" , \";\r\n message.push(errorForm[i].$name);\r\n }\r\n\r\n if ($scope.CIFInvestor.IDCardNumber == null)\r\n $scope.IDCardOK = false;\r\n\r\n if ($scope.CIFInvestor.FirstName != null //Data Pribadi Pemohon\r\n && $scope.Kewarganegaraan != null\r\n && $scope.SpouseKewarganegaraan != null\r\n && $scope.CIFInvestor.IDCardNumber != null\r\n && $scope.CIFInvestor.SpouseName != null\r\n && $scope.CIFInvestor.SpouseRelationship != null\r\n && $scope.CIFInvestor.MotherName != null\r\n && $scope.CIFInvestor.Sex != null\r\n && $scope.CIFInvestor.BirthPlace != null\r\n && $scope.CIFInvestor.BirthDate != null\r\n && $scope.CIFInvestor.Religion != null\r\n && $scope.CIFInvestor.MaritalStatus != null\r\n && $scope.CIFInvestor.Education != null\r\n && $scope.CIFInvestor.EducationText != null\r\n && $scope.CIFInvestor.ResidencyStatus != null\r\n && $scope.CIFInvestor.IDCardCitySelected != null //Alamat Sesuai Identitas\r\n && $scope.CIFInvestor.IDCardKecamatan != null\r\n && $scope.CIFInvestor.IDCardKelurahan != null\r\n && $scope.CIFInvestor.IDCardRT != null\r\n && $scope.CIFInvestor.IDCardRW != null\r\n && $scope.CIFInvestor.IDCardPostalCode != null\r\n && $scope.CIFInvestor.IDCardAddress != null\r\n && $scope.DomicileCitySelected != null //Alamat Domisili \r\n && $scope.CIFInvestor.DomicileKecamatan != null\r\n && $scope.CIFInvestor.DomicileKelurahan != null\r\n && $scope.CIFInvestor.DomicileRT != null\r\n && $scope.CIFInvestor.DomicileRW != null\r\n && $scope.CIFInvestor.DomicilePostalCode != null\r\n && $scope.CIFInvestor.DomicileAddress != null)\r\n\r\n console.log('validation success');\r\n\r\n }\r\n\r\n //PROSES VALIDATION\r\n if (validation == false) {\r\n console.log(\"error : \" + message);\r\n\r\n var SWALtranslate = $scope.SWALtranslate('validationinput');\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n imageUrl: 'img/collection/wrong.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n }]);\r\n","app.controller('CIF2-CTRL', ['$scope','$rootScope','$http', '$window', '$q', '$filter', 'appFactory',\r\n function ($scope,$rootScope,$http, $window, $q, $filter, appFactory) {\r\n\r\n $scope.listBankRDN = ['BCA (Online)', 'MANDIRI (Offline)', 'CIMB (Offline)', 'MAYAPADA (Offline)'];\r\n $scope.rdnbca = $scope.listBankRDN[0];\r\n $scope.bankRDN = '';\r\n $scope.PhoneCode = '+62';\r\n $scope.CIFInvestor = {}\r\n $scope.bankpribadi = '';\r\n $scope.SpouseKewarganegaraan = 'WNI / Indonesian';\r\n $scope.SpouseKewarganegaraanOption = ['WNI / Indonesian', 'Lainnya / Others'];\r\n $scope.chkSpouseSeumurHidup = true;\r\n $scope.disabledNPWPNumber = false;\r\n\r\n $scope.OPBBCA = {\r\n occupation: '',\r\n occupationText: '',\r\n position: '',\r\n positionText: '',\r\n business: '',\r\n businessText: ''\r\n }\r\n\r\n $scope.OPBOTHER = {\r\n occupation: '',\r\n occupationText: '',\r\n position: '',\r\n positionText: '',\r\n business: '',\r\n businessText: ''\r\n }\r\n\r\n $scope.OPSPOUSE = {\r\n occupation: '',\r\n occupationText: '',\r\n position: '',\r\n business: '',\r\n }\r\n\r\n $scope.disableBank = true;\r\n $scope.disableCIFInvestorQuestionRDN = false;\r\n\r\n $scope.selectedFundSource = [];\r\n $scope.selectedSpouseFundSource = [];\r\n\r\n $scope.ListBank = {};\r\n $scope.listpekerjaan_BCA = {};\r\n $scope.listjabatan_BCA = {};\r\n $scope.listusaha_BCA = {};\r\n $scope.ListLookup = [];\r\n $scope.ListOccupation = [];\r\n $scope.ListSpouseIncome = [];\r\n\r\n $scope.CompanyCitySelected = '';\r\n $scope.SpouseCompanyCitySelected = '';\r\n $scope.mustSelect = function (event, field) {\r\n\r\n if (event.keyCode == 27) {\r\n\r\n $scope.CIFInvestor.DomicileCity = '';\r\n return false;\r\n }\r\n return true;\r\n }\r\n $scope.selectCity = function (item, model, label, event) {\r\n\r\n if (item.CIFProvinceCityNID) {\r\n\r\n $scope.CIFInvestor.SpouseCompanyCity = item.CIFProvinceCityNID;\r\n $scope.CIFInvestor.CompanyCity = item.CIFProvinceCityNID;\r\n }\r\n };\r\n\r\n $scope.selectSpouseNationality = function (item, model, label, event) {\r\n if (item.CIFCountryNID) {\r\n\r\n $scope.CIFInvestor.SpouseNationality = item.CIFCountryNID;\r\n $scope.SpouseNationalitySelected = item;\r\n }\r\n };\r\n\r\n $scope.SpouseKewarganegaraanChange = function () {\r\n\r\n if ($scope.SpouseKewarganegaraan == 'WNI / Indonesian' && $scope.spouseMandatory) {\r\n\r\n $scope.IDLength = 16;\r\n $scope.chkSpouseSeumurHidup = true;\r\n $scope.SpouseDisabledSeumurHidup = true;\r\n $scope.CIFInvestor.SpouseNationality = 102;\r\n $scope.CIFInvestor.SpouseIDCardExpiredDate = new Date(9998, 11, 31);\r\n }\r\n else if ($scope.SpouseKewarganegaraan == 'Lainnya / Others') {\r\n\r\n $scope.IDLength = 8;\r\n $scope.chkSpouseSeumurHidup = false;\r\n $scope.SpouseDisabledSeumurHidup = true;\r\n $scope.CIFInvestor.SpouseNationality = 0;\r\n $scope.CIFInvestor.SpouseIDCardExpiredDate = '';\r\n }\r\n }\r\n\r\n $scope.questionRDNchange = function () {\r\n\r\n $scope.OPBBCA.occupation = '';\r\n $scope.OPBBCA.occupationText = '';\r\n $scope.OPBBCA.position = '';\r\n $scope.OPBBCA.positionText = '';\r\n $scope.OPBBCA.business = '';\r\n $scope.OPBBCA.businessText = '';\r\n\r\n $scope.OPBOTHER.occupation = '';\r\n $scope.OPBOTHER.occupationText = '';\r\n $scope.OPBOTHER.position = '';\r\n $scope.OPBOTHER.positionText = '';\r\n $scope.OPBOTHER.business = '';\r\n $scope.OPBOTHER.businessText = '';\r\n\r\n $scope.CIFInvestor.BankName = \"\";\r\n $scope.disableBank = false;\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == '1' || $scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n $scope.bankpribadi = \"BANK CENTRAL ASIA\";\r\n $scope.disableBank = true;\r\n }\r\n };\r\n\r\n $scope.changeSpouseMandatory = function (param) {\r\n\r\n if (param) {\r\n\r\n $scope.spouseMandatory = true;\r\n } else {\r\n let flag = false;\r\n\r\n if ($scope.OPBBCA) {\r\n\r\n if ($scope.OPBBCA.occupation.key == 1 || $scope.OPBBCA.occupation.key == 2) {\r\n\r\n flag = true;\r\n $scope.spouseMandatory2 = true;\r\n $scope.spouseMandatory1 = false\r\n }\r\n }\r\n\r\n if ($scope.OPBOTHER) {\r\n\r\n if ($scope.OPBOTHER.CIFLookupInteger == 4 || $scope.OPBOTHER.CIFLookupInteger == 6) {\r\n\r\n flag = true;\r\n $scope.spouseMandatory2 = true;\r\n $scope.spouseMandatory1 = false;\r\n }\r\n\r\n }\r\n\r\n if ($scope.selectedFundSource.indexOf(7) > -1) {\r\n\r\n flag = true;\r\n $scope.spouseMandatory2 = true;\r\n $scope.spouseMandatory1 = false;\r\n }\r\n\r\n if ($scope.selectedFundSource.indexOf(6) > -1) {\r\n\r\n flag = true;\r\n $scope.spouseMandatory1 = true;\r\n $scope.spouseMandatory2 = false;\r\n }\r\n\r\n if (!flag) {\r\n\r\n $scope.CIFInvestor.SpouseCompanyName = '';\r\n $scope.CIFInvestor.SpouseIncomePerAnnum = '';\r\n $scope.CIFInvestor.SpouseOccupation = '';\r\n $scope.CIFInvestor.SpousePosition = '';\r\n $scope.CIFInvestor.SpouseNatureOfBusiness = '';\r\n $scope.CIFInvestor.SpouseCompanyCity = '';\r\n $scope.CIFInvestor.SpouseCompanyPostalCode = '';\r\n $scope.CIFInvestor.SpouseCompanyAddress = '';\r\n $scope.CIFInvestor.SpouseFundSource = '';\r\n\r\n $scope.SpouseCompanyCitySelected = '';\r\n $scope.selectedSpouseFundSource = [];\r\n\r\n $scope.OPSPOUSE.occupation = '';\r\n $scope.OPSPOUSE.occupationText = '';\r\n $scope.OPSPOUSE.position = '';\r\n $scope.OPSPOUSE.business = '';\r\n }\r\n\r\n $scope.spouseMandatory = flag;\r\n }\r\n }\r\n\r\n $scope.NPWPNumber = function () {\r\n if ($scope.CIFInvestor.QuestionNPWP == 1) {\r\n $scope.CIFInvestor.NPWPNumber = $scope.CIFInvestor.IDCardNumber\r\n $scope.disabledNPWPNumber = true;\r\n }\r\n };\r\n\r\n $scope.updateNPWP = function () {\r\n\r\n if ($scope.CIFInvestor.NPWPNumber) {\r\n\r\n if (+$scope.QuestionNPWP == 1) {\r\n\r\n $scope.CIFInvestor.NPWPNumber;\r\n } else {\r\n\r\n $scope.CIFInvestor.NPWPReason;\r\n $scope.CIFInvestor.NPWPNumber = '';\r\n }\r\n }\r\n };\r\n\r\n $scope.occupationChange_BCA = function () {\r\n\r\n if ($scope.OPBBCA.occupation) {\r\n\r\n $scope.OPBBCA.occupationText = '';\r\n $scope.OPBBCA.position = 0;\r\n $scope.OPBBCA.positionText = '';\r\n $scope.OPBBCA.business = 0;\r\n $scope.OPBBCA.businessText = '';\r\n\r\n if ($scope.OPBBCA.occupation.key == 1 || $scope.OPBBCA.occupation.key == 2)\r\n $scope.changeSpouseMandatory(true);\r\n else\r\n $scope.changeSpouseMandatory();\r\n\r\n appFactory.getData(`/service/client.svc/GetJabatan?Pekerjaan=${$scope.OPBBCA.occupation.key}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listjabatan_BCA = data.data.d;\r\n\r\n if ($scope.listjabatan_BCA.length) {\r\n $scope.OPBBCA.positionText = '';\r\n $scope.OPBBCA.position = $scope.listjabatan_BCA[0];\r\n\r\n $scope.positionChange_BCA();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n $scope.positionChange_BCA = function () {\r\n\r\n appFactory.getData(`/service/client.svc/GetBidangUsaha?Jabatan=${$scope.OPBBCA.position.key}&Pekerjaan=${$scope.OPBBCA.occupation.key}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listusaha_BCA = data.data.d;\r\n\r\n if ($scope.listusaha_BCA.length) {\r\n\r\n $scope.OPBBCA.businessText = '';\r\n $scope.OPBBCA.business = $scope.listusaha_BCA[0];\r\n }\r\n }\r\n });\r\n };\r\n\r\n $scope.occupationChange_OTHER = function () {\r\n\r\n if ($scope.OPBOTHER.occupation) {\r\n\r\n $scope.OPBOTHER.occupationText = '';\r\n $scope.OPBOTHER.position = '';\r\n $scope.OPBOTHER.positionText = '';\r\n $scope.OPBOTHER.business = '';\r\n $scope.OPBOTHER.businessText = '';\r\n\r\n if ($scope.OPBOTHER.occupation == '4' || $scope.OPBOTHER.occupation == '6')\r\n $scope.changeSpouseMandatory(true);\r\n else\r\n $scope.changeSpouseMandatory();\r\n }\r\n }\r\n\r\n $scope.toggleFundSourceItem = function (fundsource) {\r\n\r\n let indexCIFLookupInteger = $scope.selectedFundSource.indexOf(fundsource.CIFLookupInteger);\r\n\r\n if (indexCIFLookupInteger > -1)\r\n $scope.selectedFundSource.splice(indexCIFLookupInteger, 1);\r\n else\r\n $scope.selectedFundSource.push(fundsource.CIFLookupInteger);\r\n\r\n if ($scope.selectedFundSource.indexOf(1) < 0)\r\n $scope.CIFInvestor.FundSourceText = '';\r\n\r\n $scope.changeSpouseMandatory();\r\n }\r\n\r\n $scope.toggleSpouseFundSourceItem = function (fundsource) {\r\n\r\n $scope.CIFInvestor.SpouseFundSource = '';\r\n let indexCIFLookupInteger = $scope.selectedSpouseFundSource.indexOf(fundsource.CIFLookupInteger);\r\n\r\n if (indexCIFLookupInteger > -1)\r\n $scope.selectedSpouseFundSource.splice(indexCIFLookupInteger, 1);\r\n else\r\n $scope.selectedSpouseFundSource.push(fundsource.CIFLookupInteger);\r\n\r\n if ($scope.selectedSpouseFundSource.indexOf(1) < 0)\r\n $scope.CIFInvestor.SpouseFundSourceText = '';\r\n }\r\n\r\n $scope.prepareData = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == '1' || $scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n $scope.CIFInvestor.BankName = $scope.bankpribadi;\r\n $scope.CIFInvestor.Occupation = $scope.OPBBCA.occupation.key;\r\n $scope.CIFInvestor.OccupationText = $scope.OPBBCA.occupationText;\r\n $scope.CIFInvestor.Position = $scope.OPBBCA.position.key;\r\n $scope.CIFInvestor.PositionText = $scope.OPBBCA.positionText;\r\n $scope.CIFInvestor.NatureOfBusiness = $scope.OPBBCA.business.key;\r\n $scope.CIFInvestor.NatureOfBusinessText = $scope.OPBBCA.businessText;\r\n } else {\r\n\r\n $scope.CIFInvestor.Occupation = Number($scope.OPBOTHER.occupation);\r\n $scope.CIFInvestor.BankName = $scope.bankpribadi;\r\n $scope.CIFInvestor.OccupationText = $scope.OPBOTHER.occupationText;\r\n $scope.CIFInvestor.Position = 0;\r\n $scope.CIFInvestor.NatureOfBusiness = 0;\r\n\r\n if ($scope.OPBOTHER.occupation == '4') {\r\n\r\n $scope.CIFInvestor.PositionText = '';\r\n $scope.CIFInvestor.NatureOfBusinessText = '';\r\n } else {\r\n\r\n $scope.CIFInvestor.PositionText = $scope.OPBOTHER.positionText;\r\n $scope.CIFInvestor.NatureOfBusiness = 0;\r\n $scope.CIFInvestor.NatureOfBusinessText = $scope.OPBOTHER.businessText;\r\n }\r\n }\r\n\r\n if ($scope.spouseMandatory) {\r\n\r\n $scope.CIFInvestor.SpouseOccupation = Number($scope.OPSPOUSE.occupation);\r\n $scope.CIFInvestor.SpouseOccupationText = $scope.SpouseOccupationText;\r\n $scope.CIFInvestor.SpousePosition = $scope.OPSPOUSE.position;\r\n $scope.CIFInvestor.SpouseNatureOfBusiness = ($scope.OPSPOUSE.business);\r\n //$scope.CIFInvestor.SpouseCompanyCity = Number($scope.SpouseCompanyCitySelected);\r\n } else {\r\n\r\n $scope.CIFInvestor.SpouseIncomePerAnnum = 0;\r\n $scope.CIFInvestor.SpouseOccupation = 0;\r\n $scope.CIFInvestor.SpouseCompanyCity = 0;\r\n }\r\n\r\n if ($scope.selectedFundSource) {\r\n\r\n $scope.CIFInvestor.FundSource = '';\r\n\r\n for (var i = 0; i < $scope.selectedFundSource.length; i++) {\r\n\r\n if ($scope.CIFInvestor.FundSource.length > 0)\r\n $scope.CIFInvestor.FundSource += ',';\r\n $scope.CIFInvestor.FundSource += $scope.selectedFundSource[i];\r\n }\r\n }\r\n\r\n\r\n if ($scope.selectedSpouseFundSource) {\r\n\r\n $scope.CIFInvestor.SpouseFundSource = '';\r\n\r\n for (var i = 0; i < $scope.selectedSpouseFundSource.length; i++) {\r\n\r\n if ($scope.CIFInvestor.SpouseFundSource.length > 0)\r\n $scope.CIFInvestor.SpouseFundSource += ',';\r\n $scope.CIFInvestor.SpouseFundSource += $scope.selectedSpouseFundSource[i];\r\n }\r\n }\r\n };\r\n\r\n\r\n $scope.submit = function () {\r\n $scope.prepareData();\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/SaveCIF'; // 1 \r\n var preconfirmtranslate = \"submitCif1\"; // 2\r\n var postData = { cifdata: $scope.CIFInvestor } // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/cif/data-pekerjaan\";\r\n else {\r\n Swal.fire('Failed', data.data.d.response, 'error');\r\n }\r\n });\r\n }\r\n\r\n $scope.submit = function () {\r\n $scope.prepareData();\r\n var finished = 0;\r\n \r\n $rootScope.AlertYesNo('question', 'Konfirmasi', \"Apakah data yang diisi sudah sesuai?\")\r\n .then((result) => {\r\n if (result.value) {\r\n $rootScope.AlertShowLoading('warning', 'Loading...', '', 0);\r\n $http({\r\n method: 'POST',\r\n url: '/service/client.svc/SaveCIF',\r\n data:\r\n {\r\n cifdata: $scope.CIFInvestor\r\n },\r\n }).then(function (data) {\r\n\r\n if (data.data.d.result) {\r\n Swal.close();\r\n $window.location.href = \"#/cif/data-pendukung\";\r\n }\r\n else {\r\n Swal.fire('Failed', data.data.d.response, 'error');\r\n }\r\n }, function (error) {\r\n Swal.fire('Error', 'error - Please check your connection', 'error');\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n $scope.validationinput = function () {\r\n\r\n if ($scope.CIFInvestor.BankCabang != null //Data Bank & Pekerjaan\r\n && $scope.CIFInvestor.QuestionNPWP != null\r\n && $scope.CIFInvestor.NPWPNumber != null\r\n && $scope.CIFInvestor.NPWPReason != null\r\n && $scope.OPBBCA.occupation != null\r\n && $scope.OPBBCA.positionText != null\r\n && $scope.OPBBCA.businessText != null\r\n && ($scope.CIFInvestor.CompanyName != null || $scope.CIFInvestor.CompanyName != \"\")\r\n && $scope.CIFInvestor.CompanyAddress != null\r\n && $scope.CompanyCitySelected != null\r\n && $scope.CIFInvestor.CompanyPostalCode != null\r\n && $scope.FundSource != null\r\n && $scope.CIFInvestor.IncomePerAnnum != null\r\n && $scope.CIFInvestor.ContactPersonName != null //Kontak Darurat\r\n && $scope.CIFInvestor.ContactPersonRelationn != null\r\n && $scope.CIFInvestor.ContactPersonMobilePhone != null\r\n && $scope.CIFInvestor.SpouseCompanyName != null //Jika memilih sumber penghasilan dari ortu\r\n && $scope.CIFInvestor.SpouseIncomePerAnnum != null\r\n && $scope.OPSPOUSE.occupation != null\r\n && $scope.OPSPOUSE.position != null\r\n && $scope.SpouseCompanyCitySelected != null\r\n && $scope.CIFInvestor.SpouseCompanyPostalCode != null\r\n && $scope.CIFInvestor.SpouseCompanyAddress != null\r\n && $scope.SpouseFundSource.selected != null\r\n && $scope.CIFInvestor.SpouseFundSourceText != null)\r\n {\r\n console.log('validation success');\r\n }\r\n else {\r\n var SWALtranslate = $scope.SWALtranslate('validationinput');\r\n\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n imageUrl: 'img/collection/wrong.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n\r\n var allPromise = $q.all([\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFCountry`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListNationality = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFProvinceCity`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListProvinceCity = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFLookup`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListLookup = data.data.d;\r\n\r\n if ($scope.ListLookup) {\r\n\r\n $scope.ListOccupation = $filter('filter')($scope.ListLookup, { CIFLookupID: 'Occupation' }, true);\r\n $scope.ListSpouseIncome = $filter('filter')($scope.ListLookup, { CIFLookupID: 'IncomePerAnnum' }, true);\r\n $scope.ListFundSource = $filter('filter')($scope.ListLookup, { CIFLookupID: 'FundSource' }, true);\r\n $scope.ListIncomePerAnnum = $filter('filter')($scope.ListLookup, { CIFLookupID: 'IncomePerAnnum' }, true);\r\n }\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFBank`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.ListBank = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFPekerjaan`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listpekerjaan_BCA = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetJabatan`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listposition_BCA = data.data.d;\r\n }\r\n }),\r\n\r\n appFactory.getData(`/service/client.svc/GetBidangUsaha`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listnature_BCA = data.data.d;\r\n }\r\n })\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIF`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.Stage = 2;\r\n if ($scope.CIFInvestor.QuestionRDN == 0) {\r\n\r\n $scope.CIFInvestor.QuestionRDN = '';\r\n }\r\n\r\n if ($scope.CIFInvestor.BankOwner == '' || !$scope.CIFInvestor.BankOwner)\r\n $scope.CIFInvestor.BankOwner = $scope.CIFInvestor.FirstName;\r\n\r\n $scope.bankpribadi = $scope.CIFInvestor.BankName;\r\n\r\n if ($scope.CIFInvestor.SpouseCompanyCity)\r\n $scope.SpouseCompanyCitySelected = $filter('filter')($scope.ListProvinceCity, { CIFProvinceCityNID: $scope.CIFInvestor.DomicileCity }, true)[0];\r\n\r\n if ($scope.CIFInvestor.CompanyCity)\r\n $scope.CompanyCitySelected = $filter('filter')($scope.ListProvinceCity, { CIFProvinceCityNID: $scope.CIFInvestor.CompanyCity }, true)[0];\r\n\r\n if (data.data.d.SpouseIDCardExpiredDate)\r\n $scope.CIFInvestor.SpouseIDCardExpiredDate = new Date(data.data.d.SpouseIDCardExpiredDate);\r\n\r\n if (data.data.d.SpouseBirthDate)\r\n $scope.CIFInvestor.SpouseBirthDate = new Date(data.data.d.SpouseBirthDate);\r\n\r\n\r\n if ($scope.CIFInvestor.QuestionRDN) {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == '1' || $scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n $scope.OPBBCA.occupationText = $scope.CIFInvestor.OccupationText;\r\n $scope.OPBBCA.positionText = $scope.CIFInvestor.PositionText;\r\n $scope.OPBBCA.businessText = $scope.CIFInvestor.NatureOfBusinessText;\r\n\r\n if ($scope.CIFInvestor.Occupation && $scope.CIFInvestor.Occupation > 0) {\r\n\r\n $scope.OPBBCA.occupation = $filter('filter')($scope.listpekerjaan_BCA, { key: $scope.CIFInvestor.Occupation }, true)[0];\r\n\r\n appFactory.getData(`/service/client.svc/GetJabatan?Pekerjaan=${$scope.OPBBCA.occupation.key}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listjabatan_BCA = data.data.d;\r\n\r\n if ($scope.listjabatan_BCA.length) {\r\n\r\n if ($scope.CIFInvestor.Position && $scope.CIFInvestor.Position > 0) {\r\n\r\n $scope.OPBBCA.position = $filter('filter')($scope.listjabatan_BCA, { key: $scope.CIFInvestor.Position }, true)[0];\r\n\r\n appFactory.getData(`/service/client.svc/GetBidangUsaha?Jabatan=${$scope.OPBBCA.position.key}&Pekerjaan=${$scope.OPBBCA.occupation.key}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.listusaha_BCA = data.data.d;\r\n\r\n if ($scope.listusaha_BCA.length) {\r\n\r\n if ($scope.CIFInvestor.NatureOfBusiness != null)\r\n $scope.OPBBCA.business = $filter('filter')($scope.listusaha_BCA, { key: $scope.CIFInvestor.NatureOfBusiness }, true)[0];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n })\r\n }\r\n } else {\r\n\r\n $scope.OPBOTHER.occupation = $scope.CIFInvestor.Occupation;\r\n $scope.OPBOTHER.occupationText = $scope.CIFInvestor.OccupationText;\r\n $scope.OPBOTHER.position = $scope.CIFInvestor.Position;\r\n $scope.OPBOTHER.positionText = $scope.CIFInvestor.PositionText;\r\n $scope.OPBOTHER.business = $scope.CIFInvestor.NatureOfBusiness;\r\n $scope.OPBOTHER.businessText = $scope.CIFInvestor.NatureOfBusinessText;\r\n }\r\n }\r\n\r\n\r\n if (data.data.d.SpouseNationality) {\r\n\r\n if (data.data.d.SpouseNationality == 102) {\r\n\r\n $scope.IDLength = 16;\r\n $scope.chkSpouseSeumurHidup = true;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.CIFInvestor.SpouseNationality = 102;\r\n $scope.SpouseKewarganegaraan = $scope.SpouseKewarganegaraanOption[0];\r\n $scope.CIFInvestor.SpouseIDCardExpiredDate = new Date(9998, 11, 31);\r\n } else {\r\n\r\n $scope.IDLength = 8;\r\n $scope.chkSpouseSeumurHidup = false;\r\n $scope.DisabledSeumurHidup = true;\r\n $scope.SpouseKewarganegaraan = $scope.SpouseKewarganegaraanOption[1];\r\n $scope.SpouseNationalitySelected = $filter('filter')($scope.ListNationality, { CIFCountryNID: data.data.d.SpouseNationality }, true)[0];\r\n\r\n if (data.data.d.SpouseIDCardExpiredDate)\r\n $scope.CIFInvestor.SpouseIDCardExpiredDate = new Date(data.data.d.SpouseIDCardExpiredDate);\r\n }\r\n } else {\r\n $scope.SpouseKewarganegaraanChange();\r\n }\r\n\r\n if ($scope.CIFInvestor.SpouseCompanyCity == 0)\r\n $scope.CIFInvestor.SpouseCompanyCity = '';\r\n\r\n if ($scope.CIFInvestor.CompanyCity == 0)\r\n $scope.CIFInvestor.CompanyCity = '';\r\n\r\n if ($scope.CIFInvestor.FundSource) {\r\n\r\n $scope.selectedFundSource = [];\r\n let temp = $scope.CIFInvestor.FundSource.split(',');\r\n\r\n for (var i = 0; i < temp.length; i++) {\r\n\r\n $scope.selectedFundSource.push(Number(temp[i]));\r\n }\r\n }\r\n if ($scope.CIFInvestor.SpouseFundSource) {\r\n\r\n $scope.selectedSpouseFundSource = [];\r\n let temp = $scope.CIFInvestor.SpouseFundSource.split(',');\r\n\r\n for (var i = 0; i < temp.length; i++) {\r\n\r\n $scope.selectedSpouseFundSource.push(Number(temp[i]));\r\n }\r\n }\r\n\r\n if ($scope.CIFInvestor.SpouseOccupation == 0)\r\n $scope.CIFInvestor.SpouseOccupation = '';\r\n\r\n if ($scope.CIFInvestor.SpouseIncomePerAnnum == 0)\r\n $scope.CIFInvestor.SpouseIncomePerAnnum = '';\r\n\r\n $scope.changeSpouseMandatory();\r\n $scope.OPSPOUSE.occupation = $scope.CIFInvestor.SpouseOccupation;\r\n $scope.OPSPOUSE.occupationText = $scope.CIFInvestor.SpouseOccupationText;\r\n $scope.OPSPOUSE.position = $scope.CIFInvestor.SpousePosition;\r\n $scope.OPSPOUSE.business = $scope.CIFInvestor.SpouseNatureOfBusiness;\r\n } \r\n }\r\n })\r\n });\r\n}]);","app.controller('CIF3-CTRL', ['$scope', '$window', '$q', '$filter', 'appFactory', '$uibModal',\r\n function ($scope, $window, $q, $filter, appFactory, $uibModal) {\r\n\r\n $scope.CIFInvestor = {}\r\n $scope.chkquestionfatca = true;\r\n $scope.chkquestion1 = false;\r\n $scope.chkquestion2 = false;\r\n $scope.chkquestion3 = false;\r\n $scope.chkquestion4 = false;\r\n\r\n\r\n $scope.validateAgreementFATCA = function () {\r\n if (!$scope.agree3) {\r\n\r\n $scope.disclaimerFATCA = false;\r\n $scope.showAgreement(1);\r\n }\r\n }\r\n\r\n $scope.showAgreement = function (number) {\r\n\r\n let htmlName = 'template/FATCAagereement' + number + '.html';\r\n var modalInstance = $uibModal\r\n .open({\r\n animation: true,\r\n templateUrl: htmlName,\r\n controller: 'BCAAgreementCtrl',\r\n size: 'lg',\r\n backdrop: 'static',\r\n resolve: {\r\n\r\n agreementNumber: function () {\r\n\r\n return number;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function (response, agree) {\r\n\r\n if (response == 'accept') {\r\n\r\n if (number == 1) {\r\n\r\n $scope.agree1 = true;\r\n $scope.disclaimerFATCA = true;\r\n }\r\n\r\n }\r\n }, function () { });\r\n };\r\n\r\n var allPromise = $q.all([\r\n\r\n appFactory.getData(`/service/client.svc/GetCIFLookup`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n \r\n $scope.ListLookup = data.data.d;\r\n\r\n if ($scope.ListLookup) {\r\n\r\n $scope.ListInvestmentObjectives = $filter('filter')($scope.ListLookup, { CIFLookupID: 'InvestmentObjectives' }, true);\r\n $scope.ListRisk = $filter('filter')($scope.ListLookup, { CIFLookupID: 'Risk' }, true);\r\n }\r\n }\r\n }),\r\n\r\n $scope.retrieveSessions()\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIF`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.Stage = 3;\r\n\r\n if ($scope.CIFInvestor.FATCA1 == 'Ya' || $scope.CIFInvestor.FATCA2 == 'Ya' || $scope.CIFInvestor.FATCA3 == 'Ya')\r\n $scope.chkquestionfatca = false;\r\n\r\n if ($scope.CIFInvestor.InvestmentObjectives == 0)\r\n $scope.CIFInvestor.InvestmentObjectives = '';\r\n }\r\n }\r\n });\r\n });\r\n\r\n $scope.prepareData = function () {\r\n\r\n if ($scope.chkquestion1) {\r\n\r\n if ($scope.chkquestion1 = true) {\r\n\r\n $scope.CIFInvestor.Question1 = 'Ya';\r\n $scope.CIFInvestor.Question1_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestion2) {\r\n\r\n if ($scope.chkquestion2 = true) {\r\n\r\n $scope.CIFInvestor.Question2 = 'Ya';\r\n $scope.CIFInvestor.Question2_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestion3) {\r\n\r\n if ($scope.chkquestion1 = true) {\r\n\r\n $scope.CIFInvestor.Question3 = 'Ya';\r\n $scope.CIFInvestor.Question3_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestion4) {\r\n\r\n if ($scope.chkquestion4 = true) {\r\n\r\n $scope.CIFInvestor.Question4 = 'Ya';\r\n $scope.CIFInvestor.Question4_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestion5) {\r\n\r\n if ($scope.chkquestion5 = true) {\r\n\r\n $scope.CIFInvestor.Question5 = 'Ya';\r\n $scope.CIFInvestor.Question5_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestion6) {\r\n\r\n if ($scope.chkquestion6 = true) {\r\n\r\n $scope.CIFInvestor.Question6 = 'Ya';\r\n $scope.CIFInvestor.Question6_Text = '';\r\n }\r\n }\r\n\r\n if ($scope.chkquestionfatca) {\r\n\r\n if ($scope.chkquestionfatca = true) {\r\n\r\n $scope.CIFInvestor.FATCA1 = 'Tidak';\r\n $scope.CIFInvestor.FATCA2 = 'Tidak';\r\n $scope.CIFInvestor.FATCA3 = 'Tidak';\r\n }\r\n }\r\n }\r\n\r\n $scope.submit = function () {\r\n $scope.prepareData();\r\n\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/SaveCIF'; // 1\r\n var postData = { cifdata: $scope.CIFInvestor } // 2\r\n var preconfirmtranslate = \"submitCif3\"; // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/cif/data-pernyataan\";\r\n });\r\n }\r\n\r\n $scope.validationinput = function () {\r\n\r\n if ($scope.CIFInvestor.FATCA1 != null //Jika Bukan WNI\r\n && $scope.CIFInvestor.FATCA2 != null\r\n && $scope.CIFInvestor.FATCA3 != null\r\n && ($scope.CIFInvestor.InvestmentObjectives != null || $scope.CIFInvestor.InvestmentObjectives != 0) //Profil Resiko\r\n && $scope.CIFInvestor.Risk != null\r\n && $scope.CIFInvestor.Question1 != null\r\n && $scope.CIFInvestor.Question1_Text != null\r\n && $scope.CIFInvestor.Question2 != null\r\n && $scope.CIFInvestor.Question2_Text != null\r\n && $scope.CIFInvestor.Question3 != null\r\n && $scope.CIFInvestor.Question3_Text != null\r\n && $scope.CIFInvestor.Question4 != null\r\n && $scope.CIFInvestor.Question4_Text != null\r\n && $scope.CIFInvestor.Question5 != null \r\n && $scope.CIFInvestor.Question5_Text != null\r\n && $scope.CIFInvestor.Question6 != null\r\n && $scope.CIFInvestor.Question6_Text != null)\r\n {\r\n console.log('validation success');\r\n }\r\n else {\r\n var SWALtranslate = $scope.SWALtranslate('validationinput');\r\n\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n imageUrl: 'img/collection/wrong.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n}]);\r\n\r\n\r\n","app.controller('CIF4-CTRL', ['$scope', '$rootScope', '$uibModal', '$q', 'appFactory','$window','KTPCamService', 'SELFIECamService','$http','$timeout','deviceDetector',\r\n function ($scope, $rootScope, $uibModal, $q, appFactory, $window, KTPCamService, SELFIECamService, $http, $timeout, deviceDetector) {\r\n\r\n $scope.allowedExt = ['.jpg', '.jpeg', '.bmp', '.png'];\r\n $scope.agree1 = false;\r\n $scope.agree2 = false;\r\n $scope.agree3 = false;\r\n $scope.agree4 = false;\r\n $scope.device = deviceDetector;\r\n\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTP = \"\";\r\n $scope.fileKTPext = \"\";\r\n $scope.KTPFile = [];\r\n\r\n $scope.filenameNPWP = \"\";\r\n $scope.fileNPWP = \"\";\r\n $scope.fileNPWPext = \"\";\r\n $scope.NPWPile = [];\r\n\r\n $scope.filenameFotoDiri = \"\";\r\n $scope.fileFotoDiri = \"\";\r\n $scope.fileFotoDiriext = \"\";\r\n $scope.fotodiriFile = [];\r\n\r\n $scope.filenameTandaTangan = \"\";\r\n $scope.fileTandaTangan = \"\";\r\n $scope.fileTandaTanganext = \"\";\r\n $scope.tandatanganFile = [];\r\n\r\n $scope.append = '';\r\n\r\n $scope.finishSignature = false;\r\n\r\n $scope.tnc1 = function () {\r\n\r\n var url = $window.open(\"https://eform-uat.yuanta.co.id/PDFTemplate/Persyaratan.pdf\", \"_blank\");\r\n url.focus();\r\n $scope.disclaimerTNC1 = true;\r\n };\r\n\r\n $scope.openCamera = function (tipe) {\r\n let message = tipe;\r\n let url = 'ModalCamera.html';\r\n let ctrl = 'CameraController';\r\n\r\n\r\n //if ($scope.device.isMobile()) {\r\n // //url = 'ModalBrowse.html';\r\n // //ctrl = 'BrowseController';\r\n // //$scope.append = 'data:image/png;base64,';\r\n //}\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n templateUrl: url,\r\n controller: ctrl,\r\n size: 'md',\r\n resolve: {\r\n items: function () {\r\n return message;\r\n }\r\n }\r\n });\r\n modalInstance.result.then(function (resolvedResponse) {\r\n console.log('ktp',resolvedResponse);\r\n if (resolvedResponse) {\r\n if (tipe == \"KTP\")\r\n $scope.ktpPhoto = resolvedResponse;\r\n else if (tipe == \"NPWP\")\r\n $scope.npwpPhoto = resolvedResponse;\r\n else if (tipe == \"SELFIE\")\r\n $scope.selfiePhoto = resolvedResponse;\r\n //else\r\n // $scope.ttdPhoto = resolvedResponse;\r\n\r\n var SWALtranslate = $scope.SWALtranslate('tttembed');\r\n\r\n if ($scope.ttdPhoto != '') {\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n //imageUrl: 'img/logo/Unggah Foto.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n }, function () { });\r\n };\r\n\r\n $scope.remove = function (tipe) {\r\n if (tipe == \"KTP\")\r\n $scope.ktpPhoto = '';\r\n else if (tipe == \"SELFIE\")\r\n $scope.selfiePhoto = '';\r\n else if (tipe == \"NPWP\")\r\n $scope.npwpPhoto = '';\r\n //else\r\n // $scope.ttdPhoto = '';\r\n };\r\n\r\n $scope.selectKTP = function (files) {\r\n\r\n $scope.KTPFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n\r\n if (allowed) \r\n $scope.fileKTP = btoa(e.target.result.toString());\r\n };\r\n\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileKTPext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n\r\n if ($scope.allowedExt.indexOf($scope.fileKTPext.toLowerCase()) < 0) {\r\n\r\n allowed = false;\r\n $scope.fileKTPext = '';\r\n $scope.KTPFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n } else {\r\n\r\n $scope.filenameKTP = files[0].name;\r\n }\r\n };\r\n\r\n $scope.selectNPWP = function (files) {\r\n\r\n $scope.NPWPFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n\r\n if (allowed) \r\n $scope.fileNPWP = btoa(e.target.result.toString());\r\n };\r\n\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileNPWPext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n\r\n if ($scope.allowedExt.indexOf($scope.fileNPWPext.toLowerCase()) < 0) {\r\n\r\n allowed = false;\r\n $scope.fileNPWPext = '';\r\n $scope.NPWPFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n } else {\r\n\r\n $scope.filenameNPWP = files[0].name;\r\n }\r\n };\r\n\r\n $scope.selectFotoDiri = function (files) {\r\n\r\n $scope.fotodiriFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n\r\n if (allowed)\r\n $scope.fileFotoDiri = btoa(e.target.result.toString());\r\n };\r\n\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileFotoDiriext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n\r\n if ($scope.allowedExt.indexOf($scope.fileFotoDiriext.toLowerCase()) < 0) {\r\n\r\n allowed = false;\r\n $scope.fileFotoDiriext = '';\r\n $scope.fotodiriFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n } else {\r\n\r\n $scope.filenameFotoDiri = files[0].name;\r\n }\r\n };\r\n\r\n $scope.selectTandaTangan = function (files) {\r\n $scope.tandatanganFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n if (allowed) {\r\n $scope.fileTandaTangan = btoa(e.target.result.toString());\r\n }\r\n };\r\n\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileTandaTanganext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n if ($scope.allowedExt.indexOf($scope.fileTandaTanganext.toLowerCase()) < 0) {\r\n allowed = false;\r\n $scope.fileTandaTanganext = '';\r\n $scope.tandatanganFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n }\r\n else\r\n $scope.filenameTandaTangan = files[0].name;\r\n };\r\n\r\n $scope.clickRemoveKTP = function (file, event, key) {\r\n\r\n event.preventDefault();\r\n $scope.fileKTP = \"\";\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTPext = \"x\";\r\n $scope.KTPFile.splice(key, 1);\r\n $scope.KTPFile = [];\r\n return null;\r\n };\r\n\r\n $scope.clickRemoveNPWP = function (file, event, key) {\r\n\r\n event.preventDefault();\r\n $scope.fileNPWP = \"\";\r\n $scope.filenameNPWP = \"\";\r\n $scope.fileNPWPext = \"x\";\r\n $scope.NPWPFile.splice(key, 1);\r\n $scope.NPWPFile = [];\r\n return null;\r\n };\r\n\r\n $scope.clickRemoveFotoDiri = function (file, event, key) {\r\n\r\n event.preventDefault();\r\n $scope.fileFotoDiri = \"\";\r\n $scope.filenameFotoDiri = \"\";\r\n $scope.fileFotoDiriext = \"x\";\r\n $scope.fotodiriFile.splice(key, 1);\r\n $scope.fotodiriFile = [];\r\n\r\n return null;\r\n };\r\n\r\n $scope.clickRemoveTandaTangan = function (file, event, key) {\r\n event.preventDefault();\r\n $scope.fileTandaTangan = \"\";\r\n $scope.filenameTandaTangan = \"\";\r\n $scope.fileTandaTanganext = \"x\";\r\n $scope.tandatanganFile.splice(key, 1);\r\n $scope.tandatanganFile = [];\r\n return null;\r\n };\r\n\r\n\r\n $scope.resetSign = function () {\r\n $rootScope.AlertYesNo('question', 'Konfirmasi', \"Hapus Data Tanda Tangan?\")\r\n .then((result) => {\r\n if (result.value) {\r\n $scope.finishSignature = false;\r\n $scope.filenameTandaTangan = '';\r\n $scope.append = '';\r\n $scope.clear();\r\n }\r\n });\r\n };\r\n\r\n $scope.completeSign = function () {\r\n console.log('signature');\r\n $scope.signature = $scope.accept();\r\n $scope.append = '';\r\n if ($scope.signature.dataUrl && !$scope.signature.isEmpty) {\r\n $scope.finishSignature = true;\r\n $scope.CIFInvestor.TandaTanganFile = $scope.signature.dataUrl.substr($scope.signature.dataUrl.lastIndexOf(',') + 1);\r\n $scope.filenameTandaTangan = $scope.CIFInvestor.TandaTanganFile;\r\n $scope.append = 'data:image/png;base64,';\r\n }\r\n else\r\n $scope.filenameTandaTangan = '';\r\n };\r\n\r\n $scope.validateAgreement = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n if (!$scope.agree1 || !$scope.agree2) {\r\n\r\n var SWALtranslate = $scope.SWALtranslate('aggreement1');\r\n $scope.disclaimerBank = false;\r\n }\r\n\r\n if (!$scope.agree1 && $scope.agree2) {\r\n\r\n var SWALtranslate = $scope.SWALtranslate('aggreement2');\r\n $scope.disclaimerBank = false;\r\n }\r\n\r\n if ($scope.agree1 && !$scope.agree2) {\r\n\r\n var SWALtranslate = $scope.SWALtranslate('aggreement3');\r\n $scope.disclaimerBank = false;\r\n }\r\n\r\n if ($scope.agree1 && $scope.agree2 && $scope.agree3) {\r\n\r\n $scope.disclaimerBank = true;\r\n return\r\n }\r\n $rootScope.GlobalAlert('error', \"\", SWALtranslate.title)\r\n }\r\n }\r\n\r\n $scope.validateAgreementRDNBCA = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n if (!$scope.agree1) {\r\n\r\n $scope.disclaimerRDNBCA = false;\r\n $scope.showAgreement(1);\r\n }\r\n }\r\n }\r\n\r\n $scope.validateAgreementTAPRESBCA = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n if (!$scope.agree2) {\r\n\r\n $scope.disclaimerTAPRESBCA = false;\r\n $scope.showAgreement(2);\r\n }\r\n }\r\n }\r\n\r\n $scope.validateAgreementDEKLARASI = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n if (!$scope.agree3) {\r\n\r\n $scope.disclaimerDEKLARASI = false;\r\n $scope.showAgreement(3);\r\n }\r\n }\r\n }\r\n\r\n $scope.validateAgreementDECLARATION = function () {\r\n\r\n if ($scope.CIFInvestor.QuestionRDN == 1) {\r\n\r\n if (!$scope.agree4) {\r\n\r\n $scope.disclaimerDECLARATION = false;\r\n $scope.showAgreement(4);\r\n }\r\n }\r\n }\r\n\r\n $scope.modalMessage = {\r\n\r\n message: '',\r\n param: {}\r\n };\r\n\r\n\r\n $scope.showAgreement = function (number) {\r\n\r\n let htmlName = 'template/BCAagereement' + number + '.html';\r\n var modalInstance = $uibModal\r\n .open({\r\n animation: true,\r\n templateUrl: htmlName,\r\n controller: 'BCAAgreementCtrl',\r\n size: 'lg',\r\n backdrop: 'static',\r\n resolve: {\r\n\r\n agreementNumber: function () {\r\n\r\n return number;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function (response, agree) {\r\n\r\n if (response == 'accept') {\r\n\r\n if (number == 1) {\r\n\r\n $scope.agree1 = true;\r\n $scope.disclaimerRDNBCA = true;\r\n }\r\n\r\n if (number == 2) {\r\n\r\n $scope.agree2 = true;\r\n $scope.disclaimerTAPRESBCA = true;\r\n }\r\n\r\n if (number == 3) {\r\n\r\n $scope.agree3 = true;\r\n $scope.disclaimerDEKLARASI = true;\r\n }\r\n\r\n if (number == 4) {\r\n\r\n $scope.agree4 = true;\r\n $scope.disclaimerDECLARATION = true;\r\n }\r\n\r\n if ($scope.disclaimerRDNBCA == true && $scope.disclaimerTAPRESBCA == true && $scope.disclaimerDEKLARASI == true && $scope.disclaimerDECLARATION == true)\r\n $scope.disclaimerBank = true;\r\n }\r\n }, function () { });\r\n };\r\n\r\n \r\n\r\n var allPromise = $q.all([\r\n $scope.retrieveSessions()\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIF`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d.Email != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.Stage = 4;\r\n $scope.filenameKTP = $scope.CIFInvestor.KTPFile;\r\n $scope.filenameFotoDiri = $scope.CIFInvestor.SelfieFile;\r\n $scope.filenameTandaTangan = $scope.CIFInvestor.TandaTanganFile;\r\n $scope.filenameNPWP = $scope.CIFInvestor.NPWPFile;\r\n\r\n\r\n if ($scope.filenameKTP) {\r\n\r\n if (!$scope.filenameKTP.endsWith(\".pdf\")) {\r\n $http({\r\n method: 'GET',\r\n url: 'FileKYC/' + $scope.filenameKTP,\r\n responseType: 'blob',\r\n\r\n }).then(function (response) {\r\n if (response.data) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(response.data);\r\n reader.onloadend = function () {\r\n $scope.ktpPhoto = reader.result;\r\n $scope.showKTP = false;\r\n }\r\n\r\n }\r\n //$scope.KTPFile = [];\r\n //$scope.KTPFile.push(response.data);\r\n }, function (response) {\r\n $scope.saveErrors = true;\r\n $scope.errorMessages = {\r\n text: 'File tidak ketemu atau terhapus dari server!!!',\r\n };\r\n $timeout(function () {\r\n $scope.saveErrors = false;\r\n }, 3000);\r\n });\r\n }\r\n };\r\n if ($scope.filenameNPWP) {\r\n\r\n if (!$scope.filenameNPWP.endsWith(\".pdf\")) {\r\n $http({\r\n method: 'GET',\r\n url: 'FileKYC/' + $scope.filenameNPWP,\r\n responseType: 'blob',\r\n\r\n }).then(function (response) {\r\n if (response.data) {\r\n var reader2 = new FileReader();\r\n reader2.readAsDataURL(response.data);\r\n reader2.onloadend = function () {\r\n $scope.npwpPhoto = reader2.result;\r\n }\r\n\r\n }\r\n //$scope.NPWPFile = [];\r\n //$scope.NPWPFile.push(response.data);\r\n }, function (response) {\r\n $scope.saveErrors = true;\r\n $scope.errorMessages = {\r\n text: 'File tidak ketemu atau terhapus dari server!!!',\r\n };\r\n $timeout(function () {\r\n $scope.saveErrors = false;\r\n }, 3000);\r\n });\r\n }\r\n };\r\n if ($scope.filenameFotoDiri) {\r\n\r\n if (!$scope.filenameFotoDiri.endsWith(\".pdf\")) {\r\n $http({\r\n method: 'GET',\r\n url: 'FileKYC/' + $scope.filenameFotoDiri,\r\n responseType: 'blob',\r\n }).then(function (response) {\r\n if (response.data) {\r\n var reader2 = new FileReader();\r\n reader2.readAsDataURL(response.data);\r\n reader2.onloadend = function () {\r\n $scope.selfiePhoto = reader2.result;\r\n }\r\n\r\n }\r\n //$scope.fotodiriFile = [];\r\n //$scope.fotodiriFile.push(response.data);\r\n }, function (response) {\r\n $scope.saveErrors = true;\r\n $scope.errorMessages = {\r\n text: 'File tidak ketemu atau terhapus dari server!!!',\r\n };\r\n $timeout(function () {\r\n $scope.saveErrors = false;\r\n }, 3000);\r\n });\r\n }\r\n };\r\n if ($scope.CIFInvestor.TandaTanganFile) {\r\n $http({\r\n method: 'GET',\r\n url: 'FileKYC/' + $scope.CIFInvestor.TandaTanganFile,\r\n responseType: 'blob',\r\n\r\n }).then(function (response) {\r\n $scope.append = '';\r\n let reader = new FileReader();\r\n reader.readAsDataURL(response.data);\r\n reader.onloadend = function () {\r\n $scope.filenameTandaTangan = reader.result;\r\n }\r\n //$scope.tandatanganFile = [];\r\n //$scope.tandatanganFile.push(response.data);\r\n }, function (response) {\r\n $scope.saveErrors = true;\r\n $scope.errorMessages = {\r\n text: 'File tidak ketemu atau terhapus dari server!!!',\r\n };\r\n $timeout(function () {\r\n $scope.saveErrors = false;\r\n }, 3000);\r\n });\r\n };\r\n\r\n \r\n\r\n if ($scope.CIFInvestor.IsFinished == 1) {\r\n\r\n $scope.disclaimerBank = true;\r\n $scope.disclaimerRDNBCA = true;\r\n $scope.disclaimerTAPRESBCA = true;\r\n $scope.disclaimerPTMKES = true;\r\n $scope.disclaimerDEKLARASI = true;\r\n }\r\n\r\n console.log(\"lang\", $scope.languageSelected)\r\n\r\n if ($scope.languageSelected.lang == 'id') {\r\n Swal.fire({\r\n title: 'Upload Foto',\r\n text: 'Ketentuan untuk ambil gambar',\r\n imageUrl: 'img/logo/Unggah Foto.png',\r\n imageAlt: 'E-KTP',\r\n width: '400px',\r\n animation: false\r\n });\r\n\r\n }\r\n\r\n if ($scope.languageSelected.lang == 'en') {\r\n Swal.fire({\r\n title: 'Upload Foto',\r\n text: 'Conditions for taking pictures',\r\n imageUrl: 'img/logo/Upload Photo.png',\r\n imageAlt: 'E-KTP',\r\n width: '400px',\r\n animation: false\r\n });\r\n }\r\n\r\n \r\n }\r\n }\r\n });\r\n });\r\n\r\n $scope.submit = function () {\r\n console.log(\"ktp\", $scope.ktpPhoto);\r\n\r\n if ($scope.ktpPhoto)\r\n $scope.CIFInvestor.KTPFile = $scope.ktpPhoto.replace(\"data:image/png;base64,\", \"\");\r\n\r\n console.log(\"ktp1\", $scope.CIFInvestor.KTPFile);\r\n\r\n if ($scope.npwpPhoto)\r\n $scope.CIFInvestor.NPWPFile = $scope.npwpPhoto.replace(\"data:image/png;base64,\", \"\");\r\n\r\n //if ($scope.selfiePhoto)\r\n // $scope.CIFInvestor.SelfieFile = $scope.selfiePhoto.replace(\"data:image/jpeg;base64,\", \"\");\r\n\r\n //if ($scope.ttdPhoto)\r\n // $scope.CIFInvestor.TandaTanganFile = $scope.ttdPhoto.replace(\"data:image/png;base64,\", \"\");\r\n\r\n\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/SaveCIF'; // 1\r\n var postData = { cifdata: $scope.CIFInvestor } // 2\r\n var preconfirmtranslate = \"submitCif4\"; // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) { // 6\r\n $window.location.href = \"#/cif/final\";\r\n\r\n //var SWALtranslate = $scope.SWALtranslate('submitCif4success'); // 5\r\n\r\n //$rootScope.GlobalAlert('success', SWALtranslate.title, SWALtranslate.message).then(function () {\r\n\r\n // $window.location.href = \"#/cif/final\";\r\n //});\r\n }\r\n else {\r\n $window.location.href = \"#/login\";\r\n }\r\n });\r\n }\r\n // if ($scope.CIFInvestor.TandaTanganFile) {\r\n // //$scope.CIFInvestor.KTPFile = $scope.fileKTP;\r\n // //$scope.CIFInvestor.SelfieFile = $scope.fileFotoDiri;\r\n // //$scope.CIFInvestor.TandaTanganFile = $scope.fileTandaTangan;\r\n // //$scope.CIFInvestor.NPWPFile = $scope.fileNPWP\r\n\r\n \r\n //}\r\n}]);","app.controller('CIFFIN-CTRL', ['$scope', '$rootScope', '$routeParams', 'uibDateParser', 'deviceDetector',\r\n '$uibModal', '$http', '$window', '$location', '$timeout', 'Upload', '$q', '$filter', function ($scope, $rootScope, $routeParams, uibDateParser, deviceDetector,\r\n $uibModal, $http, $window, $location, $timeout, Upload, $q, $filter) {\r\n\r\n $scope.stage = 2;\r\n $scope.CIFInvestor = {};\r\n $scope.ktpPhoto = '';\r\n $scope.device = deviceDetector;\r\n $scope.append = '';\r\n\r\n $scope.counter = 6;\r\n\r\n $scope.series5 = [];\r\n //$scope.series7 = [];\r\n\r\n $rootScope.myAppUtility = {\r\n isMobile: function isMobile() {\r\n return window && window.matchMedia(\"(max-width: 767px)\").matches;\r\n }\r\n };\r\n\r\n $scope.takeCamera = function () {\r\n //$scope.statusCamera = 'true';\r\n //if (!$rootScope.myAppUtility.isMobile()) {\r\n // swal({\r\n // title: 'Push notifications',\r\n // text: 'Mohon untuk menggunakan kamera handphone',\r\n // imageUrl: 'img/erdikha/from_erdikha/LoginSelamatDatang.png',\r\n // imageAlt: 'E-KTP',\r\n // width: '400px',\r\n // animation: false\r\n // });\r\n // return;\r\n\r\n //}\r\n\r\n $scope.counter = 6;\r\n var mytimeout = $timeout($scope.onTimeout, 1000);\r\n }\r\n\r\n $scope.onTimeout = function () {\r\n $scope.counter--;\r\n if ($scope.counter > 0) {\r\n mytimeout = $timeout($scope.onTimeout, 1000);\r\n }\r\n else {\r\n console.log('capturing...', $scope.stage);\r\n $scope.$broadcast('ngWebcam_capture');\r\n //alert(\"Time is up!\");\r\n }\r\n }\r\n\r\n\r\n\r\n $scope.reset = function () {\r\n $scope.counter = 5;\r\n mytimeout = $timeout($scope.onTimeout, 1000);\r\n }\r\n\r\n\r\n\r\n $scope.camfacing = 'env';\r\n $scope.ktpPhoto = '';\r\n\r\n $scope.KTPconfig = {\r\n //viewerWidth: 300,\r\n //viewerHeight: 350,\r\n outputWidth: 1080,\r\n outputHeight: 1280,\r\n delay: 5,\r\n shots: 3,\r\n countdown: 0,\r\n flashFallbackUrl: 'vendors/webcamjs/webcam.swf',\r\n shutterUrl: 'shutter.mp3',\r\n flashNotDetectedText: 'Camera not found or use Chrome Browser'\r\n };\r\n\r\n $scope.KTPonCaptureComplete = function (src) {\r\n console.log('capturecomplete', $scope.stage);\r\n $scope.counter = 6;\r\n\r\n //if ($scope.stage == 5) {\r\n // console.log(\"CAPTURE COMPLETE STAGE 5\");\r\n // $scope.series7 = [];\r\n // for (var i = 0; i < src.length; i++) {\r\n // $scope.series7.push(src[i]);\r\n // }\r\n // //$scope.series7 = src;\r\n // $scope.submit();\r\n\r\n //}\r\n\r\n if ($scope.stage == 4) {\r\n console.log(\"CAPTURE COMPLETE STAGE 4\");\r\n $scope.counter = 6;\r\n\r\n $scope.series5 = [];\r\n for (var i = 0; i < src.length; i++) {\r\n $scope.series5.push(src[i]);\r\n }\r\n $scope.submit();\r\n //$scope.changeStage(5);\r\n }\r\n\r\n\r\n //var el = document.getElementById('result');\r\n //var img = document.createElement('img');\r\n //img.src = src[$scope.KTPconfig.shots - 1];\r\n //img.width = 240;\r\n //img.height = 180;\r\n //el.appendChild(img);\r\n };\r\n\r\n\r\n $scope.KTPonLive = function (err) {\r\n console.log('live');\r\n };\r\n\r\n\r\n $scope.KTPonError = function (err) {\r\n //$log.error('webcamController.onError : ', err);\r\n\r\n //var SWALtranslate = $scope.SWALtranslate(\"kycdevice\");\r\n\r\n //$rootScope.GlobalAlert('warning', SWALtranslate.title, SWALtranslate.message);\r\n\r\n Swal.fire('Error', 'Mohon maaf anda tidak dapat melanjutkan proses selanjutnya karena perangkat anda tidak terdeteksi kamera', 'error').then(function () {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n });\r\n console.log('err', err);\r\n };\r\n\r\n $scope.KTPonLoad = function () {\r\n // $log.info('ktp.onLoad');\r\n console.log('load');\r\n };\r\n\r\n $scope.KTPcapture = function () {\r\n $scope.$broadcast('ngWebcam_capture');\r\n };\r\n\r\n $scope.KTPon = function () {\r\n $scope.$broadcast('ngWebcam_on');\r\n };\r\n\r\n $scope.KTPoff = function () {\r\n $scope.$broadcast('ngWebcam_off');\r\n $scope.captureButtonEnable = false;\r\n };\r\n\r\n $scope.KTPremove = function () {\r\n $scope.ktpPhoto = '';\r\n }\r\n\r\n\r\n\r\n\r\n $scope.openCamera = function () {\r\n let message = 'KTP';\r\n let url = 'ModalCamera.html';\r\n let ctrl = 'CameraController';\r\n\r\n\r\n if ($scope.device.isMobile()) {\r\n url = 'ModalBrowse.html';\r\n ctrl = 'BrowseController';\r\n $scope.append = 'data:image/png;base64,';\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n templateUrl: url,\r\n controller: ctrl,\r\n size: 'md',\r\n resolve: {\r\n items: function () {\r\n return message;\r\n }\r\n }\r\n });\r\n modalInstance.result.then(function (resolvedResponse) {\r\n //console.log('ktp',resolvedResponse);\r\n if (resolvedResponse) {\r\n $scope.ktpPhoto = resolvedResponse;\r\n }\r\n }, function () { });\r\n };\r\n\r\n $scope.KTPremove = function () {\r\n $scope.ktpPhoto = '';\r\n };\r\n\r\n\r\n var allPromise = $q.all([\r\n $http({\r\n method: 'POST',\r\n url: 'service/client.svc/retrieveSessionLiveness',\r\n }).then(function (data) {\r\n if (!data.data.d) {\r\n $http({\r\n method: 'GET',\r\n url: 'service/client.svc/SignOut',\r\n }).then(function (data) {\r\n if (data.data.d == true) {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n }\r\n }, function (error) { })\r\n }\r\n else\r\n $scope.currentUser = data.data.d;\r\n }, function (error) { }),\r\n\r\n\r\n ]);\r\n\r\n\r\n\r\n\r\n $scope.changeStage = function (newstage) {\r\n $scope.stage = newstage;\r\n\r\n if ($scope.stage == 4) {\r\n $scope.$broadcast('ngWebcam_camUsr');\r\n $scope.camfacing = 'usr'\r\n //Swal.fire({\r\n // imageUrl: 'img/verification/step1.png',\r\n // imageAlt: 'E-KTP',\r\n // background: '#1c252c',\r\n // width: '600px',\r\n // allowEscapeKey: false,\r\n // allowOutsideClick: false,\r\n // animation: false,\r\n // onOpen: () => {\r\n // swal.showLoading()\r\n // setTimeout(() => { swal.hideLoading() }, 3000)\r\n // },\r\n //}).then((result) => {\r\n // if (!result.dismiss) {\r\n // //$scope.counter = 6;\r\n // //var mytimeout = $timeout($scope.onTimeout, 1000);\r\n // }\r\n //})\r\n\r\n\r\n }\r\n\r\n //if ($scope.stage == 5) {\r\n // $scope.$broadcast('ngWebcam_restart');\r\n // $scope.$broadcast('ngWebcam_camUsr');\r\n // $scope.camfacing = 'usr'\r\n // Swal.fire({\r\n // imageUrl: 'img/verification/step2.png',\r\n // imageAlt: 'E-KTP',\r\n // background: '#1c252c',\r\n // width: '600px',\r\n // allowEscapeKey: false,\r\n // allowOutsideClick: false,\r\n // animation: false,\r\n // onOpen: () => {\r\n // swal.showLoading()\r\n // setTimeout(() => { swal.hideLoading() }, 3000)\r\n // },\r\n // }).then((result) => {\r\n // if (!result.dismiss) {\r\n // $scope.counter = 6;\r\n // var mytimeout = $timeout($scope.onTimeout, 1000);\r\n // //console.log('user read the important message')\r\n // }\r\n // })\r\n\r\n\r\n //}\r\n }\r\n\r\n\r\n allPromise.then(function () {\r\n\r\n $http({\r\n method: 'GET',\r\n url: 'service/client.svc/getCIF',\r\n }).then(function (data) {\r\n if (data.data.d != null) {\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.Stage = 4;\r\n\r\n } // END IF data.data.d\r\n }, function (error) { });\r\n });\r\n\r\n\r\n\r\n $scope.submit = function () {\r\n $rootScope.AlertShowLoading('warning', 'Loading...', '', 0);\r\n $http({\r\n method: 'POST',\r\n url: 'service/client.svc/ImageVerification',\r\n data:\r\n {\r\n imageData: {\r\n series5: $scope.series5,\r\n //series7: $scope.series7,\r\n }\r\n }\r\n }).then(function (data) {\r\n Swal.fire('success', 'Permohonan pembukaan rekening efek Anda telah kami terima. Silahkan cek email', 'success').then(function () {\r\n $window.location.href = \"#/dashboard\";\r\n });\r\n\r\n }, function (error) {\r\n Swal.fire('Error', 'error - Please check your connection' + error, 'error');\r\n });\r\n }\r\n\r\n $scope.logOff = function () {\r\n $http({\r\n method: 'POST',\r\n url: 'service/client.svc/logOff',\r\n }).then(function (data) {\r\n console.log(data);\r\n if (data.data.d == true) {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n }\r\n }, function (error) { })\r\n };\r\n\r\n\r\n\r\n }]);\r\n","app.controller('CIFKTP-CTRL', ['$scope', '$rootScope', '$routeParams', 'uibDateParser','deviceDetector',\r\n '$uibModal', '$http', '$window', '$location', '$timeout', 'Upload', '$q', '$filter',\r\n function ($scope, $rootScope, $routeParams, uibDateParser,deviceDetector,\r\n $uibModal, $http, $window, $location, $timeout, Upload, $q, $filter) {\r\n\r\n $scope.CIFInvestor = {};\r\n $scope.ktpPhoto = '';\r\n $scope.device = deviceDetector;\r\n $scope.append = '';\r\n $scope.editMode = false;\r\n\r\n //$rootScope.myAppUtility = {\r\n // isMobile: function isMobile() {\r\n // return window && window.matchMedia(\"(max-width: 767px)\").matches;\r\n // }\r\n //};\r\n\r\n $scope.openCamera = function () {\r\n //if (!$rootScope.myAppUtility.isMobile()) {\r\n // swal({\r\n // title: 'Push notifications',\r\n // text: 'Mohon untuk menggunakan kamera handphone',\r\n // imageUrl: 'img/erdikha/from_erdikha/LoginSelamatDatang.png',\r\n // imageAlt: 'E-KTP',\r\n // width: '400px',\r\n // animation: false\r\n // });\r\n // return;\r\n \r\n //}\r\n let message = 'KTP';\r\n let url = 'ModalCamera.html';\r\n let ctrl = 'CameraController';\r\n\r\n\r\n\r\n //if ($scope.device.isMobile())\r\n //{\r\n //url = 'ModalBrowse.html';\r\n //ctrl = 'BrowseController';\r\n $scope.append = 'data:image/png;base64,';\r\n //}\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n templateUrl: url,\r\n controller: ctrl,\r\n size: 'md',\r\n resolve: {\r\n items: function () {\r\n return message;\r\n }\r\n }\r\n });\r\n modalInstance.result.then(function (resolvedResponse) {\r\n //console.log('ktp',resolvedResponse);\r\n if (resolvedResponse) {\r\n $scope.ktpPhoto = resolvedResponse;\r\n\r\n console.log(\"append\", $scope.append);\r\n console.log(\"ktp\", $scope.ktpPhoto);\r\n }\r\n }, function () { });\r\n };\r\n\r\n $scope.KTPremove = function () {\r\n $scope.ktpPhoto = '';\r\n $scope.editMode = false;\r\n };\r\n\r\n\r\n var allPromise = $q.all([\r\n //$http({\r\n // method: 'POST',\r\n // url: 'service/client.svc/retrieveSession',\r\n //}).then(function (data) {\r\n // if (!data.data.d) {\r\n // $http({\r\n // method: 'GET',\r\n // url: 'service/client.svc/SignOut',\r\n // }).then(function (data) {\r\n // if (data.data.d == true) {\r\n // $window.location.href = \"#/login\";\r\n // $window.location.reload();\r\n // }\r\n // }, function (error) { })\r\n // }\r\n // else\r\n // $scope.currentUser = data.data.d;\r\n //}, function (error) { }),\r\n\r\n\r\n ]);\r\n\r\n\r\n\r\n allPromise.then(function () {\r\n //$http({\r\n // method: 'GET',\r\n // url: 'service/client.svc/getCIF',\r\n //}).then(function (data) {\r\n // if (data.data.d != null) {\r\n // var obj = data.data.d;\r\n // $scope.CIFInvestor = data.data.d;\r\n // $scope.CIFInvestor.Stage = 1;\r\n\r\n\r\n // } // END IF data.data.d\r\n //}, function (error) { });\r\n\r\n\r\n });\r\n\r\n $scope.submit = function (item) {\r\n //console.log(item);\r\n if (item.base64) {\r\n let image = item.base64.replace(\"data:image/jpeg;base64,\", \"\");\r\n console.log('start OCR');\r\n $rootScope.AlertShowLoading('warning', 'Loading...', '', 0);\r\n $http({\r\n method: 'POST',\r\n url: 'service/client.svc/OCRKTP',\r\n data: {\r\n \"ktpimage\": image\r\n },\r\n }).then(function (data) {\r\n console.log('done OCR');\r\n swal.close();\r\n if (data.data.d.result) {\r\n $scope.ocrVerijelas = true;\r\n $window.location.href = \"#/cif/data-pribadi\";\r\n }\r\n else {\r\n //swal('Error', 'Foto KTP tidak sesuai/kurang jelas', 'error');\r\n $scope.ocrVerijelas = true;\r\n $window.location.href = \"#/cif/data-pribadi\";\r\n }\r\n\r\n }, function (error) {\r\n swal('Error', 'error - Please check your connection' + error, 'error');\r\n });\r\n }\r\n else {\r\n swal('Error', 'Please take id card photo', 'error');\r\n }\r\n }\r\n\r\n $scope.logOff = function () {\r\n $http({\r\n method: 'POST',\r\n url: 'service/client.svc/logOff',\r\n }).then(function (data) {\r\n console.log(data);\r\n if (data.data.d == true) {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n }\r\n }, function (error) { })\r\n };\r\n\r\n $scope.print = function () {\r\n $scope.prepareData();\r\n }\r\n\r\n}]);","app.controller('CIFTakenAJA-CTRL', function ($scope, $routeParams, $rootScope, uibDateParser, $http, $window, $location, $timeout, Upload, $q, $translate) {\r\n $scope.user = {\r\n Email: '',\r\n };\r\n\r\n $scope.printXyz = function () {\r\n console.log($scope.user);\r\n console.log('CODE', $scope.user.code1);\r\n console.log('EMAIL', $scope.user.Email);\r\n }\r\n\r\n if ($routeParams.generatedconfirmation) {\r\n $scope.user.generatedconfirmation = $routeParams.generatedconfirmation;\r\n }\r\n else {\r\n $window.location.href = \"#/register\";\r\n $window.location.reload();\r\n }\r\n\r\n var allPromise = $q.all([\r\n $http({\r\n method: 'GET',\r\n url: 'service/client.svc/recheckConfirmationLink?key=' + window.location.href.substr(window.location.href.lastIndexOf('/') + 1),\r\n }).then(function (data) {\r\n $scope.result = data.data.d;\r\n console.log(\"result\", $scope.result);\r\n \r\n }, function (error) { }),\r\n\r\n\r\n\r\n ]);\r\n\r\n\r\n $scope.submit = function () {\r\n $scope.user.OTP = $scope.user.code1 + $scope.user.code2 + $scope.user.code3 + $scope.user.code4;\r\n console.log('user', $scope.user);\r\n $translate('VALIDATE.confirmation').then(function (strText) {\r\n $rootScope.AlertYesNo('question', 'Konfirmasi', strText)\r\n .then((result) => {\r\n if (result.value) {\r\n $rootScope.AlertShowLoading('warning', 'Loading...', '', 0);\r\n $http({\r\n method: 'POST',\r\n url: '/service/client.svc/AktivasiUser',\r\n data: {\r\n User: $scope.user\r\n }\r\n }).then(function (data) {\r\n\r\n if (data.data.d.result) {\r\n swal('Activation Success', data.data.d.message, 'success').then(function () {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n });\r\n }\r\n else {\r\n swal('Failed, Check OTP in Email', data.data.d.message, 'info');\r\n }\r\n }, function (error) { });\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n allPromise.then(function () {\r\n \r\n });\r\n\r\n\r\n \r\n});\r\n","app.controller('CameraController', ['$scope', '$uibModalInstance', 'items',\r\n 'uibDateParser', '$http', '$window', '$location', '$timeout', 'Upload', '$q', '$cookies', '$translate', 'deviceDetector', '$document',\r\n function ($scope, $uibModalInstance, items, uibDateParser, $http, $window, $location, $timeout, Upload, $q, $cookies, $translate, deviceDetector, $document) {\r\n\r\n $scope.items = items;\r\n $scope.camfacing = 'env';\r\n $scope.ktpPhoto = '';\r\n\r\n $scope.obj = {}\r\n\r\n $scope.device = deviceDetector;\r\n $scope.isMobile = $scope.device.isMobile();\r\n $scope.useCam = true;\r\n\r\n $scope.KTPconfig = {\r\n //viewerWidth: 300,\r\n //viewerHeight: 300,\r\n //outputWidth: 1000,\r\n //outputHeight: 1000,\r\n delay: 0,\r\n shots: 1,\r\n countdown: 0,\r\n flashFallbackUrl: 'vendors/webcamjs/webcam.swf',\r\n shutterUrl: 'shutter.mp3',\r\n flashNotDetectedText: 'Camera not found or use Chrome Browser'\r\n };\r\n\r\n $scope.$on('JcropChangeSrc', function (ev, src, configName) {\r\n\r\n console.log('hhhhheeee')\r\n $scope.imageSrc = src; // the image as dataURL\r\n });\r\n\r\n //$scope.$broadcast('ngWebcam_hasmedia');\r\n console.log($scope.$broadcast('ngWebcam_hasmedia'));\r\n\r\n $scope.switchCam = function () {\r\n console.log($scope.camfacing);\r\n if ($scope.camfacing == 'env') {\r\n console.log('cam1');\r\n $scope.$broadcast('ngWebcam_camUsr');\r\n $scope.camfacing = 'usr'\r\n }\r\n else {\r\n console.log('cam1');\r\n $scope.$broadcast('ngWebcam_camEnv');\r\n $scope.camfacing = 'env'\r\n }\r\n\r\n console.log($scope.camfacing);\r\n }\r\n\r\n $scope.KTPonCaptureComplete = function (src) {;\r\n\r\n $scope.ktpPhoto = src[0];\r\n var canvas = $(\"#canvas\")[0];\r\n\r\n var coords = {}\r\n coords.x = 20;\r\n coords.y = 149;\r\n coords.x2 = 570;\r\n coords.y2 = 324;\r\n coords.w = 600;\r\n coords.h = 378;\r\n\r\n canvas.width = 1292;\r\n canvas.height = 816;\r\n\r\n //canvas.width = 600;\r\n //canvas.height = 378;\r\n\r\n var context = canvas.getContext(\"2d\");\r\n\r\n var image = new Image();\r\n image.onload = function () {\r\n setTimeout(() => {\r\n context.drawImage(image, coords.x, coords.y, coords.w, coords.h, 0, 0, canvas.width, canvas.height);\r\n\r\n var png = $(\"#canvas\")[0].toDataURL('image/jpg');\r\n\r\n $uibModalInstance.close(png);\r\n }, 100);\r\n };\r\n\r\n image.src = src[0];\r\n\r\n //$scope.png();\r\n\r\n //$uibModalInstance.close($scope.obj.src);\r\n //var el = document.getElementById('result');\r\n //var img = document.createElement('img');\r\n //img.src = src[$scope.KTPconfig.shots - 1];\r\n //img.width = 240;\r\n //img.height = 180;\r\n //el.appendChild(img);\r\n };\r\n\r\n $scope.png = function () {\r\n\r\n var png = $(\"#canvas\")[0].toDataURL('image/png');\r\n\r\n console.log(\"png\", png)\r\n $(\"#png\").val(png);\r\n }\r\n\r\n $scope.KTPonError = function (err) {\r\n //console.log('err', err);\r\n //$scope.useCam = false;\r\n swal(\"error\", 'Hanya diperbolehkan capture melalui perangkat kamera. Periksa kembali perangkat kamera Anda. Atau lanjutkan menggunakan perangkat handphone', 'info');\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n $scope.KTPonLoad = function () {\r\n // $log.info('ktp.onLoad');\r\n };\r\n\r\n $scope.KTPcapture = function () {\r\n\r\n console.log(\"ktp on capture\")\r\n $scope.$broadcast('ngWebcam_capture');\r\n };\r\n\r\n $scope.KTPon = function () {\r\n console.log(\"======== ktpon\")\r\n\r\n $scope.$broadcast('ngWebcam_on');\r\n };\r\n\r\n $scope.KTPoff = function () {\r\n $scope.$broadcast('ngWebcam_off');\r\n $scope.captureButtonEnable = false;\r\n };\r\n\r\n $scope.KTPremove = function () {\r\n $scope.ktpPhoto = '';\r\n }\r\n\r\n $scope.allowedExt = ['.jpg', '.jpeg', '.bmp', '.png'];\r\n\r\n\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTP = \"\";\r\n $scope.fileKTPext = \"\";\r\n $scope.KTPFile = [];\r\n\r\n\r\n\r\n $scope.selectKTP = function (files) {\r\n\r\n if (files.length > 0) {\r\n console.log('files', files);\r\n $scope.KTPFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n if (allowed) {\r\n $scope.fileKTP = btoa(e.target.result.toString());\r\n $uibModalInstance.close($scope.fileKTP);\r\n }\r\n };\r\n console.log('gambar', $scope.KTPFile);\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileKTPext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n\r\n if ($scope.allowedExt.indexOf($scope.fileKTPext.toLowerCase()) < 0) {\r\n allowed = false;\r\n $scope.fileKTPext = '';\r\n $scope.KTPFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n }\r\n else\r\n $scope.filenameKTP = files[0].name;\r\n }\r\n else\r\n console.log('file not found');\r\n };\r\n\r\n\r\n $scope.clickRemoveKTP = function (file, event, key) {\r\n event.preventDefault();\r\n $scope.fileKTP = \"\";\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTPext = \"x\";\r\n $scope.KTPFile.splice(key, 1);\r\n $scope.KTPFile = [];\r\n return null;\r\n };\r\n\r\n\r\n\r\n $scope.ok = function () {\r\n $uibModalInstance.close($scope.item);\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n\r\n\r\n }]);\r\n\r\n\r\n\r\napp.controller('BrowseController', function ($scope, $uibModalInstance, items, uibDateParser, $http, $window, $location, $timeout, Upload, $q, $cookies, $translate) {\r\n\r\n $scope.items = items;\r\n $scope.allowedExt = ['.jpg', '.jpeg', '.bmp', '.png'];\r\n\r\n\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTP = \"\";\r\n $scope.fileKTPext = \"\";\r\n $scope.KTPFile = [];\r\n\r\n\r\n\r\n $scope.selectKTP = function (files) {\r\n\r\n if (files.length > 0) {\r\n console.log('files', files);\r\n $scope.KTPFile = files;\r\n let allowed = true;\r\n var reader = new FileReader();\r\n\r\n reader.onload = function (e) {\r\n if (allowed) {\r\n $scope.fileKTP = btoa(e.target.result.toString());\r\n $uibModalInstance.close($scope.fileKTP);\r\n }\r\n };\r\n console.log('gambar', $scope.KTPFile);\r\n reader.readAsBinaryString(files[0]);\r\n $scope.fileKTPext = files[0].name.substr(files[0].name.lastIndexOf('.'));\r\n\r\n if ($scope.allowedExt.indexOf($scope.fileKTPext.toLowerCase()) < 0) {\r\n allowed = false;\r\n $scope.fileKTPext = '';\r\n $scope.KTPFile = '';\r\n alert(\"Extensi yang dibolehkan : \" + $scope.allowedExt);\r\n }\r\n else\r\n $scope.filenameKTP = files[0].name;\r\n }\r\n else\r\n console.log('file not found');\r\n };\r\n\r\n\r\n $scope.clickRemoveKTP = function (file, event, key) {\r\n event.preventDefault();\r\n $scope.fileKTP = \"\";\r\n $scope.filenameKTP = \"\";\r\n $scope.fileKTPext = \"x\";\r\n $scope.KTPFile.splice(key, 1);\r\n $scope.KTPFile = [];\r\n return null;\r\n };\r\n});","app.controller('CIFDashboard-CTRL', ['$scope', '$http', '$window', '$timeout', '$q', 'appFactory',\r\n function ($scope, $http, $window, $timeout, $q, appFactory) {\r\n\r\n $scope.CIFInvestor = {}\r\n $scope.page = '';\r\n\r\n $scope.datanasabah = function () {\r\n\r\n $window.location.href = \"#/profile\";\r\n }\r\n\r\n $scope.stepClass = ['', 'blur', 'blur', 'blur', 'blur'];\r\n\r\n $scope.active = \"active current\";\r\n\r\n $scope.imgMale = \"\";\r\n $scope.imgDoc = \"\";\r\n $scope.imgFemale = \"\";\r\n $scope.chkquestionfatca = 2;\r\n\r\n var allPromise = $q.all([\r\n\r\n $scope.retrieveSessions()\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIFDetail`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n\r\n if ($scope.CIFInvestor.State1)\r\n $scope.stepClass[1] = \"active current\";\r\n\r\n if ($scope.CIFInvestor.State2)\r\n $scope.stepClass[2] = \"active current\";\r\n\r\n if ($scope.CIFInvestor.State3)\r\n $scope.stepClass[3] = \"active current\";\r\n\r\n if ($scope.CIFInvestor.State4)\r\n $scope.stepClass[4] = \"active current\";\r\n\r\n if ($scope.CIFInvestor.IsFinished == 1)\r\n $scope.page = 'finished'\r\n\r\n if ($scope.CIFInvestor.IsRevised == 1)\r\n $scope.page = 'revised'\r\n }\r\n }\r\n })\r\n });\r\n\r\n $scope.login = function () {\r\n $window.location.href = \"#/cif/data-pribadi\";\r\n }\r\n}]);","app.controller('CIFHeadCtrl', ['$scope', '$window', '$q', 'appFactory',\r\n function ($scope, $window, $q, appFactory) {\r\n $scope.stepClass = ['','', '', '', ''];\r\n $scope.stepActive = 'active current';\r\n $scope.current = 0;\r\n\r\n var allPromise = $q.all([\r\n appFactory.postGetData(`/service/client.svc/retrieveSession`, 'POST').then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (!data.data.d) {\r\n\r\n $scope.signOut();\r\n }\r\n else\r\n $scope.currentUser = data.data.d;\r\n }\r\n })\r\n ]);\r\n \r\n allPromise.then(function () {\r\n\r\n for(var i=1;i<5;i++)\r\n {\r\n if (i <= $scope.currentUser.Stage)\r\n $scope.stepClass[i] = 'done';\r\n }\r\n\r\n switch ($window.location.hash) {\r\n case \"#/cif/data-pribadi\": $scope.current = 1; $scope.stepClass[1] = $scope.stepActive; break;\r\n case \"#/cif/data-pekerjaan\": $scope.current = 2; $scope.stepClass[2] = $scope.stepActive; break;\r\n case \"#/cif/data-pendukung\": $scope.current = 3; $scope.stepClass[3] = $scope.stepActive; break;\r\n case \"#/cif/data-pernyataan\": $scope.current = 4; $scope.stepClass[4] = $scope.stepActive; break;\r\n }\r\n });\r\n\r\n\r\n $scope.showForm = function (goto) {\r\n if (goto <= $scope.currentUser.Stage)\r\n {\r\n let page = '#/cif/data-pribadi';\r\n\r\n switch (goto) {\r\n case 1: page = '#/cif/data-pribadi'; break;\r\n case 2: page = '#/cif/data-pekerjaan'; break;\r\n case 3: page = '#/cif/data-pendukung'; break;\r\n case 4: page = '#/cif/data-pernyataan'; break;\r\n }\r\n $window.location.href = page;\r\n $window.location.reload();\r\n }\r\n }\r\n}]);","app.controller('CIFProfile-CTRL', ['$scope', '$http', '$window', '$q', 'appFactory',\r\n function ($scope, $http, $window, $q, appFactory) {\r\n\r\n $scope.CIFInvestor = {}\r\n $scope.chkquestionfatca = 2;\r\n\r\n $scope.back = function () {\r\n $window.location.href = \"#/dashboard\";\r\n }\r\n var allPromise = $q.all([\r\n $scope.retrieveSessions()\r\n ]);\r\n\r\n\r\n allPromise.then(function () {\r\n\r\n appFactory.getData(`/service/client.svc/getCIFDetail`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n\r\n var obj = data.data.d;\r\n $scope.CIFInvestor = data.data.d;\r\n $scope.CIFInvestor.QuestionRDN = \"BANK CENTRAL ASIA\";\r\n $scope.filenameKTP = $scope.CIFInvestor.KTPFile;\r\n $scope.filenameFotoDiri = $scope.CIFInvestor.SelfieFile;\r\n $scope.filenameTandaTangan = $scope.CIFInvestor.TandaTanganFile;\r\n $scope.URLFolderKYC = data.data.d.URLFolderKYC;\r\n\r\n console.log($scope.CIFInvestor.NPWPFile)\r\n\r\n $scope.imgItem = [];\r\n if ($scope.CIFInvestor.KTPFile !== '')\r\n $scope.imgItem.push({ editing: false, url: '/FileKYC/' + $scope.CIFInvestor.KTPFile + \"?timestamp=\" + Date.now(), type: 'KTP', label: 'KTP' });\r\n \r\n if ($scope.CIFInvestor.SelfieFile !== '')\r\n $scope.imgItem.push({ editing: false, url: '/FileKYC/' + $scope.CIFInvestor.SelfieFile + \"?timestamp=\" + Date.now(), type: 'FotoDiri', label: 'Foto Diri bersama KTP' });\r\n\r\n if ($scope.CIFInvestor.TandaTanganFile !== '')\r\n $scope.imgItem.push({ editing: false, url: '/FileKYC/' + $scope.CIFInvestor.TandaTanganFile + \"?timestamp=\" + Date.now(), type: 'TandaTangan', label: 'Tanda Tangan Nasabah' });\r\n\r\n if ($scope.CIFInvestor.NPWPFile !== '')\r\n $scope.imgItem.push({ editing: false, url: '/FileKYC/' + $scope.CIFInvestor.NPWPFile + \"?timestamp=\" + Date.now(), type: 'NPWP', label: 'NPWP Nasabah' });\r\n\r\n if ($scope.CIFInvestor.Sex) {\r\n if ($scope.CIFInvestor.Sex == 'Male') {\r\n $scope.imgMale = \"../img/svg/report-male.svg\";\r\n }\r\n\r\n if ($scope.CIFInvestor.Sex == \"Female\") {\r\n $scope.imgMale = \"../img/svg/report-animate.svg\";\r\n }\r\n }\r\n\r\n if ($scope.CIFInvestor.FATCA1 == 'Tidak' || $scope.CIFInvestor.FATCA2 == 'Tidak' || $scope.CIFInvestor.FATCA3 == 'Tidak') {\r\n $scope.chkquestionfatca = 1;\r\n }\r\n\r\n if ($scope.CIFInvestor.IsFinished == 1) {\r\n $scope.active = \"active current\";\r\n }\r\n\r\n }\r\n }\r\n });\r\n\r\n $scope.navbarOptions = true;\r\n });\r\n}]);","app.controller('forgetPasswordCtrl', ['$scope', '$http', '$window', '$q',\r\n function ($scope, $http, $window, $q) {\r\n\r\n $scope.user_reset = {};\r\n\r\n $scope.UserNID = '';\r\n\r\n $scope.back = function () {\r\n $window.location.href = \"#/dashboard\";\r\n }\r\n\r\n $scope.submit = function () {\r\n\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/Forget_Password'; // 1\r\n var preconfirmtranslate = \"sendforgetpassword\"; // 2\r\n var postData = { UserForget: $scope.user_reset } // 3\r\n var method = \"POST\"; // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/login\";\r\n });\r\n };\r\n}]);\r\n","app.controller('LoginCtrl', ['$scope', '$rootScope', '$window', '$http', '$q', 'appFactory',\r\n function ($scope, $rootScope, $window, $http, $q, appFactory) {\r\n\r\n var allPromise = $q.all([\r\n\r\n // check login, jika ada session, maka pergi ke stage saat itu.\r\n $scope.checkLogin()\r\n ]);\r\n\r\n\r\n allPromise.then(function () {\r\n\r\n });\r\n\r\n $scope.user = {};\r\n\r\n // toggle password plaintext\r\n $scope.showPassword = false;\r\n $scope.inputType = 'password';\r\n $scope.toggleShowPassword = function () {\r\n $scope.showPassword = !$scope.showPassword;\r\n if ($scope.inputType == 'password')\r\n $scope.inputType = 'text';\r\n else\r\n $scope.inputType = 'password';\r\n }\r\n\r\n // saat tombol login di submit\r\n $scope.submit = function () {\r\n\r\n appFactory.postGetData(\r\n `/service/client.svc/LoginUser`,\r\n 'POST',\r\n { UserLogin: $scope.user }\r\n ).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n $scope.result = data.data.d;\r\n\r\n var SWALtranslate = $scope.SWALtranslate($scope.result.message);\r\n\r\n // login ok\r\n if ($scope.result.result) {\r\n\r\n console.log($scope.result)\r\n\r\n $scope.checkLoginStep($scope.result);\r\n return;\r\n }\r\n\r\n // if user not activated, open sweet alert with footer\r\n if ($scope.result.message == \"notactivated\") {\r\n\r\n $rootScope.AlertShowFooter('warning', SWALtranslate.title, SWALtranslate.message,\r\n `` + SWALtranslate.footer + ``, 0);\r\n\r\n $(\"#resendOTP\").on(\"click\", function () {\r\n\r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = 'service/client.svc/resendOTP?emailto=' + $scope.user.Email; // 1\r\n var preconfirmtranslate = \"resendactivationlink\"; // 2 \r\n var postData = {}; // 3\r\n var method = \"GET\"; // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6 \r\n $window.location.href = \"#/login\";\r\n });\r\n });\r\n return\r\n }\r\n\r\n // login not ok\r\n $rootScope.GlobalAlert('warning', SWALtranslate.title, SWALtranslate.message, 0);\r\n }\r\n });\r\n };\r\n}]);\r\n","(function() {\r\n 'use strict';\r\n angular.module('ng-webcam', []).directive('ngWebcam', ngWebcam);\r\n ngWebcam.$inject = [];\r\n\r\n function ngWebcam() {\r\n var directive = {\r\n restrict: 'E',\r\n template: template,\r\n link: link,\r\n bindToController: true,\r\n controller: ngWebcamController,\r\n controllerAs: 'cam',\r\n scope: {\r\n config: '=',\r\n onCaptureComplete: '&',\r\n onError: '&',\r\n onLoad: '&',\r\n onCaptureProgress: '&',\r\n onLive: '&'\r\n }\r\n };\r\n\r\n function template(element, attrs) {\r\n return ['
',\r\n '
',\r\n '
'].join('');\r\n }\r\n\r\n function link(scope, element, attrs, ctrl) {\r\n ctrl.init();\r\n scope.$on('$destroy', function() {\r\n ctrl.destroy();\r\n });\r\n }\r\n\r\n ngWebcamController.$inject = ['$scope', '$interval', '$window'];\r\n\r\n function ngWebcamController($scope, $interval, $window) {\r\n /*jshint validthis: true */\r\n var vm = this;\r\n var sound, snapshotTimer, countdownTimer;\r\n var images = [];\r\n vm.webcamLoaded = false;\r\n vm.webcamLive = false;\r\n vm.progress = '0%';\r\n vm.counter = 3;\r\n vm.init = init;\r\n vm.destroy = destroy;\r\n \r\n $scope.$on('ngWebcam_capture', onWebcamCapture);\r\n $scope.$on('ngWebcam_on', onWebcamOn);\r\n $scope.$on('ngWebcam_off', onWebcamOff);\r\n\r\n $scope.$on('ngWebcam_camEnv', onWebcamCamEnv);\r\n $scope.$on('ngWebcam_camUsr', onWebcamCamUsr);\r\n $scope.$on('ngWebcam_restart', init);\r\n $scope.$on('ngWebcam_hasmedia', hasUserMedia);\r\n\r\n function init() {\r\n vm.config = vm.config || {};\r\n if(angular.isUndefined(vm.config.viewerWidth)) vm.config.viewerWidth = 'auto';\r\n if(angular.isUndefined(vm.config.viewerHeight)) vm.config.viewerHeight = 'auto';\r\n if(angular.isUndefined(vm.config.outputWidth)) vm.config.outputWidth = 640;\r\n if(angular.isUndefined(vm.config.outputHeight)) vm.config.outputHeight = 640;\r\n if(angular.isUndefined(vm.config.delay)) vm.config.delay = 0;\r\n if(angular.isUndefined(vm.config.shots)) vm.config.shots = 1;\r\n if (angular.isUndefined(vm.config.countdown)) vm.config.countdown = 0;\r\n vm.counter = 3;\r\n configureListeners();\r\n configure();\r\n }\r\n\r\n function destroy() {\r\n Webcam.reset();\r\n vm.webcamLive = false;\r\n vm.webcamLoaded = false;\r\n }\r\n\r\n function configure() {\r\n if(angular.isDefined(vm.config.shutterUrl)) {\r\n sound = new Audio();\r\n sound.autoplay = false;\r\n if(navigator.userAgent.match(/Firefox/)) {\r\n sound.src = vm.config.shutterUrl.split('.')[0] + '.ogg';\r\n } else {\r\n sound.src = vm.config.shutterUrl;\r\n }\r\n }\r\n\r\n Webcam.set({\r\n width: vm.config.viewerWidth,\r\n height: vm.config.viewerHeight,\r\n dest_width: vm.config.outputWidth,\r\n dest_height: vm.config.outputHeight,\r\n force_flash: false,\r\n image_format: 'jpeg',\r\n jpeg_quality: 100\r\n });\r\n\r\n Webcam.set('constraints', {\r\n facingMode: \"environment\"\r\n });\r\n\r\n if(angular.isDefined(vm.config.flashFallbackUrl)) {\r\n Webcam.setSWFLocation(vm.config.flashFallbackUrl);\r\n }\r\n if(angular.isDefined(vm.config.flashNotDetectedText)) {\r\n Webcam.set('flashNotDetectedText', vm.config.flashNotDetectedText);\r\n }\r\n Webcam.attach('#ng-webcam-container');\r\n }\r\n\r\n function configureListeners() {\r\n Webcam.on('load', function() {\r\n $scope.$apply(function() {\r\n vm.webcamLoaded = true;\r\n if(angular.isDefined(vm.onLoad)) {\r\n vm.onLoad();\r\n }\r\n });\r\n });\r\n Webcam.on('live', function() {\r\n $scope.$apply(function() {\r\n vm.webcamLive = true;\r\n if(angular.isDefined(vm.onLive)) {\r\n vm.onLive();\r\n }\r\n });\r\n });\r\n Webcam.on('error', function(err) {\r\n if(angular.isDefined(vm.onError)) {\r\n return vm.onError({err:err});\r\n }\r\n });\r\n }\r\n\r\n function capture(index) {\r\n \r\n console.log('index', index);\r\n if (index === (vm.config.shots - 1))\r\n {\r\n $interval.cancel(snapshotTimer);\r\n }\r\n\r\n Webcam.snap(function (data_uri)\r\n {\r\n //console.log('uri', data_uri);\r\n images[index] = data_uri;\r\n if (index < (vm.config.shots - 1) && angular.isDefined(vm.onCaptureProgress))\r\n {\r\n var progress = Math.round(((index+1) * 100) / vm.config.shots);\r\n vm.onCaptureProgress({src: data_uri,progress: progress});\r\n }\r\n if (index === (vm.config.shots - 1) && angular.isDefined(vm.onCaptureComplete))\r\n {\r\n return vm.onCaptureComplete({src: images});\r\n }\r\n });\r\n }\r\n\r\n function onWebcamCapture() {\r\n \r\n console.log('COUNTDOWN : ',vm.config.countdown);\r\n if (angular.isUndefined(vm.config.countdown))\r\n {\r\n console.log('1');\r\n \r\n\r\n var count = 0;\r\n snapshotTimer = $interval(function() {\r\n capture(count);\r\n count++;\r\n }, (vm.config.delay * 100), vm.config.shots);\r\n } \r\n else \r\n {\r\n console.log('2');\r\n console.log('shots', vm.config.shots);\r\n console.log('delay', vm.config.delay);\r\n console.log('counter', vm.counter);\r\n\r\n countdownTimer = $interval(function() \r\n {\r\n --vm.counter;\r\n if(vm.counter === 0) \r\n {\r\n if (countdownTimer)\r\n {\r\n $interval.cancel(countdownTimer);\r\n }\r\n\r\n var count = 0;\r\n snapshotTimer = $interval(function() {\r\n capture(count);\r\n count++;\r\n }, (vm.config.delay * 100), vm.config.shots);\r\n }\r\n }, 100, vm.config.countdown);\r\n }\r\n }\r\n\r\n function onWebcamOn() {\r\n Webcam.attach('#ng-webcam-container');\r\n }\r\n\r\n function onWebcamOff() {\r\n destroy();\r\n }\r\n\r\n function hasUserMedia() {\r\n return ($window.navigator.getUserMedia || $window.navigator.webkitGetUserMedia ||\r\n $window.navigator.mozGetUserMedia || $window.navigator.msGetUserMedia);\r\n }\r\n\r\n function browsers() {\r\n /*jshint maxcomplexity: 40 */\r\n var ua= $window.navigator.userAgent, tem,\r\n M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if(/trident/i.test(M[1])){\r\n tem= /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return 'IE '+(tem[1] || '');\r\n }\r\n if(M[1]=== 'Chrome'){\r\n tem= ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');\r\n }\r\n M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n if((tem= ua.match(/version\\/(\\d+)/i))!= null) M.splice(1, 1, tem[1]);\r\n return M.join(' ');\r\n }\r\n\r\n\r\n function onWebcamCamEnv() {\r\n Webcam.set('constraints', {\r\n facingMode: \"environment\"\r\n });\r\n Webcam.reset();\r\n Webcam.attach('#ng-webcam-container');\r\n console.log(Webcam);\r\n }\r\n\r\n function onWebcamCamUsr() {\r\n Webcam.set('constraints', {\r\n facingMode: \"user\"\r\n });\r\n Webcam.reset();\r\n Webcam.attach('#ng-webcam-container');\r\n //console.log(Webcam);\r\n }\r\n\r\n }\r\n return directive;\r\n }\r\n})();","app.controller('ActivationCtrl', ['$scope', '$routeParams', '$http', '$window', '$q', 'appFactory',\r\n function ($scope, $routeParams, $http, $window, $q, appFactory) {\r\n\r\n $scope.user = {};\r\n\r\n if ($routeParams.generatedkey) {\r\n $scope.user.generatedkey = $routeParams.generatedkey;\r\n }\r\n\r\n $scope.page = 'activation';\r\n\r\n var allPromise = $q.all([\r\n\r\n appFactory.getData(`service/client.svc/recheckActivationLink?key=${$routeParams.generatedkey}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (!data.data.d.result) {\r\n $window.location.href = \"#/login\";\r\n $window.location.reload();\r\n } else {\r\n\r\n $window.location.href = \"#/login\";\r\n\r\n var SWALtranslate = $scope.SWALtranslate('activationsuccess');\r\n Swal.fire(SWALtranslate.title, SWALtranslate.message, 'success');\r\n }\r\n }\r\n })\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n });\r\n}]);\r\n","app.controller('RegisterCtrl', ['$scope', '$routeParams', '$http', '$window', '$q', 'appFactory', '$uibModal',\r\nfunction ($scope, $routeParams, $http, $window, $q, appFactory, $uibModal) {\r\n\r\n $scope.user = {};\r\n $scope.ListSales = [];\r\n\r\n $scope.user.PhoneCode = '+62';\r\n $scope.user.QuestionRDN = '1';\r\n\r\n $scope.disablesales = false;\r\n $scope.SalesSelected = '';\r\n\r\n $scope.page = 'step1';\r\n\r\n $scope.showPassword = false;\r\n $scope.inputType = 'password';\r\n $scope.toggleShowPassword = function () {\r\n $scope.showPassword = !$scope.showPassword;\r\n if ($scope.inputType == 'password')\r\n $scope.inputType = 'text';\r\n else\r\n $scope.inputType = 'password';\r\n }\r\n\r\n $scope.showPasswordConfirmation = false;\r\n $scope.inputTypeConfirmation = 'password';\r\n $scope.toggleShowPasswordConfirmation = function () {\r\n $scope.showPasswordConfirmation = !$scope.showPasswordConfirmation;\r\n if ($scope.inputTypeConfirmation == 'password')\r\n $scope.inputTypeConfirmation = 'text';\r\n else\r\n $scope.inputTypeConfirmation = 'password';\r\n }\r\n\r\n $scope.checkPassword = function () {\r\n if ($scope.ConfirmPassword != $scope.user.Password) {\r\n $scope.formRegister.txtConfirmPassword.$invalid = true;\r\n $scope.infolengthpass = false;\r\n }\r\n };\r\n\r\n var allPromise = $q.all([\r\n appFactory.getData(`/service/client.svc/GetCountryPhone`).then(function (data) {\r\n\r\n if (data.status == 200)\r\n $scope.ListCountryPhone = data.data.d;\r\n }),\r\n appFactory.getData(`/service/client.svc/GetCIFSales`).then(function (data) {\r\n\r\n if (data.status == 200)\r\n $scope.ListSales = data.data.d;\r\n }),\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n });\r\n\r\n // when sales is selected\r\n $scope.selectSales = function (item, model, label, event) {\r\n\r\n if (item.SalesPersonNID) {\r\n $scope.user.Sales = item.SalesPersonNID;\r\n $scope.SalesSelected = item;\r\n }\r\n };\r\n\r\n // check bank number duplication\r\n $scope.checkBankNumber = function () {\r\n if ($scope.user.BankNumber) {\r\n\r\n appFactory.getData(`/service/client.svc/checkBankNumber?BK=${$scope.user.BankNumber}`).then(function (data) {\r\n\r\n if (data.status == 200) {\r\n\r\n if (data.data.d != null) {\r\n var obj = data.data.d;\r\n if (obj.key && obj.key == 1) {\r\n $scope.user.BankNumber = '';\r\n Swal.fire('Failed', obj.value, \"error\");\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n $scope.showAgreement = function (number) {\r\n\r\n let htmlName = 'template/Registeragereement' + number + '.html';\r\n var modalInstance = $uibModal\r\n .open({\r\n animation: true,\r\n templateUrl: htmlName,\r\n controller: 'RegisterAgreementCtrl',\r\n size: 'lg',\r\n backdrop: 'static',\r\n resolve: {\r\n\r\n agreementNumber: function () {\r\n\r\n return number;\r\n }\r\n }\r\n });\r\n\r\n modalInstance.result.then(function (response, agree) {\r\n\r\n if (response == 'accept') {\r\n\r\n if (number == 1) {\r\n\r\n $scope.agree1 = true;\r\n $scope.disclaimerClose = true;\r\n }\r\n\r\n\r\n if ($scope.disclaimerClose == true);\r\n }\r\n }, function () { });\r\n };\r\n\r\n // jika url ke: register/{id sales} maka sales selected auto\r\n //if ($routeParams.id) {\r\n\r\n // appFactory.getData(`/service/client.svc/GetAliasSales?alias=${$routeParams.id}`).then(function (data) {\r\n\r\n // if (data.status == 200) {\r\n // // jika id sales di temukan maka:\r\n // if (data.data.d.SalesPersonNID > 0) {\r\n\r\n // $scope.user.Sales = data.data.d.SalesPersonNID;\r\n // $scope.SalesSelected = data.data.d;\r\n // $scope.disablesales = true;\r\n // }\r\n // }\r\n // });\r\n //}\r\n\r\n // variables before submit post\r\n $scope.prepareData = function () {\r\n \r\n //if ($scope.user.Sales == \"\" || $scope.user.Sales == 0)\r\n // $scope.user.Sales = 128;\r\n }\r\n\r\n $scope.submit = function () {\r\n\r\n $scope.prepareData();\r\n \r\n // dynamic sweet alert post to app.js\r\n // 1: set the url of post or get request\r\n // 2: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 3: set the postdata to $http request = GET : {} / POST { yourdata : data }\r\n // 4: set the method to $http request = \"GET\" / \"POST\"\r\n // 5: set the sweet alert translation, refers to apps.js $scope.SWALtranslate() :preconfirm = confirmation dialog before post or get request\r\n // 6: if success or no error returns then...\r\n var urlsvc = '/service/client.svc/RegistrasiUser'; // 1\r\n var preconfirmtranslate = \"submitregistrationconf\"; // 2\r\n var postData = { User: $scope.user } // 3\r\n var method = \"POST\" // 4\r\n $scope.PostGetSwal(preconfirmtranslate, urlsvc, postData, method, function (issuccess) {\r\n\r\n if (issuccess) // 6\r\n $window.location.href = \"#/login\";\r\n });\r\n }\r\n\r\n $scope.validationinput = function () {\r\n\r\n if ($scope.user.FirstName != null \r\n && $scope.user.Email != null\r\n && $scope.user.Handphone != null\r\n && $scope.user.BankOwner != null\r\n && $scope.user.BankNumber != null\r\n && $scope.user.Password != null\r\n && $scope.ConfirmPassword != null\r\n && $scope.disclaimerRek != null\r\n && $scope.user.disclaimerBO != null\r\n && $scope.user.disclaimerAgreement != null\r\n ) {\r\n console.log('validation success');\r\n }\r\n else {\r\n var SWALtranslate = $scope.SWALtranslate('validationinput');\r\n\r\n Swal.fire({\r\n title: SWALtranslate.title,\r\n text: SWALtranslate.message,\r\n imageUrl: 'img/collection/wrong.png',\r\n imageAlt: 'Preparation',\r\n imageHeight: 250,\r\n animation: false\r\n });\r\n }\r\n }\r\n\r\n}]);\r\n\r\n\r\napp.controller('RegisterAgreementCtrl', ['$scope', '$uibModalInstance', 'agreementNumber', '$q', 'appFactory',\r\n function ($scope, $uibModalInstance, agreementNumber, $q, appFactory) {\r\n\r\n $scope.agreementNumber = agreementNumber;\r\n\r\n $scope.accept = function () {\r\n\r\n $uibModalInstance.close('accept', $scope.agreementNumber);\r\n };\r\n\r\n\r\n var allPromise = $q.all([\r\n\r\n\r\n ]);\r\n\r\n allPromise.then(function () {\r\n\r\n });\r\n\r\n $scope.cancel = function () {\r\n\r\n $uibModalInstance.dismiss('cancel', $scope.agreementNumber);\r\n };\r\n }]);"]}