Plugin Directory

Changeset 3388250


Ignore:
Timestamp:
11/02/2025 05:49:02 AM (5 months ago)
Author:
michael.heuberger
Message:

Update to version 9.0.1 from GitHub

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

Legend:

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

    r3381582 r3388250  
    11=== Videomail for Ninja Forms ===
    2 
    32Contributors: michael.heuberger, kbjohnson90
    43Tags: video, email, recorder, sign language
    5 
    64Requires at least: 6.0
    75Tested up to: 6.8.2
    8 Stable tag: 9.0.0
     6Stable tag: 9.0.1
    97Requires PHP: 8.1.0
    108Donate link: https://videomail.io/faq
    119License: CC0-1.0
    1210
    13 Record videos in Ninja Forms!
     11Record videos with audio or in Sign Language with Ninja Forms!
    1412
    1513== Description ==
     14
    1615With this add-on recording and sending videos in WordPress *finally* comes true. No further coding required. Just install + configure a bit (like duration, width or enable audio etc) and that’s all. Wicked.
    1716
     
    7170
    7271== Changelog ==
     72
     73= 9.0.1 (2 Nov 2025) =
     74**Improvement**
     75* More user friendlier error messages for missing inputs
     76
     77**Change:**
     78* Include recording location which will assist investigating technical issues
     79
     80**Fix**
     81* Rename wrong option name from ninjaFormPlugin to videomailNinjaFormPlugin
     82
     83**Chore**
     84* Upgrade VC dependency
     85
    7386= 9.0.0 (21 Oct 2025) =
    7487**Change:**
  • videomail-for-ninja-forms/tags/9.0.1/target/js/main-min.js

    r3381582 r3388250  
    1 let PLUGIN_VERSION="9.0.0",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4wXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgbmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwibmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0wsV0FBYUEsRUFJbEJLLEtBQUtK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
     1let PLUGIN_VERSION="9.0.1",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{videomailNinjaFormPlugin: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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4xXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgdmlkZW9tYWlsTmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwidmlkZW9tYWlsTmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0ws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
  • videomail-for-ninja-forms/tags/9.0.1/target/js/videomail-client/index-min.js

    r3381582 r3388250  
    66})(globalThis, ()=>(()=>{
    77        var __webpack_modules__ = {
    8             "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
     8            "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
    99                "use strict";
    1010                __webpack_require__.d(__webpack_exports__, {
     
    1067110671            var client_default = /*#__PURE__*/ __webpack_require__.n(client);
    1067210672            var package_namespaceObject = {
    10673                 rE: "13.0.0"
     10673                rE: "13.2.0"
    1067410674            };
    1067510675            var defined = __webpack_require__("./node_modules/defined/index.js");
     
    1394813948            }
    1394913949            const util_pretty = pretty;
    13950             class HTTPVideomailError_HTTPVideomailError extends Error {
     13950            class HTTPVideomailError extends Error {
    1395113951                code;
    1395213952                status;
    1395313953                explanation;
    1395413954            }
    13955             const HTTPVideomailError = HTTPVideomailError_HTTPVideomailError;
    13956             class VideomailError extends HTTPVideomailError {
     13955            const error_HTTPVideomailError = HTTPVideomailError;
     13956            class VideomailError extends error_HTTPVideomailError {
    1395713957                title = "Error from videomail-client npm package";
    1395813958                location = window.location.href;
     
    1431714317            }
    1431814318            const util_Despot = Despot;
     14319            function getValidity(element) {
     14320                const validity = "validity" in element ? element.validity : void 0;
     14321                return validity;
     14322            }
     14323            const util_getValidity = getValidity;
    1431914324            function hideElement(element) {
    1432014325                if (!element) return;
     
    1440614411                        const name = formControl.getAttribute("name");
    1440714412                        if (name) {
    14408                             const value = videomail[name];
     14413                            let value = videomail[name];
    1440914414                            const tagName = formControl.tagName;
     14415                            if (this.options.callbacks.adjustFormValueBeforePopulating) value = this.options.callbacks.adjustFormValueBeforePopulating(name, value, videomail);
    1441014416                            switch(tagName){
    1441114417                                case "INPUT":
     
    1457314579                    const elements = this.getRegisteredFormElements();
    1457414580                    for (const element of elements){
    14575                         const validity = "validity" in element ? element.validity : void 0;
     14581                        const validity = util_getValidity(element);
    1457614582                        if (!validity?.valid) return element;
    1457714583                    }
     
    1459614602                        const message = body.error.message;
    1459714603                        const cause = body.error.cause;
    14598                         const error = new HTTPVideomailError(message, {
     14604                        const error = new error_HTTPVideomailError(message, {
    1459914605                            cause
    1460014606                        });
     
    1470514711                    const newVideomail = this.applyDefaultValues(videomail);
    1470614712                    newVideomail[constants.VERSION_LABEL] = package_namespaceObject.rE;
     14713                    newVideomail.recordLocation = window.location.href;
    1470714714                    try {
    1470814715                        let res;
     
    1485914866                loadUserMediaOnRecord: false,
    1486014867                callbacks: {
    14861                     adjustFormDataBeforePosting: void 0
     14868                    adjustFormDataBeforePosting: void 0,
     14869                    adjustFormValueBeforePopulating: void 0
    1486214870                },
    1486314871                defaults: {
     
    1492414932            }
    1492514933            const util_isTest = isTest;
    14926             function mergeWithDefaultOptions_mergeWithDefaultOptions(options = {}) {
     14934            function mergeWithDefaultOptions(options = {}) {
    1492714935                const newOptions = cjs_default()(src_options, options, {
    1492814936                    arrayMerge (_destination, source) {
     
    1493514943                return newOptions;
    1493614944            }
    14937             const mergeWithDefaultOptions = mergeWithDefaultOptions_mergeWithDefaultOptions;
     14945            const options_mergeWithDefaultOptions = mergeWithDefaultOptions;
    1493814946            var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js");
    1493914947            var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag);
     
    1494814956            var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
    1494914957            var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
    14950             var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");
     14958            var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl");
    1495114959            var main_options = {};
    1495214960            main_options.styleTagTransform = styleTagTransform_default();
     
    1496914977            }
    1497014978            const dimensions_limitHeight = limitHeight;
    14971             function getOuterWidth_getOuterWidth(element) {
     14979            function getOuterWidth(element) {
    1497214980                let rect = element.getBoundingClientRect();
    1497314981                let outerWidth = rect.right - rect.left;
     
    1497814986                return outerWidth;
    1497914987            }
    14980             const getOuterWidth = getOuterWidth_getOuterWidth;
     14988            const dimensions_getOuterWidth = getOuterWidth;
    1498114989            function limitWidth(element, options, width) {
    1498214990                let limitedWidth;
    14983                 const outerWidth = getOuterWidth(element);
     14991                const outerWidth = dimensions_getOuterWidth(element);
    1498414992                limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth;
    1498514993                if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({
     
    1541415422            }
    1541515423            const buttons = Buttons;
    15416             function isHidden_isHidden(element) {
     15424            function isHidden(element) {
    1541715425                if (!element) return true;
    1541815426                const display = element.style.getPropertyValue("display");
    1541915427                return display.includes("none");
    1542015428            }
    15421             const isHidden = isHidden_isHidden;
     15429            const html_isHidden = isHidden;
    1542215430            class Countdown {
    1542315431                visuals;
     
    1601916027                isVisible() {
    1602016028                    if (!this.built) return false;
    16021                     return this.notifyElement && !isHidden(this.notifyElement);
     16029                    return this.notifyElement && !html_isHidden(this.notifyElement);
    1602216030                }
    1602316031                isBuilt() {
     
    1613616144            }
    1613716145            const dimensions_figureMinHeight = figureMinHeight;
    16138             function getRatio_getRatio(options, videoHeight, videoWidth) {
     16146            function getRatio(options, videoHeight, videoWidth) {
    1613916147                let ratio = 1;
    1614016148                const hasVideoDimensions = videoHeight && videoWidth;
     
    1614616154                return ratio;
    1614716155            }
    16148             const getRatio = getRatio_getRatio;
     16156            const dimensions_getRatio = getRatio;
    1614916157            function calculateHeight(responsive, videoWidth, options, target, ratio, element) {
    1615016158                let width = videoWidth;
     
    1615416162                });
    1615516163                if (responsive && element) width = dimensions_limitWidth(element, options, width);
    16156                 const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);
     16164                const chosenRatio = ratio ?? dimensions_getRatio(options, void 0, videoWidth);
    1615716165                const height = Math.round(width * chosenRatio);
    1615816166                if (Number.isInteger(height) && height < 1) throw error_createError({
     
    1617016178                    options
    1617116179                });
    16172                 const chosenRatio = ratio ?? getRatio(options, videoHeight);
     16180                const chosenRatio = ratio ?? dimensions_getRatio(options, videoHeight);
    1617316181                const calculatedWidth = Math.round(height / chosenRatio);
    1617416182                if (calculatedWidth < 1) throw error_createError({
     
    1619616204                return window.AudioContext;
    1619716205            }
    16198             class AudioRecorder_AudioRecorder {
     16206            class AudioRecorder {
    1619916207                scriptProcessor;
    1620016208                audioInput;
     
    1627616284                }
    1627716285            }
    16278             const AudioRecorder = AudioRecorder_AudioRecorder;
     16286            const media_AudioRecorder = AudioRecorder;
    1627916287            function getFirstVideoTrack(localMediaStream) {
    1628016288                const videoTracks = localMediaStream.getVideoTracks();
     
    1637616384                    this.onLoadedMetaDataReached = false;
    1637716385                    this.playingPromiseReached = false;
    16378                     if (isAudioEnabled(this.options)) this.audioRecorder ??= new AudioRecorder(this, this.options);
     16386                    if (isAudioEnabled(this.options)) this.audioRecorder ??= new media_AudioRecorder(this, this.options);
    1637916387                    const unloadAllEventListeners = ()=>{
    1638016388                        this.options.logger.debug("UserMedia: unloadAllEventListeners()");
     
    1708017088                }
    1708117089                isHidden() {
    17082                     return !this.recorderElement || isHidden(this.recorderElement);
     17090                    return !this.recorderElement || html_isHidden(this.recorderElement);
    1708317091                }
    1708417092                writeCommand(command, args, cb) {
     
    1749617504                        if (!userMediaVideoWidth || userMediaVideoWidth < 1) ratio = this.visuals.getRatio();
    1749717505                        else if (userMediaVideoHeight) ratio = userMediaVideoHeight / userMediaVideoWidth;
    17498                     } else ratio = getRatio(this.options);
     17506                    } else ratio = dimensions_getRatio(this.options);
    1749917507                    return ratio;
    1750017508                }
     
    1777117779                isShown() {
    1777217780                    if (!this.replayElement) return false;
    17773                     return !isHidden(this.replayElement) && !this.visuals.isHidden();
     17781                    return !html_isHidden(this.replayElement) && !this.visuals.isHidden();
    1777417782                }
    1777517783                getVisuals() {
     
    1798217990                isHidden() {
    1798317991                    if (!this.built) return true;
    17984                     return isHidden(this.visualsElement);
     17992                    return html_isHidden(this.visualsElement);
    1798517993                }
    1798617994                showVisuals() {
     
    1812218130                getFormElement() {
    1812318131                    let formElement;
    18124                     if (this.containerElement && "FORM" === this.containerElement.tagName) formElement = this.containerElement;
     18132                    if (this.containerElement?.tagName === "FORM") formElement = this.containerElement;
    1812518133                    else if (this.options.selectors.formId) {
    1812618134                        formElement = document.querySelector(`#${this.options.selectors.formId}`);
     
    1837518383                            if (invalidInput) {
    1837618384                                const name = invalidInput.getAttribute("name");
     18385                                const validity = util_getValidity(invalidInput);
    1837718386                                valid = false;
    18378                                 if (name) {
     18387                                if (name) if (validity?.valueMissing) whyInvalid = `Please fill out field "${name}" ⚠️`;
     18388                                else {
    1837918389                                    whyInvalid = `Input "${name}" seems wrong 🤔`;
    1838018390                                    invalidData = {
     
    1854718557                static ENC_TYPE_FORM = constants["public"].ENC_TYPE_FORM;
    1854818558                constructor(options = {}){
    18549                     super("VideomailClient", mergeWithDefaultOptions(options));
     18559                    super("VideomailClient", options_mergeWithDefaultOptions(options));
    1855018560                    this.validateOptions();
    1855118561                    util_Despot.removeAllListeners();
  • videomail-for-ninja-forms/tags/9.0.1/target/php/videomail.php

    r3381582 r3388250  
    33
    44  const NAME = 'Videomail';
    5   const VERSION = '9.0.0';
     5  const VERSION = '9.0.1';
    66  const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
    77  const SLUG = 'videomail';
  • videomail-for-ninja-forms/tags/9.0.1/videomail-for-ninja-forms.php

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

    r3381582 r3388250  
    11=== Videomail for Ninja Forms ===
    2 
    32Contributors: michael.heuberger, kbjohnson90
    43Tags: video, email, recorder, sign language
    5 
    64Requires at least: 6.0
    75Tested up to: 6.8.2
    8 Stable tag: 9.0.0
     6Stable tag: 9.0.1
    97Requires PHP: 8.1.0
    108Donate link: https://videomail.io/faq
    119License: CC0-1.0
    1210
    13 Record videos in Ninja Forms!
     11Record videos with audio or in Sign Language with Ninja Forms!
    1412
    1513== Description ==
     14
    1615With this add-on recording and sending videos in WordPress *finally* comes true. No further coding required. Just install + configure a bit (like duration, width or enable audio etc) and that’s all. Wicked.
    1716
     
    7170
    7271== Changelog ==
     72
     73= 9.0.1 (2 Nov 2025) =
     74**Improvement**
     75* More user friendlier error messages for missing inputs
     76
     77**Change:**
     78* Include recording location which will assist investigating technical issues
     79
     80**Fix**
     81* Rename wrong option name from ninjaFormPlugin to videomailNinjaFormPlugin
     82
     83**Chore**
     84* Upgrade VC dependency
     85
    7386= 9.0.0 (21 Oct 2025) =
    7487**Change:**
  • videomail-for-ninja-forms/trunk/target/js/main-min.js

    r3381582 r3388250  
    1 let PLUGIN_VERSION="9.0.0",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4wXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgbmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwibmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0wsV0FBYUEsRUFJbEJLLEtBQUtK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
     1let PLUGIN_VERSION="9.0.1",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"),disableFormWhenSubmitting:this.fieldModel.get("disable_form_when_submitting"),enableAutoValidation:!1,enableAutoSubmission:!1,verbose:i,versions:{videomailNinjaFormPlugin: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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1taW4uanMiLCJzb3VyY2VzIjpbIm1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVtZW1iZXIsIHlvdSBjYW4ndCB1c2UgYW55IGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHMgaGVyZVxuY29uc3QgUExVR0lOX1ZFUlNJT04gPSBcIjkuMC4xXCI7XG5cbi8vIG1hbnVhbCBzd2l0Y2ggdG8gaGF2ZSBtb3JlIHN0dWZmIHByaW50ZWQgdG8gY29uc29sZVxubGV0IERFQlVHID0gZmFsc2U7XG5cbi8vIGdvb2QgZG9jdW1lbnRhdGlvbiBvbiBiYWNrYm9uZSBldmVudCBoYW5kbGluZ1xuLy8gaHR0cDovL2JhY2tib25lanMub3JnLyNFdmVudHNcblxuY29uc3QgVmlkZW9tYWlsRmllbGRDb250cm9sbGVyID0gTWFyaW9uZXR0ZS5PYmplY3QuZXh0ZW5kKHtcbiAgdmlkZW9tYWlsQ2xpZW50OiBudWxsLFxuXG4gIGZpZWxkTW9kZWw6IG51bGwsXG5cbiAgY2hhbm5lbDogQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcInZpZGVvbWFpbFwiKSxcblxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgQmFja2JvbmUuUmFkaW8uREVCVUcgPSBERUJVRztcblxuICAgIHRoaXMubGlzdGVuVG9PbmNlKHRoaXMuY2hhbm5lbCwgXCJpbml0Om1vZGVsXCIsIHRoaXMucmVnaXN0ZXJWaWRlb21haWxGaWVsZCk7XG4gICAgdGhpcy5saXN0ZW5Ub09uY2UodGhpcy5jaGFubmVsLCBcImF0dGFjaDp2aWV3XCIsIHRoaXMubG9hZFZpZGVvbWFpbENsaWVudCk7XG5cbiAgICAvLyB1Z2x5IHdvcmthcm91bmQgdG8gbWFrZSBpdCB3b3JrIHdpdGggdGhlIGNvbmRpdGlvbmFsIHBsdWdpblxuICAgIHRoaXMubGlzdGVuVG8odGhpcy5jaGFubmVsLCBcImFsbFwiLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICBERUJVRyAmJiBjb25zb2xlLmxvZyhcIlZpZGVvbWFpbCBjaGFubmVsIGV2ZW50IHRyaWdnZXJlZDpcIiwgZXZlbnROYW1lKTtcblxuICAgICAgLy8gbXVzdCBiZSBjb21pbmcgYmFjayBmcm9tIGEgbXVsdGktc3RlcCB3aGVyZVxuICAgICAgLy8gdmlkZW9tYWlsIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuIHNvIGp1c3QgcmVzdW1lIGl0LlxuICAgICAgdGhpcy5saXN0ZW5UbyhuZlJhZGlvLmNoYW5uZWwoXCJuZk1QXCIpLCBcImNoYW5nZTpwYXJ0XCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgREVCVUcgJiYgY29uc29sZS5sb2coXCJuZk1QIGNoYW5uZWwgZXZlbnQgdHJpZ2dlcmVkOlwiLCBcImNoYW5nZTpwYXJ0XCIpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbHMgPVxuICAgICAgICAgIHBhcmFtcy5jdXJyZW50RWxlbWVudD8uYXR0cmlidXRlcz8uZm9ybUNvbnRlbnREYXRhPy5tb2RlbHMgfHwgW107XG5cbiAgICAgICAgY29uc3QgY3VycmVudENpZCA9IHRoaXMuZmllbGRNb2RlbC5jaWQ7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gY3VycmVudE1vZGVscy5maW5kKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIHJldHVybiBtb2RlbC5jaWQgPT09IGN1cnJlbnRDaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9kZWwpIHtcbiAgICAgICAgICB0aGlzLmxvYWRWaWRlb21haWxDbGllbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZGVvbWFpbENsaWVudC51bmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZ2V0Rm9ybUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJmb3JtSURcIik7XG4gIH0sXG5cbiAgcmVnaXN0ZXJWaWRlb21haWxGaWVsZDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwgPSBmaWVsZE1vZGVsO1xuXG4gICAgLy8gY3VzdG9tIGZpZWxkIHZhbGlkYXRpb24sIHNpbmNlIHdlIGFyZW4ndCB1c2luZyBhIHN0YW5kYXJkIGB2YWx1ZWBcbiAgICAvLyBmb3IgdGhlIHZpZGVvbWFpbCBpbnB1dFxuICAgIHRoaXMuY2hhbm5lbC5yZXBseShcInZhbGlkYXRlOnJlcXVpcmVkXCIsIHRoaXMudmFsaWRhdGVSZXF1aXJlZCwgdGhpcyk7XG5cbiAgICB0aGlzLmNoYW5uZWwucmVwbHkoXCJ2YWxpZGF0ZTptb2RlbERhdGFcIiwgdGhpcy52YWxpZGF0ZVZpZGVvbWFpbCwgdGhpcyk7XG5cbiAgICAvLyBjb250cm9sIHN1Ym1pc3Npb24gcHJvZ3Jlc3MsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gUE9TVCB0byB0aGUgVmlkZW9tYWlsIHNlcnZlciBmaXJzdFxuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgdGhpcy5nZXRGb3JtSWQoKSkucmVwbHkoXG4gICAgICBcIm1heWJlOnN1Ym1pdFwiLFxuICAgICAgdGhpcy5tYXliZVN1Ym1pdCxcbiAgICAgIHRoaXMsXG4gICAgICBmaWVsZE1vZGVsLFxuICAgICk7XG4gIH0sXG5cbiAgbG9hZFZpZGVvbWFpbENsaWVudDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gdGhpcy5maWVsZE1vZGVsLmdldChcImltYWdlX3F1YWxpdHlcIikgfHwgNDA7XG5cbiAgICBpZiAoaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSA9IDEwMDtcbiAgICB9IGVsc2UgaWYgKGltYWdlUXVhbGl0eVBlcmNlbnRhZ2UgPCAxKSB7XG4gICAgICBpbWFnZVF1YWxpdHlQZXJjZW50YWdlID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJib3NlID0gdGhpcy5maWVsZE1vZGVsLmdldChcInZlcmJvc2VcIikgfHwgREVCVUc7XG5cbiAgICAvLyBsYXRlIG92ZXJyaWRlc1xuICAgIERFQlVHID0gREVCVUcgfHwgdmVyYm9zZTtcbiAgICBCYWNrYm9uZS5SYWRpby5ERUJVRyA9IEJhY2tib25lLlJhZGlvLkRFQlVHIHx8IHZlcmJvc2U7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudCA9IG5ldyBWaWRlb21haWxDbGllbnQuVmlkZW9tYWlsQ2xpZW50KHtcbiAgICAgIHNpdGVOYW1lOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwic2l0ZV9uYW1lXCIpLFxuICAgICAgdmlkZW86IHtcbiAgICAgICAgbGltaXRTZWNvbmRzOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwibGltaXRfc2Vjb25kc1wiKSB8fCA5MCxcbiAgICAgICAgd2lkdGg6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJ3aWR0aFwiKSB8fCAzMjAsXG4gICAgICAgIC8vIFRPRE8gSW1wbGVtZW50IG9uIFZDIHNpZGVcbiAgICAgICAgc3RyZXRjaDogdGhpcy5maWVsZE1vZGVsLmdldChcInN0cmV0Y2hcIikgfHwgZmFsc2UsXG4gICAgICAgIGNvdW50ZG93bjogdGhpcy5maWVsZE1vZGVsLmdldChcImNvdW50ZG93blwiKSB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhdWRpbzogeyBlbmFibGVkOiB0aGlzLmZpZWxkTW9kZWwuZ2V0KFwiYXVkaW9fZW5hYmxlZFwiKSB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgcXVhbGl0eTogaW1hZ2VRdWFsaXR5UGVyY2VudGFnZSAvIDEwMCwgLy8gbXVzdCBiZSBhIGZsb2F0XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3JzOiB7IGNvbnRhaW5lcklkOiBcInZpZGVvbWFpbFwiLCBzdWJtaXRCdXR0b25TZWxlY3RvcjogXCIuc3VibWl0LXdyYXAgaW5wdXRcIiB9LFxuICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgIGFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZzpcbiAgICAgICAgICB0aGlzLmFkanVzdEZvcm1EYXRhQmVmb3JlUG9zdGluZ1RvVmlkZW9tYWlsU2VydmVyLmJpbmQodGhpcyksXG4gICAgICB9LFxuXG4gICAgICAvLyB3aGVuIHRydWUsIHVzZXIgbWVkaWEgaXMgbG9hZGVkIG9ubHkgd2hlbiByZWNvcmQgYnV0dG9uIGlzIHByZXNzZWRcbiAgICAgIGxvYWRVc2VyTWVkaWFPblJlY29yZDogdGhpcy5maWVsZE1vZGVsLmdldChcImxvYWRfdXNlcl9tZWRpYV9vbl9yZWNvcmRcIiksXG5cbiAgICAgIGRpc2FibGVGb3JtV2hlblN1Ym1pdHRpbmc6IHRoaXMuZmllbGRNb2RlbC5nZXQoXCJkaXNhYmxlX2Zvcm1fd2hlbl9zdWJtaXR0aW5nXCIpLFxuXG4gICAgICAvLyBsZWF2ZSBpdCB0byBuaW5qYSBmb3JtIHRvIHZhbGlkYXRlIHRoZSBpbnB1dHNcbiAgICAgIGVuYWJsZUF1dG9WYWxpZGF0aW9uOiBmYWxzZSxcblxuICAgICAgLy8gbGVhdmUgaXQgdG8gbmluamEgZm9ybSB0byBkZWFsIHdpdGggZm9ybSBzdWJtaXNzaW9uc1xuICAgICAgZW5hYmxlQXV0b1N1Ym1pc3Npb246IGZhbHNlLFxuXG4gICAgICAvLyBsb2cgYWN0aW9ucy9ldmVudHMgdG8gY29uc29sZVxuICAgICAgdmVyYm9zZSxcblxuICAgICAgdmVyc2lvbnM6IHsgdmlkZW9tYWlsTmluamFGb3JtUGx1Z2luOiBQTFVHSU5fVkVSU0lPTiB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJQUkVWSUVXXCIsIHRoaXMub25QcmV2aWV3LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmlkZW9tYWlsQ2xpZW50Lm9uKFwiU1VCTUlUVEVEXCIsIHRoaXMub25TdWJtaXR0ZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQub24oXCJHT0lOR19CQUNLXCIsIHRoaXMub25Hb2luZ0JhY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLnZpZGVvbWFpbENsaWVudC5zaG93KCk7XG4gIH0sXG5cbiAgLy8gbmVlZGVkIHRvIGdldCB0aGUgdmlkZW9tYWlsIGtleSB3aGljaCBpcyByZXF1aXJlZCBiZWZvcmVcbiAgLy8gc3VibWl0dGluZyB0byB0aGUgdmlkZW9tYWlsIHNlcnZlclxuICBvblByZXZpZXc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBrZXkpO1xuICAgIHRoaXMuZmllbGRNb2RlbC5zZXQoXCJ2YWx1ZVwiLCBrZXkpO1xuXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKVxuICAgICAgLy8gY2xlYXJzIGFueSBwcmV2aW91cyBlcnJvcnNcbiAgICAgIC5yZXF1ZXN0KFwicmVtb3ZlOmVycm9yXCIsIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSwgXCJyZXF1aXJlZC1lcnJvclwiKTtcbiAgfSxcblxuICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGxldCBmb3JtTW9kZWwgPSBCYWNrYm9uZS5SYWRpby5jaGFubmVsKFwiYXBwXCIpLnJlcXVlc3QoXCJnZXQ6Zm9ybVwiLCB0aGlzLmdldEZvcm1JZCgpKTtcblxuICAgIGlmICghZm9ybU1vZGVsKSB7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICAgIGZvcm1Nb2RlbCA9IHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsO1xuICAgIH1cblxuICAgIC8vIFRPRE8gSXNuJ3QgJ2Zvcm0tJyArIGZvcm1Nb2RlbC5nZXQoJ2lkJykgdGhlIHNhbWUgYXMgdGhlIGZvcm1JRCBhbHJlYWR5P1xuICAgIEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJmb3JtLVwiICsgZm9ybU1vZGVsLmdldChcImlkXCIpKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXh0cmFcIixcbiAgICAgIFwidmlkZW9tYWlsXCIsXG4gICAgICByZXN1bHQudmlkZW9tYWlsLFxuICAgICk7XG5cbiAgICAvLyByZXN0YXJ0IHN1Ym1pc3Npb24gYWdhaW4sIHRoaXMgdGltZSB0byB0aGUgcmVhbCB3cCBzaXRlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZvcm0tXCIgKyB0aGlzLmdldEZvcm1JZCgpKS5yZXF1ZXN0KFwic3VibWl0XCIsIGZvcm1Nb2RlbCk7XG4gIH0sXG5cbiAgb25Hb2luZ0JhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpZWxkTW9kZWwuc2V0KFwidmlkZW9tYWlsLWtleVwiLCBudWxsKTtcbiAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgfSxcblxuICB2YWxpZGF0ZVJlcXVpcmVkOiBmdW5jdGlvbiAoZWwsIGZpZWxkTW9kZWwpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVWaWRlb21haWwoZmllbGRNb2RlbCk7XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0sXG5cbiAgaW52YWxpZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgYmVoYXZpb3Igc28gdGhhdCB3ZSBjYW4gc2V0IG91ciBvd24gZXJyb3IgdGV4dCBoZXJlXG4gICAgQmFja2JvbmUuUmFkaW8uY2hhbm5lbChcImZpZWxkc1wiKS5yZXF1ZXN0KFxuICAgICAgXCJhZGQ6ZXJyb3JcIixcbiAgICAgIHRoaXMuZmllbGRNb2RlbC5nZXQoXCJpZFwiKSxcbiAgICAgIFwicmVxdWlyZWQtZXJyb3JcIixcbiAgICAgIFwiUmVjb3JkIGFuZCBjbGljayBvbiBzdG9wIHRvIHNlZSBhIHByZXZpZXcgdmlkZW8uXCIsXG4gICAgKTtcbiAgfSxcblxuICB2YWxpZGF0ZVZpZGVvbWFpbDogZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICBmaWVsZE1vZGVsID0gZmllbGRNb2RlbCB8fCB0aGlzLmZpZWxkTW9kZWw7XG4gICAgcmV0dXJuIGZpZWxkTW9kZWwuZ2V0KFwidmlkZW9tYWlsLWtleVwiKSB8fCBmYWxzZTtcbiAgfSxcblxuICBoYXNFcnJvcnM6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLmdldChcImVycm9yc1wiKS5sZW5ndGggPiAwO1xuICB9LFxuXG4gIG1heWJlU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgbGV0IG1heWJlID0gdHJ1ZTtcbiAgICBjb25zdCB2aWRlb21haWxTdWJtaXR0ZWQgPSBmb3JtTW9kZWwuZ2V0RXh0cmEoXCJ2aWRlb21haWxcIik7XG4gICAgY29uc3QgdmlkZW9tYWlsUmVjb3JkZWQgPSB0aGlzLnZhbGlkYXRlVmlkZW9tYWlsKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmhhc0Vycm9ycyhmb3JtTW9kZWwpO1xuXG4gICAgLy8gaG9sZCBvbiB3aXRoIGZpbmFsIGZvcm0gc3VibWlzc2lvbiB3aGVuIG9uZSB3YXMgcmVjb3JkZWRcbiAgICAvLyBidXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHRvIHRoZSB2aWRlb21haWwgc2VydmVyIHlldFxuICAgIGlmICghdmlkZW9tYWlsU3VibWl0dGVkICYmICFlcnJvciAmJiB2aWRlb21haWxSZWNvcmRlZCkge1xuICAgICAgdGhpcy52aWRlb21haWxDbGllbnQuc3VibWl0KCk7XG4gICAgICBtYXliZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXliZTtcbiAgfSxcblxuICBnZXRNZXJnZVRhZ1ZhbHVlOiBmdW5jdGlvbiAoZmllbGRLZXksIGZvcm1WYWx1ZXMpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmZpZWxkTW9kZWwuZ2V0KGZpZWxkS2V5KTtcblxuICAgIC8vIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBzb21ldGhpbmcgd3JvbmcsXG4gICAgLy8gaS5FLiBhbiBlbXB0eSBlbWFpbF9mcm9tLiBpbiB0aGF0IGNhc2UganVzdCBpZ25vcmUgLi4uXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBhZG1pbiBlbWFpbCBsb2NhbGl6ZWQgZnJvbSBiYWNrZW5kLCBhIGJpdCB1Z2x5XG4gICAgICAvLyB0b2RvIGFzayBmb3IgYW4gZW5kcG9pbnQgdG8gcHJvY2VzcyB0aG9zZSBzcGVjaWFsIG1lcmdlIHRhZ3NcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaW5hcnlraXRjaGVuL3ZpZGVvbWFpbC1mb3ItbmluamEtZm9ybXMvaXNzdWVzLzMwXG4gICAgICBpZiAodmFsdWUgPT09IFwie3dwOmFkbWluX2VtYWlsfVwiKSB7XG4gICAgICAgIHZhbHVlID0gd2luZG93Lm5mVmlkZW9tYWlsLmFkbWluX2VtYWlsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXlNYXRjaGVzID0gdmFsdWUubWF0Y2goL3tmaWVsZDooLiopfS9pKTtcbiAgICAgICAgY29uc3QgcmF3RmllbGRLZXkgPSByYXdGaWVsZEtleU1hdGNoZXMgJiYgcmF3RmllbGRLZXlNYXRjaGVzWzFdO1xuXG4gICAgICAgIGlmIChyYXdGaWVsZEtleSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyB5ZXMgaXQgd2FzIGEgbWVyZ2UgdGFnLCBzbyB1c2UgaXRcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL3tmaWVsZDooLiopfS9pLCBmb3JtVmFsdWVzW3Jhd0ZpZWxkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIC8vIHJldHVybnMgYSBtYXAgbGlrZSB0aGlzOlxuICAvLyB7XG4gIC8vICAgZnJvbV9lbWFpbDogXCJtaWNLQGRlYWZvbnouZWhcIlxuICAvLyAgIGZyb21fbmFtZTogXCJNSFwiXG4gIC8vICAgbWVzc2FnZTogXCJzZGZzZGZzZGZcIlxuICAvLyAgIHN1YmplY3Q6IFwic2Rmc2RmXCJcbiAgLy8gICBzdWJtaXQ6IFwiXCJcbiAgLy8gICB2aWRlb19tZXNzYWdlOiBcIjExZWItNjFkNy1kZDU4MzMyMC1hZTYxLTJiODJiZTZjNmUzZVwiXG4gIC8vIH1cbiAgZ2V0Rm9ybVZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIGxldCBjb2xsZWN0aW9uO1xuICAgIGNvbnN0IGZvcm1Nb2RlbCA9IEJhY2tib25lLlJhZGlvLmNoYW5uZWwoXCJhcHBcIikucmVxdWVzdChcImdldDpmb3JtXCIsIHRoaXMuZ2V0Rm9ybUlkKCkpO1xuXG4gICAgaWYgKGZvcm1Nb2RlbCkge1xuICAgICAgY29sbGVjdGlvbiA9IGZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIik7XG4gICAgICAvLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnNcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRNb2RlbC5jb2xsZWN0aW9uLm9wdGlvbnMuZm9ybU1vZGVsLmdldChcImZpZWxkc1wiKS5tb2RlbHMpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmZpZWxkTW9kZWwuY29sbGVjdGlvbi5vcHRpb25zLmZvcm1Nb2RlbC5nZXQoXCJmaWVsZHNcIikubW9kZWxzO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBjb2xsZWN0aW9uLnJlZHVjZShmdW5jdGlvbiAobWVtbywgZmllbGQpIHtcbiAgICAgIG1lbW9bZmllbGQuZ2V0KFwia2V5XCIpXSA9IGZpZWxkLmdldChcInZhbHVlXCIpO1xuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGZvcm1WYWx1ZXM7XG4gIH0sXG5cbiAgYWRqdXN0Rm9ybURhdGFCZWZvcmVQb3N0aW5nVG9WaWRlb21haWxTZXJ2ZXI6IGZ1bmN0aW9uICh2aWRlb21haWwpIHtcbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5nZXRGb3JtVmFsdWVzKCk7XG5cbiAgICB2aWRlb21haWwuZnJvbSA9IHRoaXMuZ2V0TWVyZ2VUYWdWYWx1ZShcImVtYWlsX2Zyb21cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnRvID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfdG9cIiwgZm9ybVZhbHVlcyk7XG4gICAgdmlkZW9tYWlsLnN1YmplY3QgPSB0aGlzLmdldE1lcmdlVGFnVmFsdWUoXCJlbWFpbF9zdWJqZWN0XCIsIGZvcm1WYWx1ZXMpO1xuICAgIHZpZGVvbWFpbC5ib2R5ID0gdGhpcy5nZXRNZXJnZVRhZ1ZhbHVlKFwiZW1haWxfYm9keVwiLCBmb3JtVmFsdWVzKTtcblxuICAgIHJldHVybiB2aWRlb21haWw7XG4gIH0sXG5cbiAgb25CZWZvcmVEZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52aWRlb21haWxDbGllbnQudW5sb2FkKCk7XG4gICAgZGVsZXRlIHRoaXMudmlkZW9tYWlsQ2xpZW50O1xuICB9LFxufSk7XG5cbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFZpZGVvbWFpbEZpZWxkQ29udHJvbGxlcigpO1xufSk7XG4iXSwibmFtZXMiOlsiUExVR0lOX1ZFUlNJT04iLCJERUJVRyIsIlZpZGVvbWFpbEZpZWxkQ29udHJvbGxlciIsIk1hcmlvbmV0dGUiLCJPYmplY3QiLCJleHRlbmQiLCJ2aWRlb21haWxDbGllbnQiLCJmaWVsZE1vZGVsIiwiY2hhbm5lbCIsIkJhY2tib25lIiwiUmFkaW8iLCJpbml0aWFsaXplIiwidGhpcyIsImxpc3RlblRvT25jZSIsInJlZ2lzdGVyVmlkZW9tYWlsRmllbGQiLCJsb2FkVmlkZW9tYWlsQ2xpZW50IiwibGlzdGVuVG8iLCJldmVudE5hbWUiLCJjb25zb2xlIiwibG9nIiwibmZSYWRpbyIsInBhcmFtcyIsImN1cnJlbnRNb2RlbHMiLCJjdXJyZW50RWxlbWVudCIsImF0dHJpYnV0ZXMiLCJmb3JtQ29udGVudERhdGEiLCJtb2RlbHMiLCJjdXJyZW50Q2lkIiwiY2lkIiwiZmluZCIsIm1vZGVsIiwidW5sb2FkIiwiZ2V0Rm9ybUlkIiwiZ2V0IiwicmVwbHkiLCJ2YWxpZGF0ZVJlcXVpcmVkIiwidmFsaWRhdGVWaWRlb21haWwiLCJtYXliZVN1Ym1pdCIsImxldCIsImltYWdlUXVhbGl0eVBlcmNlbnRhZ2UiLCJ2ZXJib3NlIiwiVmlkZW9tYWlsQ2xpZW50Iiwic2l0ZU5hbWUiLCJ2aWRlbyIsImxpbWl0U2Vjb25kcyIsIndpZHRoIiwic3RyZXRjaCIsImNvdW50ZG93biIsImF1ZGlvIiwiZW5hYmxlZCIsImltYWdlIiwicXVhbGl0eSIsInNlbGVjdG9ycyIsImNvbnRhaW5lcklkIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjYWxsYmFja3MiLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmciLCJhZGp1c3RGb3JtRGF0YUJlZm9yZVBvc3RpbmdUb1ZpZGVvbWFpbFNlcnZlciIsImJpbmQiLCJsb2FkVXNlck1lZGlhT25SZWNvcmQiLCJkaXNhYmxlRm9ybVdoZW5TdWJtaXR0aW5nIiwiZW5hYmxlQXV0b1ZhbGlkYXRpb24iLCJlbmFibGVBdXRvU3VibWlzc2lvbiIsInZlcnNpb25zIiwidmlkZW9tYWlsTmluamFGb3JtUGx1Z2luIiwib24iLCJvblByZXZpZXciLCJvblN1Ym1pdHRlZCIsIm9uR29pbmdCYWNrIiwic2hvdyIsImtleSIsInNldCIsInJlcXVlc3QiLCJyZXN1bHQiLCJmb3JtTW9kZWwiLCJjb2xsZWN0aW9uIiwib3B0aW9ucyIsInZpZGVvbWFpbCIsImludmFsaWRhdGUiLCJlbCIsInZhbGlkIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwibWF5YmUiLCJ2aWRlb21haWxTdWJtaXR0ZWQiLCJnZXRFeHRyYSIsInZpZGVvbWFpbFJlY29yZGVkIiwiZXJyb3IiLCJzdWJtaXQiLCJnZXRNZXJnZVRhZ1ZhbHVlIiwiZmllbGRLZXkiLCJmb3JtVmFsdWVzIiwidmFsdWUiLCJ3aW5kb3ciLCJuZlZpZGVvbWFpbCIsImFkbWluX2VtYWlsIiwicmF3RmllbGRLZXkiLCJyYXdGaWVsZEtleU1hdGNoZXMiLCJtYXRjaCIsInJlcGxhY2UiLCJnZXRGb3JtVmFsdWVzIiwicmVkdWNlIiwibWVtbyIsImZpZWxkIiwiZnJvbSIsInRvIiwic3ViamVjdCIsImJvZHkiLCJvbkJlZm9yZURlc3Ryb3kiLCJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5Il0sIm1hcHBpbmdzIjoiQUFDQSxJQUFNQSxlQUFpQixRQUduQkMsTUFBUSxDQUFBLEVBS05DLHlCQUEyQkMsV0FBV0MsT0FBT0MsT0FBTyxDQUN4REMsZ0JBQWlCLEtBRWpCQyxXQUFZLEtBRVpDLFFBQVNDLFNBQVNDLE1BQU1GLFFBQVEsV0FBVyxFQUUzQ0csV0FBWSxXQUNWRixTQUFTQyxNQUFNVCxNQUFRQSxNQUV2QlcsS0FBS0MsYUFBYUQsS0FBS0osUUFBUyxhQUFjSSxLQUFLRSxzQkFBc0IsRUFDekVGLEtBQUtDLGFBQWFELEtBQUtKLFFBQVMsY0FBZUksS0FBS0csbUJBQW1CLEVBR3ZFSCxLQUFLSSxTQUFTSixLQUFLSixRQUFTLE1BQU8sU0FBVVMsR0FDM0NoQixPQUFTaUIsUUFBUUMsSUFBSSxxQ0FBc0NGLENBQVMsRUFJcEVMLEtBQUtJLFNBQVNJLFFBQVFaLFFBQVEsTUFBTSxFQUFHLGNBQWUsU0FBVWEsR0FDOURwQixPQUFTaUIsUUFBUUMsSUFBSSxnQ0FBaUMsYUFBYSxFQUU3REcsRUFDSkQsRUFBT0UsZ0JBQWdCQyxZQUFZQyxpQkFBaUJDLFFBQVUsR0FFaEUsSUFBTUMsRUFBYWYsS0FBS0wsV0FBV3FCLElBRWROLEVBQWNPLEtBQUssU0FBVUMsR0FDaEQsT0FBT0EsRUFBTUYsTUFBUUQsQ0FDdkIsQ0FBQyxFQUdDZixLQUFLRyxvQkFBb0IsRUFFekJILEtBQUtOLGdCQUFnQnlCLE9BQU8sQ0FFaEMsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVBQyxVQUFXLFdBQ1QsT0FBT3BCLEtBQUtMLFdBQVcwQixJQUFJLFFBQVEsQ0FDckMsRUFFQW5CLHVCQUF3QixTQUFVUCxHQUNoQ0ssS0FBS0ws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
  • videomail-for-ninja-forms/trunk/target/js/videomail-client/index-min.js

    r3381582 r3388250  
    66})(globalThis, ()=>(()=>{
    77        var __webpack_modules__ = {
    8             "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
     8            "./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl": function(module1, __webpack_exports__, __webpack_require__) {
    99                "use strict";
    1010                __webpack_require__.d(__webpack_exports__, {
     
    1067110671            var client_default = /*#__PURE__*/ __webpack_require__.n(client);
    1067210672            var package_namespaceObject = {
    10673                 rE: "13.0.0"
     10673                rE: "13.2.0"
    1067410674            };
    1067510675            var defined = __webpack_require__("./node_modules/defined/index.js");
     
    1394813948            }
    1394913949            const util_pretty = pretty;
    13950             class HTTPVideomailError_HTTPVideomailError extends Error {
     13950            class HTTPVideomailError extends Error {
    1395113951                code;
    1395213952                status;
    1395313953                explanation;
    1395413954            }
    13955             const HTTPVideomailError = HTTPVideomailError_HTTPVideomailError;
    13956             class VideomailError extends HTTPVideomailError {
     13955            const error_HTTPVideomailError = HTTPVideomailError;
     13956            class VideomailError extends error_HTTPVideomailError {
    1395713957                title = "Error from videomail-client npm package";
    1395813958                location = window.location.href;
     
    1431714317            }
    1431814318            const util_Despot = Despot;
     14319            function getValidity(element) {
     14320                const validity = "validity" in element ? element.validity : void 0;
     14321                return validity;
     14322            }
     14323            const util_getValidity = getValidity;
    1431914324            function hideElement(element) {
    1432014325                if (!element) return;
     
    1440614411                        const name = formControl.getAttribute("name");
    1440714412                        if (name) {
    14408                             const value = videomail[name];
     14413                            let value = videomail[name];
    1440914414                            const tagName = formControl.tagName;
     14415                            if (this.options.callbacks.adjustFormValueBeforePopulating) value = this.options.callbacks.adjustFormValueBeforePopulating(name, value, videomail);
    1441014416                            switch(tagName){
    1441114417                                case "INPUT":
     
    1457314579                    const elements = this.getRegisteredFormElements();
    1457414580                    for (const element of elements){
    14575                         const validity = "validity" in element ? element.validity : void 0;
     14581                        const validity = util_getValidity(element);
    1457614582                        if (!validity?.valid) return element;
    1457714583                    }
     
    1459614602                        const message = body.error.message;
    1459714603                        const cause = body.error.cause;
    14598                         const error = new HTTPVideomailError(message, {
     14604                        const error = new error_HTTPVideomailError(message, {
    1459914605                            cause
    1460014606                        });
     
    1470514711                    const newVideomail = this.applyDefaultValues(videomail);
    1470614712                    newVideomail[constants.VERSION_LABEL] = package_namespaceObject.rE;
     14713                    newVideomail.recordLocation = window.location.href;
    1470714714                    try {
    1470814715                        let res;
     
    1485914866                loadUserMediaOnRecord: false,
    1486014867                callbacks: {
    14861                     adjustFormDataBeforePosting: void 0
     14868                    adjustFormDataBeforePosting: void 0,
     14869                    adjustFormValueBeforePopulating: void 0
    1486214870                },
    1486314871                defaults: {
     
    1492414932            }
    1492514933            const util_isTest = isTest;
    14926             function mergeWithDefaultOptions_mergeWithDefaultOptions(options = {}) {
     14934            function mergeWithDefaultOptions(options = {}) {
    1492714935                const newOptions = cjs_default()(src_options, options, {
    1492814936                    arrayMerge (_destination, source) {
     
    1493514943                return newOptions;
    1493614944            }
    14937             const mergeWithDefaultOptions = mergeWithDefaultOptions_mergeWithDefaultOptions;
     14945            const options_mergeWithDefaultOptions = mergeWithDefaultOptions;
    1493814946            var injectStylesIntoStyleTag = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/injectStylesIntoStyleTag.js");
    1493914947            var injectStylesIntoStyleTag_default = /*#__PURE__*/ __webpack_require__.n(injectStylesIntoStyleTag);
     
    1494814956            var styleTagTransform = __webpack_require__("./node_modules/@rsbuild/core/compiled/style-loader/runtime/styleTagTransform.js");
    1494914957            var styleTagTransform_default = /*#__PURE__*/ __webpack_require__.n(styleTagTransform);
    14950             var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[12].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[12].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[12].use[3]!./src/styles/main.styl");
     14958            var main = __webpack_require__("./node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[13].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[13].use[2]!./node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[13].use[3]!./src/styles/main.styl");
    1495114959            var main_options = {};
    1495214960            main_options.styleTagTransform = styleTagTransform_default();
     
    1496914977            }
    1497014978            const dimensions_limitHeight = limitHeight;
    14971             function getOuterWidth_getOuterWidth(element) {
     14979            function getOuterWidth(element) {
    1497214980                let rect = element.getBoundingClientRect();
    1497314981                let outerWidth = rect.right - rect.left;
     
    1497814986                return outerWidth;
    1497914987            }
    14980             const getOuterWidth = getOuterWidth_getOuterWidth;
     14988            const dimensions_getOuterWidth = getOuterWidth;
    1498114989            function limitWidth(element, options, width) {
    1498214990                let limitedWidth;
    14983                 const outerWidth = getOuterWidth(element);
     14991                const outerWidth = dimensions_getOuterWidth(element);
    1498414992                limitedWidth = width && "number" == typeof width ? outerWidth > 0 && outerWidth < width ? outerWidth : width : outerWidth;
    1498514993                if (Number.isInteger(limitedWidth) && limitedWidth < 1) throw error_createError({
     
    1541415422            }
    1541515423            const buttons = Buttons;
    15416             function isHidden_isHidden(element) {
     15424            function isHidden(element) {
    1541715425                if (!element) return true;
    1541815426                const display = element.style.getPropertyValue("display");
    1541915427                return display.includes("none");
    1542015428            }
    15421             const isHidden = isHidden_isHidden;
     15429            const html_isHidden = isHidden;
    1542215430            class Countdown {
    1542315431                visuals;
     
    1601916027                isVisible() {
    1602016028                    if (!this.built) return false;
    16021                     return this.notifyElement && !isHidden(this.notifyElement);
     16029                    return this.notifyElement && !html_isHidden(this.notifyElement);
    1602216030                }
    1602316031                isBuilt() {
     
    1613616144            }
    1613716145            const dimensions_figureMinHeight = figureMinHeight;
    16138             function getRatio_getRatio(options, videoHeight, videoWidth) {
     16146            function getRatio(options, videoHeight, videoWidth) {
    1613916147                let ratio = 1;
    1614016148                const hasVideoDimensions = videoHeight && videoWidth;
     
    1614616154                return ratio;
    1614716155            }
    16148             const getRatio = getRatio_getRatio;
     16156            const dimensions_getRatio = getRatio;
    1614916157            function calculateHeight(responsive, videoWidth, options, target, ratio, element) {
    1615016158                let width = videoWidth;
     
    1615416162                });
    1615516163                if (responsive && element) width = dimensions_limitWidth(element, options, width);
    16156                 const chosenRatio = ratio ?? getRatio(options, void 0, videoWidth);
     16164                const chosenRatio = ratio ?? dimensions_getRatio(options, void 0, videoWidth);
    1615716165                const height = Math.round(width * chosenRatio);
    1615816166                if (Number.isInteger(height) && height < 1) throw error_createError({
     
    1617016178                    options
    1617116179                });
    16172                 const chosenRatio = ratio ?? getRatio(options, videoHeight);
     16180                const chosenRatio = ratio ?? dimensions_getRatio(options, videoHeight);
    1617316181                const calculatedWidth = Math.round(height / chosenRatio);
    1617416182                if (calculatedWidth < 1) throw error_createError({
     
    1619616204                return window.AudioContext;
    1619716205            }
    16198             class AudioRecorder_AudioRecorder {
     16206            class AudioRecorder {
    1619916207                scriptProcessor;
    1620016208                audioInput;
     
    1627616284                }
    1627716285            }
    16278             const AudioRecorder = AudioRecorder_AudioRecorder;
     16286            const media_AudioRecorder = AudioRecorder;
    1627916287            function getFirstVideoTrack(localMediaStream) {
    1628016288                const videoTracks = localMediaStream.getVideoTracks();
     
    1637616384                    this.onLoadedMetaDataReached = false;
    1637716385                    this.playingPromiseReached = false;
    16378                     if (isAudioEnabled(this.options)) this.audioRecorder ??= new AudioRecorder(this, this.options);
     16386                    if (isAudioEnabled(this.options)) this.audioRecorder ??= new media_AudioRecorder(this, this.options);
    1637916387                    const unloadAllEventListeners = ()=>{
    1638016388                        this.options.logger.debug("UserMedia: unloadAllEventListeners()");
     
    1708017088                }
    1708117089                isHidden() {
    17082                     return !this.recorderElement || isHidden(this.recorderElement);
     17090                    return !this.recorderElement || html_isHidden(this.recorderElement);
    1708317091                }
    1708417092                writeCommand(command, args, cb) {
     
    1749617504                        if (!userMediaVideoWidth || userMediaVideoWidth < 1) ratio = this.visuals.getRatio();
    1749717505                        else if (userMediaVideoHeight) ratio = userMediaVideoHeight / userMediaVideoWidth;
    17498                     } else ratio = getRatio(this.options);
     17506                    } else ratio = dimensions_getRatio(this.options);
    1749917507                    return ratio;
    1750017508                }
     
    1777117779                isShown() {
    1777217780                    if (!this.replayElement) return false;
    17773                     return !isHidden(this.replayElement) && !this.visuals.isHidden();
     17781                    return !html_isHidden(this.replayElement) && !this.visuals.isHidden();
    1777417782                }
    1777517783                getVisuals() {
     
    1798217990                isHidden() {
    1798317991                    if (!this.built) return true;
    17984                     return isHidden(this.visualsElement);
     17992                    return html_isHidden(this.visualsElement);
    1798517993                }
    1798617994                showVisuals() {
     
    1812218130                getFormElement() {
    1812318131                    let formElement;
    18124                     if (this.containerElement && "FORM" === this.containerElement.tagName) formElement = this.containerElement;
     18132                    if (this.containerElement?.tagName === "FORM") formElement = this.containerElement;
    1812518133                    else if (this.options.selectors.formId) {
    1812618134                        formElement = document.querySelector(`#${this.options.selectors.formId}`);
     
    1837518383                            if (invalidInput) {
    1837618384                                const name = invalidInput.getAttribute("name");
     18385                                const validity = util_getValidity(invalidInput);
    1837718386                                valid = false;
    18378                                 if (name) {
     18387                                if (name) if (validity?.valueMissing) whyInvalid = `Please fill out field "${name}" ⚠️`;
     18388                                else {
    1837918389                                    whyInvalid = `Input "${name}" seems wrong 🤔`;
    1838018390                                    invalidData = {
     
    1854718557                static ENC_TYPE_FORM = constants["public"].ENC_TYPE_FORM;
    1854818558                constructor(options = {}){
    18549                     super("VideomailClient", mergeWithDefaultOptions(options));
     18559                    super("VideomailClient", options_mergeWithDefaultOptions(options));
    1855018560                    this.validateOptions();
    1855118561                    util_Despot.removeAllListeners();
  • videomail-for-ninja-forms/trunk/target/php/videomail.php

    r3381582 r3388250  
    33
    44  const NAME = 'Videomail';
    5   const VERSION = '9.0.0';
     5  const VERSION = '9.0.1';
    66  const AUTHOR = 'Michael Heuberger + Kyle B. Johnson';
    77  const SLUG = 'videomail';
  • videomail-for-ninja-forms/trunk/videomail-for-ninja-forms.php

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