mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-26 22:15:06 +08:00
# Conflicts: # jsowell-ui/.env.development # jsowell-ui/.env.staging # jsowell-ui/bin/build-sit.bat # jsowell-ui/bin/build.bat # jsowell-ui/src/api/adapayMember/adapayMember.js # jsowell-ui/src/api/pile/merchant.js # jsowell-ui/src/router/index.js # jsowell-ui/src/views/financial/financeDetail.vue # jsowell-ui/src/views/financial/merchant.vue # jsowell-ui/src/views/homeIndex/homeIndex.vue # jsowell-ui/src/views/login.vue # jsowell-ui/src/views/pile/basic/detail.vue # jsowell-ui/src/views/pile/station/components/SiteInfo.vue # jsowell-ui/src/views/pile/station/detail.vue # jsowell-ui/src/views/pile/station/orderReport.vue
1 line
36 KiB
JSON
1 line
36 KiB
JSON
{"remainingRequest":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\thread-loader\\dist\\cjs.js!D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\babel-loader\\lib\\index.js!D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\src\\views\\pile\\merchant\\components\\adapayMember.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\src\\views\\pile\\merchant\\components\\adapayMember.vue","mtime":1747098376147},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\babel.config.js","mtime":1747098375841},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1748394197445},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1748394199226}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi9pZGVhUHJvamVjdHMvanNvd2VsbC1jaGFyZ2VyLXdlYi9qc293ZWxsLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maW5kLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyIpOwp2YXIgX2FkYXBheU1lbWJlciA9IHJlcXVpcmUoIkAvYXBpL2FkYXBheU1lbWJlci9hZGFwYXlNZW1iZXIiKTsKdmFyIF9hdXRoID0gcmVxdWlyZSgiQC91dGlscy9hdXRoIik7CnZhciBfYmFua19jb2RlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJAL2Fzc2V0cy9qc29uL2JhbmtfY29kZS5qc29uIikpOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwp2YXIgX2RlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQgPSB7CiAgY29tcG9uZW50czoge30sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGRhdGFEaXNhYmxlZDogZmFsc2UsCiAgICAgIGFkZExlZ0Rpc2FibGVkOiBmYWxzZSwKICAgICAgdXBkYXRlbGVnYWxDZXJ0SWQ6IG51bGwsCiAgICAgIHVwZGF0ZVNvY2lhbENyZWRpdENvZGU6IG51bGwsCiAgICAgIGFkZExlZ2FsQ2VydElkRGF0ZTogbnVsbCwKICAgICAgZGF0YVZhbHVlOiBudWxsLAogICAgICBhZGFwYXlMZWdhbENlcnRJZENoZWNrZWQ6IGZhbHNlLAogICAgICBhZGFwYXlTb2NpYWxDcmVkQ2hlY2tlZDogZmFsc2UsCiAgICAgIHBpY2tlckNoZWNrZWQ6IGZhbHNlLAogICAgICAvLyDnu5/kuIDnpL7kvJrnvJbnoIHmnInmlYjmnJ8g6ZW/5pyfCiAgICAgIGxlZ2FsQ2VydElkQ2hlY2tlZDogZmFsc2UsCiAgICAgIC8vIOi6q+S7veivgemVv+acnwogICAgICBhcmVhTGlzdDogW10sCiAgICAgIGJhbmtWYWx1ZTogIiIsCiAgICAgIGJhbmtMaXN0OiBbXSwKICAgICAgLy8g6ZO26KGM5Luj56CBSlNPTuaVsOaNrgogICAgICBzaG93QWRhcGF5Q29ycDogbnVsbCwKICAgICAgdXBkYXRlRGlhbG9nOiBmYWxzZSwKICAgICAgYWRhcGF5Q29ycFJ1bGVzOiB7CiAgICAgICAgbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeS8geS4muWQjeensCIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBzb2NpYWxDcmVkaXRDb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ57uf5LiA56S+5Lya5L+h55So56CBIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGJ1c2luZXNzU2NvcGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnnu4/okKXojIPlm7QiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgbGVnYWxQZXJzb246IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnms5Xkurrlp5PlkI0iLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgbGVnYWxDZXJ0SWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnms5Xkurrouqvku73or4Hlj7fnoIEiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgbGVnYWxDZXJ0SWRFeHBpcmVzOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5Lya5ZGY5pi156ewIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGxlZ2FsTXA6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnkvJrlkZjmmLXnp7AiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgc2hvd0FjY291bnRMaXN0OiBmYWxzZSwKICAgICAgZGlhbG9nOiBmYWxzZSwKICAgICAgbWVyY2hhbnRJZDogbnVsbCwKICAgICAgYWRhcGF5Q29ycE1lbWJlcjogewogICAgICAgIGJhbmtBY2N0VHlwZTogIjEiLAogICAgICAgIG1lcmNoYW50SWQ6IHRoaXMuJHJvdXRlLnBhcmFtcy5pZAogICAgICB9LAogICAgICAvLyDmsYfku5jkvJrlkZgKICAgICAgYWRhcGF5TWVtYmVyOiAiIiwKICAgICAgb3BlbkNyZWF0ZUFkYXBheU1lbWJlcjogZmFsc2UsCiAgICAgIC8vIOaxh+S7mOe7k+eul+i0puaItwogICAgICBhZGFwYXlTZXR0bGVBY2NvdW50OiBudWxsLAogICAgICBkaWFsb2dSdWxlczogewogICAgICAgIGVtYWlsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5Lya5ZGY6YKu566xIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICJlbWFpbCIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5q2j56Gu55qE6YKu566x5Zyw5Z2AIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGdlbmRlcjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeS8muWRmOaAp+WIqyIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBsb2NhdGlvbjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeS8muWRmOWcsOWdgCIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBuaWNrbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeS8muWRmOaYteensCIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBjYXJkSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnpk7booYzljaHlj7ciLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL15bMS05XVxkezksMjl9JC8sCiAgICAgICAgICBtZXNzYWdlOiAi6ZO26KGM5Y2h5Y+35qC85byP5pyJ6K+vIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGNhcmROYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ6ZO26KGM5Y2h5Y+35a+55bqU55qE5oi35ZCNIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHRlbE5vOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5omL5py65Y+3IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH0sIHsKICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86XCt8MDApODYpPzFcZHsxMH0kLywKICAgICAgICAgIG1lc3NhZ2U6ICLmiYvmnLrlj7fmoLzlvI/mnInor68iLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgYmFua0FjY3RUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup6ZO26KGM6LSm5oi357G75Z6LIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGFyZWFDb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6ZO26KGM6LSm5oi35byA5oi36ZO26KGM5omA5Zyo5Zyw5Yy657yW56CBIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGNlcnRJZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeivgeS7tuWPtyIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBiYW5rQ29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmemTtuihjOexu+WeiyIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIGNhcmRObzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmemTtuihjOWNoeWPtyIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5LyB5Lia5ZCN56ewIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHByb3ZDb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup55yB5Lu957yW56CBIiwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgc29jaWFsQ3JlZGl0Q29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpee7n+S4gOekvuS8muS/oeeUqOeggSIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBidXNpbmVzc1Njb3BlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl57uP6JCl6IyD5Zu0IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGxlZ2FsUGVyc29uOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5rOV5Lq65aeT5ZCNIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGxlZ2FsQ2VydElkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5rOV5Lq66Lqr5Lu96K+B5Y+356CBIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGxlZ2FsTXA6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXms5XkurrmiYvmnLrlj7ciLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL14xXGR7MTB9JC8sCiAgICAgICAgICBtZXNzYWdlOiAi5omL5py65Y+356CB5qC85byP5pyJ6K+vIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGFkZHJlc3M6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXkvIHkuJrlnLDlnYAiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgY2F0ZVByb3BzOiB7CiAgICAgICAgZXhwYW5kVHJpZ2dlcjogImNsaWNrIiwKICAgICAgICBsYWJlbDogInRpdGxlIiwKICAgICAgICB2YWx1ZTogInZhbHVlIiwKICAgICAgICBjaGlsZHJlbjogImNpdGllcyIKICAgICAgfSwKICAgICAgdmFsdWU6IFtdLAogICAgICBvcHRpb25zOiBbXSwKICAgICAgc2V0dGxlQWNjb3VudDoge30sCiAgICAgIHNldHRsZUFjY291bnRMaXN0OiBbXSwKICAgICAgYWN0aW9uVXJsOiBwcm9jZXNzLmVudi5WVUVfQVBQX0JBU0VfQVBJICsgIi9jb21tb24vdXBsb2FkT1NTIiwKICAgICAgZGlhbG9nSW1hZ2VVcmw6ICIiLAogICAgICBoZWFkZXJzOiB7CiAgICAgICAgQXV0aG9yaXphdGlvbjogIkJlYXJlciAiICsgKDAsIF9hdXRoLmdldFRva2VuKSgpCiAgICAgIH0sCiAgICAgIGltYWdlVXJsOiBudWxsLAogICAgICBpZENhcmRMaXN0OiBbXSwKICAgICAgc2lkZUNhcmRMaXN0OiBbXSwKICAgICAgZGVwb3NpdEJhbmtMaXN0OiBbXSwKICAgICAgYnVzaW5lc3NMaXN0OiBbXSwKICAgICAgdXBsb2FkRGlzYWJsZTogZmFsc2UsCiAgICAgIHNpZGVEaXNhYmxlOiBmYWxzZSwKICAgICAgZGVwb3NpdEJhbmtEaXNhYmxlOiBmYWxzZSwKICAgICAgYnVzaW5lc3NEaXNhYmxlOiBmYWxzZQogICAgfTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGFkYXBheUxlZ2FsQ2VydElkQ2hhbmdlOiBmdW5jdGlvbiBhZGFwYXlMZWdhbENlcnRJZENoYW5nZShlKSB7CiAgICAgIGlmIChlID09PSB0cnVlKSB7CiAgICAgICAgdGhpcy5hZGRMZWdEaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdGhpcy51cGRhdGVsZWdhbENlcnRJZCA9ICIyMDk5MTIzMSI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hZGRMZWdEaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9LAogICAgYWRhcGF5U29jaWFsQ3JlZENoYW5nZTogZnVuY3Rpb24gYWRhcGF5U29jaWFsQ3JlZENoYW5nZShlKSB7CiAgICAgIGlmIChlID09PSB0cnVlKSB7CiAgICAgICAgdGhpcy5kYXRhRGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHRoaXMudXBkYXRlU29jaWFsQ3JlZGl0Q29kZSA9ICIyMDk5MTIzMSI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5kYXRhRGlzYWJsZWQgPSBmYWxzZTsKICAgICAgfQogICAgfSwKICAgIC8vIOazleS6uui6q+S7veivgeacieaViOacnyDlvZPnlKjmiLfngrnlh7vplb/mnJ/ml7blh7rnjrDnmoTkuovku7YKICAgIGxlZ2FsQ2VydElkYUNoYW5nZTogZnVuY3Rpb24gbGVnYWxDZXJ0SWRhQ2hhbmdlKGUpIHsKICAgICAgaWYgKGUgPT09IHRydWUpIHsKICAgICAgICB0aGlzLmFkZExlZ2FsQ2VydElkRGF0ZSA9ICIyMDk5MTIzMSI7CiAgICAgICAgdGhpcy5hZGRMZWdEaXNhYmxlZCA9IHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hZGRMZWdEaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9LAogICAgLy8g57uf5LiA56S+5Lya57yW56CB5pyJ5pWI5pyfIOeCueWHu+mVv+acn+aXtuWHuueOsOeahOS6i+S7tgogICAgZGF0YUNoYW5nZTogZnVuY3Rpb24gZGF0YUNoYW5nZShlKSB7CiAgICAgIGlmIChlID09PSB0cnVlKSB7CiAgICAgICAgdGhpcy5kYXRhVmFsdWUgPSAiMjA5OTEyMzEiOwogICAgICAgIHRoaXMuZGF0YURpc2FibGVkID0gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRhdGFEaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9LAogICAgYnVzaW5lc3NFeGNlZWQ6IGZ1bmN0aW9uIGJ1c2luZXNzRXhjZWVkKGZpbGVzKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygiXHU1RjUzXHU1MjREXHU5NjUwXHU1MjM2XHU5MDA5XHU2MkU5IDEgXHU1RjIwXHU1NkZFXHU3MjQ3XHVGRjBDXHU2NzJDXHU2QjIxXHU5MDA5XHU2MkU5XHU0RTg2ICIuY29uY2F0KGZpbGVzLmxlbmd0aCwgIlx1NUYyMCIpKTsKICAgIH0sCiAgICAvLyDlr7nlm77niYfov5vooYzkuIrkvKDliY3lpITnkIbljovnvKkKICAgIGJlZm9yZUZvcm1lcjogZnVuY3Rpb24gYmVmb3JlRm9ybWVyKGZpbGUpIHsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAvLyDlsIblm77niYfnu5jliLbliLDkuIDkuKpjYW52YXPnlLvluIPkuIrvvIzlubborr7lrprljovnvKnlkI7nmoTlrr3luqblkozpq5jluqbjgIIKICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pgogICAgICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYKICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nLndpZHRoOwogICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nLmhlaWdodDsKICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7CiAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lkdGgpIHsKICAgICAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoOwogICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkgewogICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0OwogICAgICAgICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhCiAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoZnVuY3Rpb24gKGJsb2IpIHsKICAgICAgICAgICAgICB2YXIgY29tcHJlc3NlZEZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGZpbGUubmFtZSwgewogICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7CiAgICAgICAgICAgIH0sIGZpbGUudHlwZSwgMC44KTsgLy8g6K6+572u5Y6L57yp6LSo6YeP77yM6L+Z6YeM6K6+5Li6MC44CiAgICAgICAgICB9OwogICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICB9KTsKICAgIH0sCiAgICBidXNpbmVzc1N1Y2Nlc3M6IGZ1bmN0aW9uIGJ1c2luZXNzU3VjY2VzcyhyZXMsIGZpbGUpIHsKICAgICAgdGhpcy4kcmVmcy5hZGFwYXlDb3JwTWVtYmVyLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgdGhpcy5pbWFnZVVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZS5yYXcpOwogICAgICBjb25zb2xlLmxvZygi5Zu+54mH5LiK5Lyg5oiQ5YqfIHVybO+8miIsIHRoaXMuaW1hZ2VVcmwpOwogICAgICB0aGlzLmJ1c2luZXNzTGlzdC5wdXNoKHsKICAgICAgICB1cmw6IHJlcy51cmwKICAgICAgfSk7CiAgICAgIGlmIChyZXMuY29kZSA9PT0gMjAwKSB7CiAgICAgICAgdGhpcy5idXNpbmVzc0Rpc2FibGUgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgYnVzaW5lc3NSZW1vdmU6IGZ1bmN0aW9uIGJ1c2luZXNzUmVtb3ZlKGZpbGUsIGZpbGVMaXN0KSB7CiAgICAgIGNvbnNvbGUubG9nKCLnp7vpmaTlm77niYciLCBmaWxlLCBmaWxlTGlzdCk7CiAgICAgIHZhciBpID0gdGhpcy5idXNpbmVzc0xpc3QuZmluZEluZGV4KGZ1bmN0aW9uICh4KSB7CiAgICAgICAgcmV0dXJuIHgudWlkID09PSBmaWxlLnVpZDsKICAgICAgfSk7CiAgICAgIHRoaXMuYnVzaW5lc3NMaXN0LnNwbGljZShpLCAxKTsKICAgICAgdGhpcy5idXNpbmVzc0Rpc2FibGUgPSBmYWxzZTsKICAgIH0sCiAgICBkZXBvc2l0QmFua0V4Y2VlZDogZnVuY3Rpb24gZGVwb3NpdEJhbmtFeGNlZWQoZmlsZXMpIHsKICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCJcdTVGNTNcdTUyNERcdTk2NTBcdTUyMzZcdTkwMDlcdTYyRTkgMSBcdTVGMjBcdTU2RkVcdTcyNDdcdUZGMENcdTY3MkNcdTZCMjFcdTkwMDlcdTYyRTlcdTRFODYgIi5jb25jYXQoZmlsZXMubGVuZ3RoLCAiXHU1RjIwIikpOwogICAgfSwKICAgIC8vIOWvueWbvueJh+i/m+ihjOS4iuS8oOWJjeWkhOeQhuWOi+e8qQogICAgYmVmb3JlRGF0YTogZnVuY3Rpb24gYmVmb3JlRGF0YShmaWxlKSB7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgLy8g5bCG5Zu+54mH57uY5Yi25Yiw5LiA5LiqY2FudmFz55S75biD5LiK77yM5bm26K6+5a6a5Y6L57yp5ZCO55qE5a695bqm5ZKM6auY5bqm44CCCiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7CiAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CiAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgICAgdmFyIG1heFdpZHRoID0gODAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKflrr3luqYKICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IDYwMDsgLy8g6K6+572u5Y6L57yp5ZCO55qE5pyA5aSn6auY5bqmCiAgICAgICAgICAgIHZhciB3aWR0aCA9IGltZy53aWR0aDsKICAgICAgICAgICAgdmFyIGhlaWdodCA9IGltZy5oZWlnaHQ7CiAgICAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkgewogICAgICAgICAgICAgIGlmICh3aWR0aCA+IG1heFdpZHRoKSB7CiAgICAgICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDsKICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHsKICAgICAgICAgICAgICAgIHdpZHRoICo9IG1heEhlaWdodCAvIGhlaWdodDsKICAgICAgICAgICAgICAgIGhlaWdodCA9IG1heEhlaWdodDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgLy8g5bCGY2FudmFz55S75biD5Lit55qE5YaF5a656L2s5o2i5Li6QmxvYuWvueixoQogICAgICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7CiAgICAgICAgICAgICAgdmFyIGNvbXByZXNzZWRGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBmaWxlLm5hbWUsIHsKICAgICAgICAgICAgICAgIHR5cGU6IGJsb2IudHlwZQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIHJlc29sdmUoY29tcHJlc3NlZEZpbGUpOwogICAgICAgICAgICB9LCBmaWxlLnR5cGUsIDAuOCk7IC8vIOiuvue9ruWOi+e8qei0qOmHj++8jOi/memHjOiuvuS4ujAuOAogICAgICAgICAgfTsKICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgfTsKICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKICAgICAgfSk7CiAgICB9LAogICAgZGVwb3NpdEJhbmtTdWNjZXNzOiBmdW5jdGlvbiBkZXBvc2l0QmFua1N1Y2Nlc3MocmVzLCBmaWxlKSB7CiAgICAgIHRoaXMuJHJlZnMuYWRhcGF5Q29ycE1lbWJlci5jbGVhclZhbGlkYXRlKCk7CiAgICAgIHRoaXMuaW1hZ2VVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUucmF3KTsKICAgICAgY29uc29sZS5sb2coIuWbvueJh+S4iuS8oOaIkOWKnyB1cmzvvJoiLCB0aGlzLmltYWdlVXJsKTsKICAgICAgdGhpcy5kZXBvc2l0QmFua0xpc3QucHVzaCh7CiAgICAgICAgdXJsOiByZXMudXJsCiAgICAgIH0pOwogICAgICBpZiAocmVzLmNvZGUgPT09IDIwMCkgewogICAgICAgIHRoaXMuZGVwb3NpdEJhbmtEaXNhYmxlID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIGRlcG9zaXRCYW5rUmVtb3ZlOiBmdW5jdGlvbiBkZXBvc2l0QmFua1JlbW92ZShmaWxlLCBmaWxlTGlzdCkgewogICAgICBjb25zb2xlLmxvZygi56e76Zmk5Zu+54mHIiwgZmlsZSwgZmlsZUxpc3QpOwogICAgICB2YXIgaSA9IHRoaXMuZGVwb3NpdEJhbmtMaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoeCkgewogICAgICAgIHJldHVybiB4LnVpZCA9PT0gZmlsZS51aWQ7CiAgICAgIH0pOwogICAgICB0aGlzLmRlcG9zaXRCYW5rTGlzdC5zcGxpY2UoaSwgMSk7CiAgICAgIHRoaXMuZGVwb3NpdEJhbmtEaXNhYmxlID0gZmFsc2U7CiAgICB9LAogICAgc2lkZUNhcmRFeGNlZWQ6IGZ1bmN0aW9uIHNpZGVDYXJkRXhjZWVkKGZpbGVzKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygiXHU1RjUzXHU1MjREXHU5NjUwXHU1MjM2XHU5MDA5XHU2MkU5IDEgXHU1RjIwXHU1NkZFXHU3MjQ3XHVGRjBDXHU2NzJDXHU2QjIxXHU5MDA5XHU2MkU5XHU0RTg2ICIuY29uY2F0KGZpbGVzLmxlbmd0aCwgIlx1NUYyMCIpKTsKICAgIH0sCiAgICAvLyDlr7nlm77niYfov5vooYzkuIrkvKDliY3lpITnkIbljovnvKkKICAgIGdldEJlZm9yZTogZnVuY3Rpb24gZ2V0QmVmb3JlKGZpbGUpIHsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAvLyDlsIblm77niYfnu5jliLbliLDkuIDkuKpjYW52YXPnlLvluIPkuIrvvIzlubborr7lrprljovnvKnlkI7nmoTlrr3luqblkozpq5jluqbjgIIKICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pgogICAgICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYKICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nLndpZHRoOwogICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nLmhlaWdodDsKICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7CiAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lkdGgpIHsKICAgICAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoOwogICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkgewogICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0OwogICAgICAgICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhCiAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoZnVuY3Rpb24gKGJsb2IpIHsKICAgICAgICAgICAgICB2YXIgY29tcHJlc3NlZEZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGZpbGUubmFtZSwgewogICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7CiAgICAgICAgICAgIH0sIGZpbGUudHlwZSwgMC44KTsgLy8g6K6+572u5Y6L57yp6LSo6YeP77yM6L+Z6YeM6K6+5Li6MC44CiAgICAgICAgICB9OwogICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICB9KTsKICAgIH0sCiAgICBzaWRlQ2FyZFN1Y2Nlc3M6IGZ1bmN0aW9uIHNpZGVDYXJkU3VjY2VzcyhyZXMpIHsKICAgICAgdGhpcy4kcmVmcy5hZGFwYXlDb3JwTWVtYmVyLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgdGhpcy5zaWRlQ2FyZExpc3QucHVzaCh7CiAgICAgICAgdXJsOiByZXMudXJsCiAgICAgIH0pOwogICAgICBpZiAocmVzLmNvZGUgPT09IDIwMCkgewogICAgICAgIHRoaXMuc2lkZURpc2FibGUgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgc2lkZUNhcmRSZW1vdmU6IGZ1bmN0aW9uIHNpZGVDYXJkUmVtb3ZlKGZpbGUsIGZpbGVMaXN0KSB7CiAgICAgIGNvbnNvbGUubG9nKCLnp7vpmaTlm77niYciLCBmaWxlLCBmaWxlTGlzdCk7CiAgICAgIC8vIOS7jnBpY3PmlbDnu4TkuK3vvIzmib7liLDlm77niYflr7nlupTnmoTntKLlvJXlgLwKICAgICAgdmFyIGkgPSB0aGlzLnNpZGVDYXJkTGlzdC5maW5kSW5kZXgoZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4geC51aWQgPT09IGZpbGUudWlkOwogICAgICB9KTsKICAgICAgLy8g6LCD55Soc3BsaWNl5pa55rOV77yM56e76Zmk5Zu+54mH5L+h5oGvCiAgICAgIHRoaXMuc2lkZUNhcmRMaXN0LnNwbGljZShpLCAxKTsKICAgICAgdGhpcy5zaWRlRGlzYWJsZSA9IGZhbHNlOwogICAgfSwKICAgIGlkQ2FyZEV4Y2VlZDogZnVuY3Rpb24gaWRDYXJkRXhjZWVkKGZpbGVzKSB7CiAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygiXHU1RjUzXHU1MjREXHU5NjUwXHU1MjM2XHU5MDA5XHU2MkU5IDEgXHU1RjIwXHU1NkZFXHU3MjQ3XHVGRjBDXHU2NzJDXHU2QjIxXHU5MDA5XHU2MkU5XHU0RTg2ICIuY29uY2F0KGZpbGVzLmxlbmd0aCwgIlx1NUYyMCIpKTsKICAgIH0sCiAgICAvLyDlr7nlm77niYfov5vooYzkuIrkvKDliY3lpITnkIbljovnvKkKICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAvLyDlsIblm77niYfnu5jliLbliLDkuIDkuKpjYW52YXPnlLvluIPkuIrvvIzlubborr7lrprljovnvKnlkI7nmoTlrr3luqblkozpq5jluqbjgIIKICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pgogICAgICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYKICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nLndpZHRoOwogICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nLmhlaWdodDsKICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7CiAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbWF4V2lkdGgpIHsKICAgICAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoOwogICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkgewogICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0OwogICAgICAgICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhCiAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoZnVuY3Rpb24gKGJsb2IpIHsKICAgICAgICAgICAgICB2YXIgY29tcHJlc3NlZEZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGZpbGUubmFtZSwgewogICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7CiAgICAgICAgICAgIH0sIGZpbGUudHlwZSwgMC44KTsgLy8g6K6+572u5Y6L57yp6LSo6YeP77yM6L+Z6YeM6K6+5Li6MC44CiAgICAgICAgICB9OwogICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICB9KTsKICAgIH0sCiAgICBpZENhcmRTdWNjZXNzOiBmdW5jdGlvbiBpZENhcmRTdWNjZXNzKHJlcykgewogICAgICB0aGlzLiRyZWZzLmFkYXBheUNvcnBNZW1iZXIuY2xlYXJWYWxpZGF0ZSgpOwogICAgICB0aGlzLmlkQ2FyZExpc3QucHVzaCh7CiAgICAgICAgdXJsOiByZXMudXJsCiAgICAgIH0pOwogICAgICBpZiAocmVzLmNvZGUgPT09IDIwMCkgewogICAgICAgIHRoaXMudXBsb2FkRGlzYWJsZSA9IHRydWU7CiAgICAgIH0KICAgIH0sCiAgICBpZENhcmRSZW1vdmU6IGZ1bmN0aW9uIGlkQ2FyZFJlbW92ZShmaWxlLCBmaWxlTGlzdCkgewogICAgICBjb25zb2xlLmxvZygi56e76Zmk5Zu+54mHIiwgZmlsZSwgZmlsZUxpc3QpOwogICAgICAvLyDku45waWNz5pWw57uE5Lit77yM5om+5Yiw5Zu+54mH5a+55bqU55qE57Si5byV5YC8CiAgICAgIHZhciBpID0gdGhpcy5pZENhcmRMaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoeCkgewogICAgICAgIHJldHVybiB4LnVpZCA9PT0gZmlsZS51aWQ7CiAgICAgIH0pOwogICAgICAvLyDosIPnlKhzcGxpY2Xmlrnms5XvvIznp7vpmaTlm77niYfkv6Hmga8KICAgICAgdGhpcy5pZENhcmRMaXN0LnNwbGljZShpLCAxKTsKICAgICAgdGhpcy51cGxvYWREaXNhYmxlID0gZmFsc2U7CiAgICB9LAogICAgLy8g5L+u5pS55oyJ6ZKuCiAgICB1cGRhdGVEaWFsb2dGb3JtOiBmdW5jdGlvbiB1cGRhdGVEaWFsb2dGb3JtKGZvcm0pIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmJ1c2luZXNzTmFtZSA9IHRoaXMuYWRhcGF5Q29ycE1lbWJlci5uYW1lOwogICAgICBjb25zb2xlLmxvZygi5L+u5pS5IiwgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmJ1c2luZXNzTmFtZSk7CiAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5sZWdhbENlcnRJZEV4cGlyZXMgPSB0aGlzLnVwZGF0ZWxlZ2FsQ2VydElkOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIuc29jaWFsQ3JlZGl0Q29kZUV4cGlyZXMgPSB0aGlzLnVwZGF0ZVNvY2lhbENyZWRpdENvZGU7CiAgICAgIGNvbnNvbGUubG9nKHRoaXMuYWRhcGF5Q29ycE1lbWJlciwgInRoaXMuYWRhcGF5Q29ycE1lbWJlciIpOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIubWVyY2hhbnRJZCA9IHRoaXMubWVyY2hhbnRJZDsKICAgICAgY29uc29sZS5sb2coIuS/ruaUueaIkOWKnyIsIGZvcm0pOwogICAgICB0aGlzLiRyZWZzW2Zvcm1dLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgY29uc29sZS5sb2codmFsaWQsICJ2YWxpZCIpOwogICAgICAgICAgaWYgKCFfdGhpcy5hZGFwYXlDb3JwTWVtYmVyLnNvY2lhbENyZWRpdENvZGVFeHBpcmVzKSByZXR1cm4gX3RoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl57uf5LiA56S+5Lya5L+h55So6K+B5pyJ5pWI5pyfIik7CiAgICAgICAgICBpZiAoIV90aGlzLmFkYXBheUNvcnBNZW1iZXIubGVnYWxDZXJ0SWRFeHBpcmVzKSByZXR1cm4gX3RoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl5rOV5Lq66Lqr5Lu96K+B5pyJ5pWI5pyfIik7CiAgICAgICAgICBpZiAoIV90aGlzLmlkQ2FyZExpc3RbMF0gfHwgIV90aGlzLnNpZGVDYXJkTGlzdFswXSB8fCAhX3RoaXMuZGVwb3NpdEJhbmtMaXN0WzBdIHx8ICFfdGhpcy5idXNpbmVzc0xpc3RbMF0pIHsKICAgICAgICAgICAgcmV0dXJuIF90aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+S4iuS8oOWbvueJhyIpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX3RoaXMuYWRhcGF5Q29ycE1lbWJlci5pbWdMaXN0ID0gW190aGlzLmlkQ2FyZExpc3RbMF0udXJsLCBfdGhpcy5zaWRlQ2FyZExpc3RbMF0udXJsLCBfdGhpcy5kZXBvc2l0QmFua0xpc3RbMF0udXJsLCBfdGhpcy5idXNpbmVzc0xpc3RbMF0udXJsXTsKICAgICAgICAgICAgY29uc29sZS5sb2coX3RoaXMuYWRhcGF5Q29ycE1lbWJlci5pbWdMaXN0LCAidGhpcy5hZGFwYXlDb3JwTWVtYmVyLmltZ0xpc3QiKTsKICAgICAgICAgIH0KICAgICAgICAgICgwLCBfYWRhcGF5TWVtYmVyLnVwZGF0ZUFkYXBheU1lbWJlcikoX3RoaXMuYWRhcGF5Q29ycE1lbWJlcikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coIuS/ruaUuSIsIHJlc3BvbnNlKTsKICAgICAgICAgICAgX3RoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygi5L+u5pS55oiQ5YqfIik7CiAgICAgICAgICAgIF90aGlzLnVwZGF0ZURpYWxvZyA9IGZhbHNlOwogICAgICAgICAgICBfdGhpcy5zZWxlY3RBZGFwYXlNZW1iZXIoKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8gPCEtLSBBLeW+heWuoeaguO+8m0It5a6h5qC45aSx6LSl77ybQy3lvIDmiLflpLHotKXvvJtELeW8gOaIt+aIkOWKn+S9huacquWIm+W7uue7k+eul+i0puaIt++8m0Ut5byA5oi35ZKM5Yib5bu657uT566X6LSm5oi35oiQ5YqfCiAgICBhdWRpdFN0YXR1czogZnVuY3Rpb24gYXVkaXRTdGF0dXMoc3RhdHVzKSB7CiAgICAgIHZhciBhcnIgPSBbewogICAgICAgIHR5cGU6ICJBIiwKICAgICAgICBzdGF0dXNUaXRsZTogIuW+heWuoeaguCIKICAgICAgfSwgewogICAgICAgIHR5cGU6ICJCIiwKICAgICAgICBzdGF0dXNUaXRsZTogIuWuoeaguOWksei0pSIKICAgICAgfSwgewogICAgICAgIHR5cGU6ICJDIiwKICAgICAgICBzdGF0dXNUaXRsZTogIuW8gOaIt+Wksei0pSIKICAgICAgfSwgewogICAgICAgIHR5cGU6ICJEIiwKICAgICAgICBzdGF0dXNUaXRsZTogIuW8gOaIt+aIkOWKn+S9huacquWIm+W7uue7k+eul+i0puaItyIKICAgICAgfSwgewogICAgICAgIHR5cGU6ICJFIiwKICAgICAgICBzdGF0dXNUaXRsZTogIuW8gOaIt+WSjOWIm+W7uue7k+eul+i0puaIt+aIkOWKnyIKICAgICAgfV07CiAgICAgIHZhciBzdHIgPSBhcnIuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLnR5cGUgPT09IHN0YXR1czsKICAgICAgfSk7CiAgICAgIC8vIGNvbnNvbGUubG9nKHN0ciwnc3RyIGF1ZGl0U3RhdHVzJykKICAgICAgaWYgKHN0ciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuICLkuIAiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBzdHIuc3RhdHVzVGl0bGU7CiAgICAgIH0KICAgIH0sCiAgICBwcm92Q29kZTogZnVuY3Rpb24gcHJvdkNvZGUoY29kZSkgewogICAgICB2YXIgYXJyID0gdGhpcy5vcHRpb25zLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSA9PT0gY29kZTsKICAgICAgfSk7CiAgICAgIGlmIChhcnIgPT0gbnVsbCkgewogICAgICAgIHJldHVybiAi5LiAIjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmFyZWFMaXN0ID0gYXJyLmNpdGllczsKICAgICAgICByZXR1cm4gYXJyLnRpdGxlOwogICAgICB9CiAgICB9LAogICAgYXJlYUNvZGU6IGZ1bmN0aW9uIGFyZWFDb2RlKGFyZWEpIHsKICAgICAgdmFyIGFyciA9IHRoaXMuYXJlYUxpc3QuZmluZChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLnZhbHVlID09PSBhcmVhOwogICAgICB9KTsKICAgICAgaWYgKGFyciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuICLkuIAiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBhcnIudGl0bGU7CiAgICAgIH0KICAgIH0sCiAgICBlbnRlcnByaXNlQ2hhbmdlOiBmdW5jdGlvbiBlbnRlcnByaXNlQ2hhbmdlKHZhbHVlKSB7CiAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5wcm92Q29kZSA9IHZhbHVlWzBdOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIuYXJlYUNvZGUgPSB2YWx1ZVsxXTsKICAgIH0sCiAgICAvLyDmlrDlu7rmj5DkuqTmjInpkq4KICAgIHN1Ym1pdERpYWxvZ0Zvcm06IGZ1bmN0aW9uIHN1Ym1pdERpYWxvZ0Zvcm0oYWRhcGF5Q29ycE1lbWJlcikgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHsKICAgICAgICBsb2NrOiB0cnVlLAogICAgICAgIHRleHQ6ICfmj5DkuqTkuK0nLAogICAgICAgIHNwaW5uZXI6ICdlbC1pY29uLWxvYWRpbmcnLAogICAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIDAuNyknCiAgICAgIH0pOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIuYnVzaW5lc3NOYW1lID0gdGhpcy5hZGFwYXlDb3JwTWVtYmVyLm5hbWU7CiAgICAgIGNvbnNvbGUubG9nKCLmlrDlu7og5LyB5Lia5ZCN56ew5Lyg6YCS55qE5YC8LmJ1c2luZXNzTmFtZSIsIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5idXNpbmVzc05hbWUpOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIuc29jaWFsQ3JlZGl0Q29kZUV4cGlyZXMgPSB0aGlzLmRhdGFWYWx1ZTsKICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmxlZ2FsQ2VydElkRXhwaXJlcyA9IHRoaXMuYWRkTGVnYWxDZXJ0SWREYXRlOwogICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIubWVyY2hhbnRJZCA9IHRoaXMubWVyY2hhbnRJZDsKICAgICAgdGhpcy4kcmVmc1thZGFwYXlDb3JwTWVtYmVyXS52YWxpZGF0ZShmdW5jdGlvbiAodmFsaWQpIHsKICAgICAgICBjb25zb2xlLmxvZyhfdGhpczIuYWRhcGF5Q29ycE1lbWJlciwgInRoaXMuYWRhcGF5Q29ycE1lbWJlciIpOwogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgY29uc29sZS5sb2codmFsaWQsIGFkYXBheUNvcnBNZW1iZXIpOwogICAgICAgICAgaWYgKF90aGlzMi5hZGFwYXlDb3JwTWVtYmVyLmJhbmtBY2N0VHlwZSA9PT0gIjEiKSB7CiAgICAgICAgICAgIGlmICghX3RoaXMyLmFkYXBheUNvcnBNZW1iZXIuc29jaWFsQ3JlZGl0Q29kZUV4cGlyZXMpIHJldHVybiBfdGhpczIuJG1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl57uf5LiA56S+5Lya5L+h55So6K+B5pyJ5pWI5pyfIik7CiAgICAgICAgICAgIGlmICghX3RoaXMyLmFkYXBheUNvcnBNZW1iZXIubGVnYWxDZXJ0SWRFeHBpcmVzKSByZXR1cm4gX3RoaXMyLiRtZXNzYWdlLndhcm5pbmcoIuivt+i+k+WFpeazleS6uui6q+S7veivgeacieaViOacnyIpOwogICAgICAgICAgICBpZiAoIV90aGlzMi5pZENhcmRMaXN0WzBdIHx8ICFfdGhpczIuc2lkZUNhcmRMaXN0WzBdIHx8ICFfdGhpczIuZGVwb3NpdEJhbmtMaXN0WzBdIHx8ICFfdGhpczIuYnVzaW5lc3NMaXN0WzBdKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi4kbWVzc2FnZS53YXJuaW5nKCLor7fkuIrkvKDlm77niYciKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdGhpczIuYWRhcGF5Q29ycE1lbWJlci5pbWdMaXN0ID0gW190aGlzMi5pZENhcmRMaXN0WzBdLnVybCwgX3RoaXMyLnNpZGVDYXJkTGlzdFswXS51cmwsIF90aGlzMi5kZXBvc2l0QmFua0xpc3RbMF0udXJsLCBfdGhpczIuYnVzaW5lc3NMaXN0WzBdLnVybF07CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGNvbnNvbGUubG9nKCLmiafooYzor7fmsYLvvIzliJvlu7rmiJDlip8iKTsKICAgICAgICAgICgwLCBfYWRhcGF5TWVtYmVyLmNyZWF0ZVNldHRsZUFjY291bnQpKF90aGlzMi5hZGFwYXlDb3JwTWVtYmVyKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygi5paw5aKeIiwgcmVzcG9uc2UpOwogICAgICAgICAgICBfdGhpczIuJG1lc3NhZ2Uuc3VjY2Vzcygi5paw5aKe5oiQ5Yqf77yM6K+35Yu/6YeN5paw5o+Q5Lqk77yBIik7CiAgICAgICAgICAgIF90aGlzMi5kaWFsb2cgPSBmYWxzZTsKICAgICAgICAgICAgX3RoaXMyLnNlbGVjdEFkYXBheU1lbWJlcigpOwogICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5sb2coIuihqOagvOaPkOS6pOWksei0pe+8jOivt+iBlOezu+ezu+e7n+euoeeQhuWRmO+8gSIpOwogICAgICAgICAgX3RoaXMyLiRtZXNzYWdlLmVycm9yKCLooajmoLzmj5DkuqTlpLHotKXvvIzor7fogZTns7vns7vnu5/nrqHnkIblkZjvvIEiKTsKICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgX3RoaXMyLmRpYWxvZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICByZXNldEZvcm06IGZ1bmN0aW9uIHJlc2V0Rm9ybShhZGFwYXlDb3JwTWVtYmVyKSB7CiAgICAgIHRoaXMuJHJlZnNbYWRhcGF5Q29ycE1lbWJlcl0ucmVzZXRGaWVsZHMoKTsKICAgIH0sCiAgICAvLyDmn6Xor6LmsYfku5jkvJrlkZgKICAgIHNlbGVjdEFkYXBheU1lbWJlcjogZnVuY3Rpb24gc2VsZWN0QWRhcGF5TWVtYmVyKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgY29uc29sZS5sb2coInRoaXMubWVyY2hhbnRJZCIsIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5tZXJjaGFudElkKTsKICAgICAgdmFyIHBhcmFtID0gewogICAgICAgIG1lcmNoYW50SWQ6IHRoaXMuYWRhcGF5Q29ycE1lbWJlci5tZXJjaGFudElkCiAgICAgIH07CiAgICAgICgwLCBfYWRhcGF5TWVtYmVyLnNlbGVjdEFkYXBheU1lbWJlcikocGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgY29uc29sZS5sb2coIuafpeivoiBzZWxlY3RBZGFwYXlNZW1iZXIiLCByZXNwb25zZSk7CiAgICAgICAgX3RoaXMzLmFkYXBheU1lbWJlciA9IHJlc3BvbnNlLmRhdGE7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT0gbnVsbCkgewogICAgICAgICAgLy8g5a+55YWs6L+U5Zue55qE57uT5p6cCgogICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WvueWFrOS/oeaBrycsdGhpcy5hZGFwYXlDb3JwTWVtYmVyKQogICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc2V0dGxlQWNjb3VudExpc3QgIT09IG51bGwpIHsKICAgICAgICAgICAgX3RoaXMzLmFkYXBheUNvcnBNZW1iZXIgPSByZXNwb25zZS5kYXRhLmFkYXBheU1lbWJlcjsKICAgICAgICAgICAgX3RoaXMzLnNldHRsZUFjY291bnRMaXN0ID0gcmVzcG9uc2UuZGF0YS5zZXR0bGVBY2NvdW50TGlzdDsKICAgICAgICAgICAgX3RoaXMzLnNob3dBY2NvdW50TGlzdCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICBfdGhpczMuc2hvd0FkYXBheUNvcnAgPSByZXNwb25zZS5kYXRhLmFkYXBheUNvcnBNZW1iZXI7CiAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5hZGFwYXlDb3JwTWVtYmVyICE9IG51bGwpIHJldHVybiBfdGhpczMuYWRhcGF5Q29ycE1lbWJlciA9IHJlc3BvbnNlLmRhdGEuYWRhcGF5Q29ycE1lbWJlcjsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGpzb25IdHRwOiBmdW5jdGlvbiBqc29uSHR0cCgpIHsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICAvLygxKS7lrp7kvovljJZhamF45a+56LGhCiAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgLy8oMiku6K6+572u6K+35rGC5pa55rOV5ZKM5Zyw5Z2ACiAgICAgIC8vZ2V06K+35rGC55qE5pWw5o2u55u05o6l5re75Yqg5ZyodXJs55qE5ZCO6Z2iIOagvOW8j+aYryB1cmw/a2V5PXZhbHVlCiAgICAgIHhoci5vcGVuKCJnZXQiLCAiaHR0cHM6Ly9jZG4uY2xvdWRwbnIuY29tL2FkYXBheXJlc291cmNlL2RvY3VtZW50cy9BZGFwYXklRTclOUMlODElRTUlQjglODIlRTclQkMlOTYlRTclQTAlODElRUYlQkMlODglRTUlOUIlOUIlRTQlQkQlOEQlRUYlQkMlODkuanNvbiIpOwogICAgICAvLygzKS7lj5HpgIHor7fmsYIKICAgICAgeGhyLnNlbmQoKTsKICAgICAgLy8oNCku5rOo5YaM5Zue6LCD5Ye95pWwCiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgLy8gY29uc29sZS5sb2coeGhyLnJlc3BvbnNlVGV4dCwncmVzcG9uc2VUZXh0JykKICAgICAgICB0aGF0Lm9wdGlvbnMgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOwogICAgICB9OwogICAgfQogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuc2VsZWN0QWRhcGF5TWVtYmVyKCk7CiAgICB0aGlzLmpzb25IdHRwKCk7CiAgICB0aGlzLmJhbmtMaXN0ID0gX2JhbmtfY29kZS5kZWZhdWx0LmJhbmtMaXN0OwogICAgdGhpcy5tZXJjaGFudElkID0gdGhpcy4kcm91dGUucGFyYW1zLmlkOwogIH0KfTs="},null]} |