parse-server 9.2.0 → 9.2.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Auth.js +26 -2
- package/lib/Controllers/PushController.js +2 -2
- package/lib/Routers/PagesRouter.js +12 -10
- package/package.json +3 -3
- package/public/custom_json.html +17 -0
- package/public/custom_json.json +23 -0
- package/public/custom_page.html +15 -0
- package/public/de/email_verification_link_expired.html +24 -0
- package/public/de/email_verification_link_invalid.html +21 -0
- package/public/de/email_verification_send_fail.html +21 -0
- package/public/de/email_verification_send_success.html +19 -0
- package/public/de/email_verification_success.html +18 -0
- package/public/de/password_reset.html +65 -0
- package/public/de/password_reset_link_invalid.html +19 -0
- package/public/de/password_reset_success.html +18 -0
- package/public/de-AT/email_verification_link_expired.html +24 -0
- package/public/de-AT/email_verification_link_invalid.html +21 -0
- package/public/de-AT/email_verification_send_fail.html +21 -0
- package/public/de-AT/email_verification_send_success.html +19 -0
- package/public/de-AT/email_verification_success.html +18 -0
- package/public/de-AT/password_reset.html +65 -0
- package/public/de-AT/password_reset_link_invalid.html +19 -0
- package/public/de-AT/password_reset_success.html +18 -0
- package/public/email_verification_link_expired.html +24 -0
- package/public/email_verification_link_invalid.html +21 -0
- package/public/email_verification_send_fail.html +21 -0
- package/public/email_verification_send_success.html +19 -0
- package/public/email_verification_success.html +18 -0
- package/public/password_reset.html +65 -0
- package/public/password_reset_link_invalid.html +19 -0
- package/public/password_reset_success.html +18 -0
package/lib/Auth.js
CHANGED
|
@@ -476,7 +476,31 @@ const hasMutatedAuthData = (authData, userAuthData) => {
|
|
|
476
476
|
}
|
|
477
477
|
const providerData = authData[provider];
|
|
478
478
|
const userProviderAuthData = userAuthData[provider];
|
|
479
|
-
|
|
479
|
+
|
|
480
|
+
// If unlinking (setting to null), consider it mutated
|
|
481
|
+
if (providerData === null) {
|
|
482
|
+
mutatedAuthData[provider] = providerData;
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// If provider doesn't exist in stored data, it's new
|
|
487
|
+
if (!userProviderAuthData) {
|
|
488
|
+
mutatedAuthData[provider] = providerData;
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// Check if incoming data represents actual changes vs just echoing back
|
|
493
|
+
// what afterFind returned. If incoming data is a subset of stored data
|
|
494
|
+
// (all incoming fields match stored values), it's not mutated.
|
|
495
|
+
// If incoming data has different values or fields not in stored data, it's mutated.
|
|
496
|
+
// This handles the case where afterFind strips sensitive fields like 'code':
|
|
497
|
+
// - Incoming: { id: 'x' }, Stored: { id: 'x', code: 'secret' } -> NOT mutated (subset)
|
|
498
|
+
// - Incoming: { id: 'x', token: 'new' }, Stored: { id: 'x', token: 'old' } -> MUTATED
|
|
499
|
+
const incomingKeys = Object.keys(providerData || {});
|
|
500
|
+
const hasChanges = incomingKeys.some(key => {
|
|
501
|
+
return !(0, _util.isDeepStrictEqual)(providerData[key], userProviderAuthData[key]);
|
|
502
|
+
});
|
|
503
|
+
if (hasChanges) {
|
|
480
504
|
mutatedAuthData[provider] = providerData;
|
|
481
505
|
}
|
|
482
506
|
});
|
|
@@ -618,4 +642,4 @@ module.exports = {
|
|
|
618
642
|
checkIfUserHasProvidedConfiguredProvidersForLogin,
|
|
619
643
|
handleAuthDataValidation
|
|
620
644
|
};
|
|
621
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwidXNlckpTT04iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInVzZXJPYmplY3QiLCJnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuIiwiX3Nlc3Npb25fdG9rZW4iLCJ0aGVuIiwicmVzcG9uc2UiLCJnZXRVc2VyUm9sZXMiLCJfbG9hZFJvbGVzIiwiZ2V0Um9sZXNGb3JVc2VyIiwidXNlcnMiLCJfX3R5cGUiLCJpZCIsImVhY2giLCJyZXN1bHQiLCJwdXNoIiwiUm9sZSIsImNhY2hlZFJvbGVzIiwicm9sZSIsImNhY2hlUm9sZXMiLCJyb2xlc01hcCIsInJlZHVjZSIsIm0iLCJyIiwibmFtZXMiLCJuYW1lIiwiaWRzIiwicm9sZU5hbWVzIiwiX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzIiwiQXJyYXkiLCJjbGVhclJvbGVDYWNoZSIsImRlbCIsImdldFJvbGVzQnlJZHMiLCJpbnMiLCJjb250YWluZWRJbiIsInJvbGVzIiwiJGluIiwicm9sZUlEcyIsInF1ZXJpZWRSb2xlcyIsImZpbHRlciIsInJvbGVJRCIsIndhc1F1ZXJpZWQiLCJTZXQiLCJyZXN1bHRNYXAiLCJtZW1vIiwiY29uY2F0IiwiZmluZFVzZXJzV2l0aEF1dGhEYXRhIiwiYXV0aERhdGEiLCJiZWZvcmVGaW5kIiwicHJvdmlkZXJzIiwia2V5cyIsInF1ZXJpZXMiLCJhbGwiLCJwcm92aWRlciIsInByb3ZpZGVyQXV0aERhdGEiLCJhZGFwdGVyIiwiYXV0aERhdGFNYW5hZ2VyIiwiZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIiLCJ2YWxpZFF1ZXJpZXMiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsImZvckVhY2giLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImlzRGVlcFN0cmljdEVxdWFsIiwiY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiIsInJlcSIsInNhdmVkVXNlclByb3ZpZGVycyIsImhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciIsInNvbWUiLCJwb2xpY3kiLCJhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kIiwiaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIiwicmVxdWVzdE9iamVjdCIsImlwIiwiY2FsbCIsIk9USEVSX0NBVVNFIiwiam9pbiIsImhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiIsImZvdW5kVXNlciIsIlVzZXIiLCJnZXRVc2VySWQiLCJmZXRjaCIsInVwZGF0ZWRPYmplY3QiLCJidWlsZFBhcnNlT2JqZWN0cyIsImdldFJlcXVlc3RPYmplY3QiLCJhY2MiLCJhdXRoRGF0YVJlc3BvbnNlIiwiYXV0aEtleXMiLCJzb3J0IiwidmFsaWRhdG9yIiwiYXV0aFByb3ZpZGVyIiwiZW5hYmxlZCIsIlVOU1VQUE9SVEVEX1NFUlZJQ0UiLCJ2YWxpZGF0aW9uUmVzdWx0IiwidHJpZ2dlck5hbWUiLCJkb05vdFNhdmUiLCJzYXZlIiwiZXJyIiwicmVzb2x2ZUVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsIm1lc3NhZ2UiLCJ1c2VyU3RyaW5nIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhdXRoZW50aWNhdGlvblN0ZXAiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL0F1dGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5pbXBvcnQgeyBpc0RlZXBTdHJpY3RFcXVhbCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdE9iamVjdCwgcmVzb2x2ZUVycm9yIH0gZnJvbSAnLi90cmlnZ2Vycyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBMUlVDYWNoZSBhcyBMUlUgfSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IFJlc3RRdWVyeSBmcm9tICcuL1Jlc3RRdWVyeSc7XG5pbXBvcnQgUmVzdFdyaXRlIGZyb20gJy4vUmVzdFdyaXRlJztcblxuLy8gQW4gQXV0aCBvYmplY3QgdGVsbHMgeW91IHdobyBpcyByZXF1ZXN0aW5nIHNvbWV0aGluZyBhbmQgd2hldGhlclxuLy8gdGhlIG1hc3RlciBrZXkgd2FzIHVzZWQuXG4vLyB1c2VyT2JqZWN0IGlzIGEgUGFyc2UuVXNlciBhbmQgY2FuIGJlIG51bGwgaWYgdGhlcmUncyBubyB1c2VyLlxuZnVuY3Rpb24gQXV0aCh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyID0gdW5kZWZpbmVkLFxuICBpc01hc3RlciA9IGZhbHNlLFxuICBpc01haW50ZW5hbmNlID0gZmFsc2UsXG4gIGlzUmVhZE9ubHkgPSBmYWxzZSxcbiAgdXNlcixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICB0aGlzLmluc3RhbGxhdGlvbklkID0gaW5zdGFsbGF0aW9uSWQ7XG4gIHRoaXMuaXNNYXN0ZXIgPSBpc01hc3RlcjtcbiAgdGhpcy5pc01haW50ZW5hbmNlID0gaXNNYWludGVuYW5jZTtcbiAgdGhpcy51c2VyID0gdXNlcjtcbiAgdGhpcy5pc1JlYWRPbmx5ID0gaXNSZWFkT25seTtcblxuICAvLyBBc3N1bWluZyBhIHVzZXJzIHJvbGVzIHdvbid0IGNoYW5nZSBkdXJpbmcgYSBzaW5nbGUgcmVxdWVzdCwgd2UnbGxcbiAgLy8gb25seSBsb2FkIHRoZW0gb25jZS5cbiAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSBmYWxzZTtcbiAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgdGhpcyBhdXRoIGNvdWxkIHBvc3NpYmx5IG1vZGlmeSB0aGUgZ2l2ZW4gdXNlciBpZC5cbi8vIEl0IHN0aWxsIGNvdWxkIGJlIGZvcmJpZGRlbiB2aWEgQUNMcyBldmVuIGlmIHRoaXMgcmV0dXJucyB0cnVlLlxuQXV0aC5wcm90b3R5cGUuaXNVbmF1dGhlbnRpY2F0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLmlzTWFpbnRlbmFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMudXNlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFzdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYWludGVuYW5jZS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFpbnRlbmFuY2UoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYWludGVuYW5jZTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiByZWFkT25seShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSwgaXNSZWFkT25seTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbm9ib2R5LWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBub2JvZHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IGZhbHNlIH0pO1xufVxuXG5jb25zdCB0aHJvdHRsZSA9IG5ldyBMUlUoe1xuICBtYXg6IDEwMDAwLFxuICB0dGw6IDUwMCxcbn0pO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVkIGJhc2VkIG9uIGxhc3QgdXBkYXRlIHRpbWUgJiBzZXNzaW9uIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHtcbiAgY29uc3QgcmVzZXRBZnRlciA9IGNvbmZpZy5zZXNzaW9uTGVuZ3RoIC8gMjtcbiAgY29uc3QgbGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShzZXNzaW9uPy51cGRhdGVkQXQpO1xuICBjb25zdCBza2lwUmFuZ2UgPSBuZXcgRGF0ZSgpO1xuICBza2lwUmFuZ2Uuc2V0VGltZShza2lwUmFuZ2UuZ2V0VGltZSgpIC0gcmVzZXRBZnRlciAqIDEwMDApO1xuICByZXR1cm4gbGFzdFVwZGF0ZWQgPD0gc2tpcFJhbmdlO1xufVxuXG5jb25zdCByZW5ld1Nlc3Npb25JZk5lZWRlZCA9IGFzeW5jICh7IGNvbmZpZywgc2Vzc2lvbiwgc2Vzc2lvblRva2VuIH0pID0+IHtcbiAgaWYgKCFjb25maWc/LmV4dGVuZFNlc3Npb25PblVzZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGhyb3R0bGUuZ2V0KHNlc3Npb25Ub2tlbikpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhyb3R0bGUuc2V0KHNlc3Npb25Ub2tlbiwgdHJ1ZSk7XG4gIHRyeSB7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICBjbGFzc05hbWU6ICdfU2Vzc2lvbicsXG4gICAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgcmVzdE9wdGlvbnM6IHsgbGltaXQ6IDEgfSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgeyByZXN1bHRzIH0gPSBhd2FpdCBxdWVyeS5leGVjdXRlKCk7XG4gICAgICBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB8fCAhc2Vzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBleHBpcmVzQXQgPSBjb25maWcuZ2VuZXJhdGVTZXNzaW9uRXhwaXJlc0F0KCk7XG4gICAgYXdhaXQgbmV3IFJlc3RXcml0ZShcbiAgICAgIGNvbmZpZyxcbiAgICAgIG1hc3Rlcihjb25maWcpLFxuICAgICAgJ19TZXNzaW9uJyxcbiAgICAgIHsgb2JqZWN0SWQ6IHNlc3Npb24ub2JqZWN0SWQgfSxcbiAgICAgIHsgZXhwaXJlc0F0OiBQYXJzZS5fZW5jb2RlKGV4cGlyZXNBdCkgfVxuICAgICkuZXhlY3V0ZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGU/LmNvZGUgIT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzZXNzaW9uIGV4cGlyeTogJywgZSk7XG4gICAgfVxuICB9XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIEF1dGggb2JqZWN0XG5jb25zdCBnZXRBdXRoRm9yU2Vzc2lvblRva2VuID0gYXN5bmMgZnVuY3Rpb24gKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIsXG4gIHNlc3Npb25Ub2tlbixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIGNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgdXNlckpTT04gPSBhd2FpdCBjYWNoZUNvbnRyb2xsZXIudXNlci5nZXQoc2Vzc2lvblRva2VuKTtcbiAgICBpZiAodXNlckpTT04pIHtcbiAgICAgIGNvbnN0IGNhY2hlZFVzZXIgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04odXNlckpTT04pO1xuICAgICAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb25Ub2tlbiB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgIG5ldyBBdXRoKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY2FjaGVDb250cm9sbGVyLFxuICAgICAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgICAgICB1c2VyOiBjYWNoZWRVc2VyLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgcmVzdWx0cztcbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RPcHRpb25zID0ge1xuICAgICAgbGltaXQ6IDEsXG4gICAgICBpbmNsdWRlOiAndXNlcicsXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICBjb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgcmVzdE9wdGlvbnMsXG4gICAgfSk7XG4gICAgcmVzdWx0cyA9IChhd2FpdCBxdWVyeS5leGVjdXRlKCkpLnJlc3VsdHM7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0cyA9IChcbiAgICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5TZXNzaW9uKVxuICAgICAgICAubGltaXQoMSlcbiAgICAgICAgLmluY2x1ZGUoJ3VzZXInKVxuICAgICAgICAuZXF1YWxUbygnc2Vzc2lvblRva2VuJywgc2Vzc2lvblRva2VuKVxuICAgICAgICAuZmluZCh7IHVzZU1hc3RlcktleTogdHJ1ZSB9KVxuICAgICkubWFwKG9iaiA9PiBvYmoudG9KU09OKCkpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxIHx8ICFyZXN1bHRzWzBdWyd1c2VyJ10pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3Qgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCksXG4gICAgZXhwaXJlc0F0ID0gc2Vzc2lvbi5leHBpcmVzQXQgPyBuZXcgRGF0ZShzZXNzaW9uLmV4cGlyZXNBdC5pc28pIDogdW5kZWZpbmVkO1xuICBpZiAoZXhwaXJlc0F0IDwgbm93KSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgfVxuICBjb25zdCBvYmogPSBzZXNzaW9uLnVzZXI7XG5cbiAgaWYgKHR5cGVvZiBvYmpbJ29iamVjdElkJ10gPT09ICdzdHJpbmcnICYmIG9ialsnb2JqZWN0SWQnXS5zdGFydHNXaXRoKCdyb2xlOicpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0ludmFsaWQgb2JqZWN0IElELicpO1xuICB9XG5cbiAgZGVsZXRlIG9iai5wYXNzd29yZDtcbiAgb2JqWydjbGFzc05hbWUnXSA9ICdfVXNlcic7XG4gIG9ialsnc2Vzc2lvblRva2VuJ10gPSBzZXNzaW9uVG9rZW47XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjYWNoZUNvbnRyb2xsZXIudXNlci5wdXQoc2Vzc2lvblRva2VuLCBvYmopO1xuICB9XG4gIHJlbmV3U2Vzc2lvbklmTmVlZGVkKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSk7XG4gIGNvbnN0IHVzZXJPYmplY3QgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04ob2JqKTtcbiAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICBjb25maWcsXG4gICAgY2FjaGVDb250cm9sbGVyLFxuICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICBpbnN0YWxsYXRpb25JZCxcbiAgICB1c2VyOiB1c2VyT2JqZWN0LFxuICB9KTtcbn07XG5cbnZhciBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuID0gYXN5bmMgZnVuY3Rpb24gKHsgY29uZmlnLCBzZXNzaW9uVG9rZW4sIGluc3RhbGxhdGlvbklkIH0pIHtcbiAgdmFyIHJlc3RPcHRpb25zID0ge1xuICAgIGxpbWl0OiAxLFxuICB9O1xuICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICB2YXIgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgY29uZmlnLFxuICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICByZXN0V2hlcmU6IHsgX3Nlc3Npb25fdG9rZW46IHNlc3Npb25Ub2tlbiB9LFxuICAgIHJlc3RPcHRpb25zLFxuICB9KTtcbiAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICB2YXIgcmVzdWx0cyA9IHJlc3BvbnNlLnJlc3VsdHM7XG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnaW52YWxpZCBsZWdhY3kgc2Vzc2lvbiB0b2tlbicpO1xuICAgIH1cbiAgICBjb25zdCBvYmogPSByZXN1bHRzWzBdO1xuICAgIG9iai5jbGFzc05hbWUgPSAnX1VzZXInO1xuICAgIGNvbnN0IHVzZXJPYmplY3QgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04ob2JqKTtcbiAgICByZXR1cm4gbmV3IEF1dGgoe1xuICAgICAgY29uZmlnLFxuICAgICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICB1c2VyOiB1c2VyT2JqZWN0LFxuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygcm9sZSBuYW1lc1xuQXV0aC5wcm90b3R5cGUuZ2V0VXNlclJvbGVzID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5pc01hc3RlciB8fCB0aGlzLmlzTWFpbnRlbmFuY2UgfHwgIXRoaXMudXNlcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG4gIGlmICh0aGlzLmZldGNoZWRSb2xlcykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy51c2VyUm9sZXMpO1xuICB9XG4gIGlmICh0aGlzLnJvbGVQcm9taXNlKSB7XG4gICAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG4gIH1cbiAgdGhpcy5yb2xlUHJvbWlzZSA9IHRoaXMuX2xvYWRSb2xlcygpO1xuICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmdldFJvbGVzRm9yVXNlciA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgLy9TdGFjayBhbGwgUGFyc2UuUm9sZVxuICBjb25zdCByZXN1bHRzID0gW107XG4gIGlmICh0aGlzLmNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHtcbiAgICAgIHVzZXJzOiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgICAgIG9iamVjdElkOiB0aGlzLnVzZXIuaWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmVxdWFsVG8oJ3VzZXJzJywgdGhpcy51c2VyKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIHJvbGUgdHJlZSBhbmQgY29tcGlsZXMgYSB1c2VyJ3Mgcm9sZXNcbkF1dGgucHJvdG90eXBlLl9sb2FkUm9sZXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIGNvbnN0IGNhY2hlZFJvbGVzID0gYXdhaXQgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5nZXQodGhpcy51c2VyLmlkKTtcbiAgICBpZiAoY2FjaGVkUm9sZXMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUm9sZXMgPSBjYWNoZWRSb2xlcztcbiAgICAgIHJldHVybiBjYWNoZWRSb2xlcztcbiAgICB9XG4gIH1cblxuICAvLyBGaXJzdCBnZXQgdGhlIHJvbGUgaWRzIHRoaXMgdXNlciBpcyBkaXJlY3RseSBhIG1lbWJlciBvZlxuICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRSb2xlc0ZvclVzZXIoKTtcbiAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgIHRoaXMudXNlclJvbGVzID0gW107XG4gICAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICAgIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuXG4gICAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gICAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xuICB9XG5cbiAgY29uc3Qgcm9sZXNNYXAgPSByZXN1bHRzLnJlZHVjZShcbiAgICAobSwgcikgPT4ge1xuICAgICAgbS5uYW1lcy5wdXNoKHIubmFtZSk7XG4gICAgICBtLmlkcy5wdXNoKHIub2JqZWN0SWQpO1xuICAgICAgcmV0dXJuIG07XG4gICAgfSxcbiAgICB7IGlkczogW10sIG5hbWVzOiBbXSB9XG4gICk7XG5cbiAgLy8gcnVuIHRoZSByZWN1cnNpdmUgZmluZGluZ1xuICBjb25zdCByb2xlTmFtZXMgPSBhd2FpdCB0aGlzLl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyhyb2xlc01hcC5pZHMsIHJvbGVzTWFwLm5hbWVzKTtcbiAgdGhpcy51c2VyUm9sZXMgPSByb2xlTmFtZXMubWFwKHIgPT4ge1xuICAgIHJldHVybiAncm9sZTonICsgcjtcbiAgfSk7XG4gIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG4gIHRoaXMuY2FjaGVSb2xlcygpO1xuICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5jYWNoZVJvbGVzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUucHV0KHRoaXMudXNlci5pZCwgQXJyYXkoLi4udGhpcy51c2VyUm9sZXMpKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5jbGVhclJvbGVDYWNoZSA9IGZ1bmN0aW9uIChzZXNzaW9uVG9rZW4pIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmRlbCh0aGlzLnVzZXIuaWQpO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlci51c2VyLmRlbChzZXNzaW9uVG9rZW4pO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmdldFJvbGVzQnlJZHMgPSBhc3luYyBmdW5jdGlvbiAoaW5zKSB7XG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgLy8gQnVpbGQgYW4gT1IgcXVlcnkgYWNyb3NzIGFsbCBwYXJlbnRSb2xlc1xuICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuY29udGFpbmVkSW4oXG4gICAgICAgICdyb2xlcycsXG4gICAgICAgIGlucy5tYXAoaWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvbGUgPSBuZXcgUGFyc2UuT2JqZWN0KFBhcnNlLlJvbGUpO1xuICAgICAgICAgIHJvbGUuaWQgPSBpZDtcbiAgICAgICAgICByZXR1cm4gcm9sZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgcm9sZXMgPSBpbnMubWFwKGlkID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICAgIG9iamVjdElkOiBpZCxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdFdoZXJlID0geyByb2xlczogeyAkaW46IHJvbGVzIH0gfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBHaXZlbiBhIGxpc3Qgb2Ygcm9sZUlkcywgZmluZCBhbGwgdGhlIHBhcmVudCByb2xlcywgcmV0dXJucyBhIHByb21pc2Ugd2l0aCBhbGwgbmFtZXNcbkF1dGgucHJvdG90eXBlLl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyA9IGZ1bmN0aW9uIChyb2xlSURzLCBuYW1lcyA9IFtdLCBxdWVyaWVkUm9sZXMgPSB7fSkge1xuICBjb25zdCBpbnMgPSByb2xlSURzLmZpbHRlcihyb2xlSUQgPT4ge1xuICAgIGNvbnN0IHdhc1F1ZXJpZWQgPSBxdWVyaWVkUm9sZXNbcm9sZUlEXSAhPT0gdHJ1ZTtcbiAgICBxdWVyaWVkUm9sZXNbcm9sZUlEXSA9IHRydWU7XG4gICAgcmV0dXJuIHdhc1F1ZXJpZWQ7XG4gIH0pO1xuXG4gIC8vIGFsbCByb2xlcyBhcmUgYWNjb3VudGVkIGZvciwgcmV0dXJuIHRoZSBuYW1lc1xuICBpZiAoaW5zLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmdldFJvbGVzQnlJZHMoaW5zKVxuICAgIC50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgLy8gTm90aGluZyBmb3VuZFxuICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5hbWVzKTtcbiAgICAgIH1cbiAgICAgIC8vIE1hcCB0aGUgcmVzdWx0cyB3aXRoIGFsbCBJZHMgYW5kIG5hbWVzXG4gICAgICBjb25zdCByZXN1bHRNYXAgPSByZXN1bHRzLnJlZHVjZShcbiAgICAgICAgKG1lbW8sIHJvbGUpID0+IHtcbiAgICAgICAgICBtZW1vLm5hbWVzLnB1c2gocm9sZS5uYW1lKTtcbiAgICAgICAgICBtZW1vLmlkcy5wdXNoKHJvbGUub2JqZWN0SWQpO1xuICAgICAgICAgIHJldHVybiBtZW1vO1xuICAgICAgICB9LFxuICAgICAgICB7IGlkczogW10sIG5hbWVzOiBbXSB9XG4gICAgICApO1xuICAgICAgLy8gc3RvcmUgdGhlIG5ldyBmb3VuZCBuYW1lc1xuICAgICAgbmFtZXMgPSBuYW1lcy5jb25jYXQocmVzdWx0TWFwLm5hbWVzKTtcbiAgICAgIC8vIGZpbmQgdGhlIG5leHQgb25lcywgY2lyY3VsYXIgcm9sZXMgd2lsbCBiZSBjdXRcbiAgICAgIHJldHVybiB0aGlzLl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyhyZXN1bHRNYXAuaWRzLCBuYW1lcywgcXVlcmllZFJvbGVzKTtcbiAgICB9KVxuICAgIC50aGVuKG5hbWVzID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoWy4uLm5ldyBTZXQobmFtZXMpXSk7XG4gICAgfSk7XG59O1xuXG5jb25zdCBmaW5kVXNlcnNXaXRoQXV0aERhdGEgPSBhc3luYyAoY29uZmlnLCBhdXRoRGF0YSwgYmVmb3JlRmluZCkgPT4ge1xuICBjb25zdCBwcm92aWRlcnMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSk7XG5cbiAgY29uc3QgcXVlcmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHByb3ZpZGVycy5tYXAoYXN5bmMgcHJvdmlkZXIgPT4ge1xuICAgICAgY29uc3QgcHJvdmlkZXJBdXRoRGF0YSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcblxuICAgICAgY29uc3QgYWRhcHRlciA9IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpPy5hZGFwdGVyO1xuICAgICAgaWYgKGJlZm9yZUZpbmQgJiYgdHlwZW9mIGFkYXB0ZXI/LmJlZm9yZUZpbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYXdhaXQgYWRhcHRlci5iZWZvcmVGaW5kKHByb3ZpZGVyQXV0aERhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXByb3ZpZGVyQXV0aERhdGE/LmlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBbYGF1dGhEYXRhLiR7cHJvdmlkZXJ9LmlkYF06IHByb3ZpZGVyQXV0aERhdGEuaWQgfTtcbiAgICB9KVxuICApO1xuXG4gIC8vIEZpbHRlciBvdXQgbnVsbCBxdWVyaWVzXG4gIGNvbnN0IHZhbGlkUXVlcmllcyA9IHF1ZXJpZXMuZmlsdGVyKHF1ZXJ5ID0+IHF1ZXJ5ICE9PSBudWxsKTtcblxuICBpZiAoIXZhbGlkUXVlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBQZXJmb3JtIGRhdGFiYXNlIHF1ZXJ5XG4gIHJldHVybiBjb25maWcuZGF0YWJhc2UuZmluZCgnX1VzZXInLCB7ICRvcjogdmFsaWRRdWVyaWVzIH0sIHsgbGltaXQ6IDIgfSk7XG59O1xuXG5jb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSAoYXV0aERhdGEsIHVzZXJBdXRoRGF0YSkgPT4ge1xuICBpZiAoIXVzZXJBdXRoRGF0YSkgeyByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGE6IHRydWUsIG11dGF0ZWRBdXRoRGF0YTogYXV0aERhdGEgfTsgfVxuICBjb25zdCBtdXRhdGVkQXV0aERhdGEgPSB7fTtcbiAgT2JqZWN0LmtleXMoYXV0aERhdGEpLmZvckVhY2gocHJvdmlkZXIgPT4ge1xuICAgIC8vIEFub255bW91cyBwcm92aWRlciBpcyBub3QgaGFuZGxlZCB0aGlzIHdheVxuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHJvdmlkZXJEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgIGNvbnN0IHVzZXJQcm92aWRlckF1dGhEYXRhID0gdXNlckF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBpZiAoIWlzRGVlcFN0cmljdEVxdWFsKHByb3ZpZGVyRGF0YSwgdXNlclByb3ZpZGVyQXV0aERhdGEpKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IE9iamVjdC5rZXlzKG11dGF0ZWRBdXRoRGF0YSkubGVuZ3RoICE9PSAwO1xuICByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGEsIG11dGF0ZWRBdXRoRGF0YSB9O1xufTtcblxuY29uc3QgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiA9IChcbiAgcmVxID0ge30sXG4gIGF1dGhEYXRhID0ge30sXG4gIHVzZXJBdXRoRGF0YSA9IHt9LFxuICBjb25maWdcbikgPT4ge1xuICBjb25zdCBzYXZlZFVzZXJQcm92aWRlcnMgPSBPYmplY3Qua2V5cyh1c2VyQXV0aERhdGEpLm1hcChwcm92aWRlciA9PiAoe1xuICAgIG5hbWU6IHByb3ZpZGVyLFxuICAgIGFkYXB0ZXI6IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpLmFkYXB0ZXIsXG4gIH0pKTtcblxuICBjb25zdCBoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShcbiAgICBwcm92aWRlciA9PlxuICAgICAgcHJvdmlkZXIgJiYgcHJvdmlkZXIuYWRhcHRlciAmJiBwcm92aWRlci5hZGFwdGVyLnBvbGljeSA9PT0gJ3NvbG8nICYmIGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdXG4gICk7XG5cbiAgLy8gU29sbyBwcm92aWRlcnMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgc2FmZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHNcbiAgLy8gdG8gcHJvdmlkZSBhbiBhZGRpdGlvbmFsIHByb3ZpZGVyIHRvIGxvZ2luLiBBbiBhdXRoIGFkYXB0ZXIgd2l0aCBcInNvbG9cIiAobGlrZSB3ZWJhdXRobikgbWVhbnNcbiAgLy8gbm8gXCJhZGRpdGlvbmFsXCIgYXV0aCBuZWVkcyB0byBiZSBwcm92aWRlZCB0byBsb2dpbiAobGlrZSBPVFAsIE1GQSlcbiAgaWYgKGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQgPSBbXTtcbiAgY29uc3QgaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUocHJvdmlkZXIgPT4ge1xuICAgIGxldCBwb2xpY3kgPSBwcm92aWRlci5hZGFwdGVyLnBvbGljeTtcbiAgICBpZiAodHlwZW9mIHBvbGljeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVxdWVzdE9iamVjdCA9IHtcbiAgICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgIG1hc3RlcjogcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB9O1xuICAgICAgcG9saWN5ID0gcG9saWN5LmNhbGwocHJvdmlkZXIuYWRhcHRlciwgcmVxdWVzdE9iamVjdCwgdXNlckF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKTtcbiAgICB9XG4gICAgaWYgKHBvbGljeSA9PT0gJ2FkZGl0aW9uYWwnKSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXIubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQdXNoIG1pc3NpbmcgcHJvdmlkZXIgZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5wdXNoKHByb3ZpZGVyLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgfHwgIWFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgIGBNaXNzaW5nIGFkZGl0aW9uYWwgYXV0aERhdGEgJHthZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmpvaW4oJywnKX1gXG4gICk7XG59O1xuXG4vLyBWYWxpZGF0ZSBlYWNoIGF1dGhEYXRhIHN0ZXAtYnktc3RlcCBhbmQgcmV0dXJuIHRoZSBwcm92aWRlciByZXNwb25zZXNcbmNvbnN0IGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiA9IGFzeW5jIChhdXRoRGF0YSwgcmVxLCBmb3VuZFVzZXIpID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcikgfHwge307XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENB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QyxDQUFDdkcsTUFBTSxFQUFFO1FBQ3pDK0YsR0FBRyxDQUFDMUMsUUFBUSxDQUFDTSxRQUFRLENBQUMsR0FBR04sUUFBUSxDQUFDTSxRQUFRLENBQUM7UUFDM0M7TUFDRjtNQUVBLElBQUk0QyxnQkFBZ0IsQ0FBQzNGLFFBQVEsRUFBRTtRQUM3Qm1GLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUNyQyxRQUFRLENBQUMsR0FBRzRDLGdCQUFnQixDQUFDM0YsUUFBUTtNQUM1RDtNQUNBO01BQ0EsSUFBSSxDQUFDMkYsZ0JBQWdCLENBQUNFLFNBQVMsRUFBRTtRQUMvQlYsR0FBRyxDQUFDMUMsUUFBUSxDQUFDTSxRQUFRLENBQUMsR0FBRzRDLGdCQUFnQixDQUFDRyxJQUFJLElBQUlyRCxRQUFRLENBQUNNLFFBQVEsQ0FBQztNQUN0RTtJQUNGLENBQUMsQ0FBQyxPQUFPZ0QsR0FBRyxFQUFFO01BQ1osTUFBTTFMLENBQUMsR0FBRyxJQUFBMkwsc0JBQVksRUFBQ0QsR0FBRyxFQUFFO1FBQzFCaEksSUFBSSxFQUFFdkQsS0FBSyxDQUFDd0QsS0FBSyxDQUFDaUksYUFBYTtRQUMvQkMsT0FBTyxFQUFFO01BQ1gsQ0FBQyxDQUFDO01BQ0YsTUFBTUMsVUFBVSxHQUNkcEMsR0FBRyxDQUFDN0csSUFBSSxJQUFJNkcsR0FBRyxDQUFDN0csSUFBSSxDQUFDbEMsSUFBSSxHQUFHK0ksR0FBRyxDQUFDN0csSUFBSSxDQUFDbEMsSUFBSSxDQUFDc0YsRUFBRSxHQUFHeUQsR0FBRyxDQUFDcUMsSUFBSSxDQUFDdkksUUFBUSxJQUFJakQsU0FBUztNQUMvRXNELGNBQU0sQ0FBQ0MsS0FBSyxDQUNWLDRCQUE0Qm5CLE1BQU0sUUFBUStGLFFBQVEsYUFBYW9ELFVBQVUsZUFBZSxHQUN0RkUsSUFBSSxDQUFDQyxTQUFTLENBQUNqTSxDQUFDLENBQUMsRUFDbkI7UUFDRWtNLGtCQUFrQixFQUFFdkosTUFBTTtRQUMxQm1CLEtBQUssRUFBRTlELENBQUM7UUFDUlcsSUFBSSxFQUFFbUwsVUFBVTtRQUNoQnBEO01BQ0YsQ0FDRixDQUFDO01BQ0QsTUFBTTFJLENBQUM7SUFDVDtFQUNGO0VBQ0EsT0FBTzhLLEdBQUc7QUFDWixDQUFDO0FBRURxQixNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmaE0sSUFBSTtFQUNKYyxNQUFNO0VBQ05DLFdBQVc7RUFDWEUsTUFBTTtFQUNORCxRQUFRO0VBQ1JNLHlCQUF5QjtFQUN6QnFDLHNCQUFzQjtFQUN0QnlCLDRCQUE0QjtFQUM1QjJDLHFCQUFxQjtFQUNyQmUsa0JBQWtCO0VBQ2xCTyxpREFBaUQ7RUFDakRhO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
645
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwidXNlckpTT04iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInVzZXJPYmplY3QiLCJnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuIiwiX3Nlc3Npb25fdG9rZW4iLCJ0aGVuIiwicmVzcG9uc2UiLCJnZXRVc2VyUm9sZXMiLCJfbG9hZFJvbGVzIiwiZ2V0Um9sZXNGb3JVc2VyIiwidXNlcnMiLCJfX3R5cGUiLCJpZCIsImVhY2giLCJyZXN1bHQiLCJwdXNoIiwiUm9sZSIsImNhY2hlZFJvbGVzIiwicm9sZSIsImNhY2hlUm9sZXMiLCJyb2xlc01hcCIsInJlZHVjZSIsIm0iLCJyIiwibmFtZXMiLCJuYW1lIiwiaWRzIiwicm9sZU5hbWVzIiwiX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzIiwiQXJyYXkiLCJjbGVhclJvbGVDYWNoZSIsImRlbCIsImdldFJvbGVzQnlJZHMiLCJpbnMiLCJjb250YWluZWRJbiIsInJvbGVzIiwiJGluIiwicm9sZUlEcyIsInF1ZXJpZWRSb2xlcyIsImZpbHRlciIsInJvbGVJRCIsIndhc1F1ZXJpZWQiLCJTZXQiLCJyZXN1bHRNYXAiLCJtZW1vIiwiY29uY2F0IiwiZmluZFVzZXJzV2l0aEF1dGhEYXRhIiwiYXV0aERhdGEiLCJiZWZvcmVGaW5kIiwicHJvdmlkZXJzIiwia2V5cyIsInF1ZXJpZXMiLCJhbGwiLCJwcm92aWRlciIsInByb3ZpZGVyQXV0aERhdGEiLCJhZGFwdGVyIiwiYXV0aERhdGFNYW5hZ2VyIiwiZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIiLCJ2YWxpZFF1ZXJpZXMiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsImZvckVhY2giLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImluY29taW5nS2V5cyIsImhhc0NoYW5nZXMiLCJzb21lIiwia2V5IiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwicmVxIiwic2F2ZWRVc2VyUHJvdmlkZXJzIiwiaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyIiwicG9saWN5IiwiYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCIsImhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciIsInJlcXVlc3RPYmplY3QiLCJpcCIsImNhbGwiLCJPVEhFUl9DQVVTRSIsImpvaW4iLCJoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24iLCJmb3VuZFVzZXIiLCJVc2VyIiwiZ2V0VXNlcklkIiwiZmV0Y2giLCJ1cGRhdGVkT2JqZWN0IiwiYnVpbGRQYXJzZU9iamVjdHMiLCJnZXRSZXF1ZXN0T2JqZWN0IiwiYWNjIiwiYXV0aERhdGFSZXNwb25zZSIsImF1dGhLZXlzIiwic29ydCIsInZhbGlkYXRvciIsImF1dGhQcm92aWRlciIsImVuYWJsZWQiLCJVTlNVUFBPUlRFRF9TRVJWSUNFIiwidmFsaWRhdGlvblJlc3VsdCIsInRyaWdnZXJOYW1lIiwiZG9Ob3RTYXZlIiwic2F2ZSIsImVyciIsInJlc29sdmVFcnJvciIsIlNDUklQVF9GQUlMRUQiLCJtZXNzYWdlIiwidXNlclN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiYXV0aGVudGljYXRpb25TdGVwIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9BdXRoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpO1xuaW1wb3J0IHsgaXNEZWVwU3RyaWN0RXF1YWwgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IGdldFJlcXVlc3RPYmplY3QsIHJlc29sdmVFcnJvciB9IGZyb20gJy4vdHJpZ2dlcnMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgTFJVQ2FjaGUgYXMgTFJVIH0gZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCBSZXN0UXVlcnkgZnJvbSAnLi9SZXN0UXVlcnknO1xuaW1wb3J0IFJlc3RXcml0ZSBmcm9tICcuL1Jlc3RXcml0ZSc7XG5cbi8vIEFuIEF1dGggb2JqZWN0IHRlbGxzIHlvdSB3aG8gaXMgcmVxdWVzdGluZyBzb21ldGhpbmcgYW5kIHdoZXRoZXJcbi8vIHRoZSBtYXN0ZXIga2V5IHdhcyB1c2VkLlxuLy8gdXNlck9iamVjdCBpcyBhIFBhcnNlLlVzZXIgYW5kIGNhbiBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gdXNlci5cbmZ1bmN0aW9uIEF1dGgoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlciA9IHVuZGVmaW5lZCxcbiAgaXNNYXN0ZXIgPSBmYWxzZSxcbiAgaXNNYWludGVuYW5jZSA9IGZhbHNlLFxuICBpc1JlYWRPbmx5ID0gZmFsc2UsXG4gIHVzZXIsXG4gIGluc3RhbGxhdGlvbklkLFxufSkge1xuICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIgPSBjYWNoZUNvbnRyb2xsZXIgfHwgKGNvbmZpZyAmJiBjb25maWcuY2FjaGVDb250cm9sbGVyKTtcbiAgdGhpcy5pbnN0YWxsYXRpb25JZCA9IGluc3RhbGxhdGlvbklkO1xuICB0aGlzLmlzTWFzdGVyID0gaXNNYXN0ZXI7XG4gIHRoaXMuaXNNYWludGVuYW5jZSA9IGlzTWFpbnRlbmFuY2U7XG4gIHRoaXMudXNlciA9IHVzZXI7XG4gIHRoaXMuaXNSZWFkT25seSA9IGlzUmVhZE9ubHk7XG5cbiAgLy8gQXNzdW1pbmcgYSB1c2VycyByb2xlcyB3b24ndCBjaGFuZ2UgZHVyaW5nIGEgc2luZ2xlIHJlcXVlc3QsIHdlJ2xsXG4gIC8vIG9ubHkgbG9hZCB0aGVtIG9uY2UuXG4gIHRoaXMudXNlclJvbGVzID0gW107XG4gIHRoaXMuZmV0Y2hlZFJvbGVzID0gZmFsc2U7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xufVxuXG4vLyBXaGV0aGVyIHRoaXMgYXV0aCBjb3VsZCBwb3NzaWJseSBtb2RpZnkgdGhlIGdpdmVuIHVzZXIgaWQuXG4vLyBJdCBzdGlsbCBjb3VsZCBiZSBmb3JiaWRkZW4gdmlhIEFDTHMgZXZlbiBpZiB0aGlzIHJldHVybnMgdHJ1ZS5cbkF1dGgucHJvdG90eXBlLmlzVW5hdXRoZW50aWNhdGVkID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5pc01hc3Rlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5pc01haW50ZW5hbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1hc3Rlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFpbnRlbmFuY2UtbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1haW50ZW5hbmNlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFpbnRlbmFuY2U6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gcmVhZE9ubHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUsIGlzUmVhZE9ubHk6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG5vYm9keS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbm9ib2R5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiBmYWxzZSB9KTtcbn1cblxuY29uc3QgdGhyb3R0bGUgPSBuZXcgTFJVKHtcbiAgbWF4OiAxMDAwMCxcbiAgdHRsOiA1MDAsXG59KTtcbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgc2Vzc2lvbiBzaG91bGQgYmUgdXBkYXRlZCBiYXNlZCBvbiBsYXN0IHVwZGF0ZSB0aW1lICYgc2Vzc2lvbiBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB7XG4gIGNvbnN0IHJlc2V0QWZ0ZXIgPSBjb25maWcuc2Vzc2lvbkxlbmd0aCAvIDI7XG4gIGNvbnN0IGxhc3RVcGRhdGVkID0gbmV3IERhdGUoc2Vzc2lvbj8udXBkYXRlZEF0KTtcbiAgY29uc3Qgc2tpcFJhbmdlID0gbmV3IERhdGUoKTtcbiAgc2tpcFJhbmdlLnNldFRpbWUoc2tpcFJhbmdlLmdldFRpbWUoKSAtIHJlc2V0QWZ0ZXIgKiAxMDAwKTtcbiAgcmV0dXJuIGxhc3RVcGRhdGVkIDw9IHNraXBSYW5nZTtcbn1cblxuY29uc3QgcmVuZXdTZXNzaW9uSWZOZWVkZWQgPSBhc3luYyAoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KSA9PiB7XG4gIGlmICghY29uZmlnPy5leHRlbmRTZXNzaW9uT25Vc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHRocm90dGxlLmdldChzZXNzaW9uVG9rZW4pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm90dGxlLnNldChzZXNzaW9uVG9rZW4sIHRydWUpO1xuICB0cnkge1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICAgIHJlc3RPcHRpb25zOiB7IGxpbWl0OiAxIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHsgcmVzdWx0cyB9ID0gYXdhaXQgcXVlcnkuZXhlY3V0ZSgpO1xuICAgICAgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gICAgfVxuXG4gICAgaWYgKCFzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5KGNvbmZpZywgc2Vzc2lvbikgfHwgIXNlc3Npb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0F0ID0gY29uZmlnLmdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCgpO1xuICAgIGF3YWl0IG5ldyBSZXN0V3JpdGUoXG4gICAgICBjb25maWcsXG4gICAgICBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICdfU2Vzc2lvbicsXG4gICAgICB7IG9iamVjdElkOiBzZXNzaW9uLm9iamVjdElkIH0sXG4gICAgICB7IGV4cGlyZXNBdDogUGFyc2UuX2VuY29kZShleHBpcmVzQXQpIH1cbiAgICApLmV4ZWN1dGUoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlPy5jb2RlICE9PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc2Vzc2lvbiBleHBpcnk6ICcsIGUpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBBdXRoIG9iamVjdFxuY29uc3QgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyLFxuICBzZXNzaW9uVG9rZW4sXG4gIGluc3RhbGxhdGlvbklkLFxufSkge1xuICBjYWNoZUNvbnRyb2xsZXIgPSBjYWNoZUNvbnRyb2xsZXIgfHwgKGNvbmZpZyAmJiBjb25maWcuY2FjaGVDb250cm9sbGVyKTtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNvbnN0IHVzZXJKU09OID0gYXdhaXQgY2FjaGVDb250cm9sbGVyLnVzZXIuZ2V0KHNlc3Npb25Ub2tlbik7XG4gICAgaWYgKHVzZXJKU09OKSB7XG4gICAgICBjb25zdCBjYWNoZWRVc2VyID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKHVzZXJKU09OKTtcbiAgICAgIHJlbmV3U2Vzc2lvbklmTmVlZGVkKHsgY29uZmlnLCBzZXNzaW9uVG9rZW4gfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICBuZXcgQXV0aCh7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICAgICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAgdXNlcjogY2FjaGVkVXNlcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3VsdHM7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IHtcbiAgICAgIGxpbWl0OiAxLFxuICAgICAgaW5jbHVkZTogJ3VzZXInLFxuICAgIH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgIHJlc3RPcHRpb25zLFxuICAgIH0pO1xuICAgIHJlc3VsdHMgPSAoYXdhaXQgcXVlcnkuZXhlY3V0ZSgpKS5yZXN1bHRzO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdHMgPSAoXG4gICAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuU2Vzc2lvbilcbiAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgIC5pbmNsdWRlKCd1c2VyJylcbiAgICAgICAgLmVxdWFsVG8oJ3Nlc3Npb25Ub2tlbicsIHNlc3Npb25Ub2tlbilcbiAgICAgICAgLmZpbmQoeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSlcbiAgICApLm1hcChvYmogPT4gb2JqLnRvSlNPTigpKTtcbiAgfVxuXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSB8fCAhcmVzdWx0c1swXVsndXNlciddKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ0ludmFsaWQgc2Vzc2lvbiB0b2tlbicpO1xuICB9XG4gIGNvbnN0IHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLFxuICAgIGV4cGlyZXNBdCA9IHNlc3Npb24uZXhwaXJlc0F0ID8gbmV3IERhdGUoc2Vzc2lvbi5leHBpcmVzQXQuaXNvKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGV4cGlyZXNBdCA8IG5vdykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIGlzIGV4cGlyZWQuJyk7XG4gIH1cbiAgY29uc3Qgb2JqID0gc2Vzc2lvbi51c2VyO1xuXG4gIGlmICh0eXBlb2Ygb2JqWydvYmplY3RJZCddID09PSAnc3RyaW5nJyAmJiBvYmpbJ29iamVjdElkJ10uc3RhcnRzV2l0aCgncm9sZTonKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsICdJbnZhbGlkIG9iamVjdCBJRC4nKTtcbiAgfVxuXG4gIGRlbGV0ZSBvYmoucGFzc3dvcmQ7XG4gIG9ialsnY2xhc3NOYW1lJ10gPSAnX1VzZXInO1xuICBvYmpbJ3Nlc3Npb25Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY2FjaGVDb250cm9sbGVyLnVzZXIucHV0KHNlc3Npb25Ub2tlbiwgb2JqKTtcbiAgfVxuICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvbiwgc2Vzc2lvblRva2VuIH0pO1xuICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gIHJldHVybiBuZXcgQXV0aCh7XG4gICAgY29uZmlnLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgdXNlcjogdXNlck9iamVjdCxcbiAgfSk7XG59O1xuXG52YXIgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7IGNvbmZpZywgc2Vzc2lvblRva2VuLCBpbnN0YWxsYXRpb25JZCB9KSB7XG4gIHZhciByZXN0T3B0aW9ucyA9IHtcbiAgICBsaW1pdDogMSxcbiAgfTtcbiAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgdmFyIHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgIGNvbmZpZyxcbiAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgcmVzdFdoZXJlOiB7IF9zZXNzaW9uX3Rva2VuOiBzZXNzaW9uVG9rZW4gfSxcbiAgICByZXN0T3B0aW9ucyxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgdmFyIHJlc3VsdHMgPSByZXNwb25zZS5yZXN1bHRzO1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ2ludmFsaWQgbGVnYWN5IHNlc3Npb24gdG9rZW4nKTtcbiAgICB9XG4gICAgY29uc3Qgb2JqID0gcmVzdWx0c1swXTtcbiAgICBvYmouY2xhc3NOYW1lID0gJ19Vc2VyJztcbiAgICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gICAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgdXNlcjogdXNlck9iamVjdCxcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHJvbGUgbmFtZXNcbkF1dGgucHJvdG90eXBlLmdldFVzZXJSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIgfHwgdGhpcy5pc01haW50ZW5hbmNlIHx8ICF0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgfVxuICBpZiAodGhpcy5mZXRjaGVkUm9sZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlclJvbGVzKTtcbiAgfVxuICBpZiAodGhpcy5yb2xlUHJvbWlzZSkge1xuICAgIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xuICB9XG4gIHRoaXMucm9sZVByb21pc2UgPSB0aGlzLl9sb2FkUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0ZvclVzZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIC8vU3RhY2sgYWxsIFBhcnNlLlJvbGVcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICBpZiAodGhpcy5jb25maWcpIHtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7XG4gICAgICB1c2Vyczoge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgICAgICBvYmplY3RJZDogdGhpcy51c2VyLmlkLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5lcXVhbFRvKCd1c2VycycsIHRoaXMudXNlcilcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSByb2xlIHRyZWUgYW5kIGNvbXBpbGVzIGEgdXNlcidzIHJvbGVzXG5BdXRoLnByb3RvdHlwZS5fbG9hZFJvbGVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWRSb2xlcyA9IGF3YWl0IHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZ2V0KHRoaXMudXNlci5pZCk7XG4gICAgaWYgKGNhY2hlZFJvbGVzICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMudXNlclJvbGVzID0gY2FjaGVkUm9sZXM7XG4gICAgICByZXR1cm4gY2FjaGVkUm9sZXM7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgZ2V0IHRoZSByb2xlIGlkcyB0aGlzIHVzZXIgaXMgZGlyZWN0bHkgYSBtZW1iZXIgb2ZcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZ2V0Um9sZXNGb3JVc2VyKCk7XG4gIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcblxuICAgIHRoaXMuY2FjaGVSb2xlcygpO1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbiAgfVxuXG4gIGNvbnN0IHJvbGVzTWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKG0sIHIpID0+IHtcbiAgICAgIG0ubmFtZXMucHVzaChyLm5hbWUpO1xuICAgICAgbS5pZHMucHVzaChyLm9iamVjdElkKTtcbiAgICAgIHJldHVybiBtO1xuICAgIH0sXG4gICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICApO1xuXG4gIC8vIHJ1biB0aGUgcmVjdXJzaXZlIGZpbmRpbmdcbiAgY29uc3Qgcm9sZU5hbWVzID0gYXdhaXQgdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocm9sZXNNYXAuaWRzLCByb2xlc01hcC5uYW1lcyk7XG4gIHRoaXMudXNlclJvbGVzID0gcm9sZU5hbWVzLm1hcChyID0+IHtcbiAgICByZXR1cm4gJ3JvbGU6JyArIHI7XG4gIH0pO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2FjaGVSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLnB1dCh0aGlzLnVzZXIuaWQsIEFycmF5KC4uLnRoaXMudXNlclJvbGVzKSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2xlYXJSb2xlQ2FjaGUgPSBmdW5jdGlvbiAoc2Vzc2lvblRva2VuKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5kZWwodGhpcy51c2VyLmlkKTtcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0J5SWRzID0gYXN5bmMgZnVuY3Rpb24gKGlucykge1xuICBjb25zdCByZXN1bHRzID0gW107XG4gIC8vIEJ1aWxkIGFuIE9SIHF1ZXJ5IGFjcm9zcyBhbGwgcGFyZW50Um9sZXNcbiAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmNvbnRhaW5lZEluKFxuICAgICAgICAncm9sZXMnLFxuICAgICAgICBpbnMubWFwKGlkID0+IHtcbiAgICAgICAgICBjb25zdCByb2xlID0gbmV3IFBhcnNlLk9iamVjdChQYXJzZS5Sb2xlKTtcbiAgICAgICAgICByb2xlLmlkID0gaWQ7XG4gICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJvbGVzID0gaW5zLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgICBvYmplY3RJZDogaWQsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHsgcm9sZXM6IHsgJGluOiByb2xlcyB9IH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gR2l2ZW4gYSBsaXN0IG9mIHJvbGVJZHMsIGZpbmQgYWxsIHRoZSBwYXJlbnQgcm9sZXMsIHJldHVybnMgYSBwcm9taXNlIHdpdGggYWxsIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMgPSBmdW5jdGlvbiAocm9sZUlEcywgbmFtZXMgPSBbXSwgcXVlcmllZFJvbGVzID0ge30pIHtcbiAgY29uc3QgaW5zID0gcm9sZUlEcy5maWx0ZXIocm9sZUlEID0+IHtcbiAgICBjb25zdCB3YXNRdWVyaWVkID0gcXVlcmllZFJvbGVzW3JvbGVJRF0gIT09IHRydWU7XG4gICAgcXVlcmllZFJvbGVzW3JvbGVJRF0gPSB0cnVlO1xuICAgIHJldHVybiB3YXNRdWVyaWVkO1xuICB9KTtcblxuICAvLyBhbGwgcm9sZXMgYXJlIGFjY291bnRlZCBmb3IsIHJldHVybiB0aGUgbmFtZXNcbiAgaWYgKGlucy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoWy4uLm5ldyBTZXQobmFtZXMpXSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5nZXRSb2xlc0J5SWRzKGlucylcbiAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIC8vIE5vdGhpbmcgZm91bmRcbiAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuYW1lcyk7XG4gICAgICB9XG4gICAgICAvLyBNYXAgdGhlIHJlc3VsdHMgd2l0aCBhbGwgSWRzIGFuZCBuYW1lc1xuICAgICAgY29uc3QgcmVzdWx0TWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgIChtZW1vLCByb2xlKSA9PiB7XG4gICAgICAgICAgbWVtby5uYW1lcy5wdXNoKHJvbGUubmFtZSk7XG4gICAgICAgICAgbWVtby5pZHMucHVzaChyb2xlLm9iamVjdElkKTtcbiAgICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgICAgfSxcbiAgICAgICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICAgICAgKTtcbiAgICAgIC8vIHN0b3JlIHRoZSBuZXcgZm91bmQgbmFtZXNcbiAgICAgIG5hbWVzID0gbmFtZXMuY29uY2F0KHJlc3VsdE1hcC5uYW1lcyk7XG4gICAgICAvLyBmaW5kIHRoZSBuZXh0IG9uZXMsIGNpcmN1bGFyIHJvbGVzIHdpbGwgYmUgY3V0XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocmVzdWx0TWFwLmlkcywgbmFtZXMsIHF1ZXJpZWRSb2xlcyk7XG4gICAgfSlcbiAgICAudGhlbihuYW1lcyA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICAgIH0pO1xufTtcblxuY29uc3QgZmluZFVzZXJzV2l0aEF1dGhEYXRhID0gYXN5bmMgKGNvbmZpZywgYXV0aERhdGEsIGJlZm9yZUZpbmQpID0+IHtcbiAgY29uc3QgcHJvdmlkZXJzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpO1xuXG4gIGNvbnN0IHF1ZXJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm92aWRlcnMubWFwKGFzeW5jIHByb3ZpZGVyID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyQXV0aERhdGEgPSBhdXRoRGF0YVtwcm92aWRlcl07XG5cbiAgICAgIGNvbnN0IGFkYXB0ZXIgPSBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKT8uYWRhcHRlcjtcbiAgICAgIGlmIChiZWZvcmVGaW5kICYmIHR5cGVvZiBhZGFwdGVyPy5iZWZvcmVGaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGF3YWl0IGFkYXB0ZXIuYmVmb3JlRmluZChwcm92aWRlckF1dGhEYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm92aWRlckF1dGhEYXRhPy5pZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgW2BhdXRoRGF0YS4ke3Byb3ZpZGVyfS5pZGBdOiBwcm92aWRlckF1dGhEYXRhLmlkIH07XG4gICAgfSlcbiAgKTtcblxuICAvLyBGaWx0ZXIgb3V0IG51bGwgcXVlcmllc1xuICBjb25zdCB2YWxpZFF1ZXJpZXMgPSBxdWVyaWVzLmZpbHRlcihxdWVyeSA9PiBxdWVyeSAhPT0gbnVsbCk7XG5cbiAgaWYgKCF2YWxpZFF1ZXJpZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gUGVyZm9ybSBkYXRhYmFzZSBxdWVyeVxuICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyAkb3I6IHZhbGlkUXVlcmllcyB9LCB7IGxpbWl0OiAyIH0pO1xufTtcblxuY29uc3QgaGFzTXV0YXRlZEF1dGhEYXRhID0gKGF1dGhEYXRhLCB1c2VyQXV0aERhdGEpID0+IHtcbiAgaWYgKCF1c2VyQXV0aERhdGEpIHsgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhOiB0cnVlLCBtdXRhdGVkQXV0aERhdGE6IGF1dGhEYXRhIH07IH1cbiAgY29uc3QgbXV0YXRlZEF1dGhEYXRhID0ge307XG4gIE9iamVjdC5rZXlzKGF1dGhEYXRhKS5mb3JFYWNoKHByb3ZpZGVyID0+IHtcbiAgICAvLyBBbm9ueW1vdXMgcHJvdmlkZXIgaXMgbm90IGhhbmRsZWQgdGhpcyB3YXlcbiAgICBpZiAocHJvdmlkZXIgPT09ICdhbm9ueW1vdXMnKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb3ZpZGVyRGF0YSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBjb25zdCB1c2VyUHJvdmlkZXJBdXRoRGF0YSA9IHVzZXJBdXRoRGF0YVtwcm92aWRlcl07XG5cbiAgICAvLyBJZiB1bmxpbmtpbmcgKHNldHRpbmcgdG8gbnVsbCksIGNvbnNpZGVyIGl0IG11dGF0ZWRcbiAgICBpZiAocHJvdmlkZXJEYXRhID09PSBudWxsKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHByb3ZpZGVyIGRvZXNuJ3QgZXhpc3QgaW4gc3RvcmVkIGRhdGEsIGl0J3MgbmV3XG4gICAgaWYgKCF1c2VyUHJvdmlkZXJBdXRoRGF0YSkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpbmNvbWluZyBkYXRhIHJlcHJlc2VudHMgYWN0dWFsIGNoYW5nZXMgdnMganVzdCBlY2hvaW5nIGJhY2tcbiAgICAvLyB3aGF0IGFmdGVyRmluZCByZXR1cm5lZC4gSWYgaW5jb21pbmcgZGF0YSBpcyBhIHN1YnNldCBvZiBzdG9yZWQgZGF0YVxuICAgIC8vIChhbGwgaW5jb21pbmcgZmllbGRzIG1hdGNoIHN0b3JlZCB2YWx1ZXMpLCBpdCdzIG5vdCBtdXRhdGVkLlxuICAgIC8vIElmIGluY29taW5nIGRhdGEgaGFzIGRpZmZlcmVudCB2YWx1ZXMgb3IgZmllbGRzIG5vdCBpbiBzdG9yZWQgZGF0YSwgaXQncyBtdXRhdGVkLlxuICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBhZnRlckZpbmQgc3RyaXBzIHNlbnNpdGl2ZSBmaWVsZHMgbGlrZSAnY29kZSc6XG4gICAgLy8gLSBJbmNvbWluZzogeyBpZDogJ3gnIH0sIFN0b3JlZDogeyBpZDogJ3gnLCBjb2RlOiAnc2VjcmV0JyB9IC0+IE5PVCBtdXRhdGVkIChzdWJzZXQpXG4gICAgLy8gLSBJbmNvbWluZzogeyBpZDogJ3gnLCB0b2tlbjogJ25ldycgfSwgU3RvcmVkOiB7IGlkOiAneCcsIHRva2VuOiAnb2xkJyB9IC0+IE1VVEFURURcbiAgICBjb25zdCBpbmNvbWluZ0tleXMgPSBPYmplY3Qua2V5cyhwcm92aWRlckRhdGEgfHwge30pO1xuICAgIGNvbnN0IGhhc0NoYW5nZXMgPSBpbmNvbWluZ0tleXMuc29tZShrZXkgPT4ge1xuICAgICAgcmV0dXJuICFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckRhdGFba2V5XSwgdXNlclByb3ZpZGVyQXV0aERhdGFba2V5XSk7XG4gICAgfSk7XG5cbiAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSBPYmplY3Qua2V5cyhtdXRhdGVkQXV0aERhdGEpLmxlbmd0aCAhPT0gMDtcbiAgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhLCBtdXRhdGVkQXV0aERhdGEgfTtcbn07XG5cbmNvbnN0IGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4gPSAoXG4gIHJlcSA9IHt9LFxuICBhdXRoRGF0YSA9IHt9LFxuICB1c2VyQXV0aERhdGEgPSB7fSxcbiAgY29uZmlnXG4pID0+IHtcbiAgY29uc3Qgc2F2ZWRVc2VyUHJvdmlkZXJzID0gT2JqZWN0LmtleXModXNlckF1dGhEYXRhKS5tYXAocHJvdmlkZXIgPT4gKHtcbiAgICBuYW1lOiBwcm92aWRlcixcbiAgICBhZGFwdGVyOiBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKS5hZGFwdGVyLFxuICB9KSk7XG5cbiAgY29uc3QgaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUoXG4gICAgcHJvdmlkZXIgPT5cbiAgICAgIHByb3ZpZGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIgJiYgcHJvdmlkZXIuYWRhcHRlci5wb2xpY3kgPT09ICdzb2xvJyAmJiBhdXRoRGF0YVtwcm92aWRlci5uYW1lXVxuICApO1xuXG4gIC8vIFNvbG8gcHJvdmlkZXJzIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNhZmUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIGlmIHRoZSB1c2VyIG5lZWRzXG4gIC8vIHRvIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBwcm92aWRlciB0byBsb2dpbi4gQW4gYXV0aCBhZGFwdGVyIHdpdGggXCJzb2xvXCIgKGxpa2Ugd2ViYXV0aG4pIG1lYW5zXG4gIC8vIG5vIFwiYWRkaXRpb25hbFwiIGF1dGggbmVlZHMgdG8gYmUgcHJvdmlkZWQgdG8gbG9naW4gKGxpa2UgT1RQLCBNRkEpXG4gIGlmIChoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kID0gW107XG4gIGNvbnN0IGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKHByb3ZpZGVyID0+IHtcbiAgICBsZXQgcG9saWN5ID0gcHJvdmlkZXIuYWRhcHRlci5wb2xpY3k7XG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgICB1c2VyOiByZXEuYXV0aC51c2VyLFxuICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgfTtcbiAgICAgIHBvbGljeSA9IHBvbGljeS5jYWxsKHByb3ZpZGVyLmFkYXB0ZXIsIHJlcXVlc3RPYmplY3QsIHVzZXJBdXRoRGF0YVtwcm92aWRlci5uYW1lXSk7XG4gICAgfVxuICAgIGlmIChwb2xpY3kgPT09ICdhZGRpdGlvbmFsJykge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHVzaCBtaXNzaW5nIHByb3ZpZGVyIGZvciBlcnJvciBtZXNzYWdlXG4gICAgICAgIGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQucHVzaChwcm92aWRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAoaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIHx8ICFhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICBgTWlzc2luZyBhZGRpdGlvbmFsIGF1dGhEYXRhICR7YWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5qb2luKCcsJyl9YFxuICApO1xufTtcblxuLy8gVmFsaWRhdGUgZWFjaCBhdXRoRGF0YSBzdGVwLWJ5LXN0ZXAgYW5kIHJldHVybiB0aGUgcHJvdmlkZXIgcmVzcG9uc2VzXG5jb25zdCBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gPSBhc3luYyAoYXV0aERhdGEsIHJlcSwgZm91bmRVc2VyKSA9PiB7XG4gIGxldCB1c2VyO1xuICBpZiAoZm91bmRVc2VyKSB7XG4gICAgdXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLmZvdW5kVXNlciB9KTtcbiAgICAvLyBGaW5kIHVzZXIgYnkgc2Vzc2lvbiBhbmQgY3VycmVudCBvYmplY3RJZDsgb25seSBwYXNzIHVzZXIgaWYgaXQncyB0aGUgY3VycmVudCB1c2VyIG9yIG1hc3RlciBrZXkgaXMgcHJvdmlkZWRcbiAgfSBlbHNlIGlmIChcbiAgICAocmVxLmF1dGggJiZcbiAgICAgIHJlcS5hdXRoLnVzZXIgJiZcbiAgICAgIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmXG4gICAgICByZXEuZ2V0VXNlcklkKCkgPT09IHJlcS5hdXRoLnVzZXIuaWQpIHx8XG4gICAgKHJlcS5hdXRoICYmIHJlcS5hdXRoLmlzTWFzdGVyICYmIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmIHJlcS5nZXRVc2VySWQoKSlcbiAgKSB7XG4gICAgdXNlciA9IG5ldyBQYXJzZS5Vc2VyKCk7XG4gICAgdXNlci5pZCA9IHJlcS5hdXRoLmlzTWFzdGVyID8gcmVxLmdldFVzZXJJZCgpIDogcmVxLmF1dGgudXNlci5pZDtcbiAgICBhd2FpdCB1c2VyLmZldGNoKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG5cbiAgY29uc3QgeyB1cGRhdGVkT2JqZWN0IH0gPSByZXEuYnVpbGRQYXJzZU9iamVjdHMoKTtcbiAgY29uc3QgcmVxdWVzdE9iamVjdCA9IGdldFJlcXVlc3RPYmplY3QodW5kZWZpbmVkLCByZXEuYXV0aCwgdXBkYXRlZE9iamVjdCwgdXNlciwgcmVxLmNvbmZpZyk7XG4gIC8vIFBlcmZvcm0gdmFsaWRhdGlvbiBhcyBzdGVwLWJ5LXN0ZXAgcGlwZWxpbmUgZm9yIGJldHRlciBlcnJvciBjb25zaXN0ZW5jeVxuICAvLyBhbmQgYWxzbyB0byBhdm9pZCB0byB0cmlnZ2VyIGEgcHJvdmlkZXIgKGxpa2UgT1RQIFNNUykgaWYgYW5vdGhlciBvbmUgZmFpbHNcbiAgY29uc3QgYWNjID0geyBhdXRoRGF0YToge30sIGF1dGhEYXRhUmVzcG9uc2U6IHt9IH07XG4gIGNvbnN0IGF1dGhLZXlzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpLnNvcnQoKTtcbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBhdXRoS2V5cykge1xuICAgIGxldCBtZXRob2QgPSAnJztcbiAgICB0cnkge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyXSA9PT0gbnVsbCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHZhbGlkYXRvciB9ID0gcmVxLmNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpIHx8IHt9O1xuICAgICAgY29uc3QgYXV0aFByb3ZpZGVyID0gKHJlcS5jb25maWcuYXV0aCB8fCB7fSlbcHJvdmlkZXJdIHx8IHt9O1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgYXV0aFByb3ZpZGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5VTlNVUFBPUlRFRF9TRVJWSUNFLFxuICAgICAgICAgICdUaGlzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyB1bnN1cHBvcnRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvcihhdXRoRGF0YVtwcm92aWRlcl0sIHJlcSwgdXNlciwgcmVxdWVzdE9iamVjdCk7XG4gICAgICBtZXRob2QgPSB2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQubWV0aG9kO1xuICAgICAgcmVxdWVzdE9iamVjdC50cmlnZ2VyTmFtZSA9IG1ldGhvZDtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKSB7XG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uUmVzdWx0LnZhbGlkYXRvcigpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWxpZGF0aW9uUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVJlc3BvbnNlW3Byb3ZpZGVyXSA9IHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2U7XG4gICAgICB9XG4gICAgICAvLyBTb21lIGF1dGggcHJvdmlkZXJzIGFmdGVyIGluaXRpYWxpemF0aW9uIHdpbGwgYXZvaWQgdG8gcmVwbGFjZSBhdXRoRGF0YSBhbHJlYWR5IHN0b3JlZFxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmRvTm90U2F2ZSkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5zYXZlIHx8IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGUgPSByZXNvbHZlRXJyb3IoZXJyLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6ICdBdXRoIGZhaWxlZC4gVW5rbm93biBlcnJvci4nLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID1cbiAgICAgICAgcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiByZXEuZGF0YS5vYmplY3RJZCB8fCB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGYWlsZWQgcnVubmluZyBhdXRoIHN0ZXAgJHttZXRob2R9IGZvciAke3Byb3ZpZGVyfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGggRXJyb3I6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICB7XG4gICAgICAgICAgYXV0aGVudGljYXRpb25TdGVwOiBtZXRob2QsXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXV0aCxcbiAgbWFzdGVyLFxuICBtYWludGVuYW5jZSxcbiAgbm9ib2R5LFxuICByZWFkT25seSxcbiAgc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeSxcbiAgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbixcbiAgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbixcbiAgZmluZFVzZXJzV2l0aEF1dGhEYXRhLFxuICBoYXNNdXRhdGVkQXV0aERhdGEsXG4gIGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVk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
|
|
@@ -198,7 +198,7 @@ class PushController {
|
|
|
198
198
|
static pushTimeHasTimezoneComponent(pushTimeParam) {
|
|
199
199
|
const offsetPattern = /(.+)([+-])\d\d:\d\d$/;
|
|
200
200
|
return pushTimeParam.indexOf('Z') === pushTimeParam.length - 1 || offsetPattern.test(pushTimeParam) // 2007-04-05T12:30Z
|
|
201
|
-
|
|
201
|
+
; // 2007-04-05T12:30.000+02:00, 2007-04-05T12:30.000-02:00
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
/**
|
|
@@ -221,4 +221,4 @@ class PushController {
|
|
|
221
221
|
}
|
|
222
222
|
exports.PushController = PushController;
|
|
223
223
|
var _default = exports.default = PushController;
|
|
224
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUmVzdFF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9SZXN0V3JpdGUiLCJfQXV0aCIsIl9TdGF0dXNIYW5kbGVyIiwiX3V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUHVzaENvbnRyb2xsZXIiLCJzZW5kUHVzaCIsImJvZHkiLCJ3aGVyZSIsImNvbmZpZyIsImF1dGgiLCJvblB1c2hTdGF0dXNTYXZlZCIsIm5vdyIsIkRhdGUiLCJoYXNQdXNoU3VwcG9ydCIsIlBhcnNlIiwiRXJyb3IiLCJQVVNIX01JU0NPTkZJR1VSRUQiLCJleHBpcmF0aW9uX3RpbWUiLCJnZXRFeHBpcmF0aW9uVGltZSIsImV4cGlyYXRpb25faW50ZXJ2YWwiLCJnZXRFeHBpcmF0aW9uSW50ZXJ2YWwiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ0dGxNcyIsInZhbHVlT2YiLCJwdXNoVGltZSIsImdldFB1c2hUaW1lIiwiZGF0ZSIsImZvcm1hdFB1c2hUaW1lIiwiYmFkZ2VVcGRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImRhdGEiLCJiYWRnZSIsInJlc3RVcGRhdGUiLCJ0b0xvd2VyQ2FzZSIsIl9fb3AiLCJhbW91bnQiLCJOdW1iZXIiLCJ1cGRhdGVXaGVyZSIsImFwcGx5RGV2aWNlVG9rZW5FeGlzdHMiLCJyZXN0UXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJmaW5kIiwicnVuQmVmb3JlRmluZCIsIm1hc3RlciIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsImJ1aWxkUmVzdFdoZXJlIiwidGhlbiIsIndyaXRlIiwiUmVzdFdyaXRlIiwicnVuT3B0aW9ucyIsIm1hbnkiLCJleGVjdXRlIiwicHVzaFN0YXR1cyIsInB1c2hTdGF0dXNIYW5kbGVyIiwic2V0SW5pdGlhbCIsIm9iamVjdElkIiwiYXVkaWVuY2VfaWQiLCJhdWRpZW5jZUlkIiwidXBkYXRlQXVkaWVuY2UiLCJsYXN0VXNlZCIsIl9fdHlwZSIsImlzbyIsInRvSVNPU3RyaW5nIiwidGltZXNVc2VkIiwiaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQiLCJwdXNoQ29udHJvbGxlclF1ZXVlIiwiZW5xdWV1ZSIsImNhdGNoIiwiZXJyIiwiZmFpbCIsImhhc0V4cGlyYXRpb25UaW1lIiwiZXhwaXJhdGlvblRpbWVQYXJhbSIsImV4cGlyYXRpb25UaW1lIiwiaXNGaW5pdGUiLCJoYXNFeHBpcmF0aW9uSW50ZXJ2YWwiLCJleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSIsImhhc1B1c2hUaW1lIiwicHVzaFRpbWVQYXJhbSIsImlzTG9jYWxUaW1lIiwicHVzaFRpbWVIYXNUaW1lem9uZUNvbXBvbmVudCIsIm9mZnNldFBhdHRlcm4iLCJpbmRleE9mIiwibGVuZ3RoIiwidGVzdCIsImlzb1N0cmluZyIsInN1YnN0cmluZyIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9QdXNoQ29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFJlc3RRdWVyeSBmcm9tICcuLi9SZXN0UXVlcnknO1xuaW1wb3J0IFJlc3RXcml0ZSBmcm9tICcuLi9SZXN0V3JpdGUnO1xuaW1wb3J0IHsgbWFzdGVyIH0gZnJvbSAnLi4vQXV0aCc7XG5pbXBvcnQgeyBwdXNoU3RhdHVzSGFuZGxlciB9IGZyb20gJy4uL1N0YXR1c0hhbmRsZXInO1xuaW1wb3J0IHsgYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyB9IGZyb20gJy4uL1B1c2gvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUHVzaENvbnRyb2xsZXIge1xuICBzZW5kUHVzaChib2R5ID0ge30sIHdoZXJlID0ge30sIGNvbmZpZywgYXV0aCwgb25QdXNoU3RhdHVzU2F2ZWQgPSAoKSA9PiB7fSwgbm93ID0gbmV3IERhdGUoKSkge1xuICAgIGlmICghY29uZmlnLmhhc1B1c2hTdXBwb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnTWlzc2luZyBwdXNoIGNvbmZpZ3VyYXRpb24nKTtcbiAgICB9XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBleHBpcmF0aW9uX3RpbWUgYW5kIHB1c2hfdGltZSB3aXRoIGEgdmFsaWQgVW5peCBlcG9jaCBtaWxsaXNlY29uZHMgdGltZVxuICAgIGJvZHkuZXhwaXJhdGlvbl90aW1lID0gUHVzaENvbnRyb2xsZXIuZ2V0RXhwaXJhdGlvblRpbWUoYm9keSk7XG4gICAgYm9keS5leHBpcmF0aW9uX2ludGVydmFsID0gUHVzaENvbnRyb2xsZXIuZ2V0RXhwaXJhdGlvbkludGVydmFsKGJvZHkpO1xuICAgIGlmIChib2R5LmV4cGlyYXRpb25fdGltZSAmJiBib2R5LmV4cGlyYXRpb25faW50ZXJ2YWwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICAnQm90aCBleHBpcmF0aW9uX3RpbWUgYW5kIGV4cGlyYXRpb25faW50ZXJ2YWwgY2Fubm90IGJlIHNldCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW1tZWRpYXRlIHB1c2hcbiAgICBpZiAoYm9keS5leHBpcmF0aW9uX2ludGVydmFsICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ3B1c2hfdGltZScpKSB7XG4gICAgICBjb25zdCB0dGxNcyA9IGJvZHkuZXhwaXJhdGlvbl9pbnRlcnZhbCAqIDEwMDA7XG4gICAgICBib2R5LmV4cGlyYXRpb25fdGltZSA9IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkgKyB0dGxNcykudmFsdWVPZigpO1xuICAgIH1cblxuICAgIGNvbnN0IHB1c2hUaW1lID0gUHVzaENvbnRyb2xsZXIuZ2V0UHVzaFRpbWUoYm9keSk7XG4gICAgaWYgKHB1c2hUaW1lICYmIHB1c2hUaW1lLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBib2R5WydwdXNoX3RpbWUnXSA9IFB1c2hDb250cm9sbGVyLmZvcm1hdFB1c2hUaW1lKHB1c2hUaW1lKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBJZiB0aGUgcmVxIGNhbiBwYXNzIHRoZSBjaGVja2luZywgd2UgcmV0dXJuIGltbWVkaWF0ZWx5IGluc3RlYWQgb2Ygd2FpdGluZ1xuICAgIC8vIHB1c2hlcyB0byBiZSBzZW50LiBXZSBwcm9iYWJseSBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIgaW4gdGhlIGZ1dHVyZS5cbiAgICBsZXQgYmFkZ2VVcGRhdGUgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfTtcblxuICAgIGlmIChib2R5LmRhdGEgJiYgYm9keS5kYXRhLmJhZGdlKSB7XG4gICAgICBjb25zdCBiYWRnZSA9IGJvZHkuZGF0YS5iYWRnZTtcbiAgICAgIGxldCByZXN0VXBkYXRlID0ge307XG4gICAgICBpZiAodHlwZW9mIGJhZGdlID09ICdzdHJpbmcnICYmIGJhZGdlLnRvTG93ZXJDYXNlKCkgPT09ICdpbmNyZW1lbnQnKSB7XG4gICAgICAgIHJlc3RVcGRhdGUgPSB7IGJhZGdlOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IDEgfSB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIGJhZGdlID09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiBiYWRnZS5fX29wID09ICdzdHJpbmcnICYmXG4gICAgICAgIGJhZGdlLl9fb3AudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50JyAmJlxuICAgICAgICBOdW1iZXIoYmFkZ2UuYW1vdW50KVxuICAgICAgKSB7XG4gICAgICAgIHJlc3RVcGRhdGUgPSB7IGJhZGdlOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IGJhZGdlLmFtb3VudCB9IH07XG4gICAgICB9IGVsc2UgaWYgKE51bWJlcihiYWRnZSkpIHtcbiAgICAgICAgcmVzdFVwZGF0ZSA9IHsgYmFkZ2U6IGJhZGdlIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBcIkludmFsaWQgdmFsdWUgZm9yIGJhZGdlLCBleHBlY3RlZCBudW1iZXIgb3IgJ0luY3JlbWVudCcgb3Ige2luY3JlbWVudDogbnVtYmVyfVwiO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3JjZSBmaWx0ZXJpbmcgb24gb25seSB2YWxpZCBkZXZpY2UgdG9rZW5zXG4gICAgICBjb25zdCB1cGRhdGVXaGVyZSA9IGFwcGx5RGV2aWNlVG9rZW5FeGlzdHMod2hlcmUpO1xuICAgICAgYmFkZ2VVcGRhdGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIEJ1aWxkIGEgcmVhbCBSZXN0UXVlcnkgc28gd2UgY2FuIHVzZSBpdCBpbiBSZXN0V3JpdGVcbiAgICAgICAgY29uc3QgcmVzdFF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnX0luc3RhbGxhdGlvbicsXG4gICAgICAgICAgcmVzdFdoZXJlOiB1cGRhdGVXaGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN0UXVlcnkuYnVpbGRSZXN0V2hlcmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3cml0ZSA9IG5ldyBSZXN0V3JpdGUoXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICAgICAgICdfSW5zdGFsbGF0aW9uJyxcbiAgICAgICAgICAgIHJlc3RRdWVyeS5yZXN0V2hlcmUsXG4gICAgICAgICAgICByZXN0VXBkYXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICB3cml0ZS5ydW5PcHRpb25zLm1hbnkgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB3cml0ZS5leGVjdXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcHVzaFN0YXR1cyA9IHB1c2hTdGF0dXNIYW5kbGVyKGNvbmZpZyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhdHVzLnNldEluaXRpYWwoYm9keSwgd2hlcmUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25QdXNoU3RhdHVzU2F2ZWQocHVzaFN0YXR1cy5vYmplY3RJZCk7XG4gICAgICAgIHJldHVybiBiYWRnZVVwZGF0ZSgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGF1ZGllbmNlIGxhc3RVc2VkIGFuZCB0aW1lc1VzZWRcbiAgICAgICAgaWYgKGJvZHkuYXVkaWVuY2VfaWQpIHtcbiAgICAgICAgICBjb25zdCBhdWRpZW5jZUlkID0gYm9keS5hdWRpZW5jZV9pZDtcblxuICAgICAgICAgIHZhciB1cGRhdGVBdWRpZW5jZSA9IHtcbiAgICAgICAgICAgIGxhc3RVc2VkOiB7IF9fdHlwZTogJ0RhdGUnLCBpc286IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9LFxuICAgICAgICAgICAgdGltZXNVc2VkOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IDEgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHdyaXRlID0gbmV3IFJlc3RXcml0ZShcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIG1hc3Rlcihjb25maWcpLFxuICAgICAgICAgICAgJ19BdWRpZW5jZScsXG4gICAgICAgICAgICB7IG9iamVjdElkOiBhdWRpZW5jZUlkIH0sXG4gICAgICAgICAgICB1cGRhdGVBdWRpZW5jZVxuICAgICAgICAgICk7XG4gICAgICAgICAgd3JpdGUuZXhlY3V0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvbid0IHdhaXQgZm9yIHRoZSBhdWRpZW5jZSB1cGRhdGUgcHJvbWlzZSB0byByZXNvbHZlLlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJvZHksICdwdXNoX3RpbWUnKSAmJlxuICAgICAgICAgIGNvbmZpZy5oYXNQdXNoU2NoZWR1bGVkU3VwcG9ydFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZy5wdXNoQ29udHJvbGxlclF1ZXVlLmVucXVldWUoYm9keSwgd2hlcmUsIGNvbmZpZywgYXV0aCwgcHVzaFN0YXR1cyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhdHVzLmZhaWwoZXJyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV4cGlyYXRpb24gdGltZSBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXF1ZXN0IEEgcmVxdWVzdCBvYmplY3RcbiAgICogQHJldHVybnMge051bWJlcnx1bmRlZmluZWR9IFRoZSBleHBpcmF0aW9uIHRpbWUgaWYgaXQgZXhpc3RzIGluIHRoZSByZXF1ZXN0XG4gICAqL1xuICBzdGF0aWMgZ2V0RXhwaXJhdGlvblRpbWUoYm9keSA9IHt9KSB7XG4gICAgdmFyIGhhc0V4cGlyYXRpb25UaW1lID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJvZHksICdleHBpcmF0aW9uX3RpbWUnKTtcbiAgICBpZiAoIWhhc0V4cGlyYXRpb25UaW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBleHBpcmF0aW9uVGltZVBhcmFtID0gYm9keVsnZXhwaXJhdGlvbl90aW1lJ107XG4gICAgdmFyIGV4cGlyYXRpb25UaW1lO1xuICAgIGlmICh0eXBlb2YgZXhwaXJhdGlvblRpbWVQYXJhbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGV4cGlyYXRpb25UaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvblRpbWVQYXJhbSAqIDEwMDApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cGlyYXRpb25UaW1lUGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBleHBpcmF0aW9uVGltZSA9IG5ldyBEYXRlKGV4cGlyYXRpb25UaW1lUGFyYW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLlBVU0hfTUlTQ09ORklHVVJFRCxcbiAgICAgICAgYm9keVsnZXhwaXJhdGlvbl90aW1lJ10gKyAnIGlzIG5vdCB2YWxpZCB0aW1lLidcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIENoZWNrIGV4cGlyYXRpb25UaW1lIGlzIHZhbGlkIG9yIG5vdCwgaWYgaXQgaXMgbm90IHZhbGlkLCBleHBpcmF0aW9uVGltZSBpcyBOYU5cbiAgICBpZiAoIWlzRmluaXRlKGV4cGlyYXRpb25UaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ2V4cGlyYXRpb25fdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXhwaXJhdGlvblRpbWUudmFsdWVPZigpO1xuICB9XG5cbiAgc3RhdGljIGdldEV4cGlyYXRpb25JbnRlcnZhbChib2R5ID0ge30pIHtcbiAgICBjb25zdCBoYXNFeHBpcmF0aW9uSW50ZXJ2YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ2V4cGlyYXRpb25faW50ZXJ2YWwnKTtcbiAgICBpZiAoIWhhc0V4cGlyYXRpb25JbnRlcnZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSA9IGJvZHlbJ2V4cGlyYXRpb25faW50ZXJ2YWwnXTtcbiAgICBpZiAodHlwZW9mIGV4cGlyYXRpb25JbnRlcnZhbFBhcmFtICE9PSAnbnVtYmVyJyB8fCBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLlBVU0hfTUlTQ09ORklHVVJFRCxcbiAgICAgICAgYGV4cGlyYXRpb25faW50ZXJ2YWwgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMGBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcHVzaCB0aW1lIGZyb20gdGhlIHJlcXVlc3QgYm9keS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3QgQSByZXF1ZXN0IG9iamVjdFxuICAgKiBAcmV0dXJucyB7TnVtYmVyfHVuZGVmaW5lZH0gVGhlIHB1c2ggdGltZSBpZiBpdCBleGlzdHMgaW4gdGhlIHJlcXVlc3RcbiAgICovXG4gIHN0YXRpYyBnZXRQdXNoVGltZShib2R5ID0ge30pIHtcbiAgICB2YXIgaGFzUHVzaFRpbWUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ3B1c2hfdGltZScpO1xuICAgIGlmICghaGFzUHVzaFRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHB1c2hUaW1lUGFyYW0gPSBib2R5WydwdXNoX3RpbWUnXTtcbiAgICB2YXIgZGF0ZTtcbiAgICB2YXIgaXNMb2NhbFRpbWUgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBwdXNoVGltZVBhcmFtID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHB1c2hUaW1lUGFyYW0gKiAxMDAwKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwdXNoVGltZVBhcmFtID09PSAnc3RyaW5nJykge1xuICAgICAgaXNMb2NhbFRpbWUgPSAhUHVzaENvbnRyb2xsZXIucHVzaFRpbWVIYXNUaW1lem9uZUNvbXBvbmVudChwdXNoVGltZVBhcmFtKTtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShwdXNoVGltZVBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ3B1c2hfdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBDaGVjayBwdXNoVGltZSBpcyB2YWxpZCBvciBub3QsIGlmIGl0IGlzIG5vdCB2YWxpZCwgcHVzaFRpbWUgaXMgTmFOXG4gICAgaWYgKCFpc0Zpbml0ZShkYXRlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ3B1c2hfdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRlLFxuICAgICAgaXNMb2NhbFRpbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBJU084NjAxIGZvcm1hdHRlZCBkYXRlIGNvbnRhaW5zIGEgdGltZXpvbmUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBwdXNoVGltZVBhcmFtIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIHB1c2hUaW1lSGFzVGltZXpvbmVDb21wb25lbnQocHVzaFRpbWVQYXJhbTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb2Zmc2V0UGF0dGVybiA9IC8oLispKFsrLV0pXFxkXFxkOlxcZFxcZCQvO1xuICAgIHJldHVybiAoXG4gICAgICBwdXNoVGltZVBhcmFtLmluZGV4T2YoJ1onKSA9PT0gcHVzaFRpbWVQYXJhbS5sZW5ndGggLSAxIHx8IG9mZnNldFBhdHRlcm4udGVzdChwdXNoVGltZVBhcmFtKSAvLyAyMDA3LTA0LTA1VDEyOjMwWlxuICAgICk7IC8vIDIwMDctMDQtMDVUMTI6MzAuMDAwKzAyOjAwLCAyMDA3LTA0LTA1VDEyOjMwLjAwMC0wMjowMFxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgZGF0ZSB0byBJU08gZm9ybWF0IGluIFVUQyB0aW1lIGFuZCBzdHJpcHMgdGhlIHRpbWV6b25lIGlmIGBpc0xvY2FsVGltZWAgaXMgdHJ1ZVxuICAgKiBAcGFyYW0gZGF0ZSB7RGF0ZX1cbiAgICogQHBhcmFtIGlzTG9jYWxUaW1lIHtib29sZWFufVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGZvcm1hdFB1c2hUaW1lKHsgZGF0ZSwgaXNMb2NhbFRpbWUgfTogeyBkYXRlOiBEYXRlLCBpc0xvY2FsVGltZTogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGlzTG9jYWxUaW1lKSB7XG4gICAgICAvLyBTdHJpcCAnWidcbiAgICAgIGNvbnN0IGlzb1N0cmluZyA9IGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIHJldHVybiBpc29TdHJpbmcuc3Vic3RyaW5nKDAsIGlzb1N0cmluZy5pbmRleE9mKCdaJykpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJ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
|
|
224
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUmVzdFF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9SZXN0V3JpdGUiLCJfQXV0aCIsIl9TdGF0dXNIYW5kbGVyIiwiX3V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUHVzaENvbnRyb2xsZXIiLCJzZW5kUHVzaCIsImJvZHkiLCJ3aGVyZSIsImNvbmZpZyIsImF1dGgiLCJvblB1c2hTdGF0dXNTYXZlZCIsIm5vdyIsIkRhdGUiLCJoYXNQdXNoU3VwcG9ydCIsIlBhcnNlIiwiRXJyb3IiLCJQVVNIX01JU0NPTkZJR1VSRUQiLCJleHBpcmF0aW9uX3RpbWUiLCJnZXRFeHBpcmF0aW9uVGltZSIsImV4cGlyYXRpb25faW50ZXJ2YWwiLCJnZXRFeHBpcmF0aW9uSW50ZXJ2YWwiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ0dGxNcyIsInZhbHVlT2YiLCJwdXNoVGltZSIsImdldFB1c2hUaW1lIiwiZGF0ZSIsImZvcm1hdFB1c2hUaW1lIiwiYmFkZ2VVcGRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImRhdGEiLCJiYWRnZSIsInJlc3RVcGRhdGUiLCJ0b0xvd2VyQ2FzZSIsIl9fb3AiLCJhbW91bnQiLCJOdW1iZXIiLCJ1cGRhdGVXaGVyZSIsImFwcGx5RGV2aWNlVG9rZW5FeGlzdHMiLCJyZXN0UXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJmaW5kIiwicnVuQmVmb3JlRmluZCIsIm1hc3RlciIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsImJ1aWxkUmVzdFdoZXJlIiwidGhlbiIsIndyaXRlIiwiUmVzdFdyaXRlIiwicnVuT3B0aW9ucyIsIm1hbnkiLCJleGVjdXRlIiwicHVzaFN0YXR1cyIsInB1c2hTdGF0dXNIYW5kbGVyIiwic2V0SW5pdGlhbCIsIm9iamVjdElkIiwiYXVkaWVuY2VfaWQiLCJhdWRpZW5jZUlkIiwidXBkYXRlQXVkaWVuY2UiLCJsYXN0VXNlZCIsIl9fdHlwZSIsImlzbyIsInRvSVNPU3RyaW5nIiwidGltZXNVc2VkIiwiaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQiLCJwdXNoQ29udHJvbGxlclF1ZXVlIiwiZW5xdWV1ZSIsImNhdGNoIiwiZXJyIiwiZmFpbCIsImhhc0V4cGlyYXRpb25UaW1lIiwiZXhwaXJhdGlvblRpbWVQYXJhbSIsImV4cGlyYXRpb25UaW1lIiwiaXNGaW5pdGUiLCJoYXNFeHBpcmF0aW9uSW50ZXJ2YWwiLCJleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSIsImhhc1B1c2hUaW1lIiwicHVzaFRpbWVQYXJhbSIsImlzTG9jYWxUaW1lIiwicHVzaFRpbWVIYXNUaW1lem9uZUNvbXBvbmVudCIsIm9mZnNldFBhdHRlcm4iLCJpbmRleE9mIiwibGVuZ3RoIiwidGVzdCIsImlzb1N0cmluZyIsInN1YnN0cmluZyIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9QdXNoQ29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFJlc3RRdWVyeSBmcm9tICcuLi9SZXN0UXVlcnknO1xuaW1wb3J0IFJlc3RXcml0ZSBmcm9tICcuLi9SZXN0V3JpdGUnO1xuaW1wb3J0IHsgbWFzdGVyIH0gZnJvbSAnLi4vQXV0aCc7XG5pbXBvcnQgeyBwdXNoU3RhdHVzSGFuZGxlciB9IGZyb20gJy4uL1N0YXR1c0hhbmRsZXInO1xuaW1wb3J0IHsgYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyB9IGZyb20gJy4uL1B1c2gvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUHVzaENvbnRyb2xsZXIge1xuICBzZW5kUHVzaChib2R5ID0ge30sIHdoZXJlID0ge30sIGNvbmZpZywgYXV0aCwgb25QdXNoU3RhdHVzU2F2ZWQgPSAoKSA9PiB7fSwgbm93ID0gbmV3IERhdGUoKSkge1xuICAgIGlmICghY29uZmlnLmhhc1B1c2hTdXBwb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnTWlzc2luZyBwdXNoIGNvbmZpZ3VyYXRpb24nKTtcbiAgICB9XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBleHBpcmF0aW9uX3RpbWUgYW5kIHB1c2hfdGltZSB3aXRoIGEgdmFsaWQgVW5peCBlcG9jaCBtaWxsaXNlY29uZHMgdGltZVxuICAgIGJvZHkuZXhwaXJhdGlvbl90aW1lID0gUHVzaENvbnRyb2xsZXIuZ2V0RXhwaXJhdGlvblRpbWUoYm9keSk7XG4gICAgYm9keS5leHBpcmF0aW9uX2ludGVydmFsID0gUHVzaENvbnRyb2xsZXIuZ2V0RXhwaXJhdGlvbkludGVydmFsKGJvZHkpO1xuICAgIGlmIChib2R5LmV4cGlyYXRpb25fdGltZSAmJiBib2R5LmV4cGlyYXRpb25faW50ZXJ2YWwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICAnQm90aCBleHBpcmF0aW9uX3RpbWUgYW5kIGV4cGlyYXRpb25faW50ZXJ2YWwgY2Fubm90IGJlIHNldCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW1tZWRpYXRlIHB1c2hcbiAgICBpZiAoYm9keS5leHBpcmF0aW9uX2ludGVydmFsICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ3B1c2hfdGltZScpKSB7XG4gICAgICBjb25zdCB0dGxNcyA9IGJvZHkuZXhwaXJhdGlvbl9pbnRlcnZhbCAqIDEwMDA7XG4gICAgICBib2R5LmV4cGlyYXRpb25fdGltZSA9IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkgKyB0dGxNcykudmFsdWVPZigpO1xuICAgIH1cblxuICAgIGNvbnN0IHB1c2hUaW1lID0gUHVzaENvbnRyb2xsZXIuZ2V0UHVzaFRpbWUoYm9keSk7XG4gICAgaWYgKHB1c2hUaW1lICYmIHB1c2hUaW1lLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBib2R5WydwdXNoX3RpbWUnXSA9IFB1c2hDb250cm9sbGVyLmZvcm1hdFB1c2hUaW1lKHB1c2hUaW1lKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBJZiB0aGUgcmVxIGNhbiBwYXNzIHRoZSBjaGVja2luZywgd2UgcmV0dXJuIGltbWVkaWF0ZWx5IGluc3RlYWQgb2Ygd2FpdGluZ1xuICAgIC8vIHB1c2hlcyB0byBiZSBzZW50LiBXZSBwcm9iYWJseSBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIgaW4gdGhlIGZ1dHVyZS5cbiAgICBsZXQgYmFkZ2VVcGRhdGUgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfTtcblxuICAgIGlmIChib2R5LmRhdGEgJiYgYm9keS5kYXRhLmJhZGdlKSB7XG4gICAgICBjb25zdCBiYWRnZSA9IGJvZHkuZGF0YS5iYWRnZTtcbiAgICAgIGxldCByZXN0VXBkYXRlID0ge307XG4gICAgICBpZiAodHlwZW9mIGJhZGdlID09ICdzdHJpbmcnICYmIGJhZGdlLnRvTG93ZXJDYXNlKCkgPT09ICdpbmNyZW1lbnQnKSB7XG4gICAgICAgIHJlc3RVcGRhdGUgPSB7IGJhZGdlOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IDEgfSB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIGJhZGdlID09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiBiYWRnZS5fX29wID09ICdzdHJpbmcnICYmXG4gICAgICAgIGJhZGdlLl9fb3AudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50JyAmJlxuICAgICAgICBOdW1iZXIoYmFkZ2UuYW1vdW50KVxuICAgICAgKSB7XG4gICAgICAgIHJlc3RVcGRhdGUgPSB7IGJhZGdlOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IGJhZGdlLmFtb3VudCB9IH07XG4gICAgICB9IGVsc2UgaWYgKE51bWJlcihiYWRnZSkpIHtcbiAgICAgICAgcmVzdFVwZGF0ZSA9IHsgYmFkZ2U6IGJhZGdlIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBcIkludmFsaWQgdmFsdWUgZm9yIGJhZGdlLCBleHBlY3RlZCBudW1iZXIgb3IgJ0luY3JlbWVudCcgb3Ige2luY3JlbWVudDogbnVtYmVyfVwiO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3JjZSBmaWx0ZXJpbmcgb24gb25seSB2YWxpZCBkZXZpY2UgdG9rZW5zXG4gICAgICBjb25zdCB1cGRhdGVXaGVyZSA9IGFwcGx5RGV2aWNlVG9rZW5FeGlzdHMod2hlcmUpO1xuICAgICAgYmFkZ2VVcGRhdGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIEJ1aWxkIGEgcmVhbCBSZXN0UXVlcnkgc28gd2UgY2FuIHVzZSBpdCBpbiBSZXN0V3JpdGVcbiAgICAgICAgY29uc3QgcmVzdFF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnX0luc3RhbGxhdGlvbicsXG4gICAgICAgICAgcmVzdFdoZXJlOiB1cGRhdGVXaGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN0UXVlcnkuYnVpbGRSZXN0V2hlcmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3cml0ZSA9IG5ldyBSZXN0V3JpdGUoXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICAgICAgICdfSW5zdGFsbGF0aW9uJyxcbiAgICAgICAgICAgIHJlc3RRdWVyeS5yZXN0V2hlcmUsXG4gICAgICAgICAgICByZXN0VXBkYXRlXG4gICAgICAgICAgKTtcbiAgICAgICAgICB3cml0ZS5ydW5PcHRpb25zLm1hbnkgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB3cml0ZS5leGVjdXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcHVzaFN0YXR1cyA9IHB1c2hTdGF0dXNIYW5kbGVyKGNvbmZpZyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhdHVzLnNldEluaXRpYWwoYm9keSwgd2hlcmUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25QdXNoU3RhdHVzU2F2ZWQocHVzaFN0YXR1cy5vYmplY3RJZCk7XG4gICAgICAgIHJldHVybiBiYWRnZVVwZGF0ZSgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGF1ZGllbmNlIGxhc3RVc2VkIGFuZCB0aW1lc1VzZWRcbiAgICAgICAgaWYgKGJvZHkuYXVkaWVuY2VfaWQpIHtcbiAgICAgICAgICBjb25zdCBhdWRpZW5jZUlkID0gYm9keS5hdWRpZW5jZV9pZDtcblxuICAgICAgICAgIHZhciB1cGRhdGVBdWRpZW5jZSA9IHtcbiAgICAgICAgICAgIGxhc3RVc2VkOiB7IF9fdHlwZTogJ0RhdGUnLCBpc286IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9LFxuICAgICAgICAgICAgdGltZXNVc2VkOiB7IF9fb3A6ICdJbmNyZW1lbnQnLCBhbW91bnQ6IDEgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHdyaXRlID0gbmV3IFJlc3RXcml0ZShcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIG1hc3Rlcihjb25maWcpLFxuICAgICAgICAgICAgJ19BdWRpZW5jZScsXG4gICAgICAgICAgICB7IG9iamVjdElkOiBhdWRpZW5jZUlkIH0sXG4gICAgICAgICAgICB1cGRhdGVBdWRpZW5jZVxuICAgICAgICAgICk7XG4gICAgICAgICAgd3JpdGUuZXhlY3V0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvbid0IHdhaXQgZm9yIHRoZSBhdWRpZW5jZSB1cGRhdGUgcHJvbWlzZSB0byByZXNvbHZlLlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJvZHksICdwdXNoX3RpbWUnKSAmJlxuICAgICAgICAgIGNvbmZpZy5oYXNQdXNoU2NoZWR1bGVkU3VwcG9ydFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZy5wdXNoQ29udHJvbGxlclF1ZXVlLmVucXVldWUoYm9keSwgd2hlcmUsIGNvbmZpZywgYXV0aCwgcHVzaFN0YXR1cyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhdHVzLmZhaWwoZXJyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV4cGlyYXRpb24gdGltZSBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXF1ZXN0IEEgcmVxdWVzdCBvYmplY3RcbiAgICogQHJldHVybnMge051bWJlcnx1bmRlZmluZWR9IFRoZSBleHBpcmF0aW9uIHRpbWUgaWYgaXQgZXhpc3RzIGluIHRoZSByZXF1ZXN0XG4gICAqL1xuICBzdGF0aWMgZ2V0RXhwaXJhdGlvblRpbWUoYm9keSA9IHt9KSB7XG4gICAgdmFyIGhhc0V4cGlyYXRpb25UaW1lID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJvZHksICdleHBpcmF0aW9uX3RpbWUnKTtcbiAgICBpZiAoIWhhc0V4cGlyYXRpb25UaW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBleHBpcmF0aW9uVGltZVBhcmFtID0gYm9keVsnZXhwaXJhdGlvbl90aW1lJ107XG4gICAgdmFyIGV4cGlyYXRpb25UaW1lO1xuICAgIGlmICh0eXBlb2YgZXhwaXJhdGlvblRpbWVQYXJhbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGV4cGlyYXRpb25UaW1lID0gbmV3IERhdGUoZXhwaXJhdGlvblRpbWVQYXJhbSAqIDEwMDApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cGlyYXRpb25UaW1lUGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBleHBpcmF0aW9uVGltZSA9IG5ldyBEYXRlKGV4cGlyYXRpb25UaW1lUGFyYW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLlBVU0hfTUlTQ09ORklHVVJFRCxcbiAgICAgICAgYm9keVsnZXhwaXJhdGlvbl90aW1lJ10gKyAnIGlzIG5vdCB2YWxpZCB0aW1lLidcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIENoZWNrIGV4cGlyYXRpb25UaW1lIGlzIHZhbGlkIG9yIG5vdCwgaWYgaXQgaXMgbm90IHZhbGlkLCBleHBpcmF0aW9uVGltZSBpcyBOYU5cbiAgICBpZiAoIWlzRmluaXRlKGV4cGlyYXRpb25UaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ2V4cGlyYXRpb25fdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZXhwaXJhdGlvblRpbWUudmFsdWVPZigpO1xuICB9XG5cbiAgc3RhdGljIGdldEV4cGlyYXRpb25JbnRlcnZhbChib2R5ID0ge30pIHtcbiAgICBjb25zdCBoYXNFeHBpcmF0aW9uSW50ZXJ2YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ2V4cGlyYXRpb25faW50ZXJ2YWwnKTtcbiAgICBpZiAoIWhhc0V4cGlyYXRpb25JbnRlcnZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSA9IGJvZHlbJ2V4cGlyYXRpb25faW50ZXJ2YWwnXTtcbiAgICBpZiAodHlwZW9mIGV4cGlyYXRpb25JbnRlcnZhbFBhcmFtICE9PSAnbnVtYmVyJyB8fCBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLlBVU0hfTUlTQ09ORklHVVJFRCxcbiAgICAgICAgYGV4cGlyYXRpb25faW50ZXJ2YWwgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMGBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBleHBpcmF0aW9uSW50ZXJ2YWxQYXJhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcHVzaCB0aW1lIGZyb20gdGhlIHJlcXVlc3QgYm9keS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3QgQSByZXF1ZXN0IG9iamVjdFxuICAgKiBAcmV0dXJucyB7TnVtYmVyfHVuZGVmaW5lZH0gVGhlIHB1c2ggdGltZSBpZiBpdCBleGlzdHMgaW4gdGhlIHJlcXVlc3RcbiAgICovXG4gIHN0YXRpYyBnZXRQdXNoVGltZShib2R5ID0ge30pIHtcbiAgICB2YXIgaGFzUHVzaFRpbWUgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYm9keSwgJ3B1c2hfdGltZScpO1xuICAgIGlmICghaGFzUHVzaFRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHB1c2hUaW1lUGFyYW0gPSBib2R5WydwdXNoX3RpbWUnXTtcbiAgICB2YXIgZGF0ZTtcbiAgICB2YXIgaXNMb2NhbFRpbWUgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBwdXNoVGltZVBhcmFtID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHB1c2hUaW1lUGFyYW0gKiAxMDAwKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwdXNoVGltZVBhcmFtID09PSAnc3RyaW5nJykge1xuICAgICAgaXNMb2NhbFRpbWUgPSAhUHVzaENvbnRyb2xsZXIucHVzaFRpbWVIYXNUaW1lem9uZUNvbXBvbmVudChwdXNoVGltZVBhcmFtKTtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShwdXNoVGltZVBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ3B1c2hfdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBDaGVjayBwdXNoVGltZSBpcyB2YWxpZCBvciBub3QsIGlmIGl0IGlzIG5vdCB2YWxpZCwgcHVzaFRpbWUgaXMgTmFOXG4gICAgaWYgKCFpc0Zpbml0ZShkYXRlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGJvZHlbJ3B1c2hfdGltZSddICsgJyBpcyBub3QgdmFsaWQgdGltZS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRlLFxuICAgICAgaXNMb2NhbFRpbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBJU084NjAxIGZvcm1hdHRlZCBkYXRlIGNvbnRhaW5zIGEgdGltZXpvbmUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBwdXNoVGltZVBhcmFtIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIHB1c2hUaW1lSGFzVGltZXpvbmVDb21wb25lbnQocHVzaFRpbWVQYXJhbTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb2Zmc2V0UGF0dGVybiA9IC8oLispKFsrLV0pXFxkXFxkOlxcZFxcZCQvO1xuICAgIHJldHVybiAoXG4gICAgICBwdXNoVGltZVBhcmFtLmluZGV4T2YoJ1onKSA9PT0gcHVzaFRpbWVQYXJhbS5sZW5ndGggLSAxIHx8IG9mZnNldFBhdHRlcm4udGVzdChwdXNoVGltZVBhcmFtKSAvLyAyMDA3LTA0LTA1VDEyOjMwWlxuICAgICk7IC8vIDIwMDctMDQtMDVUMTI6MzAuMDAwKzAyOjAwLCAyMDA3LTA0LTA1VDEyOjMwLjAwMC0wMjowMFxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgZGF0ZSB0byBJU08gZm9ybWF0IGluIFVUQyB0aW1lIGFuZCBzdHJpcHMgdGhlIHRpbWV6b25lIGlmIGBpc0xvY2FsVGltZWAgaXMgdHJ1ZVxuICAgKiBAcGFyYW0gZGF0ZSB7RGF0ZX1cbiAgICogQHBhcmFtIGlzTG9jYWxUaW1lIHtib29sZWFufVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGZvcm1hdFB1c2hUaW1lKHsgZGF0ZSwgaXNMb2NhbFRpbWUgfTogeyBkYXRlOiBEYXRlLCBpc0xvY2FsVGltZTogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGlzTG9jYWxUaW1lKSB7XG4gICAgICAvLyBTdHJpcCAnWidcbiAgICAgIGNvbnN0IGlzb1N0cmluZyA9IGRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIHJldHVybiBpc29TdHJpbmcuc3Vic3RyaW5nKDAsIGlzb1N0cmluZy5pbmRleE9mKCdaJykpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJ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
|