/*!
 * CamanJS - Pure HTML5 Javascript (Ca)nvas (Man)ipulation
 * http://camanjs.com/
 *
 * Version 2.3
 *
 * Copyright 2011, Ryan LeFevre
 * Licensed under the new BSD License.
 * See LICENSE for more info.
 *
 * Project Contributors:
 *   Ryan LeFevre - Lead Developer and Project Maintainer
 *    Twitter: @meltingice
 *    GitHub: http://github.com/meltingice
 *
 *   Rick Waldron - Plugin Architect and Developer
 *    Twitter: @rwaldron
 *    GitHub: http://github.com/rwldrn
 *
 *   Cezar Sa Espinola - Developer
 *    Twitter: @cezarsa
 *    GitHub: http://github.com/cezarsa
 */// Nothing to see here, move along now...
/*global Caman: true */// This is actually where the Caman object is defined, and is where the Caman initialization code resides. 
// There are many different initialization for Caman, which are described on the 
// [Basic Usage](http://camanjs.com/docs) page.
//
// Initialization is tricky because we need to make sure everything we need is actually fully loaded in the 
// DOM before proceeding. When initialized on an image, we need to make sure that the image is done loading 
// before converting it to a canvas element and writing the pixel data. If we do this prematurely, the browser
// will throw a DOM Error, and chaos will ensue. In the event that we initialize Caman on a canvas element 
// while specifying an image URL, we need to create a new image element, load the image, then continue with 
// initialization.
//
// The main goal for Caman was simplicity, so all of this is handled transparently to the end-user. This is also
// why this piece of code is a bit lengthy. Once everything is loaded, and Caman is initialized, the callback 
// function is fired.
//
// There are also a few utility functions in this file that are used throughout the Caman source. Caman.$ is a 
// simple helper for retrieving DOM nodes by ID. There are also a few functions for handling and detecting remote images.
/*global Caman: true */
(function(){"console"in window||(window.console={log:function(){},info:function(){},error:function(){}});var a=function(){if(arguments.length==1)return a.store[arguments[0]]?a.store[arguments[0]]:new a.manip.loadImage(arguments[0]);if(arguments.length==2){if(a.store[arguments[0]])return arguments[1].call(a.store[arguments[0]],a.store[arguments[0]]);if(typeof arguments[1]=="function"){var b=a.$(arguments[0]).nodeName.toLowerCase();if(b=="img")return new a.manip.loadImage(arguments[0],arguments[1]);if(b=="canvas")return new a.manip.loadCanvas(null,arguments[0],arguments[1])}else if(typeof arguments[1]=="string")return new a.manip.loadCanvas(arguments[0],arguments[1])}else if(arguments.length==3)return a.store[arguments[0]]?arguments[2].call(a.store[arguments[1]],a.store[arguments[1]]):new a.manip.loadCanvas(arguments[0],arguments[1],arguments[2])};a.version={release:"2.3",date:"7-5-2011"};var b=function(b,c,d){var e=this;this.pixelStack=[],this.layerStack=[],this.renderQueue=[],this.canvas=c,this.context=this.canvas.getContext("2d");if(b!==null){var f=b.height,g=b.width,h=b.getAttribute("data-camanwidth")||c.getAttribute("data-camanwidth"),i=b.getAttribute("data-camanheight")||c.getAttribute("data-camanheight");if(h||i)h?(b.width=parseInt(h,10),i?b.height=parseInt(i,10):b.height=b.width*f/g):i&&(b.height=parseInt(i,10),b.width=b.height*g/f);c.width=b.width,c.height=b.height,this.context.drawImage(b,0,0,b.width,b.height)}return this.image_data=this.context.getImageData(0,0,c.width,c.height),this.pixel_data=this.image_data.data,this.dimensions={width:c.width,height:c.height},a.store[this.canvas_id]=this,d.call(this,this),this};a.manip=a.prototype={loadImage:function(c,d){var e,f=this,g,h,i=function(){var e=document.createElement("canvas");if(a.$(c)===null||a.$(c).nodeName.toLowerCase()!=="img")throw"Given element ID isn't an image: "+c;return e.id=g.id,g.getAttribute("data-camanwidth")&&e.setAttribute("data-camanwidth",g.getAttribute("data-camanwidth")),g.getAttribute("data-camanheight")&&e.setAttribute("data-camanheight",g.getAttribute("data-camanheight")),g.parentNode.replaceChild(e,g),this.canvas_id=c,this.options={canvas:c,image:g.src},b.call(f,g,e,d),this};d=d||function(){};if(typeof c=="object"&&c.nodeName.toLowerCase()=="img"){var j=c;c.id?c=j.id:(c="caman-"+a.uniqid.get(),j.id=c)}return e=a.$(c)!==null,e?(g=a.$(c),h=a.remoteCheck(g.src),h?(g.src=h,g.onload=function(){i.call(f)}):g.complete?i.call(this):g.onload=function(){i.call(f)}):document.addEventListener("DOMContentLoaded",function(){g=a.$(c),h=a.remoteCheck(g.src),h&&(g.src=h),g.onload=function(){i.call(f)}},!1),this},loadCanvas:function(c,d,e){var f,g=this,h=function(){var f=a.$(d),h=document.createElement("img"),i=a.remoteCheck(c);if(a.$(d)===null||a.$(d).nodeName.toLowerCase()!=="canvas")throw"Given element ID isn't a canvas: "+d;c===null?b.call(g,null,f,e):(h.onload=function(){b.call(g,h,f,e)},i?h.src=i:h.src=c),this.canvas_id=d,this.options={canvas:d,image:h.src}};e=e||function(){};if(typeof d=="object"&&d.nodeName.toLowerCase()=="canvas"){var i=d;d.id?d=i.id:(d="caman-"+a.uniqid.get(),i.id=d)}return f=a.$(d)!==null,f?h.call(this):document.addEventListener("DOMContentLoaded",function(){h.call(g)},!1),this}},a.manip.loadImage.prototype=a.manip,a.manip.loadCanvas.prototype=a.manip,a.$=function(a){return a[0]=="#"&&(a=a.substr(1)),document.getElementById(a)},a.store={},a.isRemote=function(a){var b=/(?:(?:http|https):\/\/)((?:\w+)\.(?:(?:\w|\.)+))/,c;if(!a||!a.length)return;var d=a.match(b);return d?(c=d[1],c!=document.domain):!1},a.remoteCheck=function(b){if(a.isRemote(b)){if(!a.remoteProxy.length){console.info("Attempting to load remote image without a configured proxy, URL: "+b);return}if(a.isRemote(a.remoteProxy)){console.info("Cannot use a remote proxy for loading remote images due to same-origin policy");return}return a.remoteProxy+"?camanProxyUrl="+encodeURIComponent(b)}},window.Caman=a})(),function(a){var b=Array.prototype.forEach,c=Object.prototype.hasOwnProperty,d=Array.prototype.slice;a.plugin={},Function.prototype.bind||(Function.prototype.bind=function(a){var b=[].slice,c=b.call(arguments,1),d=this,e=function(){},f=function(){return d.apply(this instanceof e?this:a||{},c.concat(b.call(arguments)))};return e.prototype=d.prototype,f.prototype=new e,f}),a.toString=a.manip.toString=function(){return"Version "+a.version.release+", Released "+a.version.date},a.forEach=function(a,d,e){if(!a||!d)return{};e=e||this;if(b&&a.forEach===b)return a.forEach(d,e);for(var f in a)c.call(a,f)&&d.call(e,a[f],f,a);return a},a.extend=function(b){var c=b,e=d.call(arguments,1);return a.forEach(e,function(a){for(var b in a)a.hasOwnProperty(b)&&(c[b]=a[b])}),c},a.clampRGB=function(a){return a>255?255:a<0?0:a},a.useProxy=function(a){var b={ruby:"rb",python:"py",perl:"pl"};return a=b[a.toLowerCase()]||a.toLowerCase(),"proxies/caman_proxy."+a},a.uniqid=function(){var a=0;return{get:function(){return a++},reset:function(){a=0}}}(),a.extend(a,{sizeOf:function(a){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b},sameAs:function(a,b){if(a.length!==b.length)return!1;for(var c=a.length;c>=0;c--)if(a[c]!==b[c])return!1;return!0},remove:function(a,b){var c=[];for(var d=0,e=a.length;d<e;d++)a[d]!==b&&c.push(a[d]);return a=c,c},randomRange:function(a,b,c){var d=a+Math.random()*(b-a);return typeof c=="undefined"?Math.round(d):d.toFixed(c)},rgb_to_hsl:function(a,b,c){a/=255,b/=255,c/=255;var d=Math.max(a,b,c),e=Math.min(a,b,c),f,g,h=(d+e)/2;if(d==e)f=g=0;else{var i=d-e;g=h>.5?i/(2-d-e):i/(d+e);switch(d){case a:f=(b-c)/i+(b<c?6:0);break;case b:f=(c-a)/i+2;break;case c:f=(a-b)/i+4}f/=6}return{h:f,s:g,l:h}},hue_to_rgb:function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+(b-a)*6*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},hsl_to_rgb:function(a,b,c){var d,e,f;if(b===0)d=e=f=c;else{var g=c<.5?c*(1+b):c+b-c*b,h=2*c-g;d=this.hue_to_rgb(h,g,a+1/3),e=this.hue_to_rgb(h,g,a),f=this.hue_to_rgb(h,g,a-1/3)}return{r:d*255,g:e*255,b:f*255}},rgb_to_hsv:function(a,b,c){a/=255,b/=255,c/=255;var d=Math.max(a,b,c),e=Math.min(a,b,c),f,g,h=d,i=d-e;g=d===0?0:i/d;if(d==e)f=0;else{switch(d){case a:f=(b-c)/i+(b<c?6:0);break;case b:f=(c-a)/i+2;break;case c:f=(a-b)/i+4}f/=6}return{h:f,s:g,v:h}},hsv_to_rgb:function(a,b,c){var d,e,f,g=Math.floor(a*6),h=a*6-g,i=c*(1-b),j=c*(1-h*b),k=c*(1-(1-h)*b);switch(g%6){case 0:d=c,e=k,f=i;break;case 1:d=j,e=c,f=i;break;case 2:d=i,e=c,f=k;break;case 3:d=i,e=j,f=c;break;case 4:d=k,e=i,f=c;break;case 5:d=c,e=i,f=j}return{r:d*255,g:e*255,b:f*255}},rgb_to_xyz:function(a,b,c){a/=255,b/=255,c/=255,a>.04045?a=Math.pow((a+.055)/1.055,2.4):a/=12.92,b>.04045?b=Math.pow((b+.055)/1.055,2.4):b/=12.92,c>.04045?c=Math.pow((c+.055)/1.055,2.4):c/=12.92;var d=a*.4124+b*.3576+c*.1805,e=a*.2126+b*.7152+c*.0722,f=a*.0193+b*.1192+c*.9505;return{x:d*100,y:e*100,z:f*100}},xyz_to_rgb:function(a,b,c){a/=100,b/=100,c/=100;var d,e,f;return d=3.2406*a+ -1.5372*b+ -0.4986*c,e=-0.9689*a+1.8758*b+.0415*c,f=.0557*a+ -0.204*b+1.057*c,d>.0031308?d=1.055*Math.pow(d,.4166666667)-.055:d=12.92*d,e>.0031308?e=1.055*Math.pow(e,.4166666667)-.055:e=12.92*e,f>.0031308?f=1.055*Math.pow(f,.4166666667)-.055:f=12.92*f,{r:d*255,g:e*255,b:f*255}},xyz_to_lab:function(a,b,c){var d=95.047,e=100,f=108.883;a/=d,b/=e,c/=f,a>.008856451679?a=Math.pow(a,.3333333333):a=7.787037037*a+.1379310345,b>.008856451679?b=Math.pow(b,.3333333333):b=7.787037037*b+.1379310345,c>.008856451679?c=Math.pow(c,.3333333333):c=7.787037037*c+.1379310345;var g=116*b-16,h=500*(a-b),i=200*(b-c);return{l:g,a:h,b:i}},lab_to_xyz:function(a,b,c){var d=(a+16)/116,e=d+b/500,f=d-c/200;return e>.2068965517?e=e*e*e:e=.1284185493*(e-.1379310345),d>.2068965517?d=d*d*d:d=.1284185493*(d-.1379310345),f>.2068965517?f=f*f*f:f=.1284185493*(f-.1379310345),{x:e*95.047,y:d*100,z:f*108.883}},hex_to_rgb:function(a){var b,c,d;return a.charAt(0)==="#"&&(a=a.substr(1)),b=parseInt(a.substr(0,2),16),c=parseInt(a.substr(2,2),16),d=parseInt(a.substr(4,2),16),{r:b,g:c,b:d}},bezier:function(a,b,c,d,e,f){var g,h,i,j,k,l,m=a[0],n=a[1],o=b[0],p=b[1],q=c[0],r=c[1],s=d[0],t=d[1],u,v,w,x={};i=3*(o-m),h=3*(q-o)-i,g=s-m-i-h,l=3*(p-n),k=3*(r-p)-l,j=t-n-l-k;for(var y=0;y<1e3;y++)u=y/1e3,v=Math.round(g*Math.pow(u,3)+h*Math.pow(u,2)+i*u+m),w=Math.round(j*Math.pow(u,3)+k*Math.pow(u,2)+l*u+n),e&&w<e?w=e:f&&w>f&&(w=f),x[v]=w;var z,A,B,C,D;if(x.length<d[0]+1)for(y=0;y<=d[0];y++)if(typeof x[y]=="undefined"){z=[y-1,x[y-1]];for(B=y;B<=d[0];B++)if(typeof x[B]!="undefined"){A=[B,x[B]];break}x[y]=z[1]+(A[1]-z[1])/(A[0]-z[0])*(y-z[0])}return typeof x[d[0]]=="undefined"&&(x[d[0]]=x[254]),x},distance:function(a,b,c,d){return Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2))}})}(Caman),function(a){a.remoteProxy="",a.extend(a.manip,{save:function(a){a&&(a=a.toLowerCase());if(!a||a!=="png"&&a!=="jpg")a="png";document.location.href=this.toBase64(a).replace("image/"+a,"image/octet-stream")},toImage:function(a){var b;return b=document.createElement("img"),b.src=this.toBase64(a),b},toBase64:function(a){a&&(a=a.toLowerCase());if(!a||a!=="png"&&a!=="jpg")a="png";return this.canvas.toDataURL("image/"+a)}})}(Caman),function(a){a.events={types:["processStart","processComplete","renderFinished"],fn:{trigger:function(b,c,d){var e=b,f=c,g=d;a.events.types.indexOf(b)!==-1&&(e=this,f=b,g=c),a.events.fn[f]&&a.sizeOf(a.events.fn[f])&&a.forEach(a.events.fn[f],function(a,b){a.call(e,g)})},listen:function(b,c,d){var e=b,f=c,g=d;return a.events.types.indexOf(b)!==-1&&(e=this,f=b,g=c),a.events.fn[f]||(a.events.fn[f]=[]),a.events.fn[f].push(g),!0}},cache:{}},a.forEach(["trigger","listen"],function(b){a[b]=a.events.fn[b]})}(Caman),function(a){a.manip.pixelInfo=function(a){this.loc=0,this.manip=a},a.manip.pixelInfo.prototype.locationXY=function(){var a,b;return b=this.manip.dimensions.height-Math.floor(this.loc/(this.manip.dimensions.width*4)),a=this.loc%(this.manip.dimensions.width*4)/4,{x:a,y:b}},a.manip.pixelInfo.prototype.getPixelRelative=function(a,b){var c=this.loc+this.manip.dimensions.width*4*b*-1+4*a;return c>this.manip.pixel_data.length||c<0?{r:0,g:0,b:0,a:0}:{r:this.manip.pixel_data[c],g:this.manip.pixel_data[c+1],b:this.manip.pixel_data[c+2],a:this.manip.pixel_data[c+3]}},a.manip.pixelInfo.prototype.putPixelRelative=function(a,b,c){var d=this.loc+this.manip.dimensions.width*4*b*-1+4*a;if(d>this.manip.pixel_data.length||d<0)return!1;this.manip.pixel_data[d]=c.r,this.manip.pixel_data[d+1]=c.g,this.manip.pixel_data[d+2]=c.b,this.manip.pixel_data[d+3]=c.a},a.manip.pixelInfo.prototype.getPixel=function(a,b){var c=(b*this.manip.dimensions.width+a)*4;return{r:this.manip.pixel_data[c],g:this.manip.pixel_data[c+1],b:this.manip.pixel_data[c+2],a:this.manip.pixel_data[c+3]}},a.manip.pixelInfo.prototype.putPixel=function(a,b,c){var d=(b*this.manip.dimensions.width+a)*4;this.manip.pixel_data[d]=c.r,this.manip.pixel_data[d+1]=c.g,this.manip.pixel_data[d+2]=c.b,this.manip.pixel_data[d+3]=c.a}}(Caman),function(a){a.renderBlocks=4,a.ProcessType={SINGLE:1,KERNEL:2,LAYER_DEQUEUE:3,LAYER_FINISHED:4,LOAD_OVERLAY:5,PLUGIN:6},a.manip.process=function(b,c){return this.renderQueue.push({adjust:b,processFn:c,type:a.ProcessType.SINGLE}),this},a.manip.processKernel=function(b,c,d,e){if(!d){d=0;for(var f=0,g=c.length;f<g;f++)d+=c[f]}var h={name:b,adjust:c,divisor:d,bias:e||0};return this.renderQueue.push({adjust:h,processFn:a.processKernel,type:a.ProcessType.KERNEL}),this},a.manip.processPlugin=function(b,c){return this.renderQueue.push({type:a.ProcessType.PLUGIN,plugin:b,args:c}),this},a.manip.executePlugin=function(b,c){console.log("Executing plugin: "+b),a.plugin[b].apply(this,c),console.log("Plugin "+b+" finished!"),this.processNext()},a.manip.processNext=function(b){typeof b=="function"&&(this.finishedFn=b);if(this.renderQueue.length===0){a.trigger("renderFinished",{id:this.canvas_id}),typeof this.finishedFn=="function"&&this.finishedFn.call(this);return}var c=this.renderQueue.shift();if(c.type==a.ProcessType.LAYER_DEQUEUE){var d=this.canvasQueue.shift();this.executeLayer(d)}else c.type==a.ProcessType.LAYER_FINISHED?(this.applyCurrentLayer(),this.popContext(),this.processNext()):c.type==a.ProcessType.LOAD_OVERLAY?this.loadOverlay(c.layer,c.src):c.type==a.ProcessType.PLUGIN?this.executePlugin(c.plugin,c.args):this.executeFilter(c.adjust,c.processFn,c.type)},a.extend(a,{processKernel:function(a,b,c,d){var e={r:0,g:0,b:0};for(var f=0,g=a.length;f<g;f++)e.r+=a[f]*b[f*3],e.g+=a[f]*b[f*3+1],e.b+=a[f]*b[f*3+2];return e.r=e.r/c+d,e.g=e.g/c+d,e.b=e.b/c+d,e}}),a.manip.executeFilter=function(b,c,d){var e=this.pixel_data.length,f=Math.floor(e/4/a.renderBlocks),g=f*4,h=g+e/4%a.renderBlocks*4,i=this,j=0,k=function(b){b>=0&&console.log("Block #"+b+" finished! Filter: "+c.name),j++;if(j==a.renderBlocks||b==-1)b>=0?console.log("Filter "+c.name+" finished!"):console.log("Kernel filter finished!"),a.trigger("processComplete",{id:i.canvas_id,completed:c.name}),i.processNext()},l=function(d,e,f){console.log("BLOCK #"+d+" - Filter: "+c.name+", Start: "+e+", End: "+f);var g=function(){var g={r:0,g:0,b:0,a:0},h=new this.pixelInfo(i),j;for(var l=e;l<f;l+=4)h.loc=l,g.r=this.pixel_data[l],g.g=this.pixel_data[l+1],g.b=this.pixel_data[l+2],j=c.call(h,b,g),this.pixel_data[l]=a.clampRGB(j.r),this.pixel_data[l+1]=a.clampRGB(j.g),this.pixel_data[l+2]=a.clampRGB(j.b);k(d)}.bind(this);setTimeout(g,0)},m=function(){var d=function(){var d=[],f,g,h,j,l,m=b.name,n=b.bias,o=b.divisor,p,q,r,s,t,u,v;b=b.adjust,p=Math.sqrt(b.length),l=[],console.log("Rendering kernel - Filter: "+m),h=i.dimensions.width*4*((p-1)/2),j=e-i.dimensions.width*4*((p-1)/2),q=(p-1)/2,f=new i.pixelInfo(i);for(s=h;s<j;s+=4){f.loc=s,r=0;for(t=-q;t<=q;t++)for(u=q;u>=-q;u--)g=f.getPixelRelative(t,u),d[r*3]=g.r,d[r*3+1]=g.g,d[r*3+2]=g.b,r++;v=c.call(f,b,d,o,n),l[s]=a.clampRGB(v.r),l[s+1]=a.clampRGB(v.g),l[s+2]=a.clampRGB(v.b),l[s+3]=255}for(s=h;s<j;s++)i.pixel_data[s]=l[s];k(-1)}.bind(this);setTimeout(d,0)};a.trigger("processStart",{id:this.canvas_id,start:c.name});if(d===a.ProcessType.SINGLE)for(var n=0;n<a.renderBlocks;n++){var o=n*g,p=o+(n==a.renderBlocks-1?h:g);l.call(this,n,o,p)}else m.call(this)},a.extend(a.manip,{revert:function(a){this.loadCanvas(this.options.image,this.options.canvas,a)},render:function(a){this.processNext(function(){this.context.putImageData(this.image_data,0,0),typeof a=="function"&&a.call(this)})}})}(Caman),function(a){a.manip.loadOverlay=function(b,c){var d=a.remoteCheck(c),e=this;d&&(c=d);var f=document.createElement("img");f.onload=function(){b.context.drawImage(f,0,0,e.dimensions.width,e.dimensions.height),b.image_data=b.context.getImageData(0,0,e.dimensions.width,e.dimensions.height),b.pixel_data=b.image_data.data,e.pixel_data=b.pixel_data,e.processNext()},f.src=c},a.manip.canvasLayer=function(b){return this.options={blendingMode:"normal",opacity:1},this.layerID=a.uniqid.get(),this.canvas=document.createElement("canvas"),this.canvas.width=b.dimensions.width,this.canvas.height=b.dimensions.height,this.context=this.canvas.getContext("2d"),this.context.createImageData(this.canvas.width,this.canvas.height),this.image_data=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),this.pixel_data=this.image_data.data,this.__defineGetter__("filter",function(){return b}),this},a.manip.canvasLayer.prototype.newLayer=function(a){return this.filter.newLayer.call(this.filter,a)},a.manip.canvasLayer.prototype.setBlendingMode=function(a){return this.options.blendingMode=a,this},a.manip.canvasLayer.prototype.opacity=function(a){return this.options.opacity=a/100,this},a.manip.canvasLayer.prototype.copyParent=function(){var a=this.filter.pixel_data;for(var b=0;b<this.pixel_data.length;b+=4)this.pixel_data[b]=a[b],this.pixel_data[b+1]=a[b+1],this.pixel_data[b+2]=a[b+2],this.pixel_data[b+3]=a[b+3];return this},a.manip.canvasLayer.prototype.fillColor=function(){return this.filter.fillColor.apply(this.filter,arguments),this},a.manip.canvasLayer.prototype.overlayImage=function(b){b[0]=="#"?b=a.$(b).src:typeof b=="object"&&(b=b.src);if(!b)return;return this.filter.renderQueue.push({type:a.ProcessType.LOAD_OVERLAY,src:b,layer:this}),this},a.manip.canvasLayer.prototype.render=function(){},a.manip.canvasLayer.prototype.applyToParent=function(){var b=this.filter.pixelStack[this.filter.pixelStack.length-1],c=this.filter.pixel_data,d={},e={},f={};for(var g=0;g<c.length;g+=4)d={r:b[g],g:b[g+1],b:b[g+2],a:b[g+3]},e={r:c[g],g:c[g+1],b:c[g+2],a:c[g+3]},f=this.blenders[this.options.blendingMode](e,d),f.r=a.clampRGB(f.r),f.g=a.clampRGB(f.g),f.b=a.clampRGB(f.b),b[g]=d.r-(d.r-f.r)*this.options.opacity*(f.a/255),b[g+1]=d.g-(d.g-f.g)*this.options.opacity*(f.a/255),b[g+2]=d.b-(d.b-f.b)*this.options.opacity*(f.a/255),b[g+3]=255},a.manip.canvasLayer.prototype.blenders={normal:function(a,b){return{r:a.r,g:a.g,b:a.b,a:255}},multiply:function(a,b){return{r:a.r*b.r/255,g:a.g*b.g/255,b:a.b*b.b/255,a:255}},screen:function(a,b){return{r:255-(255-a.r)*(255-b.r)/255,g:255-(255-a.g)*(255-b.g)/255,b:255-(255-a.b)*(255-b.b)/255,a:255}},overlay:function(a,b){var c={};return c.r=b.r>128?255-2*(255-a.r)*(255-b.r)/255:b.r*a.r*2/255,c.g=b.g>128?255-2*(255-a.g)*(255-b.g)/255:b.g*a.g*2/255,c.b=b.b>128?255-2*(255-a.b)*(255-b.b)/255:b.b*a.b*2/255,c.a=255,c},difference:function(a,b){return{r:a.r-b.r,g:a.g-b.g,b:a.b-b.b,a:255}},addition:function(a,b){return{r:b.r+a.r,g:b.g+a.g,b:b.b+a.b,a:255}},exclusion:function(a,b){return{r:128-2*(b.r-128)*(a.r-128)/255,g:128-2*(b.g-128)*(a.g-128)/255,b:128-2*(b.b-128)*(a.b-128)/255,a:255}},softLight:function(a,b){var c={};return c.r=b.r>128?255-(255-b.r)*(255-(a.r-128))/255:b.r*(a.r+128)/255,c.g=b.g>128?255-(255-b.g)*(255-(a.g-128))/255:b.g*(a.g+128)/255,c.b=b.b>128?255-(255-b.b)*(255-(a.b-128))/255:b.b*(a.b+128)/255,c.a=255,c}},a.manip.blenders=a.manip.canvasLayer.prototype.blenders,a.manip.canvasQueue=[],a.manip.newLayer=function(b){var c=new a.manip.canvasLayer(this);return this.canvasQueue.push(c),this.renderQueue.push({type:a.ProcessType.LAYER_DEQUEUE}),b.call(c),this.renderQueue.push({type:a.ProcessType.LAYER_FINISHED}),this},a.manip.executeLayer=function(a){this.pushContext(a),this.processNext()},a.manip.pushContext=function(a){console.log("PUSH LAYER!"),this.layerStack.push(this.currentLayer),this.pixelStack.push(this.pixel_data),this.currentLayer=a,this.pixel_data=a.pixel_data},a.manip.popContext=function(){console.log("POP LAYER!"),this.pixel_data=this.pixelStack.pop(),this.currentLayer=this.layerStack.pop()},a.manip.applyCurrentLayer=function(){this.currentLayer.applyToParent()}}(Caman),function(a){a.manip.fillColor=function(){var b;return arguments.length==1?b=a.hex_to_rgb(arguments[0]):b={r:arguments[0],g:arguments[1],b:arguments[2]},this.process(b,function(a,b){return b.r=a.r,b.g=a.g,b.b=a.b,b})},a.manip.brightness=function(a){return a=Math.floor(255*(a/100)),this.process(a,function b(a,b){return b.r+=a,b.g+=a,b.b+=a,b})},a.manip.saturation=function(a){var b,c;return a*=-0.01,this.process(a,function d(a,d){var e;return b=Math.max(d.r,d.g,d.b),d.r!==b&&(c=b-d.r,d.r+=c*a),d.g!==b&&(c=b-d.g,d.g+=c*a),d.b!==b&&(c=b-d.b,d.b+=c*a),d})},a.manip.vibrance=function(a){var b,c,d,e;return a*=-1,this.process(a,function f(a,f){var g;return b=Math.max(f.r,f.g,f.b),c=(f.r+f.g+f.b)/3,d=Math.abs(b-c)*2/255*a/100,f.r!==b&&(e=b-f.r,f.r+=e*d),f.g!==b&&(e=b-f.g,f.g+=e*d),f.b!==b&&(e=b-f.b,f.b+=e*d),f})},a.manip.greyscale=function(){return this.process({},function(a,b){var c=.3*b.r+.59*b.g+.11*b.b;return b.r=c,b.g=c,b.b=c,b})},a.manip.contrast=function(a){return a=(a+100)/100,a=Math.pow(a,2),this.process(a,function b(a,b){return b.r/=255,b.r-=.5,b.r*=a,b.r+=.5,b.r*=255,b.g/=255,b.g-=.5,b.g*=a,b.g+=.5,b.g*=255,b.b/=255,b.b-=.5,b.b*=a,b.b+=.5,b.b*=255,b.r>255?b.r=255:b.r<0&&(b.r=0),b.g>255?b.g=255:b.g<0&&(b.g=0),b.b>255?b.b=255:b.b<0&&(b.b=0),b})},a.manip.hue=function(b){var c,d;return this.process(b,function e(b,e){var f;return c=a.rgb_to_hsv(e.r,e.g,e.b),d=c.h*100,d+=Math.abs(b),d%=100,d/=100,c.h=d,f=a.hsv_to_rgb(c.h,c.s,c.v),{r:f.r,g:f.g,b:f.b}})},a.manip.colorize=function(){var b,c,d;return arguments.length===2?(c=a.hex_to_rgb(arguments[0]),d=arguments[1]):arguments.length===4&&(c={r:arguments[0],g:arguments[1],b:arguments[2]},d=arguments[3]),this.process([d,c],function(a,b){return b.r-=(b.r-a[1].r)*(a[0]/100),b.g-=(b.g-a[1].g)*(a[0]/100),b.b-=(b.b-a[1].b)*(a[0]/100),b})},a.manip.invert=function(){return this.process({},function(a,b){return b.r=255-b.r,b.g=255-b.g,b.b=255-b.b,b})},a.manip.sepia=function(a){return a===undefined&&(a=100),a/=100,this.process(a,function b(a,b){return b.r=Math.min(255,b.r*(1-.607*a)+b.g*.769*a+b.b*.189*a),b.g=Math.min(255,b.r*.349*a+b.g*(1-.314*a)+b.b*.168*a),b.b=Math.min(255,b.r*.272*a+b.g*.534*a+b.b*(1-.869*a)),b})},a.manip.gamma=function(a){return this.process(a,function b(a,b){return b.r=Math.pow(b.r/255,a)*255,b.g=Math.pow(b.g/255,a)*255,b.b=Math.pow(b.b/255,a)*255,b})},a.manip.noise=function(b){return b=Math.abs(b)*2.55,this.process(b,function c(b,c){var d=a.randomRange(b*-1,b);return c.r+=d,c.g+=d,c.b+=d,c})},a.manip.clip=function(a){return a=Math.abs(a)*2.55,this.process(a,function b(a,b){return b.r>255-a?b.r=255:b.r<a&&(b.r=0),b.g>255-a?b.g=255:b.g<a&&(b.g=0),b.b>255-a?b.b=255:b.b<a&&(b.b=0),b})},a.manip.channels=function(a){if(typeof a!="object")return;for(var b in a)if(a.hasOwnProperty(b)){if(a[b]===0){delete a[b];continue}a[b]=a[b]/100}return a.length===0?this:this.process(a,function(a,b){return a.red&&(a.red>0?b.r=b.r+(255-b.r)*a.red:b.r=b.r-b.r*Math.abs(a.red)),a.green&&(a.green>0?b.g=b.g+(255-b.g)*a.green:b.g=b.g-b.g*Math.abs(a.green)),a.blue&&(a.blue>0?b.b=b.b+(255-b.b)*a.blue:b.b=b.b-b.b*Math.abs(a.blue)),b})},a.manip.curves=function(b,c,d,e,f){var g,h;typeof b=="string"&&(b=b.split("")),g=a.bezier(c,d,e,f,0,255);if(c[0]>0)for(h=0;h<c[0];h++)g[h]=c[1];if(f[0]<255)for(h=f[0];h<=255;h++)g[h]=f[1];return this.process({bezier:g,chans:b},function(a,b){for(var c=0;c<a.chans.length;c++)b[a.chans[c]]=a.bezier[b[a.chans[c]]];return b})},a.manip.exposure=function(a){var b,c,d;return b=Math.abs(a)/100,c=[0,255*b],d=[255-255*b,255],a<0&&(c=c.reverse(),d=d.reverse()),this.curves("rgb",[0,0],c,d,[255,255])}}(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){a.manip.boxBlur=function(){return this.processKernel("Box Blur",[1,1,1,1,1,1,1,1,1])},a.manip.radialBlur=function(){return this.processKernel("Radial Blur",[0,1,0,1,1,1,0,1,0],5)},a.manip.heavyRadialBlur=function(){return this.processKernel("Heavy Radial Blur",[0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0],13)},a.manip.gaussianBlur=function(){return this.processKernel("Gaussian Blur",[1,4,6,4,1,4,16,24,16,4,6,24,36,24,6,4,16,24,16,4,1,4,6,4,1],256)},a.manip.motionBlur=function(a){var b;return a===0||a==180?b=[0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0]:a>0&&a<90||a>180&&a<270?b=[0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0]:a==90||a==270?b=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]:b=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],this.processKernel("Motion Blur",b,5)},a.manip.sharpen=function(a){return a?a/=100:a=1,this.processKernel("Sharpen",[0,-a,0,-a,4*a+1,-a,0,-a,0])}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){var b={brightness:function(a,b,c){return a.r=a.r-a.r*b*c.strength,a.g=a.g-a.g*b*c.strength,a.b=a.b-a.b*b*c.strength,a},gamma:function(a,b,c){return a.r=Math.pow(a.r/255,Math.max(10*b*c.strength,1))*255,a.g=Math.pow(a.g/255,Math.max(10*b*c.strength,1))*255,a.b=Math.pow(a.b/255,Math.max(10*b*c.strength,1))*255,a},colorize:function(a,b,c){return a.r-=(a.r-c.color.r)*b,a.g-=(a.g-c.color.g)*b,a.b-=(a.b-c.color.b)*b,a}};a.manip.vignette=function(b,c){var d,e,f,g,h,i,j;return typeof b=="string"&&b.substr(-1)=="%"&&(this.dimensions.height>this.dimensions.width?b=this.dimensions.width*(Number(b.substr(0,b.length-1))/100):b=this.dimensions.height*(Number(b.substr(0,b.length-1))/100)),c?c/=100:c=.6,d=[this.dimensions.width/2,this.dimensions.height/2],e=Math.sqrt(Math.pow(d[0],2)+Math.pow(d[1],2)),f=e-b,j=a.bezier([0,1],[30,30],[70,60],[100,80]),this.process({center:d,start:e,end:f,size:b,strength:c,bezier:j},function(a,b){return g=this.locationXY(),h=Math.sqrt(Math.pow(g.x-a.center[0],2)+Math.pow(g.y-a.center[1],2)),h>a.end&&(i=Math.max(1,a.bezier[Math.round((h-a.end)/a.size*100)]/10*c),b.r=Math.pow(b.r/255,i)*255,b.g=Math.pow(b.g/255,i)*255,b.b=Math.pow(b.b/255,i)*255),b})},a.manip.rectangularVignette=function(c){var d={strength:50,cornerRadius:0,method:"brightness",color:{r:0,g:0,b:0}};c=a.extend(d,c);if(!c.size)return this;if(typeof c.size=="string"){var e=parseInt(c.size,10)/100;c.size={width:this.dimensions.width*e,height:this.dimensions.height*e}}else if(typeof c.size=="object")typeof c.size.width=="string"&&(c.size.width=this.dimensions.width*(parseInt(c.size.width,10)/100)),typeof c.size.height=="string"&&(c.size.height=this.dimensions.height*(parseInt(c.size.height,10)/100));else if(typeof c.size=="number"){var f=c.size;c.size={width:f,height:f}}typeof c.cornerRadius=="string"&&(c.cornerRadius=c.size.width/2*(parseInt(c.cornerRadius,10)/100)),c.strength/=100,c.size.width=Math.floor(c.size.width),c.size.height=Math.floor(c.size.height),c.image={width:this.dimensions.width,height:this.dimensions.height},c.method=="colorize"&&typeof c.color=="string"&&(c.color=a.hex_to_rgb(c.color)),c.coords={},c.coords.left=(this.dimensions.width-c.size.width)/2,c.coords.right=this.dimensions.width-c.coords.left,c.coords.bottom=(this.dimensions.height-c.size.height)/2,c.coords.top=this.dimensions.height-c.coords.bottom,c.corners=[{x:c.coords.left+c.cornerRadius,y:c.coords.top-c.cornerRadius},{x:c.coords.right-c.cornerRadius,y:c.coords.top-c.cornerRadius},{x:c.coords.right-c.cornerRadius,y:c.coords.bottom+c.cornerRadius},{x:c.coords.left+c.cornerRadius,y:c.coords.bottom+c.cornerRadius}],c.maxDist=a.distance(0,0,c.corners[3].x,c.corners[3].y)-c.cornerRadius;var g,h,i;return this.process(c,function(c,d){return g=this.locationXY(),g.x>c.corners[0].x&&g.x<c.corners[1].x&&g.y>c.coords.bottom&&g.y<c.coords.top?d:g.x>c.coords.left&&g.x<c.coords.right&&g.y>c.corners[3].y&&g.y<c.corners[2].y?d:(g.x>c.corners[0].x&&g.x<c.corners[1].x&&g.y>c.coords.top?h=(g.y-c.coords.top)/c.maxDist:g.y>c.corners[2].y&&g.y<c.corners[1].y&&g.x>c.coords.right?h=(g.x-c.coords.right)/c.maxDist:g.x>c.corners[0].x&&g.x<c.corners[1].x&&g.y<c.coords.bottom?h=(c.coords.bottom-g.y)/c.maxDist:g.y>c.corners[2].y&&g.y<c.corners[1].y&&g.x<c.coords.left?h=(c.coords.left-g.x)/c.maxDist:g.x<=c.corners[0].x&&g.y>=c.corners[0].y?(i=a.distance(g.x,g.y,c.corners[0].x,c.corners[0].y),h=(i-c.cornerRadius)/c.maxDist):g.x>=c.corners[1].x&&g.y>=c.corners[1].y?(i=a.distance(g.x,g.y,c.corners[1].x,c.corners[1].y),h=(i-c.cornerRadius)/c.maxDist):g.x>=c.corners[2].x&&g.y<=c.corners[2].y?(i=a.distance(g.x,g.y,c.corners[2].x,c.corners[2].y),h=(i-c.cornerRadius)/c.maxDist):g.x<=c.corners[3].x&&g.y<=c.corners[3].y&&(i=a.distance(g.x,g.y,c.corners[3].x,c.corners[3].y),h=(i-c.cornerRadius)/c.maxDist),h<0?d:b[c.method](d,h,c))})}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){function d(a,b,c,d,e,f,g){var h=document.createElement("canvas");h.width=a,h.height=b;var i=c+Math.cos(e)*f*.5,j=d+Math.sin(e)*f*.5,k=c-Math.cos(e)*f*.5,l=d-Math.sin(e)*f*.5,m=h.getContext("2d"),n=m.createLinearGradient(i,j,k,l);return g?(n.addColorStop(0,"white"),n.addColorStop(.5,"black"),n.addColorStop(1,"white")):(n.addColorStop(0,"white"),n.addColorStop(1,"black")),m.fillStyle=n,m.fillRect(0,0,a,b),m.getImageData(0,0,a,b)}function e(a,b,c,d,e,f){var g=document.createElement("canvas");g.width=a,g.height=b;var h=g.getContext("2d"),i=h.createRadialGradient(c,d,e,c,d,f);return i.addColorStop(1,"white"),i.addColorStop(0,"black"),h.fillStyle=i,h.fillRect(0,0,a,b),h.getImageData(0,0,a,b)}function f(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var b=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],c=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];a.plugin.compoundBlur=function(a,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B=this.dimensions.width,C=this.dimensions.height,D=this.pixel_data,E=a.data,F=B*C,G=F<<2,H=[];for(j=0;j<G;j++)H[j]=D[j];var I=0,J=g;g-=1;while(J-->=0){var K=d+.5|0;if(K===0)continue;K>256&&(K=256);var L=K+K+1,M=B<<2,N=B-1,O=C-1,P=K+1,Q=P*(P+1)/2,R=new f,S,T=R;for(j=1;j<L;j++)T=T.next=new f,j==P&&(S=T);T.next=R;var U=null,V=null;n=m=0;var W=b[K],X=c[K];for(i=0;i<C;i++){u=v=w=o=p=q=0,r=P*(x=H[m]),s=P*(y=H[m+1]),t=P*(z=H[m+2]),o+=Q*x,p+=Q*y,q+=Q*z,T=R;for(j=0;j<P;j++)T.r=x,T.g=y,T.b=z,T=T.next;for(j=1;j<P;j++)k=m+((N<j?N:j)<<2),o+=(T.r=x=H[k])*(A=P-j),p+=(T.g=y=H[k+1])*A,q+=(T.b=z=H[k+2])*A,u+=x,v+=y,w+=z,T=T.next;U=R,V=S;for(h=0;h<B;h++)H[m]=o*W>>X,H[m+1]=p*W>>X,H[m+2]=q*W>>X,o-=r,p-=s,q-=t,r-=U.r,s-=U.g,t-=U.b,k=n+((k=h+P)<N?k:N)<<2,u+=U.r=H[k],v+=U.g=H[k+1],w+=U.b=H[k+2],o+=u,p+=v,q+=w,U=U.next,r+=x=V.r,s+=y=V.g,t+=z=V.b,u-=x,v-=y,w-=z,V=V.next,m+=4;n+=B}for(h=0;h<B;h++){v=w=u=p=q=o=0,m=h<<2,r=P*(x=H[m]),s=P*(y=H[m+1]),t=P*(z=H[m+2]),o+=Q*x,p+=Q*y,q+=Q*z,T=R;for(j=0;j<P;j++)T.r=x,T.g=y,T.b=z,T=T.next;l=B;for(j=1;j<P;j++)m=l+h<<2,o+=(T.r=x=H[m])*(A=P-j),p+=(T.g=y=H[m+1])*A,q+=(T.b=z=H[m+2])*A,u+=x,v+=y,w+=z,T=T.next,j<O&&(l+=B);m=h,U=R,V=S;for(i=0;i<C;i++)k=m<<2,H[k]=o*W>>X,H[k+1]=p*W>>X,H[k+2]=q*W>>X,o-=r,p-=s,q-=t,r-=U.r,s-=U.g,t-=U.b,k=h+((k=i+P)<O?k:O)*B<<2,o+=u+=U.r=H[k],p+=v+=U.g=H[k+1],q+=w+=U.b=H[k+2],U=U.next,r+=x=V.r,s+=y=V.g,t+=z=V.b,u-=x,v-=y,w-=z,V=V.next,m+=B}d*=e;for(j=F;--j>-1;){var Y=j<<2,Z=(E[Y+2]&255)/255*g,$=Z|0;if($==I){var _=256*(Z-(Z|0)),ba=256-_;D[Y]=D[Y]*ba+H[Y]*_>>8,D[Y+1]=D[Y+1]*ba+H[Y+1]*_>>8,D[Y+2]=D[Y+2]*ba+H[Y+2]*_>>8}else $==I+1&&(D[Y]=H[Y],D[Y+1]=H[Y+1],D[Y+2]=H[Y+2])}I++}return this},a.manip.tiltShift=function(b){var c=this,e={center:{x:c.dimensions.width/2,y:c.dimensions.height/2},angle:45,focusWidth:200,startRadius:3,radiusFactor:1.5,steps:3};b=a.extend(e,b),b.angle*=Math.PI/180;var f=d(this.dimensions.width,this.dimensions.height,b.center.x,b.center.y,b.angle,b.focusWidth,!0);return this.processPlugin("compoundBlur",[f,b.startRadius,b.radiusFactor,b.steps])},a.manip.vignetteBlur=function(b){var c=this,d={size:50,center:{x:c.dimensions.width/2,y:c.dimensions.height/2},startRadius:3,radiusFactor:1.5,steps:3};b=a.extend(d,b);var f=this.dimensions.width<this.dimensions.height?this.dimensions.height:this.dimensions.width,g=f/2-b.size,h=f/2;console.log(g,h);var i=e(this.dimensions.width,this.dimensions.height,b.center.x,b.center.y,g,h);return this.processPlugin("compoundBlur",[i,b.startRadius,b.radiusFactor,b.steps])}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){a.manip.edgeEnhance=function(){return this.processKernel("Edge Enhance",[[0,0,0],[-1,1,0],[0,0,0]])},a.manip.edgeDetect=function(){return this.processKernel("Edge Detect",[[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])},a.manip.emboss=function(){return this.processKernel("Emboss",[[-2,-1,0],[-1,1,1],[0,1,2]])}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){a.manip.posterize=function(a){var b=256/a,c=255/(a-1);return this.process([b,c],function(a,b){return b.r=Math.floor(Math.floor(b.r/a[0])*a[1]),b.g=Math.floor(Math.floor(b.g/a[0])*a[1]),b.b=Math.floor(Math.floor(b.b/a[0])*a[1]),b})}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){a.manip.vintage=function(a){return this.greyscale().contrast(5).noise(3).sepia(100).channels({red:8,blue:2,green:4}).gamma(.87),(a||typeof a=="undefined")&&this.vignette("40%",30),this},a.manip.lomo=function(){return this.brightness(15).exposure(15).curves("rgb",[0,0],[200,0],[155,255],[255,255]).saturation(-20).gamma(1.8).vignette("50%",60).brightness(5)},a.manip.clarity=function(a){var b=this.vibrance(20).curves("rgb",[5,0],[130,150],[190,220],[250,255]).sharpen(15).vignette("45%",20);return a&&this.greyscale().contrast(4),b},a.manip.sinCity=function(){return this.contrast(100).brightness(15).exposure(10).curves("rgb",[0,0],[100,0],[155,255],[255,255]).clip(30).greyscale()},a.manip.sunrise=function(){return this.exposure(3.5).saturation(-5).vibrance(50).sepia(60).colorize("#e87b22",10).channels({red:8,blue:8}).contrast(5).gamma(1.2).vignette("55%",25)},a.manip.crossProcess=function(){return this.exposure(5).colorize("#e87b22",4).sepia(20).channels({blue:8,red:3}).curves("b",[0,0],[100,150],[180,180],[255,255]).contrast(15).vibrance(75).gamma(1.6)},a.manip.orangePeel=function(){return this.curves("rgb",[0,0],[100,50],[140,200],[255,255]).vibrance(-30).saturation(-30).colorize("#ff9000",30).contrast(-5).gamma(1.4)},a.manip.love=function(){return this.brightness(5).exposure(8).colorize("#c42007",30).vibrance(50).gamma(1.3)},a.manip.grungy=function(){return this.gamma(1.5).clip(25).saturation(-60).contrast(5).noise(5).vignette("50%",30)},a.manip.jarques=function(){return this.saturation(-35).curves("b",[20,0],[90,120],[186,144],[255,230]).curves("r",[0,0],[144,90],[138,120],[255,255]).curves("g",[10,0],[115,105],[148,100],[255,248]).curves("rgb",[0,0],[120,100],[128,140],[255,255]).sharpen(20)},a.manip.pinhole=function(){return this.greyscale().sepia(10).exposure(10).contrast(15).vignette("60%",35)},a.manip.oldBoot=function(){return this.saturation(-20).vibrance(-50).gamma(1.1).sepia(30).channels({red:-10,blue:5}).curves("rgb",[0,0],[80,50],[128,230],[255,255]).vignette("60%",30)},a.manip.glowingSun=function(){return this.brightness(10),this.newLayer(function(){this.setBlendingMode("multiply"),this.opacity(80),this.copyParent(),this.filter.gamma(.8),this.filter.contrast(50),this.filter.exposure(10)}),this.newLayer(function(){this.setBlendingMode("softLight"),this.opacity(80),this.fillColor("#f49600")}),this.exposure(20),this.gamma(.8),this.vignette("45%",20)},a.manip.hazyDays=function(){return this.gamma(1.2),this.newLayer(function(){this.setBlendingMode("overlay"),this.opacity(60),this.copyParent(),this.filter.channels({red:5}),this.filter.stackBlur(15)}),this.newLayer(function(){this.setBlendingMode("addition"),this.opacity(40),this.fillColor("#6899ba")}),this.newLayer(function(){this.setBlendingMode("multiply"),this.opacity(35),this.copyParent(),this.filter.brightness(40),this.filter.vibrance(40),this.filter.exposure(30),this.filter.contrast(15),this.filter.curves("r",[0,40],[128,128],[128,128],[255,215]),this.filter.curves("g",[0,40],[128,128],[128,128],[255,215]),this.filter.curves("b",[0,40],[128,128],[128,128],[255,215]),this.filter.stackBlur(5)}),this.curves("r",[20,0],[128,158],[128,128],[235,255]),this.curves("g",[20,0],[128,128],[128,128],[235,255]),this.curves("b",[20,0],[128,108],[128,128],[235,255]),this.vignette("45%",20)},a.manip.herMajesty=function(){return this.brightness(40),this.colorize("#ea1c5d",10),this.curves("b",[0,10],[128,180],[190,190],[255,255]),this.newLayer(function(){this.setBlendingMode("overlay"),this.opacity(50),this.copyParent(),this.filter.gamma(.7),this.newLayer(function(){this.setBlendingMode("normal"),this.opacity(60),this.fillColor("#ea1c5d")})}),this.newLayer(function(){this.setBlendingMode("multiply"),this.opacity(60),this.copyParent(),this.filter.saturation(50),this.filter.hue(90),this.filter.contrast(10)}),this.gamma(1.4),this.vibrance(-30),this.newLayer(function(){this.opacity(10),this.fillColor("#e5f0ff")}),this},a.manip.nostalgia=function(){return this.saturation(20).gamma(1.4).greyscale().contrast(5).sepia(100).channels({red:8,blue:2,green:4}).gamma(.8).contrast(5).exposure(10),this.newLayer(function(){this.setBlendingMode("overlay"),this.copyParent(),this.opacity(55),this.filter.stackBlur(10)}),this.vignette("50%",30)},a.manip.hemingway=function(){return this.greyscale(),this.contrast(10),this.gamma(.9),this.newLayer(function(){this.setBlendingMode("multiply"),this.opacity(40),this.copyParent(),this.filter.exposure(15),this.filter.contrast(15),this.filter.channels({green:10,red:5})}),this.sepia(30),this.curves("rgb",[0,10],[120,90],[180,200],[235,255]),this.channels({red:5,green:-2}),this.exposure(15),this},a.manip.loveBug=function(){return this.greyscale(),this.colorize("#005ef7",10),this.newLayer(function(){this.setBlendingMode("multiply"),this.opacity(30),this.copyParent(),this.filter.gamma(1.6)}),this.contrast(10),this.newLayer(function(){this.setBlendingMode("exclusion"),this.opacity(50),this.copyParent(),this.filter.gamma(1.4),this.filter.colorize("#ff00d0",50),this.filter.rectangularVignette({size:{width:"80%",height:"60%"},strength:60,cornerRadius:"70%",method:"brightness"}),this.filter.stackBlur(3)}),this.exposure(15),this.rectangularVignette({size:{width:"90%",height:"70%"},strength:30,cornerRadius:"70%",method:"colorize",color:"#001138"}),this}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){function d(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var b=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],c=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];a.plugin.stackBlur=function(a){if(isNaN(a)||a<1)return;a|=0;var e=this.pixel_data,f=this.dimensions.width,g=this.dimensions.height,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B=a+a+1,C=f<<2,D=f-1,E=g-1,F=a+1,G=F*(F+1)/2,H=new d,I=H,J;for(j=1;j<B;j++)I=I.next=new d,j==F&&(J=I);I.next=H;var K=null,L=null;n=m=0;var M=b[a],N=c[a];for(i=0;i<g;i++){u=v=w=o=p=q=0,r=F*(x=e[m]),s=F*(y=e[m+1]),t=F*(z=e[m+2]),o+=G*x,p+=G*y,q+=G*z,I=H;for(j=0;j<F;j++)I.r=x,I.g=y,I.b=z,I=I.next;for(j=1;j<F;j++)k=m+((D<j?D:j)<<2),o+=(I.r=x=e[k])*(A=F-j),p+=(I.g=y=e[k+1])*A,q+=(I.b=z=e[k+2])*A,u+=x,v+=y,w+=z,I=I.next;K=H,L=J;for(h=0;h<f;h++)e[m]=o*M>>N,e[m+1]=p*M>>N,e[m+2]=q*M>>N,o-=r,p-=s,q-=t,r-=K.r,s-=K.g,t-=K.b,k=n+((k=h+a+1)<D?k:D)<<2,u+=K.r=e[k],v+=K.g=e[k+1],w+=K.b=e[k+2],o+=u,p+=v,q+=w,K=K.next,r+=x=L.r,s+=y=L.g,t+=z=L.b,u-=x,v-=y,w-=z,L=L.next,m+=4;n+=f}for(h=0;h<f;h++){v=w=u=p=q=o=0,m=h<<2,r=F*(x=e[m]),s=F*(y=e[m+1]),t=F*(z=e[m+2]),o+=G*x,p+=G*y,q+=G*z,I=H;for(j=0;j<F;j++)I.r=x,I.g=y,I.b=z,I=I.next;l=f;for(j=1;j<=a;j++)m=l+h<<2,o+=(I.r=x=e[m])*(A=F-j),p+=(I.g=y=e[m+1])*A,q+=(I.b=z=e[m+2])*A,u+=x,v+=y,w+=z,I=I.next,j<E&&(l+=f);m=h,K=H,L=J;for(i=0;i<g;i++)k=m<<2,e[k]=o*M>>N,e[k+1]=p*M>>N,e[k+2]=q*M>>N,o-=r,p-=s,q-=t,r-=K.r,s-=K.g,t-=K.b,k=h+((k=i+F)<E?k:E)*f<<2,o+=u+=K.r=e[k],p+=v+=K.g=e[k+1],q+=w+=K.b=e[k+2],K=K.next,r+=x=L.r,s+=y=L.g,t+=z=L.b,u-=x,v-=y,w-=z,L=L.next,m+=f}return this},a.manip.stackBlur=function(a){return this.processPlugin("stackBlur",[a])}})(Caman);if(!Caman&&typeof exports=="object"){var Caman={manip:{}};exports.plugins=Caman.manip}(function(a){a.manip.threshold=function(a){return this.process(a,function b(a,b){var c=.2126*b.r+.7152*b.g+.0722*b.b;return c<a?(b.r=0,b.g=0,b.b=0):(b.r=255,b.g=255,b.b=255),b})}})(Caman)
