{"version":3,"sources":["webpack:///./node_modules/zxcvbn/lib/matching.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/zxcvbn/lib/main.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/zxcvbn/lib/adjacency_graphs.js","webpack:///./node_modules/zxcvbn/lib/feedback.js","webpack:///./node_modules/zxcvbn/lib/scoring.js","webpack:///./node_modules/zxcvbn/lib/time_estimates.js","webpack:///(webpack)/buildin/global.js"],"names":["DATE_MAX_YEAR","DATE_MIN_YEAR","DATE_SPLITS","GRAPHS","L33T_TABLE","RANKED_DICTIONARIES","REGEXEN","adjacency_graphs","build_ranked_dict","frequency_lists","lst","matching","name","scoring","ordered_list","i","len1","o","result","word","length","qwerty","dvorak","keypad","mac_keypad","a","b","c","e","g","l","s","t","x","z","recent_year","4","5","6","7","8","empty","obj","k","results","push","extend","lst2","apply","translate","string","chr_map","chr","ref","split","join","mod","n","m","sorted","matches","sort","m1","m2","j","omnimatch","password","matcher","matchers","this","dictionary_match","reverse_dictionary_match","l33t_match","spatial_match","repeat_match","sequence_match","regex_match","date_match","call","_ranked_dictionaries","dictionary_name","len","p","password_lower","rank","ranked_dict","ref1","ref2","toLowerCase","slice","pattern","token","matched_word","reversed","l33t","match","reversed_password","reverse","set_user_input_dictionary","relevant_l33t_subtable","table","letter","password_chars","relevant_subs","sub","subs","subtable","len2","enumerate_l33t_subs","dedup","helper","keys","l33t_chr","sub_dict","sub_dicts","assoc","deduped","label","members","v","dup_l33t_index","first_key","next_subs","q","rest_keys","sub_alternative","sub_extension","concat","splice","_l33t_table","match_sub","subbed_chr","subbed_password","indexOf","sub_display","filter","_graphs","graph","graph_name","spatial_match_helper","SHIFTED_RX","adj","adjacents","cur_char","cur_direction","found","found_direction","last_direction","prev_char","shifted_count","turns","exec","charAt","base_analysis","base_guesses","base_matches","base_token","greedy","greedy_match","lastIndex","lazy","lazy_anchored","lazy_match","index","most_guessable_match_sequence","sequence","guesses","repeat_count","MAX_DELTA","delta","last_delta","update","_this","sequence_name","sequence_space","Math","abs","test","ascending","charCodeAt","_regexen","regex","rx_match","regex_name","best_candidate","candidate","candidates","distance","dmy","maybe_date_no_separator","maybe_date_with_separator","metric","min_distance","r","ref3","ref4","ref5","ref6","ref7","ref8","ref9","map_ints_to_dmy","parseInt","year","REFERENCE_YEAR","separator","month","day","is_submatch","len3","other_match","u","ints","dm","int","over_12","over_31","possible_year_splits","rest","under_1","y","map_ints_to_dm","two_to_four_digit_year","d","module","exports","applyMixin","Vue","version","Number","mixin","beforeCreate","vuexInit","_init","prototype","options","init","$options","store","$store","parent","target","window","global","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","emit","on","targetState","replaceState","subscribe","mutation","state","prepend","subscribeAction","action","find","list","f","deepCopy","cache","hit","original","copy","Array","isArray","Object","forEach","key","forEachValue","fn","isObject","isPromise","val","then","partial","arg","Module","rawModule","runtime","_children","create","_rawModule","rawState","prototypeAccessors","namespaced","configurable","get","addChild","removeChild","getChild","hasChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","ModuleCollection","rawRootModule","register","path","targetModule","newModule","modules","reduce","root","getNamespace","namespace","this$1","rawChildModule","unregister","child","isRegistered","Store","install","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","commit","type","payload","installModule","resetStoreVM","plugin","useDevtools","undefined","devtools","config","prototypeAccessors$1","genericSubscribe","unshift","resetStore","hot","oldVm","_vm","wrappedGetters","computed","defineProperty","enumerable","silent","data","$$state","enableStrictMode","_withCommit","_data","nextTick","$destroy","rootState","isRoot","parentState","getNestedState","moduleName","set","local","context","makeLocalContext","namespacedType","registerMutation","handler","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","args","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","res","rootGetters","Promise","resolve","catch","err","rawGetter","$watch","deep","sync","_Vue","before","all","map","reject","after","error","watch","cb","registerModule","preserveState","unregisterModule","delete","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","arguments","mapGetters","mapActions","createNamespacedHelpers","bind","isValidMap","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","console","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","message","startMessage","log","endMessage","formattedAction","groupCollapsed","group","groupEnd","time","Date","pad","getHours","getMinutes","getSeconds","getMilliseconds","repeat","str","times","num","maxLength","toString","feedback","time_estimates","zxcvbn","getTime","user_inputs","attack_times","prop","sanitized_inputs","start","calc_time","estimate_attack_times","get_feedback","score","webpackPolyfill","deprecate","paths","children","\"","default_feedback","warning","suggestions","extra_feedback","longest_match","get_match_feedback","is_sole_match","get_dictionary_match_feedback","toUpperCase","guesses_log10","START_UPPER","ALL_UPPER","BRUTEFORCE_CARDINALITY","MIN_GUESSES_BEFORE_GROWING_SEQUENCE","MIN_SUBMATCH_GUESSES_MULTI_CHAR","MIN_SUBMATCH_GUESSES_SINGLE_CHAR","calc_average_degree","average","neighbors","nCk","log10","log2","factorial","_exclude_additive","bruteforce_update","make_bruteforce_match","matches_by_j","optimal","optimal_l","optimal_match_sequence","unwind","w","pi","competing_g","competing_l","estimate_guesses","pow","last_m","results1","candidate_g","candidate_l","Infinity","estimation_functions","min_guesses","bruteforce","bruteforce_guesses","dictionary","dictionary_guesses","spatial","spatial_guesses","repeat_guesses","sequence_guesses","regex_guesses","date","date_guesses","max","POSITIVE_INFINITY","MAX_VALUE","first_chr","MIN_YEAR_SPACE","getFullYear","char_class_bases","year_space","alpha_lower","alpha_upper","alpha","alphanumeric","digits","symbols","KEYBOARD_AVERAGE_DEGREE","KEYPAD_AVERAGE_DEGREE","KEYBOARD_STARTING_POSITIONS","KEYPAD_STARTING_POSITIONS","L","S","U","possible_turns","shifted_variations","min","reversed_variations","uppercase_variations","l33t_variations","END_UPPER","ALL_LOWER","variations","chrs","possibilities","subbed","unsubbed","crack_times_display","crack_times_seconds","scenario","seconds","online_throttling_100_per_hour","online_no_throttling_10_per_second","offline_slow_hashing_1e4_per_second","offline_fast_hashing_1e10_per_second","display_time","guesses_to_score","DELTA","base","century","display_num","display_str","hour","minute","round","Function"],"mappings":"qTACA,IAAIA,EAAeC,EAAeC,EAAaC,EAAQC,EAAYC,EAAqBC,EAASC,EAAkBC,EAAmBC,EAAiBC,EAAKC,EAAUC,EAAMC,EAsB5K,IAAKD,KApBLH,EAAkB,EAAQ,QAE1BF,EAAmB,EAAQ,QAE3BM,EAAU,EAAQ,QAElBL,EAAoB,SAASM,GAC3B,IAAIC,EAAGC,EAAMC,EAAGC,EAAQC,EAGxB,IAFAD,EAAS,GACTH,EAAI,EACCE,EAAI,EAAGD,EAAOF,EAAaM,OAAQH,EAAID,EAAMC,IAChDE,EAAOL,EAAaG,GACpBC,EAAOC,GAAQJ,EACfA,GAAK,EAEP,OAAOG,GAGTb,EAAsB,GAETI,EACXC,EAAMD,EAAgBG,GACtBP,EAAoBO,GAAQJ,EAAkBE,GAGhDP,EAAS,CACPkB,OAAQd,EAAiBc,OACzBC,OAAQf,EAAiBe,OACzBC,OAAQhB,EAAiBgB,OACzBC,WAAYjB,EAAiBiB,YAG/BpB,EAAa,CACXqB,EAAG,CAAC,IAAK,KACTC,EAAG,CAAC,KACJC,EAAG,CAAC,IAAK,IAAK,IAAK,KACnBC,EAAG,CAAC,KACJC,EAAG,CAAC,IAAK,KACTd,EAAG,CAAC,IAAK,IAAK,KACde,EAAG,CAAC,IAAK,IAAK,KACdb,EAAG,CAAC,KACJc,EAAG,CAAC,IAAK,KACTC,EAAG,CAAC,IAAK,KACTC,EAAG,CAAC,KACJC,EAAG,CAAC,MAGN5B,EAAU,CACR6B,YAAa,uBAGfnC,EAAgB,KAEhBC,EAAgB,IAEhBC,EAAc,CACZkC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAChBC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAChBC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACxBC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAChCC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,KAGlB7B,EAAW,CACT8B,MAAO,SAASC,GACd,IAAIC,EACJ,OAOiB,IAPT,WACN,IAAIC,EAEJ,IAAKD,KADLC,EAAU,GACAF,EACRE,EAAQC,KAAKF,GAEf,OAAOC,EANF,GAODxB,QAER0B,OAAQ,SAASpC,EAAKqC,GACpB,OAAOrC,EAAImC,KAAKG,MAAMtC,EAAKqC,IAE7BE,UAAW,SAASC,EAAQC,GAC1B,IAAIC,EACJ,OAAQ,WACN,IAAIpC,EAAMC,EAAGoC,EAAKT,EAGlB,IAFAS,EAAMH,EAAOI,MAAM,IACnBV,EAAU,GACL3B,EAAI,EAAGD,EAAOqC,EAAIjC,OAAQH,EAAID,EAAMC,IACvCmC,EAAMC,EAAIpC,GACV2B,EAAQC,KAAKM,EAAQC,IAAQA,GAE/B,OAAOR,EARF,GASDW,KAAK,KAEbC,IAAK,SAASC,EAAGC,GACf,OAASD,EAAIC,EAAKA,GAAKA,GAEzBC,OAAQ,SAASC,GACf,OAAOA,EAAQC,MAAK,SAASC,EAAIC,GAC/B,OAAQD,EAAG/C,EAAIgD,EAAGhD,GAAO+C,EAAGE,EAAID,EAAGC,MAGvCC,UAAW,SAASC,GAClB,IAAIlD,EAAMmD,EAASC,EAAUR,EAAS3C,EAGtC,IAFA2C,EAAU,GACVQ,EAAW,CAACC,KAAKC,iBAAkBD,KAAKE,yBAA0BF,KAAKG,WAAYH,KAAKI,cAAeJ,KAAKK,aAAcL,KAAKM,eAAgBN,KAAKO,YAAaP,KAAKQ,YACjK5D,EAAI,EAAGD,EAAOoD,EAAShD,OAAQH,EAAID,EAAMC,IAC5CkD,EAAUC,EAASnD,GACnBoD,KAAKvB,OAAOc,EAASO,EAAQW,KAAKT,KAAMH,IAE1C,OAAOG,KAAKV,OAAOC,IAErBU,iBAAkB,SAASJ,EAAUa,GACnC,IAAIC,EAAiBjE,EAAGiD,EAAGiB,EAAKrB,EAAS3C,EAAGiE,EAAGC,EAAgBC,EAAMC,EAAahC,EAAKiC,EAAMC,EAAMpE,EAOnG,IAAK6D,KANuB,MAAxBD,IACFA,EAAuB1E,GAEzBuD,EAAU,GACVqB,EAAMf,EAAS9C,OACf+D,EAAiBjB,EAASsB,cACFT,EAEtB,IADAM,EAAcN,EAAqBC,GAC9BjE,EAAIE,EAAI,EAAGoC,EAAM4B,EAAK,GAAK5B,EAAMpC,EAAIoC,EAAMpC,EAAIoC,EAAKtC,EAAI,GAAKsC,IAAQpC,IAAMA,EAC9E,IAAK+C,EAAIkB,EAAII,EAAOvE,EAAGwE,EAAON,EAAKK,GAAQC,EAAOL,EAAIK,EAAOL,EAAIK,EAAMvB,EAAIsB,GAAQC,IAASL,IAAMA,EAC5FC,EAAeM,MAAM1E,GAAIiD,EAAI,GAAK,OAAQqB,IAC5ClE,EAAOgE,EAAeM,MAAM1E,GAAIiD,EAAI,GAAK,KACzCoB,EAAOC,EAAYlE,GACnByC,EAAQf,KAAK,CACX6C,QAAS,aACT3E,EAAGA,EACHiD,EAAGA,EACH2B,MAAOzB,EAASuB,MAAM1E,GAAIiD,EAAI,GAAK,KACnC4B,aAAczE,EACdiE,KAAMA,EACNJ,gBAAiBA,EACjBa,UAAU,EACVC,MAAM,KAMhB,OAAOzB,KAAKV,OAAOC,IAErBW,yBAA0B,SAASL,EAAUa,GAC3C,IAAI/D,EAAM+E,EAAOnC,EAAS3C,EAAGoC,EAAK2C,EAMlC,IAL4B,MAAxBjB,IACFA,EAAuB1E,GAEzB2F,EAAoB9B,EAASZ,MAAM,IAAI2C,UAAU1C,KAAK,IACtDK,EAAUS,KAAKC,iBAAiB0B,EAAmBjB,GAC9C9D,EAAI,EAAGD,EAAO4C,EAAQxC,OAAQH,EAAID,EAAMC,IAC3C8E,EAAQnC,EAAQ3C,GAChB8E,EAAMJ,MAAQI,EAAMJ,MAAMrC,MAAM,IAAI2C,UAAU1C,KAAK,IACnDwC,EAAMF,UAAW,EACjBxC,EAAM,CAACa,EAAS9C,OAAS,EAAI2E,EAAM/B,EAAGE,EAAS9C,OAAS,EAAI2E,EAAMhF,GAAIgF,EAAMhF,EAAIsC,EAAI,GAAI0C,EAAM/B,EAAIX,EAAI,GAExG,OAAOgB,KAAKV,OAAOC,IAErBsC,0BAA2B,SAASpF,GAClC,OAAOT,EAAoB,eAAiBG,EAAkBM,EAAa2E,UAE7EU,uBAAwB,SAASjC,EAAUkC,GACzC,IAAIhD,EAAKpC,EAAMqF,EAAQpF,EAAGqF,EAAgBjD,EAAKkD,EAAeC,EAAKC,EAAMC,EAGzE,IAFAJ,EAAiB,GACjBjD,EAAMa,EAASZ,MAAM,IAChBrC,EAAI,EAAGD,EAAOqC,EAAIjC,OAAQH,EAAID,EAAMC,IACvCmC,EAAMC,EAAIpC,GACVqF,EAAelD,IAAO,EAGxB,IAAKiD,KADLK,EAAW,GACIN,EACbK,EAAOL,EAAMC,GACbE,EAAgB,WACd,IAAII,EAAMzB,EAAGtC,EAEb,IADAA,EAAU,GACLsC,EAAI,EAAGyB,EAAOF,EAAKrF,OAAQ8D,EAAIyB,EAAMzB,IACxCsB,EAAMC,EAAKvB,GACPsB,KAAOF,GACT1D,EAAQC,KAAK2D,GAGjB,OAAO5D,EATO,GAWZ2D,EAAcnF,OAAS,IACzBsF,EAASL,GAAUE,GAGvB,OAAOG,GAETE,oBAAqB,SAASR,GAC5B,IAAIhD,EAAKyD,EAAOC,EAAQnE,EAAGoE,EAAMC,EAAUhG,EAAM2F,EAAM1F,EAAGiE,EAAG7B,EAAKmD,EAAKS,EAAUC,EAAWT,EA+E5F,IA9EAM,EAAO,WACL,IAAInE,EAEJ,IAAKD,KADLC,EAAU,GACAwD,EACRxD,EAAQC,KAAKF,GAEf,OAAOC,EANF,GAQP6D,EAAO,CAAC,IACRI,EAAQ,SAASJ,GACf,IAAIU,EAAOC,EAASC,EAAOrG,EAAMsG,EAASrG,EAAGuF,EAAKe,EAGlD,IAFAH,EAAU,GACVE,EAAU,GACLrG,EAAI,EAAGD,EAAOyF,EAAKrF,OAAQH,EAAID,EAAMC,IACxCuF,EAAMC,EAAKxF,GACXkG,EAAQ,WACN,IAAIR,EAAMzB,EAAGtC,EAEb,IADAA,EAAU,GACL2E,EAAIrC,EAAI,EAAGyB,EAAOH,EAAIpF,OAAQ8D,EAAIyB,EAAMY,IAAMrC,EACjDvC,EAAI6D,EAAIe,GACR3E,EAAQC,KAAK,CAACF,EAAG4E,IAEnB,OAAO3E,EAPD,GASRuE,EAAMtD,OACNwD,EAAS,WACP,IAAIV,EAAMzB,EAAGtC,EAEb,IADAA,EAAU,GACL2E,EAAIrC,EAAI,EAAGyB,EAAOQ,EAAM/F,OAAQ8D,EAAIyB,EAAMY,IAAMrC,EACnDvC,EAAIwE,EAAMI,GACV3E,EAAQC,KAAKF,EAAI,IAAM4E,GAEzB,OAAO3E,EAPD,GAQFW,KAAK,KACL8D,KAASC,IACbA,EAAQD,IAAS,EACjBD,EAAQvE,KAAK2D,IAGjB,OAAOY,GAETN,EAAS,SAASC,GAChB,IAAIS,EAAgBC,EAAW1G,EAAGiG,EAAUhG,EAAM2F,EAAMe,EAAWzG,EAAGiE,EAAGyC,EAAGtE,EAAKiC,EAAMsC,EAAWpB,EAAKqB,EAAiBC,EACxH,GAAKf,EAAK3F,OAAV,CAOA,IAJAqG,EAAYV,EAAK,GACjBa,EAAYb,EAAKtB,MAAM,GACvBiC,EAAY,GACZrE,EAAM+C,EAAMqB,GACPxG,EAAI,EAAGD,EAAOqC,EAAIjC,OAAQH,EAAID,EAAMC,IAEvC,IADA+F,EAAW3D,EAAIpC,GACViE,EAAI,EAAGyB,EAAOF,EAAKrF,OAAQ8D,EAAIyB,EAAMzB,IAAK,CAG7C,IAFAsB,EAAMC,EAAKvB,GACXsC,GAAkB,EACbzG,EAAI4G,EAAI,EAAGrC,EAAOkB,EAAIpF,OAAQ,GAAKkE,EAAOqC,EAAIrC,EAAOqC,EAAIrC,EAAMvE,EAAI,GAAKuE,IAASqC,IAAMA,EAC1F,GAAInB,EAAIzF,GAAG,KAAOiG,EAAU,CAC1BQ,EAAiBzG,EACjB,OAGoB,IAApByG,GACFM,EAAgBtB,EAAIuB,OAAO,CAAC,CAACf,EAAUS,KACvCC,EAAU7E,KAAKiF,KAEfD,EAAkBrB,EAAIf,MAAM,GAC5BoC,EAAgBG,OAAOR,EAAgB,GACvCK,EAAgBhF,KAAK,CAACmE,EAAUS,IAChCC,EAAU7E,KAAK2D,GACfkB,EAAU7E,KAAKgF,IAKrB,OADApB,EAAOI,EAAMa,GACNZ,EAAOc,KAEhBd,EAAOC,GACPG,EAAY,GACPjG,EAAI,EAAGD,EAAOyF,EAAKrF,OAAQH,EAAID,EAAMC,IAAK,CAG7C,IAFAuF,EAAMC,EAAKxF,GACXgG,EAAW,GACN/B,EAAI,EAAGyB,EAAOH,EAAIpF,OAAQ8D,EAAIyB,EAAMzB,IACvC7B,EAAMmD,EAAItB,GAAI8B,EAAW3D,EAAI,GAAID,EAAMC,EAAI,GAC3C4D,EAASD,GAAY5D,EAEvB8D,EAAUrE,KAAKoE,GAEjB,OAAOC,GAET1C,WAAY,SAASN,EAAUa,EAAsBkD,GACnD,IAAI7E,EAAKT,EAAG3B,EAAM2F,EAAMZ,EAAOmC,EAAWtE,EAAS3C,EAAGiE,EAAG7B,EAAKiC,EAAMkB,EAAK2B,EAAYC,EAAiBzC,EAAO4B,EAS7G,IAR4B,MAAxBxC,IACFA,EAAuB1E,GAEN,MAAf4H,IACFA,EAAc7H,GAEhBwD,EAAU,GACVP,EAAMgB,KAAKuC,oBAAoBvC,KAAK8B,uBAAuBjC,EAAU+D,IAChEhH,EAAI,EAAGD,EAAOqC,EAAIjC,OAAQH,EAAID,EAAMC,IAAK,CAE5C,GADAuF,EAAMnD,EAAIpC,GACNoD,KAAK5B,MAAM+D,GACb,MAIF,IAFA4B,EAAkB/D,KAAKpB,UAAUiB,EAAUsC,GAC3ClB,EAAOjB,KAAKC,iBAAiB8D,EAAiBrD,GACzCG,EAAI,EAAGyB,EAAOrB,EAAKlE,OAAQ8D,EAAIyB,EAAMzB,IAGxC,GAFAa,EAAQT,EAAKJ,GACbS,EAAQzB,EAASuB,MAAMM,EAAMhF,GAAIgF,EAAM/B,EAAI,GAAK,KAC5C2B,EAAMH,gBAAkBO,EAAMH,aAAlC,CAIA,IAAKuC,KADLD,EAAY,GACO1B,EACjBpD,EAAMoD,EAAI2B,IACyB,IAA/BxC,EAAM0C,QAAQF,KAChBD,EAAUC,GAAc/E,GAG5B2C,EAAMD,MAAO,EACbC,EAAMJ,MAAQA,EACdI,EAAMS,IAAM0B,EACZnC,EAAMuC,YAAe,WACnB,IAAI1F,EAEJ,IAAKD,KADLC,EAAU,GACAsF,EACRX,EAAIW,EAAUvF,GACdC,EAAQC,KAAKF,EAAI,OAAS4E,GAE5B,OAAO3E,EAPW,GAQdW,KAAK,MACXK,EAAQf,KAAKkD,IAGjB,OAAO1B,KAAKV,OAAOC,EAAQ2E,QAAO,SAASxC,GACzC,OAAOA,EAAMJ,MAAMvE,OAAS,OAGhCqD,cAAe,SAASP,EAAUsE,GAChC,IAAIC,EAAOC,EAAY9E,EAKvB,IAAK8E,KAJU,MAAXF,IACFA,EAAUrI,GAEZyD,EAAU,GACS4E,EACjBC,EAAQD,EAAQE,GAChBrE,KAAKvB,OAAOc,EAASS,KAAKsE,qBAAqBzE,EAAUuE,EAAOC,IAElE,OAAOrE,KAAKV,OAAOC,IAErBgF,WAAY,oDACZD,qBAAsB,SAASzE,EAAUuE,EAAOC,GAC9C,IAAIG,EAAKC,EAAWC,EAAUC,EAAeC,EAAOC,EAAiBnI,EAAGiD,EAAGmF,EAAgBnI,EAAM4C,EAAS3C,EAAGmI,EAAWC,EAAeC,EACvI1F,EAAU,GACV7C,EAAI,EACJ,MAAOA,EAAImD,EAAS9C,OAAS,EAAG,CAC9B4C,EAAIjD,EAAI,EACRoI,EAAiB,KACjBG,EAAQ,EAIND,EAHkB,WAAfX,GAA0C,WAAfA,IAA4BrE,KAAKuE,WAAWW,KAAKrF,EAASsF,OAAOzI,IAG/E,EAFA,EAIlB,MAAO,EAAM,CAMX,GALAqI,EAAYlF,EAASsF,OAAOxF,EAAI,GAChCiF,GAAQ,EACRC,GAAmB,EACnBF,GAAiB,EACjBF,EAAYL,EAAMW,IAAc,GAC5BpF,EAAIE,EAAS9C,OAEf,IADA2H,EAAW7E,EAASsF,OAAOxF,GACtB/C,EAAI,EAAGD,EAAO8H,EAAU1H,OAAQH,EAAID,EAAMC,IAG7C,GAFA4H,EAAMC,EAAU7H,GAChB+H,GAAiB,EACbH,IAAkC,IAA3BA,EAAIR,QAAQU,GAAkB,CACvCE,GAAQ,EACRC,EAAkBF,EACY,IAA1BH,EAAIR,QAAQU,KACdM,GAAiB,GAEfF,IAAmBD,IACrBI,GAAS,EACTH,EAAiBD,GAEnB,MAIN,IAAID,EAEG,CACDjF,EAAIjD,EAAI,GACV6C,EAAQf,KAAK,CACX6C,QAAS,UACT3E,EAAGA,EACHiD,EAAGA,EAAI,EACP2B,MAAOzB,EAASuB,MAAM1E,EAAGiD,GACzByE,MAAOC,EACPY,MAAOA,EACPD,cAAeA,IAGnBtI,EAAIiD,EACJ,MAdAA,GAAK,GAkBX,OAAOJ,GAETc,aAAc,SAASR,GACrB,IAAIuF,EAAeC,EAAcC,EAAcC,EAAYC,EAAQC,EAAc/I,EAAGiD,EAAG+F,EAAWC,EAAMC,EAAeC,EAAYnE,EAAOnC,EAASP,EACnJO,EAAU,GACViG,EAAS,WACTG,EAAO,YACPC,EAAgB,aAChBF,EAAY,EACZ,MAAOA,EAAY7F,EAAS9C,OAAQ,CAIlC,GAHAyI,EAAOE,UAAYC,EAAKD,UAAYA,EACpCD,EAAeD,EAAON,KAAKrF,GAC3BgG,EAAaF,EAAKT,KAAKrF,GACH,MAAhB4F,EACF,MAEEA,EAAa,GAAG1I,OAAS8I,EAAW,GAAG9I,QACzC2E,EAAQ+D,EACRF,EAAaK,EAAcV,KAAKxD,EAAM,IAAI,KAE1CA,EAAQmE,EACRN,EAAa7D,EAAM,IAErB1C,EAAM,CAAC0C,EAAMoE,MAAOpE,EAAMoE,MAAQpE,EAAM,GAAG3E,OAAS,GAAIL,EAAIsC,EAAI,GAAIW,EAAIX,EAAI,GAC5EoG,EAAgB5I,EAAQuJ,8BAA8BR,EAAYvF,KAAKJ,UAAU2F,IACjFD,EAAeF,EAAcY,SAC7BX,EAAeD,EAAca,QAC7B1G,EAAQf,KAAK,CACX6C,QAAS,SACT3E,EAAGA,EACHiD,EAAGA,EACH2B,MAAOI,EAAM,GACb6D,WAAYA,EACZF,aAAcA,EACdC,aAAcA,EACdY,aAAcxE,EAAM,GAAG3E,OAASwI,EAAWxI,SAE7C2I,EAAY/F,EAAI,EAElB,OAAOJ,GAET4G,UAAW,EACX7F,eAAgB,SAAST,GACvB,IAAIuG,EAAO1J,EAAGiD,EAAGrB,EAAG+H,EAAYzJ,EAAGoC,EAAKnC,EAAQyJ,EAChD,GAAwB,IAApBzG,EAAS9C,OACX,MAAO,GAqCT,IAnCAuJ,EAAS,SAAUC,GACjB,OAAO,SAAS7J,EAAGiD,EAAGyG,GACpB,IAAIpH,EAAKwH,EAAeC,EAAgBnF,EACxC,IAAI3B,EAAIjD,EAAI,GAAyB,IAApBgK,KAAKC,IAAIP,KACnB,GAAKpH,EAAM0H,KAAKC,IAAIP,KAAWpH,GAAOuH,EAAMJ,UAe/C,OAdA7E,EAAQzB,EAASuB,MAAM1E,GAAIiD,EAAI,GAAK,KAChC,WAAWiH,KAAKtF,IAClBkF,EAAgB,QAChBC,EAAiB,IACR,WAAWG,KAAKtF,IACzBkF,EAAgB,QAChBC,EAAiB,IACR,QAAQG,KAAKtF,IACtBkF,EAAgB,SAChBC,EAAiB,KAEjBD,EAAgB,UAChBC,EAAiB,IAEZ5J,EAAO2B,KAAK,CACjB6C,QAAS,WACT3E,EAAGA,EACHiD,EAAGA,EACH2B,MAAOzB,EAASuB,MAAM1E,GAAIiD,EAAI,GAAK,KACnC6G,cAAeA,EACfC,eAAgBA,EAChBI,UAAWT,EAAQ,KA1BpB,CA+BNpG,MACHnD,EAAS,GACTH,EAAI,EACJ2J,EAAa,KACR/H,EAAI1B,EAAI,EAAGoC,EAAMa,EAAS9C,OAAQ,GAAKiC,EAAMpC,EAAIoC,EAAMpC,EAAIoC,EAAKV,EAAI,GAAKU,IAAQpC,IAAMA,EAC1FwJ,EAAQvG,EAASiH,WAAWxI,GAAKuB,EAASiH,WAAWxI,EAAI,GACvC,MAAd+H,IACFA,EAAaD,GAEXA,IAAUC,IAGd1G,EAAIrB,EAAI,EACRgI,EAAO5J,EAAGiD,EAAG0G,GACb3J,EAAIiD,EACJ0G,EAAaD,GAGf,OADAE,EAAO5J,EAAGmD,EAAS9C,OAAS,EAAGsJ,GACxBxJ,GAET0D,YAAa,SAASV,EAAUkH,GAC9B,IAAIxH,EAASyH,EAAOC,EAAU3F,EAK9B,IAAK/E,KAJW,MAAZwK,IACFA,EAAW9K,GAEbsD,EAAU,GACGwH,EAAU,CACrBC,EAAQD,EAASxK,GACjByK,EAAMtB,UAAY,EAClB,MAAOuB,EAAWD,EAAM9B,KAAKrF,GAC3ByB,EAAQ2F,EAAS,GACjB1H,EAAQf,KAAK,CACX6C,QAAS,QACTC,MAAOA,EACP5E,EAAGuK,EAASnB,MACZnG,EAAGsH,EAASnB,MAAQmB,EAAS,GAAGlK,OAAS,EACzCmK,WAAY3K,EACZgE,YAAa0G,IAInB,OAAOjH,KAAKV,OAAOC,IAErBiB,WAAY,SAASX,GACnB,IAAIsH,EAAgBC,EAAWC,EAAYC,EAAUC,EAAK7K,EAAGiD,EAAGrB,EAAGb,EAAGd,EAAM2F,EAAM/C,EAASiI,EAAyBC,EAA2BC,EAAQC,EAAc/K,EAAGiE,EAAGyC,EAAGsE,EAAG5I,EAAKiC,EAAMC,EAAM2G,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMlB,EAAUvJ,EAAGC,EAAG2D,EAI5P,IAHA/B,EAAU,GACViI,EAA0B,YAC1BC,EAA4B,+CACvB/K,EAAIE,EAAI,EAAGoC,EAAMa,EAAS9C,OAAS,EAAG,GAAKiC,EAAMpC,GAAKoC,EAAMpC,GAAKoC,EAAKtC,EAAI,GAAKsC,IAAQpC,IAAMA,EAChG,IAAK+C,EAAIkB,EAAII,EAAOvE,EAAI,EAAGwE,EAAOxE,EAAI,EAAGuE,GAAQC,EAAOL,GAAKK,EAAOL,GAAKK,EAAMvB,EAAIsB,GAAQC,IAASL,IAAMA,EAAG,CAC3G,GAAIlB,GAAKE,EAAS9C,OAChB,MAGF,GADAuE,EAAQzB,EAASuB,MAAM1E,GAAIiD,EAAI,GAAK,KAC/B6H,EAAwBtC,KAAK5D,GAAlC,CAKA,IAFA+F,EAAa,GACbQ,EAAOhM,EAAYyF,EAAMvE,QACpBuG,EAAI,EAAG3G,EAAOkL,EAAK9K,OAAQuG,EAAI3G,EAAM2G,IACxCwE,EAAOD,EAAKvE,GAAIhF,EAAIwJ,EAAK,GAAIrK,EAAIqK,EAAK,GACtCP,EAAMvH,KAAKoI,gBAAgB,CAACC,SAAS/G,EAAMF,MAAM,EAAG9C,IAAK+J,SAAS/G,EAAMF,MAAM9C,EAAGb,IAAK4K,SAAS/G,EAAMF,MAAM3D,MAChG,MAAP8J,GACFF,EAAW7I,KAAK+I,GAGpB,GAAMF,EAAWtK,OAAS,EAA1B,CASA,IANAoK,EAAiBE,EAAW,GAC5BK,EAAS,SAASN,GAChB,OAAOV,KAAKC,IAAIS,EAAUkB,KAAO9L,EAAQ+L,iBAE3CZ,EAAeD,EAAOL,EAAW,IACjCU,EAAOV,EAAWjG,MAAM,GACnBwG,EAAI,EAAGtF,EAAOyF,EAAKhL,OAAQ6K,EAAItF,EAAMsF,IACxCR,EAAYW,EAAKH,GACjBN,EAAWI,EAAON,GACdE,EAAWK,IACbK,EAAO,CAACZ,EAAWE,GAAWH,EAAiBa,EAAK,GAAIL,EAAeK,EAAK,IAGhFzI,EAAQf,KAAK,CACX6C,QAAS,OACTC,MAAOA,EACP5E,EAAGA,EACHiD,EAAGA,EACH6I,UAAW,GACXF,KAAMnB,EAAemB,KACrBG,MAAOtB,EAAesB,MACtBC,IAAKvB,EAAeuB,QAI1B,IAAKhM,EAAIgB,EAAI,EAAGuK,EAAOpI,EAAS9C,OAAS,EAAG,GAAKkL,EAAOvK,GAAKuK,EAAOvK,GAAKuK,EAAMvL,EAAI,GAAKuL,IAASvK,IAAMA,EACrG,IAAKiC,EAAIhC,EAAIuK,EAAOxL,EAAI,EAAGyL,EAAOzL,EAAI,EAAGwL,GAAQC,EAAOxK,GAAKwK,EAAOxK,GAAKwK,EAAMxI,EAAIuI,GAAQC,IAASxK,IAAMA,EAAG,CAC3G,GAAIgC,GAAKE,EAAS9C,OAChB,MAEFuE,EAAQzB,EAASuB,MAAM1E,GAAIiD,EAAI,GAAK,KACpCsH,EAAWQ,EAA0BvC,KAAK5D,GAC1B,MAAZ2F,IAGJM,EAAMvH,KAAKoI,gBAAgB,CAACC,SAASpB,EAAS,IAAKoB,SAASpB,EAAS,IAAKoB,SAASpB,EAAS,MACjF,MAAPM,GAGJhI,EAAQf,KAAK,CACX6C,QAAS,OACTC,MAAOA,EACP5E,EAAGA,EACHiD,EAAGA,EACH6I,UAAWvB,EAAS,GACpBqB,KAAMf,EAAIe,KACVG,MAAOlB,EAAIkB,MACXC,IAAKnB,EAAImB,OAIf,OAAO1I,KAAKV,OAAOC,EAAQ2E,QAAO,SAASxC,GACzC,IAAIiH,EAAaC,EAAMC,EAAaC,EAEpC,IADAH,GAAc,EACTG,EAAI,EAAGF,EAAOrJ,EAAQxC,OAAQ+L,EAAIF,EAAME,IAE3C,GADAD,EAActJ,EAAQuJ,GAClBpH,IAAUmH,GAGVA,EAAYnM,GAAKgF,EAAMhF,GAAKmM,EAAYlJ,GAAK+B,EAAM/B,EAAG,CACxDgJ,GAAc,EACd,MAGJ,OAAQA,OAGZP,gBAAiB,SAASW,GACxB,IAAIC,EAAIC,EAAKtM,EAAM2F,EAAMsG,EAAMhM,EAAGsM,EAASC,EAAStI,EAAGuI,EAAsB9F,EAAGtE,EAAKiC,EAAMoI,EAAMC,EAASC,EAC1G,KAAIR,EAAK,GAAK,IAAMA,EAAK,IAAM,GAA/B,CAMA,IAHAG,EAAU,EACVC,EAAU,EACVG,EAAU,EACL1M,EAAI,EAAGD,EAAOoM,EAAKhM,OAAQH,EAAID,EAAMC,IAAK,CAE7C,GADAqM,EAAMF,EAAKnM,GACN,GAAKqM,GAAOA,EAAMrN,GAAkBqN,EAAMtN,EAC7C,OAEEsN,EAAM,KACRE,GAAW,GAETF,EAAM,KACRC,GAAW,GAETD,GAAO,IACTK,GAAW,GAGf,KAAIH,GAAW,GAAiB,IAAZD,GAAiBI,GAAW,GAAhD,CAIA,IADAF,EAAuB,CAAC,CAACL,EAAK,GAAIA,EAAK3H,MAAM,EAAG,IAAK,CAAC2H,EAAK,GAAIA,EAAK3H,MAAM,EAAG,KACxEP,EAAI,EAAGyB,EAAO8G,EAAqBrM,OAAQ8D,EAAIyB,EAAMzB,IAExD,GADA7B,EAAMoK,EAAqBvI,GAAI0I,EAAIvK,EAAI,GAAIqK,EAAOrK,EAAI,GACjDpD,GAAiB2N,GAAKA,GAAK5N,EAE9B,OADAqN,EAAKhJ,KAAKwJ,eAAeH,GACf,MAANL,EACK,CACLV,KAAMiB,EACNd,MAAOO,EAAGP,MACVC,IAAKM,EAAGN,UAGV,EAIN,IAAKpF,EAAI,EAAGsF,EAAOQ,EAAqBrM,OAAQuG,EAAIsF,EAAMtF,IAGxD,GAFArC,EAAOmI,EAAqB9F,GAAIiG,EAAItI,EAAK,GAAIoI,EAAOpI,EAAK,GACzD+H,EAAKhJ,KAAKwJ,eAAeH,GACf,MAANL,EAEF,OADAO,EAAIvJ,KAAKyJ,uBAAuBF,GACzB,CACLjB,KAAMiB,EACNd,MAAOO,EAAGP,MACVC,IAAKM,EAAGN,QAKhBc,eAAgB,SAAST,GACvB,IAAIW,EAAG/M,EAAM0C,EAAGzC,EAAGoC,EAAKiC,EAExB,IADAjC,EAAM,CAAC+J,EAAMA,EAAK3H,QAAQQ,WACrBhF,EAAI,EAAGD,EAAOqC,EAAIjC,OAAQH,EAAID,EAAMC,IAEvC,GADAqE,EAAOjC,EAAIpC,GAAI8M,EAAIzI,EAAK,GAAI5B,EAAI4B,EAAK,GAChC,GAAKyI,GAAKA,GAAK,IAAQ,GAAKrK,GAAKA,GAAK,GACzC,MAAO,CACLqJ,IAAKgB,EACLjB,MAAOpJ,IAKfoK,uBAAwB,SAASnB,GAC/B,OAAIA,EAAO,GACFA,EACEA,EAAO,GACTA,EAAO,KAEPA,EAAO,MAKpBqB,EAAOC,QAAUtN,G,8DCrrBjB;;;;;;AAKA,SAASuN,EAAYC,GACnB,IAAIC,EAAUC,OAAOF,EAAIC,QAAQ9K,MAAM,KAAK,IAE5C,GAAI8K,GAAW,EACbD,EAAIG,MAAM,CAAEC,aAAcC,QACrB,CAGL,IAAIC,EAAQN,EAAIO,UAAUD,MAC1BN,EAAIO,UAAUD,MAAQ,SAAUE,QACb,IAAZA,IAAqBA,EAAU,IAEpCA,EAAQC,KAAOD,EAAQC,KACnB,CAACJ,GAAUzG,OAAO4G,EAAQC,MAC1BJ,EACJC,EAAM3J,KAAKT,KAAMsK,IAQrB,SAASH,IACP,IAAIG,EAAUtK,KAAKwK,SAEfF,EAAQG,MACVzK,KAAK0K,OAAkC,oBAAlBJ,EAAQG,MACzBH,EAAQG,QACRH,EAAQG,MACHH,EAAQK,QAAUL,EAAQK,OAAOD,SAC1C1K,KAAK0K,OAASJ,EAAQK,OAAOD,SApCnC,wIAyCA,IAAIE,EAA2B,qBAAXC,OAChBA,OACkB,qBAAXC,EACLA,EACA,GACFC,EAAcH,EAAOI,6BAEzB,SAASC,EAAeR,GACjBM,IAELN,EAAMS,aAAeH,EAErBA,EAAYI,KAAK,YAAaV,GAE9BM,EAAYK,GAAG,wBAAwB,SAAUC,GAC/CZ,EAAMa,aAAaD,MAGrBZ,EAAMc,WAAU,SAAUC,EAAUC,GAClCV,EAAYI,KAAK,gBAAiBK,EAAUC,KAC3C,CAAEC,SAAS,IAEdjB,EAAMkB,iBAAgB,SAAUC,EAAQH,GACtCV,EAAYI,KAAK,cAAeS,EAAQH,KACvC,CAAEC,SAAS,KAWhB,SAASG,EAAMC,EAAMC,GACnB,OAAOD,EAAK5H,OAAO6H,GAAG,GAYxB,SAASC,EAAU3N,EAAK4N,GAItB,QAHe,IAAVA,IAAmBA,EAAQ,IAGpB,OAAR5N,GAA+B,kBAARA,EACzB,OAAOA,EAIT,IAAI6N,EAAML,EAAKI,GAAO,SAAU3O,GAAK,OAAOA,EAAE6O,WAAa9N,KAC3D,GAAI6N,EACF,OAAOA,EAAIE,KAGb,IAAIA,EAAOC,MAAMC,QAAQjO,GAAO,GAAK,GAYrC,OATA4N,EAAMzN,KAAK,CACT2N,SAAU9N,EACV+N,KAAMA,IAGRG,OAAO7J,KAAKrE,GAAKmO,SAAQ,SAAUC,GACjCL,EAAKK,GAAOT,EAAS3N,EAAIoO,GAAMR,MAG1BG,EAMT,SAASM,EAAcrO,EAAKsO,GAC1BJ,OAAO7J,KAAKrE,GAAKmO,SAAQ,SAAUC,GAAO,OAAOE,EAAGtO,EAAIoO,GAAMA,MAGhE,SAASG,EAAUvO,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAGhC,SAASwO,EAAWC,GAClB,OAAOA,GAA2B,oBAAbA,EAAIC,KAO3B,SAASC,EAASL,EAAIM,GACpB,OAAO,WACL,OAAON,EAAGM,IAKd,IAAIC,EAAS,SAAiBC,EAAWC,GACvCpN,KAAKoN,QAAUA,EAEfpN,KAAKqN,UAAYd,OAAOe,OAAO,MAE/BtN,KAAKuN,WAAaJ,EAClB,IAAIK,EAAWL,EAAU1B,MAGzBzL,KAAKyL,OAA6B,oBAAb+B,EAA0BA,IAAaA,IAAa,IAGvEC,EAAqB,CAAEC,WAAY,CAAEC,cAAc,IAEvDF,EAAmBC,WAAWE,IAAM,WAClC,QAAS5N,KAAKuN,WAAWG,YAG3BR,EAAO7C,UAAUwD,SAAW,SAAmBpB,EAAK9C,GAClD3J,KAAKqN,UAAUZ,GAAO9C,GAGxBuD,EAAO7C,UAAUyD,YAAc,SAAsBrB,UAC5CzM,KAAKqN,UAAUZ,IAGxBS,EAAO7C,UAAU0D,SAAW,SAAmBtB,GAC7C,OAAOzM,KAAKqN,UAAUZ,IAGxBS,EAAO7C,UAAU2D,SAAW,SAAmBvB,GAC7C,OAAOA,KAAOzM,KAAKqN,WAGrBH,EAAO7C,UAAU/D,OAAS,SAAiB6G,GACzCnN,KAAKuN,WAAWG,WAAaP,EAAUO,WACnCP,EAAUc,UACZjO,KAAKuN,WAAWU,QAAUd,EAAUc,SAElCd,EAAUe,YACZlO,KAAKuN,WAAWW,UAAYf,EAAUe,WAEpCf,EAAUgB,UACZnO,KAAKuN,WAAWY,QAAUhB,EAAUgB,UAIxCjB,EAAO7C,UAAU+D,aAAe,SAAuBzB,GACrDD,EAAa1M,KAAKqN,UAAWV,IAG/BO,EAAO7C,UAAUgE,cAAgB,SAAwB1B,GACnD3M,KAAKuN,WAAWY,SAClBzB,EAAa1M,KAAKuN,WAAWY,QAASxB,IAI1CO,EAAO7C,UAAUiE,cAAgB,SAAwB3B,GACnD3M,KAAKuN,WAAWU,SAClBvB,EAAa1M,KAAKuN,WAAWU,QAAStB,IAI1CO,EAAO7C,UAAUkE,gBAAkB,SAA0B5B,GACvD3M,KAAKuN,WAAWW,WAClBxB,EAAa1M,KAAKuN,WAAWW,UAAWvB,IAI5CJ,OAAOiC,iBAAkBtB,EAAO7C,UAAWoD,GAE3C,IAAIgB,EAAmB,SAA2BC,GAEhD1O,KAAK2O,SAAS,GAAID,GAAe,IA0EnC,SAASpI,EAAQsI,EAAMC,EAAcC,GASnC,GAHAD,EAAavI,OAAOwI,GAGhBA,EAAUC,QACZ,IAAK,IAAItC,KAAOqC,EAAUC,QAAS,CACjC,IAAKF,EAAad,SAAStB,GAOzB,cAEFnG,EACEsI,EAAKlL,OAAO+I,GACZoC,EAAad,SAAStB,GACtBqC,EAAUC,QAAQtC,KA9F1BgC,EAAiBpE,UAAUuD,IAAM,SAAcgB,GAC7C,OAAOA,EAAKI,QAAO,SAAUrF,EAAQ8C,GACnC,OAAO9C,EAAOoE,SAAStB,KACtBzM,KAAKiP,OAGVR,EAAiBpE,UAAU6E,aAAe,SAAuBN,GAC/D,IAAIjF,EAAS3J,KAAKiP,KAClB,OAAOL,EAAKI,QAAO,SAAUG,EAAW1C,GAEtC,OADA9C,EAASA,EAAOoE,SAAStB,GAClB0C,GAAaxF,EAAO+D,WAAajB,EAAM,IAAM,MACnD,KAGLgC,EAAiBpE,UAAU/D,OAAS,SAAmBoI,GACrDpI,EAAO,GAAItG,KAAKiP,KAAMP,IAGxBD,EAAiBpE,UAAUsE,SAAW,SAAmBC,EAAMzB,EAAWC,GACtE,IAAIgC,EAASpP,UACI,IAAZoN,IAAqBA,GAAU,GAMtC,IAAI0B,EAAY,IAAI5B,EAAOC,EAAWC,GACtC,GAAoB,IAAhBwB,EAAK7R,OACPiD,KAAKiP,KAAOH,MACP,CACL,IAAInE,EAAS3K,KAAK4N,IAAIgB,EAAKxN,MAAM,GAAI,IACrCuJ,EAAOkD,SAASe,EAAKA,EAAK7R,OAAS,GAAI+R,GAIrC3B,EAAU4B,SACZrC,EAAaS,EAAU4B,SAAS,SAAUM,EAAgB5C,GACxD2C,EAAOT,SAASC,EAAKlL,OAAO+I,GAAM4C,EAAgBjC,OAKxDqB,EAAiBpE,UAAUiF,WAAa,SAAqBV,GAC3D,IAAIjE,EAAS3K,KAAK4N,IAAIgB,EAAKxN,MAAM,GAAI,IACjCqL,EAAMmC,EAAKA,EAAK7R,OAAS,GACzBwS,EAAQ5E,EAAOoD,SAAStB,GAEvB8C,GAUAA,EAAMnC,SAIXzC,EAAOmD,YAAYrB,IAGrBgC,EAAiBpE,UAAUmF,aAAe,SAAuBZ,GAC/D,IAAIjE,EAAS3K,KAAK4N,IAAIgB,EAAKxN,MAAM,GAAI,IACjCqL,EAAMmC,EAAKA,EAAK7R,OAAS,GAE7B,OAAO4N,EAAOqD,SAASvB,IAgCzB,IAyCI3C,EAEJ,IAAI2F,EAAQ,SAAgBnF,GAC1B,IAAI8E,EAASpP,UACI,IAAZsK,IAAqBA,EAAU,KAK/BR,GAAyB,qBAAXe,QAA0BA,OAAOf,KAClD4F,EAAQ7E,OAAOf,KASjB,IAAI6F,EAAUrF,EAAQqF,aAA0B,IAAZA,IAAqBA,EAAU,IACnE,IAAIC,EAAStF,EAAQsF,YAAwB,IAAXA,IAAoBA,GAAS,GAG/D5P,KAAK6P,aAAc,EACnB7P,KAAK8P,SAAWvD,OAAOe,OAAO,MAC9BtN,KAAK+P,mBAAqB,GAC1B/P,KAAKgQ,WAAazD,OAAOe,OAAO,MAChCtN,KAAKiQ,gBAAkB1D,OAAOe,OAAO,MACrCtN,KAAKkQ,SAAW,IAAIzB,EAAiBnE,GACrCtK,KAAKmQ,qBAAuB5D,OAAOe,OAAO,MAC1CtN,KAAKoQ,aAAe,GACpBpQ,KAAKqQ,WAAa,IAAIvG,EACtB9J,KAAKsQ,uBAAyB/D,OAAOe,OAAO,MAG5C,IAAI7C,EAAQzK,KACRhB,EAAMgB,KACNuQ,EAAWvR,EAAIuR,SACfC,EAASxR,EAAIwR,OACjBxQ,KAAKuQ,SAAW,SAAwBE,EAAMC,GAC5C,OAAOH,EAAS9P,KAAKgK,EAAOgG,EAAMC,IAEpC1Q,KAAKwQ,OAAS,SAAsBC,EAAMC,EAASpG,GACjD,OAAOkG,EAAO/P,KAAKgK,EAAOgG,EAAMC,EAASpG,IAI3CtK,KAAK4P,OAASA,EAEd,IAAInE,EAAQzL,KAAKkQ,SAASjB,KAAKxD,MAK/BkF,EAAc3Q,KAAMyL,EAAO,GAAIzL,KAAKkQ,SAASjB,MAI7C2B,EAAa5Q,KAAMyL,GAGnBkE,EAAQnD,SAAQ,SAAUqE,GAAU,OAAOA,EAAOzB,MAElD,IAAI0B,OAAmCC,IAArBzG,EAAQ0G,SAAyB1G,EAAQ0G,SAAWlH,EAAImH,OAAOD,SAC7EF,GACF7F,EAAcjL,OAIdkR,EAAuB,CAAEzF,MAAO,CAAEkC,cAAc,IAmMpD,SAASwD,EAAkBxE,EAAIvK,EAAMkI,GAMnC,OALIlI,EAAK4B,QAAQ2I,GAAM,IACrBrC,GAAWA,EAAQoB,QACftJ,EAAKgP,QAAQzE,GACbvK,EAAK5D,KAAKmO,IAET,WACL,IAAIjQ,EAAI0F,EAAK4B,QAAQ2I,GACjBjQ,GAAK,GACP0F,EAAKuB,OAAOjH,EAAG,IAKrB,SAAS2U,EAAY5G,EAAO6G,GAC1B7G,EAAMqF,SAAWvD,OAAOe,OAAO,MAC/B7C,EAAMuF,WAAazD,OAAOe,OAAO,MACjC7C,EAAMwF,gBAAkB1D,OAAOe,OAAO,MACtC7C,EAAM0F,qBAAuB5D,OAAOe,OAAO,MAC3C,IAAI7B,EAAQhB,EAAMgB,MAElBkF,EAAclG,EAAOgB,EAAO,GAAIhB,EAAMyF,SAASjB,MAAM,GAErD2B,EAAanG,EAAOgB,EAAO6F,GAG7B,SAASV,EAAcnG,EAAOgB,EAAO6F,GACnC,IAAIC,EAAQ9G,EAAM+G,IAGlB/G,EAAM0D,QAAU,GAEhB1D,EAAM6F,uBAAyB/D,OAAOe,OAAO,MAC7C,IAAImE,EAAiBhH,EAAMwF,gBACvByB,EAAW,GACfhF,EAAa+E,GAAgB,SAAU9E,EAAIF,GAIzCiF,EAASjF,GAAOO,EAAQL,EAAIlC,GAC5B8B,OAAOoF,eAAelH,EAAM0D,QAAS1B,EAAK,CACxCmB,IAAK,WAAc,OAAOnD,EAAM+G,IAAI/E,IACpCmF,YAAY,OAOhB,IAAIC,EAAS/H,EAAImH,OAAOY,OACxB/H,EAAImH,OAAOY,QAAS,EACpBpH,EAAM+G,IAAM,IAAI1H,EAAI,CAClBgI,KAAM,CACJC,QAAStG,GAEXiG,SAAUA,IAEZ5H,EAAImH,OAAOY,OAASA,EAGhBpH,EAAMmF,QACRoC,EAAiBvH,GAGf8G,IACED,GAGF7G,EAAMwH,aAAY,WAChBV,EAAMW,MAAMH,QAAU,QAG1BjI,EAAIqI,UAAS,WAAc,OAAOZ,EAAMa,eAI5C,SAASzB,EAAelG,EAAO4H,EAAWzD,EAAMjF,EAAQ2H,GACtD,IAAIgB,GAAU1D,EAAK7R,OACfoS,EAAY1E,EAAMyF,SAAShB,aAAaN,GAW5C,GARIjF,EAAO+D,aACLjD,EAAM0F,qBAAqBhB,GAG/B1E,EAAM0F,qBAAqBhB,GAAaxF,IAIrC2I,IAAWhB,EAAK,CACnB,IAAIiB,EAAcC,EAAeH,EAAWzD,EAAKxN,MAAM,GAAI,IACvDqR,EAAa7D,EAAKA,EAAK7R,OAAS,GACpC0N,EAAMwH,aAAY,WAQhBnI,EAAI4I,IAAIH,EAAaE,EAAY9I,EAAO8B,UAI5C,IAAIkH,EAAQhJ,EAAOiJ,QAAUC,EAAiBpI,EAAO0E,EAAWP,GAEhEjF,EAAO4E,iBAAgB,SAAU/C,EAAUiB,GACzC,IAAIqG,EAAiB3D,EAAY1C,EACjCsG,EAAiBtI,EAAOqI,EAAgBtH,EAAUmH,MAGpDhJ,EAAO2E,eAAc,SAAU1C,EAAQa,GACrC,IAAIgE,EAAO7E,EAAOqD,KAAOxC,EAAM0C,EAAY1C,EACvCuG,EAAUpH,EAAOoH,SAAWpH,EAChCqH,EAAexI,EAAOgG,EAAMuC,EAASL,MAGvChJ,EAAO0E,eAAc,SAAU6E,EAAQzG,GACrC,IAAIqG,EAAiB3D,EAAY1C,EACjC0G,EAAe1I,EAAOqI,EAAgBI,EAAQP,MAGhDhJ,EAAOyE,cAAa,SAAUmB,EAAO9C,GACnCkE,EAAclG,EAAO4H,EAAWzD,EAAKlL,OAAO+I,GAAM8C,EAAO+B,MAQ7D,SAASuB,EAAkBpI,EAAO0E,EAAWP,GAC3C,IAAIwE,EAA4B,KAAdjE,EAEdwD,EAAQ,CACVpC,SAAU6C,EAAc3I,EAAM8F,SAAW,SAAU8C,EAAOC,EAAUC,GAClE,IAAIC,EAAOC,EAAiBJ,EAAOC,EAAUC,GACzC7C,EAAU8C,EAAK9C,QACfpG,EAAUkJ,EAAKlJ,QACfmG,EAAO+C,EAAK/C,KAUhB,OARKnG,GAAYA,EAAQ2E,OACvBwB,EAAOtB,EAAYsB,GAOdhG,EAAM8F,SAASE,EAAMC,IAG9BF,OAAQ4C,EAAc3I,EAAM+F,OAAS,SAAU6C,EAAOC,EAAUC,GAC9D,IAAIC,EAAOC,EAAiBJ,EAAOC,EAAUC,GACzC7C,EAAU8C,EAAK9C,QACfpG,EAAUkJ,EAAKlJ,QACfmG,EAAO+C,EAAK/C,KAEXnG,GAAYA,EAAQ2E,OACvBwB,EAAOtB,EAAYsB,GAOrBhG,EAAM+F,OAAOC,EAAMC,EAASpG,KAiBhC,OAXAiC,OAAOiC,iBAAiBmE,EAAO,CAC7BxE,QAAS,CACPP,IAAKwF,EACD,WAAc,OAAO3I,EAAM0D,SAC3B,WAAc,OAAOuF,EAAiBjJ,EAAO0E,KAEnD1D,MAAO,CACLmC,IAAK,WAAc,OAAO4E,EAAe/H,EAAMgB,MAAOmD,OAInD+D,EAGT,SAASe,EAAkBjJ,EAAO0E,GAChC,IAAK1E,EAAM6F,uBAAuBnB,GAAY,CAC5C,IAAIwE,EAAe,GACfC,EAAWzE,EAAUpS,OACzBwP,OAAO7J,KAAK+H,EAAM0D,SAAS3B,SAAQ,SAAUiE,GAE3C,GAAIA,EAAKrP,MAAM,EAAGwS,KAAczE,EAAhC,CAGA,IAAI0E,EAAYpD,EAAKrP,MAAMwS,GAK3BrH,OAAOoF,eAAegC,EAAcE,EAAW,CAC7CjG,IAAK,WAAc,OAAOnD,EAAM0D,QAAQsC,IACxCmB,YAAY,QAGhBnH,EAAM6F,uBAAuBnB,GAAawE,EAG5C,OAAOlJ,EAAM6F,uBAAuBnB,GAGtC,SAAS4D,EAAkBtI,EAAOgG,EAAMuC,EAASL,GAC/C,IAAImB,EAAQrJ,EAAMuF,WAAWS,KAAUhG,EAAMuF,WAAWS,GAAQ,IAChEqD,EAAMtV,MAAK,SAAiCkS,GAC1CsC,EAAQvS,KAAKgK,EAAOkI,EAAMlH,MAAOiF,MAIrC,SAASuC,EAAgBxI,EAAOgG,EAAMuC,EAASL,GAC7C,IAAImB,EAAQrJ,EAAMqF,SAASW,KAAUhG,EAAMqF,SAASW,GAAQ,IAC5DqD,EAAMtV,MAAK,SAA+BkS,GACxC,IAAIqD,EAAMf,EAAQvS,KAAKgK,EAAO,CAC5B8F,SAAUoC,EAAMpC,SAChBC,OAAQmC,EAAMnC,OACdrC,QAASwE,EAAMxE,QACf1C,MAAOkH,EAAMlH,MACbuI,YAAavJ,EAAM0D,QACnBkE,UAAW5H,EAAMgB,OAChBiF,GAIH,OAHK7D,EAAUkH,KACbA,EAAME,QAAQC,QAAQH,IAEpBtJ,EAAMS,aACD6I,EAAII,OAAM,SAAUC,GAEzB,MADA3J,EAAMS,aAAaC,KAAK,aAAciJ,GAChCA,KAGDL,KAKb,SAASZ,EAAgB1I,EAAOgG,EAAM4D,EAAW1B,GAC3ClI,EAAMwF,gBAAgBQ,KAM1BhG,EAAMwF,gBAAgBQ,GAAQ,SAAwBhG,GACpD,OAAO4J,EACL1B,EAAMlH,MACNkH,EAAMxE,QACN1D,EAAMgB,MACNhB,EAAM0D,WAKZ,SAAS6D,EAAkBvH,GACzBA,EAAM+G,IAAI8C,QAAO,WAAc,OAAOtU,KAAKkS,MAAMH,WAAW,WACtD,IAGH,CAAEwC,MAAM,EAAMC,MAAM,IAGzB,SAAShC,EAAgB/G,EAAOmD,GAC9B,OAAOA,EAAKI,QAAO,SAAUvD,EAAOgB,GAAO,OAAOhB,EAAMgB,KAAShB,GAGnE,SAASgI,EAAkBhD,EAAMC,EAASpG,GAWxC,OAVIsC,EAAS6D,IAASA,EAAKA,OACzBnG,EAAUoG,EACVA,EAAUD,EACVA,EAAOA,EAAKA,MAOP,CAAEA,KAAMA,EAAMC,QAASA,EAASpG,QAASA,GAGlD,SAASoF,EAAS+E,GACZ3K,GAAO2K,IAAS3K,IAQpBA,EAAM2K,EACN5K,EAAWC,IAzeboH,EAAqBzF,MAAMmC,IAAM,WAC/B,OAAO5N,KAAKwR,IAAIU,MAAMH,SAGxBb,EAAqBzF,MAAMiH,IAAM,SAAUxP,GACrC,GAKNuM,EAAMpF,UAAUmG,OAAS,SAAiB6C,EAAOC,EAAUC,GACvD,IAAInE,EAASpP,KAGXhB,EAAMyU,EAAiBJ,EAAOC,EAAUC,GACtC9C,EAAOzR,EAAIyR,KACXC,EAAU1R,EAAI0R,QAGhBlF,GAFYxM,EAAIsL,QAEL,CAAEmG,KAAMA,EAAMC,QAASA,IAClCoD,EAAQ9T,KAAKgQ,WAAWS,GACvBqD,IAML9T,KAAKiS,aAAY,WACf6B,EAAMtH,SAAQ,SAAyBwG,GACrCA,EAAQtC,SAIZ1Q,KAAKoQ,aACFhP,QACAoL,SAAQ,SAAUrK,GAAO,OAAOA,EAAIqJ,EAAU4D,EAAO3D,YAa1DgE,EAAMpF,UAAUkG,SAAW,SAAmB8C,EAAOC,GACjD,IAAIlE,EAASpP,KAGXhB,EAAMyU,EAAiBJ,EAAOC,GAC5B7C,EAAOzR,EAAIyR,KACXC,EAAU1R,EAAI0R,QAEhB9E,EAAS,CAAE6E,KAAMA,EAAMC,QAASA,GAChCoD,EAAQ9T,KAAK8P,SAASW,GAC1B,GAAKqD,EAAL,CAOA,IACE9T,KAAK+P,mBACF3O,QACA8C,QAAO,SAAU/B,GAAO,OAAOA,EAAIuS,UACnClI,SAAQ,SAAUrK,GAAO,OAAOA,EAAIuS,OAAO9I,EAAQwD,EAAO3D,UAC7D,MAAOlO,GACH,EAMN,IAAIV,EAASiX,EAAM/W,OAAS,EACxBkX,QAAQU,IAAIb,EAAMc,KAAI,SAAU5B,GAAW,OAAOA,EAAQtC,OAC1DoD,EAAM,GAAGpD,GAEb,OAAO,IAAIuD,SAAQ,SAAUC,EAASW,GACpChY,EAAOkQ,MAAK,SAAUgH,GACpB,IACE3E,EAAOW,mBACJ7L,QAAO,SAAU/B,GAAO,OAAOA,EAAI2S,SACnCtI,SAAQ,SAAUrK,GAAO,OAAOA,EAAI2S,MAAMlJ,EAAQwD,EAAO3D,UAC5D,MAAOlO,GACH,EAKN2W,EAAQH,MACP,SAAUgB,GACX,IACE3F,EAAOW,mBACJ7L,QAAO,SAAU/B,GAAO,OAAOA,EAAI4S,SACnCvI,SAAQ,SAAUrK,GAAO,OAAOA,EAAI4S,MAAMnJ,EAAQwD,EAAO3D,MAAOsJ,MACnE,MAAOxX,GACH,EAKNsX,EAAOE,WAKbtF,EAAMpF,UAAUkB,UAAY,SAAoBoB,EAAIrC,GAClD,OAAO6G,EAAiBxE,EAAI3M,KAAKoQ,aAAc9F,IAGjDmF,EAAMpF,UAAUsB,gBAAkB,SAA0BgB,EAAIrC,GAC9D,IAAIlI,EAAqB,oBAAPuK,EAAoB,CAAE+H,OAAQ/H,GAAOA,EACvD,OAAOwE,EAAiB/O,EAAMpC,KAAK+P,mBAAoBzF,IAGzDmF,EAAMpF,UAAU2K,MAAQ,SAAgB9B,EAAQ+B,EAAI3K,GAChD,IAAI8E,EAASpP,KAKf,OAAOA,KAAKqQ,WAAWiE,QAAO,WAAc,OAAOpB,EAAO9D,EAAO3D,MAAO2D,EAAOjB,WAAa8G,EAAI3K,IAGlGmF,EAAMpF,UAAUiB,aAAe,SAAuBG,GAClD,IAAI2D,EAASpP,KAEfA,KAAKiS,aAAY,WACf7C,EAAOoC,IAAIU,MAAMH,QAAUtG,MAI/BgE,EAAMpF,UAAU6K,eAAiB,SAAyBtG,EAAMzB,EAAW7C,QACtD,IAAZA,IAAqBA,EAAU,IAElB,kBAATsE,IAAqBA,EAAO,CAACA,IAOxC5O,KAAKkQ,SAASvB,SAASC,EAAMzB,GAC7BwD,EAAc3Q,KAAMA,KAAKyL,MAAOmD,EAAM5O,KAAKkQ,SAAStC,IAAIgB,GAAOtE,EAAQ6K,eAEvEvE,EAAa5Q,KAAMA,KAAKyL,QAG1BgE,EAAMpF,UAAU+K,iBAAmB,SAA2BxG,GAC1D,IAAIQ,EAASpP,KAEK,kBAAT4O,IAAqBA,EAAO,CAACA,IAMxC5O,KAAKkQ,SAASZ,WAAWV,GACzB5O,KAAKiS,aAAY,WACf,IAAIM,EAAcC,EAAepD,EAAO3D,MAAOmD,EAAKxN,MAAM,GAAI,IAC9D0I,EAAIuL,OAAO9C,EAAa3D,EAAKA,EAAK7R,OAAS,OAE7CsU,EAAWrR,OAGbyP,EAAMpF,UAAUiL,UAAY,SAAoB1G,GAO9C,MANoB,kBAATA,IAAqBA,EAAO,CAACA,IAMjC5O,KAAKkQ,SAASV,aAAaZ,IAGpCa,EAAMpF,UAAUkL,UAAY,SAAoBC,GAC9CxV,KAAKkQ,SAAS5J,OAAOkP,GACrBnE,EAAWrR,MAAM,IAGnByP,EAAMpF,UAAU4H,YAAc,SAAsBtF,GAClD,IAAI8I,EAAazV,KAAK6P,YACtB7P,KAAK6P,aAAc,EACnBlD,IACA3M,KAAK6P,YAAc4F,GAGrBlJ,OAAOiC,iBAAkBiB,EAAMpF,UAAW6G,GAmT1C,IAAIwE,EAAWC,GAAmB,SAAUxG,EAAWyG,GACrD,IAAI7B,EAAM,GA0BV,OAtBA8B,EAAaD,GAAQpJ,SAAQ,SAAUxN,GACrC,IAAIyN,EAAMzN,EAAIyN,IACVK,EAAM9N,EAAI8N,IAEdiH,EAAItH,GAAO,WACT,IAAIhB,EAAQzL,KAAK0K,OAAOe,MACpB0C,EAAUnO,KAAK0K,OAAOyD,QAC1B,GAAIgB,EAAW,CACb,IAAIxF,EAASmM,EAAqB9V,KAAK0K,OAAQ,WAAYyE,GAC3D,IAAKxF,EACH,OAEF8B,EAAQ9B,EAAOiJ,QAAQnH,MACvB0C,EAAUxE,EAAOiJ,QAAQzE,QAE3B,MAAsB,oBAARrB,EACVA,EAAIrM,KAAKT,KAAMyL,EAAO0C,GACtB1C,EAAMqB,IAGZiH,EAAItH,GAAKsJ,MAAO,KAEXhC,KASLiC,EAAeL,GAAmB,SAAUxG,EAAWjB,GACzD,IAAI6F,EAAM,GA0BV,OAtBA8B,EAAa3H,GAAW1B,SAAQ,SAAUxN,GACxC,IAAIyN,EAAMzN,EAAIyN,IACVK,EAAM9N,EAAI8N,IAEdiH,EAAItH,GAAO,WACT,IAAI+G,EAAO,GAAI5S,EAAMqV,UAAUlZ,OAC/B,MAAQ6D,IAAQ4S,EAAM5S,GAAQqV,UAAWrV,GAGzC,IAAI4P,EAASxQ,KAAK0K,OAAO8F,OACzB,GAAIrB,EAAW,CACb,IAAIxF,EAASmM,EAAqB9V,KAAK0K,OAAQ,eAAgByE,GAC/D,IAAKxF,EACH,OAEF6G,EAAS7G,EAAOiJ,QAAQpC,OAE1B,MAAsB,oBAAR1D,EACVA,EAAInO,MAAMqB,KAAM,CAACwQ,GAAQ9M,OAAO8P,IAChChD,EAAO7R,MAAMqB,KAAK0K,OAAQ,CAACoC,GAAKpJ,OAAO8P,QAGxCO,KASLmC,EAAaP,GAAmB,SAAUxG,EAAWhB,GACvD,IAAI4F,EAAM,GAuBV,OAnBA8B,EAAa1H,GAAS3B,SAAQ,SAAUxN,GACtC,IAAIyN,EAAMzN,EAAIyN,IACVK,EAAM9N,EAAI8N,IAGdA,EAAMqC,EAAYrC,EAClBiH,EAAItH,GAAO,WACT,IAAI0C,GAAc2G,EAAqB9V,KAAK0K,OAAQ,aAAcyE,GAOlE,OAAOnP,KAAK0K,OAAOyD,QAAQrB,IAG7BiH,EAAItH,GAAKsJ,MAAO,KAEXhC,KASLoC,EAAaR,GAAmB,SAAUxG,EAAWlB,GACvD,IAAI8F,EAAM,GA0BV,OAtBA8B,EAAa5H,GAASzB,SAAQ,SAAUxN,GACtC,IAAIyN,EAAMzN,EAAIyN,IACVK,EAAM9N,EAAI8N,IAEdiH,EAAItH,GAAO,WACT,IAAI+G,EAAO,GAAI5S,EAAMqV,UAAUlZ,OAC/B,MAAQ6D,IAAQ4S,EAAM5S,GAAQqV,UAAWrV,GAGzC,IAAI2P,EAAWvQ,KAAK0K,OAAO6F,SAC3B,GAAIpB,EAAW,CACb,IAAIxF,EAASmM,EAAqB9V,KAAK0K,OAAQ,aAAcyE,GAC7D,IAAKxF,EACH,OAEF4G,EAAW5G,EAAOiJ,QAAQrC,SAE5B,MAAsB,oBAARzD,EACVA,EAAInO,MAAMqB,KAAM,CAACuQ,GAAU7M,OAAO8P,IAClCjD,EAAS5R,MAAMqB,KAAK0K,OAAQ,CAACoC,GAAKpJ,OAAO8P,QAG1CO,KAQLqC,EAA0B,SAAUjH,GAAa,MAAO,CAC1DuG,SAAUA,EAASW,KAAK,KAAMlH,GAC9B+G,WAAYA,EAAWG,KAAK,KAAMlH,GAClC6G,aAAcA,EAAaK,KAAK,KAAMlH,GACtCgH,WAAYA,EAAWE,KAAK,KAAMlH,KAUpC,SAAS0G,EAAcjB,GACrB,OAAK0B,EAAW1B,GAGTvI,MAAMC,QAAQsI,GACjBA,EAAIA,KAAI,SAAUnI,GAAO,MAAO,CAAGA,IAAKA,EAAKK,IAAKL,MAClDF,OAAO7J,KAAKkS,GAAKA,KAAI,SAAUnI,GAAO,MAAO,CAAGA,IAAKA,EAAKK,IAAK8H,EAAInI,OAJ9D,GAYX,SAAS6J,EAAY1B,GACnB,OAAOvI,MAAMC,QAAQsI,IAAQhI,EAASgI,GAQxC,SAASe,EAAoBhJ,GAC3B,OAAO,SAAUwC,EAAWyF,GAO1B,MANyB,kBAAdzF,GACTyF,EAAMzF,EACNA,EAAY,IACwC,MAA3CA,EAAUhK,OAAOgK,EAAUpS,OAAS,KAC7CoS,GAAa,KAERxC,EAAGwC,EAAWyF,IAWzB,SAASkB,EAAsBrL,EAAOhI,EAAQ0M,GAC5C,IAAIxF,EAASc,EAAM0F,qBAAqBhB,GAIxC,OAAOxF,EAKT,SAAS4M,EAAcvX,QACR,IAARA,IAAiBA,EAAM,IAC5B,IAAIwX,EAAYxX,EAAIwX,eAA8B,IAAdA,IAAuBA,GAAY,GACvE,IAAItS,EAASlF,EAAIkF,YAAwB,IAAXA,IAAoBA,EAAS,SAAUsH,EAAUiL,EAAaC,GAAc,OAAO,IACjH,IAAIC,EAAc3X,EAAI2X,iBAAkC,IAAhBA,IAAyBA,EAAc,SAAUlL,GAAS,OAAOA,IACzG,IAAImL,EAAsB5X,EAAI4X,yBAAkD,IAAxBA,IAAiCA,EAAsB,SAAUC,GAAO,OAAOA,IACvI,IAAIC,EAAe9X,EAAI8X,kBAAoC,IAAjBA,IAA0BA,EAAe,SAAUlL,EAAQH,GAAS,OAAO,IACrH,IAAIsL,EAAoB/X,EAAI+X,uBAA8C,IAAtBA,IAA+BA,EAAoB,SAAUC,GAAO,OAAOA,IAC/H,IAAIC,EAAejY,EAAIiY,kBAAoC,IAAjBA,IAA0BA,GAAe,GACnF,IAAIC,EAAalY,EAAIkY,gBAAgC,IAAfA,IAAwBA,GAAa,GAC3E,IAAIC,EAASnY,EAAImY,OAEjB,YAFyC,IAAXA,IAAoBA,EAASC,SAEpD,SAAU3M,GACf,IAAI4M,EAAYrL,EAASvB,EAAMgB,OAET,qBAAX0L,IAIPF,GACFxM,EAAMc,WAAU,SAAUC,EAAUC,GAClC,IAAI6L,EAAYtL,EAASP,GAEzB,GAAIvH,EAAOsH,EAAU6L,EAAWC,GAAY,CAC1C,IAAIC,EAAgBC,IAChBC,EAAoBb,EAAoBpL,GACxCkM,EAAU,YAAelM,EAAa,KAAI+L,EAE9CI,EAAaR,EAAQO,EAASlB,GAC9BW,EAAOS,IAAI,gBAAiB,oCAAqCjB,EAAYU,IAC7EF,EAAOS,IAAI,cAAe,oCAAqCH,GAC/DN,EAAOS,IAAI,gBAAiB,oCAAqCjB,EAAYW,IAC7EO,EAAWV,GAGbE,EAAYC,KAIZJ,GACFzM,EAAMkB,iBAAgB,SAAUC,EAAQH,GACtC,GAAIqL,EAAalL,EAAQH,GAAQ,CAC/B,IAAI8L,EAAgBC,IAChBM,EAAkBf,EAAkBnL,GACpC8L,EAAU,UAAa9L,EAAW,KAAI2L,EAE1CI,EAAaR,EAAQO,EAASlB,GAC9BW,EAAOS,IAAI,YAAa,oCAAqCE,GAC7DD,EAAWV,SAOrB,SAASQ,EAAcR,EAAQO,EAASlB,GACtC,IAAImB,EAAenB,EACfW,EAAOY,eACPZ,EAAOa,MAGX,IACEL,EAAalX,KAAK0W,EAAQO,GAC1B,MAAOna,GACP4Z,EAAOS,IAAIF,IAIf,SAASG,EAAYV,GACnB,IACEA,EAAOc,WACP,MAAO1a,GACP4Z,EAAOS,IAAI,kBAIf,SAASJ,IACP,IAAIU,EAAO,IAAIC,KACf,MAAQ,MAASC,EAAIF,EAAKG,WAAY,GAAM,IAAOD,EAAIF,EAAKI,aAAc,GAAM,IAAOF,EAAIF,EAAKK,aAAc,GAAM,IAAOH,EAAIF,EAAKM,kBAAmB,GAGzJ,SAASC,EAAQC,EAAKC,GACpB,OAAO,IAAKtM,MAAMsM,EAAQ,GAAIzZ,KAAKwZ,GAGrC,SAASN,EAAKQ,EAAKC,GACjB,OAAOJ,EAAO,IAAKI,EAAYD,EAAIE,WAAW/b,QAAU6b,EAG1D,IAAI9S,EAAQ,CACV2J,MAAOA,EACPC,QAASA,EACT3F,QAAS,QACT2L,SAAUA,EACVM,aAAcA,EACdE,WAAYA,EACZC,WAAYA,EACZC,wBAAyBA,EACzBG,aAAcA,GAGD,W,0KCptCf,IAAIwC,EAAUzc,EAAUE,EAAS0b,EAAMc,EAAgBC,EAEvD3c,EAAW,EAAQ,QAEnBE,EAAU,EAAQ,QAElBwc,EAAiB,EAAQ,QAEzBD,EAAW,EAAQ,QAEnBb,EAAO,WACL,OAAO,IAAKC,MAAQe,WAGtBD,EAAS,SAASpZ,EAAUsZ,GAC1B,IAAIlM,EAAKmM,EAAc1c,EAAGkE,EAAKrB,EAAS8Z,EAAMra,EAAKnC,EAAQyc,EAAkBC,EAAOzM,EAMpF,IALmB,MAAfqM,IACFA,EAAc,IAEhBI,EAAQrB,IACRoB,EAAmB,GACd5c,EAAI,EAAGkE,EAAMuY,EAAYpc,OAAQL,EAAIkE,EAAKlE,IAC7CuQ,EAAMkM,EAAYzc,GACS,YAAtBsC,SAAaiO,IAA6B,WAARjO,GAA4B,YAARA,GACzDsa,EAAiB9a,KAAKyO,EAAI6L,WAAW3X,eAQzC,IAAKkY,KALL/c,EAASuF,0BAA0ByX,GACnC/Z,EAAUjD,EAASsD,UAAUC,GAC7BhD,EAASL,EAAQuJ,8BAA8BlG,EAAUN,GACzD1C,EAAO2c,UAAYtB,IAASqB,EAC5BH,EAAeJ,EAAeS,sBAAsB5c,EAAOoJ,SAC9CmT,EACXtM,EAAMsM,EAAaC,GACnBxc,EAAOwc,GAAQvM,EAGjB,OADAjQ,EAAOkc,SAAWA,EAASW,aAAa7c,EAAO8c,MAAO9c,EAAOmJ,UACtDnJ,GAGT8M,EAAOC,QAAUqP,G,gGCzCjBtP,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAOiQ,kBACXjQ,EAAOkQ,UAAY,aACnBlQ,EAAOmQ,MAAQ,GAEVnQ,EAAOoQ,WAAUpQ,EAAOoQ,SAAW,IACxCxN,OAAOoF,eAAehI,EAAQ,SAAU,CACvCiI,YAAY,EACZhE,IAAK,WACJ,OAAOjE,EAAOlM,KAGhB8O,OAAOoF,eAAehI,EAAQ,KAAM,CACnCiI,YAAY,EACZhE,IAAK,WACJ,OAAOjE,EAAOjN,KAGhBiN,EAAOiQ,gBAAkB,GAEnBjQ,I,qHCnBR,IAAIzN,EAEJA,EAAmB,CACjBc,OAAQ,CACN,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpCgd,IAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,OACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,OACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OAEtC/c,OAAQ,CACN,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC+c,IAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACpC,EAAK,CAAC,KAAM,MAAO,KAAM,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,MAAO,KAAM,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EA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","file":"js/chunk-vendors_fdc6512a.288cec4f.js","sourcesContent":["// Generated by CoffeeScript 1.10.0\nvar DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;\n\nfrequency_lists = require('./frequency_lists');\n\nadjacency_graphs = require('./adjacency_graphs');\n\nscoring = require('./scoring');\n\nbuild_ranked_dict = function(ordered_list) {\n var i, len1, o, result, word;\n result = {};\n i = 1;\n for (o = 0, len1 = ordered_list.length; o < len1; o++) {\n word = ordered_list[o];\n result[word] = i;\n i += 1;\n }\n return result;\n};\n\nRANKED_DICTIONARIES = {};\n\nfor (name in frequency_lists) {\n lst = frequency_lists[name];\n RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n}\n\nGRAPHS = {\n qwerty: adjacency_graphs.qwerty,\n dvorak: adjacency_graphs.dvorak,\n keypad: adjacency_graphs.keypad,\n mac_keypad: adjacency_graphs.mac_keypad\n};\n\nL33T_TABLE = {\n a: ['4', '@'],\n b: ['8'],\n c: ['(', '{', '[', '<'],\n e: ['3'],\n g: ['6', '9'],\n i: ['1', '!', '|'],\n l: ['1', '|', '7'],\n o: ['0'],\n s: ['$', '5'],\n t: ['+', '7'],\n x: ['%'],\n z: ['2']\n};\n\nREGEXEN = {\n recent_year: /19\\d\\d|200\\d|201\\d/g\n};\n\nDATE_MAX_YEAR = 2050;\n\nDATE_MIN_YEAR = 1000;\n\nDATE_SPLITS = {\n 4: [[1, 2], [2, 3]],\n 5: [[1, 3], [2, 3]],\n 6: [[1, 2], [2, 4], [4, 5]],\n 7: [[1, 3], [2, 3], [4, 5], [4, 6]],\n 8: [[2, 4], [4, 6]]\n};\n\nmatching = {\n empty: function(obj) {\n var k;\n return ((function() {\n var results;\n results = [];\n for (k in obj) {\n results.push(k);\n }\n return results;\n })()).length === 0;\n },\n extend: function(lst, lst2) {\n return lst.push.apply(lst, lst2);\n },\n translate: function(string, chr_map) {\n var chr;\n return ((function() {\n var len1, o, ref, results;\n ref = string.split('');\n results = [];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n results.push(chr_map[chr] || chr);\n }\n return results;\n })()).join('');\n },\n mod: function(n, m) {\n return ((n % m) + m) % m;\n },\n sorted: function(matches) {\n return matches.sort(function(m1, m2) {\n return (m1.i - m2.i) || (m1.j - m2.j);\n });\n },\n omnimatch: function(password) {\n var len1, matcher, matchers, matches, o;\n matches = [];\n matchers = [this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match];\n for (o = 0, len1 = matchers.length; o < len1; o++) {\n matcher = matchers[o];\n this.extend(matches, matcher.call(this, password));\n }\n return this.sorted(matches);\n },\n dictionary_match: function(password, _ranked_dictionaries) {\n var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n matches = [];\n len = password.length;\n password_lower = password.toLowerCase();\n for (dictionary_name in _ranked_dictionaries) {\n ranked_dict = _ranked_dictionaries[dictionary_name];\n for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {\n word = password_lower.slice(i, +j + 1 || 9e9);\n rank = ranked_dict[word];\n matches.push({\n pattern: 'dictionary',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n matched_word: word,\n rank: rank,\n dictionary_name: dictionary_name,\n reversed: false,\n l33t: false\n });\n }\n }\n }\n }\n return this.sorted(matches);\n },\n reverse_dictionary_match: function(password, _ranked_dictionaries) {\n var len1, match, matches, o, ref, reversed_password;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n reversed_password = password.split('').reverse().join('');\n matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n for (o = 0, len1 = matches.length; o < len1; o++) {\n match = matches[o];\n match.token = match.token.split('').reverse().join('');\n match.reversed = true;\n ref = [password.length - 1 - match.j, password.length - 1 - match.i], match.i = ref[0], match.j = ref[1];\n }\n return this.sorted(matches);\n },\n set_user_input_dictionary: function(ordered_list) {\n return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n },\n relevant_l33t_subtable: function(password, table) {\n var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;\n password_chars = {};\n ref = password.split('');\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n password_chars[chr] = true;\n }\n subtable = {};\n for (letter in table) {\n subs = table[letter];\n relevant_subs = (function() {\n var len2, p, results;\n results = [];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n if (sub in password_chars) {\n results.push(sub);\n }\n }\n return results;\n })();\n if (relevant_subs.length > 0) {\n subtable[letter] = relevant_subs;\n }\n }\n return subtable;\n },\n enumerate_l33t_subs: function(table) {\n var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;\n keys = (function() {\n var results;\n results = [];\n for (k in table) {\n results.push(k);\n }\n return results;\n })();\n subs = [[]];\n dedup = function(subs) {\n var assoc, deduped, label, len1, members, o, sub, v;\n deduped = [];\n members = {};\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n assoc = (function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {\n k = sub[v];\n results.push([k, v]);\n }\n return results;\n })();\n assoc.sort();\n label = ((function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {\n k = assoc[v];\n results.push(k + ',' + v);\n }\n return results;\n })()).join('-');\n if (!(label in members)) {\n members[label] = true;\n deduped.push(sub);\n }\n }\n return deduped;\n };\n helper = function(keys) {\n var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;\n if (!keys.length) {\n return;\n }\n first_key = keys[0];\n rest_keys = keys.slice(1);\n next_subs = [];\n ref = table[first_key];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n l33t_chr = ref[o];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n dup_l33t_index = -1;\n for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {\n if (sub[i][0] === l33t_chr) {\n dup_l33t_index = i;\n break;\n }\n }\n if (dup_l33t_index === -1) {\n sub_extension = sub.concat([[l33t_chr, first_key]]);\n next_subs.push(sub_extension);\n } else {\n sub_alternative = sub.slice(0);\n sub_alternative.splice(dup_l33t_index, 1);\n sub_alternative.push([l33t_chr, first_key]);\n next_subs.push(sub);\n next_subs.push(sub_alternative);\n }\n }\n }\n subs = dedup(next_subs);\n return helper(rest_keys);\n };\n helper(keys);\n sub_dicts = [];\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n sub_dict = {};\n for (p = 0, len2 = sub.length; p < len2; p++) {\n ref = sub[p], l33t_chr = ref[0], chr = ref[1];\n sub_dict[l33t_chr] = chr;\n }\n sub_dicts.push(sub_dict);\n }\n return sub_dicts;\n },\n l33t_match: function(password, _ranked_dictionaries, _l33t_table) {\n var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n if (_l33t_table == null) {\n _l33t_table = L33T_TABLE;\n }\n matches = [];\n ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));\n for (o = 0, len1 = ref.length; o < len1; o++) {\n sub = ref[o];\n if (this.empty(sub)) {\n break;\n }\n subbed_password = this.translate(password, sub);\n ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);\n for (p = 0, len2 = ref1.length; p < len2; p++) {\n match = ref1[p];\n token = password.slice(match.i, +match.j + 1 || 9e9);\n if (token.toLowerCase() === match.matched_word) {\n continue;\n }\n match_sub = {};\n for (subbed_chr in sub) {\n chr = sub[subbed_chr];\n if (token.indexOf(subbed_chr) !== -1) {\n match_sub[subbed_chr] = chr;\n }\n }\n match.l33t = true;\n match.token = token;\n match.sub = match_sub;\n match.sub_display = ((function() {\n var results;\n results = [];\n for (k in match_sub) {\n v = match_sub[k];\n results.push(k + \" -> \" + v);\n }\n return results;\n })()).join(', ');\n matches.push(match);\n }\n }\n return this.sorted(matches.filter(function(match) {\n return match.token.length > 1;\n }));\n },\n spatial_match: function(password, _graphs) {\n var graph, graph_name, matches;\n if (_graphs == null) {\n _graphs = GRAPHS;\n }\n matches = [];\n for (graph_name in _graphs) {\n graph = _graphs[graph_name];\n this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n }\n return this.sorted(matches);\n },\n SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n spatial_match_helper: function(password, graph, graph_name) {\n var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;\n matches = [];\n i = 0;\n while (i < password.length - 1) {\n j = i + 1;\n last_direction = null;\n turns = 0;\n if ((graph_name === 'qwerty' || graph_name === 'dvorak') && this.SHIFTED_RX.exec(password.charAt(i))) {\n shifted_count = 1;\n } else {\n shifted_count = 0;\n }\n while (true) {\n prev_char = password.charAt(j - 1);\n found = false;\n found_direction = -1;\n cur_direction = -1;\n adjacents = graph[prev_char] || [];\n if (j < password.length) {\n cur_char = password.charAt(j);\n for (o = 0, len1 = adjacents.length; o < len1; o++) {\n adj = adjacents[o];\n cur_direction += 1;\n if (adj && adj.indexOf(cur_char) !== -1) {\n found = true;\n found_direction = cur_direction;\n if (adj.indexOf(cur_char) === 1) {\n shifted_count += 1;\n }\n if (last_direction !== found_direction) {\n turns += 1;\n last_direction = found_direction;\n }\n break;\n }\n }\n }\n if (found) {\n j += 1;\n } else {\n if (j - i > 2) {\n matches.push({\n pattern: 'spatial',\n i: i,\n j: j - 1,\n token: password.slice(i, j),\n graph: graph_name,\n turns: turns,\n shifted_count: shifted_count\n });\n }\n i = j;\n break;\n }\n }\n }\n return matches;\n },\n repeat_match: function(password) {\n var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;\n matches = [];\n greedy = /(.+)\\1+/g;\n lazy = /(.+?)\\1+/g;\n lazy_anchored = /^(.+?)\\1+$/;\n lastIndex = 0;\n while (lastIndex < password.length) {\n greedy.lastIndex = lazy.lastIndex = lastIndex;\n greedy_match = greedy.exec(password);\n lazy_match = lazy.exec(password);\n if (greedy_match == null) {\n break;\n }\n if (greedy_match[0].length > lazy_match[0].length) {\n match = greedy_match;\n base_token = lazy_anchored.exec(match[0])[1];\n } else {\n match = lazy_match;\n base_token = match[1];\n }\n ref = [match.index, match.index + match[0].length - 1], i = ref[0], j = ref[1];\n base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n base_matches = base_analysis.sequence;\n base_guesses = base_analysis.guesses;\n matches.push({\n pattern: 'repeat',\n i: i,\n j: j,\n token: match[0],\n base_token: base_token,\n base_guesses: base_guesses,\n base_matches: base_matches,\n repeat_count: match[0].length / base_token.length\n });\n lastIndex = j + 1;\n }\n return matches;\n },\n MAX_DELTA: 5,\n sequence_match: function(password) {\n var delta, i, j, k, last_delta, o, ref, result, update;\n if (password.length === 1) {\n return [];\n }\n update = (function(_this) {\n return function(i, j, delta) {\n var ref, sequence_name, sequence_space, token;\n if (j - i > 1 || Math.abs(delta) === 1) {\n if ((0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA)) {\n token = password.slice(i, +j + 1 || 9e9);\n if (/^[a-z]+$/.test(token)) {\n sequence_name = 'lower';\n sequence_space = 26;\n } else if (/^[A-Z]+$/.test(token)) {\n sequence_name = 'upper';\n sequence_space = 26;\n } else if (/^\\d+$/.test(token)) {\n sequence_name = 'digits';\n sequence_space = 10;\n } else {\n sequence_name = 'unicode';\n sequence_space = 26;\n }\n return result.push({\n pattern: 'sequence',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n sequence_name: sequence_name,\n sequence_space: sequence_space,\n ascending: delta > 0\n });\n }\n }\n };\n })(this);\n result = [];\n i = 0;\n last_delta = null;\n for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {\n delta = password.charCodeAt(k) - password.charCodeAt(k - 1);\n if (last_delta == null) {\n last_delta = delta;\n }\n if (delta === last_delta) {\n continue;\n }\n j = k - 1;\n update(i, j, last_delta);\n i = j;\n last_delta = delta;\n }\n update(i, password.length - 1, last_delta);\n return result;\n },\n regex_match: function(password, _regexen) {\n var matches, regex, rx_match, token;\n if (_regexen == null) {\n _regexen = REGEXEN;\n }\n matches = [];\n for (name in _regexen) {\n regex = _regexen[name];\n regex.lastIndex = 0;\n while (rx_match = regex.exec(password)) {\n token = rx_match[0];\n matches.push({\n pattern: 'regex',\n token: token,\n i: rx_match.index,\n j: rx_match.index + rx_match[0].length - 1,\n regex_name: name,\n regex_match: rx_match\n });\n }\n }\n return this.sorted(matches);\n },\n date_match: function(password) {\n var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;\n matches = [];\n maybe_date_no_separator = /^\\d{4,8}$/;\n maybe_date_with_separator = /^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/;\n for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n if (!maybe_date_no_separator.exec(token)) {\n continue;\n }\n candidates = [];\n ref3 = DATE_SPLITS[token.length];\n for (q = 0, len1 = ref3.length; q < len1; q++) {\n ref4 = ref3[q], k = ref4[0], l = ref4[1];\n dmy = this.map_ints_to_dmy([parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l))]);\n if (dmy != null) {\n candidates.push(dmy);\n }\n }\n if (!(candidates.length > 0)) {\n continue;\n }\n best_candidate = candidates[0];\n metric = function(candidate) {\n return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n };\n min_distance = metric(candidates[0]);\n ref5 = candidates.slice(1);\n for (r = 0, len2 = ref5.length; r < len2; r++) {\n candidate = ref5[r];\n distance = metric(candidate);\n if (distance < min_distance) {\n ref6 = [candidate, distance], best_candidate = ref6[0], min_distance = ref6[1];\n }\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: '',\n year: best_candidate.year,\n month: best_candidate.month,\n day: best_candidate.day\n });\n }\n }\n for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {\n for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n rx_match = maybe_date_with_separator.exec(token);\n if (rx_match == null) {\n continue;\n }\n dmy = this.map_ints_to_dmy([parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4])]);\n if (dmy == null) {\n continue;\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: rx_match[2],\n year: dmy.year,\n month: dmy.month,\n day: dmy.day\n });\n }\n }\n return this.sorted(matches.filter(function(match) {\n var is_submatch, len3, other_match, u;\n is_submatch = false;\n for (u = 0, len3 = matches.length; u < len3; u++) {\n other_match = matches[u];\n if (match === other_match) {\n continue;\n }\n if (other_match.i <= match.i && other_match.j >= match.j) {\n is_submatch = true;\n break;\n }\n }\n return !is_submatch;\n }));\n },\n map_ints_to_dmy: function(ints) {\n var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;\n if (ints[1] > 31 || ints[1] <= 0) {\n return;\n }\n over_12 = 0;\n over_31 = 0;\n under_1 = 0;\n for (o = 0, len1 = ints.length; o < len1; o++) {\n int = ints[o];\n if ((99 < int && int < DATE_MIN_YEAR) || int > DATE_MAX_YEAR) {\n return;\n }\n if (int > 31) {\n over_31 += 1;\n }\n if (int > 12) {\n over_12 += 1;\n }\n if (int <= 0) {\n under_1 += 1;\n }\n }\n if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n return;\n }\n possible_year_splits = [[ints[2], ints.slice(0, 2)], [ints[0], ints.slice(1, 3)]];\n for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {\n ref = possible_year_splits[p], y = ref[0], rest = ref[1];\n if ((DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR)) {\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n } else {\n return;\n }\n }\n }\n for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {\n ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n y = this.two_to_four_digit_year(y);\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n }\n }\n },\n map_ints_to_dm: function(ints) {\n var d, len1, m, o, ref, ref1;\n ref = [ints, ints.slice().reverse()];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n ref1 = ref[o], d = ref1[0], m = ref1[1];\n if ((1 <= d && d <= 31) && (1 <= m && m <= 12)) {\n return {\n day: d,\n month: m\n };\n }\n }\n },\n two_to_four_digit_year: function(year) {\n if (year > 99) {\n return year;\n } else if (year > 50) {\n return year + 1900;\n } else {\n return year + 2000;\n }\n }\n};\n\nmodule.exports = matching;\n\n//# sourceMappingURL=matching.js.map\n","/*!\n * vuex v3.5.1\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n return parent.hasChild(key)\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.5.1',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","// Generated by CoffeeScript 1.10.0\nvar feedback, matching, scoring, time, time_estimates, zxcvbn;\n\nmatching = require('./matching');\n\nscoring = require('./scoring');\n\ntime_estimates = require('./time_estimates');\n\nfeedback = require('./feedback');\n\ntime = function() {\n return (new Date()).getTime();\n};\n\nzxcvbn = function(password, user_inputs) {\n var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;\n if (user_inputs == null) {\n user_inputs = [];\n }\n start = time();\n sanitized_inputs = [];\n for (i = 0, len = user_inputs.length; i < len; i++) {\n arg = user_inputs[i];\n if ((ref = typeof arg) === \"string\" || ref === \"number\" || ref === \"boolean\") {\n sanitized_inputs.push(arg.toString().toLowerCase());\n }\n }\n matching.set_user_input_dictionary(sanitized_inputs);\n matches = matching.omnimatch(password);\n result = scoring.most_guessable_match_sequence(password, matches);\n result.calc_time = time() - start;\n attack_times = time_estimates.estimate_attack_times(result.guesses);\n for (prop in attack_times) {\n val = attack_times[prop];\n result[prop] = val;\n }\n result.feedback = feedback.get_feedback(result.score, result.sequence);\n return result;\n};\n\nmodule.exports = zxcvbn;\n\n//# sourceMappingURL=main.js.map\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// Generated by CoffeeScript 1.10.0\nvar adjacency_graphs;\n\nadjacency_graphs = {\n qwerty: {\n \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"\\\\\": [\"]}\", null, null, null, null, null],\n \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"|\": [\"]}\", null, null, null, null, null],\n \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n dvorak: {\n \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \":\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \";\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"\\\\\": [\"=+\", null, null, null, null, null],\n \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"|\": [\"=+\", null, null, null, null, null],\n \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n keypad: {\n \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"],\n \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"],\n \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"],\n \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"]\n },\n mac_keypad: {\n \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"],\n \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"],\n \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"],\n \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"],\n \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"]\n }\n};\n\nmodule.exports = adjacency_graphs;\n\n//# sourceMappingURL=adjacency_graphs.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, scoring;\n\nscoring = require('./scoring');\n\nfeedback = {\n default_feedback: {\n warning: '',\n suggestions: [\"Use a few words, avoid common phrases\", \"No need for symbols, digits, or uppercase letters\"]\n },\n get_feedback: function(score, sequence) {\n var extra_feedback, i, len, longest_match, match, ref;\n if (sequence.length === 0) {\n return this.default_feedback;\n }\n if (score > 2) {\n return {\n warning: '',\n suggestions: []\n };\n }\n longest_match = sequence[0];\n ref = sequence.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n match = ref[i];\n if (match.token.length > longest_match.token.length) {\n longest_match = match;\n }\n }\n feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n extra_feedback = 'Add another word or two. Uncommon words are better.';\n if (feedback != null) {\n feedback.suggestions.unshift(extra_feedback);\n if (feedback.warning == null) {\n feedback.warning = '';\n }\n } else {\n feedback = {\n warning: '',\n suggestions: [extra_feedback]\n };\n }\n return feedback;\n },\n get_match_feedback: function(match, is_sole_match) {\n var layout, warning;\n switch (match.pattern) {\n case 'dictionary':\n return this.get_dictionary_match_feedback(match, is_sole_match);\n case 'spatial':\n layout = match.graph.toUpperCase();\n warning = match.turns === 1 ? 'Straight rows of keys are easy to guess' : 'Short keyboard patterns are easy to guess';\n return {\n warning: warning,\n suggestions: ['Use a longer keyboard pattern with more turns']\n };\n case 'repeat':\n warning = match.base_token.length === 1 ? 'Repeats like \"aaa\" are easy to guess' : 'Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"';\n return {\n warning: warning,\n suggestions: ['Avoid repeated words and characters']\n };\n case 'sequence':\n return {\n warning: \"Sequences like abc or 6543 are easy to guess\",\n suggestions: ['Avoid sequences']\n };\n case 'regex':\n if (match.regex_name === 'recent_year') {\n return {\n warning: \"Recent years are easy to guess\",\n suggestions: ['Avoid recent years', 'Avoid years that are associated with you']\n };\n }\n break;\n case 'date':\n return {\n warning: \"Dates are often easy to guess\",\n suggestions: ['Avoid dates and years that are associated with you']\n };\n }\n },\n get_dictionary_match_feedback: function(match, is_sole_match) {\n var ref, result, suggestions, warning, word;\n warning = match.dictionary_name === 'passwords' ? is_sole_match && !match.l33t && !match.reversed ? match.rank <= 10 ? 'This is a top-10 common password' : match.rank <= 100 ? 'This is a top-100 common password' : 'This is a very common password' : match.guesses_log10 <= 4 ? 'This is similar to a commonly used password' : void 0 : match.dictionary_name === 'english_wikipedia' ? is_sole_match ? 'A word by itself is easy to guess' : void 0 : (ref = match.dictionary_name) === 'surnames' || ref === 'male_names' || ref === 'female_names' ? is_sole_match ? 'Names and surnames by themselves are easy to guess' : 'Common names and surnames are easy to guess' : '';\n suggestions = [];\n word = match.token;\n if (word.match(scoring.START_UPPER)) {\n suggestions.push(\"Capitalization doesn't help very much\");\n } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n suggestions.push(\"All-uppercase is almost as easy to guess as all-lowercase\");\n }\n if (match.reversed && match.token.length >= 4) {\n suggestions.push(\"Reversed words aren't much harder to guess\");\n }\n if (match.l33t) {\n suggestions.push(\"Predictable substitutions like '@' instead of 'a' don't help very much\");\n }\n result = {\n warning: warning,\n suggestions: suggestions\n };\n return result;\n }\n};\n\nmodule.exports = feedback;\n\n//# sourceMappingURL=feedback.js.map\n","// Generated by CoffeeScript 1.10.0\nvar BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;\n\nadjacency_graphs = require('./adjacency_graphs');\n\ncalc_average_degree = function(graph) {\n var average, k, key, n, neighbors, v;\n average = 0;\n for (key in graph) {\n neighbors = graph[key];\n average += ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = neighbors.length; o < len; o++) {\n n = neighbors[o];\n if (n) {\n results.push(n);\n }\n }\n return results;\n })()).length;\n }\n average /= ((function() {\n var results;\n results = [];\n for (k in graph) {\n v = graph[k];\n results.push(k);\n }\n return results;\n })()).length;\n return average;\n};\n\nBRUTEFORCE_CARDINALITY = 10;\n\nMIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\n\nMIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\n\nMIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nscoring = {\n nCk: function(n, k) {\n var d, o, r, ref;\n if (k > n) {\n return 0;\n }\n if (k === 0) {\n return 1;\n }\n r = 1;\n for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {\n r *= n;\n r /= d;\n n -= 1;\n }\n return r;\n },\n log10: function(n) {\n return Math.log(n) / Math.log(10);\n },\n log2: function(n) {\n return Math.log(n) / Math.log(2);\n },\n factorial: function(n) {\n var f, i, o, ref;\n if (n < 2) {\n return 1;\n }\n f = 1;\n for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {\n f *= i;\n }\n return f;\n },\n most_guessable_match_sequence: function(password, matches, _exclude_additive) {\n var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;\n if (_exclude_additive == null) {\n _exclude_additive = false;\n }\n n = password.length;\n matches_by_j = (function() {\n var o, ref, results;\n results = [];\n for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {\n results.push([]);\n }\n return results;\n })();\n for (o = 0, len = matches.length; o < len; o++) {\n m = matches[o];\n matches_by_j[m.j].push(m);\n }\n for (q = 0, len1 = matches_by_j.length; q < len1; q++) {\n lst = matches_by_j[q];\n lst.sort(function(m1, m2) {\n return m1.i - m2.i;\n });\n }\n optimal = {\n m: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n pi: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n g: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })()\n };\n update = (function(_this) {\n return function(m, l) {\n var competing_g, competing_l, g, k, pi, ref;\n k = m.j;\n pi = _this.estimate_guesses(m, password);\n if (l > 1) {\n pi *= optimal.pi[m.i - 1][l - 1];\n }\n g = _this.factorial(l) * pi;\n if (!_exclude_additive) {\n g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n }\n ref = optimal.g[k];\n for (competing_l in ref) {\n competing_g = ref[competing_l];\n if (competing_l > l) {\n continue;\n }\n if (competing_g <= g) {\n return;\n }\n }\n optimal.g[k][l] = g;\n optimal.m[k][l] = m;\n return optimal.pi[k][l] = pi;\n };\n })(this);\n bruteforce_update = (function(_this) {\n return function(k) {\n var i, l, last_m, ref, results, u;\n m = make_bruteforce_match(0, k);\n update(m, 1);\n results = [];\n for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {\n m = make_bruteforce_match(i, k);\n results.push((function() {\n var ref1, results1;\n ref1 = optimal.m[i - 1];\n results1 = [];\n for (l in ref1) {\n last_m = ref1[l];\n l = parseInt(l);\n if (last_m.pattern === 'bruteforce') {\n continue;\n }\n results1.push(update(m, l + 1));\n }\n return results1;\n })());\n }\n return results;\n };\n })(this);\n make_bruteforce_match = (function(_this) {\n return function(i, j) {\n return {\n pattern: 'bruteforce',\n token: password.slice(i, +j + 1 || 9e9),\n i: i,\n j: j\n };\n };\n })(this);\n unwind = (function(_this) {\n return function(n) {\n var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;\n optimal_match_sequence = [];\n k = n - 1;\n l = void 0;\n g = Infinity;\n ref = optimal.g[k];\n for (candidate_l in ref) {\n candidate_g = ref[candidate_l];\n if (candidate_g < g) {\n l = candidate_l;\n g = candidate_g;\n }\n }\n while (k >= 0) {\n m = optimal.m[k][l];\n optimal_match_sequence.unshift(m);\n k = m.i - 1;\n l--;\n }\n return optimal_match_sequence;\n };\n })(this);\n for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {\n ref1 = matches_by_j[k];\n for (w = 0, len2 = ref1.length; w < len2; w++) {\n m = ref1[w];\n if (m.i > 0) {\n for (l in optimal.m[m.i - 1]) {\n l = parseInt(l);\n update(m, l + 1);\n }\n } else {\n update(m, 1);\n }\n }\n bruteforce_update(k);\n }\n optimal_match_sequence = unwind(n);\n optimal_l = optimal_match_sequence.length;\n if (password.length === 0) {\n guesses = 1;\n } else {\n guesses = optimal.g[n - 1][optimal_l];\n }\n return {\n password: password,\n guesses: guesses,\n guesses_log10: this.log10(guesses),\n sequence: optimal_match_sequence\n };\n },\n estimate_guesses: function(match, password) {\n var estimation_functions, guesses, min_guesses;\n if (match.guesses != null) {\n return match.guesses;\n }\n min_guesses = 1;\n if (match.token.length < password.length) {\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;\n }\n estimation_functions = {\n bruteforce: this.bruteforce_guesses,\n dictionary: this.dictionary_guesses,\n spatial: this.spatial_guesses,\n repeat: this.repeat_guesses,\n sequence: this.sequence_guesses,\n regex: this.regex_guesses,\n date: this.date_guesses\n };\n guesses = estimation_functions[match.pattern].call(this, match);\n match.guesses = Math.max(guesses, min_guesses);\n match.guesses_log10 = this.log10(match.guesses);\n return match.guesses;\n },\n bruteforce_guesses: function(match) {\n var guesses, min_guesses;\n guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n if (guesses === Number.POSITIVE_INFINITY) {\n guesses = Number.MAX_VALUE;\n }\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;\n return Math.max(guesses, min_guesses);\n },\n repeat_guesses: function(match) {\n return match.base_guesses * match.repeat_count;\n },\n sequence_guesses: function(match) {\n var base_guesses, first_chr;\n first_chr = match.token.charAt(0);\n if (first_chr === 'a' || first_chr === 'A' || first_chr === 'z' || first_chr === 'Z' || first_chr === '0' || first_chr === '1' || first_chr === '9') {\n base_guesses = 4;\n } else {\n if (first_chr.match(/\\d/)) {\n base_guesses = 10;\n } else {\n base_guesses = 26;\n }\n }\n if (!match.ascending) {\n base_guesses *= 2;\n }\n return base_guesses * match.token.length;\n },\n MIN_YEAR_SPACE: 20,\n REFERENCE_YEAR: new Date().getFullYear(),\n regex_guesses: function(match) {\n var char_class_bases, year_space;\n char_class_bases = {\n alpha_lower: 26,\n alpha_upper: 26,\n alpha: 52,\n alphanumeric: 62,\n digits: 10,\n symbols: 33\n };\n if (match.regex_name in char_class_bases) {\n return Math.pow(char_class_bases[match.regex_name], match.token.length);\n } else {\n switch (match.regex_name) {\n case 'recent_year':\n year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);\n year_space = Math.max(year_space, this.MIN_YEAR_SPACE);\n return year_space;\n }\n }\n },\n date_guesses: function(match) {\n var guesses, year_space;\n year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n guesses = year_space * 365;\n if (match.separator) {\n guesses *= 4;\n }\n return guesses;\n },\n KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n KEYBOARD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.qwerty;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n KEYPAD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.keypad;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n spatial_guesses: function(match) {\n var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;\n if ((ref = match.graph) === 'qwerty' || ref === 'dvorak') {\n s = this.KEYBOARD_STARTING_POSITIONS;\n d = this.KEYBOARD_AVERAGE_DEGREE;\n } else {\n s = this.KEYPAD_STARTING_POSITIONS;\n d = this.KEYPAD_AVERAGE_DEGREE;\n }\n guesses = 0;\n L = match.token.length;\n t = match.turns;\n for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {\n possible_turns = Math.min(t, i - 1);\n for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {\n guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n }\n }\n if (match.shifted_count) {\n S = match.shifted_count;\n U = match.token.length - match.shifted_count;\n if (S === 0 || U === 0) {\n guesses *= 2;\n } else {\n shifted_variations = 0;\n for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {\n shifted_variations += this.nCk(S + U, i);\n }\n guesses *= shifted_variations;\n }\n }\n return guesses;\n },\n dictionary_guesses: function(match) {\n var reversed_variations;\n match.base_guesses = match.rank;\n match.uppercase_variations = this.uppercase_variations(match);\n match.l33t_variations = this.l33t_variations(match);\n reversed_variations = match.reversed && 2 || 1;\n return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n },\n START_UPPER: /^[A-Z][^A-Z]+$/,\n END_UPPER: /^[^A-Z]+[A-Z]$/,\n ALL_UPPER: /^[^a-z]+$/,\n ALL_LOWER: /^[^A-Z]+$/,\n uppercase_variations: function(match) {\n var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;\n word = match.token;\n if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n return 1;\n }\n ref = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n for (o = 0, len = ref.length; o < len; o++) {\n regex = ref[o];\n if (word.match(regex)) {\n return 2;\n }\n }\n U = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[A-Z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n L = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[a-z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n variations = 0;\n for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {\n variations += this.nCk(U + L, i);\n }\n return variations;\n },\n l33t_variations: function(match) {\n var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;\n if (!match.l33t) {\n return 1;\n }\n variations = 1;\n ref = match.sub;\n for (subbed in ref) {\n unsubbed = ref[subbed];\n chrs = match.token.toLowerCase().split('');\n S = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === subbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n U = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === unsubbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n if (S === 0 || U === 0) {\n variations *= 2;\n } else {\n p = Math.min(U, S);\n possibilities = 0;\n for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {\n possibilities += this.nCk(U + S, i);\n }\n variations *= possibilities;\n }\n }\n return variations;\n }\n};\n\nmodule.exports = scoring;\n\n//# sourceMappingURL=scoring.js.map\n","// Generated by CoffeeScript 1.10.0\nvar time_estimates;\n\ntime_estimates = {\n estimate_attack_times: function(guesses) {\n var crack_times_display, crack_times_seconds, scenario, seconds;\n crack_times_seconds = {\n online_throttling_100_per_hour: guesses / (100 / 3600),\n online_no_throttling_10_per_second: guesses / 10,\n offline_slow_hashing_1e4_per_second: guesses / 1e4,\n offline_fast_hashing_1e10_per_second: guesses / 1e10\n };\n crack_times_display = {};\n for (scenario in crack_times_seconds) {\n seconds = crack_times_seconds[scenario];\n crack_times_display[scenario] = this.display_time(seconds);\n }\n return {\n crack_times_seconds: crack_times_seconds,\n crack_times_display: crack_times_display,\n score: this.guesses_to_score(guesses)\n };\n },\n guesses_to_score: function(guesses) {\n var DELTA;\n DELTA = 5;\n if (guesses < 1e3 + DELTA) {\n return 0;\n } else if (guesses < 1e6 + DELTA) {\n return 1;\n } else if (guesses < 1e8 + DELTA) {\n return 2;\n } else if (guesses < 1e10 + DELTA) {\n return 3;\n } else {\n return 4;\n }\n },\n display_time: function(seconds) {\n var base, century, day, display_num, display_str, hour, minute, month, ref, year;\n minute = 60;\n hour = minute * 60;\n day = hour * 24;\n month = day * 31;\n year = month * 12;\n century = year * 100;\n ref = seconds < 1 ? [null, 'less than a second'] : seconds < minute ? (base = Math.round(seconds), [base, base + \" second\"]) : seconds < hour ? (base = Math.round(seconds / minute), [base, base + \" minute\"]) : seconds < day ? (base = Math.round(seconds / hour), [base, base + \" hour\"]) : seconds < month ? (base = Math.round(seconds / day), [base, base + \" day\"]) : seconds < year ? (base = Math.round(seconds / month), [base, base + \" month\"]) : seconds < century ? (base = Math.round(seconds / year), [base, base + \" year\"]) : [null, 'centuries'], display_num = ref[0], display_str = ref[1];\n if ((display_num != null) && display_num !== 1) {\n display_str += 's';\n }\n return display_str;\n }\n};\n\nmodule.exports = time_estimates;\n\n//# sourceMappingURL=time_estimates.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}