Plugin Directory

Changeset 3269283


Ignore:
Timestamp:
04/09/2025 03:00:01 AM (12 months ago)
Author:
michael.heuberger
Message:

Update to version 7.0.8 from GitHub

Location:
videomail-for-ninja-forms
Files:
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • videomail-for-ninja-forms/tags/7.0.8/readme.txt

    r3257516 r3269283  
    55
    66Requires at least: 6.0
    7 Tested up to: 7.0.7
    8 Stable tag: 7.0.7
     7Tested up to: 6.7.2
     8Stable tag: 7.0.8
    99Requires PHP: 8.1.0
    1010Donate link: https://videomail.io/faq
     
    7171
    7272== Changelog ==
     73= 7.0.8 (9 Apr 2025) =
     74*Improvement:*
     75* Serialize all error variables for improved error reporting
     76*Chore:*
     77* Upgrade Videomail-Client
     78*Fix:*
     79* Corrects invalid version for the "Tested up to" field
     80
    7381= 7.0.7 (18 March 2025) =
    7482*Improvement:*
  • videomail-for-ninja-forms/tags/7.0.8/target/js/main.min.js

    r3257516 r3269283  
    1 let PLUGIN_VERSION="7.0.7",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC43XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0EsSUFBTUEsZUFBaUIsUUFHbkJDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUFTQyxTQUFTQyxNQUFNRixRQUFRLFdBQVcsRUFFM0NHLFdBQVksV0FDVkYsU0FBU0MsTUFBTVQsTUFBUUEsTUFFdkJXLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsYUFBY0ksS0FBS0Usc0JBQXNCLEVBQ3pFRixLQUFLQyxhQUFhRCxLQUFLSixRQUFTLGNBQWVJLEtBQUtHLG1CQUFtQixFQUd2RUgsS0FBS0ksU0FBU0osS0FBS0osUUFBUyxNQUFPLFNBQVVTLEdBQzNDaEIsT0FBU2lCLFFBQVFDLElBQUkscUNBQXNDRixDQUFTLEVBSXBFTCxLQUFLSSxTQUFTSSxRQUFRWixRQUFRLE1BQU0sRUFBRyxjQUFlLFNBQVVhLEdBQzlEcEIsT0FBU2lCLFFBQVFDLElBQUksZ0NBQWlDLGFBQWEsRUFFN0RHLEVBQ0pELEVBQU9FLGdCQUFnQkMsWUFBWUMsaUJBQWlCQyxRQUFVLEdBRWhFLElBQU1DLEVBQWFmLEtBQUtMLFdBQVdxQixJQUVkTixFQUFjTyxLQUFLLFNBQVVDLEdBQ2hELE9BQU9BLEVBQU1GLE1BQVFELENBQ3ZCLENBQUMsRUFHQ2YsS0FBS0csb0JBQW9CLEVBRXpCSCxLQUFLTixnQkFBZ0J5QixPQUFPLENBRWhDLENBQUMsQ0FDSCxDQUFDLENBQ0gsRUFFQUMsVUFBVyxXQUNULE9BQU9wQixLQUFLTCxXQUFXMEIsSUFBSSxRQUFRLENBQ3JDLEVBRUFuQix1QkFBd0IsU0FBVVAsR0FDaENLLEtBQUtMLFdBQWFBLEVBSWxCSyxLQUFLSixRQUFRMEIsTUFBTSxvQkFBcUJ0QixLQUFLdUIsaUJBQWtCdkIsSUFBSSxFQUVuRUEsS0FBS0osUUFBUTBCLE1BQU0scUJBQXNCdEIsS0FBS3dCLGtCQUFtQnhCLElBQUksRUFJckVILFNBQVNDLE1BQU1GLFFBQVEsUUFBVUksS0FBS29CLFVBQVUsQ0FBQyxFQUFFRSxNQUNqRCxlQUNBdEIsS0FBS3lCLFlBQ0x6QixLQUNBTCxDQUNGLENBQ0YsRUFFQVEsb0JBQXFCLFdBQ25CdUIsSUFBSUMsRUFBeUIzQixLQUFLTCxXQUFXMEIsSUFBSSxlQUFlLEdBQUssR0FFeEMsSUFBekJNLEVBQ0ZBLEVBQXlCLElBQ2hCQSxFQUF5QixJQUNsQ0EsRUFBeUIsR0FHM0IsSUFBTUMsRUFBVTVCLEtBQUtMLFdBQVcwQixJQUFJLFNBQVMsR0FBS2hDLE1BR2xEQSxNQUFRQSxPQUFTdUMsRUFDakIvQixTQUFTQyxNQUFNVCxNQUFRUSxTQUFTQyxNQUFNVCxPQUFTdUMsRUFFL0M1QixLQUFLTixnQkFBa0IsSUFBSW1DLGdCQUFnQkEsZ0JBQWdCLENBQ3pEQyxTQUFVOUIsS0FBS0wsV0FBVzBCLElBQUksV0FBVyxFQUN6Q1UsTUFBTyxDQUNMQyxhQUFjaEMsS0FBS0wsV0FBVzBCLElBQUksZUFBZSxHQUFLLEdBQ3REWSxNQUFPakMsS0FBS0wsV0FBVzBCLElBQUksT0FBTyxHQUFLLElBRXZDYSxRQUFTbEMsS0FBS0wsV0FBVzBCLElBQUksU0FBUyxHQUFLLENBQUEsRUFDM0NjLFVBQVduQyxLQUFLTCxXQUFXMEIsSUFBSSxXQUFXLEdBQUssQ0FBQSxDQUNqRCxFQUNBZSxNQUFPLENBQUVDLFFBQVNyQyxLQUFLTCxXQUFXMEIsSUFBSSxlQUFlLENBQUUsRUFDdkRpQixNQUFPLENBQ0xDLFFBQVNaLEVBQXlCLEdBQ3BDLEVBQ0FhLFVBQVcsQ0FBRUMsWUFBYSxZQUFhQyxxQkFBc0Isb0JBQXFCLEVBQ2xGQyxVQUFXLENBRVRDLDRCQUNFNUMsS0FBSzZDLDZDQUE2Q0MsS0FBSzlDLElBQUksQ0FDL0QsRUFFQStDLHNCQUF1Qi9DLEtBQUtMLFdBQVcwQixJQUFJLDJCQUEyQixFQUd0RTJCLHFCQUFzQixDQUFBLEVBR3RCQyxxQkFBc0IsQ0FBQSxFQUd0QnJCLFFBQUFBLEVBRUFzQixTQUFVLENBQUVDLGdCQUFpQi9ELGNBQWUsQ0FDOUMsQ0FBQyxFQUVEWSxLQUFLTixnQkFBZ0IwRCxHQUFHLFVBQVdwRCxLQUFLcUQsVUFBVVAsS0FBSzlDLElBQUksQ0FBQyxFQUM1REEsS0FBS04sZ0JBQWdCMEQsR0FBRyxZQUFhcEQsS0FBS3NELFlBQVlSLEtBQUs5QyxJQUFJLENBQUMsRUFDaEVBLEtBQUtOLGdCQUFnQjBELEdBQUcsYUFBY3BELEtBQUt1RCxZQUFZVCxLQUFLOUMsSUFBSSxDQUFDLEVBRWpFQSxLQUFLTixnQkFBZ0I4RCxLQUFLLENBQzVCLEVBSUFILFVBQVcsU0FBVUksR0FDbkJ6RCxLQUFLTCxXQUFXK0QsSUFBSSxnQkFBaUJELENBQUcsRUFDeEN6RCxLQUFLTCxXQUFXK0QsSUFBSSxRQUFTRCxDQUFHLEVBRWhDNUQsU0FBU0MsTUFBTUYsUUFBUSxRQUFRLEVBRTVCK0QsUUFBUSxlQUFnQjNELEtBQUtMLFdBQVcwQixJQUFJLElBQUksRUFBRyxnQkFBZ0IsQ0FDeEUsRUFFQWlDLFlBQWEsU0FBVU0sR0FDckJsQyxJQUFJbUMsRUFBWWhFLFNBQVNDLE1BQU1GLFFBQVEsS0FBSyxFQUFFK0QsUUFBUSxXQUFZM0QsS0FBS29CLFVBQVUsQ0FBQyxFQUU3RXlDLEVBQUFBLEdBRVM3RCxLQUFLTCxXQUFXbUUsV0FBV0MsUUFBUUYsVUFJakRoRSxTQUFTQyxNQUFNRixRQUFRLFFBQVVpRSxFQUFVeEMsSUFBSSxJQUFJLENBQUMsRUFBRXNDLFFBQ3BELFlBQ0EsWUFDQUMsRUFBT0ksU0FDVCxFQUdBbkUsU0FBU0MsTUFBTUYsUUFBUSxRQUFVSSxLQUFLb0IsVUFBVSxDQUFDLEVBQUV1QyxRQUFRLFNBQVVFLENBQVMsQ0FDaEYsRUFFQU4sWUFBYSxXQUNYdkQsS0FBS0wsV0FBVytELElBQUksZ0JBQWlCLElBQUksRUFDekMxRCxLQUFLaUUsV0FBVyxDQUNsQixFQUVBMUMsaUJBQWtCLFNBQVUyQyxFQUFJdkUsR0FDeEJ3RSxFQUFRbkUsS0FBS3dCLGtCQUFrQjdCLENBQVUsRUFNL0MsT0FKS3dFLEdBQ0huRSxLQUFLaUUsV0FBVyxFQUdYRSxDQUNULEVBRUFGLFdBQVksV0FFVnBFLFNBQVNDLE1BQU1GLFFBQVEsUUFBUSxFQUFFK0QsUUFDL0IsWUFDQTNELEtBQUtMLFdBQVcwQixJQUFJLElBQUksRUFDeEIsaUJBQ0Esa0RBQ0YsQ0FDRixFQUVBRyxrQkFBbUIsU0FBVTdCLEdBRTNCLE9BREFBLEVBQWFBLEdBQWNLLEtBQUtMLFlBQ2QwQixJQUFJLGVBQWUsR0FBSyxDQUFBLENBQzVDLEVBRUErQyxVQUFXLFNBQVVQLEdBQ25CLE9BQXdDLEVBQWpDQSxFQUFVeEMsSUFBSSxRQUFRLEVBQUVnRCxNQUNqQyxFQUVBNUMsWUFBYSxTQUFVb0MsR0FDckJuQyxJQUFJNEMsRUFBUSxDQUFBLEVBQ1osSUFBTUMsRUFBcUJWLEVBQVVXLFNBQVMsV0FBVyxFQUNuREMsRUFBb0J6RSxLQUFLd0Isa0JBQWtCLEVBQzNDa0QsRUFBUTFFLEtBQUtvRSxVQUFVUCxDQUFTLEVBU3RDLE9BTEtVLEdBQXVCRyxHQUFTRCxDQUFBQSxJQUNuQ3pFLEtBQUtOLGdCQUFnQmlGLE9BQU8sRUFDNUJMLEVBQVEsQ0FBQSxHQUdIQSxDQUNULEVBRUFNLGlCQUFrQixTQUFVQyxFQUFVQyxHQUNwQ3BELElBQUlxRCxFQUFRL0UsS0FBS0wsV0FBVzBCLElBQUl3RCxDQUFRLEVBcUJ4QyxHQWpCSUUsSUFJWSxxQkFBVkEsRUFDRkEsRUFBUUMsT0FBT0MsWUFBWUMsYUFHckJDLEdBREFDLEVBQXFCTCxFQUFNTSxNQUFNLGVBQWUsSUFDWkQsRUFBbUIsTUFFekNMLElBRWxCQSxFQUFRQSxFQUFNTyxRQUFRLGdCQUFpQlIsRUFBV0ssRUFBWSxJQUt0RCxjQUFWSixFQUlKLE9BQU9BLENBQ1QsRUFXQVEsY0FBZSxXQUNiN0QsSUFBSW9DLEVBQ0osSUFBTUQsRUFBWWhFLFNBQVNDLE1BQU1GLFFBQVEsS0FBSyxFQUFFK0QsUUFBUSxXQUFZM0QsS0FBS29CLFVBQVUsQ0FBQyxFQVM5RTBELEdBUEZqQixFQUNGQyxFQUFhRCxFQUFVeEMsSUFBSSxRQUFRLEVBRTFCckIsS0FBS0wsV0FBV21FLFdBQVdDLFFBQVFGLFVBQVV4QyxJQUFJLFFBQVEsRUFBRVAsU0FDcEVnRCxFQUFhOUQsS0FBS0wsV0FBV21FLFdBQVdDLFFBQVFGLFVBQVV4QyxJQUFJLFFBQVEsRUFBRVAsUUFHdkRnRCxFQUFXMEIsT0FBTyxTQUFVQyxFQUFNQyxHQUVuRCxPQURBRCxFQUFLQyxFQUFNckUsSUFBSSxLQUFLLEdBQUtxRSxFQUFNckUsSUFBSSxPQUFPLEVBQ25Db0UsQ0FDVCxFQUFHLEVBQUUsR0FFTCxPQUFPWCxDQUNULEVBRUFqQyw2Q0FBOEMsU0FBVW1CLEdBQ3RELElBQU1jLEVBQWE5RSxLQUFLdUYsY0FBYyxFQU90QyxPQUxBdkIsRUFBVTJCLEtBQU8zRixLQUFLNEUsaUJBQWlCLGFBQWNFLENBQVUsRUFDL0RkLEVBQVU0QixHQUFLNUYsS0FBSzRFLGlCQUFpQixXQUFZRSxDQUFVLEVBQzNEZCxFQUFVNkIsUUFBVTdGLEtBQUs0RSxpQkFBaUIsZ0JBQWlCRSxDQUFVLEVBQ3JFZCxFQUFVOEIsS0FBTzlGLEtBQUs0RSxpQkFBaUIsYUFBY0UsQ0FBVSxFQUV4RGQsQ0FDVCxFQUVBK0IsZ0JBQWlCLFdBQ2YvRixLQUFLTixnQkFBZ0J5QixPQUFPLEVBQzVCLE9BQU9uQixLQUFLTixlQUNkLENBQ0YsQ0FBQyxFQUVEc0csT0FBT0MsUUFBUSxFQUFFQyxNQUFNLFdBQ3JCLE9BQU8sSUFBSTVHLHdCQUNiLENBQUMifQ==
     1let PLUGIN_VERSION="7.0.8",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC44XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3Qi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
  • videomail-for-ninja-forms/tags/7.0.8/target/js/videomail-client/index.js

    r3257516 r3269283  
    480480                    for(i = 0; i < list.length; ++i){
    481481                        var buf = list[i];
    482                         if (isInstance(buf, Uint8Array)) {
    483                             if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos);
    484                             else Uint8Array.prototype.set.call(buffer, buf, pos);
    485                         } else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos);
     482                        if (isInstance(buf, Uint8Array)) if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos);
     483                        else Uint8Array.prototype.set.call(buffer, buf, pos);
     484                        else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos);
    486485                        else throw new TypeError('"list" argument must be an Array of Buffers');
    487486                        pos += buf.length;
     
    647646                    if (numberIsNaN(byteOffset)) byteOffset = dir ? 0 : buffer.length - 1;
    648647                    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
    649                     if (byteOffset >= buffer.length) {
    650                         if (dir) return -1;
    651                         byteOffset = buffer.length - 1;
    652                     } else if (byteOffset < 0) {
    653                         if (!dir) return -1;
    654                         byteOffset = 0;
    655                     }
     648                    if (byteOffset >= buffer.length) if (dir) return -1;
     649                    else byteOffset = buffer.length - 1;
     650                    else if (byteOffset < 0) if (!dir) return -1;
     651                    else byteOffset = 0;
    656652                    if ('string' == typeof val) val = Buffer.from(val, encoding);
    657653                    if (Buffer.isBuffer(val)) {
     
    661657                    if ('number' == typeof val) {
    662658                        val &= 0xFF;
    663                         if ('function' == typeof Uint8Array.prototype.indexOf) {
    664                             if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
    665                             return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
    666                         }
     659                        if ('function' == typeof Uint8Array.prototype.indexOf) if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
     660                        else return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
    667661                        return arrayIndexOf(buffer, [
    668662                            val
     
    20212015                function prependListener(emitter, event, fn) {
    20222016                    if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn);
    2023                     if (emitter._events && emitter._events[event]) {
    2024                         if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
    2025                         else emitter._events[event] = [
    2026                             fn,
    2027                             emitter._events[event]
    2028                         ];
    2029                     } else emitter.on(event, fn);
     2017                    if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
     2018                    else emitter._events[event] = [
     2019                        fn,
     2020                        emitter._events[event]
     2021                    ];
     2022                    else emitter.on(event, fn);
    20302023                }
    20312024                function ReadableState(options, stream) {
     
    21222115                        else if (state.objectMode || chunk && chunk.length > 0) {
    21232116                            if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk);
    2124                             if (addToFront) {
    2125                                 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
    2126                                 else addChunk(stream, state, chunk, true);
    2127                             } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
     2117                            if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
     2118                            else addChunk(stream, state, chunk, true);
     2119                            else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
    21282120                            else {
    21292121                                state.reading = false;
     
    21842176                    if (n <= 0 || 0 === state.length && state.ended) return 0;
    21852177                    if (state.objectMode) return 1;
    2186                     if (n !== n) {
    2187                         if (state.flowing && state.length) return state.buffer.head.data.length;
    2188                         return state.length;
    2189                     }
     2178                    if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length;
     2179                    else return state.length;
    21902180                    if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
    21912181                    if (n <= state.length) return n;
     
    30703060                }
    30713061                function prefinish(stream, state) {
    3072                     if (!state.prefinished && !state.finalCalled) {
    3073                         if ('function' == typeof stream._final) {
    3074                             state.pendingcb++;
    3075                             state.finalCalled = true;
    3076                             pna.nextTick(callFinal, stream, state);
    3077                         } else {
    3078                             state.prefinished = true;
    3079                             stream.emit('prefinish');
    3080                         }
     3062                    if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) {
     3063                        state.pendingcb++;
     3064                        state.finalCalled = true;
     3065                        pna.nextTick(callFinal, stream, state);
     3066                    } else {
     3067                        state.prefinished = true;
     3068                        stream.emit('prefinish');
    30813069                    }
    30823070                }
     
    30953083                    state.ending = true;
    30963084                    finishMaybe(stream, state);
    3097                     if (cb) {
    3098                         if (state.finished) pna.nextTick(cb);
    3099                         else stream.once('finish', cb);
    3100                     }
     3085                    if (cb) if (state.finished) pna.nextTick(cb);
     3086                    else stream.once('finish', cb);
    31013087                    state.ended = true;
    31023088                    stream.writable = false;
     
    32153201                    if (readableDestroyed || writableDestroyed) {
    32163202                        if (cb) cb(err);
    3217                         else if (err) {
    3218                             if (this._writableState) {
    3219                                 if (!this._writableState.errorEmitted) {
    3220                                     this._writableState.errorEmitted = true;
    3221                                     pna.nextTick(emitErrorNT, this, err);
    3222                                 }
    3223                             } else pna.nextTick(emitErrorNT, this, err);
    3224                         }
     3203                        else if (err) if (this._writableState) {
     3204                            if (!this._writableState.errorEmitted) {
     3205                                this._writableState.errorEmitted = true;
     3206                                pna.nextTick(emitErrorNT, this, err);
     3207                            }
     3208                        } else pna.nextTick(emitErrorNT, this, err);
    32253209                        return this;
    32263210                    }
     
    32283212                    if (this._writableState) this._writableState.destroyed = true;
    32293213                    this._destroy(err || null, function(err) {
    3230                         if (!cb && err) {
    3231                             if (_this._writableState) {
    3232                                 if (!_this._writableState.errorEmitted) {
    3233                                     _this._writableState.errorEmitted = true;
    3234                                     pna.nextTick(emitErrorNT, _this, err);
    3235                                 }
    3236                             } else pna.nextTick(emitErrorNT, _this, err);
    3237                         } else if (cb) cb(err);
     3214                        if (!cb && err) if (_this._writableState) {
     3215                            if (!_this._writableState.errorEmitted) {
     3216                                _this._writableState.errorEmitted = true;
     3217                                pna.nextTick(emitErrorNT, _this, err);
     3218                            }
     3219                        } else pna.nextTick(emitErrorNT, _this, err);
     3220                        else if (cb) cb(err);
    32383221                    });
    32393222                    return this;
     
    32983281                    if ('number' != typeof size) throw new TypeError('Argument must be a number');
    32993282                    var buf = Buffer(size);
    3300                     if (void 0 !== fill) {
    3301                         if ('string' == typeof encoding) buf.fill(fill, encoding);
    3302                         else buf.fill(fill);
    3303                     } else buf.fill(0);
     3283                    if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding);
     3284                    else buf.fill(fill);
     3285                    else buf.fill(0);
    33043286                    return buf;
    33053287                };
     
    34403422                    nb = utf8CheckByte(buf[j]);
    34413423                    if (nb >= 0) {
    3442                         if (nb > 0) {
    3443                             if (2 === nb) nb = 0;
    3444                             else self1.lastNeed = nb - 3;
    3445                         }
     3424                        if (nb > 0) if (2 === nb) nb = 0;
     3425                        else self1.lastNeed = nb - 3;
    34463426                        return nb;
    34473427                    }
     
    38333813                    list = events[type];
    38343814                    if (void 0 === list) return this;
    3835                     if (list === listener || list.listener === listener) {
    3836                         if (0 === --this._eventsCount) this._events = Object.create(null);
    3837                         else {
    3838                             delete events[type];
    3839                             if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
    3840                         }
    3841                     } else if ('function' != typeof list) {
     3815                    if (list === listener || list.listener === listener) if (0 === --this._eventsCount) this._events = Object.create(null);
     3816                    else {
     3817                        delete events[type];
     3818                        if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
     3819                    }
     3820                    else if ('function' != typeof list) {
    38423821                        position = -1;
    38433822                        for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) {
     
    38633842                            this._events = Object.create(null);
    38643843                            this._eventsCount = 0;
    3865                         } else if (void 0 !== events[type]) {
    3866                             if (0 === --this._eventsCount) this._events = Object.create(null);
    3867                             else delete events[type];
    3868                         }
     3844                        } else if (void 0 !== events[type]) if (0 === --this._eventsCount) this._events = Object.create(null);
     3845                        else delete events[type];
    38693846                        return this;
    38703847                    }
     
    39573934                }
    39583935                function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
    3959                     if ('function' == typeof emitter.on) {
    3960                         if (flags.once) emitter.once(name, listener);
    3961                         else emitter.on(name, listener);
    3962                     } else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) {
     3936                    if ('function' == typeof emitter.on) if (flags.once) emitter.once(name, listener);
     3937                    else emitter.on(name, listener);
     3938                    else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) {
    39633939                        if (flags.once) emitter.removeEventListener(name, wrapListener);
    39643940                        listener(arg);
     
    40013977                function setReplace(replace, val, k, parent) {
    40023978                    var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k);
    4003                     if (void 0 !== propertyDescriptor.get) {
    4004                         if (propertyDescriptor.configurable) {
    4005                             Object.defineProperty(parent, k, {
    4006                                 value: replace
    4007                             });
    4008                             arr.push([
    4009                                 parent,
    4010                                 k,
    4011                                 val,
    4012                                 propertyDescriptor
    4013                             ]);
    4014                         } else replacerStack.push([
     3979                    if (void 0 !== propertyDescriptor.get) if (propertyDescriptor.configurable) {
     3980                        Object.defineProperty(parent, k, {
     3981                            value: replace
     3982                        });
     3983                        arr.push([
     3984                            parent,
     3985                            k,
    40153986                            val,
    4016                             k,
    4017                             replace
     3987                            propertyDescriptor
    40183988                        ]);
    4019                     } else {
     3989                    } else replacerStack.push([
     3990                        val,
     3991                        k,
     3992                        replace
     3993                    ]);
     3994                    else {
    40203995                        parent[k] = replace;
    40213996                        arr.push([
     
    41414116                var hasOwnProperty = Object.prototype.hasOwnProperty;
    41424117                var forEachArray = function(array, iterator, receiver) {
    4143                     for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) {
    4144                         if (null == receiver) iterator(array[i], i, array);
    4145                         else iterator.call(receiver, array[i], i, array);
    4146                     }
     4118                    for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) if (null == receiver) iterator(array[i], i, array);
     4119                    else iterator.call(receiver, array[i], i, array);
    41474120                };
    41484121                var forEachString = function(string, iterator, receiver) {
     
    41514124                };
    41524125                var forEachObject = function(object, iterator, receiver) {
    4153                     for(var k in object)if (hasOwnProperty.call(object, k)) {
    4154                         if (null == receiver) iterator(object[k], k, object);
    4155                         else iterator.call(receiver, object[k], k, object);
    4156                     }
     4126                    for(var k in object)if (hasOwnProperty.call(object, k)) if (null == receiver) iterator(object[k], k, object);
     4127                    else iterator.call(receiver, object[k], k, object);
    41574128                };
    41584129                var forEach = function(list, iterator, thisArg) {
     
    51825153                            depth: maxDepth - depth
    51835154                        });
    5184                         if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();
     5155                        else if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();
    51855156                    }
    51865157                    if (isMap(obj)) {
     
    54195390                        for(var k = 0; k < syms.length; k++)symMap['$' + syms[k]] = syms[k];
    54205391                    }
    5421                     for(var key in obj){
    5422                         if (!!has(obj, key)) {
    5423                             if (!isArr || String(Number(key)) !== key || !(key < obj.length)) {
    5424                                 if (!(hasShammedSymbols && symMap['$' + key] instanceof Symbol)) {
    5425                                     if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
    5426                                     else xs.push(key + ': ' + inspect(obj[key], obj));
    5427                                 }
    5428                             }
    5429                         }
     5392                    for(var key in obj)if (has(obj, key)) {
     5393                        if (!isArr || String(Number(key)) !== key || !(key < obj.length)) if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) continue;
     5394                        else if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
     5395                        else xs.push(key + ': ' + inspect(obj[key], obj));
    54305396                    }
    54315397                    if ('function' == typeof gOPS) {
     
    59605926                        var pos = tmpSc.get(object);
    59615927                        step += 1;
    5962                         if (void 0 !== pos) {
    5963                             if (pos === step) throw new RangeError('Cyclic object value');
    5964                             findFlag = true;
    5965                         }
     5928                        if (void 0 !== pos) if (pos === step) throw new RangeError('Cyclic object value');
     5929                        else findFlag = true;
    59665930                        if (void 0 === tmpSc.get(sentinel)) step = 0;
    59675931                    }
     
    60856049                    var joined = keys.join(options.delimiter);
    60866050                    var prefix = true === options.addQueryPrefix ? '?' : '';
    6087                     if (options.charsetSentinel) {
    6088                         if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&';
    6089                         else prefix += 'utf8=%E2%9C%93&';
    6090                     }
     6051                    if (options.charsetSentinel) if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&';
     6052                    else prefix += 'utf8=%E2%9C%93&';
    60916053                    return joined.length > 0 ? prefix + joined : '';
    60926054                };
     
    75827544                exports1.debuglog = function(set) {
    75837545                    set = set.toUpperCase();
    7584                     if (!debugs[set]) {
    7585                         if (debugEnvRegex.test(set)) {
    7586                             var pid = process.pid;
    7587                             debugs[set] = function() {
    7588                                 var msg = exports1.format.apply(exports1, arguments);
    7589                                 console.error('%s %d: %s', set, pid, msg);
    7590                             };
    7591                         } else debugs[set] = function() {};
    7592                     }
     7546                    if (!debugs[set]) if (debugEnvRegex.test(set)) {
     7547                        var pid = process.pid;
     7548                        debugs[set] = function() {
     7549                            var msg = exports1.format.apply(exports1, arguments);
     7550                            console.error('%s %d: %s', set, pid, msg);
     7551                        };
     7552                    } else debugs[set] = function() {};
    75937553                    return debugs[set];
    75947554                };
     
    77297689                    if (isError(value)) base = ' ' + formatError(value);
    77307690                    if (0 === keys.length && (!array || 0 == value.length)) return braces[0] + base + braces[1];
    7731                     if (recurseTimes < 0) {
    7732                         if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    7733                         return ctx.stylize('[Object]', 'special');
    7734                     }
     7691                    if (recurseTimes < 0) if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
     7692                    else return ctx.stylize('[Object]', 'special');
    77357693                    ctx.seen.push(value);
    77367694                    var output;
     
    77717729                    else if (desc.set) str = ctx.stylize('[Setter]', 'special');
    77727730                    if (!hasOwnProperty(visibleKeys, key)) name = '[' + key + ']';
    7773                     if (!str) {
    7774                         if (ctx.seen.indexOf(desc.value) < 0) {
    7775                             str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1);
    7776                             if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) {
    7777                                 return '  ' + line;
    7778                             }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) {
    7779                                 return '   ' + line;
    7780                             }).join('\n');
    7781                         } else str = ctx.stylize('[Circular]', 'special');
    7782                     }
     7731                    if (!str) if (ctx.seen.indexOf(desc.value) < 0) {
     7732                        str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1);
     7733                        if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) {
     7734                            return '  ' + line;
     7735                        }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) {
     7736                            return '   ' + line;
     7737                        }).join('\n');
     7738                    } else str = ctx.stylize('[Circular]', 'special');
    77837739                    if (isUndefined(name)) {
    77847740                        if (array && key.match(/^\d+$/)) return str;
     
    80998055                function prependListener(emitter, event, fn) {
    81008056                    if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn);
    8101                     if (emitter._events && emitter._events[event]) {
    8102                         if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
    8103                         else emitter._events[event] = [
    8104                             fn,
    8105                             emitter._events[event]
    8106                         ];
    8107                     } else emitter.on(event, fn);
     8057                    if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
     8058                    else emitter._events[event] = [
     8059                        fn,
     8060                        emitter._events[event]
     8061                    ];
     8062                    else emitter.on(event, fn);
    81088063                }
    81098064                function ReadableState(options, stream) {
     
    82008155                        else if (state.objectMode || chunk && chunk.length > 0) {
    82018156                            if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk);
    8202                             if (addToFront) {
    8203                                 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
    8204                                 else addChunk(stream, state, chunk, true);
    8205                             } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
     8157                            if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
     8158                            else addChunk(stream, state, chunk, true);
     8159                            else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
    82068160                            else {
    82078161                                state.reading = false;
     
    82628216                    if (n <= 0 || 0 === state.length && state.ended) return 0;
    82638217                    if (state.objectMode) return 1;
    8264                     if (n !== n) {
    8265                         if (state.flowing && state.length) return state.buffer.head.data.length;
    8266                         return state.length;
    8267                     }
     8218                    if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length;
     8219                    else return state.length;
    82688220                    if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
    82698221                    if (n <= state.length) return n;
     
    91489100                }
    91499101                function prefinish(stream, state) {
    9150                     if (!state.prefinished && !state.finalCalled) {
    9151                         if ('function' == typeof stream._final) {
    9152                             state.pendingcb++;
    9153                             state.finalCalled = true;
    9154                             pna.nextTick(callFinal, stream, state);
    9155                         } else {
    9156                             state.prefinished = true;
    9157                             stream.emit('prefinish');
    9158                         }
     9102                    if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) {
     9103                        state.pendingcb++;
     9104                        state.finalCalled = true;
     9105                        pna.nextTick(callFinal, stream, state);
     9106                    } else {
     9107                        state.prefinished = true;
     9108                        stream.emit('prefinish');
    91599109                    }
    91609110                }
     
    91739123                    state.ending = true;
    91749124                    finishMaybe(stream, state);
    9175                     if (cb) {
    9176                         if (state.finished) pna.nextTick(cb);
    9177                         else stream.once('finish', cb);
    9178                     }
     9125                    if (cb) if (state.finished) pna.nextTick(cb);
     9126                    else stream.once('finish', cb);
    91799127                    state.ended = true;
    91809128                    stream.writable = false;
     
    92939241                    if (readableDestroyed || writableDestroyed) {
    92949242                        if (cb) cb(err);
    9295                         else if (err) {
    9296                             if (this._writableState) {
    9297                                 if (!this._writableState.errorEmitted) {
    9298                                     this._writableState.errorEmitted = true;
    9299                                     pna.nextTick(emitErrorNT, this, err);
    9300                                 }
    9301                             } else pna.nextTick(emitErrorNT, this, err);
    9302                         }
     9243                        else if (err) if (this._writableState) {
     9244                            if (!this._writableState.errorEmitted) {
     9245                                this._writableState.errorEmitted = true;
     9246                                pna.nextTick(emitErrorNT, this, err);
     9247                            }
     9248                        } else pna.nextTick(emitErrorNT, this, err);
    93039249                        return this;
    93049250                    }
     
    93069252                    if (this._writableState) this._writableState.destroyed = true;
    93079253                    this._destroy(err || null, function(err) {
    9308                         if (!cb && err) {
    9309                             if (_this._writableState) {
    9310                                 if (!_this._writableState.errorEmitted) {
    9311                                     _this._writableState.errorEmitted = true;
    9312                                     pna.nextTick(emitErrorNT, _this, err);
    9313                                 }
    9314                             } else pna.nextTick(emitErrorNT, _this, err);
    9315                         } else if (cb) cb(err);
     9254                        if (!cb && err) if (_this._writableState) {
     9255                            if (!_this._writableState.errorEmitted) {
     9256                                _this._writableState.errorEmitted = true;
     9257                                pna.nextTick(emitErrorNT, _this, err);
     9258                            }
     9259                        } else pna.nextTick(emitErrorNT, _this, err);
     9260                        else if (cb) cb(err);
    93169261                    });
    93179262                    return this;
     
    93769321                    if ('number' != typeof size) throw new TypeError('Argument must be a number');
    93779322                    var buf = Buffer(size);
    9378                     if (void 0 !== fill) {
    9379                         if ('string' == typeof encoding) buf.fill(fill, encoding);
    9380                         else buf.fill(fill);
    9381                     } else buf.fill(0);
     9323                    if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding);
     9324                    else buf.fill(fill);
     9325                    else buf.fill(0);
    93829326                    return buf;
    93839327                };
     
    95189462                    nb = utf8CheckByte(buf[j]);
    95199463                    if (nb >= 0) {
    9520                         if (nb > 0) {
    9521                             if (2 === nb) nb = 0;
    9522                             else self1.lastNeed = nb - 3;
    9523                         }
     9464                        if (nb > 0) if (2 === nb) nb = 0;
     9465                        else self1.lastNeed = nb - 3;
    95249466                        return nb;
    95259467                    }
     
    98269768                }
    98279769            },
    9828             "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
     9770            "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
    98299771                "use strict";
    98309772                __webpack_require__.d(__webpack_exports__, {
     
    98389780                ___CSS_LOADER_EXPORT___.push([
    98399781                    module1.id,
    9840                     '@keyframes blink{0%{opacity:.9}35%{opacity:.9}50%{opacity:.1}85%{opacity:.1}to{opacity:.9}}.videomail .visuals{position:relative}.videomail .visuals video.replay{width:100%;height:100%}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint{height:auto;margin:0}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .paused,.videomail .facingMode,.videomail noscript{z-index:100;position:absolute}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint,.videomail noscript{font-weight:700}.videomail .countdown,.videomail .paused,.videomail noscript{width:100%;top:50%;transform:translateY(-50%)}.videomail .pausedHeader,.videomail .pausedHint,.videomail .countdown{text-align:center;letter-spacing:4px;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.videomail .pausedHeader,.videomail .countdown{opacity:.9;font-size:460%}.videomail .pausedHint{font-size:150%}.videomail .facingMode{color:#f5f5f5e6;z-index:10;background:#1e1e1e80;border:none;outline:none;padding:.1em .3em;font-family:monospace;font-size:1.2em;transition:all .2s;bottom:.6em;right:.7em}.videomail .facingMode:hover{cursor:pointer;background:#323232b3}.videomail .recordTimer,.videomail .recordNote{color:#00d814;opacity:.9;background:#0a0a0acc;padding:.3em .4em;font-family:monospace;transition:all 1s;right:.7em}.videomail .recordTimer.near,.videomail .recordNote.near{color:#eb9369}.videomail .recordTimer.nigh,.videomail .recordNote.nigh{color:#ea4b2a}.videomail .recordTimer{top:.7em}.videomail .recordNote{top:3.6em}.videomail .recordNote:before{content:"REC";animation:1s infinite blink}.videomail .notifier{box-sizing:border-box;overflow:hidden}.videomail .radioGroup{display:block}.videomail .radioGroup label{cursor:pointer}.videomail video{margin-bottom:0}.videomail video.userMedia{background-color:#3232321a}',
     9782                    `@keyframes blink {
     9783  0% {
     9784    opacity: .9;
     9785  }
     9786
     9787  35% {
     9788    opacity: .9;
     9789  }
     9790
     9791  50% {
     9792    opacity: .1;
     9793  }
     9794
     9795  85% {
     9796    opacity: .1;
     9797  }
     9798
     9799  100% {
     9800    opacity: .9;
     9801  }
     9802}
     9803
     9804.videomail .visuals {
     9805  position: relative;
     9806}
     9807
     9808.videomail .visuals video.replay {
     9809  width: 100%;
     9810  height: 100%;
     9811}
     9812
     9813.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint {
     9814  height: auto;
     9815  margin: 0;
     9816}
     9817
     9818.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .paused, .videomail .facingMode, .videomail noscript {
     9819  z-index: 100;
     9820  position: absolute;
     9821}
     9822
     9823.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint, .videomail noscript {
     9824  font-weight: bold;
     9825}
     9826
     9827.videomail .countdown, .videomail .paused, .videomail noscript {
     9828  width: 100%;
     9829  top: 50%;
     9830  transform: translateY(-50%);
     9831}
     9832
     9833.videomail .pausedHeader, .videomail .pausedHint, .videomail .countdown {
     9834  text-align: center;
     9835  letter-spacing: 4px;
     9836  text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff;
     9837}
     9838
     9839.videomail .pausedHeader, .videomail .countdown {
     9840  opacity: .9;
     9841  font-size: 460%;
     9842}
     9843
     9844.videomail .pausedHint {
     9845  font-size: 150%;
     9846}
     9847
     9848.videomail .facingMode {
     9849  color: #f5f5f5e6;
     9850  z-index: 10;
     9851  background: #1e1e1e80;
     9852  border: none;
     9853  outline: none;
     9854  padding: .1em .3em;
     9855  font-family: monospace;
     9856  font-size: 1.2em;
     9857  transition: all .2s;
     9858  bottom: .6em;
     9859  right: .7em;
     9860}
     9861
     9862.videomail .facingMode:hover {
     9863  cursor: pointer;
     9864  background: #323232b3;
     9865}
     9866
     9867.videomail .recordTimer, .videomail .recordNote {
     9868  color: #00d814;
     9869  opacity: .9;
     9870  background: #0a0a0acc;
     9871  padding: .3em .4em;
     9872  font-family: monospace;
     9873  transition: all 1s;
     9874  right: .7em;
     9875}
     9876
     9877.videomail .recordTimer.near, .videomail .recordNote.near {
     9878  color: #eb9369;
     9879}
     9880
     9881.videomail .recordTimer.nigh, .videomail .recordNote.nigh {
     9882  color: #ea4b2a;
     9883}
     9884
     9885.videomail .recordTimer {
     9886  top: .7em;
     9887}
     9888
     9889.videomail .recordNote {
     9890  top: 3.6em;
     9891}
     9892
     9893.videomail .recordNote:before {
     9894  content: "REC";
     9895  animation: 1s infinite blink;
     9896}
     9897
     9898.videomail .notifier {
     9899  box-sizing: border-box;
     9900  overflow: hidden;
     9901}
     9902
     9903.videomail .radioGroup {
     9904  display: block;
     9905}
     9906
     9907.videomail .radioGroup label {
     9908  cursor: pointer;
     9909}
     9910
     9911.videomail video {
     9912  margin-bottom: 0;
     9913}
     9914
     9915.videomail video.userMedia {
     9916  background-color: #3232321a;
     9917}
     9918`,
    98419919                    ""
    98429920                ]);
     
    98839961                            var item = [].concat(modules[_k]);
    98849962                            if (!dedupe || !alreadyImportedModules[item[0]]) {
    9885                                 if (void 0 !== layer) {
    9886                                     if (void 0 === item[5]) item[5] = layer;
    9887                                     else {
    9888                                         item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
    9889                                         item[5] = layer;
    9890                                     }
     9963                                if (void 0 !== layer) if (void 0 === item[5]) item[5] = layer;
     9964                                else {
     9965                                    item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
     9966                                    item[5] = layer;
    98919967                                }
    9892                                 if (media) {
    9893                                     if (item[2]) {
    9894                                         item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
    9895                                         item[2] = media;
    9896                                     } else item[2] = media;
    9897                                 }
    9898                                 if (supports) {
    9899                                     if (item[4]) {
    9900                                         item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
    9901                                         item[4] = supports;
    9902                                     } else item[4] = "".concat(supports);
    9903                                 }
     9968                                if (media) if (item[2]) {
     9969                                    item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
     9970                                    item[2] = media;
     9971                                } else item[2] = media;
     9972                                if (supports) if (item[4]) {
     9973                                    item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
     9974                                    item[4] = supports;
     9975                                } else item[4] = "".concat(supports);
    99049976                                list.push(item);
    99059977                            }
     
    1016510237            var client = __webpack_require__("./node_modules/superagent/lib/client.js");
    1016610238            var client_default = /*#__PURE__*/ __webpack_require__.n(client);
     10239            const list = [
     10240                Error,
     10241                EvalError,
     10242                RangeError,
     10243                ReferenceError,
     10244                SyntaxError,
     10245                TypeError,
     10246                URIError,
     10247                AggregateError,
     10248                globalThis.DOMException,
     10249                globalThis.AssertionError,
     10250                globalThis.SystemError
     10251            ].filter(Boolean).map((constructor)=>[
     10252                    constructor.name,
     10253                    constructor
     10254                ]);
     10255            const errorConstructors = new Map(list);
     10256            const errorProperties = [
     10257                {
     10258                    property: 'name',
     10259                    enumerable: false
     10260                },
     10261                {
     10262                    property: 'message',
     10263                    enumerable: false
     10264                },
     10265                {
     10266                    property: 'stack',
     10267                    enumerable: false
     10268                },
     10269                {
     10270                    property: 'code',
     10271                    enumerable: true
     10272                },
     10273                {
     10274                    property: 'cause',
     10275                    enumerable: false
     10276                },
     10277                {
     10278                    property: 'errors',
     10279                    enumerable: false
     10280                }
     10281            ];
     10282            const toJsonWasCalled = new WeakSet();
     10283            const toJSON = (from)=>{
     10284                toJsonWasCalled.add(from);
     10285                const json = from.toJSON();
     10286                toJsonWasCalled.delete(from);
     10287                return json;
     10288            };
     10289            const newError = (name)=>{
     10290                const ErrorConstructor = errorConstructors.get(name) ?? Error;
     10291                return ErrorConstructor === AggregateError ? new ErrorConstructor([]) : new ErrorConstructor();
     10292            };
     10293            const destroyCircular = ({ from, seen, to, forceEnumerable, maxDepth, depth, useToJSON, serialize })=>{
     10294                if (!to) to = Array.isArray(from) ? [] : !serialize && isErrorLike(from) ? newError(from.name) : {};
     10295                seen.push(from);
     10296                if (depth >= maxDepth) return to;
     10297                if (useToJSON && 'function' == typeof from.toJSON && !toJsonWasCalled.has(from)) return toJSON(from);
     10298                const continueDestroyCircular = (value)=>destroyCircular({
     10299                        from: value,
     10300                        seen: [
     10301                            ...seen
     10302                        ],
     10303                        forceEnumerable,
     10304                        maxDepth,
     10305                        depth,
     10306                        useToJSON,
     10307                        serialize
     10308                    });
     10309                for (const [key, value] of Object.entries(from)){
     10310                    if (value && value instanceof Uint8Array && 'Buffer' === value.constructor.name) {
     10311                        to[key] = '[object Buffer]';
     10312                        continue;
     10313                    }
     10314                    if (null !== value && 'object' == typeof value && 'function' == typeof value.pipe) {
     10315                        to[key] = '[object Stream]';
     10316                        continue;
     10317                    }
     10318                    if ('function' != typeof value) {
     10319                        if (!value || 'object' != typeof value) {
     10320                            try {
     10321                                to[key] = value;
     10322                            } catch  {}
     10323                            continue;
     10324                        }
     10325                        if (!seen.includes(from[key])) {
     10326                            depth++;
     10327                            to[key] = continueDestroyCircular(from[key]);
     10328                            continue;
     10329                        }
     10330                        to[key] = '[Circular]';
     10331                    }
     10332                }
     10333                if (serialize || to instanceof Error) {
     10334                    for (const { property, enumerable } of errorProperties)if (void 0 !== from[property] && null !== from[property]) Object.defineProperty(to, property, {
     10335                        value: isErrorLike(from[property]) || Array.isArray(from[property]) ? continueDestroyCircular(from[property]) : from[property],
     10336                        enumerable: forceEnumerable ? true : enumerable,
     10337                        configurable: true,
     10338                        writable: true
     10339                    });
     10340                }
     10341                return to;
     10342            };
     10343            function serializeError(value, options = {}) {
     10344                const { maxDepth = Number.POSITIVE_INFINITY, useToJSON = true } = options;
     10345                if ('object' == typeof value && null !== value) return destroyCircular({
     10346                    from: value,
     10347                    seen: [],
     10348                    forceEnumerable: true,
     10349                    maxDepth,
     10350                    depth: 0,
     10351                    useToJSON,
     10352                    serialize: true
     10353                });
     10354                if ('function' == typeof value) return `[Function: ${value.name || 'anonymous'}]`;
     10355                return value;
     10356            }
     10357            function isErrorLike(value) {
     10358                return Boolean(value) && 'object' == typeof value && 'string' == typeof value.name && 'string' == typeof value.message && 'string' == typeof value.stack;
     10359            }
    1016710360            var util = __webpack_require__("./node_modules/util/util.js");
    1016810361            var util_default = /*#__PURE__*/ __webpack_require__.n(util);
     
    1027710470                            q = props[p];
    1027810471                            if (typeof q === OBJ_TYPE && q.length > 0) {
    10279                                 if (2 === q.length) {
    10280                                     if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match);
    10281                                     else this[q[0]] = q[1];
    10282                                 } else if (3 === q.length) {
    10283                                     if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0;
    10284                                     else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0;
    10285                                 } else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0;
     10472                                if (2 === q.length) if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match);
     10473                                else this[q[0]] = q[1];
     10474                                else if (3 === q.length) if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0;
     10475                                else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0;
     10476                                else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0;
    1028610477                            } else this[q] = match ? match : void 0;
    1028710478                        }
     
    1352413715                for(var i = 0, l = form.elements.length; i < l; i++){
    1352513716                    var element = form.elements[i];
    13526                     if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || !!options.includeDisabled)) {
     13717                    if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || options.includeDisabled)) {
    1352713718                        elementName = element.name || element.id;
    1352813719                        if (elementName && !elementNameLookup[elementName]) {
     
    1355113742                var data = [];
    1355213743                var allRadios = true;
    13553                 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || !!options.includeDisabled) {
     13744                for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || options.includeDisabled) {
    1355413745                    if (allRadios && 'radio' !== element[i].type) allRadios = false;
    1355513746                    var value = getFormElementValue(element[i], options.trim);
     
    1375313944                }
    1375413945                setDisabled(disabled, buttonsToo) {
    13755                     for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) {
    13756                         if (disabled) formControl.setAttribute("disabled", "disabled");
    13757                         else formControl.removeAttribute("disabled");
    13758                     }
     13946                    for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) if (disabled) formControl.setAttribute("disabled", "disabled");
     13947                    else formControl.removeAttribute("disabled");
    1375913948                }
    1376013949                hideAll() {
     
    1391014099            const wrappers_form = Form;
    1391114100            var package_namespaceObject = {
    13912                 i8: "10.2.13"
     14101                i8: "10.2.22"
    1391314102            };
    1391414103            function findOriginalExc(exc) {
     
    1400214191                            device: err.device,
    1400314192                            engine: err.engine,
    14004                             err: err.err,
     14193                            err: serializeError(err.err),
    1400514194                            explanation: err.explanation,
    1400614195                            location: err.location,
     
    1401814207                            versions: {
    1401914208                                videomailClient: package_namespaceObject.i8,
    14020                                 ninjaFormPlugin: this.options.versions?.ninjaFormPlugin
     14209                                videomailNinjaFormPlugin: this.options.versions?.videomailNinjaFormPlugin
    1402114210                            }
    1402214211                        };
     
    1504615235                        this.messageElement = document.createElement("h2");
    1504715236                        this.messageElement.id = NOTIFIER_MESSAGE_ID;
    15048                         if (this.notifyElement) {
    15049                             if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement);
    15050                             else this.notifyElement.appendChild(this.messageElement);
    15051                         } else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`);
    15052                     }
    15053                     if (message.length > 0) {
    15054                         if (this.messageElement) {
    15055                             const problem = messageOptions?.problem;
    15056                             this.messageElement.innerHTML = (problem ? "&#x2639; " : "") + message;
    15057                         } else this.options.logger.warn("There is no message element for displaying a message");
    15058                     } else this.options.logger.warn("Not going to update notifierMessage element because message is empty");
     15237                        if (this.notifyElement) if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement);
     15238                        else this.notifyElement.appendChild(this.messageElement);
     15239                        else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`);
     15240                    }
     15241                    if (message.length > 0) if (this.messageElement) {
     15242                        const problem = messageOptions?.problem;
     15243                        this.messageElement.innerHTML = (problem ? "&#x2639; " : "") + message;
     15244                    } else this.options.logger.warn("There is no message element for displaying a message");
     15245                    else this.options.logger.warn("Not going to update notifierMessage element because message is empty");
    1505915246                    hidden_default()(this.messageElement, false);
    1506015247                }
     
    1534415531                fakeUaString: void 0,
    1534515532                versions: {
    15346                     ninjaFormPlugin: void 0
     15533                    videomailNinjaFormPlugin: void 0
    1534715534                }
    1534815535            };
     
    1562415811                    try {
    1562515812                        const videoTrack = media_getFirstVideoTrack(localMediaStream);
    15626                         if (videoTrack) {
    15627                             if (videoTrack.enabled) {
    15628                                 let description = "";
    15629                                 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label);
    15630                                 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`);
    15631                                 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`);
    15632                             } else throw error_createError({
    15633                                 message: "Webcam is disabled",
    15634                                 explanation: "The video track seems to be disabled. Enable it in your system.",
    15635                                 options: this.options
    15636                             });
    15637                         } else this.options.logger.debug("UserMedia: detected (but no video tracks exist");
     15813                        if (videoTrack) if (videoTrack.enabled) {
     15814                            let description = "";
     15815                            if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label);
     15816                            description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`);
     15817                            this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`);
     15818                        } else throw error_createError({
     15819                            message: "Webcam is disabled",
     15820                            explanation: "The video track seems to be disabled. Enable it in your system.",
     15821                            options: this.options
     15822                        });
     15823                        else this.options.logger.debug("UserMedia: detected (but no video tracks exist");
    1563815824                        this.rawVisualUserMedia?.addEventListener("loadedmetadata", onLoadedMetaData);
    1563915825                        this.rawVisualUserMedia?.addEventListener("play", onPlay);
     
    1588116067                }
    1588216068                writeStream(buffer, opts) {
    15883                     if (this.stream) {
    15884                         if (this.stream.destroyed) {
    15885                             this.stopPings();
     16069                    if (this.stream) if (this.stream.destroyed) {
     16070                        this.stopPings();
     16071                        const err = error_createError({
     16072                            message: "Already disconnected",
     16073                            explanation: "Sorry, connection to the server has been destroyed. Please reload.",
     16074                            options: this.options
     16075                        });
     16076                        this.emit("ERROR", {
     16077                            err
     16078                        });
     16079                    } else {
     16080                        const onFlushedCallback = opts?.onFlushedCallback;
     16081                        try {
     16082                            this.stream.write(buffer, ()=>{
     16083                                if (!onFlushedCallback) return;
     16084                                try {
     16085                                    onFlushedCallback(opts);
     16086                                } catch (exc) {
     16087                                    const err = error_createError({
     16088                                        message: "Failed to write stream buffer",
     16089                                        explanation: `stream.write() failed because of ${pretty(exc)}`,
     16090                                        options: this.options,
     16091                                        exc
     16092                                    });
     16093                                    this.emit("ERROR", {
     16094                                        err
     16095                                    });
     16096                                }
     16097                            });
     16098                        } catch (exc) {
    1588616099                            const err = error_createError({
    15887                                 message: "Already disconnected",
    15888                                 explanation: "Sorry, connection to the server has been destroyed. Please reload.",
    15889                                 options: this.options
     16100                                message: "Failed writing to server",
     16101                                explanation: `stream.write() failed because of ${pretty(exc)}`,
     16102                                options: this.options,
     16103                                exc
    1589016104                            });
    1589116105                            this.emit("ERROR", {
    1589216106                                err
    1589316107                            });
    15894                         } else {
    15895                             const onFlushedCallback = opts?.onFlushedCallback;
    15896                             try {
    15897                                 this.stream.write(buffer, ()=>{
    15898                                     if (!onFlushedCallback) return;
    15899                                     try {
    15900                                         onFlushedCallback(opts);
    15901                                     } catch (exc) {
    15902                                         const err = error_createError({
    15903                                             message: "Failed to write stream buffer",
    15904                                             explanation: `stream.write() failed because of ${pretty(exc)}`,
    15905                                             options: this.options,
    15906                                             exc
    15907                                         });
    15908                                         this.emit("ERROR", {
    15909                                             err
    15910                                         });
    15911                                     }
    15912                                 });
    15913                             } catch (exc) {
    15914                                 const err = error_createError({
    15915                                     message: "Failed writing to server",
    15916                                     explanation: `stream.write() failed because of ${pretty(exc)}`,
    15917                                     options: this.options,
    15918                                     exc
    15919                                 });
    15920                                 this.emit("ERROR", {
    15921                                     err
    15922                                 });
    15923                             }
    1592416108                        }
    1592516109                    }
     
    1625016434                            case "ready":
    1625116435                                this.emit("SERVER_READY");
    16252                                 if (!this.userMediaTimeout) {
    16253                                     if (this.options.loadUserMediaOnRecord) this.show();
    16254                                     else this.loadUserMedia();
    16255                                 }
     16436                                if (!this.userMediaTimeout) if (this.options.loadUserMediaOnRecord) this.show();
     16437                                else this.loadUserMedia();
    1625616438                                break;
    1625716439                            case "preview":
     
    1691817100                    const tracks = this.replayElement.getElementsByTagName("track");
    1691917101                    const firstTrack = tracks[0];
    16920                     if (firstTrack) {
    16921                         if (src) firstTrack.setAttribute("src", src);
    16922                         else this.replayElement.removeChild(firstTrack);
    16923                     } else {
     17102                    if (firstTrack) if (src) firstTrack.setAttribute("src", src);
     17103                    else this.replayElement.removeChild(firstTrack);
     17104                    else {
    1692417105                        const track = document.createElement("track");
    1692517106                        track.setAttribute("src", src);
     
    1693617117                    let url = src;
    1693717118                    if (url && bustCache) url += `?${Date.now()}`;
    16938                     if (source) {
    16939                         if (src) source.setAttribute("src", src);
    16940                         else this.replayElement.removeChild(source);
    16941                     } else if (src) {
     17119                    if (source) if (src) source.setAttribute("src", src);
     17120                    else this.replayElement.removeChild(source);
     17121                    else if (src) {
    1694217122                        const { fps } = this.options.video;
    1694317123                        const t = 1 / fps * 2;
     
    1708217262                    if (parentElement) this.visualsElement = parentElement.querySelector(`.${this.options.selectors.visualsClass}`);
    1708317263                    else this.visualsElement = this.container.querySelector(`.${this.options.selectors.visualsClass}`);
    17084                     if (!this.visualsElement) {
    17085                         if (playerOnly && parentElement) this.visualsElement = parentElement;
    17086                         else {
    17087                             this.visualsElement = document.createElement("div");
    17088                             this.visualsElement.classList.add(this.options.selectors.visualsClass);
    17089                             const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`);
    17090                             if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement);
    17091                             else this.container.appendChild(this.visualsElement);
    17092                         }
     17264                    if (!this.visualsElement) if (playerOnly && parentElement) this.visualsElement = parentElement;
     17265                    else {
     17266                        this.visualsElement = document.createElement("div");
     17267                        this.visualsElement.classList.add(this.options.selectors.visualsClass);
     17268                        const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`);
     17269                        if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement);
     17270                        else this.container.appendChild(this.visualsElement);
    1709317271                    }
    1709417272                    this.visualsElement.classList.add("visuals");
     
    1720417382                }
    1720517383                show(params) {
    17206                     if (!params?.playerOnly) {
    17207                         if (this.isReplayShown()) {
    17208                             if (params?.goBack) this.recorder.show();
    17209                         } else this.recorder.build();
    17210                     }
     17384                    if (!params?.playerOnly) if (this.isReplayShown()) {
     17385                        if (params?.goBack) this.recorder.show();
     17386                    } else this.recorder.build();
    1721117387                    this.showVisuals();
    1721217388                }
     
    1728917465            var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
    1729017466            var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
    17291             var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl");
     17467            var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl");
    1729217468            var main_options = {};
    1729317469            main_options.styleTagTransform = styleTagTransform_default();
     
    1738117557                    if (params.err?.stack) this.options.logger.error(params.err.stack);
    1738217558                    else if (params.err?.message) this.options.logger.error(params.err.message);
    17383                     else if (params.exc) {
    17384                         if (params.exc instanceof Error) {
    17385                             if (params.exc.stack) this.options.logger.error(params.exc.stack);
    17386                             else if (params.exc.message) this.options.logger.error(params.exc.message);
    17387                         } else this.options.logger.error(params.exc);
    17388                     }
     17559                    else if (params.exc) if (params.exc instanceof Error) {
     17560                        if (params.exc.stack) this.options.logger.error(params.exc.stack);
     17561                        else if (params.exc.message) this.options.logger.error(params.exc.message);
     17562                    } else this.options.logger.error(params.exc);
    1738917563                    if (this.options.displayErrors && params.err) this.visuals.error(params.err);
    1739017564                    else this.visuals.reset();
     
    1740017574                    });
    1740117575                    if (!playerOnly) this.visibility.onChange((visible)=>{
    17402                         if (this.built) {
    17403                             if (visible) {
    17404                                 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume();
    17405                                 this.emit("VISIBLE");
    17406                             } else {
    17407                                 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause();
    17408                                 this.emit("INVISIBLE");
    17409                             }
     17576                        if (this.built) if (visible) {
     17577                            if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume();
     17578                            this.emit("VISIBLE");
     17579                        } else {
     17580                            if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause();
     17581                            this.emit("INVISIBLE");
    1741017582                        }
    1741117583                    });
     
    1764017812                                const hasBcc = recipients.bcc && recipients.bcc.length > 0;
    1764117813                                if (toIsConfigured) {
    17642                                     if (!hasTo) {
    17643                                         if (ccIsConfigured && bccIsConfigured) {
    17644                                             if (!hasCc && !hasBcc) valid = false;
    17645                                         } else if (ccIsConfigured) {
    17646                                             if (!hasCc) valid = false;
    17647                                         } else if (bccIsConfigured) {
    17648                                             if (!hasBcc) valid = false;
    17649                                         } else valid = false;
    17650                                     }
     17814                                    if (!hasTo) if (ccIsConfigured && bccIsConfigured) {
     17815                                        if (!hasCc && !hasBcc) valid = false;
     17816                                    } else if (ccIsConfigured) {
     17817                                        if (!hasCc) valid = false;
     17818                                    } else if (bccIsConfigured) {
     17819                                        if (!hasBcc) valid = false;
     17820                                    } else valid = false;
    1765117821                                } else if (ccIsConfigured) {
    1765217822                                    if (!hasCc) {
     
    1780217972                debug(...args) {
    1780317973                    const output = this.lifo("debug", args);
    17804                     if (this.options.verbose) {
    17805                         if (this.browser.isFirefox()) this.logger.debug(output);
    17806                         else if (this.logger.groupCollapsed) {
    17807                             this.logger.groupCollapsed(output);
    17808                             this.logger.trace("Trace");
    17809                             this.logger.groupEnd();
    17810                         } else if (this.logger.debug) this.logger.debug(output);
    17811                         else console.log(output);
    17812                     }
     17974                    if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output);
     17975                    else if (this.logger.groupCollapsed) {
     17976                        this.logger.groupCollapsed(output);
     17977                        this.logger.trace("Trace");
     17978                        this.logger.groupEnd();
     17979                    } else if (this.logger.debug) this.logger.debug(output);
     17980                    else console.log(output);
    1781317981                }
    1781417982                error(...args) {
  • videomail-for-ninja-forms/tags/7.0.8/target/php/videomail.php

    r3257516 r3269283  
    33
    44  const NAME = 'Videomail';
    5   const VERSION = '7.0.7';
     5  const VERSION = '7.0.8';
    66  const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
    77  const SLUG = 'videomail';
  • videomail-for-ninja-forms/tags/7.0.8/videomail-for-ninja-forms.php

    r3257516 r3269283  
    44Plugin URI: https://github.com/binarykitchen/videomail-for-ninja-forms
    55Description: Express yourself in more than just words. Record and send a short video from your webcam.
    6 Version: 7.0.7
     6Version: 7.0.8
    77Author: Michael Heuberger + Kyle B. Johnson
    88Author URI: https://videomail.io
  • videomail-for-ninja-forms/trunk/readme.txt

    r3257516 r3269283  
    55
    66Requires at least: 6.0
    7 Tested up to: 7.0.7
    8 Stable tag: 7.0.7
     7Tested up to: 6.7.2
     8Stable tag: 7.0.8
    99Requires PHP: 8.1.0
    1010Donate link: https://videomail.io/faq
     
    7171
    7272== Changelog ==
     73= 7.0.8 (9 Apr 2025) =
     74*Improvement:*
     75* Serialize all error variables for improved error reporting
     76*Chore:*
     77* Upgrade Videomail-Client
     78*Fix:*
     79* Corrects invalid version for the "Tested up to" field
     80
    7381= 7.0.7 (18 March 2025) =
    7482*Improvement:*
  • videomail-for-ninja-forms/trunk/target/js/main.min.js

    r3257516 r3269283  
    1 let PLUGIN_VERSION="7.0.7",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});
    2 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC43XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3QiLCJib2R5Iiwib25CZWZvcmVEZXN0cm95IiwialF1ZXJ5IiwiZG9jdW1lbnQiLCJyZWFkeSJdLCJtYXBwaW5ncyI6IkFBQ0EsSUFBTUEsZUFBaUIsUUFHbkJDLE1BQVEsQ0FBQSxFQUtOQyx5QkFBMkJDLFdBQVdDLE9BQU9DLE9BQU8sQ0FDeERDLGdCQUFpQixLQUVqQkMsV0FBWSxLQUVaQyxRQUFTQyxTQUFTQyxNQUFNRixRQUFRLFdBQVcsRUFFM0NHLFdBQVksV0FDVkYsU0FBU0MsTUFBTVQsTUFBUUEsTUFFdkJXLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsYUFBY0ksS0FBS0Usc0JBQXNCLEVBQ3pFRixLQUFLQyxhQUFhRCxLQUFLSixRQUFTLGNBQWVJLEtBQUtHLG1CQUFtQixFQUd2RUgsS0FBS0ksU0FBU0osS0FBS0osUUFBUyxNQUFPLFNBQVVTLEdBQzNDaEIsT0FBU2lCLFFBQVFDLElBQUkscUNBQXNDRixDQUFTLEVBSXBFTCxLQUFLSSxTQUFTSSxRQUFRWixRQUFRLE1BQU0sRUFBRyxjQUFlLFNBQVVhLEdBQzlEcEIsT0FBU2lCLFFBQVFDLElBQUksZ0NBQWlDLGFBQWEsRUFFN0RHLEVBQ0pELEVBQU9FLGdCQUFnQkMsWUFBWUMsaUJBQWlCQyxRQUFVLEdBRWhFLElBQU1DLEVBQWFmLEtBQUtMLFdBQVdxQixJQUVkTixFQUFjTyxLQUFLLFNBQVVDLEdBQ2hELE9BQU9BLEVBQU1GLE1BQVFELENBQ3ZCLENBQUMsRUFHQ2YsS0FBS0csb0JBQW9CLEVBRXpCSCxLQUFLTixnQkFBZ0J5QixPQUFPLENBRWhDLENBQUMsQ0FDSCxDQUFDLENBQ0gsRUFFQUMsVUFBVyxXQUNULE9BQU9wQixLQUFLTCxXQUFXMEIsSUFBSSxRQUFRLENBQ3JDLEVBRUFuQix1QkFBd0IsU0FBVVAsR0FDaENLLEtBQUtMLFdBQWFBLEVBSWxCSyxLQUFLSixRQUFRMEIsTUFBTSxvQkFBcUJ0QixLQUFLdUIsaUJBQWtCdkIsSUFBSSxFQUVuRUEsS0FBS0osUUFBUTBCLE1BQU0scUJBQXNCdEIsS0FBS3dCLGtCQUFtQnhCLElBQUksRUFJckVILFNBQVNDLE1BQU1GLFFBQVEsUUFBVUksS0FBS29CLFVBQVUsQ0FBQyxFQUFFRSxNQUNqRCxlQUNBdEIsS0FBS3lCLFlBQ0x6QixLQUNBTCxDQUNGLENBQ0YsRUFFQVEsb0JBQXFCLFdBQ25CdUIsSUFBSUMsRUFBeUIzQixLQUFLTCxXQUFXMEIsSUFBSSxlQUFlLEdBQUssR0FFeEMsSUFBekJNLEVBQ0ZBLEVBQXlCLElBQ2hCQSxFQUF5QixJQUNsQ0EsRUFBeUIsR0FHM0IsSUFBTUMsRUFBVTVCLEtBQUtMLFdBQVcwQixJQUFJLFNBQVMsR0FBS2hDLE1BR2xEQSxNQUFRQSxPQUFTdUMsRUFDakIvQixTQUFTQyxNQUFNVCxNQUFRUSxTQUFTQyxNQUFNVCxPQUFTdUMsRUFFL0M1QixLQUFLTixnQkFBa0IsSUFBSW1DLGdCQUFnQkEsZ0JBQWdCLENBQ3pEQyxTQUFVOUIsS0FBS0wsV0FBVzBCLElBQUksV0FBVyxFQUN6Q1UsTUFBTyxDQUNMQyxhQUFjaEMsS0FBS0wsV0FBVzBCLElBQUksZUFBZSxHQUFLLEdBQ3REWSxNQUFPakMsS0FBS0wsV0FBVzBCLElBQUksT0FBTyxHQUFLLElBRXZDYSxRQUFTbEMsS0FBS0wsV0FBVzBCLElBQUksU0FBUyxHQUFLLENBQUEsRUFDM0NjLFVBQVduQyxLQUFLTCxXQUFXMEIsSUFBSSxXQUFXLEdBQUssQ0FBQSxDQUNqRCxFQUNBZSxNQUFPLENBQUVDLFFBQVNyQyxLQUFLTCxXQUFXMEIsSUFBSSxlQUFlLENBQUUsRUFDdkRpQixNQUFPLENBQ0xDLFFBQVNaLEVBQXlCLEdBQ3BDLEVBQ0FhLFVBQVcsQ0FBRUMsWUFBYSxZQUFhQyxxQkFBc0Isb0JBQXFCLEVBQ2xGQyxVQUFXLENBRVRDLDRCQUNFNUMsS0FBSzZDLDZDQUE2Q0MsS0FBSzlDLElBQUksQ0FDL0QsRUFFQStDLHNCQUF1Qi9DLEtBQUtMLFdBQVcwQixJQUFJLDJCQUEyQixFQUd0RTJCLHFCQUFzQixDQUFBLEVBR3RCQyxxQkFBc0IsQ0FBQSxFQUd0QnJCLFFBQUFBLEVBRUFzQixTQUFVLENBQUVDLGdCQUFpQi9ELGNBQWUsQ0FDOUMsQ0FBQyxFQUVEWSxLQUFLTixnQkFBZ0IwRCxHQUFHLFVBQVdwRCxLQUFLcUQsVUFBVVAsS0FBSzlDLElBQUksQ0FBQyxFQUM1REEsS0FBS04sZ0JBQWdCMEQsR0FBRyxZQUFhcEQsS0FBS3NELFlBQVlSLEtBQUs5QyxJQUFJLENBQUMsRUFDaEVBLEtBQUtOLGdCQUFnQjBELEdBQUcsYUFBY3BELEtBQUt1RCxZQUFZVCxLQUFLOUMsSUFBSSxDQUFDLEVBRWpFQSxLQUFLTixnQkFBZ0I4RCxLQUFLLENBQzVCLEVBSUFILFVBQVcsU0FBVUksR0FDbkJ6RCxLQUFLTCxXQUFXK0QsSUFBSSxnQkFBaUJELENBQUcsRUFDeEN6RCxLQUFLTCxXQUFXK0QsSUFBSSxRQUFTRCxDQUFHLEVBRWhDNUQsU0FBU0MsTUFBTUYsUUFBUSxRQUFRLEVBRTVCK0QsUUFBUSxlQUFnQjNELEtBQUtMLFdBQVcwQixJQUFJLElBQUksRUFBRyxnQkFBZ0IsQ0FDeEUsRUFFQWlDLFlBQWEsU0FBVU0sR0FDckJsQyxJQUFJbUMsRUFBWWhFLFNBQVNDLE1BQU1GLFFBQVEsS0FBSyxFQUFFK0QsUUFBUSxXQUFZM0QsS0FBS29CLFVBQVUsQ0FBQyxFQUU3RXlDLEVBQUFBLEdBRVM3RCxLQUFLTCxXQUFXbUUsV0FBV0MsUUFBUUYsVUFJakRoRSxTQUFTQyxNQUFNRixRQUFRLFFBQVVpRSxFQUFVeEMsSUFBSSxJQUFJLENBQUMsRUFBRXNDLFFBQ3BELFlBQ0EsWUFDQUMsRUFBT0ksU0FDVCxFQUdBbkUsU0FBU0MsTUFBTUYsUUFBUSxRQUFVSSxLQUFLb0IsVUFBVSxDQUFDLEVBQUV1QyxRQUFRLFNBQVVFLENBQVMsQ0FDaEYsRUFFQU4sWUFBYSxXQUNYdkQsS0FBS0wsV0FBVytELElBQUksZ0JBQWlCLElBQUksRUFDekMxRCxLQUFLaUUsV0FBVyxDQUNsQixFQUVBMUMsaUJBQWtCLFNBQVUyQyxFQUFJdkUsR0FDeEJ3RSxFQUFRbkUsS0FBS3dCLGtCQUFrQjdCLENBQVUsRUFNL0MsT0FKS3dFLEdBQ0huRSxLQUFLaUUsV0FBVyxFQUdYRSxDQUNULEVBRUFGLFdBQVksV0FFVnBFLFNBQVNDLE1BQU1GLFFBQVEsUUFBUSxFQUFFK0QsUUFDL0IsWUFDQTNELEtBQUtMLFdBQVcwQixJQUFJLElBQUksRUFDeEIsaUJBQ0Esa0RBQ0YsQ0FDRixFQUVBRyxrQkFBbUIsU0FBVTdCLEdBRTNCLE9BREFBLEVBQWFBLEdBQWNLLEtBQUtMLFlBQ2QwQixJQUFJLGVBQWUsR0FBSyxDQUFBLENBQzVDLEVBRUErQyxVQUFXLFNBQVVQLEdBQ25CLE9BQXdDLEVBQWpDQSxFQUFVeEMsSUFBSSxRQUFRLEVBQUVnRCxNQUNqQyxFQUVBNUMsWUFBYSxTQUFVb0MsR0FDckJuQyxJQUFJNEMsRUFBUSxDQUFBLEVBQ1osSUFBTUMsRUFBcUJWLEVBQVVXLFNBQVMsV0FBVyxFQUNuREMsRUFBb0J6RSxLQUFLd0Isa0JBQWtCLEVBQzNDa0QsRUFBUTFFLEtBQUtvRSxVQUFVUCxDQUFTLEVBU3RDLE9BTEtVLEdBQXVCRyxHQUFTRCxDQUFBQSxJQUNuQ3pFLEtBQUtOLGdCQUFnQmlGLE9BQU8sRUFDNUJMLEVBQVEsQ0FBQSxHQUdIQSxDQUNULEVBRUFNLGlCQUFrQixTQUFVQyxFQUFVQyxHQUNwQ3BELElBQUlxRCxFQUFRL0UsS0FBS0wsV0FBVzBCLElBQUl3RCxDQUFRLEVBcUJ4QyxHQWpCSUUsSUFJWSxxQkFBVkEsRUFDRkEsRUFBUUMsT0FBT0MsWUFBWUMsYUFHckJDLEdBREFDLEVBQXFCTCxFQUFNTSxNQUFNLGVBQWUsSUFDWkQsRUFBbUIsTUFFekNMLElBRWxCQSxFQUFRQSxFQUFNTyxRQUFRLGdCQUFpQlIsRUFBV0ssRUFBWSxJQUt0RCxjQUFWSixFQUlKLE9BQU9BLENBQ1QsRUFXQVEsY0FBZSxXQUNiN0QsSUFBSW9DLEVBQ0osSUFBTUQsRUFBWWhFLFNBQVNDLE1BQU1GLFFBQVEsS0FBSyxFQUFFK0QsUUFBUSxXQUFZM0QsS0FBS29CLFVBQVUsQ0FBQyxFQVM5RTBELEdBUEZqQixFQUNGQyxFQUFhRCxFQUFVeEMsSUFBSSxRQUFRLEVBRTFCckIsS0FBS0wsV0FBV21FLFdBQVdDLFFBQVFGLFVBQVV4QyxJQUFJLFFBQVEsRUFBRVAsU0FDcEVnRCxFQUFhOUQsS0FBS0wsV0FBV21FLFdBQVdDLFFBQVFGLFVBQVV4QyxJQUFJLFFBQVEsRUFBRVAsUUFHdkRnRCxFQUFXMEIsT0FBTyxTQUFVQyxFQUFNQyxHQUVuRCxPQURBRCxFQUFLQyxFQUFNckUsSUFBSSxLQUFLLEdBQUtxRSxFQUFNckUsSUFBSSxPQUFPLEVBQ25Db0UsQ0FDVCxFQUFHLEVBQUUsR0FFTCxPQUFPWCxDQUNULEVBRUFqQyw2Q0FBOEMsU0FBVW1CLEdBQ3RELElBQU1jLEVBQWE5RSxLQUFLdUYsY0FBYyxFQU90QyxPQUxBdkIsRUFBVTJCLEtBQU8zRixLQUFLNEUsaUJBQWlCLGFBQWNFLENBQVUsRUFDL0RkLEVBQVU0QixHQUFLNUYsS0FBSzRFLGlCQUFpQixXQUFZRSxDQUFVLEVBQzNEZCxFQUFVNkIsUUFBVTdGLEtBQUs0RSxpQkFBaUIsZ0JBQWlCRSxDQUFVLEVBQ3JFZCxFQUFVOEIsS0FBTzlGLEtBQUs0RSxpQkFBaUIsYUFBY0UsQ0FBVSxFQUV4RGQsQ0FDVCxFQUVBK0IsZ0JBQWlCLFdBQ2YvRixLQUFLTixnQkFBZ0J5QixPQUFPLEVBQzVCLE9BQU9uQixLQUFLTixlQUNkLENBQ0YsQ0FBQyxFQUVEc0csT0FBT0MsUUFBUSxFQUFFQyxNQUFNLFdBQ3JCLE9BQU8sSUFBSTVHLHdCQUNiLENBQUMifQ==
     1let PLUGIN_VERSION="7.0.8",DEBUG=!1,VideomailFieldController=Marionette.Object.extend({videomailClient:null,fieldModel:null,channel:Backbone.Radio.channel("videomail"),initialize:function(){Backbone.Radio.DEBUG=DEBUG,this.listenToOnce(this.channel,"init:model",this.registerVideomailField),this.listenToOnce(this.channel,"attach:view",this.loadVideomailClient),this.listenTo(this.channel,"all",function(e){DEBUG&&console.log("Videomail channel event triggered:",e),this.listenTo(nfRadio.channel("nfMP"),"change:part",function(e){DEBUG&&console.log("nfMP channel event triggered:","change:part");e=e.currentElement?.attributes?.formContentData?.models||[];let i=this.fieldModel.cid;e.find(function(e){return e.cid===i})?this.loadVideomailClient():this.videomailClient.unload()})})},getFormId:function(){return this.fieldModel.get("formID")},registerVideomailField:function(e){this.fieldModel=e,this.channel.reply("validate:required",this.validateRequired,this),this.channel.reply("validate:modelData",this.validateVideomail,this),Backbone.Radio.channel("form-"+this.getFormId()).reply("maybe:submit",this.maybeSubmit,this,e)},loadVideomailClient:function(){let e=this.fieldModel.get("image_quality")||40;100<e?e=100:e<1&&(e=1);var i=this.fieldModel.get("verbose")||DEBUG;DEBUG=DEBUG||i,Backbone.Radio.DEBUG=Backbone.Radio.DEBUG||i,this.videomailClient=new VideomailClient.VideomailClient({siteName:this.fieldModel.get("site_name"),video:{limitSeconds:this.fieldModel.get("limit_seconds")||90,width:this.fieldModel.get("width")||320,stretch:this.fieldModel.get("stretch")||!1,countdown:this.fieldModel.get("countdown")||!1},audio:{enabled:this.fieldModel.get("audio_enabled")},image:{quality:e/100},selectors:{containerId:"videomail",submitButtonSelector:".submit-wrap input"},callbacks:{adjustFormDataBeforePosting:this.adjustFormDataBeforePostingToVideomailServer.bind(this)},loadUserMediaOnRecord:this.fieldModel.get("load_user_media_on_record"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{ninjaFormPlugin:PLUGIN_VERSION}}),this.videomailClient.on("PREVIEW",this.onPreview.bind(this)),this.videomailClient.on("SUBMITTED",this.onSubmitted.bind(this)),this.videomailClient.on("GOING_BACK",this.onGoingBack.bind(this)),this.videomailClient.show()},onPreview:function(e){this.fieldModel.set("videomail-key",e),this.fieldModel.set("value",e),Backbone.Radio.channel("fields").request("remove:error",this.fieldModel.get("id"),"required-error")},onSubmitted:function(e){let i=Backbone.Radio.channel("app").request("get:form",this.getFormId());i=i||this.fieldModel.collection.options.formModel,Backbone.Radio.channel("form-"+i.get("id")).request("add:extra","videomail",e.videomail),Backbone.Radio.channel("form-"+this.getFormId()).request("submit",i)},onGoingBack:function(){this.fieldModel.set("videomail-key",null),this.invalidate()},validateRequired:function(e,i){i=this.validateVideomail(i);return i||this.invalidate(),i},invalidate:function(){Backbone.Radio.channel("fields").request("add:error",this.fieldModel.get("id"),"required-error","Record and click on stop to see a preview video.")},validateVideomail:function(e){return(e=e||this.fieldModel).get("videomail-key")||!1},hasErrors:function(e){return 0<e.get("errors").length},maybeSubmit:function(e){let i=!0;var t=e.getExtra("videomail"),o=this.validateVideomail(),e=this.hasErrors(e);return t||e||!o||(this.videomailClient.submit(),i=!1),i},getMergeTagValue:function(e,i){let t=this.fieldModel.get(e);if(t&&("{wp:admin_email}"===t?t=window.nfVideomail.admin_email:(e=(e=t.match(/{field:(.*)}/i))&&e[1])!==t&&(t=t.replace(/{field:(.*)}/i,i[e]))),"undefined"!==t)return t},getFormValues:function(){let e;var i=Backbone.Radio.channel("app").request("get:form",this.getFormId()),i=(i?e=i.get("fields"):this.fieldModel.collection.options.formModel.get("fields").models&&(e=this.fieldModel.collection.options.formModel.get("fields").models),e.reduce(function(e,i){return e[i.get("key")]=i.get("value"),e},{}));return i},adjustFormDataBeforePostingToVideomailServer:function(e){var i=this.getFormValues();return e.from=this.getMergeTagValue("email_from",i),e.to=this.getMergeTagValue("email_to",i),e.subject=this.getMergeTagValue("email_subject",i),e.body=this.getMergeTagValue("email_body",i),e},onBeforeDestroy:function(){this.videomailClient.unload(),delete this.videomailClient}});jQuery(document).ready(function(){return new VideomailFieldController});
     2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjcuMC44XCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIC8vIHVnbHkgbmFtZSBlaD9cbiAgICAgICAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nOlxuICAgICAgICAgIHRoaXMuYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXIuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIC8vIGxlYXZlIGl0IHRvIG5pbmphIGZvcm0gdG8gdmFsaWRhdGUgdGhlIGlucHV0c1xuICAgICAgZW5hYmxlQXV0b1ZhbGlkYXRpb246IGZhbHNlLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIGRlYWwgd2l0aCBmb3JtIHN1Ym1pc3Npb25zXG4gICAgICBlbmFibGVBdXRvU3VibWlzc2lvbjogZmFsc2UsXG5cbiAgICAgIC8vIGxvZyBhY3Rpb25zL2V2ZW50cyB0byBjb25zb2xlXG4gICAgICB2ZXJib3NlLFxuXG4gICAgICB2ZXJzaW9uczogeyBuaW5qYUZvcm1QbHVnaW46IFBMVUdJTl9WRVJTSU9OIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIlBSRVZJRVdcIiwgdGhpcy5vblByZXZpZXcuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJTVUJNSVRURURcIiwgdGhpcy5vblN1Ym1pdHRlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5vbihcIkdPSU5HX0JBQ0tcIiwgdGhpcy5vbkdvaW5nQmFjay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50LnNob3coKTtcbiAgfSxcblxuICAvLyBuZWVkZWQgdG8gZ2V0IHRoZSB2aWRlb21haWwga2V5IHdoaWNoIGlzIHJlcXVpcmVkIGJlZm9yZVxuICAvLyBzdWJtaXR0aW5nIHRvIHRoZSB2aWRlb21haWwgc2VydmVyXG4gIG9uUHJldmlldzogZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIGtleSk7XG4gICAgdGhpcy5maWVsZE1vZGVsLnNldChcInZhbHVlXCIsIGtleSk7XG5cbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpXG4gICAgICAvLyBjbGVhcnMgYW55IHByZXZpb3VzIGVycm9yc1xuICAgICAgLnJlcXVlc3QoXCJyZW1vdmU6ZXJyb3JcIiwgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLCBcInJlcXVpcmVkLWVycm9yXCIpO1xuICB9LFxuXG4gIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgbGV0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKCFmb3JtTW9kZWwpIHtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgICAgZm9ybU1vZGVsID0gdGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBJc24ndCAnZm9ybS0nICsgZm9ybU1vZGVsLmdldCgnaWQnKSB0aGUgc2FtZSBhcyB0aGUgZm9ybUlEIGFscmVhZHk/XG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyBmb3JtTW9kZWwuZ2V0KFwiaWRcIikpLnJlcXVlc3QoXG4gICAgICBcImFkZDpleHRyYVwiLFxuICAgICAgXCJ2aWRlb21haWxcIixcbiAgICAgIHJlc3VsdC52aWRlb21haWwsXG4gICAgKTtcblxuICAgIC8vIHJlc3RhcnQgc3VibWlzc2lvbiBhZ2FpbiwgdGhpcyB0aW1lIHRvIHRoZSByZWFsIHdwIHNpdGVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZm9ybS1cIiArIHRoaXMuZ2V0Rm9ybUlkKCkpLnJlcXVlc3QoXCJzdWJtaXRcIiwgZm9ybU1vZGVsKTtcbiAgfSxcblxuICBvbkdvaW5nQmFjazogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2aWRlb21haWwta2V5XCIsIG51bGwpO1xuICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICB9LFxuXG4gIHZhbGlkYXRlUmVxdWlyZWQ6IGZ1bmN0aW9uIChlbCwgZmllbGRNb2RlbCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVZpZGVvbWFpbChmaWVsZE1vZGVsKTtcblxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZDtcbiAgfSxcblxuICBpbnZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gb3ZlcnJpZGUgZGVmYXVsdCBiZWhhdmlvciBzbyB0aGF0IHdlIGNhbiBzZXQgb3VyIG93biBlcnJvciB0ZXh0IGhlcmVcbiAgICBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiZmllbGRzXCIpLnJlcXVlc3QoXG4gICAgICBcImFkZDplcnJvclwiLFxuICAgICAgdGhpcy5maWVsZE1vZGVsLmdldChcImlkXCIpLFxuICAgICAgXCJyZXF1aXJlZC1lcnJvclwiLFxuICAgICAgXCJSZWNvcmQgYW5kIGNsaWNrIG9uIHN0b3AgdG8gc2VlIGEgcHJldmlldyB2aWRlby5cIixcbiAgICApO1xuICB9LFxuXG4gIHZhbGlkYXRlVmlkZW9tYWlsOiBmdW5jdGlvbiAoZmllbGRNb2RlbCkge1xuICAgIGZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsIHx8IHRoaXMuZmllbGRNb2RlbDtcbiAgICByZXR1cm4gZmllbGRNb2RlbC5nZXQoXCJ2aWRlb21haWwta2V5XCIpIHx8IGZhbHNlO1xuICB9LFxuXG4gIGhhc0Vycm9yczogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgIHJldHVybiBmb3JtTW9kZWwuZ2V0KFwiZXJyb3JzXCIpLmxlbmd0aCA+IDA7XG4gIH0sXG5cbiAgbWF5YmVTdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICBsZXQgbWF5YmUgPSB0cnVlO1xuICAgIGNvbnN0IHZpZGVvbWFpbFN1Ym1pdHRlZCA9IGZvcm1Nb2RlbC5nZXRFeHRyYShcInZpZGVvbWFpbFwiKTtcbiAgICBjb25zdCB2aWRlb21haWxSZWNvcmRlZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuaGFzRXJyb3JzKGZvcm1Nb2RlbCk7XG5cbiAgICAvLyBob2xkIG9uIHdpdGggZmluYWwgZm9ybSBzdWJtaXNzaW9uIHdoZW4gb25lIHdhcyByZWNvcmRlZFxuICAgIC8vIGJ1dCBoYXNuJ3QgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIHZpZGVvbWFpbCBzZXJ2ZXIgeWV0XG4gICAgaWYgKCF2aWRlb21haWxTdWJtaXR0ZWQgJiYgIWVycm9yICYmIHZpZGVvbWFpbFJlY29yZGVkKSB7XG4gICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zdWJtaXQoKTtcbiAgICAgIG1heWJlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlO1xuICB9LFxuXG4gIGdldE1lcmdlVGFnVmFsdWU6IGZ1bmN0aW9uIChmaWVsZEtleSwgZm9ybVZhbHVlcykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZmllbGRNb2RlbC5nZXQoZmllbGRLZXkpO1xuXG4gICAgLy8gaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIHNvbWV0aGluZyB3cm9uZyxcbiAgICAvLyBpLkUuIGFuIGVtcHR5IGVtYWlsX2Zyb20uIGluIHRoYXQgY2FzZSBqdXN0IGlnbm9yZSAuLi5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIC8vIGFkbWluIGVtYWlsIGxvY2FsaXplZCBmcm9tIGJhY2tlbmQsIGEgYml0IHVnbHlcbiAgICAgIC8vIHRvZG8gYXNrIGZvciBhbiBlbmRwb2ludCB0byBwcm9jZXNzIHRob3NlIHNwZWNpYWwgbWVyZ2UgdGFnc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpbmFyeWtpdGNoZW4vdmlkZW9tYWlsLWZvci1uaW5qYS1mb3Jtcy9pc3N1ZXMvMzBcbiAgICAgIGlmICh2YWx1ZSA9PT0gXCJ7d3A6YWRtaW5fZW1haWx9XCIpIHtcbiAgICAgICAgdmFsdWUgPSB3aW5kb3cubmZWaWRlb21haWwuYWRtaW5fZW1haWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgve2ZpZWxkOiguKil9L2kpO1xuICAgICAgICBjb25zdCByYXdGaWVsZEtleSA9IHJhd0ZpZWxkS2V5TWF0Y2hlcyAmJiByYXdGaWVsZEtleU1hdGNoZXNbMV07XG5cbiAgICAgICAgaWYgKHJhd0ZpZWxkS2V5ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIC8vIHllcyBpdCB3YXMgYSBtZXJnZSB0YWcsIHNvIHVzZSBpdFxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgve2ZpZWxkOiguKil9L2ksIGZvcm1WYWx1ZXNbcmF3RmllbGRLZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG5cbiAgLy8gcmV0dXJucyBhIG1hcCBsaWtlIHRoaXM6XG4gIC8vIHtcbiAgLy8gICBmcm9tX2VtYWlsOiBcIm1pY0tAZGVhZm9uei5laFwiXG4gIC8vICAgZnJvbV9uYW1lOiBcIk1IXCJcbiAgLy8gICBtZXNzYWdlOiBcInNkZnNkZnNkZlwiXG4gIC8vICAgc3ViamVjdDogXCJzZGZzZGZcIlxuICAvLyAgIHN1Ym1pdDogXCJcIlxuICAvLyAgIHZpZGVvX21lc3NhZ2U6IFwiMTFlYi02MWQ3LWRkNTgzMzIwLWFlNjEtMmI4MmJlNmM2ZTNlXCJcbiAgLy8gfVxuICBnZXRGb3JtVmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGNvbGxlY3Rpb247XG4gICAgY29uc3QgZm9ybU1vZGVsID0gQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImFwcFwiKS5yZXF1ZXN0KFwiZ2V0OmZvcm1cIiwgdGhpcy5nZXRGb3JtSWQoKSk7XG5cbiAgICBpZiAoZm9ybU1vZGVsKSB7XG4gICAgICBjb2xsZWN0aW9uID0gZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKTtcbiAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9uc1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE1vZGVsLmNvbGxlY3Rpb24ub3B0aW9ucy5mb3JtTW9kZWwuZ2V0KFwiZmllbGRzXCIpLm1vZGVscykge1xuICAgICAgY29sbGVjdGlvbiA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IGNvbGxlY3Rpb24ucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBmaWVsZCkge1xuICAgICAgbWVtb1tmaWVsZC5nZXQoXCJrZXlcIildID0gZmllbGQuZ2V0KFwidmFsdWVcIik7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gZm9ybVZhbHVlcztcbiAgfSxcblxuICBhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlcjogZnVuY3Rpb24gKHZpZGVvbWFpbCkge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdldEZvcm1WYWx1ZXMoKTtcblxuICAgIHZpZGVvbWFpbC5mcm9tID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfZnJvbVwiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwudG8gPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF90b1wiLCBmb3JtVmFsdWVzKTtcbiAgICB2aWRlb21haWwuc3ViamVjdCA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX3N1YmplY3RcIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLmJvZHkgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9ib2R5XCIsIGZvcm1WYWx1ZXMpO1xuXG4gICAgcmV0dXJuIHZpZGVvbWFpbDtcbiAgfSxcblxuICBvbkJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICBkZWxldGUgdGhpcy52aWRlb21haWxDbGllbnQ7XG4gIH0sXG59KTtcblxualF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyKCk7XG59KTtcbiJdLCJuYW1lcyI6WyJQTFVHSU5fVkVSU0lPTiIsIkRFQlVHIiwiVmlkZW9tYWlsRmllbGRDb250cm9sbGVyIiwiTWFyaW9uZXR0ZSIsIk9iamVjdCIsImV4dGVuZCIsInZpZGVvbWFpbENsaWVudCIsImZpZWxkTW9kZWwiLCJjaGFubmVsIiwiQmFja2JvbmUiLCJSYWRpbyIsImluaXRpYWxpemUiLCJ0aGlzIiwibGlzdGVuVG9PbmNlIiwicmVnaXN0ZXJWaWRlb21haWxGaWVsZCIsImxvYWRWaWRlb21haWxDbGllbnQiLCJsaXN0ZW5UbyIsImV2ZW50TmFtZSIsImNvbnNvbGUiLCJsb2ciLCJuZlJhZGlvIiwicGFyYW1zIiwiY3VycmVudE1vZGVscyIsImN1cnJlbnRFbGVtZW50IiwiYXR0cmlidXRlcyIsImZvcm1Db250ZW50RGF0YSIsIm1vZGVscyIsImN1cnJlbnRDaWQiLCJjaWQiLCJmaW5kIiwibW9kZWwiLCJ1bmxvYWQiLCJnZXRGb3JtSWQiLCJnZXQiLCJyZXBseSIsInZhbGlkYXRlUmVxdWlyZWQiLCJ2YWxpZGF0ZVZpZGVvbWFpbCIsIm1heWJlU3VibWl0IiwibGV0IiwiaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSIsInZlcmJvc2UiLCJWaWRlb21haWxDbGllbnQiLCJzaXRlTmFtZSIsInZpZGVvIiwibGltaXRTZWNvbmRzIiwid2lkdGgiLCJzdHJldGNoIiwiY291bnRkb3duIiwiYXVkaW8iLCJlbmFibGVkIiwiaW1hZ2UiLCJxdWFsaXR5Iiwic2VsZWN0b3JzIiwiY29udGFpbmVySWQiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImNhbGxiYWNrcyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZyIsImFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyIiwiYmluZCIsImxvYWRVc2VyTWVkaWFPblJlY29yZCIsImVuYWJsZUF1dG9WYWxpZGF0aW9uIiwiZW5hYmxlQXV0b1N1Ym1pc3Npb24iLCJ2ZXJzaW9ucyIsIm5pbmphRm9ybVBsdWdpbiIsIm9uIiwib25QcmV2aWV3Iiwib25TdWJtaXR0ZWQiLCJvbkdvaW5nQmFjayIsInNob3ciLCJrZXkiLCJzZXQiLCJyZXF1ZXN0IiwicmVzdWx0IiwiZm9ybU1vZGVsIiwiY29sbGVjdGlvbiIsIm9wdGlvbnMiLCJ2aWRlb21haWwiLCJpbnZhbGlkYXRlIiwiZWwiLCJ2YWxpZCIsImhhc0Vycm9ycyIsImxlbmd0aCIsIm1heWJlIiwidmlkZW9tYWlsU3VibWl0dGVkIiwiZ2V0RXh0cmEiLCJ2aWRlb21haWxSZWNvcmRlZCIsImVycm9yIiwic3VibWl0IiwiZ2V0TWVyZ2VUYWdWYWx1ZSIsImZpZWxkS2V5IiwiZm9ybVZhbHVlcyIsInZhbHVlIiwid2luZG93IiwibmZWaWRlb21haWwiLCJhZG1pbl9lbWFpbCIsInJhd0ZpZWxkS2V5IiwicmF3RmllbGRLZXlNYXRjaGVzIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0Rm9ybVZhbHVlcyIsInJlZHVjZSIsIm1lbW8iLCJmaWVsZCIsImZyb20iLCJ0byIsInN1YmplY3Qi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
  • videomail-for-ninja-forms/trunk/target/js/videomail-client/index.js

    r3257516 r3269283  
    480480                    for(i = 0; i < list.length; ++i){
    481481                        var buf = list[i];
    482                         if (isInstance(buf, Uint8Array)) {
    483                             if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos);
    484                             else Uint8Array.prototype.set.call(buffer, buf, pos);
    485                         } else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos);
     482                        if (isInstance(buf, Uint8Array)) if (pos + buf.length > buffer.length) Buffer.from(buf).copy(buffer, pos);
     483                        else Uint8Array.prototype.set.call(buffer, buf, pos);
     484                        else if (Buffer.isBuffer(buf)) buf.copy(buffer, pos);
    486485                        else throw new TypeError('"list" argument must be an Array of Buffers');
    487486                        pos += buf.length;
     
    647646                    if (numberIsNaN(byteOffset)) byteOffset = dir ? 0 : buffer.length - 1;
    648647                    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
    649                     if (byteOffset >= buffer.length) {
    650                         if (dir) return -1;
    651                         byteOffset = buffer.length - 1;
    652                     } else if (byteOffset < 0) {
    653                         if (!dir) return -1;
    654                         byteOffset = 0;
    655                     }
     648                    if (byteOffset >= buffer.length) if (dir) return -1;
     649                    else byteOffset = buffer.length - 1;
     650                    else if (byteOffset < 0) if (!dir) return -1;
     651                    else byteOffset = 0;
    656652                    if ('string' == typeof val) val = Buffer.from(val, encoding);
    657653                    if (Buffer.isBuffer(val)) {
     
    661657                    if ('number' == typeof val) {
    662658                        val &= 0xFF;
    663                         if ('function' == typeof Uint8Array.prototype.indexOf) {
    664                             if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
    665                             return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
    666                         }
     659                        if ('function' == typeof Uint8Array.prototype.indexOf) if (dir) return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
     660                        else return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
    667661                        return arrayIndexOf(buffer, [
    668662                            val
     
    20212015                function prependListener(emitter, event, fn) {
    20222016                    if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn);
    2023                     if (emitter._events && emitter._events[event]) {
    2024                         if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
    2025                         else emitter._events[event] = [
    2026                             fn,
    2027                             emitter._events[event]
    2028                         ];
    2029                     } else emitter.on(event, fn);
     2017                    if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
     2018                    else emitter._events[event] = [
     2019                        fn,
     2020                        emitter._events[event]
     2021                    ];
     2022                    else emitter.on(event, fn);
    20302023                }
    20312024                function ReadableState(options, stream) {
     
    21222115                        else if (state.objectMode || chunk && chunk.length > 0) {
    21232116                            if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk);
    2124                             if (addToFront) {
    2125                                 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
    2126                                 else addChunk(stream, state, chunk, true);
    2127                             } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
     2117                            if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
     2118                            else addChunk(stream, state, chunk, true);
     2119                            else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
    21282120                            else {
    21292121                                state.reading = false;
     
    21842176                    if (n <= 0 || 0 === state.length && state.ended) return 0;
    21852177                    if (state.objectMode) return 1;
    2186                     if (n !== n) {
    2187                         if (state.flowing && state.length) return state.buffer.head.data.length;
    2188                         return state.length;
    2189                     }
     2178                    if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length;
     2179                    else return state.length;
    21902180                    if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
    21912181                    if (n <= state.length) return n;
     
    30703060                }
    30713061                function prefinish(stream, state) {
    3072                     if (!state.prefinished && !state.finalCalled) {
    3073                         if ('function' == typeof stream._final) {
    3074                             state.pendingcb++;
    3075                             state.finalCalled = true;
    3076                             pna.nextTick(callFinal, stream, state);
    3077                         } else {
    3078                             state.prefinished = true;
    3079                             stream.emit('prefinish');
    3080                         }
     3062                    if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) {
     3063                        state.pendingcb++;
     3064                        state.finalCalled = true;
     3065                        pna.nextTick(callFinal, stream, state);
     3066                    } else {
     3067                        state.prefinished = true;
     3068                        stream.emit('prefinish');
    30813069                    }
    30823070                }
     
    30953083                    state.ending = true;
    30963084                    finishMaybe(stream, state);
    3097                     if (cb) {
    3098                         if (state.finished) pna.nextTick(cb);
    3099                         else stream.once('finish', cb);
    3100                     }
     3085                    if (cb) if (state.finished) pna.nextTick(cb);
     3086                    else stream.once('finish', cb);
    31013087                    state.ended = true;
    31023088                    stream.writable = false;
     
    32153201                    if (readableDestroyed || writableDestroyed) {
    32163202                        if (cb) cb(err);
    3217                         else if (err) {
    3218                             if (this._writableState) {
    3219                                 if (!this._writableState.errorEmitted) {
    3220                                     this._writableState.errorEmitted = true;
    3221                                     pna.nextTick(emitErrorNT, this, err);
    3222                                 }
    3223                             } else pna.nextTick(emitErrorNT, this, err);
    3224                         }
     3203                        else if (err) if (this._writableState) {
     3204                            if (!this._writableState.errorEmitted) {
     3205                                this._writableState.errorEmitted = true;
     3206                                pna.nextTick(emitErrorNT, this, err);
     3207                            }
     3208                        } else pna.nextTick(emitErrorNT, this, err);
    32253209                        return this;
    32263210                    }
     
    32283212                    if (this._writableState) this._writableState.destroyed = true;
    32293213                    this._destroy(err || null, function(err) {
    3230                         if (!cb && err) {
    3231                             if (_this._writableState) {
    3232                                 if (!_this._writableState.errorEmitted) {
    3233                                     _this._writableState.errorEmitted = true;
    3234                                     pna.nextTick(emitErrorNT, _this, err);
    3235                                 }
    3236                             } else pna.nextTick(emitErrorNT, _this, err);
    3237                         } else if (cb) cb(err);
     3214                        if (!cb && err) if (_this._writableState) {
     3215                            if (!_this._writableState.errorEmitted) {
     3216                                _this._writableState.errorEmitted = true;
     3217                                pna.nextTick(emitErrorNT, _this, err);
     3218                            }
     3219                        } else pna.nextTick(emitErrorNT, _this, err);
     3220                        else if (cb) cb(err);
    32383221                    });
    32393222                    return this;
     
    32983281                    if ('number' != typeof size) throw new TypeError('Argument must be a number');
    32993282                    var buf = Buffer(size);
    3300                     if (void 0 !== fill) {
    3301                         if ('string' == typeof encoding) buf.fill(fill, encoding);
    3302                         else buf.fill(fill);
    3303                     } else buf.fill(0);
     3283                    if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding);
     3284                    else buf.fill(fill);
     3285                    else buf.fill(0);
    33043286                    return buf;
    33053287                };
     
    34403422                    nb = utf8CheckByte(buf[j]);
    34413423                    if (nb >= 0) {
    3442                         if (nb > 0) {
    3443                             if (2 === nb) nb = 0;
    3444                             else self1.lastNeed = nb - 3;
    3445                         }
     3424                        if (nb > 0) if (2 === nb) nb = 0;
     3425                        else self1.lastNeed = nb - 3;
    34463426                        return nb;
    34473427                    }
     
    38333813                    list = events[type];
    38343814                    if (void 0 === list) return this;
    3835                     if (list === listener || list.listener === listener) {
    3836                         if (0 === --this._eventsCount) this._events = Object.create(null);
    3837                         else {
    3838                             delete events[type];
    3839                             if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
    3840                         }
    3841                     } else if ('function' != typeof list) {
     3815                    if (list === listener || list.listener === listener) if (0 === --this._eventsCount) this._events = Object.create(null);
     3816                    else {
     3817                        delete events[type];
     3818                        if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
     3819                    }
     3820                    else if ('function' != typeof list) {
    38423821                        position = -1;
    38433822                        for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) {
     
    38633842                            this._events = Object.create(null);
    38643843                            this._eventsCount = 0;
    3865                         } else if (void 0 !== events[type]) {
    3866                             if (0 === --this._eventsCount) this._events = Object.create(null);
    3867                             else delete events[type];
    3868                         }
     3844                        } else if (void 0 !== events[type]) if (0 === --this._eventsCount) this._events = Object.create(null);
     3845                        else delete events[type];
    38693846                        return this;
    38703847                    }
     
    39573934                }
    39583935                function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
    3959                     if ('function' == typeof emitter.on) {
    3960                         if (flags.once) emitter.once(name, listener);
    3961                         else emitter.on(name, listener);
    3962                     } else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) {
     3936                    if ('function' == typeof emitter.on) if (flags.once) emitter.once(name, listener);
     3937                    else emitter.on(name, listener);
     3938                    else if ('function' == typeof emitter.addEventListener) emitter.addEventListener(name, function wrapListener(arg) {
    39633939                        if (flags.once) emitter.removeEventListener(name, wrapListener);
    39643940                        listener(arg);
     
    40013977                function setReplace(replace, val, k, parent) {
    40023978                    var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k);
    4003                     if (void 0 !== propertyDescriptor.get) {
    4004                         if (propertyDescriptor.configurable) {
    4005                             Object.defineProperty(parent, k, {
    4006                                 value: replace
    4007                             });
    4008                             arr.push([
    4009                                 parent,
    4010                                 k,
    4011                                 val,
    4012                                 propertyDescriptor
    4013                             ]);
    4014                         } else replacerStack.push([
     3979                    if (void 0 !== propertyDescriptor.get) if (propertyDescriptor.configurable) {
     3980                        Object.defineProperty(parent, k, {
     3981                            value: replace
     3982                        });
     3983                        arr.push([
     3984                            parent,
     3985                            k,
    40153986                            val,
    4016                             k,
    4017                             replace
     3987                            propertyDescriptor
    40183988                        ]);
    4019                     } else {
     3989                    } else replacerStack.push([
     3990                        val,
     3991                        k,
     3992                        replace
     3993                    ]);
     3994                    else {
    40203995                        parent[k] = replace;
    40213996                        arr.push([
     
    41414116                var hasOwnProperty = Object.prototype.hasOwnProperty;
    41424117                var forEachArray = function(array, iterator, receiver) {
    4143                     for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) {
    4144                         if (null == receiver) iterator(array[i], i, array);
    4145                         else iterator.call(receiver, array[i], i, array);
    4146                     }
     4118                    for(var i = 0, len = array.length; i < len; i++)if (hasOwnProperty.call(array, i)) if (null == receiver) iterator(array[i], i, array);
     4119                    else iterator.call(receiver, array[i], i, array);
    41474120                };
    41484121                var forEachString = function(string, iterator, receiver) {
     
    41514124                };
    41524125                var forEachObject = function(object, iterator, receiver) {
    4153                     for(var k in object)if (hasOwnProperty.call(object, k)) {
    4154                         if (null == receiver) iterator(object[k], k, object);
    4155                         else iterator.call(receiver, object[k], k, object);
    4156                     }
     4126                    for(var k in object)if (hasOwnProperty.call(object, k)) if (null == receiver) iterator(object[k], k, object);
     4127                    else iterator.call(receiver, object[k], k, object);
    41574128                };
    41584129                var forEach = function(list, iterator, thisArg) {
     
    51825153                            depth: maxDepth - depth
    51835154                        });
    5184                         if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();
     5155                        else if ('symbol' !== customInspect && 'function' == typeof obj.inspect) return obj.inspect();
    51855156                    }
    51865157                    if (isMap(obj)) {
     
    54195390                        for(var k = 0; k < syms.length; k++)symMap['$' + syms[k]] = syms[k];
    54205391                    }
    5421                     for(var key in obj){
    5422                         if (!!has(obj, key)) {
    5423                             if (!isArr || String(Number(key)) !== key || !(key < obj.length)) {
    5424                                 if (!(hasShammedSymbols && symMap['$' + key] instanceof Symbol)) {
    5425                                     if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
    5426                                     else xs.push(key + ': ' + inspect(obj[key], obj));
    5427                                 }
    5428                             }
    5429                         }
     5392                    for(var key in obj)if (has(obj, key)) {
     5393                        if (!isArr || String(Number(key)) !== key || !(key < obj.length)) if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) continue;
     5394                        else if ($test.call(/[^\w$]/, key)) xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
     5395                        else xs.push(key + ': ' + inspect(obj[key], obj));
    54305396                    }
    54315397                    if ('function' == typeof gOPS) {
     
    59605926                        var pos = tmpSc.get(object);
    59615927                        step += 1;
    5962                         if (void 0 !== pos) {
    5963                             if (pos === step) throw new RangeError('Cyclic object value');
    5964                             findFlag = true;
    5965                         }
     5928                        if (void 0 !== pos) if (pos === step) throw new RangeError('Cyclic object value');
     5929                        else findFlag = true;
    59665930                        if (void 0 === tmpSc.get(sentinel)) step = 0;
    59675931                    }
     
    60856049                    var joined = keys.join(options.delimiter);
    60866050                    var prefix = true === options.addQueryPrefix ? '?' : '';
    6087                     if (options.charsetSentinel) {
    6088                         if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&';
    6089                         else prefix += 'utf8=%E2%9C%93&';
    6090                     }
     6051                    if (options.charsetSentinel) if ('iso-8859-1' === options.charset) prefix += 'utf8=%26%2310003%3B&';
     6052                    else prefix += 'utf8=%E2%9C%93&';
    60916053                    return joined.length > 0 ? prefix + joined : '';
    60926054                };
     
    75827544                exports1.debuglog = function(set) {
    75837545                    set = set.toUpperCase();
    7584                     if (!debugs[set]) {
    7585                         if (debugEnvRegex.test(set)) {
    7586                             var pid = process.pid;
    7587                             debugs[set] = function() {
    7588                                 var msg = exports1.format.apply(exports1, arguments);
    7589                                 console.error('%s %d: %s', set, pid, msg);
    7590                             };
    7591                         } else debugs[set] = function() {};
    7592                     }
     7546                    if (!debugs[set]) if (debugEnvRegex.test(set)) {
     7547                        var pid = process.pid;
     7548                        debugs[set] = function() {
     7549                            var msg = exports1.format.apply(exports1, arguments);
     7550                            console.error('%s %d: %s', set, pid, msg);
     7551                        };
     7552                    } else debugs[set] = function() {};
    75937553                    return debugs[set];
    75947554                };
     
    77297689                    if (isError(value)) base = ' ' + formatError(value);
    77307690                    if (0 === keys.length && (!array || 0 == value.length)) return braces[0] + base + braces[1];
    7731                     if (recurseTimes < 0) {
    7732                         if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    7733                         return ctx.stylize('[Object]', 'special');
    7734                     }
     7691                    if (recurseTimes < 0) if (isRegExp(value)) return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
     7692                    else return ctx.stylize('[Object]', 'special');
    77357693                    ctx.seen.push(value);
    77367694                    var output;
     
    77717729                    else if (desc.set) str = ctx.stylize('[Setter]', 'special');
    77727730                    if (!hasOwnProperty(visibleKeys, key)) name = '[' + key + ']';
    7773                     if (!str) {
    7774                         if (ctx.seen.indexOf(desc.value) < 0) {
    7775                             str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1);
    7776                             if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) {
    7777                                 return '  ' + line;
    7778                             }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) {
    7779                                 return '   ' + line;
    7780                             }).join('\n');
    7781                         } else str = ctx.stylize('[Circular]', 'special');
    7782                     }
     7731                    if (!str) if (ctx.seen.indexOf(desc.value) < 0) {
     7732                        str = isNull(recurseTimes) ? formatValue(ctx, desc.value, null) : formatValue(ctx, desc.value, recurseTimes - 1);
     7733                        if (str.indexOf('\n') > -1) str = array ? str.split('\n').map(function(line) {
     7734                            return '  ' + line;
     7735                        }).join('\n').slice(2) : '\n' + str.split('\n').map(function(line) {
     7736                            return '   ' + line;
     7737                        }).join('\n');
     7738                    } else str = ctx.stylize('[Circular]', 'special');
    77837739                    if (isUndefined(name)) {
    77847740                        if (array && key.match(/^\d+$/)) return str;
     
    80998055                function prependListener(emitter, event, fn) {
    81008056                    if ('function' == typeof emitter.prependListener) return emitter.prependListener(event, fn);
    8101                     if (emitter._events && emitter._events[event]) {
    8102                         if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
    8103                         else emitter._events[event] = [
    8104                             fn,
    8105                             emitter._events[event]
    8106                         ];
    8107                     } else emitter.on(event, fn);
     8057                    if (emitter._events && emitter._events[event]) if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);
     8058                    else emitter._events[event] = [
     8059                        fn,
     8060                        emitter._events[event]
     8061                    ];
     8062                    else emitter.on(event, fn);
    81088063                }
    81098064                function ReadableState(options, stream) {
     
    82008155                        else if (state.objectMode || chunk && chunk.length > 0) {
    82018156                            if ('string' != typeof chunk && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) chunk = _uint8ArrayToBuffer(chunk);
    8202                             if (addToFront) {
    8203                                 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
    8204                                 else addChunk(stream, state, chunk, true);
    8205                             } else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
     8157                            if (addToFront) if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));
     8158                            else addChunk(stream, state, chunk, true);
     8159                            else if (state.ended) stream.emit('error', new Error('stream.push() after EOF'));
    82068160                            else {
    82078161                                state.reading = false;
     
    82628216                    if (n <= 0 || 0 === state.length && state.ended) return 0;
    82638217                    if (state.objectMode) return 1;
    8264                     if (n !== n) {
    8265                         if (state.flowing && state.length) return state.buffer.head.data.length;
    8266                         return state.length;
    8267                     }
     8218                    if (n !== n) if (state.flowing && state.length) return state.buffer.head.data.length;
     8219                    else return state.length;
    82688220                    if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
    82698221                    if (n <= state.length) return n;
     
    91489100                }
    91499101                function prefinish(stream, state) {
    9150                     if (!state.prefinished && !state.finalCalled) {
    9151                         if ('function' == typeof stream._final) {
    9152                             state.pendingcb++;
    9153                             state.finalCalled = true;
    9154                             pna.nextTick(callFinal, stream, state);
    9155                         } else {
    9156                             state.prefinished = true;
    9157                             stream.emit('prefinish');
    9158                         }
     9102                    if (!state.prefinished && !state.finalCalled) if ('function' == typeof stream._final) {
     9103                        state.pendingcb++;
     9104                        state.finalCalled = true;
     9105                        pna.nextTick(callFinal, stream, state);
     9106                    } else {
     9107                        state.prefinished = true;
     9108                        stream.emit('prefinish');
    91599109                    }
    91609110                }
     
    91739123                    state.ending = true;
    91749124                    finishMaybe(stream, state);
    9175                     if (cb) {
    9176                         if (state.finished) pna.nextTick(cb);
    9177                         else stream.once('finish', cb);
    9178                     }
     9125                    if (cb) if (state.finished) pna.nextTick(cb);
     9126                    else stream.once('finish', cb);
    91799127                    state.ended = true;
    91809128                    stream.writable = false;
     
    92939241                    if (readableDestroyed || writableDestroyed) {
    92949242                        if (cb) cb(err);
    9295                         else if (err) {
    9296                             if (this._writableState) {
    9297                                 if (!this._writableState.errorEmitted) {
    9298                                     this._writableState.errorEmitted = true;
    9299                                     pna.nextTick(emitErrorNT, this, err);
    9300                                 }
    9301                             } else pna.nextTick(emitErrorNT, this, err);
    9302                         }
     9243                        else if (err) if (this._writableState) {
     9244                            if (!this._writableState.errorEmitted) {
     9245                                this._writableState.errorEmitted = true;
     9246                                pna.nextTick(emitErrorNT, this, err);
     9247                            }
     9248                        } else pna.nextTick(emitErrorNT, this, err);
    93039249                        return this;
    93049250                    }
     
    93069252                    if (this._writableState) this._writableState.destroyed = true;
    93079253                    this._destroy(err || null, function(err) {
    9308                         if (!cb && err) {
    9309                             if (_this._writableState) {
    9310                                 if (!_this._writableState.errorEmitted) {
    9311                                     _this._writableState.errorEmitted = true;
    9312                                     pna.nextTick(emitErrorNT, _this, err);
    9313                                 }
    9314                             } else pna.nextTick(emitErrorNT, _this, err);
    9315                         } else if (cb) cb(err);
     9254                        if (!cb && err) if (_this._writableState) {
     9255                            if (!_this._writableState.errorEmitted) {
     9256                                _this._writableState.errorEmitted = true;
     9257                                pna.nextTick(emitErrorNT, _this, err);
     9258                            }
     9259                        } else pna.nextTick(emitErrorNT, _this, err);
     9260                        else if (cb) cb(err);
    93169261                    });
    93179262                    return this;
     
    93769321                    if ('number' != typeof size) throw new TypeError('Argument must be a number');
    93779322                    var buf = Buffer(size);
    9378                     if (void 0 !== fill) {
    9379                         if ('string' == typeof encoding) buf.fill(fill, encoding);
    9380                         else buf.fill(fill);
    9381                     } else buf.fill(0);
     9323                    if (void 0 !== fill) if ('string' == typeof encoding) buf.fill(fill, encoding);
     9324                    else buf.fill(fill);
     9325                    else buf.fill(0);
    93829326                    return buf;
    93839327                };
     
    95189462                    nb = utf8CheckByte(buf[j]);
    95199463                    if (nb >= 0) {
    9520                         if (nb > 0) {
    9521                             if (2 === nb) nb = 0;
    9522                             else self1.lastNeed = nb - 3;
    9523                         }
     9464                        if (nb > 0) if (2 === nb) nb = 0;
     9465                        else self1.lastNeed = nb - 3;
    95249466                        return nb;
    95259467                    }
     
    98269768                }
    98279769            },
    9828             "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
     9770            "../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
    98299771                "use strict";
    98309772                __webpack_require__.d(__webpack_exports__, {
     
    98389780                ___CSS_LOADER_EXPORT___.push([
    98399781                    module1.id,
    9840                     '@keyframes blink{0%{opacity:.9}35%{opacity:.9}50%{opacity:.1}85%{opacity:.1}to{opacity:.9}}.videomail .visuals{position:relative}.videomail .visuals video.replay{width:100%;height:100%}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint{height:auto;margin:0}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .paused,.videomail .facingMode,.videomail noscript{z-index:100;position:absolute}.videomail .countdown,.videomail .recordTimer,.videomail .recordNote,.videomail .pausedHeader,.videomail .pausedHint,.videomail noscript{font-weight:700}.videomail .countdown,.videomail .paused,.videomail noscript{width:100%;top:50%;transform:translateY(-50%)}.videomail .pausedHeader,.videomail .pausedHint,.videomail .countdown{text-align:center;letter-spacing:4px;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.videomail .pausedHeader,.videomail .countdown{opacity:.9;font-size:460%}.videomail .pausedHint{font-size:150%}.videomail .facingMode{color:#f5f5f5e6;z-index:10;background:#1e1e1e80;border:none;outline:none;padding:.1em .3em;font-family:monospace;font-size:1.2em;transition:all .2s;bottom:.6em;right:.7em}.videomail .facingMode:hover{cursor:pointer;background:#323232b3}.videomail .recordTimer,.videomail .recordNote{color:#00d814;opacity:.9;background:#0a0a0acc;padding:.3em .4em;font-family:monospace;transition:all 1s;right:.7em}.videomail .recordTimer.near,.videomail .recordNote.near{color:#eb9369}.videomail .recordTimer.nigh,.videomail .recordNote.nigh{color:#ea4b2a}.videomail .recordTimer{top:.7em}.videomail .recordNote{top:3.6em}.videomail .recordNote:before{content:"REC";animation:1s infinite blink}.videomail .notifier{box-sizing:border-box;overflow:hidden}.videomail .radioGroup{display:block}.videomail .radioGroup label{cursor:pointer}.videomail video{margin-bottom:0}.videomail video.userMedia{background-color:#3232321a}',
     9782                    `@keyframes blink {
     9783  0% {
     9784    opacity: .9;
     9785  }
     9786
     9787  35% {
     9788    opacity: .9;
     9789  }
     9790
     9791  50% {
     9792    opacity: .1;
     9793  }
     9794
     9795  85% {
     9796    opacity: .1;
     9797  }
     9798
     9799  100% {
     9800    opacity: .9;
     9801  }
     9802}
     9803
     9804.videomail .visuals {
     9805  position: relative;
     9806}
     9807
     9808.videomail .visuals video.replay {
     9809  width: 100%;
     9810  height: 100%;
     9811}
     9812
     9813.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint {
     9814  height: auto;
     9815  margin: 0;
     9816}
     9817
     9818.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .paused, .videomail .facingMode, .videomail noscript {
     9819  z-index: 100;
     9820  position: absolute;
     9821}
     9822
     9823.videomail .countdown, .videomail .recordTimer, .videomail .recordNote, .videomail .pausedHeader, .videomail .pausedHint, .videomail noscript {
     9824  font-weight: bold;
     9825}
     9826
     9827.videomail .countdown, .videomail .paused, .videomail noscript {
     9828  width: 100%;
     9829  top: 50%;
     9830  transform: translateY(-50%);
     9831}
     9832
     9833.videomail .pausedHeader, .videomail .pausedHint, .videomail .countdown {
     9834  text-align: center;
     9835  letter-spacing: 4px;
     9836  text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff;
     9837}
     9838
     9839.videomail .pausedHeader, .videomail .countdown {
     9840  opacity: .9;
     9841  font-size: 460%;
     9842}
     9843
     9844.videomail .pausedHint {
     9845  font-size: 150%;
     9846}
     9847
     9848.videomail .facingMode {
     9849  color: #f5f5f5e6;
     9850  z-index: 10;
     9851  background: #1e1e1e80;
     9852  border: none;
     9853  outline: none;
     9854  padding: .1em .3em;
     9855  font-family: monospace;
     9856  font-size: 1.2em;
     9857  transition: all .2s;
     9858  bottom: .6em;
     9859  right: .7em;
     9860}
     9861
     9862.videomail .facingMode:hover {
     9863  cursor: pointer;
     9864  background: #323232b3;
     9865}
     9866
     9867.videomail .recordTimer, .videomail .recordNote {
     9868  color: #00d814;
     9869  opacity: .9;
     9870  background: #0a0a0acc;
     9871  padding: .3em .4em;
     9872  font-family: monospace;
     9873  transition: all 1s;
     9874  right: .7em;
     9875}
     9876
     9877.videomail .recordTimer.near, .videomail .recordNote.near {
     9878  color: #eb9369;
     9879}
     9880
     9881.videomail .recordTimer.nigh, .videomail .recordNote.nigh {
     9882  color: #ea4b2a;
     9883}
     9884
     9885.videomail .recordTimer {
     9886  top: .7em;
     9887}
     9888
     9889.videomail .recordNote {
     9890  top: 3.6em;
     9891}
     9892
     9893.videomail .recordNote:before {
     9894  content: "REC";
     9895  animation: 1s infinite blink;
     9896}
     9897
     9898.videomail .notifier {
     9899  box-sizing: border-box;
     9900  overflow: hidden;
     9901}
     9902
     9903.videomail .radioGroup {
     9904  display: block;
     9905}
     9906
     9907.videomail .radioGroup label {
     9908  cursor: pointer;
     9909}
     9910
     9911.videomail video {
     9912  margin-bottom: 0;
     9913}
     9914
     9915.videomail video.userMedia {
     9916  background-color: #3232321a;
     9917}
     9918`,
    98419919                    ""
    98429920                ]);
     
    98839961                            var item = [].concat(modules[_k]);
    98849962                            if (!dedupe || !alreadyImportedModules[item[0]]) {
    9885                                 if (void 0 !== layer) {
    9886                                     if (void 0 === item[5]) item[5] = layer;
    9887                                     else {
    9888                                         item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
    9889                                         item[5] = layer;
    9890                                     }
     9963                                if (void 0 !== layer) if (void 0 === item[5]) item[5] = layer;
     9964                                else {
     9965                                    item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
     9966                                    item[5] = layer;
    98919967                                }
    9892                                 if (media) {
    9893                                     if (item[2]) {
    9894                                         item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
    9895                                         item[2] = media;
    9896                                     } else item[2] = media;
    9897                                 }
    9898                                 if (supports) {
    9899                                     if (item[4]) {
    9900                                         item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
    9901                                         item[4] = supports;
    9902                                     } else item[4] = "".concat(supports);
    9903                                 }
     9968                                if (media) if (item[2]) {
     9969                                    item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
     9970                                    item[2] = media;
     9971                                } else item[2] = media;
     9972                                if (supports) if (item[4]) {
     9973                                    item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
     9974                                    item[4] = supports;
     9975                                } else item[4] = "".concat(supports);
    99049976                                list.push(item);
    99059977                            }
     
    1016510237            var client = __webpack_require__("./node_modules/superagent/lib/client.js");
    1016610238            var client_default = /*#__PURE__*/ __webpack_require__.n(client);
     10239            const list = [
     10240                Error,
     10241                EvalError,
     10242                RangeError,
     10243                ReferenceError,
     10244                SyntaxError,
     10245                TypeError,
     10246                URIError,
     10247                AggregateError,
     10248                globalThis.DOMException,
     10249                globalThis.AssertionError,
     10250                globalThis.SystemError
     10251            ].filter(Boolean).map((constructor)=>[
     10252                    constructor.name,
     10253                    constructor
     10254                ]);
     10255            const errorConstructors = new Map(list);
     10256            const errorProperties = [
     10257                {
     10258                    property: 'name',
     10259                    enumerable: false
     10260                },
     10261                {
     10262                    property: 'message',
     10263                    enumerable: false
     10264                },
     10265                {
     10266                    property: 'stack',
     10267                    enumerable: false
     10268                },
     10269                {
     10270                    property: 'code',
     10271                    enumerable: true
     10272                },
     10273                {
     10274                    property: 'cause',
     10275                    enumerable: false
     10276                },
     10277                {
     10278                    property: 'errors',
     10279                    enumerable: false
     10280                }
     10281            ];
     10282            const toJsonWasCalled = new WeakSet();
     10283            const toJSON = (from)=>{
     10284                toJsonWasCalled.add(from);
     10285                const json = from.toJSON();
     10286                toJsonWasCalled.delete(from);
     10287                return json;
     10288            };
     10289            const newError = (name)=>{
     10290                const ErrorConstructor = errorConstructors.get(name) ?? Error;
     10291                return ErrorConstructor === AggregateError ? new ErrorConstructor([]) : new ErrorConstructor();
     10292            };
     10293            const destroyCircular = ({ from, seen, to, forceEnumerable, maxDepth, depth, useToJSON, serialize })=>{
     10294                if (!to) to = Array.isArray(from) ? [] : !serialize && isErrorLike(from) ? newError(from.name) : {};
     10295                seen.push(from);
     10296                if (depth >= maxDepth) return to;
     10297                if (useToJSON && 'function' == typeof from.toJSON && !toJsonWasCalled.has(from)) return toJSON(from);
     10298                const continueDestroyCircular = (value)=>destroyCircular({
     10299                        from: value,
     10300                        seen: [
     10301                            ...seen
     10302                        ],
     10303                        forceEnumerable,
     10304                        maxDepth,
     10305                        depth,
     10306                        useToJSON,
     10307                        serialize
     10308                    });
     10309                for (const [key, value] of Object.entries(from)){
     10310                    if (value && value instanceof Uint8Array && 'Buffer' === value.constructor.name) {
     10311                        to[key] = '[object Buffer]';
     10312                        continue;
     10313                    }
     10314                    if (null !== value && 'object' == typeof value && 'function' == typeof value.pipe) {
     10315                        to[key] = '[object Stream]';
     10316                        continue;
     10317                    }
     10318                    if ('function' != typeof value) {
     10319                        if (!value || 'object' != typeof value) {
     10320                            try {
     10321                                to[key] = value;
     10322                            } catch  {}
     10323                            continue;
     10324                        }
     10325                        if (!seen.includes(from[key])) {
     10326                            depth++;
     10327                            to[key] = continueDestroyCircular(from[key]);
     10328                            continue;
     10329                        }
     10330                        to[key] = '[Circular]';
     10331                    }
     10332                }
     10333                if (serialize || to instanceof Error) {
     10334                    for (const { property, enumerable } of errorProperties)if (void 0 !== from[property] && null !== from[property]) Object.defineProperty(to, property, {
     10335                        value: isErrorLike(from[property]) || Array.isArray(from[property]) ? continueDestroyCircular(from[property]) : from[property],
     10336                        enumerable: forceEnumerable ? true : enumerable,
     10337                        configurable: true,
     10338                        writable: true
     10339                    });
     10340                }
     10341                return to;
     10342            };
     10343            function serializeError(value, options = {}) {
     10344                const { maxDepth = Number.POSITIVE_INFINITY, useToJSON = true } = options;
     10345                if ('object' == typeof value && null !== value) return destroyCircular({
     10346                    from: value,
     10347                    seen: [],
     10348                    forceEnumerable: true,
     10349                    maxDepth,
     10350                    depth: 0,
     10351                    useToJSON,
     10352                    serialize: true
     10353                });
     10354                if ('function' == typeof value) return `[Function: ${value.name || 'anonymous'}]`;
     10355                return value;
     10356            }
     10357            function isErrorLike(value) {
     10358                return Boolean(value) && 'object' == typeof value && 'string' == typeof value.name && 'string' == typeof value.message && 'string' == typeof value.stack;
     10359            }
    1016710360            var util = __webpack_require__("./node_modules/util/util.js");
    1016810361            var util_default = /*#__PURE__*/ __webpack_require__.n(util);
     
    1027710470                            q = props[p];
    1027810471                            if (typeof q === OBJ_TYPE && q.length > 0) {
    10279                                 if (2 === q.length) {
    10280                                     if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match);
    10281                                     else this[q[0]] = q[1];
    10282                                 } else if (3 === q.length) {
    10283                                     if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0;
    10284                                     else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0;
    10285                                 } else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0;
     10472                                if (2 === q.length) if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match);
     10473                                else this[q[0]] = q[1];
     10474                                else if (3 === q.length) if (typeof q[1] !== FUNC_TYPE || q[1].exec && q[1].test) this[q[0]] = match ? match.replace(q[1], q[2]) : void 0;
     10475                                else this[q[0]] = match ? q[1].call(this, match, q[2]) : void 0;
     10476                                else if (4 === q.length) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : void 0;
    1028610477                            } else this[q] = match ? match : void 0;
    1028710478                        }
     
    1352413715                for(var i = 0, l = form.elements.length; i < l; i++){
    1352513716                    var element = form.elements[i];
    13526                     if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || !!options.includeDisabled)) {
     13717                    if (!IGNORED_ELEMENT_TYPES[element.type] && (!element.disabled || options.includeDisabled)) {
    1352713718                        elementName = element.name || element.id;
    1352813719                        if (elementName && !elementNameLookup[elementName]) {
     
    1355113742                var data = [];
    1355213743                var allRadios = true;
    13553                 for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || !!options.includeDisabled) {
     13744                for(var i = 0, l = element.length; i < l; i++)if (!element[i].disabled || options.includeDisabled) {
    1355413745                    if (allRadios && 'radio' !== element[i].type) allRadios = false;
    1355513746                    var value = getFormElementValue(element[i], options.trim);
     
    1375313944                }
    1375413945                setDisabled(disabled, buttonsToo) {
    13755                     for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) {
    13756                         if (disabled) formControl.setAttribute("disabled", "disabled");
    13757                         else formControl.removeAttribute("disabled");
    13758                     }
     13946                    for (const formControl of this.formElement.elements)if (buttonsToo || html_isNotButton(formControl)) if (disabled) formControl.setAttribute("disabled", "disabled");
     13947                    else formControl.removeAttribute("disabled");
    1375913948                }
    1376013949                hideAll() {
     
    1391014099            const wrappers_form = Form;
    1391114100            var package_namespaceObject = {
    13912                 i8: "10.2.13"
     14101                i8: "10.2.22"
    1391314102            };
    1391414103            function findOriginalExc(exc) {
     
    1400214191                            device: err.device,
    1400314192                            engine: err.engine,
    14004                             err: err.err,
     14193                            err: serializeError(err.err),
    1400514194                            explanation: err.explanation,
    1400614195                            location: err.location,
     
    1401814207                            versions: {
    1401914208                                videomailClient: package_namespaceObject.i8,
    14020                                 ninjaFormPlugin: this.options.versions?.ninjaFormPlugin
     14209                                videomailNinjaFormPlugin: this.options.versions?.videomailNinjaFormPlugin
    1402114210                            }
    1402214211                        };
     
    1504615235                        this.messageElement = document.createElement("h2");
    1504715236                        this.messageElement.id = NOTIFIER_MESSAGE_ID;
    15048                         if (this.notifyElement) {
    15049                             if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement);
    15050                             else this.notifyElement.appendChild(this.messageElement);
    15051                         } else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`);
    15052                     }
    15053                     if (message.length > 0) {
    15054                         if (this.messageElement) {
    15055                             const problem = messageOptions?.problem;
    15056                             this.messageElement.innerHTML = (problem ? "&#x2639; " : "") + message;
    15057                         } else this.options.logger.warn("There is no message element for displaying a message");
    15058                     } else this.options.logger.warn("Not going to update notifierMessage element because message is empty");
     15237                        if (this.notifyElement) if (this.explanationElement) this.notifyElement.insertBefore(this.messageElement, this.explanationElement);
     15238                        else this.notifyElement.appendChild(this.messageElement);
     15239                        else this.options.logger.warn(`Unable to show message ${message} because notifyElement is empty`);
     15240                    }
     15241                    if (message.length > 0) if (this.messageElement) {
     15242                        const problem = messageOptions?.problem;
     15243                        this.messageElement.innerHTML = (problem ? "&#x2639; " : "") + message;
     15244                    } else this.options.logger.warn("There is no message element for displaying a message");
     15245                    else this.options.logger.warn("Not going to update notifierMessage element because message is empty");
    1505915246                    hidden_default()(this.messageElement, false);
    1506015247                }
     
    1534415531                fakeUaString: void 0,
    1534515532                versions: {
    15346                     ninjaFormPlugin: void 0
     15533                    videomailNinjaFormPlugin: void 0
    1534715534                }
    1534815535            };
     
    1562415811                    try {
    1562515812                        const videoTrack = media_getFirstVideoTrack(localMediaStream);
    15626                         if (videoTrack) {
    15627                             if (videoTrack.enabled) {
    15628                                 let description = "";
    15629                                 if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label);
    15630                                 description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`);
    15631                                 this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`);
    15632                             } else throw error_createError({
    15633                                 message: "Webcam is disabled",
    15634                                 explanation: "The video track seems to be disabled. Enable it in your system.",
    15635                                 options: this.options
    15636                             });
    15637                         } else this.options.logger.debug("UserMedia: detected (but no video tracks exist");
     15813                        if (videoTrack) if (videoTrack.enabled) {
     15814                            let description = "";
     15815                            if (videoTrack.label && videoTrack.label.length > 0) description = description.concat(videoTrack.label);
     15816                            description = description.concat(` with enabled=${videoTrack.enabled}, muted=${videoTrack.muted}, readyState=${videoTrack.readyState}`);
     15817                            this.options.logger.debug(`UserMedia: ${videoTrack.kind} detected. ${description}`);
     15818                        } else throw error_createError({
     15819                            message: "Webcam is disabled",
     15820                            explanation: "The video track seems to be disabled. Enable it in your system.",
     15821                            options: this.options
     15822                        });
     15823                        else this.options.logger.debug("UserMedia: detected (but no video tracks exist");
    1563815824                        this.rawVisualUserMedia?.addEventListener("loadedmetadata", onLoadedMetaData);
    1563915825                        this.rawVisualUserMedia?.addEventListener("play", onPlay);
     
    1588116067                }
    1588216068                writeStream(buffer, opts) {
    15883                     if (this.stream) {
    15884                         if (this.stream.destroyed) {
    15885                             this.stopPings();
     16069                    if (this.stream) if (this.stream.destroyed) {
     16070                        this.stopPings();
     16071                        const err = error_createError({
     16072                            message: "Already disconnected",
     16073                            explanation: "Sorry, connection to the server has been destroyed. Please reload.",
     16074                            options: this.options
     16075                        });
     16076                        this.emit("ERROR", {
     16077                            err
     16078                        });
     16079                    } else {
     16080                        const onFlushedCallback = opts?.onFlushedCallback;
     16081                        try {
     16082                            this.stream.write(buffer, ()=>{
     16083                                if (!onFlushedCallback) return;
     16084                                try {
     16085                                    onFlushedCallback(opts);
     16086                                } catch (exc) {
     16087                                    const err = error_createError({
     16088                                        message: "Failed to write stream buffer",
     16089                                        explanation: `stream.write() failed because of ${pretty(exc)}`,
     16090                                        options: this.options,
     16091                                        exc
     16092                                    });
     16093                                    this.emit("ERROR", {
     16094                                        err
     16095                                    });
     16096                                }
     16097                            });
     16098                        } catch (exc) {
    1588616099                            const err = error_createError({
    15887                                 message: "Already disconnected",
    15888                                 explanation: "Sorry, connection to the server has been destroyed. Please reload.",
    15889                                 options: this.options
     16100                                message: "Failed writing to server",
     16101                                explanation: `stream.write() failed because of ${pretty(exc)}`,
     16102                                options: this.options,
     16103                                exc
    1589016104                            });
    1589116105                            this.emit("ERROR", {
    1589216106                                err
    1589316107                            });
    15894                         } else {
    15895                             const onFlushedCallback = opts?.onFlushedCallback;
    15896                             try {
    15897                                 this.stream.write(buffer, ()=>{
    15898                                     if (!onFlushedCallback) return;
    15899                                     try {
    15900                                         onFlushedCallback(opts);
    15901                                     } catch (exc) {
    15902                                         const err = error_createError({
    15903                                             message: "Failed to write stream buffer",
    15904                                             explanation: `stream.write() failed because of ${pretty(exc)}`,
    15905                                             options: this.options,
    15906                                             exc
    15907                                         });
    15908                                         this.emit("ERROR", {
    15909                                             err
    15910                                         });
    15911                                     }
    15912                                 });
    15913                             } catch (exc) {
    15914                                 const err = error_createError({
    15915                                     message: "Failed writing to server",
    15916                                     explanation: `stream.write() failed because of ${pretty(exc)}`,
    15917                                     options: this.options,
    15918                                     exc
    15919                                 });
    15920                                 this.emit("ERROR", {
    15921                                     err
    15922                                 });
    15923                             }
    1592416108                        }
    1592516109                    }
     
    1625016434                            case "ready":
    1625116435                                this.emit("SERVER_READY");
    16252                                 if (!this.userMediaTimeout) {
    16253                                     if (this.options.loadUserMediaOnRecord) this.show();
    16254                                     else this.loadUserMedia();
    16255                                 }
     16436                                if (!this.userMediaTimeout) if (this.options.loadUserMediaOnRecord) this.show();
     16437                                else this.loadUserMedia();
    1625616438                                break;
    1625716439                            case "preview":
     
    1691817100                    const tracks = this.replayElement.getElementsByTagName("track");
    1691917101                    const firstTrack = tracks[0];
    16920                     if (firstTrack) {
    16921                         if (src) firstTrack.setAttribute("src", src);
    16922                         else this.replayElement.removeChild(firstTrack);
    16923                     } else {
     17102                    if (firstTrack) if (src) firstTrack.setAttribute("src", src);
     17103                    else this.replayElement.removeChild(firstTrack);
     17104                    else {
    1692417105                        const track = document.createElement("track");
    1692517106                        track.setAttribute("src", src);
     
    1693617117                    let url = src;
    1693717118                    if (url && bustCache) url += `?${Date.now()}`;
    16938                     if (source) {
    16939                         if (src) source.setAttribute("src", src);
    16940                         else this.replayElement.removeChild(source);
    16941                     } else if (src) {
     17119                    if (source) if (src) source.setAttribute("src", src);
     17120                    else this.replayElement.removeChild(source);
     17121                    else if (src) {
    1694217122                        const { fps } = this.options.video;
    1694317123                        const t = 1 / fps * 2;
     
    1708217262                    if (parentElement) this.visualsElement = parentElement.querySelector(`.${this.options.selectors.visualsClass}`);
    1708317263                    else this.visualsElement = this.container.querySelector(`.${this.options.selectors.visualsClass}`);
    17084                     if (!this.visualsElement) {
    17085                         if (playerOnly && parentElement) this.visualsElement = parentElement;
    17086                         else {
    17087                             this.visualsElement = document.createElement("div");
    17088                             this.visualsElement.classList.add(this.options.selectors.visualsClass);
    17089                             const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`);
    17090                             if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement);
    17091                             else this.container.appendChild(this.visualsElement);
    17092                         }
     17264                    if (!this.visualsElement) if (playerOnly && parentElement) this.visualsElement = parentElement;
     17265                    else {
     17266                        this.visualsElement = document.createElement("div");
     17267                        this.visualsElement.classList.add(this.options.selectors.visualsClass);
     17268                        const buttonsElement = this.container.querySelector(`.${this.options.selectors.buttonsClass}`);
     17269                        if (buttonsElement && !this.container.isOutsideElementOf(buttonsElement)) this.container.insertBefore(this.visualsElement, buttonsElement);
     17270                        else this.container.appendChild(this.visualsElement);
    1709317271                    }
    1709417272                    this.visualsElement.classList.add("visuals");
     
    1720417382                }
    1720517383                show(params) {
    17206                     if (!params?.playerOnly) {
    17207                         if (this.isReplayShown()) {
    17208                             if (params?.goBack) this.recorder.show();
    17209                         } else this.recorder.build();
    17210                     }
     17384                    if (!params?.playerOnly) if (this.isReplayShown()) {
     17385                        if (params?.goBack) this.recorder.show();
     17386                    } else this.recorder.build();
    1721117387                    this.showVisuals();
    1721217388                }
     
    1728917465            var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
    1729017466            var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
    17291             var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[9].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[9].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[9].use[3]!./src/styles/main.styl");
     17467            var main = __webpack_require__("../../node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[11].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[11].use[2]!../../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[11].use[3]!./src/styles/main.styl");
    1729217468            var main_options = {};
    1729317469            main_options.styleTagTransform = styleTagTransform_default();
     
    1738117557                    if (params.err?.stack) this.options.logger.error(params.err.stack);
    1738217558                    else if (params.err?.message) this.options.logger.error(params.err.message);
    17383                     else if (params.exc) {
    17384                         if (params.exc instanceof Error) {
    17385                             if (params.exc.stack) this.options.logger.error(params.exc.stack);
    17386                             else if (params.exc.message) this.options.logger.error(params.exc.message);
    17387                         } else this.options.logger.error(params.exc);
    17388                     }
     17559                    else if (params.exc) if (params.exc instanceof Error) {
     17560                        if (params.exc.stack) this.options.logger.error(params.exc.stack);
     17561                        else if (params.exc.message) this.options.logger.error(params.exc.message);
     17562                    } else this.options.logger.error(params.exc);
    1738917563                    if (this.options.displayErrors && params.err) this.visuals.error(params.err);
    1739017564                    else this.visuals.reset();
     
    1740017574                    });
    1740117575                    if (!playerOnly) this.visibility.onChange((visible)=>{
    17402                         if (this.built) {
    17403                             if (visible) {
    17404                                 if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume();
    17405                                 this.emit("VISIBLE");
    17406                             } else {
    17407                                 if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause();
    17408                                 this.emit("INVISIBLE");
    17409                             }
     17576                        if (this.built) if (visible) {
     17577                            if (isAutoPauseEnabled(this.options) && this.isCountingDown()) this.resume();
     17578                            this.emit("VISIBLE");
     17579                        } else {
     17580                            if (isAutoPauseEnabled(this.options) && (this.isCountingDown() || this.isRecording())) this.pause();
     17581                            this.emit("INVISIBLE");
    1741017582                        }
    1741117583                    });
     
    1764017812                                const hasBcc = recipients.bcc && recipients.bcc.length > 0;
    1764117813                                if (toIsConfigured) {
    17642                                     if (!hasTo) {
    17643                                         if (ccIsConfigured && bccIsConfigured) {
    17644                                             if (!hasCc && !hasBcc) valid = false;
    17645                                         } else if (ccIsConfigured) {
    17646                                             if (!hasCc) valid = false;
    17647                                         } else if (bccIsConfigured) {
    17648                                             if (!hasBcc) valid = false;
    17649                                         } else valid = false;
    17650                                     }
     17814                                    if (!hasTo) if (ccIsConfigured && bccIsConfigured) {
     17815                                        if (!hasCc && !hasBcc) valid = false;
     17816                                    } else if (ccIsConfigured) {
     17817                                        if (!hasCc) valid = false;
     17818                                    } else if (bccIsConfigured) {
     17819                                        if (!hasBcc) valid = false;
     17820                                    } else valid = false;
    1765117821                                } else if (ccIsConfigured) {
    1765217822                                    if (!hasCc) {
     
    1780217972                debug(...args) {
    1780317973                    const output = this.lifo("debug", args);
    17804                     if (this.options.verbose) {
    17805                         if (this.browser.isFirefox()) this.logger.debug(output);
    17806                         else if (this.logger.groupCollapsed) {
    17807                             this.logger.groupCollapsed(output);
    17808                             this.logger.trace("Trace");
    17809                             this.logger.groupEnd();
    17810                         } else if (this.logger.debug) this.logger.debug(output);
    17811                         else console.log(output);
    17812                     }
     17974                    if (this.options.verbose) if (this.browser.isFirefox()) this.logger.debug(output);
     17975                    else if (this.logger.groupCollapsed) {
     17976                        this.logger.groupCollapsed(output);
     17977                        this.logger.trace("Trace");
     17978                        this.logger.groupEnd();
     17979                    } else if (this.logger.debug) this.logger.debug(output);
     17980                    else console.log(output);
    1781317981                }
    1781417982                error(...args) {
  • videomail-for-ninja-forms/trunk/target/php/videomail.php

    r3257516 r3269283  
    33
    44  const NAME = 'Videomail';
    5   const VERSION = '7.0.7';
     5  const VERSION = '7.0.8';
    66  const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
    77  const SLUG = 'videomail';
  • videomail-for-ninja-forms/trunk/videomail-for-ninja-forms.php

    r3257516 r3269283  
    44Plugin URI: https://github.com/binarykitchen/videomail-for-ninja-forms
    55Description: Express yourself in more than just words. Record and send a short video from your webcam.
    6 Version: 7.0.7
     6Version: 7.0.8
    77Author: Michael Heuberger + Kyle B. Johnson
    88Author URI: https://videomail.io
Note: See TracChangeset for help on using the changeset viewer.