{"/home/runner/work/antiflux/antiflux/src/crypto.ts": {"path":"/home/runner/work/antiflux/antiflux/src/crypto.ts","statementMap":{"0":{"start":{"line":4,"column":13},"end":{"line":4,"column":26}},"1":{"start":{"line":6,"column":16},"end":{"line":28,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":27,"column":3}},"3":{"start":{"line":8,"column":4},"end":{"line":23,"column":5}},"4":{"start":{"line":9,"column":6},"end":{"line":9,"column":59}},"5":{"start":{"line":11,"column":6},"end":{"line":22,"column":7}},"6":{"start":{"line":12,"column":8},"end":{"line":12,"column":68}},"7":{"start":{"line":12,"column":39},"end":{"line":12,"column":68}},"8":{"start":{"line":13,"column":19},"end":{"line":13,"column":41}},"9":{"start":{"line":14,"column":23},"end":{"line":14,"column":59}},"10":{"start":{"line":15,"column":18},"end":{"line":15,"column":64}},"11":{"start":{"line":16,"column":8},"end":{"line":16,"column":37}},"12":{"start":{"line":17,"column":21},"end":{"line":17,"column":58}},"13":{"start":{"line":18,"column":8},"end":{"line":18,"column":19}},"14":{"start":{"line":20,"column":8},"end":{"line":20,"column":64}},"15":{"start":{"line":20,"column":31},"end":{"line":20,"column":64}},"16":{"start":{"line":21,"column":8},"end":{"line":21,"column":14}},"17":{"start":{"line":25,"column":4},"end":{"line":25,"column":22}},"18":{"start":{"line":26,"column":4},"end":{"line":26,"column":13}},"19":{"start":{"line":30,"column":16},"end":{"line":51,"column":1}},"20":{"start":{"line":31,"column":2},"end":{"line":50,"column":3}},"21":{"start":{"line":32,"column":4},"end":{"line":46,"column":5}},"22":{"start":{"line":33,"column":6},"end":{"line":33,"column":59}},"23":{"start":{"line":35,"column":6},"end":{"line":45,"column":7}},"24":{"start":{"line":36,"column":33},"end":{"line":36,"column":37}},"25":{"start":{"line":37,"column":25},"end":{"line":37,"column":76}},"26":{"start":{"line":38,"column":8},"end":{"line":38,"column":45}},"27":{"start":{"line":39,"column":21},"end":{"line":39,"column":59}},"28":{"start":{"line":40,"column":8},"end":{"line":40,"column":40}},"29":{"start":{"line":41,"column":8},"end":{"line":41,"column":33}},"30":{"start":{"line":43,"column":8},"end":{"line":43,"column":64}},"31":{"start":{"line":43,"column":31},"end":{"line":43,"column":64}},"32":{"start":{"line":44,"column":8},"end":{"line":44,"column":14}},"33":{"start":{"line":48,"column":4},"end":{"line":48,"column":22}},"34":{"start":{"line":49,"column":4},"end":{"line":49,"column":13}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":17}},"loc":{"start":{"line":6,"column":71},"end":{"line":28,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":16},"end":{"line":30,"column":17}},"loc":{"start":{"line":30,"column":69},"end":{"line":51,"column":1}},"line":30}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":23,"column":5}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":23,"column":5}},{"start":{"line":10,"column":11},"end":{"line":23,"column":5}}],"line":8},"1":{"loc":{"start":{"line":11,"column":6},"end":{"line":22,"column":7}},"type":"if","locations":[{"start":{"line":11,"column":6},"end":{"line":22,"column":7}},{"start":{"line":19,"column":13},"end":{"line":22,"column":7}}],"line":11},"2":{"loc":{"start":{"line":12,"column":8},"end":{"line":12,"column":68}},"type":"if","locations":[{"start":{"line":12,"column":8},"end":{"line":12,"column":68}},{"start":{},"end":{}}],"line":12},"3":{"loc":{"start":{"line":20,"column":8},"end":{"line":20,"column":64}},"type":"if","locations":[{"start":{"line":20,"column":8},"end":{"line":20,"column":64}},{"start":{},"end":{}}],"line":20},"4":{"loc":{"start":{"line":32,"column":4},"end":{"line":46,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":46,"column":5}},{"start":{"line":34,"column":11},"end":{"line":46,"column":5}}],"line":32},"5":{"loc":{"start":{"line":35,"column":6},"end":{"line":45,"column":7}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":45,"column":7}},{"start":{"line":42,"column":13},"end":{"line":45,"column":7}}],"line":35},"6":{"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":64}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":64}},{"start":{},"end":{}}],"line":43}},"s":{"0":6,"1":6,"2":7,"3":7,"4":1,"5":6,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":1,"15":0,"16":1,"17":1,"18":1,"19":6,"20":4,"21":4,"22":1,"23":3,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":1,"31":0,"32":1,"33":1,"34":1},"f":{"0":7,"1":4},"b":{"0":[1,6],"1":[5,1],"2":[5,0],"3":[0,1],"4":[1,3],"5":[2,1],"6":[0,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ebc30e426c7ddfd209ef75a3b4365c72d47042c9"} | ||
,"/home/runner/work/antiflux/antiflux/src/io.ts": {"path":"/home/runner/work/antiflux/antiflux/src/io.ts","statementMap":{"0":{"start":{"line":5,"column":17},"end":{"line":5,"column":32}},"1":{"start":{"line":6,"column":18},"end":{"line":6,"column":34}},"2":{"start":{"line":9,"column":2},"end":{"line":14,"column":10}},"3":{"start":{"line":12,"column":6},"end":{"line":12,"column":28}},"4":{"start":{"line":13,"column":6},"end":{"line":13,"column":19}},"5":{"start":{"line":17,"column":14},"end":{"line":27,"column":1}},"6":{"start":{"line":18,"column":2},"end":{"line":26,"column":3}},"7":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"8":{"start":{"line":20,"column":6},"end":{"line":20,"column":46}},"9":{"start":{"line":23,"column":4},"end":{"line":23,"column":49}},"10":{"start":{"line":25,"column":4},"end":{"line":25,"column":46}},"11":{"start":{"line":29,"column":13},"end":{"line":46,"column":1}},"12":{"start":{"line":30,"column":2},"end":{"line":45,"column":3}},"13":{"start":{"line":31,"column":4},"end":{"line":42,"column":5}},"14":{"start":{"line":32,"column":50},"end":{"line":32,"column":72}},"15":{"start":{"line":33,"column":6},"end":{"line":33,"column":44}},"16":{"start":{"line":35,"column":6},"end":{"line":37,"column":7}},"17":{"start":{"line":36,"column":8},"end":{"line":36,"column":41}},"18":{"start":{"line":39,"column":6},"end":{"line":39,"column":23}},"19":{"start":{"line":41,"column":6},"end":{"line":41,"column":44}},"20":{"start":{"line":44,"column":4},"end":{"line":44,"column":22}}},"fnMap":{"0":{"name":"sort","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":13}},"loc":{"start":{"line":8,"column":19},"end":{"line":15,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":12},"end":{"line":11,"column":13}},"loc":{"start":{"line":11,"column":35},"end":{"line":14,"column":5}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":14},"end":{"line":17,"column":15}},"loc":{"start":{"line":17,"column":82},"end":{"line":27,"column":1}},"line":17},"3":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":13},"end":{"line":29,"column":14}},"loc":{"start":{"line":29,"column":60},"end":{"line":46,"column":1}},"line":29}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":21,"column":5}},{"start":{},"end":{}}],"line":19},"1":{"loc":{"start":{"line":31,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":42,"column":5}},{"start":{"line":40,"column":11},"end":{"line":42,"column":5}}],"line":31},"2":{"loc":{"start":{"line":35,"column":6},"end":{"line":37,"column":7}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":37,"column":7}},{"start":{},"end":{}}],"line":35}},"s":{"0":6,"1":6,"2":5,"3":8,"4":8,"5":6,"6":14,"7":14,"8":2,"9":14,"10":0,"11":6,"12":6,"13":6,"14":5,"15":5,"16":5,"17":1,"18":5,"19":1,"20":1},"f":{"0":5,"1":8,"2":14,"3":6},"b":{"0":[2,12],"1":[5,1],"2":[1,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d52297102faad6a96d287dd4008d32edeb65a680"} | ||
,"/home/runner/work/antiflux/antiflux/src/main.ts": {"path":"/home/runner/work/antiflux/antiflux/src/main.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}} | ||
,"/home/runner/work/antiflux/antiflux/src/store.ts": {"path":"/home/runner/work/antiflux/antiflux/src/store.ts","statementMap":{"0":{"start":{"line":13,"column":18},"end":{"line":13,"column":20}},"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":26}},"2":{"start":{"line":17,"column":4},"end":{"line":17,"column":51}},"3":{"start":{"line":17,"column":23},"end":{"line":17,"column":51}},"4":{"start":{"line":18,"column":4},"end":{"line":18,"column":35}},"5":{"start":{"line":21,"column":4},"end":{"line":33,"column":5}},"6":{"start":{"line":22,"column":6},"end":{"line":24,"column":8}},"7":{"start":{"line":23,"column":8},"end":{"line":23,"column":73}},"8":{"start":{"line":26,"column":6},"end":{"line":28,"column":8}},"9":{"start":{"line":27,"column":8},"end":{"line":27,"column":67}},"10":{"start":{"line":30,"column":6},"end":{"line":32,"column":8}},"11":{"start":{"line":31,"column":8},"end":{"line":31,"column":46}},"12":{"start":{"line":35,"column":4},"end":{"line":48,"column":5}},"13":{"start":{"line":36,"column":19},"end":{"line":43,"column":7}},"14":{"start":{"line":37,"column":21},"end":{"line":37,"column":32}},"15":{"start":{"line":38,"column":8},"end":{"line":41,"column":9}},"16":{"start":{"line":39,"column":10},"end":{"line":39,"column":41}},"17":{"start":{"line":40,"column":10},"end":{"line":40,"column":27}},"18":{"start":{"line":42,"column":8},"end":{"line":42,"column":64}},"19":{"start":{"line":45,"column":6},"end":{"line":45,"column":40}},"20":{"start":{"line":45,"column":33},"end":{"line":45,"column":39}},"21":{"start":{"line":46,"column":6},"end":{"line":46,"column":43}},"22":{"start":{"line":46,"column":36},"end":{"line":46,"column":42}},"23":{"start":{"line":47,"column":6},"end":{"line":47,"column":42}},"24":{"start":{"line":47,"column":35},"end":{"line":47,"column":41}},"25":{"start":{"line":51,"column":4},"end":{"line":62,"column":5}},"26":{"start":{"line":52,"column":19},"end":{"line":52,"column":60}},"27":{"start":{"line":54,"column":6},"end":{"line":56,"column":7}},"28":{"start":{"line":55,"column":8},"end":{"line":55,"column":32}},"29":{"start":{"line":59,"column":6},"end":{"line":61,"column":7}},"30":{"start":{"line":60,"column":8},"end":{"line":60,"column":40}},"31":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"32":{"start":{"line":65,"column":6},"end":{"line":65,"column":28}},"33":{"start":{"line":71,"column":4},"end":{"line":84,"column":5}},"34":{"start":{"line":72,"column":6},"end":{"line":72,"column":28}},"35":{"start":{"line":74,"column":6},"end":{"line":81,"column":7}},"36":{"start":{"line":75,"column":21},"end":{"line":75,"column":35}},"37":{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},"38":{"start":{"line":78,"column":10},"end":{"line":78,"column":68}},"39":{"start":{"line":80,"column":8},"end":{"line":80,"column":22}},"40":{"start":{"line":83,"column":6},"end":{"line":83,"column":22}},"41":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"42":{"start":{"line":90,"column":6},"end":{"line":90,"column":43}},"43":{"start":{"line":96,"column":31},"end":{"line":96,"column":60}},"44":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"45":{"start":{"line":102,"column":18},"end":{"line":102,"column":39}},"46":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"47":{"start":{"line":105,"column":6},"end":{"line":105,"column":58}},"48":{"start":{"line":107,"column":6},"end":{"line":107,"column":37}},"49":{"start":{"line":110,"column":4},"end":{"line":110,"column":49}},"50":{"start":{"line":115,"column":4},"end":{"line":124,"column":5}},"51":{"start":{"line":116,"column":19},"end":{"line":116,"column":33}},"52":{"start":{"line":117,"column":20},"end":{"line":117,"column":22}},"53":{"start":{"line":118,"column":6},"end":{"line":120,"column":7}},"54":{"start":{"line":119,"column":8},"end":{"line":119,"column":66}},"55":{"start":{"line":121,"column":6},"end":{"line":121,"column":34}},"56":{"start":{"line":123,"column":6},"end":{"line":123,"column":66}},"57":{"start":{"line":129,"column":18},"end":{"line":129,"column":31}},"58":{"start":{"line":130,"column":4},"end":{"line":130,"column":26}},"59":{"start":{"line":131,"column":4},"end":{"line":131,"column":45}},"60":{"start":{"line":136,"column":4},"end":{"line":138,"column":5}},"61":{"start":{"line":137,"column":6},"end":{"line":137,"column":28}},"62":{"start":{"line":139,"column":4},"end":{"line":139,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":15,"column":102},"end":{"line":67,"column":3}},"line":15},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":27},"end":{"line":22,"column":28}},"loc":{"start":{"line":22,"column":35},"end":{"line":24,"column":7}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":26,"column":30},"end":{"line":26,"column":31}},"loc":{"start":{"line":26,"column":38},"end":{"line":28,"column":7}},"line":26},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":29},"end":{"line":30,"column":30}},"loc":{"start":{"line":30,"column":35},"end":{"line":32,"column":7}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":36,"column":19},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":25},"end":{"line":43,"column":7}},"line":36},"5":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":27},"end":{"line":45,"column":28}},"loc":{"start":{"line":45,"column":33},"end":{"line":45,"column":39}},"line":45},"6":{"name":"(anonymous_6)","decl":{"start":{"line":46,"column":30},"end":{"line":46,"column":31}},"loc":{"start":{"line":46,"column":36},"end":{"line":46,"column":42}},"line":46},"7":{"name":"(anonymous_7)","decl":{"start":{"line":47,"column":29},"end":{"line":47,"column":30}},"loc":{"start":{"line":47,"column":35},"end":{"line":47,"column":41}},"line":47},"8":{"name":"(anonymous_8)","decl":{"start":{"line":70,"column":2},"end":{"line":70,"column":3}},"loc":{"start":{"line":70,"column":19},"end":{"line":85,"column":3}},"line":70},"9":{"name":"(anonymous_9)","decl":{"start":{"line":88,"column":2},"end":{"line":88,"column":3}},"loc":{"start":{"line":88,"column":22},"end":{"line":92,"column":3}},"line":88},"10":{"name":"(anonymous_10)","decl":{"start":{"line":95,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":95,"column":17},"end":{"line":98,"column":3}},"line":95},"11":{"name":"(anonymous_11)","decl":{"start":{"line":101,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":101,"column":41},"end":{"line":111,"column":3}},"line":101},"12":{"name":"(anonymous_12)","decl":{"start":{"line":114,"column":2},"end":{"line":114,"column":3}},"loc":{"start":{"line":114,"column":28},"end":{"line":125,"column":3}},"line":114},"13":{"name":"(anonymous_13)","decl":{"start":{"line":128,"column":2},"end":{"line":128,"column":3}},"loc":{"start":{"line":128,"column":28},"end":{"line":132,"column":3}},"line":128},"14":{"name":"(anonymous_14)","decl":{"start":{"line":135,"column":2},"end":{"line":135,"column":3}},"loc":{"start":{"line":135,"column":16},"end":{"line":140,"column":3}},"line":135}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":14},"end":{"line":15,"column":39}},"type":"default-arg","locations":[{"start":{"line":15,"column":37},"end":{"line":15,"column":39}}],"line":15},"1":{"loc":{"start":{"line":15,"column":41},"end":{"line":15,"column":62}},"type":"default-arg","locations":[{"start":{"line":15,"column":60},"end":{"line":15,"column":62}}],"line":15},"2":{"loc":{"start":{"line":15,"column":64},"end":{"line":15,"column":100}},"type":"default-arg","locations":[{"start":{"line":15,"column":98},"end":{"line":15,"column":100}}],"line":15},"3":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":51}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":17,"column":51}},{"start":{},"end":{}}],"line":17},"4":{"loc":{"start":{"line":21,"column":4},"end":{"line":33,"column":5}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":33,"column":5}},{"start":{},"end":{}}],"line":21},"5":{"loc":{"start":{"line":35,"column":4},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":48,"column":5}},{"start":{},"end":{}}],"line":35},"6":{"loc":{"start":{"line":38,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":41,"column":9}},{"start":{},"end":{}}],"line":38},"7":{"loc":{"start":{"line":51,"column":4},"end":{"line":62,"column":5}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":62,"column":5}},{"start":{"line":57,"column":11},"end":{"line":62,"column":5}}],"line":51},"8":{"loc":{"start":{"line":51,"column":8},"end":{"line":51,"column":54}},"type":"binary-expr","locations":[{"start":{"line":51,"column":8},"end":{"line":51,"column":23}},{"start":{"line":51,"column":27},"end":{"line":51,"column":54}}],"line":51},"9":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},{"start":{},"end":{}}],"line":64},"10":{"loc":{"start":{"line":71,"column":4},"end":{"line":84,"column":5}},"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":84,"column":5}},{"start":{"line":73,"column":11},"end":{"line":84,"column":5}}],"line":71},"11":{"loc":{"start":{"line":74,"column":6},"end":{"line":81,"column":7}},"type":"if","locations":[{"start":{"line":74,"column":6},"end":{"line":81,"column":7}},{"start":{},"end":{}}],"line":74},"12":{"loc":{"start":{"line":78,"column":20},"end":{"line":78,"column":68}},"type":"cond-expr","locations":[{"start":{"line":78,"column":30},"end":{"line":78,"column":46}},{"start":{"line":78,"column":49},"end":{"line":78,"column":68}}],"line":78},"13":{"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":91,"column":5}},{"start":{},"end":{}}],"line":89},"14":{"loc":{"start":{"line":89,"column":8},"end":{"line":89,"column":41}},"type":"binary-expr","locations":[{"start":{"line":89,"column":8},"end":{"line":89,"column":20}},{"start":{"line":89,"column":24},"end":{"line":89,"column":41}}],"line":89},"15":{"loc":{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":108,"column":5}},{"start":{"line":106,"column":11},"end":{"line":108,"column":5}}],"line":104},"16":{"loc":{"start":{"line":115,"column":4},"end":{"line":124,"column":5}},"type":"if","locations":[{"start":{"line":115,"column":4},"end":{"line":124,"column":5}},{"start":{"line":122,"column":11},"end":{"line":124,"column":5}}],"line":115},"17":{"loc":{"start":{"line":119,"column":18},"end":{"line":119,"column":66}},"type":"cond-expr","locations":[{"start":{"line":119,"column":28},"end":{"line":119,"column":44}},{"start":{"line":119,"column":47},"end":{"line":119,"column":66}}],"line":119}},"s":{"0":14,"1":14,"2":14,"3":3,"4":14,"5":14,"6":3,"7":6,"8":3,"9":2,"10":3,"11":2,"12":14,"13":5,"14":12,"15":12,"16":6,"17":6,"18":12,"19":5,"20":10,"21":5,"22":1,"23":5,"24":1,"25":14,"26":1,"27":1,"28":2,"29":13,"30":24,"31":14,"32":14,"33":38,"34":4,"35":34,"36":5,"37":5,"38":15,"39":5,"40":29,"41":1,"42":1,"43":15,"44":15,"45":32,"46":32,"47":2,"48":30,"49":32,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2},"f":{"0":14,"1":6,"2":2,"3":2,"4":12,"5":10,"6":1,"7":1,"8":38,"9":1,"10":15,"11":32,"12":1,"13":2,"14":2},"b":{"0":[1],"1":[6],"2":[13],"3":[3,11],"4":[3,11],"5":[5,9],"6":[6,6],"7":[1,13],"8":[14,5],"9":[14,0],"10":[4,34],"11":[5,29],"12":[10,5],"13":[1,0],"14":[1,1],"15":[2,30],"16":[0,1],"17":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2d0b820b0a30765c1186c42102182772dcc7aebc"} | ||
,"/home/runner/work/antiflux/antiflux/src/main.ts": {"path":"/home/runner/work/antiflux/antiflux/src/main.ts","statementMap":{"0":{"start":{"line":6,"column":4},"end":{"line":6,"column":11}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":3}},"loc":{"start":{"line":5,"column":16},"end":{"line":7,"column":3}},"line":5}},"branchMap":{},"s":{"0":14},"f":{"0":14},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2da74cc7c6dad745586040c4d43118fdfa49ef2e"} | ||
,"/home/runner/work/antiflux/antiflux/src/store.ts": {"path":"/home/runner/work/antiflux/antiflux/src/store.ts","statementMap":{"0":{"start":{"line":12,"column":18},"end":{"line":12,"column":20}},"1":{"start":{"line":15,"column":4},"end":{"line":15,"column":26}},"2":{"start":{"line":16,"column":4},"end":{"line":16,"column":51}},"3":{"start":{"line":16,"column":23},"end":{"line":16,"column":51}},"4":{"start":{"line":17,"column":4},"end":{"line":17,"column":28}},"5":{"start":{"line":20,"column":4},"end":{"line":32,"column":5}},"6":{"start":{"line":21,"column":6},"end":{"line":23,"column":8}},"7":{"start":{"line":22,"column":8},"end":{"line":22,"column":73}},"8":{"start":{"line":25,"column":6},"end":{"line":27,"column":8}},"9":{"start":{"line":26,"column":8},"end":{"line":26,"column":67}},"10":{"start":{"line":29,"column":6},"end":{"line":31,"column":8}},"11":{"start":{"line":30,"column":8},"end":{"line":30,"column":46}},"12":{"start":{"line":34,"column":4},"end":{"line":47,"column":5}},"13":{"start":{"line":35,"column":19},"end":{"line":42,"column":7}},"14":{"start":{"line":36,"column":21},"end":{"line":36,"column":32}},"15":{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},"16":{"start":{"line":38,"column":10},"end":{"line":38,"column":41}},"17":{"start":{"line":39,"column":10},"end":{"line":39,"column":27}},"18":{"start":{"line":41,"column":8},"end":{"line":41,"column":64}},"19":{"start":{"line":44,"column":6},"end":{"line":44,"column":40}},"20":{"start":{"line":44,"column":33},"end":{"line":44,"column":39}},"21":{"start":{"line":45,"column":6},"end":{"line":45,"column":43}},"22":{"start":{"line":45,"column":36},"end":{"line":45,"column":42}},"23":{"start":{"line":46,"column":6},"end":{"line":46,"column":42}},"24":{"start":{"line":46,"column":35},"end":{"line":46,"column":41}},"25":{"start":{"line":50,"column":4},"end":{"line":61,"column":5}},"26":{"start":{"line":51,"column":19},"end":{"line":51,"column":60}},"27":{"start":{"line":53,"column":6},"end":{"line":55,"column":7}},"28":{"start":{"line":54,"column":8},"end":{"line":54,"column":32}},"29":{"start":{"line":58,"column":6},"end":{"line":60,"column":7}},"30":{"start":{"line":59,"column":8},"end":{"line":59,"column":40}},"31":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"32":{"start":{"line":64,"column":6},"end":{"line":64,"column":28}},"33":{"start":{"line":70,"column":4},"end":{"line":83,"column":5}},"34":{"start":{"line":71,"column":6},"end":{"line":71,"column":28}},"35":{"start":{"line":73,"column":6},"end":{"line":80,"column":7}},"36":{"start":{"line":74,"column":21},"end":{"line":74,"column":35}},"37":{"start":{"line":76,"column":8},"end":{"line":78,"column":9}},"38":{"start":{"line":77,"column":10},"end":{"line":77,"column":68}},"39":{"start":{"line":79,"column":8},"end":{"line":79,"column":22}},"40":{"start":{"line":82,"column":6},"end":{"line":82,"column":22}},"41":{"start":{"line":88,"column":4},"end":{"line":90,"column":5}},"42":{"start":{"line":89,"column":6},"end":{"line":89,"column":43}},"43":{"start":{"line":95,"column":31},"end":{"line":95,"column":60}},"44":{"start":{"line":96,"column":4},"end":{"line":96,"column":21}},"45":{"start":{"line":101,"column":18},"end":{"line":101,"column":39}},"46":{"start":{"line":103,"column":4},"end":{"line":107,"column":5}},"47":{"start":{"line":104,"column":6},"end":{"line":104,"column":58}},"48":{"start":{"line":106,"column":6},"end":{"line":106,"column":37}},"49":{"start":{"line":109,"column":4},"end":{"line":109,"column":49}},"50":{"start":{"line":114,"column":4},"end":{"line":123,"column":5}},"51":{"start":{"line":115,"column":19},"end":{"line":115,"column":33}},"52":{"start":{"line":116,"column":20},"end":{"line":116,"column":22}},"53":{"start":{"line":117,"column":6},"end":{"line":119,"column":7}},"54":{"start":{"line":118,"column":8},"end":{"line":118,"column":66}},"55":{"start":{"line":120,"column":6},"end":{"line":120,"column":34}},"56":{"start":{"line":122,"column":6},"end":{"line":122,"column":66}},"57":{"start":{"line":128,"column":18},"end":{"line":128,"column":31}},"58":{"start":{"line":129,"column":4},"end":{"line":129,"column":26}},"59":{"start":{"line":130,"column":4},"end":{"line":130,"column":45}},"60":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"61":{"start":{"line":136,"column":6},"end":{"line":136,"column":28}},"62":{"start":{"line":138,"column":4},"end":{"line":138,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":14,"column":102},"end":{"line":66,"column":3}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":27},"end":{"line":21,"column":28}},"loc":{"start":{"line":21,"column":35},"end":{"line":23,"column":7}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":30},"end":{"line":25,"column":31}},"loc":{"start":{"line":25,"column":38},"end":{"line":27,"column":7}},"line":25},"3":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":29},"end":{"line":29,"column":30}},"loc":{"start":{"line":29,"column":35},"end":{"line":31,"column":7}},"line":29},"4":{"name":"(anonymous_4)","decl":{"start":{"line":35,"column":19},"end":{"line":35,"column":20}},"loc":{"start":{"line":35,"column":25},"end":{"line":42,"column":7}},"line":35},"5":{"name":"(anonymous_5)","decl":{"start":{"line":44,"column":27},"end":{"line":44,"column":28}},"loc":{"start":{"line":44,"column":33},"end":{"line":44,"column":39}},"line":44},"6":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":30},"end":{"line":45,"column":31}},"loc":{"start":{"line":45,"column":36},"end":{"line":45,"column":42}},"line":45},"7":{"name":"(anonymous_7)","decl":{"start":{"line":46,"column":29},"end":{"line":46,"column":30}},"loc":{"start":{"line":46,"column":35},"end":{"line":46,"column":41}},"line":46},"8":{"name":"(anonymous_8)","decl":{"start":{"line":69,"column":2},"end":{"line":69,"column":3}},"loc":{"start":{"line":69,"column":19},"end":{"line":84,"column":3}},"line":69},"9":{"name":"(anonymous_9)","decl":{"start":{"line":87,"column":2},"end":{"line":87,"column":3}},"loc":{"start":{"line":87,"column":22},"end":{"line":91,"column":3}},"line":87},"10":{"name":"(anonymous_10)","decl":{"start":{"line":94,"column":2},"end":{"line":94,"column":3}},"loc":{"start":{"line":94,"column":17},"end":{"line":97,"column":3}},"line":94},"11":{"name":"(anonymous_11)","decl":{"start":{"line":100,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":100,"column":41},"end":{"line":110,"column":3}},"line":100},"12":{"name":"(anonymous_12)","decl":{"start":{"line":113,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":113,"column":28},"end":{"line":124,"column":3}},"line":113},"13":{"name":"(anonymous_13)","decl":{"start":{"line":127,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":127,"column":28},"end":{"line":131,"column":3}},"line":127},"14":{"name":"(anonymous_14)","decl":{"start":{"line":134,"column":2},"end":{"line":134,"column":3}},"loc":{"start":{"line":134,"column":16},"end":{"line":139,"column":3}},"line":134}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":14},"end":{"line":14,"column":39}},"type":"default-arg","locations":[{"start":{"line":14,"column":37},"end":{"line":14,"column":39}}],"line":14},"1":{"loc":{"start":{"line":14,"column":41},"end":{"line":14,"column":62}},"type":"default-arg","locations":[{"start":{"line":14,"column":60},"end":{"line":14,"column":62}}],"line":14},"2":{"loc":{"start":{"line":14,"column":64},"end":{"line":14,"column":100}},"type":"default-arg","locations":[{"start":{"line":14,"column":98},"end":{"line":14,"column":100}}],"line":14},"3":{"loc":{"start":{"line":16,"column":4},"end":{"line":16,"column":51}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":16,"column":51}},{"start":{},"end":{}}],"line":16},"4":{"loc":{"start":{"line":20,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":32,"column":5}},{"start":{},"end":{}}],"line":20},"5":{"loc":{"start":{"line":34,"column":4},"end":{"line":47,"column":5}},"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":47,"column":5}},{"start":{},"end":{}}],"line":34},"6":{"loc":{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},{"start":{},"end":{}}],"line":37},"7":{"loc":{"start":{"line":50,"column":4},"end":{"line":61,"column":5}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":61,"column":5}},{"start":{"line":56,"column":11},"end":{"line":61,"column":5}}],"line":50},"8":{"loc":{"start":{"line":50,"column":8},"end":{"line":50,"column":54}},"type":"binary-expr","locations":[{"start":{"line":50,"column":8},"end":{"line":50,"column":23}},{"start":{"line":50,"column":27},"end":{"line":50,"column":54}}],"line":50},"9":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},{"start":{},"end":{}}],"line":63},"10":{"loc":{"start":{"line":70,"column":4},"end":{"line":83,"column":5}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":83,"column":5}},{"start":{"line":72,"column":11},"end":{"line":83,"column":5}}],"line":70},"11":{"loc":{"start":{"line":73,"column":6},"end":{"line":80,"column":7}},"type":"if","locations":[{"start":{"line":73,"column":6},"end":{"line":80,"column":7}},{"start":{},"end":{}}],"line":73},"12":{"loc":{"start":{"line":77,"column":20},"end":{"line":77,"column":68}},"type":"cond-expr","locations":[{"start":{"line":77,"column":30},"end":{"line":77,"column":46}},{"start":{"line":77,"column":49},"end":{"line":77,"column":68}}],"line":77},"13":{"loc":{"start":{"line":88,"column":4},"end":{"line":90,"column":5}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":90,"column":5}},{"start":{},"end":{}}],"line":88},"14":{"loc":{"start":{"line":88,"column":8},"end":{"line":88,"column":41}},"type":"binary-expr","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":20}},{"start":{"line":88,"column":24},"end":{"line":88,"column":41}}],"line":88},"15":{"loc":{"start":{"line":103,"column":4},"end":{"line":107,"column":5}},"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":107,"column":5}},{"start":{"line":105,"column":11},"end":{"line":107,"column":5}}],"line":103},"16":{"loc":{"start":{"line":114,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":123,"column":5}},{"start":{"line":121,"column":11},"end":{"line":123,"column":5}}],"line":114},"17":{"loc":{"start":{"line":118,"column":18},"end":{"line":118,"column":66}},"type":"cond-expr","locations":[{"start":{"line":118,"column":28},"end":{"line":118,"column":44}},{"start":{"line":118,"column":47},"end":{"line":118,"column":66}}],"line":118}},"s":{"0":14,"1":14,"2":14,"3":3,"4":14,"5":14,"6":3,"7":6,"8":3,"9":2,"10":3,"11":2,"12":14,"13":5,"14":12,"15":12,"16":6,"17":6,"18":12,"19":5,"20":10,"21":5,"22":1,"23":5,"24":1,"25":14,"26":1,"27":1,"28":2,"29":13,"30":24,"31":14,"32":14,"33":38,"34":4,"35":34,"36":5,"37":5,"38":15,"39":5,"40":29,"41":1,"42":1,"43":15,"44":15,"45":32,"46":32,"47":2,"48":30,"49":32,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2},"f":{"0":14,"1":6,"2":2,"3":2,"4":12,"5":10,"6":1,"7":1,"8":38,"9":1,"10":15,"11":32,"12":1,"13":2,"14":2},"b":{"0":[1],"1":[6],"2":[13],"3":[3,11],"4":[3,11],"5":[5,9],"6":[6,6],"7":[1,13],"8":[14,5],"9":[14,0],"10":[4,34],"11":[5,29],"12":[10,5],"13":[1,0],"14":[1,1],"15":[2,30],"16":[0,1],"17":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b702d3e2716314d56bf812988bfdda43491603e1"} | ||
,"/home/runner/work/antiflux/antiflux/src/util.ts": {"path":"/home/runner/work/antiflux/antiflux/src/util.ts","statementMap":{"0":{"start":{"line":3,"column":16},"end":{"line":30,"column":1}},"1":{"start":{"line":4,"column":2},"end":{"line":29,"column":3}},"2":{"start":{"line":5,"column":17},"end":{"line":5,"column":34}},"3":{"start":{"line":6,"column":17},"end":{"line":6,"column":31}},"4":{"start":{"line":7,"column":17},"end":{"line":7,"column":19}},"5":{"start":{"line":9,"column":4},"end":{"line":28,"column":5}},"6":{"start":{"line":10,"column":14},"end":{"line":10,"column":15}},"7":{"start":{"line":12,"column":6},"end":{"line":15,"column":7}},"8":{"start":{"line":13,"column":8},"end":{"line":13,"column":36}},"9":{"start":{"line":14,"column":8},"end":{"line":14,"column":11}},"10":{"start":{"line":17,"column":6},"end":{"line":17,"column":80}},"11":{"start":{"line":19,"column":6},"end":{"line":19,"column":11}},"12":{"start":{"line":20,"column":6},"end":{"line":23,"column":7}},"13":{"start":{"line":21,"column":8},"end":{"line":21,"column":22}},"14":{"start":{"line":22,"column":8},"end":{"line":22,"column":11}},"15":{"start":{"line":25,"column":6},"end":{"line":25,"column":33}},"16":{"start":{"line":26,"column":6},"end":{"line":26,"column":50}},"17":{"start":{"line":27,"column":6},"end":{"line":27,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},"loc":{"start":{"line":3,"column":67},"end":{"line":30,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":2},"end":{"line":29,"column":3}},"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":29,"column":3}},{"start":{},"end":{}}],"line":4},"1":{"loc":{"start":{"line":9,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}],"line":9},"2":{"loc":{"start":{"line":17,"column":16},"end":{"line":17,"column":80}},"type":"cond-expr","locations":[{"start":{"line":17,"column":44},"end":{"line":17,"column":56}},{"start":{"line":17,"column":59},"end":{"line":17,"column":80}}],"line":17},"3":{"loc":{"start":{"line":27,"column":13},"end":{"line":27,"column":24}},"type":"binary-expr","locations":[{"start":{"line":27,"column":13},"end":{"line":27,"column":18}},{"start":{"line":27,"column":22},"end":{"line":27,"column":24}}],"line":27}},"s":{"0":5,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":4,"9":4,"10":2,"11":2,"12":2,"13":4,"14":4,"15":2,"16":2,"17":2},"f":{"0":2},"b":{"0":[2,0],"1":[2,0],"2":[2,0],"3":[2,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3730bd9feaeea4965544ae20d3c54654c493d6e7"} | ||
} |
@@ -9,3 +9,3 @@ /// <reference types="node" /> | ||
declare module "util" { | ||
import type { Schema } from "main"; | ||
import { Schema } from "main"; | ||
const deepset: (state: Schema, target: string, value: unknown) => Schema | undefined; | ||
@@ -15,6 +15,5 @@ export { deepset }; | ||
declare module "store" { | ||
import { EventEmitter } from 'events'; | ||
import type { Getter, Options, Schema } from "main"; | ||
export default class Store { | ||
watch: EventEmitter; | ||
import { Getter, Options, Schema, Watch } from "main"; | ||
export default class Antiflux { | ||
watch: Watch; | ||
getters?: { | ||
@@ -36,4 +35,7 @@ [key: string]: Getter; | ||
declare module "main" { | ||
import type { EventEmitter } from 'events'; | ||
import Store from "store"; | ||
import { EventEmitter } from 'events'; | ||
import Antiflux from "store"; | ||
export class Watch extends EventEmitter { | ||
constructor(); | ||
} | ||
interface Schema { | ||
@@ -55,5 +57,3 @@ [key: string]: unknown; | ||
} | ||
class Antiflux extends Store { | ||
} | ||
export type { Antiflux, Schema, Options, Getter, EncryptedData, EventEmitter }; | ||
export { Antiflux, Schema, Options, Getter, EncryptedData }; | ||
export default Antiflux; | ||
@@ -60,0 +60,0 @@ } |
@@ -1,2 +0,2 @@ | ||
var antiflux;System.register("io",["fs","crypto"],(function(t,e){"use strict";var s,r,i,n;return e&&e.id,{setters:[function(t){s=t},function(t){r=t}],execute:function(){i=s.default.readFileSync,n=s.default.writeFileSync,t("write",((t,e,s)=>{try{s&&(e=r.encrypt(s,e)),n(t,JSON.stringify(e),"utf8")}catch(t){throw new Error("Could not write to file")}})),t("read",((t,e)=>{try{if(s.default.existsSync(t)){let s=i(t,"utf8");return s=JSON.parse(s),e&&(s=r.decrypt(e,s)),n=s,Object.keys(n).sort().reduce((function(t,e){return t[e]=n[e],t}),{})}throw new Error("File does not exist")}catch(t){console.error(t)}var n}))}}})),System.register("util",[],(function(t,e){"use strict";return e&&e.id,{setters:[],execute:function(){t("deepset",((t,e,s)=>{if(e.includes(".")){const r=e.split("."),i=t[r[0]];let n="";if(r.length>1){let e=1;for(;e<r.length;)n+=`{ "${r[e]}": `,e++;for(n+="string"==typeof s?`"${s}"`:JSON.stringify(s),e=1;e<r.length;)n+=" }",e++;return n=JSON.parse(n),t[r[0]]=Object.assign(i,n),t||{}}}}))}}})),System.register("store",["events","fs","io","util"],(function(t,e){"use strict";var s,r,i,n;return e&&e.id,{setters:[function(t){s=t},function(t){r=t},function(t){i=t},function(t){n=t}],execute:function(){t("default",class{constructor(t={},e={},n={}){if(this.state={},this.options=e,e.debug&&process.env.DEBUG,this.watch=new s.EventEmitter,e.debug&&(this.watch.on("set",(t=>{console.log(`(Store) ${t.key}: ${t.prior} ➟ ${t.value}`)})),this.watch.on("delete",(t=>{console.log(`(Store) ${t.key}: ${t.prior} ➟ DELETED`)})),this.watch.on("clear",(()=>{console.log("(Store) STATE ➟ CLEARED")}))),e.persist){const t=()=>{const t=this.dump();e.debug&&(console.log("Writing to disk:"),console.log(t)),i.write(e.persist,t,e.encryptKey)};this.watch.on("set",(()=>t())),this.watch.on("delete",(()=>t())),this.watch.on("clear",(()=>t()))}if(e.persist&&r.existsSync(e.persist)){const t=i.read(e.persist,e.encryptKey);for(const e in t)this.set(e,t[e])}else for(const e in t)this.set(e,t[e]);n&&(this.getters=n)}get(t){if(this.state[t])return this.state[t];if(t.includes(".")){const e=t.split(".");let s;for(const t in e)s=s?s[e[t]]:this.state[e[t]];return s}}getter(t){if(this.getters&&this.getters[t])return this.getters[t](this.dump())}dump(){return Object.assign({},this.state)}set(t,e){const s=this.get(t);t.includes(".")?this.state=n.deepset(this.state,t,e):this.state[t]=e,this.watch.emit("set",{key:t,value:e,prior:s})}has(t){if(t.includes(".")){const e=t.split(".");let s={};for(const t in e)s=s?s[e[t]]:this.state[e[t]];return void 0!==s}return Object.prototype.hasOwnProperty.call(this.state,t)}delete(t){const e=this.get(t);delete this.state[t],this.watch.emit("delete",{key:t,prior:e})}clear(){for(const t in this.state)delete this.state[t];this.watch.emit("clear")}})}}})),System.register("main",["store"],(function(t,e){"use strict";return e&&e.id,{setters:[function(t){}],execute:function(){t("default",Antiflux)}}})),System.register("crypto",["crypto"],(function(t,e){"use strict";var s,r;return e&&e.id,{setters:[function(t){s=t}],execute:function(){r="aes-256-gcm",t("encrypt",((t,e)=>{try{if(t){if(e){"string"!=typeof e&&(e=JSON.stringify(e));const i=s.default.randomBytes(12),n=s.default.createCipheriv(r,t,i);let o=n.update(e,"utf8","base64");return o+=n.final("base64"),{enc:o,iv:i,tag:n.getAuthTag()}}return void(process.env.DEBUG&&console.log("No data to encrypt"))}throw new Error("You must specify an encryption key")}catch(t){throw console.error(t),t}})),t("decrypt",((t,e)=>{try{if(t){if(e){const{enc:i,iv:n,tag:o}=e,c=s.default.createDecipheriv(r,t,Buffer.from(n));c.setAuthTag(Buffer.from(o));let u=c.update(i,"base64","utf8");return u+=c.final("utf8"),JSON.parse(u)}return void(process.env.DEBUG&&console.log("No data to decrypt"))}throw new Error("You must specify an encryption key")}catch(t){throw console.error(t),t}}))}}})),antiflux={}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LE1BQU15RixHQUtsQixZQUZJbkQsUUFBUUMsSUFBSUMsT0FDWmhDLFFBQVFvQyxJQUFJLHVCQWJwQixNQUFNLElBQUk5QyxNQUFNLHNDQWtCeEIsTUFBT0QsR0FFSCxNQURBVyxRQUFRQyxNQUFNWixHQUNSQSxXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYW50aWZsdXgvLi9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlN5c3RlbS5yZWdpc3RlcihcImlvXCIsIFtcImZzXCIsIFwiY3J5cHRvXCJdLCBmdW5jdGlvbiAoZXhwb3J0c18xLCBjb250ZXh0XzEpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZnNfMSwgY3J5cHRvXzEsIHJlYWRGaWxlLCB3cml0ZUZpbGUsIHdyaXRlLCByZWFkO1xuICAgIHZhciBfX21vZHVsZU5hbWUgPSBjb250ZXh0XzEgJiYgY29udGV4dF8xLmlkO1xuICAgIGZ1bmN0aW9uIHNvcnQob2JqKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGtleSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2V0dGVyczogW1xuICAgICAgICAgICAgZnVuY3Rpb24gKGZzXzFfMSkge1xuICAgICAgICAgICAgICAgIGZzXzEgPSBmc18xXzE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGNyeXB0b18xXzEpIHtcbiAgICAgICAgICAgICAgICBjcnlwdG9fMSA9IGNyeXB0b18xXzE7XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlYWRGaWxlID0gZnNfMS5kZWZhdWx0LnJlYWRGaWxlU3luYztcbiAgICAgICAgICAgIHdyaXRlRmlsZSA9IGZzXzEuZGVmYXVsdC53cml0ZUZpbGVTeW5jO1xuICAgICAgICAgICAgd3JpdGUgPSAocGF0aCwgZGF0YSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNyeXB0b18xLmVuY3J5cHQoa2V5LCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSksICd1dGY4Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3Qgd3JpdGUgdG8gZmlsZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBleHBvcnRzXzEoXCJ3cml0ZVwiLCB3cml0ZSk7XG4gICAgICAgICAgICByZWFkID0gKHBhdGgsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmc18xLmRlZmF1bHQuZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSByZWFkRmlsZShwYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNyeXB0b18xLmRlY3J5cHQoa2V5LCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzb3J0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGRvZXMgbm90IGV4aXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGV4cG9ydHNfMShcInJlYWRcIiwgcmVhZCk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5TeXN0ZW0ucmVnaXN0ZXIoXCJ1dGlsXCIsIFtdLCBmdW5jdGlvbiAoZXhwb3J0c18yLCBjb250ZXh0XzIpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgZGVlcHNldDtcbiAgICB2YXIgX19tb2R1bGVOYW1lID0gY29udGV4dF8yICYmIGNvbnRleHRfMi5pZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZXR0ZXJzOiBbXSxcbiAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGVlcHNldCA9IChzdGF0ZSwgdGFyZ2V0LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gdGFyZ2V0LnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvb3QgPSBzdGF0ZVtrZXlzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlICs9IGB7IFwiJHtrZXlzW2ldfVwiOiBgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSArPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gYFwiJHt2YWx1ZX1cImAgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpIDwga2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgKz0gJyB9JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgPSBKU09OLnBhcnNlKHVwZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVtrZXlzWzBdXSA9IE9iamVjdC5hc3NpZ24ocm9vdCwgdXBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBleHBvcnRzXzIoXCJkZWVwc2V0XCIsIGRlZXBzZXQpO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuU3lzdGVtLnJlZ2lzdGVyKFwic3RvcmVcIiwgW1wiZXZlbnRzXCIsIFwiZnNcIiwgXCJpb1wiLCBcInV0aWxcIl0sIGZ1bmN0aW9uIChleHBvcnRzXzMsIGNvbnRleHRfMykge1xuICAgIFwidXNlIHN0cmljdFwiO1xuICAgIHZhciBldmVudHNfMSwgZnNfMiwgaW9fMSwgdXRpbF8xLCBTdG9yZTtcbiAgICB2YXIgX19tb2R1bGVOYW1lID0gY29udGV4dF8zICYmIGNvbnRleHRfMy5pZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZXR0ZXJzOiBbXG4gICAgICAgICAgICBmdW5jdGlvbiAoZXZlbnRzXzFfMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50c18xID0gZXZlbnRzXzFfMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZnNfMl8xKSB7XG4gICAgICAgICAgICAgICAgZnNfMiA9IGZzXzJfMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoaW9fMV8xKSB7XG4gICAgICAgICAgICAgICAgaW9fMSA9IGlvXzFfMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAodXRpbF8xXzEpIHtcbiAgICAgICAgICAgICAgICB1dGlsXzEgPSB1dGlsXzFfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgU3RvcmUgPSBjbGFzcyBTdG9yZSB7XG4gICAgICAgICAgICAgICAgY29uc3RydWN0b3IoaW5pdGlhbFN0YXRlID0ge30sIG9wdGlvbnMgPSB7fSwgZ2V0dGVycyA9IHt9KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndhdGNoID0gbmV3IGV2ZW50c18xLkV2ZW50RW1pdHRlcigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YXRjaC5vbignc2V0JywgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYChTdG9yZSkgJHtkYXRhLmtleX06ICR7ZGF0YS5wcmlvcn0g4p6fICR7ZGF0YS52YWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YXRjaC5vbignZGVsZXRlJywgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYChTdG9yZSkgJHtkYXRhLmtleX06ICR7ZGF0YS5wcmlvcn0g4p6fIERFTEVURURgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YXRjaC5vbignY2xlYXInLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYChTdG9yZSkgU1RBVEUg4p6fIENMRUFSRURgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnBlcnNpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHVtcCA9IHRoaXMuZHVtcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXcml0aW5nIHRvIGRpc2s6Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGR1bXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb18xLndyaXRlKG9wdGlvbnMucGVyc2lzdCwgZHVtcCwgb3B0aW9ucy5lbmNyeXB0S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhdGNoLm9uKCdzZXQnLCAoKSA9PiBzYXZlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YXRjaC5vbignZGVsZXRlJywgKCkgPT4gc2F2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2gub24oJ2NsZWFyJywgKCkgPT4gc2F2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wZXJzaXN0ICYmIGZzXzIuZXhpc3RzU3luYyhvcHRpb25zLnBlcnNpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gaW9fMS5yZWFkKG9wdGlvbnMucGVyc2lzdCwgb3B0aW9ucy5lbmNyeXB0S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChrZXksIGRhdGFba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0aWFsU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChrZXksIGluaXRpYWxTdGF0ZVtrZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0dGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXR0ZXJzID0gZ2V0dGVycztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrIGluIGtleXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQgPyBjdXJyZW50W2tleXNba11dIDogdGhpcy5zdGF0ZVtrZXlzW2tdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdldHRlcihndHIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0dGVycyAmJiB0aGlzLmdldHRlcnNbZ3RyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0dGVyc1tndHJdKHRoaXMuZHVtcCgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkdW1wKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbFN0YXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmlvciA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHV0aWxfMS5kZWVwc2V0KHRoaXMuc3RhdGUsIGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy53YXRjaC5lbWl0KCdzZXQnLCB7IGtleSwgdmFsdWUsIHByaW9yIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoYXMoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgayBpbiBrZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQgPyBjdXJyZW50W2tleXNba11dIDogdGhpcy5zdGF0ZVtrZXlzW2tdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuc3RhdGUsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlKGtleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmlvciA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2guZW1pdCgnZGVsZXRlJywgeyBrZXksIHByaW9yIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGVhcigpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuc3RhdGVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLndhdGNoLmVtaXQoJ2NsZWFyJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGV4cG9ydHNfMyhcImRlZmF1bHRcIiwgU3RvcmUpO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuU3lzdGVtLnJlZ2lzdGVyKFwibWFpblwiLCBbXCJzdG9yZVwiXSwgZnVuY3Rpb24gKGV4cG9ydHNfNCwgY29udGV4dF80KSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIHN0b3JlXzE7XG4gICAgdmFyIF9fbW9kdWxlTmFtZSA9IGNvbnRleHRfNCAmJiBjb250ZXh0XzQuaWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2V0dGVyczogW1xuICAgICAgICAgICAgZnVuY3Rpb24gKHN0b3JlXzFfMSkge1xuICAgICAgICAgICAgICAgIHN0b3JlXzEgPSBzdG9yZV8xXzE7XG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4cG9ydHNfNChcImRlZmF1bHRcIiwgQW50aWZsdXgpO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuU3lzdGVtLnJlZ2lzdGVyKFwiY3J5cHRvXCIsIFtcImNyeXB0b1wiXSwgZnVuY3Rpb24gKGV4cG9ydHNfNSwgY29udGV4dF81KSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgdmFyIGNyeXB0b18yLCBhbGdvLCBlbmNyeXB0LCBkZWNyeXB0O1xuICAgIHZhciBfX21vZHVsZU5hbWUgPSBjb250ZXh0XzUgJiYgY29udGV4dF81LmlkO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNldHRlcnM6IFtcbiAgICAgICAgICAgIGZ1bmN0aW9uIChjcnlwdG9fMl8xKSB7XG4gICAgICAgICAgICAgICAgY3J5cHRvXzIgPSBjcnlwdG9fMl8xO1xuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhbGdvID0gJ2Flcy0yNTYtZ2NtJztcbiAgICAgICAgICAgIGVuY3J5cHQgPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiBrZXknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdiA9IGNyeXB0b18yLmRlZmF1bHQucmFuZG9tQnl0ZXMoMTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNpcGhlciA9IGNyeXB0b18yLmRlZmF1bHQuY3JlYXRlQ2lwaGVyaXYoYWxnbywga2V5LCBpdik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVuYyA9IGNpcGhlci51cGRhdGUodmFsdWUsICd1dGY4JywgJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYyArPSBjaXBoZXIuZmluYWwoJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7IGVuYywgaXYsIHRhZzogY2lwaGVyLmdldEF1dGhUYWcoKSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52LkRFQlVHKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm8gZGF0YSB0byBlbmNyeXB0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGV4cG9ydHNfNShcImVuY3J5cHRcIiwgZW5jcnlwdCk7XG4gICAgICAgICAgICBkZWNyeXB0ID0gKGtleSwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiBrZXknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlbmMsIGl2LCB0YWcgfSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVjaXBoZXIgPSBjcnlwdG9fMi5kZWZhdWx0LmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBCdWZmZXIuZnJvbShpdikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lwaGVyLnNldEF1dGhUYWcoQnVmZmVyLmZyb20odGFnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dHB1dCA9IGRlY2lwaGVyLnVwZGF0ZShlbmMsICdiYXNlNjQnLCAndXRmOCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBkZWNpcGhlci5maW5hbCgndXRmOCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKG91dHB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuREVCVUcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBkYXRhIHRvIGRlY3J5cHQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZXhwb3J0c181KFwiZGVjcnlwdFwiLCBkZWNyeXB0KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJXRnBiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5cGJ5NTBjeUlzSWk0dUwzTnlZeTkxZEdsc0xuUnpJaXdpTGk0dmMzSmpMM04wYjNKbExuUnpJaXdpTGk0dmMzSmpMMjFoYVc0dWRITWlMQ0l1TGk5emNtTXZZM0o1Y0hSdkxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3U1VGUFFTeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRkhPMUZCUTJZc1QwRkJUeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXp0aFFVTndRaXhKUVVGSkxFVkJRVVU3WVVGRFRpeE5RVUZOTEVOQlFVTXNWVUZCVlN4TlFVRk5MRVZCUVVVc1IwRkJSenRaUVVNelFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZCTzFsQlEzUkNMRTlCUVU4c1RVRkJUU3hEUVVGQk8xRkJRMllzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkJPMGxCUTFZc1EwRkJRenM3T3pzN096czdPenM3V1VGV1N5eFJRVUZSTEVkQlFVY3NXVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJRVHRaUVVNeFFpeFRRVUZUTEVkQlFVY3NXVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJRVHRaUVZjMVFpeExRVUZMTEVkQlFVY3NRMEZCUXl4SlFVRlpMRVZCUVVVc1NVRkJORUlzUlVGQlJTeEhRVUZaTEVWQlFWRXNSVUZCUlR0blFrRkRMMFVzU1VGQlNUdHZRa0ZEUml4SlFVRkpMRWRCUVVjc1JVRkJSVHQzUWtGRFVDeEpRVUZKTEVkQlFXdENMR2RDUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkJPM0ZDUVVONlF6dHZRa0ZGUkN4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVUU3YVVKQlF6bERPMmRDUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTzI5Q1FVTmFMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZVVKQlFYbENMRU5CUVVNc1EwRkJRVHRwUWtGRE0wTTdXVUZEU0N4RFFVRkRMRU5CUVVFN08xbEJSVXNzU1VGQlNTeEhRVUZITEVOQlFVTXNTVUZCV1N4RlFVRkZMRWRCUVZrc1JVRkJhVUlzUlVGQlJUdG5Ra0ZEZWtRc1NVRkJTVHR2UWtGRFJpeEpRVUZKTEZsQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3ZDBKQlEzWkNMRWxCUVVrc1NVRkJTU3hIUVVGdlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGQk8zZENRVU5zUlN4SlFVRkpMRWRCUVd0Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVFN2QwSkJSWFJETEVsQlFVa3NSMEZCUnl4RlFVRkZPelJDUVVOUUxFbEJRVWtzUjBGQlZ5eG5Ra0ZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlFUdDVRa0ZEYkVNN2QwSkJSVVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVFN2NVSkJRMnhDTzNsQ1FVRk5PM2RDUVVOTUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlFUdHhRa0ZEZGtNN2FVSkJRMFk3WjBKQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVN2IwSkJRMW9zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHRwUWtGRGJrSTdXVUZEU0N4RFFVRkRMRU5CUVVFN096czdPenM3T3pzN096dFpRek5EU3l4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGaExFVkJRVVVzVFVGQll5eEZRVUZGTEV0QlFXTXNSVUZCUlN4RlFVRkZPMmRDUVVOb1JTeEpRVUZKTEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlEzaENMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFN2IwSkJRemxDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUVR0dlFrRkRNMElzU1VGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkJPMjlDUVVWbUxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRVZCUVVVN2QwSkJRMjVDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHQzUWtGRlZDeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRk96UkNRVU4wUWl4TlFVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUVRzMFFrRkROVUlzUTBGQlF5eEZRVUZGTEVOQlFVRTdlVUpCUTBvN2QwSkJSVVFzVFVGQlRTeEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUVR0M1FrRkZNVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUVR0M1FrRkRUQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPelJDUVVOMFFpeE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkJPelJDUVVOa0xFTkJRVU1zUlVGQlJTeERRVUZCTzNsQ1FVTktPM2RDUVVWRUxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGQk8zZENRVU16UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVRTdkMEpCUXpWRExFOUJRVThzUzBGQlN5eEpRVUZKTEVWQlFVVXNRMEZCUVR0eFFrRkRia0k3YVVKQlEwWTdXVUZEU0N4RFFVRkRMRU5CUVVFN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3V1VOMlFrUXNVVUZCUVN4TlFVRnhRaXhMUVVGTE8yZENRVkY0UWl4WlFVRlpMR1ZCUVhWQ0xFVkJRVVVzUlVGQlJTeFZRVUZ0UWl4RlFVRkZMRVZCUVVVc1ZVRkJhME1zUlVGQlJUdHZRa0ZHYkVjc1ZVRkJTeXhIUVVGWExFVkJRVVVzUTBGQlFUdHZRa0ZIYUVJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVRTdiMEpCUTNSQ0xFbEJRVWtzVDBGQlR5eERRVUZETEV0QlFVczdkMEpCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEV0QlFVc3NUVUZCVFN4RFFVRkJPMjlDUVVNdlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc2NVSkJRVmtzUlVGQlJTeERRVUZCTzI5Q1FVY3ZRaXhKUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdkMEpCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJUczBRa0ZETVVJc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1NVRkJTU3hEUVVGRExFdEJRVXNzVFVGQlRTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJRVHQzUWtGRGJrVXNRMEZCUXl4RFFVRkRMRU5CUVVFN2QwSkJSVVlzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1VVRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGT3pSQ1FVTTNRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhKUVVGSkxFTkJRVU1zUzBGQlN5eFpRVUZaTEVOQlFVTXNRMEZCUVR0M1FrRkROMFFzUTBGQlF5eERRVUZETEVOQlFVRTdkMEpCUlVZc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1JVRkJSVHMwUWtGRE1VSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXg1UWtGQmVVSXNRMEZCUXl4RFFVRkJPM2RDUVVONFF5eERRVUZETEVOQlFVTXNRMEZCUVR0eFFrRkRTRHR2UWtGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVN2QwSkJRMjVDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSVHMwUWtGRGFFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZCT3pSQ1FVTjRRaXhKUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdaME5CUTJwQ0xFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlFUdG5RMEZETDBJc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUVRzMlFrRkRiRUk3TkVKQlEwUXNWVUZCU3l4RFFVRlRMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRVHQzUWtGRE1VUXNRMEZCUXl4RFFVRkJPM2RDUVVWRUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkJPM2RDUVVOc1F5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJRVHQzUWtGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVUU3Y1VKQlEzSkRPMjlDUVVkRUxFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNTVUZCU1N4bFFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTzNkQ1FVTnNSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eFRRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVRTdkMEpCUlhSRUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFWa3NTVUZCU1N4RlFVRkZPelJDUVVNNVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUVR0NVFrRkRla0k3Y1VKQlEwWTdlVUpCUVUwN2QwSkJSVXdzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4WlFVRlpMRVZCUVVVN05FSkJRemxDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkJPM2xDUVVOcVF6dHhRa0ZEUmp0dlFrRkZSQ3hKUVVGSkxFOUJRVThzUlVGQlJUdDNRa0ZEV0N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlFUdHhRa0ZEZGtJN1owSkJRMGdzUTBGQlF6dG5Ra0ZIUkN4SFFVRkhMRU5CUVVNc1IwRkJWenR2UWtGRFlpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3ZDBKQlEyNUNMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUVR0eFFrRkRka0k3ZVVKQlFVMDdkMEpCUTB3c1NVRkJTU3hIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZPelJDUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZCT3pSQ1FVTXpRaXhKUVVGSkxFOUJRVThzUTBGQlFUczBRa0ZEV0N4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdG5RMEZEY0VJc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkJPelpDUVVNelJEczBRa0ZEUkN4UFFVRlBMRTlCUVU4c1EwRkJRVHQ1UWtGRFpqdDNRa0ZGUkN4UFFVRlBMRk5CUVZNc1EwRkJRVHR4UWtGRGFrSTdaMEpCUTBnc1EwRkJRenRuUWtGSFJDeE5RVUZOTEVOQlFVTXNSMEZCVnp0dlFrRkRhRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdkMEpCUTNKRExFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUVR0eFFrRkRkRU03WjBKQlEwZ3NRMEZCUXp0blFrRkhSQ3hKUVVGSk8yOUNRVU5HTEUxQlFVMHNWVUZCVlN4SFFVRlhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRVHR2UWtGRGVFUXNUMEZCVHl4VlFVRlZMRU5CUVVFN1owSkJRMjVDTEVOQlFVTTdaMEpCUjBRc1IwRkJSeXhEUVVGRExFZEJRVmNzUlVGQlJTeExRVUZqTzI5Q1FVTTNRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGQk8yOUNRVVZ1UXl4SlFVRkpMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdkMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFWY3NZMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkJPM0ZDUVVOeVJEdDVRa0ZCVFR0M1FrRkRUQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRVHR4UWtGRGFFTTdiMEpCUlVRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkJPMmRDUVVNdlF5eERRVUZETzJkQ1FVZEVMRWRCUVVjc1EwRkJReXhIUVVGWE8yOUNRVU5pTEVsQlFVa3NSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdDNRa0ZEY2tJc1RVRkJUU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHQzUWtGRE0wSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGQk8zZENRVU5vUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUczBRa0ZEY0VJc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkJPM2xDUVVNelJEdDNRa0ZEUkN4UFFVRlBMRTlCUVU4c1MwRkJTeXhUUVVGVExFTkJRVUU3Y1VKQlF6ZENPM2xDUVVGTk8zZENRVU5NTEU5QlFVOHNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVUU3Y1VKQlF6ZEVPMmRDUVVOSUxFTkJRVU03WjBKQlIwUXNUVUZCVFN4RFFVRkRMRWRCUVZjN2IwSkJRMmhDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdiMEpCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHR2UWtGRGRFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVUU3WjBKQlF6TkRMRU5CUVVNN1owSkJSMFFzUzBGQlN6dHZRa0ZEU0N4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVTdkMEpCUXpWQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHR4UWtGRGRrSTdiMEpCUTBRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVFN1owSkJRekZDTEVOQlFVTTdZVUZEUml4RFFVRkJPenM3T3pzN096czdPenM3T3pzN08ybERRMnBJWXl4UlFVRlJPenM3T3pzN096czdPenM3T3pzN1dVTjRRbXBDTEVsQlFVa3NSMEZCUnl4aFFVRmhMRU5CUVVFN1dVRkZjRUlzVDBGQlR5eEhRVUZITEVOQlFVTXNSMEZCVnl4RlFVRkZMRXRCUVdNc1JVRkJkMElzUlVGQlJUdG5Ra0ZEY0VVc1NVRkJTVHR2UWtGRFJpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZPM2RDUVVOU0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNiME5CUVc5RExFTkJRVU1zUTBGQlFUdHhRa0ZEZEVRN2VVSkJRVTA3ZDBKQlEwd3NTVUZCU1N4TFFVRkxMRVZCUVVVN05FSkJRMVFzU1VGQlNTeFBRVUZQTEV0QlFVc3NTMEZCU3l4UlFVRlJPMmREUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGQk96UkNRVU0xUkN4TlFVRk5MRVZCUVVVc1IwRkJSeXhuUWtGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRVHMwUWtGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1owSkJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlFUczBRa0ZEYmtRc1NVRkJTU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCVXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZCT3pSQ1FVTjRSQ3hIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRVHMwUWtGRE4wSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlFUczBRa0ZEYkVRc1QwRkJUeXhKUVVGSkxFTkJRVUU3ZVVKQlExbzdOa0pCUVUwN05FSkJRMHdzU1VGQlNTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzN1owTkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZCT3pSQ1FVTjRSQ3hQUVVGTk8zbENRVU5RTzNGQ1FVTkdPMmxDUVVOR08yZENRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZPMjlDUVVOYUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFN2IwSkJRMnhDTEUxQlFVMHNSMEZCUnl4RFFVRkJPMmxDUVVOV08xbEJRMGdzUTBGQlF5eERRVUZCT3p0WlFVVkxMRTlCUVU4c1IwRkJSeXhEUVVGRExFZEJRVmNzUlVGQlJTeEpRVUZ0UWl4RlFVRnBRaXhGUVVGRk8yZENRVU5zUlN4SlFVRkpPMjlDUVVOR0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVTdkMEpCUTFJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHZRMEZCYjBNc1EwRkJReXhEUVVGQk8zRkNRVU4wUkR0NVFrRkJUVHQzUWtGRFRDeEpRVUZKTEVsQlFVa3NSVUZCUlRzMFFrRkRVaXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVUU3TkVKQlF6ZENMRTFCUVUwc1VVRkJVU3hIUVVGSExHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVRTdORUpCUTNCRkxGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZCT3pSQ1FVTnlReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVRTdORUpCUTI1RUxFMUJRVTBzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGQk96UkNRVU5vUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVRTdlVUpCUXpGQ096WkNRVUZOT3pSQ1FVTk1MRWxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTzJkRFFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1EwRkJRVHMwUWtGRGVFUXNUMEZCVFR0NVFrRkRVRHR4UWtGRFJqdHBRa0ZEUmp0blFrRkJReXhQUVVGUExFZEJRVWNzUlVGQlJUdHZRa0ZEV2l4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZCTzI5Q1FVTnNRaXhOUVVGTkxFZEJRVWNzUTBGQlFUdHBRa0ZEVmp0WlFVTklMRU5CUVVNc1EwRkJRU0o5Il0sIm5hbWVzIjpbIlN5c3RlbSIsInJlZ2lzdGVyIiwiZXhwb3J0c18xIiwiY29udGV4dF8xIiwiZnNfMSIsImNyeXB0b18xIiwicmVhZEZpbGUiLCJ3cml0ZUZpbGUiLCJpZCIsInNldHRlcnMiLCJmc18xXzEiLCJjcnlwdG9fMV8xIiwiZXhlY3V0ZSIsImRlZmF1bHQiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwicGF0aCIsImRhdGEiLCJrZXkiLCJlbmNyeXB0IiwiSlNPTiIsInN0cmluZ2lmeSIsImVyciIsIkVycm9yIiwiZXhpc3RzU3luYyIsInBhcnNlIiwiZGVjcnlwdCIsIm9iaiIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwicmVkdWNlIiwicmVzdWx0IiwiY29uc29sZSIsImVycm9yIiwiZXhwb3J0c18yIiwiY29udGV4dF8yIiwic3RhdGUiLCJ0YXJnZXQiLCJ2YWx1ZSIsImluY2x1ZGVzIiwic3BsaXQiLCJyb290IiwidXBkYXRlIiwibGVuZ3RoIiwiaSIsImFzc2lnbiIsImV4cG9ydHNfMyIsImNvbnRleHRfMyIsImV2ZW50c18xIiwiZnNfMiIsImlvXzEiLCJ1dGlsXzEiLCJldmVudHNfMV8xIiwiZnNfMl8xIiwiaW9fMV8xIiwidXRpbF8xXzEiLCJjb25zdHJ1Y3RvciIsImluaXRpYWxTdGF0ZSIsIm9wdGlvbnMiLCJnZXR0ZXJzIiwidGhpcyIsImRlYnVnIiwicHJvY2VzcyIsImVudiIsIkRFQlVHIiwid2F0Y2giLCJFdmVudEVtaXR0ZXIiLCJvbiIsImxvZyIsInByaW9yIiwicGVyc2lzdCIsInNhdmUiLCJkdW1wIiwid3JpdGUiLCJlbmNyeXB0S2V5IiwicmVhZCIsInNldCIsImdldCIsImN1cnJlbnQiLCJrIiwiZ2V0dGVyIiwiZ3RyIiwiZGVlcHNldCIsImVtaXQiLCJoYXMiLCJ1bmRlZmluZWQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWxldGUiLCJjbGVhciIsImV4cG9ydHNfNCIsImNvbnRleHRfNCIsInN0b3JlXzFfMSIsIkFudGlmbHV4IiwiZXhwb3J0c181IiwiY29udGV4dF81IiwiY3J5cHRvXzIiLCJhbGdvIiwiY3J5cHRvXzJfMSIsIml2IiwicmFuZG9tQnl0ZXMiLCJjaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImVuYyIsImZpbmFsIiwidGFnIiwiZ2V0QXV0aFRhZyIsImRlY2lwaGVyIiwiY3JlYXRlRGVjaXBoZXJpdiIsIkJ1ZmZlciIsImZyb20iLCJzZXRBdXRoVGFnIiwib3V0cHV0Il0sInNvdXJjZVJvb3QiOiIifQ== | ||
var antiflux;System.register("io",["fs","crypto"],(function(t,e){"use strict";var s,r,i,n;return e&&e.id,{setters:[function(t){s=t},function(t){r=t}],execute:function(){i=s.default.readFileSync,n=s.default.writeFileSync,t("write",((t,e,s)=>{try{s&&(e=r.encrypt(s,e)),n(t,JSON.stringify(e),"utf8")}catch(t){throw new Error("Could not write to file")}})),t("read",((t,e)=>{try{if(s.default.existsSync(t)){let s=i(t,"utf8");return s=JSON.parse(s),e&&(s=r.decrypt(e,s)),n=s,Object.keys(n).sort().reduce((function(t,e){return t[e]=n[e],t}),{})}throw new Error("File does not exist")}catch(t){console.error(t)}var n}))}}})),System.register("util",[],(function(t,e){"use strict";return e&&e.id,{setters:[],execute:function(){t("deepset",((t,e,s)=>{if(e.includes(".")){const r=e.split("."),i=t[r[0]];let n="";if(r.length>1){let e=1;for(;e<r.length;)n+=`{ "${r[e]}": `,e++;for(n+="string"==typeof s?`"${s}"`:JSON.stringify(s),e=1;e<r.length;)n+=" }",e++;return n=JSON.parse(n),t[r[0]]=Object.assign(i,n),t||{}}}}))}}})),System.register("store",["fs","io","main","util"],(function(t,e){"use strict";var s,r,i,n;return e&&e.id,{setters:[function(t){s=t},function(t){r=t},function(t){i=t},function(t){n=t}],execute:function(){t("default",class{constructor(t={},e={},n={}){if(this.state={},this.options=e,e.debug&&process.env.DEBUG,this.watch=new i.Watch,e.debug&&(this.watch.on("set",(t=>{console.log(`(Store) ${t.key}: ${t.prior} ➟ ${t.value}`)})),this.watch.on("delete",(t=>{console.log(`(Store) ${t.key}: ${t.prior} ➟ DELETED`)})),this.watch.on("clear",(()=>{console.log("(Store) STATE ➟ CLEARED")}))),e.persist){const t=()=>{const t=this.dump();e.debug&&(console.log("Writing to disk:"),console.log(t)),r.write(e.persist,t,e.encryptKey)};this.watch.on("set",(()=>t())),this.watch.on("delete",(()=>t())),this.watch.on("clear",(()=>t()))}if(e.persist&&s.existsSync(e.persist)){const t=r.read(e.persist,e.encryptKey);for(const e in t)this.set(e,t[e])}else for(const e in t)this.set(e,t[e]);n&&(this.getters=n)}get(t){if(this.state[t])return this.state[t];if(t.includes(".")){const e=t.split(".");let s;for(const t in e)s=s?s[e[t]]:this.state[e[t]];return s}}getter(t){if(this.getters&&this.getters[t])return this.getters[t](this.dump())}dump(){return Object.assign({},this.state)}set(t,e){const s=this.get(t);t.includes(".")?this.state=n.deepset(this.state,t,e):this.state[t]=e,this.watch.emit("set",{key:t,value:e,prior:s})}has(t){if(t.includes(".")){const e=t.split(".");let s={};for(const t in e)s=s?s[e[t]]:this.state[e[t]];return void 0!==s}return Object.prototype.hasOwnProperty.call(this.state,t)}delete(t){const e=this.get(t);delete this.state[t],this.watch.emit("delete",{key:t,prior:e})}clear(){for(const t in this.state)delete this.state[t];this.watch.emit("clear")}})}}})),System.register("main",["events","store"],(function(t,e){"use strict";var s,r,i;return e&&e.id,{setters:[function(t){s=t},function(t){r=t}],execute:function(){t("Antiflux",r.default),i=class extends s.EventEmitter{constructor(){super()}},t("Watch",i),t("default",r.default)}}})),System.register("crypto",["crypto"],(function(t,e){"use strict";var s,r;return e&&e.id,{setters:[function(t){s=t}],execute:function(){r="aes-256-gcm",t("encrypt",((t,e)=>{try{if(t){if(e){"string"!=typeof e&&(e=JSON.stringify(e));const i=s.default.randomBytes(12),n=s.default.createCipheriv(r,t,i);let o=n.update(e,"utf8","base64");return o+=n.final("base64"),{enc:o,iv:i,tag:n.getAuthTag()}}return void(process.env.DEBUG&&console.log("No data to encrypt"))}throw new Error("You must specify an encryption key")}catch(t){throw console.error(t),t}})),t("decrypt",((t,e)=>{try{if(t){if(e){const{enc:i,iv:n,tag:o}=e,c=s.default.createDecipheriv(r,t,Buffer.from(n));c.setAuthTag(Buffer.from(o));let u=c.update(i,"base64","utf8");return u+=c.final("utf8"),JSON.parse(u)}return void(process.env.DEBUG&&console.log("No data to decrypt"))}throw new Error("You must specify an encryption key")}catch(t){throw console.error(t),t}}))}}})),antiflux={}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoieUtBSU0sRUFBVyxVQUFHLGFBQ2QsRUFBWSxVQUFHLGMsV0FXUCxDQUFDLEVBQWMsRUFBOEIsS0FDekQsSUFDTSxJQUNGLEVBQXNCLFVBQVEsRUFBSyxJQUdyQyxFQUFVLEVBQU0sS0FBSyxVQUFVLEdBQU8sUUFDdEMsTUFBTyxHQUNQLE1BQU0sSUFBSSxNQUFNLCtCLFVBSVAsQ0FBQyxFQUFjLEtBQzFCLElBQ0UsR0FBSSxVQUFHLFdBQVcsR0FBTyxDQUN2QixJQUFJLEVBQXdDLEVBQVMsRUFBTSxRQU8zRCxPQU5BLEVBQXNCLEtBQUssTUFBTSxHQUU3QixJQUNGLEVBQWUsVUFBUSxFQUFLLElBNUJ0QixFQStCSSxFQTlCVCxPQUFPLEtBQUssR0FDaEIsT0FDQSxRQUFPLFNBQVUsRUFBUSxHQUV4QixPQURBLEVBQU8sR0FBTyxFQUFJLEdBQ1gsSUFDTixJQTJCRCxNQUFNLElBQUksTUFBTSx1QkFFbEIsTUFBTyxHQUNQLFFBQVEsTUFBTSxHQXBDbEIsSUFBYyxVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYW50aWZsdXgvLi9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cydcbmltcG9ydCBBbnRpZmx1eCBmcm9tICcuL3N0b3JlJ1xuXG5leHBvcnQgY2xhc3MgV2F0Y2ggZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gIH1cbn1cblxuaW50ZXJmYWNlIFNjaGVtYSB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd25cbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBwZXJzaXN0Pzogc3RyaW5nXG4gIGVuY3J5cHRLZXk/OiBzdHJpbmdcbiAgZGVidWc/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBHZXR0ZXIge1xuICAoc3RhdGU6IFNjaGVtYSk6IHVua25vd25cbn1cblxuaW50ZXJmYWNlIEVuY3J5cHRlZERhdGEge1xuICBlbmM6IHN0cmluZ1xuICBpdjogQnVmZmVyXG4gIHRhZzogQnVmZmVyXG59XG5cbmV4cG9ydCB7IEFudGlmbHV4LCBTY2hlbWEsIE9wdGlvbnMsIEdldHRlciwgRW5jcnlwdGVkRGF0YSB9XG5leHBvcnQgZGVmYXVsdCBBbnRpZmx1eFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 |
{ | ||
"name": "antiflux", | ||
"version": "0.1.14", | ||
"version": "0.1.16", | ||
"keywords": [ | ||
@@ -18,2 +18,3 @@ "store", | ||
}, | ||
"type": "module", | ||
"license": "MIT", | ||
@@ -20,0 +21,0 @@ "engines": { |
@@ -1,4 +0,10 @@ | ||
import type { EventEmitter } from 'events' | ||
import Store from './store' | ||
import { EventEmitter } from 'events' | ||
import Antiflux from './store' | ||
export class Watch extends EventEmitter { | ||
constructor() { | ||
super() | ||
} | ||
} | ||
interface Schema { | ||
@@ -24,6 +30,3 @@ [key: string]: unknown | ||
declare class Antiflux extends Store {} | ||
export type { Antiflux, Schema, Options, Getter, EncryptedData, EventEmitter } | ||
export { Antiflux, Schema, Options, Getter, EncryptedData } | ||
export default Antiflux |
@@ -1,9 +0,8 @@ | ||
import { EventEmitter } from 'events' | ||
import { existsSync } from 'fs' | ||
import { read, write } from './io' | ||
import type { Getter, Options, Schema } from './main' | ||
import { Getter, Options, Schema, Watch } from './main' | ||
import { deepset } from './util' | ||
export default class Store { | ||
watch: EventEmitter | ||
export default class Antiflux { | ||
watch: Watch | ||
getters?: { | ||
@@ -18,3 +17,3 @@ [key: string]: Getter | ||
if (options.debug) process.env.DEBUG === 'true' | ||
this.watch = new EventEmitter() | ||
this.watch = new Watch() | ||
@@ -21,0 +20,0 @@ // configure debugging statements |
@@ -1,2 +0,2 @@ | ||
import type { Schema } from './main' | ||
import { Schema } from './main' | ||
@@ -3,0 +3,0 @@ const deepset = (state: Schema, target: string, value: unknown) => { |
@@ -55,3 +55,3 @@ { | ||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ | ||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */ | ||
"sourceMap": true /* Create source map files for emitted JavaScript files. */, | ||
"outFile": "dist/main.js" /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */, | ||
@@ -66,3 +66,3 @@ // "outDir": "./dist" /* Specify an output folder for all emitted files. */, | ||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ | ||
"inlineSourceMap": true /* Include sourcemap files inside the emitted JavaScript. */, | ||
// "inlineSourceMap": true /* Include sourcemap files inside the emitted JavaScript. */, | ||
// "inlineSources": true /* Include source code in the sourcemaps inside the emitted JavaScript. */, | ||
@@ -104,8 +104,8 @@ // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ | ||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ | ||
"allowUnreachableCode": false /* Disable error reporting for unreachable code. */, | ||
"allowUnreachableCode": false /* Disable error reporting for unreachable code. */ | ||
/* Completeness */ | ||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ | ||
"skipLibCheck": true /* Skip type checking all .d.ts files. */ | ||
// "skipLibCheck": true /* Skip type checking all .d.ts files. */ | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1334
0.45%Yes
NaN166043
-17.65%