/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/nsfwjs-node@2.1.14/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{l(n.next(e))}catch(e){i(e)}}function s(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}};function __export(e){for(var t in e)exports.hasOwnProperty(t)||(exports[t]=e[t])}Object.defineProperty(exports,"__esModule",{value:!0});var tf=require("@tensorflow/tfjs-node"),nsfw_classes_1=require("./nsfw_classes"),SuperGif=require("libgif"),read_1=require("./read");__export(require("./read"));var BASE_PATH=require("path").resolve(__dirname,"./model/")+"/model.json",IMAGE_SIZE=224;function load(e){return void 0===e&&(e={size:IMAGE_SIZE}),__awaiter(this,void 0,void 0,(function(){var t,r;return __generator(this,(function(n){switch(n.label){case 0:if(null==tf)throw new Error("Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this model.");return t=tf.io.fileSystem(BASE_PATH),[4,(r=new NSFWJS(t,e)).load()];case 1:return n.sent(),[2,r]}}))}))}exports.load=load;var NSFWJS=function(){function e(e,t){this.intermediateModels={},this.options=t,this.normalizationOffset=tf.scalar(255),this.pathOrIOHandler="string"==typeof e?e+"model.json":e}return e.prototype.load=function(){return __awaiter(this,void 0,void 0,(function(){var e,t,r,n=this;return __generator(this,(function(o){switch(o.label){case 0:return e=this,[4,tf.loadLayersModel(this.pathOrIOHandler)];case 1:return e.model=o.sent(),this.endpoints=this.model.layers.map((function(e){return e.name})),t=this.options.size,[4,(r=tf.tidy((function(){return n.model.predict(tf.zeros([1,t,t,3]))}))).data()];case 2:return o.sent(),r.dispose(),[2]}}))}))},e.prototype.infer=function(e,t){var r=this;if(null!=t&&-1===this.endpoints.indexOf(t))throw new Error("Unknown endpoint "+t+". Available endpoints: "+this.endpoints+".");return tf.tidy((function(){e instanceof tf.Tensor||(e=tf.browser.fromPixels(e));var n=e.toFloat().div(r.normalizationOffset),o=n,i=r.options.size;if(e.shape[0]!==i||e.shape[1]!==i){o=tf.image.resizeBilinear(n,[i,i],!0)}var a,s=o.reshape([1,i,i,3]);if(null==t)a=r.model;else{if(null==r.intermediateModels[t]){var l=r.model.layers.find((function(e){return e.name===t}));r.intermediateModels[t]=tf.model({inputs:r.model.inputs,outputs:l.output})}a=r.intermediateModels[t]}return a.predict(s)}))},e.prototype.classify=function(e,t){return void 0===t&&(t=5),__awaiter(this,void 0,void 0,(function(){var r,n;return __generator(this,(function(o){switch(o.label){case 0:return[4,getTopKClasses(r=this.infer(e),t)];case 1:return n=o.sent(),r.dispose(),[2,n]}}))}))},e.prototype.classifyGif=function(e,t){return void 0===t&&(t={topk:5}),__awaiter(this,void 0,void 0,(function(){var r,n=this;return __generator(this,(function(o){return r=new SuperGif({gif:e}),[2,new Promise((function(e){r.load((function(){return __awaiter(n,void 0,void 0,(function(){var n,o,i,a;return __generator(this,(function(s){switch(s.label){case 0:n=[],o=r.get_length(),i=1,s.label=1;case 1:return i<=o?(r.move_to(i),[4,this.classify(r.get_canvas(),t.topk)]):[3,4];case 2:a=s.sent(),t.onFrame&&t.onFrame({index:i,totalFrames:o,predictions:a}),n.push(a),s.label=3;case 3:return i++,[3,1];case 4:return t.setGifControl&&t.setGifControl(r),r=null,e(n),[2]}}))}))}))}))]}))}))},e}();function getTopKClasses(e,t){return __awaiter(this,void 0,void 0,(function(){var r,n,o,i,a,s;return __generator(this,(function(l){switch(l.label){case 0:return[4,e.data()];case 1:for(r=l.sent(),n=[],s=0;s<r.length;s++)n.push({value:r[s],index:s});for(n.sort((function(e,t){return t.value-e.value})),o=new Float32Array(t),i=new Int32Array(t),s=0;s<t;s++)o[s]=n[s].value,i[s]=n[s].index;for(a=[],s=0;s<i.length;s++)a.push({className:nsfw_classes_1.NSFW_CLASSES[i[s]],probability:o[s]});return[2,a]}}))}))}exports.NSFWJS=NSFWJS;var model=null;exports.isNSFW=function(e,t,r){return void 0===t&&(t=.5),void 0===r&&(r=.5),__awaiter(void 0,void 0,void 0,(function(){var n,o,i,a;return __generator(this,(function(s){switch(s.label){case 0:return null!==model?[3,2]:[4,load()];case 1:model=s.sent(),s.label=2;case 2:return n=read_1.readImage(e),o=read_1.imageToInput(n,read_1.NUMBER_OF_CHANNELS),[4,model.classify(o)];case 3:return i=s.sent(),[2,(a=function(e){for(var t=0,r=i;t<r.length;t++){var n=r[t];if(n.className===e)return n.probability}return 0})("Porn")>=r||a("Sexy")>=t]}}))}))};
//# sourceMappingURL=/sm/af61cf41b99c0e9a89cd22b6907eba6b8c872f6d63794481454b73cb274daae4.map