diff options
23 files changed, 1723 insertions, 0 deletions
diff --git a/annotator/annotator-full.min.js b/annotator/annotator-full.min.js new file mode 100644 index 0000000..f59b787 --- /dev/null +++ b/annotator/annotator-full.min.js @@ -0,0 +1,11 @@ +/* +** Annotator v1.2.5 +** https://github.com/okfn/annotator/ +** +** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning. +** Dual licensed under the MIT and GPLv3 licenses. +** https://github.com/okfn/annotator/blob/master/LICENSE +** +** Built at: 2012-06-22 12:25:24Z +*/((function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=Array.prototype.slice,y=Object.prototype.hasOwnProperty,z=function(a,b){function d(){this.constructor=a}for(var c in b)y.call(b,c)&&(a[c]=b[c]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a},A=function(a,b){return function(){return a.apply(b,arguments)}},B=Array.prototype.indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(b in this&&this[b]===a)return b;return-1};l=null,typeof Gettext!="undefined"&&Gettext!==null?(p=new Gettext({domain:"annotator"}),l=function(a){return p.gettext(a)}):l=function(a){return a},w=function(a){return l(a)},(typeof jQuery!="undefined"&&jQuery!==null?(u=jQuery.fn)!=null?u.jquery:void 0:void 0)||console.error(w("Annotator requires jQuery: have you included lib/vendor/jquery.js?")),JSON&&JSON.parse&&JSON.stringify||console.error(w("Annotator requires a JSON implementation: have you included lib/vendor/json2.js?")),a=jQuery.sub(),a.flatten=function(b){var c;return c=function(b){var d,e,f,g;e=[];for(f=0,g=b.length;f<g;f++)d=b[f],e=e.concat(d&&a.isArray(d)?c(d):d);return e},c(b)},a.plugin=function(b,c){return jQuery.fn[b]=function(d){var e;return e=Array.prototype.slice.call(arguments,1),this.each(function(){var f;return f=a.data(this,b),f?d&&f[d].apply(f,e):(f=new c(this,d),a.data(this,b,f))})}},a.fn.textNodes=function(){var b;return b=function(a){var c;if(a&&a.nodeType!==3){c=[];if(a.nodeType!==8){a=a.lastChild;while(a)c.push(b(a)),a=a.previousSibling}return c.reverse()}return a},this.map(function(){return a.flatten(b(this))})},a.fn.xpath=function(b){var c;return c=this.map(function(){var c,d,e;e="",c=this;while(c&&c.nodeType===1&&c!==b)d=a(c.parentNode).children(c.tagName).index(c)+1,d="["+d+"]",e="/"+c.tagName.toLowerCase()+d+e,c=c.parentNode;return e}),c.get()},a.escape=function(a){return a.replace(/&(?!\w+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},a.fn.escape=function(b){return arguments.length?this.html(a.escape(b)):this.html()},a.fn.reverse=[].reverse,j=["log","debug","info","warn","exception","assert","dir","dirxml","trace","group","groupEnd","groupCollapsed","time","timeEnd","profile","profileEnd","count","clear","table","error","notifyFirebug","firebug","userObjects"];if(typeof console!="undefined"&&console!==null){console.group==null&&(console.group=function(a){return console.log("GROUP: ",a)}),console.groupCollapsed==null&&(console.groupCollapsed=console.group);for(q=0,s=j.length;q<s;q++)i=j[q],console[i]==null&&(console[i]=function(){return console.log(w("Not implemented:")+(" console."+name))})}else{this.console={};for(r=0,t=j.length;r<t;r++)i=j[r],this.console[i]=function(){};this.console.error=function(){var a;return a=1<=arguments.length?x.call(arguments,0):[],alert("ERROR: "+a.join(", "))},this.console.warn=function(){var a;return a=1<=arguments.length?x.call(arguments,0):[],alert("WARNING: "+a.join(", "))}}c=function(){function b(b,c){this.options=a.extend(!0,{},this.options,c),this.element=a(b),this.on=this.subscribe,this.addEvents()}return b.prototype.events={},b.prototype.options={},b.prototype.element=null,b.prototype.addEvents=function(){var a,b,c,d,e,f,g,h;f=this.events,h=[];for(c in f)b=f[c],g=c.split(" "),d=2<=g.length?x.call(g,0,e=g.length-1):(e=0,[]),a=g[e++],h.push(this.addEvent(d.join(" "),a,b));return h},b.prototype.addEvent=function(b,c,d){var e,f,g=this;return e=function(){return g[d].apply(g,arguments)},f=typeof b=="string"&&b.replace(/\s+/g,"")==="",f&&(b=this.element),typeof b=="string"?this.element.delegate(b,c,e):this.isCustomEvent(c)?this.subscribe(c,e):a(b).bind(c,e),this},b.prototype.isCustomEvent=function(c){return c=c.split(".")[0],a.inArray(c,b.natives)===-1},b.prototype.publish=function(){return this.element.triggerHandler.apply(this.element,arguments),this},b.prototype.subscribe=function(b,c){var d;return d=function(){return c.apply(this,[].slice.call(arguments,1))},d.guid=c.guid=a.guid+=1,this.element.bind(b,d),this},b.prototype.unsubscribe=function(){return this.element.unbind.apply(this.element,arguments),this},b}(),c.natives=function(){var a,b,c;return b=function(){var b,d;b=jQuery.event.special,d=[];for(a in b){if(!y.call(b,a))continue;c=b[a],d.push(a)}return d}(),"blur focus focusin focusout load resize scroll unload click dblclick\nmousedown mouseup mousemove mouseover mouseout mouseenter mouseleave\nchange select submit keydown keypress keyup error".split(/[^a-z]+/).concat(b)}(),e={},e.sniff=function(a){return a.commonAncestorContainer!=null?new e.BrowserRange(a):typeof a.start=="string"?new e.SerializedRange(a):a.start&&typeof a.start=="object"?new e.NormalizedRange(a):(console.error(w("Could not sniff range type")),!1)},e.nodeFromXPath=function(b,c){var d,e,f,g,h;return c==null&&(c=document),e=function(a,b){return b==null&&(b=null),document.evaluate("."+a,c,b,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue},a.isXMLDoc(document.documentElement)?(d=document.createNSResolver(document.ownerDocument===null?document.documentElement:document.ownerDocument.documentElement),g=e(b,d),g||(b=function(){var a,c,d,e;d=b.split("/"),e=[];for(a=0,c=d.length;a<c;a++)h=d[a],h&&h.indexOf(":")===-1?e.push(h.replace(/^([a-z]+)/,"xhtml:$1")):e.push(h);return e}().join("/"),f=document.lookupNamespaceURI(null),d=function(a){return a==="xhtml"?f:document.documentElement.getAttribute("xmlns:"+a)},g=e(b,d)),g):e(b)},e.RangeError=function(a){function b(a,c,d){this.type=a,this.message=c,this.parent=d!=null?d:null,b.__super__.constructor.call(this,this.message)}return z(b,a),b}(Error),e.BrowserRange=function(){function a(a){this.commonAncestorContainer=a.commonAncestorContainer,this.startContainer=a.startContainer,this.startOffset=a.startOffset,this.endContainer=a.endContainer,this.endOffset=a.endOffset}return a.prototype.normalize=function(a){var b,c,d,f,g,h,i,j,k;if(this.tainted)return console.error(w("You may only call normalize() once on a BrowserRange!")),!1;this.tainted=!0,h={},d={},k=["start","end"];for(i=0,j=k.length;i<j;i++){g=k[i],c=this[g+"Container"],f=this[g+"Offset"];if(c.nodeType===1){b=c.childNodes[f],c=b||c.childNodes[f-1],c.nodeType===1&&!c.firstChild&&(b=null,c=c.previousSibling);while(c.nodeType!==3)c=c.firstChild;f=b?0:c.nodeValue.length}h[g]=c,h[g+"Offset"]=f}d.start=h.startOffset>0?h.start.splitText(h.startOffset):h.start,h.start===h.end?(h.endOffset-h.startOffset<d.start.nodeValue.length&&d.start.splitText(h.endOffset-h.startOffset),d.end=d.start):(h.endOffset<h.end.nodeValue.length&&h.end.splitText(h.endOffset),d.end=h.end),d.commonAncestor=this.commonAncestorContainer;while(d.commonAncestor.nodeType!==1)d.commonAncestor=d.commonAncestor.parentNode;return new e.NormalizedRange(d)},a.prototype.serialize=function(a,b){return this.normalize(a).serialize(a,b)},a}(),e.NormalizedRange=function(){function b(a){this.commonAncestor=a.commonAncestor,this.start=a.start,this.end=a.end}return b.prototype.normalize=function(a){return this},b.prototype.limit=function(b){var c,d,e,f,g,h;c=a.grep(this.textNodes(),function(c){return c.parentNode===b||a.contains(b,c.parentNode)});if(!c.length)return null;this.start=c[0],this.end=c[c.length-1],e=a(this.start).parents(),h=a(this.end).parents();for(f=0,g=h.length;f<g;f++){d=h[f];if(e.index(d)!==-1){this.commonAncestor=d;break}}return this},b.prototype.serialize=function(b,c){var d,f,g;return f=function(d,e){var f,g,h,i,j,k,l,m;c?i=a(d).parents(":not("+c+")").eq(0):i=a(d).parent(),k=i.xpath(b)[0],j=i.textNodes(),g=j.slice(0,j.index(d)),h=0;for(l=0,m=g.length;l<m;l++)f=g[l],h+=f.nodeValue.length;return e?[k,h+d.nodeValue.length]:[k,h]},g=f(this.start),d=f(this.end,!0),new e.SerializedRange({start:g[0],end:d[0],startOffset:g[1],endOffset:d[1]})},b.prototype.text=function(){var a;return function(){var b,c,d,e;d=this.textNodes(),e=[];for(b=0,c=d.length;b<c;b++)a=d[b],e.push(a.nodeValue);return e}.call(this).join("")},b.prototype.textNodes=function(){var b,c,d,e;return d=a(this.commonAncestor).textNodes(),e=[d.index(this.start),d.index(this.end)],c=e[0],b=e[1],a.makeArray(d.slice(c,b+1||9e9))},b.prototype.toRange=function(){var a;return a=document.createRange(),a.setStartBefore(this.start),a.setEndAfter(this.end),a},b}(),e.SerializedRange=function(){function b(a){this.start=a.start,this.startOffset=a.startOffset,this.end=a.end,this.endOffset=a.endOffset}return b.prototype.normalize=function(b){var c,d,f,g,h,i,j,k,l,m,n,o;h={},n=["start","end"];for(j=0,l=n.length;j<l;j++){g=n[j];try{f=e.nodeFromXPath(this[g],b)}catch(p){throw new e.RangeError(g,"Error while finding "+g+" node: "+this[g]+": "+p,p)}if(!f)throw new e.RangeError(g,"Couldn't find "+g+" node: "+this[g]);d=0,o=a(f).textNodes();for(k=0,m=o.length;k<m;k++){i=o[k];if(d+i.nodeValue.length>=this[g+"Offset"]){h[g+"Container"]=i,h[g+"Offset"]=this[g+"Offset"]-d;break}d+=i.nodeValue.length}if(h[g+"Offset"]==null)throw new e.RangeError(""+g+"offset","Couldn't find offset "+this[g+"Offset"]+" in element "+this[g])}return c=document.compareDocumentPosition==null?function(a,b){return a.contains(b)}:function(a,b){return a.compareDocumentPosition(b)&16},a(h.startContainer).parents().reverse().each(function(){if(c(this,h.endContainer))return h.commonAncestorContainer=this,!1}),(new e.BrowserRange(h)).normalize(b)},b.prototype.serialize=function(a,b){return this.normalize(a).serialize(a,b)},b.prototype.toObject=function(){return{start:this.start,startOffset:this.startOffset,end:this.end,endOffset:this.endOffset}},b}(),n={uuid:function(){var a;return a=0,function(){return a++}}(),getGlobal:function(){return function(){return this}()},maxZIndex:function(b){var c,d;return c=function(){var c,e,f;f=[];for(c=0,e=b.length;c<e;c++)d=b[c],a(d).css("position")==="static"?f.push(-1):f.push(parseInt(a(d).css("z-index"),10)||-1);return f}(),Math.max.apply(Math,c)},mousePosition:function(b,c){var d;return d=a(c).offset(),{top:b.pageY-d.top,left:b.pageX-d.left}},preventEventDefault:function(a){return a!=null?typeof a.preventDefault=="function"?a.preventDefault():void 0:void 0}},o=this.Annotator,b=function(b){function c(b,d){this.onDeleteAnnotation=A(this.onDeleteAnnotation,this),this.onEditAnnotation=A(this.onEditAnnotation,this),this.onAdderClick=A(this.onAdderClick,this),this.onAdderMousedown=A(this.onAdderMousedown,this),this.onHighlightMouseover=A(this.onHighlightMouseover,this),this.checkForEndSelection=A(this.checkForEndSelection,this),this.checkForStartSelection=A(this.checkForStartSelection,this),this.clearViewerHideTimer=A(this.clearViewerHideTimer,this),this.startViewerHideTimer=A(this.startViewerHideTimer,this),this.showViewer=A(this.showViewer,this),this.onEditorSubmit=A(this.onEditorSubmit,this),this.onEditorHide=A(this.onEditorHide,this),this.showEditor=A(this.showEditor,this),c.__super__.constructor.apply(this,arguments),this.plugins={};if(!c.supported())return this;this.options.readOnly||this._setupDocumentEvents(),this._setupWrapper()._setupViewer()._setupEditor(),this._setupDynamicStyle(),this.adder=a(this.html.adder).appendTo(this.wrapper).hide()}return z(c,b),c.prototype.events={".annotator-adder button click":"onAdderClick",".annotator-adder button mousedown":"onAdderMousedown",".annotator-hl mouseover":"onHighlightMouseover",".annotator-hl mouseout":"startViewerHideTimer"},c.prototype.html={adder:'<div class="annotator-adder"><button>'+w("Annotate")+"</button></div>",wrapper:'<div class="annotator-wrapper"></div>'},c.prototype.options={readOnly:!1},c.prototype.plugins={},c.prototype.editor=null,c.prototype.viewer=null,c.prototype.selectedRanges=null,c.prototype.mouseIsDown=!1,c.prototype.ignoreMouseup=!1,c.prototype.viewerHideTimer=null,c.prototype._setupWrapper=function(){return this.wrapper=a(this.html.wrapper),this.element.find("script").remove(),this.element.wrapInner(this.wrapper),this.wrapper=this.element.find(".annotator-wrapper"),this},c.prototype._setupViewer=function(){var b=this;return this.viewer=new c.Viewer({readOnly:this.options.readOnly}),this.viewer.hide().on("edit",this.onEditAnnotation).on("delete",this.onDeleteAnnotation).addField({load:function(c,d){return d.text?a(c).escape(d.text):a(c).html("<i>"+w("No Comment")+"</i>"),b.publish("annotationViewerTextField",[c,d])}}).element.appendTo(this.wrapper).bind({mouseover:this.clearViewerHideTimer,mouseout:this.startViewerHideTimer}),this},c.prototype._setupEditor=function(){return this.editor=new c.Editor,this.editor.hide().on("hide",this.onEditorHide).on("save",this.onEditorSubmit).addField({type:"textarea",label:w("Comments")+"…",load:function(b,c){return a(b).find("textarea").val(c.text||"")},submit:function(b,c){return c.text=a(b).find("textarea").val()}}),this.editor.element.appendTo(this.wrapper),this},c.prototype._setupDocumentEvents=function(){return a(document).bind({mouseup:this.checkForEndSelection,mousedown:this.checkForStartSelection}),this},c.prototype._setupDynamicStyle=function(){var b,c,d,e;return d=a("#annotator-dynamic-style"),d.length||(d=a('<style id="annotator-dynamic-style"></style>').appendTo(document.head)),c="*"+function(){var a,b,c,d;c=["adder","outer","notice","filter"],d=[];for(a=0,b=c.length;a<b;a++)e=c[a],d.push(":not(.annotator-"+e+")");return d}().join(""),b=n.maxZIndex(a(document.body).find(c)),b=Math.max(b,1e3),d.text([".annotator-adder, .annotator-outer, .annotator-notice {"," z-index: "+(b+20)+";","}",".annotator-filter {"," z-index: "+(b+10)+";","}"].join("\n")),this},c.prototype.getSelectedRanges=function(){var b,c,d,f,g,h,i,j,k;i=n.getGlobal().getSelection(),g=[],h=[],i.isCollapsed||(g=function(){var a,g;g=[];for(c=0,a=i.rangeCount;0<=a?c<a:c>a;0<=a?c++:c--)f=i.getRangeAt(c),b=new e.BrowserRange(f),d=b.normalize().limit(this.wrapper[0]),d===null&&h.push(f),g.push(d);return g}.call(this),i.removeAllRanges());for(j=0,k=h.length;j<k;j++)f=h[j],i.addRange(f);return a.grep(g,function(a){return a&&i.addRange(a.toRange()),a})},c.prototype.createAnnotation=function(){var a;return a={},this.publish("beforeAnnotationCreated",[a]),a},c.prototype.setupAnnotation=function(b,c){var d,f,g,h,i,j,k,l,m;c==null&&(c=!0),h=this.wrapper[0],b.ranges||(b.ranges=this.selectedRanges),f=[],m=b.ranges;for(i=0,k=m.length;i<k;i++){g=m[i];try{f.push(e.sniff(g).normalize(h))}catch(n){if(!(n instanceof e.RangeError))throw n;this.publish("rangeNormalizeFail",[b,g,n])}}b.quote=[],b.ranges=[],b.highlights=[];for(j=0,l=f.length;j<l;j++)d=f[j],b.quote.push(a.trim(d.text())),b.ranges.push(d.serialize(this.wrapper[0],".annotator-hl")),a.merge(b.highlights,this.highlightRange(d));return b.quote=b.quote.join(" / "),a(b.highlights).data("annotation",b),c&&this.publish("annotationCreated",[b]),b},c.prototype.updateAnnotation=function(a){return this.publish("beforeAnnotationUpdated",[a]),this.publish("annotationUpdated",[a]),a},c.prototype.deleteAnnotation=function(b){var c,d,e,f;f=b.highlights;for(d=0,e=f.length;d<e;d++)c=f[d],a(c).replaceWith(c.childNodes);return this.publish("annotationDeleted",[b]),b},c.prototype.loadAnnotations=function(a){var b,c,d=this;return a==null&&(a=[]),c=function(a){var e,f,g,h;a==null&&(a=[]),f=a.splice(0,10);for(g=0,h=f.length;g<h;g++)e=f[g],d.setupAnnotation(e,!1);return a.length>0?setTimeout(function(){return c(a)},10):d.publish("annotationsLoaded",[b])},b=a.slice(),a.length&&c(a),this},c.prototype.dumpAnnotations=function(){return this.plugins.Store?this.plugins.Store.dumpAnnotations():console.warn(w("Can't dump annotations without Store plugin."))},c.prototype.highlightRange=function(b,c){var d,e,f,g,h,i,j;c==null&&(c="annotator-hl"),f=/^\s*$/,d=a("<span class='"+c+"'></span>"),i=b.textNodes(),j=[];for(g=0,h=i.length;g<h;g++)e=i[g],f.test(e.nodeValue)||j.push(a(e).wrapAll(d).parent().show()[0]);return j},c.prototype.highlightRanges=function(b,c){var d,e,f,g;c==null&&(c="annotator-hl"),d=[];for(f=0,g=b.length;f<g;f++)e=b[f],a.merge(d,this.highlightRange(e,c));return d},c.prototype.addPlugin=function(a,b){var d,e;return this.plugins[a]?console.error(w("You cannot have more than one instance of any plugin.")):(d=c.Plugin[a],typeof d=="function"?(this.plugins[a]=new d(this.element[0],b),this.plugins[a].annotator=this,typeof (e=this.plugins[a]).pluginInit=="function"&&e.pluginInit()):console.error(w("Could not load ")+a+w(" plugin. Have you included the appropriate <script> tag?"))),this},c.prototype.showEditor=function(a,b){return this.editor.element.css(b),this.editor.load(a),this.publish("annotationEditorShown",[this.editor,a]),this},c.prototype.onEditorHide=function(){return this.publish("annotationEditorHidden",[this.editor]),this.ignoreMouseup=!1},c.prototype.onEditorSubmit=function(a){return this.publish("annotationEditorSubmit",[this.editor,a]),a.ranges===void 0?this.setupAnnotation(a):this.updateAnnotation(a)},c.prototype.showViewer=function(a,b){return this.viewer.element.css(b),this.viewer.load(a),this.publish("annotationViewerShown",[this.viewer,a])},c.prototype.startViewerHideTimer=function(){if(!this.viewerHideTimer)return this.viewerHideTimer=setTimeout(this.viewer.hide,250)},c.prototype.clearViewerHideTimer=function(){return clearTimeout(this.viewerHideTimer),this.viewerHideTimer=!1},c.prototype.checkForStartSelection=function(a){if(!a||!this.isAnnotator(a.target))return this.startViewerHideTimer(),this.mouseIsDown=!0},c.prototype.checkForEndSelection=function(b){var c,d,e,f,g;this.mouseIsDown=!1;if(this.ignoreMouseup)return;this.selectedRanges=this.getSelectedRanges(),g=this.selectedRanges;for(e=0,f=g.length;e<f;e++){d=g[e],c=d.commonAncestor,a(c).hasClass("annotator-hl")&&(c=a(c).parents("[class^=annotator-hl]")[0]);if(this.isAnnotator(c))return}return b&&this.selectedRanges.length?this.adder.css(n.mousePosition(b,this.wrapper[0])).show():this.adder.hide()},c.prototype.isAnnotator=function(b){return!!a(b).parents().andSelf().filter("[class^=annotator-]").not(this.wrapper).length},c.prototype.onHighlightMouseover=function(b){var c;return this.clearViewerHideTimer(),this.mouseIsDown||this.viewer.isShown()?!1:(c=a(b.target).parents(".annotator-hl").andSelf().map(function(){return a(this).data("annotation")}),this.showViewer(a.makeArray(c),n.mousePosition(b,this.wrapper[0])))},c.prototype.onAdderMousedown=function(a){return a!=null&&a.preventDefault(),this.ignoreMouseup=!0},c.prototype.onAdderClick=function(b){var c,d,f,g;return b!=null&&b.preventDefault(),d=this.adder.position(),this.adder.hide(),this.selectedRanges&&this.selectedRanges.length&&(g=function(){var a,b,c,d;c=this.selectedRanges,d=[];for(a=0,b=c.length;a<b;a++)f=c[a],d.push(e.sniff(f).normalize());return d}.call(this),c=this.highlightRanges(g,"annotator-hl annotator-hl-temporary"),this.editor.element.one("hide",function(){var b,d,e,f;f=[];for(d=0,e=c.length;d<e;d++)b=c[d],f.push(a(b).replaceWith(b.childNodes));return f})),this.showEditor(this.createAnnotation(),d)},c.prototype.onEditAnnotation=function(a){var b;return b=this.viewer.element.position(),this.viewer.hide(),this.showEditor(a,b)},c.prototype.onDeleteAnnotation=function(a){return this.viewer.hide(),this.deleteAnnotation(a)},c}(c),b.Plugin=function(a){function b(a,c){b.__super__.constructor.apply(this,arguments)}return z(b,a),b.prototype.pluginInit=function(){},b}(c),k=n.getGlobal(),((v=k.document)!=null?v.evaluate:void 0)==null&&a.getScript("http://assets.annotateit.org/vendor/xpath.min.js"),k.getSelection==null&&a.getScript("http://assets.annotateit.org/vendor/ierange.min.js"),k.JSON==null&&a.getScript("http://assets.annotateit.org/vendor/json2.min.js"),b.$=a,b.Delegator=c,b.Range=e,b._t=w,b.supported=function(){return function(){return!!this.getSelection}()},b.noConflict=function(){return n.getGlobal().Annotator=o,this},a.plugin("annotator",b),this.Annotator=b,b.Widget=function(c){function d(c,e){d.__super__.constructor.apply(this,arguments),this.classes=a.extend({},b.Widget.prototype.classes,this.classes)}return z(d,c),d.prototype.classes={hide:"annotator-hide",invert:{x:"annotator-invert-x",y:"annotator-invert-y"}},d.prototype.checkOrientation=function(){var b,c,d,e,f;return this.resetOrientation(),f=a(n.getGlobal()),e=this.element.children(":first"),c=e.offset(),d={top:f.scrollTop(),right:f.width()+f.scrollLeft()},b={top:c.top,right:c.left+e.width()},b.top-d.top<0&&this.invertY(),b.right-d.right>0&&this.invertX(),this},d.prototype.resetOrientation=function(){return this.element.removeClass(this.classes.invert.x).removeClass(this.classes.invert.y),this},d.prototype.invertX=function(){return this.element.addClass(this.classes.invert.x),this},d.prototype.invertY=function(){return this.element.addClass(this.classes.invert.y),this},d.prototype.isInvertedY=function(){return this.element.hasClass(this.classes.invert.y)},d.prototype.isInvertedX=function(){return this.element.hasClass(this.classes.invert.x)},d}(c),b.Editor=function(b){function c(b){this.onCancelButtonMouseover=A(this.onCancelButtonMouseover,this),this.processKeypress=A(this.processKeypress,this),this.submit=A(this.submit,this),this.load=A(this.load,this),this.hide=A(this.hide,this),this.show=A(this.show,this),c.__super__.constructor.call(this,a(this.html)[0],b),this.fields=[],this.annotation={}}return z(c,b),c.prototype.events={"form submit":"submit",".annotator-save click":"submit",".annotator-cancel click":"hide",".annotator-cancel mouseover":"onCancelButtonMouseover","textarea keydown":"processKeypress"},c.prototype.classes={hide:"annotator-hide",focus:"annotator-focus"},c.prototype.html='<div class="annotator-outer annotator-editor">\n <form class="annotator-widget">\n <ul class="annotator-listing"></ul>\n <div class="annotator-controls">\n <a href="#cancel" class="annotator-cancel">'+w("Cancel")+'</a>\n<a href="#save" class="annotator-save annotator-focus">'+w("Save")+"</a>\n </div>\n </form>\n</div>",c.prototype.options={},c.prototype.show=function(a){return n.preventEventDefault(a),this.element.removeClass(this.classes.hide),this.element.find(".annotator-save").addClass(this.classes.focus),this.checkOrientation(),this.element.find(":input:first").focus(),this.setupDraggables(),this.publish("show")},c.prototype.hide=function(a){return n.preventEventDefault(a),this.element.addClass(this.classes.hide),this.publish("hide")},c.prototype.load=function(a){var b,c,d,e;this.annotation=a,this.publish("load",[this.annotation]),e=this.fields;for(c=0,d=e.length;c<d;c++)b=e[c],b.load(b.element,this.annotation);return this.show()},c.prototype.submit=function(a){var b,c,d,e;n.preventEventDefault(a),e=this.fields;for(c=0,d=e.length;c<d;c++)b=e[c],b.submit(b.element,this.annotation);return this.publish("save",[this.annotation]),this.hide()},c.prototype.addField=function(b){var c,d,e;d=a.extend({id:"annotator-field-"+n.uuid(),type:"input",label:"",load:function(){},submit:function(){}},b),e=null,c=a('<li class="annotator-item" />'),d.element=c[0];switch(d.type){case"textarea":e=a("<textarea />");break;case"input":case"checkbox":e=a("<input />")}return c.append(e),e.attr({id:d.id,placeholder:d.label}),d.type==="checkbox"&&(e[0].type="checkbox",c.addClass("annotator-checkbox"),c.append(a("<label />",{"for":d.id,html:d.label}))),this.element.find("ul:first").append(c),this.fields.push(d),d.element},c.prototype.checkOrientation=function(){var a,b;return c.__super__.checkOrientation.apply(this,arguments),b=this.element.find("ul"),a=this.element.find(".annotator-controls"),this.element.hasClass(this.classes.invert.y)?a.insertBefore(b):a.is(":first-child")&&a.insertAfter(b),this},c.prototype.processKeypress=function(a){if(a.keyCode===27)return this.hide();if(a.keyCode===13&&!a.shiftKey)return this.submit()},c.prototype.onCancelButtonMouseover=function(){return this.element.find("."+this.classes.focus).removeClass(this.classes.focus)},c.prototype.setupDraggables=function(){var b,c,d,e,f,g,h,i,j,k,l,m=this;return this.element.find(".annotator-resize").remove(),this.element.hasClass(this.classes.invert.y)?d=this.element.find(".annotator-item:last"):d=this.element.find(".annotator-item:first"),d&&a('<span class="annotator-resize"></span>').appendTo(d),f=null,b=this.classes,e=this.element,k=null,j=e.find(".annotator-resize"),c=e.find(".annotator-controls"),l=!1,g=function(b){if(b.target===this)return f={element:this,top:b.pageY,left:b.pageX},k=e.find("textarea:first"),a(window).bind({"mouseup.annotator-editor-resize":i,"mousemove.annotator-editor-resize":h}),b.preventDefault()},i=function(){return f=null,a(window).unbind(".annotator-editor-resize")},h=function(a){var d,g,h,i,m;if(f&&l===!1)return d={top:a.pageY-f.top,left:a.pageX-f.left},f.element===j[0]?(i=k.outerHeight(),m=k.outerWidth(),g=e.hasClass(b.invert.x)?-1:1,h=e.hasClass(b.invert.y)?1:-1,k.height(i+d.top*h),k.width(m+d.left*g),k.outerHeight()!==i&&(f.top=a.pageY),k.outerWidth()!==m&&(f.left=a.pageX)):f.element===c[0]&&(e.css({top:parseInt(e.css("top"),10)+d.top,left:parseInt(e.css("left"),10)+d.left}),f.top=a.pageY,f.left=a.pageX),l=!0,setTimeout(function(){return l=!1},1e3/60)},j.bind("mousedown",g),c.bind("mousedown",g)},c}(b.Widget),b.Viewer=function(b){function c(b){this.onDeleteClick=A(this.onDeleteClick,this),this.onEditClick=A(this.onEditClick,this),this.load=A(this.load,this),this.hide=A(this.hide,this),this.show=A(this.show,this),c.__super__.constructor.call(this,a(this.html.element)[0],b),this.item=a(this.html.item)[0],this.fields=[],this.annotations=[]}return z(c,b),c.prototype.events={".annotator-edit click":"onEditClick",".annotator-delete click":"onDeleteClick"},c.prototype.classes={hide:"annotator-hide",showControls:"annotator-visible"},c.prototype.html={element:'<div class="annotator-outer annotator-viewer">\n <ul class="annotator-widget annotator-listing"></ul>\n</div>',item:'<li class="annotator-annotation annotator-item">\n <span class="annotator-controls">\n <a href="#" title="View as webpage" class="annotator-link">View as webpage</a>\n <button title="Edit" class="annotator-edit">Edit</button>\n <button title="Delete" class="annotator-delete">Delete</button>\n </span>\n</li>'},c.prototype.options={readOnly:!1},c.prototype.show=function(a){var b,c=this;return n.preventEventDefault(a),b=this.element.find(".annotator-controls").addClass(this.classes.showControls),setTimeout(function(){return b.removeClass(c.classes.showControls)},500),this.element.removeClass(this.classes.hide),this.checkOrientation().publish("show")},c.prototype.isShown=function(){return!this.element.hasClass(this.classes.hide)},c.prototype.hide=function(a){return n.preventEventDefault(a),this.element.addClass(this.classes.hide),this.publish("hide")},c.prototype.load=function(b){var c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;this.annotations=b||[],n=this.element.find("ul:first").empty(),s=this.annotations;for(o=0,q=s.length;o<q;o++){c=s[o],k=a(this.item).clone().appendTo(n).data("annotation",c),f=k.find(".annotator-controls"),l=f.find(".annotator-link"),h=f.find(".annotator-edit"),g=f.find(".annotator-delete"),m=(new d(c.links||[])).get("alternate",{type:"text/html"}),m.length===0||m[0].href==null?l.remove():l.attr("href",m[0].href),this.options.readOnly?(h.remove(),g.remove()):e={showEdit:function(){return h.removeAttr("disabled")},hideEdit:function(){return h.attr("disabled","disabled")},showDelete:function(){return g.removeAttr("disabled")},hideDelete:function(){return g.attr("disabled","disabled")}},t=this.fields;for(p=0,r=t.length;p<r;p++)j=t[p],i=a(j.element).clone().appendTo(k)[0],j.load(i,c,e)}return this.publish("load",[this.annotations]),this.show()},c.prototype.addField=function(b){var c;return c=a.extend({load:function(){}},b),c.element=a("<div />")[0],this.fields.push(c),c.element,this},c.prototype.onEditClick=function(a){return this.onButtonClick(a,"edit")},c.prototype.onDeleteClick=function(a){return this.onButtonClick(a,"delete")},c.prototype.onButtonClick=function(b,c){var d;return d=a(b.target).parents(".annotator-annotation"),this.publish(c,[d.data("annotation")])},c}(b.Widget),d=function(){function b(a){this.data=a}return b.prototype.get=function(b,c){var d,e,f,g,h,i,j,k,l;c==null&&(c={}),c=a.extend({},c,{rel:b}),f=function(){var a;a=[];for(e in c){if(!y.call(c,e))continue;h=c[e],a.push(e)}return a}(),k=this.data,l=[];for(i=0,j=k.length;i<j;i++){d=k[i],g=f.reduce(function(a,b){return a&&d[b]===c[b]},!0);if(!g)continue;l.push(d)}return l},b}(),b=b||{},b.Notification=function(c){function d(b){this.hide=A(this.hide,this),this.show=A(this.show,this),d.__super__.constructor.call(this,a(this.options.html).appendTo(document.body)[0],b)}return z(d,c),d.prototype.events={click:"hide"},d.prototype.options={html:"<div class='annotator-notice'></div>",classes:{show:"annotator-notice-show",info:"annotator-notice-info",success:"annotator-notice-success",error:"annotator-notice-error"}},d.prototype.show=function(c,d){return d==null&&(d=b.Notification.INFO),a(this.element).addClass(this.options.classes.show).addClass(this.options.classes[d]).escape(c||""),setTimeout(this.hide,5e3),this},d.prototype.hide=function(){return a(this.element).removeClass(this.options.classes.show),this},d}(c),b.Notification.INFO="show",b.Notification.SUCCESS="success",b.Notification.ERROR="error",a(function(){var a;return a=new b.Notification,b.showNotification=a.show,b.hideNotification=a.hide}),b.Plugin.Unsupported=function(c){function d(){d.__super__.constructor.apply(this,arguments)}return z(d,c),d.prototype.options={message:b._t("Sorry your current browser does not support the Annotator")},d.prototype.pluginInit=function(){var c=this;if(!b.supported())return a(function(){b.showNotification(c.options.message);if(window.XMLHttpRequest===void 0&&ActiveXObject!==void 0)return a("html").addClass("ie6")})},d}(b.Plugin),h=function(a){var b,c,d,e,f,g;return e="([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?",b=a.match(new RegExp(e)),d=0,c=new Date(b[1],0,1),b[3]&&c.setMonth(b[3]-1),b[5]&&c.setDate(b[5]),b[7]&&c.setHours(b[7]),b[8]&&c.setMinutes(b[8]),b[10]&&c.setSeconds(b[10]),b[12]&&c.setMilliseconds(Number("0."+b[12])*1e3),b[14]&&(d=Number(b[16])*60+Number(b[17]),d*=(g=b[15]==="-")!=null?g:{1:-1}),d-=c.getTimezoneOffset(),f=Number(c)+d*60*1e3,c.setTime(Number(f)),c},f=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(typeof atob!="undefined"&&atob!==null)return atob(a);c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",j=0,b=0,e="",n=[];if(!a)return a;a+="";while(j<a.length)f=c.indexOf(a.charAt(j++)),g=c.indexOf(a.charAt(j++)),h=c.indexOf(a.charAt(j++)),i=c.indexOf(a.charAt(j++)),d=f<<18|g<<12|h<<6|i,k=d>>16&255,l=d>>8&255,m=d&255,h===64?n[b++]=String.fromCharCode(k):i===64?n[b++]=String.fromCharCode(k,l):n[b++]=String.fromCharCode(k,l,m);return n.join("")},g=function(a){var b,c,d;c=a.length%4;if(c!==0)for(b=0,d=4-c;0<=d?b<d:b>d;0<=d?b++:b--)a+="=";return a=a.replace(/-/g,"+"),a=a.replace(/_/g,"/"),f(a)},m=function(a){var b,c,d,e;return e=a.split("."),b=e[0],c=e[1],d=e[2],JSON.parse(g(c))},b.Plugin.Auth=function(c){function d(a,b){d.__super__.constructor.apply(this,arguments),this.waitingForToken=[],this.options.token?this.setToken(this.options.token):this.requestToken()}return z(d,c),d.prototype.options={token:null,tokenUrl:"/auth/token",autoFetch:!0},d.prototype.requestToken=function(){var c=this;return this.requestInProgress=!0,a.ajax({url:this.options.tokenUrl,dataType:"text",xhrFields:{withCredentials:!0}}).done(function(a,b,d){return c.setToken(a)}).fail(function(a,c,d){var e;return e=b._t("Couldn't get auth token:"),console.error(""+e+" "+d,a),b.showNotification(""+e+" "+a.responseText,b.Notification.ERROR)}).always(function(){return c.requestInProgress=!1})},d.prototype.setToken=function(a){var c,d=this;this.token=a,this._unsafeToken=m(a);if(this.haveValidToken()){this.options.autoFetch&&(this.refreshTimeout=setTimeout(function(){return d.requestToken()},(this.timeToExpiry()-2)*1e3)),this.updateHeaders(),c=[];while(this.waitingForToken.length>0)c.push(this.waitingForToken.pop()(this._unsafeToken));return c}console.warn(b._t("Didn't get a valid token."));if(this.options.autoFetch)return console.warn(b._t("Getting a new token in 10s.")),setTimeout(function(){return d.requestToken()},1e4)},d.prototype.haveValidToken=function(){var a;return a=this._unsafeToken&&this._unsafeToken.issuedAt&&this._unsafeToken.ttl&&this._unsafeToken.consumerKey,a&&this.timeToExpiry()>0},d.prototype.timeToExpiry=function(){var a,b,c,d;return c=(new Date).getTime()/1e3,b=h(this._unsafeToken.issuedAt).getTime()/1e3,a=b+this._unsafeToken.ttl,d=a-c,d>0?d:0},d.prototype.updateHeaders=function( +){var b;return b=this.element.data("annotator:headers"),this.element.data("annotator:headers",a.extend(b,{"x-annotator-auth-token":this.token}))},d.prototype.withToken=function(a){if(a==null)return;if(this.haveValidToken())return a(this._unsafeToken);this.waitingForToken.push(a);if(!this.requestInProgress)return this.requestToken()},d}(b.Plugin),b.Plugin.Store=function(c){function d(a,b){this._onError=A(this._onError,this),this._onLoadAnnotationsFromSearch=A(this._onLoadAnnotationsFromSearch,this),this._onLoadAnnotations=A(this._onLoadAnnotations,this),this._getAnnotations=A(this._getAnnotations,this),d.__super__.constructor.apply(this,arguments),this.annotations=[]}return z(d,c),d.prototype.events={annotationCreated:"annotationCreated",annotationDeleted:"annotationDeleted",annotationUpdated:"annotationUpdated"},d.prototype.options={prefix:"/store",autoFetch:!0,annotationData:{},loadFromSearch:!1,urls:{create:"/annotations",read:"/annotations/:id",update:"/annotations/:id",destroy:"/annotations/:id",search:"/search"}},d.prototype.pluginInit=function(){if(!b.supported())return;return this.annotator.plugins.Auth?this.annotator.plugins.Auth.withToken(this._getAnnotations):this._getAnnotations()},d.prototype._getAnnotations=function(){return this.options.loadFromSearch?this.loadAnnotationsFromSearch(this.options.loadFromSearch):this.loadAnnotations()},d.prototype.annotationCreated=function(a){var c=this;return B.call(this.annotations,a)<0?(this.registerAnnotation(a),this._apiRequest("create",a,function(d){return d.id==null&&console.warn(b._t("Warning: No ID returned from server for annotation "),a),c.updateAnnotation(a,d)})):this.updateAnnotation(a,{})},d.prototype.annotationUpdated=function(a){var b=this;if(B.call(this.annotations,a)>=0)return this._apiRequest("update",a,function(c){return b.updateAnnotation(a,c)})},d.prototype.annotationDeleted=function(a){var b=this;if(B.call(this.annotations,a)>=0)return this._apiRequest("destroy",a,function(){return b.unregisterAnnotation(a)})},d.prototype.registerAnnotation=function(a){return this.annotations.push(a)},d.prototype.unregisterAnnotation=function(a){return this.annotations.splice(this.annotations.indexOf(a),1)},d.prototype.updateAnnotation=function(c,d){return B.call(this.annotations,c)<0?console.error(b._t("Trying to update unregistered annotation!")):a.extend(c,d),a(c.highlights).data("annotation",c)},d.prototype.loadAnnotations=function(){return this._apiRequest("read",null,this._onLoadAnnotations)},d.prototype._onLoadAnnotations=function(a){return a==null&&(a=[]),this.annotations=a,this.annotator.loadAnnotations(a.slice())},d.prototype.loadAnnotationsFromSearch=function(a){return this._apiRequest("search",a,this._onLoadAnnotationsFromSearch)},d.prototype._onLoadAnnotationsFromSearch=function(a){return a==null&&(a={}),this._onLoadAnnotations(a.rows||[])},d.prototype.dumpAnnotations=function(){var a,b,c,d,e;d=this.annotations,e=[];for(b=0,c=d.length;b<c;b++)a=d[b],e.push(JSON.parse(this._dataFor(a)));return e},d.prototype._apiRequest=function(b,c,d){var e,f,g,h;return e=c&&c.id,h=this._urlFor(b,e),f=this._apiRequestOptions(b,c,d),g=a.ajax(h,f),g._id=e,g._action=b,g},d.prototype._apiRequestOptions=function(b,c,d){var e;return e={type:this._methodFor(b),headers:this.element.data("annotator:headers"),dataType:"json",success:d||function(){},error:this._onError},b==="search"?e=a.extend(e,{data:c}):e=a.extend(e,{data:c&&this._dataFor(c),contentType:"application/json; charset=utf-8"}),e},d.prototype._urlFor=function(a,b){var c,d;return c=b!=null?"/"+b:"",d=this.options.prefix||"/",d+=this.options.urls[a],d=d.replace(/\/:id/,c),d},d.prototype._methodFor=function(a){var b;return b={create:"POST",read:"GET",update:"PUT",destroy:"DELETE",search:"GET"},b[a]},d.prototype._dataFor=function(b){var c,d;return d=b.highlights,delete b.highlights,a.extend(b,this.options.annotationData),c=JSON.stringify(b),d&&(b.highlights=d),c},d.prototype._onError=function(a){var c,d;c=a._action,d=b._t("Sorry we could not ")+c+b._t(" this annotation"),a._action==="search"?d=b._t("Sorry we could not search the store for annotations"):a._action==="read"&&!a._id&&(d=b._t("Sorry we could not ")+c+b._t(" the annotations from the store"));switch(a.status){case 401:d=b._t("Sorry you are not allowed to ")+c+b._t(" this annotation");break;case 404:d=b._t("Sorry we could not connect to the annotations store");break;case 500:d=b._t("Sorry something went wrong with the annotation store")}return b.showNotification(d,b.Notification.ERROR),console.error(b._t("API request failed:")+(" '"+a.status+"'"))},d}(b.Plugin),b.Plugin.Permissions=function(c){function d(a,b){this._setAuthFromToken=A(this._setAuthFromToken,this),this.updateViewer=A(this.updateViewer,this),this.updateAnnotationPermissions=A(this.updateAnnotationPermissions,this),this.updatePermissionsField=A(this.updatePermissionsField,this),this.addFieldsToAnnotation=A(this.addFieldsToAnnotation,this),d.__super__.constructor.apply(this,arguments),this.options.user&&(this.setUser(this.options.user),delete this.options.user)}return z(d,c),d.prototype.events={beforeAnnotationCreated:"addFieldsToAnnotation"},d.prototype.options={showViewPermissionsCheckbox:!0,showEditPermissionsCheckbox:!0,userId:function(a){return a},userString:function(a){return a},userAuthorize:function(a,b,c){var d,e,f,g;if(b.permissions){e=b.permissions[a]||[];if(e.length===0)return!0;for(f=0,g=e.length;f<g;f++){d=e[f];if(this.userId(c)===d)return!0}return!1}return b.user?c&&this.userId(c)===this.userId(b.user):!0},user:"",permissions:{read:[],update:[],"delete":[],admin:[]}},d.prototype.pluginInit=function(){var a,c,d=this;if(!b.supported())return;c=this,a=function(a,b){return function(d,e){return c[a].call(c,b,d,e)}},!this.user&&this.annotator.plugins.Auth&&this.annotator.plugins.Auth.withToken(this._setAuthFromToken),this.options.showViewPermissionsCheckbox===!0&&this.annotator.editor.addField({type:"checkbox",label:b._t("Allow anyone to <strong>view</strong> this annotation"),load:a("updatePermissionsField","read"),submit:a("updateAnnotationPermissions","read")}),this.options.showEditPermissionsCheckbox===!0&&this.annotator.editor.addField({type:"checkbox",label:b._t("Allow anyone to <strong>edit</strong> this annotation"),load:a("updatePermissionsField","update"),submit:a("updateAnnotationPermissions","update")}),this.annotator.viewer.addField({load:this.updateViewer});if(this.annotator.plugins.Filter)return this.annotator.plugins.Filter.addFilter({label:b._t("User"),property:"user",isFiltered:function(a,b){var c,e,f,g;b=d.options.userString(b);if(!a||!b)return!1;g=a.split(/\s*/);for(e=0,f=g.length;e<f;e++){c=g[e];if(b.indexOf(c)===-1)return!1}return!0}})},d.prototype.setUser=function(a){return this.user=a},d.prototype.addFieldsToAnnotation=function(a){if(a){a.permissions=this.options.permissions;if(this.user)return a.user=this.user}},d.prototype.authorize=function(a,b,c){return c===void 0&&(c=this.user),this.options.userAuthorize?this.options.userAuthorize.call(this.options,a,b,c):!0},d.prototype.updatePermissionsField=function(b,c,d){var e;return c=a(c).show(),e=c.find("input").removeAttr("disabled"),this.authorize("admin",d)||c.hide(),this.authorize(b,d||{},null)?e.attr("checked","checked"):e.removeAttr("checked")},d.prototype.updateAnnotationPermissions=function(b,c,d){var e;return d.permissions||(d.permissions=this.options.permissions),e=b+"-permissions",a(c).find("input").is(":checked")?d.permissions[b]=[]:d.permissions[b]=[this.user]},d.prototype.updateViewer=function(c,d,e){var f,g;c=a(c),g=this.options.userString(d.user),d.user&&g&&typeof g=="string"?(f=b.$.escape(this.options.userString(d.user)),c.html(f).addClass("annotator-user")):c.remove(),this.authorize("update",d)||e.hideEdit();if(!this.authorize("delete",d))return e.hideDelete()},d.prototype._setAuthFromToken=function(a){return this.setUser(a.userId)},d}(b.Plugin),b.Plugin.AnnotateItPermissions=function(b){function c(){this._setAuthFromToken=A(this._setAuthFromToken,this),this.updateAnnotationPermissions=A(this.updateAnnotationPermissions,this),this.updatePermissionsField=A(this.updatePermissionsField,this),this.addFieldsToAnnotation=A(this.addFieldsToAnnotation,this),c.__super__.constructor.apply(this,arguments)}return z(c,b),c.prototype.options={showViewPermissionsCheckbox:!0,showEditPermissionsCheckbox:!0,groups:{world:"group:__world__",authenticated:"group:__authenticated__",consumer:"group:__consumer__"},userId:function(a){return a.userId},userString:function(a){return a.userId},userAuthorize:function(a,b,c){var d,e,f,g,h,i;e=b.permissions||{},d=e[a]||[];if(f=this.groups.world,B.call(d,f)>=0)return!0;if(c!=null&&c.userId!=null&&c.consumerKey!=null)return c.userId===b.user&&c.consumerKey===b.consumer?!0:(g=this.groups.authenticated,B.call(d,g)>=0)?!0:c.consumerKey===b.consumer&&(h=this.groups.consumer,B.call(d,h)>=0)?!0:c.consumerKey===b.consumer&&(i=c.userId,B.call(d,i)>=0)?!0:c.consumerKey===b.consumer&&c.admin?!0:!1},permissions:{read:["group:__world__"],update:[],"delete":[],admin:[]}},c.prototype.addFieldsToAnnotation=function(a){c.__super__.addFieldsToAnnotation.apply(this,arguments);if(a&&this.user)return a.consumer=this.user.consumerKey},c.prototype.updatePermissionsField=function(b,c,d){var e;return c=a(c).show(),e=c.find("input").removeAttr("disabled"),this.authorize("admin",d)||c.hide(),this.user&&this.authorize(b,d||{},{userId:"__nonexistentuser__",consumerKey:this.user.consumerKey})?e.attr("checked","checked"):e.removeAttr("checked")},c.prototype.updateAnnotationPermissions=function(b,c,d){var e;return d.permissions||(d.permissions=this.options.permissions),e=b+"-permissions",a(c).find("input").is(":checked")?d.permissions[b]=[b==="read"?this.options.groups.world:this.options.groups.consumer]:d.permissions[b]=[]},c.prototype._setAuthFromToken=function(a){return this.setUser(a)},c}(b.Plugin.Permissions),b.Plugin.Filter=function(c){function d(b,c){this._onPreviousClick=A(this._onPreviousClick,this),this._onNextClick=A(this._onNextClick,this),this._onFilterKeyup=A(this._onFilterKeyup,this),this._onFilterBlur=A(this._onFilterBlur,this),this._onFilterFocus=A(this._onFilterFocus,this),this.updateHighlights=A(this.updateHighlights,this);var e;b=a(this.html.element).appendTo((c!=null?c.appendTo:void 0)||this.options.appendTo),d.__super__.constructor.call(this,b,c),(e=this.options).filters||(e.filters=[]),this.filter=a(this.html.filter),this.filters=[],this.current=0}return z(d,c),d.prototype.events={".annotator-filter-property input focus":"_onFilterFocus",".annotator-filter-property input blur":"_onFilterBlur",".annotator-filter-property input keyup":"_onFilterKeyup",".annotator-filter-previous click":"_onPreviousClick",".annotator-filter-next click":"_onNextClick",".annotator-filter-clear click":"_onClearClick"},d.prototype.classes={active:"annotator-filter-active",hl:{hide:"annotator-hl-filtered",active:"annotator-hl-active"}},d.prototype.html={element:'<div class="annotator-filter">\n <strong>'+b._t("Navigate:")+'</strong>\n<span class="annotator-filter-navigation">\n <button class="annotator-filter-previous">'+b._t("Previous")+'</button>\n<button class="annotator-filter-next">'+b._t("Next")+"</button>\n</span>\n<strong>"+b._t("Filter by:")+"</strong>\n</div>",filter:'<span class="annotator-filter-property">\n <label></label>\n <input/>\n <button class="annotator-filter-clear">'+b._t("Clear")+"</button>\n</span>"},d.prototype.options={appendTo:"body",filters:[],addAnnotationFilter:!0,isFiltered:function(a,b){var c,d,e,f;if(!a||!b)return!1;f=a.split(/\s*/);for(d=0,e=f.length;d<e;d++){c=f[d];if(b.indexOf(c)===-1)return!1}return!0}},d.prototype.pluginInit=function(){var a,c,d,e;e=this.options.filters;for(c=0,d=e.length;c<d;c++)a=e[c],this.addFilter(a);this.updateHighlights(),this._setupListeners()._insertSpacer();if(this.options.addAnnotationFilter===!0)return this.addFilter({label:b._t("Annotation"),property:"text"})},d.prototype._insertSpacer=function(){var b,c;return c=a("html"),b=parseInt(c.css("padding-top"),10)||0,c.css("padding-top",b+this.element.outerHeight()),this},d.prototype._setupListeners=function(){var a,b,c,d;b=["annotationsLoaded","annotationCreated","annotationUpdated","annotationDeleted"];for(c=0,d=b.length;c<d;c++)a=b[c],this.annotator.subscribe(a,this.updateHighlights);return this},d.prototype.addFilter=function(c){var d,e;e=a.extend({label:"",property:"",isFiltered:this.options.isFiltered},c);if(!function(){var a,b,c,f;c=this.filters,f=[];for(a=0,b=c.length;a<b;a++)d=c[a],d.property===e.property&&f.push(d);return f}.call(this).length)e.id="annotator-filter-"+e.property,e.annotations=[],e.element=this.filter.clone().appendTo(this.element),e.element.find("label").html(e.label).attr("for",e.id),e.element.find("input").attr({id:e.id,placeholder:b._t("Filter by ")+e.label+"…"}),e.element.find("button").hide(),e.element.data("filter",e),this.filters.push(e);return this},d.prototype.updateFilter=function(b){var c,d,e,f,g,h,i;b.annotations=[],this.updateHighlights(),this.resetHighlights(),e=a.trim(b.element.find("input").val());if(e){d=this.highlights.map(function(){return a(this).data("annotation")}),i=a.makeArray(d);for(g=0,h=i.length;g<h;g++)c=i[g],f=c[b.property],b.isFiltered(e,f)&&b.annotations.push(c);return this.filterHighlights()}},d.prototype.updateHighlights=function(){return this.highlights=this.annotator.element.find(".annotator-hl:visible"),this.filtered=this.highlights.not(this.classes.hl.hide)},d.prototype.filterHighlights=function(){var b,c,d,e,f,g,h,i,j;b=a.grep(this.filters,function(a){return!!a.annotations.length}),e=((j=b[0])!=null?j.annotations:void 0)||[],b.length>1&&(d=[],a.each(b,function(){return a.merge(d,this.annotations)}),h=[],e=[],a.each(d,function(){return a.inArray(this,h)===-1?h.push(this):e.push(this)})),f=this.highlights;for(g=0,i=e.length;g<i;g++)c=e[g],f=f.not(c.highlights);return f.addClass(this.classes.hl.hide),this.filtered=this.highlights.not(this.classes.hl.hide),this},d.prototype.resetHighlights=function(){return this.highlights.removeClass(this.classes.hl.hide),this.filtered=this.highlights,this},d.prototype._onFilterFocus=function(b){var c;return c=a(b.target),c.parent().addClass(this.classes.active),c.next("button").show()},d.prototype._onFilterBlur=function(b){var c;if(!b.target.value)return c=a(b.target),c.parent().removeClass(this.classes.active),c.next("button").hide()},d.prototype._onFilterKeyup=function(b){var c;c=a(b.target).parent().data("filter");if(c)return this.updateFilter(c)},d.prototype._findNextHighlight=function(a){var b,c,d,e,f,g,h,i;return this.highlights.length?(g=a?0:-1,i=a?-1:0,h=a?"lt":"gt",b=this.highlights.not("."+this.classes.hl.hide),d=b.filter("."+this.classes.hl.active),d.length||(d=b.eq(g)),c=d.data("annotation"),e=b.index(d[0]),f=b.filter(":"+h+"("+e+")").not(c.highlights).eq(i),f.length||(f=b.eq(i)),this._scrollToHighlight(f.data("annotation").highlights)):this},d.prototype._onNextClick=function(a){return this._findNextHighlight()},d.prototype._onPreviousClick=function(a){return this._findNextHighlight(!0)},d.prototype._scrollToHighlight=function(b){return b=a(b),this.highlights.removeClass(this.classes.hl.active),b.addClass(this.classes.hl.active),a("html, body").animate({scrollTop:b.offset().top-(this.element.height()+20)},150)},d.prototype._onClearClick=function(b){return a(b.target).prev("input").val("").keyup().blur()},d}(b.Plugin),b.Plugin.Markdown=function(c){function d(a,c){this.updateTextField=A(this.updateTextField,this),(typeof Showdown!=="undefined"&&Showdown!==null?Showdown.converter:void 0)!=null?(d.__super__.constructor.apply(this,arguments),this.converter=new Showdown.converter):console.error(b._t("To use the Markdown plugin, you must include Showdown into the page first."))}return z(d,c),d.prototype.events={annotationViewerTextField:"updateTextField"},d.prototype.updateTextField=function(c,d){var e;return e=b.$.escape(d.text||""),a(c).html(this.convert(e))},d.prototype.convert=function(a){return this.converter.makeHtml(a)},d}(b.Plugin),b.Plugin.Tags=function(c){function d(){this.setAnnotationTags=A(this.setAnnotationTags,this),this.updateField=A(this.updateField,this),d.__super__.constructor.apply(this,arguments)}return z(d,c),d.prototype.options={parseTags:function(b){var c;return b=a.trim(b),c=[],b&&(c=b.split(/\s+/)),c},stringifyTags:function(a){return a.join(" ")}},d.prototype.field=null,d.prototype.input=null,d.prototype.pluginInit=function(){if(!b.supported())return;return this.field=this.annotator.editor.addField({label:b._t("Add some tags here")+"…",load:this.updateField,submit:this.setAnnotationTags}),this.annotator.viewer.addField({load:this.updateViewer}),this.annotator.plugins.Filter&&this.annotator.plugins.Filter.addFilter({label:b._t("Tag"),property:"tags",isFiltered:b.Plugin.Tags.filterCallback}),this.input=a(this.field).find(":input")},d.prototype.parseTags=function(a){return this.options.parseTags(a)},d.prototype.stringifyTags=function(a){return this.options.stringifyTags(a)},d.prototype.updateField=function(a,b){var c;return c="",b.tags&&(c=this.stringifyTags(b.tags)),this.input.val(c)},d.prototype.setAnnotationTags=function(a,b){return b.tags=this.parseTags(this.input.val())},d.prototype.updateViewer=function(c,d){return c=a(c),d.tags&&a.isArray(d.tags)&&d.tags.length?c.addClass("annotator-tags").html(function(){var c;return c=a.map(d.tags,function(a){return'<span class="annotator-tag">'+b.$.escape(a)+"</span>"}).join(" ")}):c.remove()},d}(b.Plugin),b.Plugin.Tags.filterCallback=function(a,b){var c,d,e,f,g,h,i,j;b==null&&(b=[]),e=0,d=[];if(a){d=a.split(/\s+/g);for(g=0,i=d.length;g<i;g++){c=d[g];if(b.length)for(h=0,j=b.length;h<j;h++)f=b[h],f.indexOf(c)!==-1&&(e+=1)}}return e===d.length},b.prototype.setupPlugins=function(c,d){var e,f,g,h,i,j,k,l,m;c==null&&(c={}),d==null&&(d={}),j=n.getGlobal(),h=["Unsupported","Auth","Tags","Filter","Store","AnnotateItPermissions"],j.Showdown&&h.push("Markdown"),i=j.location.href.split(/#|\?/).shift()||"",g={Tags:{},Filter:{filters:[{label:b._t("User"),property:"user"},{label:b._t("Tags"),property:"tags"}]},Auth:{tokenUrl:c.tokenUrl||"http://annotateit.org/api/token"},Store:{prefix:c.storeUrl||"http://annotateit.org/api",annotationData:{uri:i},loadFromSearch:{uri:i}}};for(e in d){if(!y.call(d,e))continue;f=d[e],B.call(h,e)<0&&h.push(e)}a.extend(!0,g,d),m=[];for(k=0,l=h.length;k<l;k++)e=h[k],e in g&&!g[e]?m.push(void 0):m.push(this.addPlugin(e,g[e]));return m}})).call(this);
\ No newline at end of file diff --git a/annotator/annotator.min.css b/annotator/annotator.min.css new file mode 100644 index 0000000..025356e --- /dev/null +++ b/annotator/annotator.min.css @@ -0,0 +1,2 @@ +p {width: 800px;} +.annotator-notice,.annotator-filter *,.annotator-widget *{font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-weight:normal;text-align:left;margin:0;padding:0;background:0;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;-moz-box-shadow:none;-webkit-box-shadow:none;-o-box-shadow:none;box-shadow:none;color:#909090}.annotator-adder{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMzgwMTE3NDA3MjA2ODExODRCQUU5RDY0RTkyQTJDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOUY5RUFERDYwOEIxMUUxOTQ1RDkyQzU2OTNEMDZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOUY5RUFEQzYwOEIxMUUxOTQ1RDkyQzU2OTNEMDZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA1ODAxMTc0MDcyMDY4MTE5MTA5OUIyNDhFRUQ1QkM4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAzODAxMTc0MDcyMDY4MTE4NEJBRTlENjRFOTJBMkM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CtAI3wAAGEBJREFUeNrMnAd8FMe9x3+7d6cuEIgqhCQQ3cI0QQyIblPiENcQ20KiPPzBuLzkYSeOA6Q5zufl896L7cQxOMYRVWAgxjE2YDq2qAIZJJkiUYR6Be5O0p3ubnfezF7R6rS7VxBlkvEdd3s735n57b/M7IojhIDjOKgU9xfchnXrFtPjltE6Gne/CJQrj9bVmQsXrqf/JuzDTRs2EO8D52dmap3Hwz/9+X9K/PTtPeGnyBL/oS2LPfwzXljXjv9g9kK/+H8WNXsxB8aPe8SPPAKy+v3GvR7+n0fNacfPaQiIfch98vHHY/R6/bL+ycmLhg0bhq6xsXednjHdbGhAYWEhbpSUrHU4HKv/48UXz7GvNq5f36YTGQsWaA0+N3XeR2N4Xr8sKTF5Ub9+QxEZ1ZWe/673AM2NN3Hl6vcoKy9ZK4qO1Ue2LZX4Zzyf1ab1g1sWafK/GjVzjA78sjE/GLto8oxpiI/vA4h3EZ22KhIRFRUVOPT1AeTnnVsrQFz9QeM+id9bRHoteFaZeCakpS1KSkqCzWaDyWTCvSjhERFIm5SGuLi4JSeOH2cfveQWjLeItPg5TrcsdczERTFdk2G2AMY61+V0V+eAg8EQi8HDJqNnj95Lcs+28jPBTH/un37z6zh+2U8XpC8aO3QUSIMV4qVbd78DPNAnNAaZz83HqeFDl2zfsMXD/17jHvw8ulVEvBb8P9eulSwPU31jY6MkIFEU70llbZnNjeibkIDExMQljMXNRUUkWU6ibEo4mfVZlpiQvCiyUzLqjYC1hdpmevWKd7myNlhbDbeByM4DEd8ncQljcXMd2kq9kaQCbf7XomctG00tT2rScJByM9BsZ+YBkgm9m1UgUlukzIxx/Udg+KgRSxiLm+s98x5OS0DuTvC0LB0ydAgsFus9E453tVgsSHl4OINZKufVEJCHn+P4pX2TUmBsdgmH3NvqoG2aaNv9B4wEYwmUn7qupdPSJkNssECkkyqK97iyNustmDnjMTAWJb3o1a6AH86ZE0YnLSUsLAxWdjndxxISYmC+KGXkyJGGc+fOsVEXifroS/wJQ2aH8RyfwuliYLfffauvViSrFNaJubWUbnEjDPWV5yV++OBPDekfpjPoUnqEdAFpbrl/HaAiiuWjqZr5lP76HoZrjlonP+ck4tWi/oS+fSN0Oh0dfBsEQbjP1QEai+GRceOi3YwLFy/mFObAwx8VEx9BOw2b/d64LS135hB46PQ69EgY6+E/vO1FjrSPhj383XWdIgwGA4iFuhJ6EiLep0rb5h0EIaEhGGyI8/C/Z3K6MVULZLFaeTZBbldyPwtrn7EwJlmMQLRiIIfdIvELrknUSPnQaCxDk7kqYK4e8WNhs95GSFgMc1GqxzkEp8tiTP7y2+Dg2TspLBGJRr5HUG6uRVVjfcD8qb2GwtjSiM6hUdTf85pWiLFITDJ+9l/VLMxht3NuATEroFbs1D+sWfMRNm3aFHAHvv32Wxw7loNHHnkE4eHhGgLiXRNg52RXqWYMIQr0WJqOSvGIhoCs5nI8MyMUT82cGDD/whWlGJpowaUbTdCH91EVkTT/jEVoy88+U+WHyHkuHo0OlFvqEPHjAZg699mA+Ytf2gnb4EiYixsQZ+iiKiLO1b6LifNK2JSvALsgcCK7gn24l3/84x9BiefGjRJs3LgRK1asxOrVa6RgWasdxsKYZFeA9JkaPxGd/CwYFDTqE9OYePoEzL/490Y8Ng54Y8kgPEnPYWmsoJZGUGxDCkhZ0Cy25deyQAKI8xiRaNbIHw5AwtyRAfPXvrYP+mnxGPafjyLy8WRUWm7ScRZV23GuLpI2/FoWCILD4UmVtVzY7t17pNedOz/DuHHj/IvL6EAfPXpUEhB7/+mnn0qB8qJFi+hriOLCouSOKJP35+pWi/GLPl3Y9PHdpdd3PmlBcTnve4lQFKglNCIxrjOendMXOp7DE4/GweaowFfHacqli2rfX5GxihJTW351MHa1Ow2XtgXqOWWQ9Gr6v1zgutmPmFiEyd6Mzgnd0O3JUeBonNj38REotYtoPlCFSBKmmAmQVgskc5/tBcTJV6iJy31pubCWFmeGFh0djStXrvjsALM0Z86cxejRo/CHP/web7/9R2lx8rPPdkquLCUlRVFwRPQkLq2MYrvggGt9lYIHnwIKMThFc6OaaMdK7gl31GFIvAVXK5uwcXc8np+lR2Q4jx9N642L5QKKy6AoIKe7asuvENxwbV453y6MD3FOob3CBJ2onaoxK9hAzLAODEfj9Urot11GxDODwEcYED87BY1XHBCvGZVdGKfASHug17ASflkguZBY1qZVrFYrvvzyK8nlTZkyBa+/vhy/+tWbePfd95CZmYGHH34YDodD3QI5XZh/FsjFL/oKomWT7PM4Wx2mjgGef3wAvsmtxebd5eD5BDwzHdh/muBqhfI5RNHJKgbA73FhgjMT8mkZaaDr67gGwQw+rTeGPTsG1ceKUbK9EP2oBQ2bmwzb0TII143KHXB95mbyZyvD2WFpArQtkDxT8nXcnj17sGvXLixYkIkPP1xNU3Mdli9fjuTkZAwYMAC3b99WHFTGICosvImam1rE6TZ8BNHyeFbrOIu5ErPH6yRL8+XRevxkVk8a89Rg2yEzymujcfmGugVzLh6L7VaetVxY674U0czCWseIJkUax1U1NSB8eiL6zh6Oqq8voM+TI0AcIhq+uIqYqibYi2+5on0FDEK8QudWPrUgGm4X5lyVVF8plgtIq2ZnZ2P//gOSeE6ePCVZmiNHjiI3Nxfx8fG4efOmM1hW/D2Ru7BWRuUZ59yTI0/j1ao8U1U7pslUhSemGvBYWg98cZi6sKQQ6HUcpozrjv4JUSi4SlBbcU6zHacVFdsxauzAA7IYSK16RKlxTDVN8aNooBw3Yygq9hQifGA3KfbpNWkQovt1h+1iPfJriny0o8zIq1+/8Fz1WtXbzSjV7du34/jxE3j66aewb99+nD59GrGxsTRoXojhw4dL+2zp6fM1zyGxKPh0TQskiU97oU82/u0XAanIm6l45k7SYcrYbjhwvAGpw8IxalgMjI0C9p6gqXBJC+rLT2Hz/4zQbKfNZPtjgVy5DnNNoiCq1lb+9t/ZHHZpfSh8Vj/0nDAQ1UcuI3pkHGIf7guHyQrrgRtoLq5DbvUFjP94gWobxLUO1M4KcRoCgmfyxKAtkNlspsHxZzTj+gZPPfWkZHFOnTqFLl26UMGkY968eaiqqsKsWbOllWa1NtzWxPs+DK0YQmKH6HO/Su5m2uxjOWzgHJX40eQQzJjQHfuP12Hk4DCkpsTA1CTi65PAvw6LiIrkcHhjmuI55JUo7F74dGF+WSDl42yUv1q8jaiZyeg9dQgqD19EVEpPdBuVCMHcAuvhUjR/eQVcpAFzvnrdZ1tqRTsGoj9soYGvpbnZZ0dZgCyf4Pr6euz8/HNqXZowZ/ZsfL7zc1y8dAnstpDXXnuNZlw/QGVFRZugWa0dGip5VqO94y5Nfnr11Jpo8GjSWsl1lhp6TKOVuAbSjq5htUif2wU9YsPw9bEGTBnTGQ8NiEJZjQPrdhPsO0Ngp+gtQqsLrDIqt2Ojsad0JXsLyEdwxgRWe+EaBKNV9Ziu4mPSa92F60Cj3bnyTQSYYoGkF9MQ2SMGJbvOoMe0oYhN6QtL6U3UrT0N417qsuwUvmcE4thYOgTUFChn0brOYcpi11oHct9swG4207hjsa3FdR1369YtfPXVbjQ3NUuZ1cFDhyTxJCQk4KWXlmLUyBGoq61t5/DV2mGfK938QHy4MCkyVr1rQrnDRHSgU0gd5s+JQq9uYSgsNmHiyChJPBV1AtbvEbAvl6bN7iUdoqBGxXO3d2Hww4VxAtsW8OMeJHaMw7XO04Wgb+Z4RPXsgvqCUnSnsQ4Tj7X8Nmo/zoVp92WqatE59kIro1o7jCFgF+bLdKkVFs/s+vJLlNy4IYnn22+/ke4s7NOnjySeQYMG4ZZKtuWPKffXAkliCOLWwwjDbaTPMmBY/3DkF93EhBERGDE4GtUNIjbsJTh9kW2rcAGf1+mCA7kAPHsamtX7uKYIET0XpCImJR4150rQLW0AdVtJaKkyoeHjM7AeKwXv0D6HVjv+uzB3Bzn4Z4FcluokjXHYWk9cXG/s2LEDVdXVGDhwIN5++w/oS7Mto9Eo7Z+5B09+btV2OHdM4/8EEFcaH5gBIpg+miD98ThU1bXg6RndEdc9FNcrBfx5sw3fFet8nkN9LEUQBB4D+ZrA1lTbue3RaeZADF4wGU0Vt5A0bywi+3SF5WoDKn53AC1nKtunUV4CUmNQmxefMZBLQX70gJOyory87ySBlJdXSGk5i3lWrPg1uyEMdfX1bY5v8+r93os00BgIUuAtBGQlOGLDlNERMOg59OkRCh1N1ctqBLy7TURZnR53clOOxOIlGE0+uQvzoxvsGAc9f4/pg8EbdIiK7wpOz8N64xZq3zkC8bpJ+Tyil6sK0IXpfWVhfsdA9Bi2lsPclfvfDz30EJYv/y/JfTFRsaq17KEZAwWahYH4dYXLS2xUE0YN6e7hKioTseZzEXlFzoD5TkqwFogXtUMl+XH2biHolprkGVbrhVrUvXsc1hMVUsDMqyygus0kL6qfO+gsTEl4ahdMYUEhevXqheeeew5paRMl12W1WNDU1OQUo49VM07j3IFbIBJQDCTYTJgwPgb1Rg67jjtw5hLB5VKaEJi19sjYBi/bwIz0MwYKfCWaJ/4JqEmwonfacIg1zbi54wKaj5XB9n0thAYLtSCi4tgyQVscLZ4xVhUQgepKtM8YyJcFiomJkdZ7mOtiT1E8/czTUlvSExw03nGn6UrnYC7ufP556X337t19WqCAYiDXSrqvYmwiiIoAUgfcwjfHS3Ekh8DcJMBqE6jV0RYgc3EjU3rQd73QYPQjCQgkjWdxHxOQQPsuqI+/eIum+NFhcIzvgfzDuSAHTsFuskCw2CHatX0fc3GJ41Kdc1HXLLWlKCDGoGBJiIqASBsL5ENAmZmZeOedd/Dff/7zHZn4n86bpykgLwtENCwQke+F+So7jnD42U+A/31jyB3x//sYD60Htrz2woiGBSJtLBC7g0JUH/+mdQUI/c0k/OCjzDvit26+AJ1KOxIDp8DoTwwEHwJ64okfIzw8DCtXrgoYmu3es62M+fPTkTZxIhoaGjouBnKtRPsq2fsFKb5543ldwPxMvxdvEHz+rYAvckSt/CLolWieXeYah5k/yqPmXkDXP04NXDUCQUtBDRo3FaJpy/eqazq8xrKFqoAKCgsbJ0+Zwp6NkTIotcmqr6vDzMcek24GC2ZthN0fxITDnkRVEqr0Gf2/xWq1HTh40OjvXtjt2kuNvRIfgY46dl7KENU5th8WpHo3Cs+sCC/QGKvZVn09x+jvQmKRtapxnDAAOnbbjchpJoDNa/OleidFB/UlFFZaHDbbCXOR0VcM5MYkNTU1gt1mO2M0GVNDQyNosKg+wEwAatbD7xRaxcqxpxnY2pHDbv/Om1EhhvB8Z22qpyFWyxnOXpaq1ydIT2fcj6KnI8y1lFFrpcBP1Pkb7GbBQYQz1Tpzam9dGIhNuC/8XIgOFbwZAsR2/NqbqfQAk9mclZd3nrqoUPDU3XDUEt3LysQTFhaKgoILMJpMWd4LMdq78TRzbWnMaijZg+hwZkXv/eDraJus7VtlB2Gzmtvx+3BhpFlsyfrG+j30ESHQcbwUo9zTSttkbZ+0XUYTZWm3EKYiIPfiLXn//fe3FhUVbygs/B6RkWEwGPSSO3MH1nersjZYW0y4hYUFuHDh4oa//vWv2+VsGjGQ55hLp7O23qou2GCv34Ou0RxCDezc7pju7lQnP4ewEA5dogjsdV+hoTJvw+XcdQr8oiZ/VtWRrRcbSzccNRRB3ykMOjb+7H90cu9qZWKlbek6heKw/jIKzNc3rKs60p5fIwYirpRCzMnJ+RO7FbO8rCxjzJjR6BzTBexpVfcEOhyilKqLYnCrtGyw2Z2JrLrdGHuU2nj7JnLPnMX1ayXrjxw9+o6bp00qI4rwxV9XdvZP9ECuU31RRvd+M4GweBBdJ9c9RtS322gGYvPvtlc1KxMWAoSGOOMdqQ+CEZytAnUX98JYf3l9bekpRX6NPxPi4T9jvvYnGsNy10NrMqbEPoQ4eydECqHO37IO2GhwbnU4bwcIqgP05KFUBqG81AGOVhPfgmqDCUeshSg2V64/aSxS5tdI491VOHHiRD2tby7IzDxcUlKaodfrh1ML0c198JChgzFhwgTYaJARqIiYeEJDDcg9nYv8/EL5AmENFeWF2trajes3bNjLlpXg3DcOyAKx39RX5NXT+ma/4U8dNtVfzuB43XCOa+WP7TMWnfu+AGMTH7CImHg6RVIRVm5HWWmO3DXVEFG4YG1u2Hi9YKcGv+iTP890rZ7WN5/t9cjhq7aqDD3lpz7Awz8quj+e0o8CZ3Y4H8YPVDyRIdgVWYBTlstOQkF67rrGYREu0Dhs447qk6r8akE054Z3vWcrgbxrIg9KAbuzMvfHv/rqqyx/f2EiTcMDEZFbPKdOncaxYye2/u1vf/u9TOWCq115FWSdwFtvvUUUYiBVftdEtuMfOMa8qhchL3ROSA9IRG7xWCu3oap479ais5sC4h82fqlaEK3I75rIdvwL46etQiT3wjNigCJyieffEfk42JS/NavsUED8rybNIWouzG0+OVknIDt5mw588MEHv6WnY4/ppk+aNMkvETHxsOfATp48ycSzhZ7jNzJwUQbr3QE3m8bfVgiMv/jspt+yxzd6gqR3Tpjvl4g84qn4FFVX9m4pOrs5YH6NFD4g/nXlh3/LJXCEi+TSf+KviFzi2RlNxdNcsIWKJ3B+V7jhKwaC68dEdmJe1gGpM1QAq1555RV2zPzJkydrisgtHuoWmXiy6W9XymAFlY4I3j7Yxz5XQPxFeZtXsYioJxHnd07M1BRRq3i2orJ4b3ZxXnaQ/GKH8WeVHlqFRI4gGvN/SkaDM2mIiIknKgSfdTqPg5b87KzSg0Hxu2WtZoG4Nmpr3wFe1gF2DvHvf/87BXmFWYaMqVOmKIqIBWihVDzHqXhyco5n09+soB/bvVQuqlSP7/3lL3/pywIFzF+ct2WlcwsfGZ2TlEXkEU/5Fqd4vtsSFP/QcYsJOpg/6wYVQhIVUScu4zlxNHglEVHxgIrnX53PY39LQTb9TVD8ryQ/7qHXskDenZGbVvdfadDJG6WCWEXIy2xsMqZNYyJqzc5YdsJinmPHjkni+fDDD3/tgpd3QAm4DfwvfvEL4scue1D8VBDMEqEXCBXRgjYicovHUp5NxbMn+8p3nwbFP2TcQuLHFktQ/FklB1ZREYGLQcbzxEtETDzRIdjRJd8pnpIDQfG/kvwjv/5GohK8fFPf3Yl26qTCWEkI+2tohIpoGux2h3SxMfHk5OTIxWPz6oCgkCq2uaHwjTfeIAHcohEUPxXGShaf9IJIRbRIEhErTvFsRmURFc+5bUHxDxmbSeD/PUpB8WeV7F9J+nEgXbiMdLclYmNGLc+2rvnYZyvIXleyPyj+lwfMbTf6ej+vBO9/K5lYT2OrV69e6XwkCBmPPjpDsj7s0Z6cnGOb6Xdu5du84NunibS8/vrrxJ/N047kv3Juu8Tfi/J3TV4srdk33tjELM9m+l1A/INTM+45/7rr+1aiPz0olsuYz4+RNkM/7XoO++35m+l3AfG/PHCuJrQ+yM4QtL3JsV1H16xZs4IKh32eyf7ihks8b8lUr2Q6iVwwHVwC4r96fgfll1brMnX6MCqe3VQ8//LJPzg13etc4n3hX3dt3woumY5/F2SGwoB9joLNWdf2+eR/edCPAxp/fQd0SJ4ttFkMY4KxWCx5Op0u4pNPPlkvi/YV4ZcvX04IuWd/DNAnPxOMYG/J4zg+4lrhFz75B495geAB4s+6+vVbln72PB3l33ztgE/+ZYOfCJie8/GX6v06h8wnyzMDveu9/CqRp4vtxBNM43/5y1/ueMO5I/gl8QRRLp/NfiD4mXiC2oq6U3rXxBOFVUzmY1tcr/Lq6CjxdERxTfwd8Qcrno4orom/I/5gxdMhAlIQkXwF064CLzwI4lERUUD891M8KiIKiP9OxNNhAvISEVFZDpevaJIHRTwKIvKb/0EQj4KI/Oa/U/F0qIA03JnS+wdKPD7cmSL/gyQeH+5Mkb8jxHOnWZiWiOTBLVH6/kEtbmHIglui9P2DWtzCWH3534r8HSUcd/l/AQYA7PGYKl3+RK0AAAAASUVORK5CYII=');background-repeat:no-repeat}.annotator-resize,.annotator-widget::after,.annotator-editor a::after,.annotator-viewer .annotator-controls button,.annotator-viewer .annotator-controls a,.annotator-filter .annotator-filter-navigation button::after,.annotator-filter .annotator-filter-property .annotator-filter-clear{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAEiCAYAAAD0w4JOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDY0MTMzNTM2QUQzMTFFMUE2REJERDgwQTM3Njg5NTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDY0MTMzNTQ2QUQzMTFFMUE2REJERDgwQTM3Njg5NTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ODkwQjlFQzZBRDExMUUxQTZEQkREODBBMzc2ODk1NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENjQxMzM1MjZBRDMxMUUxQTZEQkREODBBMzc2ODk1NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkijPpwAABBRSURBVHja7JsJVBRXFoarq5tNQZZWo6BxTRQXNOooxhWQBLcYlwRkMirmOKMnmVFHUcYdDUp0Yo5OopM4cQM1TlyjUSFGwIUWFQUjatxNQEFEFtnX+W/7Sovqqt7w5EwMdc6ltldf3/fevffderxSZWVlZbi5uTXh6rAVFBTkqbVubl07eno2d3BwaGgtZNPGjYf5wsLCDRu/+ir20aNH2dZCcnNzN6uPHTv2S2xsbHZaWpqLJZqJIR9FRMTxdHFJeHiiJZrl5+fniiF0jRdumgsjyOZNm44AshHPxAnXeXEhUzAJJEF8j5cWVoIZg9CmqqiokK3CksWLX3d0dJwy+f3331Cr1RoliEajMQ4Sw2xsbHglTZ6CampquOex8dxz2l5gkEY4qKyslOu1Qa6urpPRs9VkW2RjFmskQCaFhASQLZEZkDlYBBJDnJ2dXSnwmYLxpiDCdVMw3hyIObCnlr1g/nwfQCYpQcQbOTM5tbgDeDEkZPLkoaYgSpqpKysqnkIaNWrkYq7dUEim0EwhmkI1bw1ETjNVTk7OA2sg0jarDyO/ZhiJjtpS4923L1dWVs5VV1vW8Dyv4uzsbLnkc+c4dceOnn1LS0vat23bhnvSgypOpTItajXP2dvbcefOneVSL146ys+dOzvgyuWrMadOJeKGrb6AeRBb7syZM1xqyo9HwfDncZ0L+0dowGXATpw4qVfVGEyAJCUBkvrjUTzrTwzUkirDcfOewk5w9oBp8AD9iljoGt07rTvNpaRcPDqPIOx5+mlOkPnz5wakpV2JiU84ztlRNTVqTsXzeuHValyz4xJ1Ou4CICjrL37WoPsXLAgD7HJMXFw8Z2ur4dT8E23s7Wy4UydPchcupB5FGX8ZOxKUeyYLF84LSLt0OebYsXi9ZvYOdtwJBsE9f7lnVAUFuYp2smxpxJFOnTu9aWtry6VcSDm6cNF8f6WyRkEMFg7rclq0aP7fjZWrDyNmeL9c8iDedu7YMRK7xoHjx28y2tjGcsivt29PaOTsPNAGeSIGidNBwcF9La6aAPH18+UG+QzmtFqtN67pLALt2LYtAUOUHoLMWO/1BMM45o17OgUQ2dEz2R4drYf4AMLzakTNahY5n8FQRid9rpZG26KiE5ypOkP89JqIjZWOVSqeG+zrw7lp3bxRVidbteitUQnOLtQmhhApzMfXFzCtN57R1QJFbdkKiMtAP0Ao7lB16CE5oXtUTYJRB+BZPUzd6uWXE1xcXQcO8R+iqIms3aADWrdpw2VmZrbQJeoCeBdoYinkWTVVHNVC21jrrSopKakh67Y2ChCMXmw0xizbXM2I8dyc9gUObBpTBTw8WqixGw45n5GRnl4XjaZD9kP+DaibVSA8OAu7SHZKWm3GtTYWgfDATOxWQGxElynsepkNAoSq808JhII7DZKHzWpsQGYwiPhHyPzD0NifmtVGrE1WUlSQaDIXkNVm2REgc1jDiqtTBQk1pkmtqgEyCLu/SqpKkFmArDHLsgGxw57euaiXIkSQOeZCBI1egtCs324IxVGy3s9NtYkcqCtkGBtXHkLeAyTBGl8rZPZxCfIAkNIXLB6h9/4A6a/gMv0hvUyCUKgLdlsoXODYXwJ5E7sDzPM7G7OjPtjvgnjSizNkqwDDPoD9AL08E2QXaa7Ua40gLUTXmkHW44Gd2I9ndiZsLVh52ar9AAlmNiRs7eg9ByIOYtkMHGe0+6HBW9ithbSSKXcH8iFs7DuTvYZC31KKpFAuyhhE2v3kJkEK5YJZwytbtru7B8GGQjZCmhopmwkJgcRCu2o5jXwh2yWQWyxS3pH05teQwUpVK4Jkia49YA07l/ast8T3ihR7DfXvhuP/Mq2CATksarsRrBPuQQJx76Kp7vfGzh4F42V8zQe7YtxL+u2EkVoDZJ8+fej8VQi9vPRmg8BpCKXAN5OSkqpNVg0QR7VaPR3n05FLN6k9mcJnYLcK178ErEQRBIgTMtMNyG4Djaqv0XyJMtMBM4jrPCC8vb19KEHatWtXMHbs2LtOTk7lQoHGjRuXjBs37q6Hh0cRyvwZr+5/kW1s3GhXVVWlfxXv27fvhTlz5iybNm1aCuBVeEsqnzFjRmJoaOjS7t27X2fVXIgfdzfQtnnz5sPv3r2r/3/Rvn37WkdHR/8I1UNdXV1X4kdK+vfvPxsPNm3YsKE++JWWlmpbtNBH0C21QDY2NgOEk8LCwlY4340HhwM2DZfKcaxFJ+wsKip6OlfZoEGDwVIQD/Vrzc1Ciyb+/v4UGS9A0nx8fDxRHSdxGbzTaQ2q1qpVq3vnz58XGrYUbZIM0FVo0gOXyqBZ8p49ey6tW7fO8/Hjx7ZUrm3btgbZLe/p6Xnczs6ODI8bMWJEGiDTAfGAFjGo5nc4rh4zZswMaKYPKdSjXl5e8XLdfzQgIEBf6ODBg2qcv47qRcH4GuNlpRWOd+Bap8TERH0CNnz48Gv9+vVLkDNINXrtg8jIyEWootaYQaIHs2AKc5s1a7aVZS8GLuJ0//798M2bN4+NiYlxxztcLR90dHSsGDlyZHpwcHBU06ZNKWUuNRZGnGAjwTdu3BifkpLS7PLly05oJ65r164FMMZ0WH0UXIRG5GJz4pGajaad2RBOnXCZSYa0OrVAMueOEFc23tODuUyKxSBpQBS3hcbd3b396NGj+/v6+np16NDhVfRcNar40/fff5+ya9euk/n5+XeYlsoRomfPnv3j4+O3oJ0e1Ug2uMeDQ4cOfdmlS5deQlSVzgfoqzNkyJDXrl+/Hl9jYrt48eIh/GBHWRCq4HTq1KmtVLC4uDgZu48QVrKFhxGD7mC3DCZxjc5jY2M/o9HGAAQfGlBeXv6YCqEtKLd2weFYNM9jALNwTJ7e5OzZs1Hsx7JXrlzZ3QCk0+nmCb+el5d3Jzw8/ANKpnDqC6FBQLt27dp5CDGZQrnjx49/aACCe2yRNOx9wPsJvQBN3iorK8sXl7l58+bnUpDGwcGh1lQEQqyNt7d3GYUdeqXo1atXKQraissgWlbIDAyaZOzfZ/8+TMd5iEqluhMWFvZHmEIpjncDNAHttR6RUsuC31kDA4LanihUxOq+ivLGNWvWzAYjF4Hs3qJFi6bgWuvU1NStrBepR1satBH+0ERLJBXKyMi4AMP7Ag2bJbRHbm7unQMHDqzPzs7+ic5RNgw7lZxB0oErfumgKYOE5tHYNVSybAHmBlkB+8mXAnDtISALcdhI7LRiUUnmgowmEWj4akXvF1+g4Zs6hYmGRUIyhXLKRIzlUuJshEYOyvZDUBUHaTaCax/jcINcAiHORlpi6NmJHulrIhtZi06ZDViF3HAE43aINAahZAIWD0bl3wD7E55RGYBcXFy84f3vKkFo9IWVJ82aNSsVY34lNF8Ky25pAELW8Ta6VnZCSqvV0hB+ys/Pb/qZM2d2oRxlI+4Y194wAKFLe9IBDduBgYG3e/TooX/dwg+UzZw5U4chnNKatgjDoXAnDc07oikGGrQf1G1AB+3bt8/FABgJ1duvWrXqvUGDBl0HZBYgbSgtRBu6irIRZwONkDTRywqH0UL7zjvvvILBMQLD9+qhQ4cS5GVAvkIju4pMoQY/+osBCDFbh8arIkdEo89euHDhAgC+ZZpsFEP0bzbNmhUhG/nBADRgwIADqEbG0ymaqqrZqN5+xJ5NgBhMzmHcO4cU57gBqGXLlmkTJ07c0K1bt0dPp68qKjoCaLAOibJbZL00o5Oj5CKu6enpS5CIvo3hpjnito2kOsVBQUE/jxo16hP0zUY2q6OYRDijjQJv3boViDzJHdGyCaUz6Lnszp07X0GnbGRv5JXmZCPk/ZRD08wE2UoBez2/xhIJztxshGfZiBsbRSgePWKQEuk8tlI2Yo8M1xOJZz9kI52QWL2CqpYg6F9FHE/duXMnrX24K9c+4s0B7jEKxngQXV6ikI18gQy4h7FsRD116tQ3MzMzL5kK/uiEfTDgNrIgdKv7lStXYk2MHlmIkAV0jKHpYyRkDQxAyOqDULDMCITSGh/kRpMoa8GWsXr16l5SEA8H7AdHtJVrOGjxC+5NQui4mpyc3Ap7Ncb95sgHDGe+7t279x0biovhGovx8H6mSQZpQoYdFRW1VEgJcb/q9u3b6wyq9vDhwz1suD6PzL4nUhZnnG6AUBRshiQ+HJA80WBZmZWV9YkBKCcnZxErUI3R4Ru4Ak1wksO6b9q0abEYwjQtR0IWaABCKvc6bhYLBRGbd+NV9D1UJ4IyEmnjI9ymYecul43YoTfWiwtTBoJrRXK9iLYMUkwicPASChwxIxtZRm9TprKRxpDlaKocmWzkKnYTITbmZiNqNuNH89tjWSSk6aBk2FCWMe9/kf+7vnz5ilp1k55b8q+/moiI5TWiHpCemyVKD1sM44w8bDXI6mrJgercRnWGGbPsGpkB1CqDVP3GXeR3CLI4CsgZFzPGOvmaVRADkLWQWiApxKp4pACxDPQ8IIL3S728xlKHFexIVRevr3faFwZkdQIhE0ZeoJFWLh5ZBTOlidkwc6plFkwpibA4tPAW/FOh3tfqQRaBrHrRMZWNmDvyPheIrPdbmwO8wBmbNB5ZldLI2ZGq3td+RRBNz0NWWr2ShRaguLi4LFOr1R9UVVXdx6U5FoP8/Pym2dvbr8jLy3O2em1NUFDQ4cLCwoA6t9G2bdscpk6des3BwaGyTiC0yachISHX9+zZk4Qq3qtrxuYEmQWJO3v2bEzv3r2/qWui1R6y5Hl4f72vWTgjY0n78UoDZp2rplKpHCCd6gIiB+44evTod1NSUhZb21Yvd+jQYZROp9tZWVlZVlxcnKU03aFo2di8du/evVa88MQqEP58IZ0Itxakhkyj1R51AkkWDui1QzXvWw0SAWmVyjeWguq9vx70XCIkxjD6T3E4ZGlSUlK+1Rrt3buXFpPSmtFbyEimQdRWgRo0aPA2O6b/X6+DXAQs4Hm0EYXZw4CF1Qnk5uZWGhgY+CnaK9KqjM3W1rZ62LBhVydMmDDdw8PjqMWNlJubewL5UWZiYmIo/WPTmgRCiJBLIc2tBdTHo/+3tMaS1IZnRknLX23qpNLBgwddk5OT93p5edG/nFtLtTTbIOPi4uif4TXl5eUFBw4cWOfo6EgfWTS1GiRa7vnzmjVrKD9qXyeQaAuzBCS37OxnyAykf3utCiPck9U8tEIzEpASa15qaHkHLfloY860UL3314Pk4pG7u4ex+7QYhT60bA6Jh2yAlGZkpBu1bOlGn6HtF52P4Z587duVk6xpM1a1cSLIEchJkYazzG0jWuxOCTstfKMv6OhLMlquF8vuDzcH1I5BaKO1o/tEk3jC0sUcUyD69RvckwWDHIuStIDSHjKE3actwlgYoRXj/2HH9GYkfGlInyreEZ3/jXuyoFlWIy8RRBgAxJ+WCRD6cPdfxgzyI3ZMHwPu4Z6sgKaPLO+z6ze5J0usPzMVIYWPKZ0YuJr1lPB91ihImjmhlj5bfI118SlIHkRIRqeYAxFchNZiX+EMP6ScImq7WpuSi5SwTHYyc4u7rFEvWuS09TH79wz6nwADANCoQA3w0fcjAAAAAElFTkSuQmCC');background-repeat:no-repeat}.annotator-hl{background:rgba(255,255,10,0.3)}.annotator-hl-temporary{background:rgba(0,124,255,0.3)}.annotator-wrapper{position:relative}.annotator-adder,.annotator-outer,.annotator-notice{z-index:1020}.annotator-filter{z-index:1010}.annotator-adder,.annotator-outer,.annotator-widget,.annotator-notice{position:absolute;font-size:10px;line-height:1}.annotator-hide{display:none;visibility:hidden}.annotator-adder{margin-top:-48px;margin-left:-24px;width:48px;height:48px;background-position:left top}.annotator-adder:hover{background-position:center top}.annotator-adder:active{background-position:center right}.annotator-adder button{display:block;width:36px;height:41px;margin:0 auto;border:0;background:0;text-indent:-999em;cursor:pointer}.annotator-outer{width:0;height:0}.annotator-widget{margin:0;padding:0;bottom:15px;left:-18px;min-width:265px;background-color:rgba(251,251,251,0.98);border:1px solid rgba(122,122,122,0.6);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 15px rgba(0,0,0,0.2);-o-box-shadow:0 5px 15px rgba(0,0,0,0.2);box-shadow:0 5px 15px rgba(0,0,0,0.2)}.annotator-invert-x .annotator-widget{left:auto;right:-18px}.annotator-invert-y .annotator-widget{bottom:auto;top:8px}.annotator-widget strong{font-weight:bold}.annotator-widget .annotator-listing,.annotator-widget .annotator-item{padding:0;margin:0;list-style:none}.annotator-widget::after{content:"";display:block;width:18px;height:10px;background-position:0 0;position:absolute;bottom:-10px;left:8px}.annotator-invert-x .annotator-widget::after{left:auto;right:8px}.annotator-invert-y .annotator-widget::after{background-position:0 -15px;bottom:auto;top:-9px}.annotator-widget .annotator-item,.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea{position:relative;font-size:12px}.annotator-viewer .annotator-item{border-top:2px solid rgba(122,122,122,0.2)}.annotator-widget .annotator-item:first-child{border-top:0}.annotator-editor .annotator-item,.annotator-viewer div{border-top:1px solid rgba(133,133,133,0.11)}.annotator-viewer div{padding:6px 6px}.annotator-viewer .annotator-item ol,.annotator-viewer .annotator-item ul{padding:4px 16px}.annotator-viewer div:first-of-type,.annotator-editor .annotator-item:first-child textarea{padding-top:12px;padding-bottom:12px;color:#3c3c3c;font-size:13px;font-style:italic;line-height:1.3;border-top:0}.annotator-viewer .annotator-controls{position:relative;top:5px;right:5px;padding-left:5px;opacity:0;-webkit-transition:opacity .2s ease-in;-moz-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in;float:right}.annotator-viewer li:hover .annotator-controls,.annotator-viewer li .annotator-controls.annotator-visible{opacity:1}.annotator-viewer .annotator-controls button,.annotator-viewer .annotator-controls a{cursor:pointer;display:inline-block;width:13px;height:13px;margin-left:2px;border:0;opacity:.2;text-indent:-900em;background-color:transparent;outline:0}.annotator-viewer .annotator-controls button:hover,.annotator-viewer .annotator-controls button:focus,.annotator-viewer .annotator-controls a:hover,.annotator-viewer .annotator-controls a:focus{opacity:.9}.annotator-viewer .annotator-controls button:active,.annotator-viewer .annotator-controls a:active{opacity:1}.annotator-viewer .annotator-controls button[disabled]{display:none}.annotator-viewer .annotator-controls .annotator-edit{background-position:0 -60px}.annotator-viewer .annotator-controls .annotator-delete{background-position:0 -75px}.annotator-viewer .annotator-controls .annotator-link{background-position:0 -270px}.annotator-editor .annotator-item{position:relative}.annotator-editor .annotator-item label{top:0;display:inline;cursor:pointer;font-size:12px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea{display:block;min-width:100%;padding:10px 8px;border:0;margin:0;color:#3c3c3c;background:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;resize:none}.annotator-editor .annotator-item textarea::-webkit-scrollbar{height:8px;width:8px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-track-piece{margin:13px 0 3px;background-color:#e5e5e5;-webkit-border-radius:4px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:vertical{height:25px;background-color:#ccc;-webkit-border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1)}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:horizontal{width:25px;background-color:#ccc;-webkit-border-radius:4px}.annotator-editor .annotator-item:first-child textarea{min-height:5.5em;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor .annotator-item input:focus,.annotator-editor .annotator-item textarea:focus{background-color:#f3f3f3;outline:0}.annotator-editor .annotator-item input[type=radio],.annotator-editor .annotator-item input[type=checkbox]{width:auto;min-width:0;padding:0;display:inline;margin:0 4px 0 0;cursor:pointer}.annotator-editor .annotator-checkbox{padding:8px 6px}.annotator-filter,.annotator-filter .annotator-filter-navigation button,.annotator-editor .annotator-controls{text-align:right;padding:3px;border-top:1px solid #d4d4d4;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(0.6,#dcdcdc),to(#d2d2d2));background-image:-moz-linear-gradient(-90deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:-webkit-linear-gradient(-90deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:linear-gradient(-90deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.7),inset -1px 0 0 rgba(255,255,255,0.7),inset 0 1px 0 rgba(255,255,255,0.7);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.7),inset -1px 0 0 rgba(255,255,255,0.7),inset 0 1px 0 rgba(255,255,255,0.7);-o-box-shadow:inset 1px 0 0 rgba(255,255,255,0.7),inset -1px 0 0 rgba(255,255,255,0.7),inset 0 1px 0 rgba(255,255,255,0.7);box-shadow:inset 1px 0 0 rgba(255,255,255,0.7),inset -1px 0 0 rgba(255,255,255,0.7),inset 0 1px 0 rgba(255,255,255,0.7);-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.annotator-editor.annotator-invert-y .annotator-controls{border-top:0;border-bottom:1px solid #b4b4b4;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor a,.annotator-filter .annotator-filter-property label{position:relative;display:inline-block;padding:0 6px 0 22px;color:#363636;text-shadow:0 1px 0 rgba(255,255,255,0.75);text-decoration:none;line-height:24px;font-size:12px;font-weight:bold;border:1px solid #a2a2a2;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(0.5,#d2d2d2),color-stop(0.5,#bebebe),to(#d2d2d2));background-image:-moz-linear-gradient(-90deg,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:-webkit-linear-gradient(-90deg,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:linear-gradient(-90deg,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);-webkit-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);-moz-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);-o-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px}.annotator-editor a::after{position:absolute;top:50%;left:5px;display:block;content:"";width:15px;height:15px;margin-top:-7px;background-position:0 -90px}.annotator-editor a:hover,.annotator-editor a:focus,.annotator-editor a.annotator-focus,.annotator-filter .annotator-filter-active label,.annotator-filter .annotator-filter-navigation button:hover{outline:0;border-color:#435aa0;background-color:#3865f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#7691fb),color-stop(0.5,#5075fb),color-stop(0.5,#3865f9),to(#3665fa));background-image:-moz-linear-gradient(-90deg,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:-webkit-linear-gradient(-90deg,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:linear-gradient(-90deg,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.42)}.annotator-editor a:hover::after,.annotator-editor a:focus::after{margin-top:-8px;background-position:0 -105px}.annotator-editor a:active,.annotator-filter .annotator-filter-navigation button:active{border-color:#700c49;background-color:#d12e8e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fc7cca),color-stop(0.5,#e85db2),color-stop(0.5,#d12e8e),to(#ff009c));background-image:-moz-linear-gradient(-90deg,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:-webkit-linear-gradient(-90deg,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:linear-gradient(-90deg,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c)}.annotator-editor a.annotator-save::after{background-position:0 -120px}.annotator-editor a.annotator-save:hover::after,.annotator-editor a.annotator-save:focus::after,.annotator-editor a.annotator-save.annotator-focus::after{margin-top:-8px;background-position:0 -135px}.annotator-editor .annotator-widget::after{background-position:0 -30px}.annotator-editor.annotator-invert-y .annotator-widget .annotator-controls{background-color:#f2f2f2}.annotator-editor.annotator-invert-y .annotator-widget::after{background-position:0 -45px;height:11px}.annotator-resize{position:absolute;top:0;right:0;width:12px;height:12px;background-position:2px -150px}.annotator-invert-x .annotator-resize{right:auto;left:0;background-position:0 -195px}.annotator-invert-y .annotator-resize{top:auto;bottom:0;background-position:2px -165px}.annotator-invert-y.annotator-invert-x .annotator-resize{background-position:0 -180px}.annotator-notice{color:#fff;position:absolute;position:fixed;top:-54px;left:0;width:100%;font-size:14px;line-height:50px;text-align:center;background:black;background:rgba(0,0,0,0.9);border-bottom:4px solid #d4d4d4;-webkit-transition:top .4s ease-out;-moz-transition:top .4s ease-out;-o-transition:top .4s ease-out;transition:top .4s ease-out}.ie6 .annotator-notice{position:absolute}.annotator-notice-success{border-color:#3665f9}.annotator-notice-error{border-color:#ff7e00}.annotator-notice p{margin:0}.annotator-notice a{color:#fff}.annotator-notice-show{top:0}.annotator-tags{margin-bottom:-2px}.annotator-tags .annotator-tag{display:inline-block;padding:0 8px;margin-bottom:2px;line-height:1.6;font-weight:bold;background-color:#e6e6e6;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;border-radius:8px}.annotator-filter{position:fixed;top:0;right:0;left:0;text-align:left;line-height:0;border:0;border-bottom:1px solid #878787;padding-left:10px;padding-right:10px;-webkit-border-radius:0;-moz-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(255,255,255,0.3);-moz-box-shadow:inset 0 -1px 0 rgba(255,255,255,0.3);-o-box-shadow:inset 0 -1px 0 rgba(255,255,255,0.3);box-shadow:inset 0 -1px 0 rgba(255,255,255,0.3)}.annotator-filter strong{font-size:12px;font-weight:bold;color:#3c3c3c;text-shadow:0 1px 0 rgba(255,255,255,0.7);position:relative;top:-9px}.annotator-filter .annotator-filter-property,.annotator-filter .annotator-filter-navigation{position:relative;display:inline-block;overflow:hidden;line-height:10px;padding:2px 0;margin-right:8px}.annotator-filter .annotator-filter-property label,.annotator-filter .annotator-filter-navigation button{text-align:left;display:block;float:left;line-height:20px;-webkit-border-radius:10px 0 0 10px;-moz-border-radius:10px 0 0 10px;-o-border-radius:10px 0 0 10px;border-radius:10px 0 0 10px}.annotator-filter .annotator-filter-property label{padding-left:8px}.annotator-filter .annotator-filter-property input{display:block;float:right;-webkit-appearance:none;background-color:#fff;border:1px solid #878787;border-left:none;padding:2px 4px;line-height:16px;min-height:16px;font-size:12px;width:150px;color:#333;background-color:#f8f8f8;-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.2);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.2);-o-box-shadow:inset 0 1px 1px rgba(0,0,0,0.2);box-shadow:inset 0 1px 1px rgba(0,0,0,0.2)}.annotator-filter .annotator-filter-property input:focus{outline:0;background-color:#fff}.annotator-filter .annotator-filter-clear{position:absolute;right:3px;top:6px;border:0;text-indent:-900em;width:15px;height:15px;background-position:0 -90px;opacity:.4}.annotator-filter .annotator-filter-clear:hover,.annotator-filter .annotator-filter-clear:focus{opacity:.8}.annotator-filter .annotator-filter-clear:active{opacity:1}.annotator-filter .annotator-filter-navigation button{border:1px solid #a2a2a2;padding:0;text-indent:-900px;width:20px;min-height:22px;-webkit-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);-moz-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);-o-box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8);box-shadow:inset 0 0 5px rgba(255,255,255,0.2),inset 0 0 1px rgba(255,255,255,0.8)}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-navigation button:hover,.annotator-filter .annotator-filter-navigation button:focus{color:transparent}.annotator-filter .annotator-filter-navigation button::after{position:absolute;top:8px;left:8px;content:"";display:block;width:9px;height:9px;background-position:0 -210px}.annotator-filter .annotator-filter-navigation button:hover::after{background-position:0 -225px}.annotator-filter .annotator-filter-navigation .annotator-filter-next{-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;border-left:none}.annotator-filter .annotator-filter-navigation .annotator-filter-next::after{left:auto;right:7px;background-position:0 -240px}.annotator-filter .annotator-filter-navigation .annotator-filter-next:hover::after{background-position:0 -255px}.annotator-hl-active{background:rgba(255,255,10,0.8)}.annotator-hl-filtered{background-color:transparent}
\ No newline at end of file diff --git a/annotator/jquery.min.js b/annotator/jquery.min.js new file mode 100644 index 0000000..16ad06c --- /dev/null +++ b/annotator/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file diff --git a/annotator/plugins/store.js b/annotator/plugins/store.js new file mode 100644 index 0000000..3b5c916 --- /dev/null +++ b/annotator/plugins/store.js @@ -0,0 +1,224 @@ +var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = Object.prototype.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; }, + __indexOf = Array.prototype.indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + +Annotator.Plugin.Store = (function(_super) { + + __extends(Store, _super); + + Store.prototype.events = { + 'annotationCreated': 'annotationCreated', + 'annotationDeleted': 'annotationDeleted', + 'annotationUpdated': 'annotationUpdated' + }; + + Store.prototype.options = { + prefix: '/api', + autoFetch: true, + annotationData: {}, + loadFromSearch: false, + urls: { + create: '/annotations', + read: '/annotations/:id', + update: '/annotations/:id', + destroy: '/annotations/:id', + search: '/search' + } + }; + + function Store(element, options) { + this._onError = __bind(this._onError, this); + this._onLoadAnnotationsFromSearch = __bind(this._onLoadAnnotationsFromSearch, this); + this._onLoadAnnotations = __bind(this._onLoadAnnotations, this); + this._getAnnotations = __bind(this._getAnnotations, this); Store.__super__.constructor.apply(this, arguments); + this.annotations = []; + } + + Store.prototype.pluginInit = function() { + if (!Annotator.supported()) return; + if (this.annotator.plugins.Auth) { + return this.annotator.plugins.Auth.withToken(this._getAnnotations); + } else { + return this._getAnnotations(); + } + }; + + Store.prototype._getAnnotations = function() { + if (this.options.loadFromSearch) { + return this.loadAnnotationsFromSearch(this.options.loadFromSearch); + } else { + return this.loadAnnotations(); + } + }; + + Store.prototype.annotationCreated = function(annotation) { + var _this = this; + if (__indexOf.call(this.annotations, annotation) < 0) { + this.registerAnnotation(annotation); + return this._apiRequest('create', annotation, function(data) { + if (!(data.id != null)) { + console.warn(Annotator._t("Warning: No ID returned from server for annotation "), annotation); + } + return _this.updateAnnotation(annotation, data); + }); + } else { + return this.updateAnnotation(annotation, {}); + } + }; + + Store.prototype.annotationUpdated = function(annotation) { + var _this = this; + if (__indexOf.call(this.annotations, annotation) >= 0) { + return this._apiRequest('update', annotation, (function(data) { + return _this.updateAnnotation(annotation, data); + })); + } + }; + + Store.prototype.annotationDeleted = function(annotation) { + var _this = this; + if (__indexOf.call(this.annotations, annotation) >= 0) { + return this._apiRequest('destroy', annotation, (function() { + return _this.unregisterAnnotation(annotation); + })); + } + }; + + Store.prototype.registerAnnotation = function(annotation) { + return this.annotations.push(annotation); + }; + + Store.prototype.unregisterAnnotation = function(annotation) { + return this.annotations.splice(this.annotations.indexOf(annotation), 1); + }; + + Store.prototype.updateAnnotation = function(annotation, data) { + if (__indexOf.call(this.annotations, annotation) < 0) { + console.error(Annotator._t("Trying to update unregistered annotation!")); + } else { + $.extend(annotation, data); + } + return $(annotation.highlights).data('annotation', annotation); + }; + + Store.prototype.loadAnnotations = function() { + return this._apiRequest('read', null, this._onLoadAnnotations); + }; + + Store.prototype._onLoadAnnotations = function(data) { + if (data == null) data = []; + this.annotations = data; + return this.annotator.loadAnnotations(data.slice()); + }; + + Store.prototype.loadAnnotationsFromSearch = function(searchOptions) { + return this._apiRequest('search', searchOptions, this._onLoadAnnotationsFromSearch); + }; + + Store.prototype._onLoadAnnotationsFromSearch = function(data) { + if (data == null) data = {}; + return this._onLoadAnnotations(data.rows || []); + }; + + Store.prototype.dumpAnnotations = function() { + var ann, _i, _len, _ref, _results; + _ref = this.annotations; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + ann = _ref[_i]; + _results.push(JSON.parse(this._dataFor(ann))); + } + return _results; + }; + + Store.prototype._apiRequest = function(action, obj, onSuccess) { + var id, options, request, url; + id = obj && obj.id; + url = this._urlFor(action, id); + options = this._apiRequestOptions(action, obj, onSuccess); + request = $.ajax(url, options); + request._id = id; + request._action = action; + return request; + }; + + Store.prototype._apiRequestOptions = function(action, obj, onSuccess) { + var opts; + opts = { + type: this._methodFor(action), + headers: this.element.data('annotator:headers'), + dataType: "json", + success: onSuccess || function() {}, + error: this._onError + }; + if (action === "search") { + opts = $.extend(opts, { + data: obj + }); + } else { + opts = $.extend(opts, { + data: obj && this._dataFor(obj), + contentType: "application/json; charset=utf-8" + }); + } + return opts; + }; + + Store.prototype._urlFor = function(action, id) { + var replaceWith, url; + replaceWith = id != null ? '/' + id : ''; + url = this.options.prefix || '/'; + url += this.options.urls[action]; + url = url.replace(/\/:id/, replaceWith); + return url; + }; + + Store.prototype._methodFor = function(action) { + var table; + table = { + 'create': 'POST', + 'read': 'GET', + 'update': 'PUT', + 'destroy': 'DELETE', + 'search': 'GET' + }; + return table[action]; + }; + + Store.prototype._dataFor = function(annotation) { + var data, highlights; + highlights = annotation.highlights; + delete annotation.highlights; + $.extend(annotation, this.options.annotationData); + data = JSON.stringify(annotation); + if (highlights) annotation.highlights = highlights; + return data; + }; + + Store.prototype._onError = function(xhr) { + var action, message; + action = xhr._action; + message = Annotator._t("Sorry we could not ") + action + Annotator._t(" this annotation"); + if (xhr._action === 'search') { + message = Annotator._t("Sorry we could not search the store for annotations"); + } else if (xhr._action === 'read' && !xhr._id) { + message = Annotator._t("Sorry we could not ") + action + Annotator._t(" the annotations from the store"); + } + switch (xhr.status) { + case 401: + message = Annotator._t("Sorry you are not allowed to ") + action + Annotator._t(" this annotation"); + break; + case 404: + message = Annotator._t("Sorry we could not connect to the annotations store"); + break; + case 500: + message = Annotator._t("Sorry something went wrong with the annotation store"); + } + Annotator.showNotification(message, Annotator.Notification.ERROR); + return console.error(Annotator._t("API request failed:") + (" '" + xhr.status + "'")); + }; + + return Store; + +})(Annotator.Plugin); diff --git a/img/greens-efa.jpg b/img/greens-efa.jpg Binary files differnew file mode 100644 index 0000000..6e713d1 --- /dev/null +++ b/img/greens-efa.jpg diff --git a/index.html b/index.html new file mode 100644 index 0000000..3de6527 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ +<html> + <head> + <title>Islands of Resilience</title> + </head> + + <body> + <p align="center"> + <img src="/img/greens-efa.jpg" + </p> + + <p align="center"> + <font size=4> + Iceland - mapping the potential for a sustainable and + resilient green information economy + </font> + </p> + </body> +</html> diff --git a/report/1.html b/report/1.html new file mode 100644 index 0000000..067d5a3 --- /dev/null +++ b/report/1.html @@ -0,0 +1,543 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML> +<HEAD> + <script src='/annotator/jquery.min.js'></script> + <script src='/annotator/annotator-full.min.js'></script> + <script src='/annotator/plugins/store.js'></script> + <link rel='stylesheet' href='/annotator/annotator.min.css'> +<TITLE></TITLE> +</HEAD> +<BODY> +<A name=1></a><IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> +<IMG src="Greens-IslandsofResilience-1.png"><br> + <br> <br> + <br> + <br> +<b>Islands of Resilience</b><br> +<b>Comparative Model for Energy, Connectivity and Jurisdiction</b><br> +<b>Realizing European ICT possibilities through a case study of Iceland</b><br> + <br> + <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> + <br> <br> <br> +Smári McCarthy and Eleanor Saitta<br> + <br> <br> <br> <br> <br> <br> +1<br> +<hr> +<A name=2></a><IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> +<IMG src="Greens-IslandsofResilience-2.png"><br> + <br>Prepared at the request of:<br> +on behalf of Members of the European Parliament <br>Christian Engström, Indrek Tarand, Carl Schlyter, Sandrine Bélier, Karima Delli, Eva Lichtenberger, Raül <br>Romeva i Rueda, Heide Rühle, Judith Sargentini, Bas Eickhout and Marije Cornelissen<br> <br> <br><b> <br> <br>Prepared at the request of The Greens / European Free Alliance<br> <br>Authors:</b><br> +<b>On behalf of Members of the European Parliament:</b><br> +<b> </b>Smári McCarthy<br> + Christian Engström<br> + Eleanor Saitta<br> + Indrek Tarand<br> Carl Schlyter<br> +<b>Contributing Researchers:</b><br> + Sandrine Bélier<br> +<b> </b>Guðjón Idir<br> + Karmima Delli<br> + Jason Scott<br> + Eva Lichtenberger<br> Paül Romeva i Rueda<br> Heide Rühle<br> Judith Sargentini<br> Bas Eickhout<br> Marije Cornelissen<br> +<b>Produced by:<br> </b><br> +<b> <br> </b><br> +<b> International Modern Media Institute<br></b> Laugavegur 3<br> 101 Reykjavík<br> Iceland<br> + <br> <br> <br> + <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> +2<br> +<hr> +<A name=3></a><IMG src="Greens-IslandsofResilience-3.png"><br> +<IMG src="Greens-IslandsofResilience-3.png"><br> +<IMG src="Greens-IslandsofResilience-3.png"><br> + <br> <br> <br> <br> + Distributed under the terms of the <br> +Creative Commons Attribution-Sharealike 3.0-unported License<br> +<b> </b><br> +3<br> +<hr> +<A name=4></a><b>Abstract</b><br> +Locale is rapidly becoming one of the most important competitive differentiators in the <br>provision of cloud-based information technology services. Broadly speaking, three <br>categories of issues define a locale's fitness for hosting the cloud: energy, connectivity, and <br>jurisdiction.<br> +Energy is the largest cost center for most cloud hosts. Beyond price per kilowatt hour, <br>hosting companies must consider redundant network availability, power grid resilience, <br>environmental sustainability, climate, and equipment cooling requirements as core parts of <br>their energy strategy.<br> +Connectivity is clearly essential for hosts, and differentiating factors here include total <br>installed bandwidth, current utilized bandwidth, hub redundancy, international uplink <br>redundancy, round trip latency, traffic shaping and network neutrality.<br> +Jurisdictional issues are an area of emerging concern and awareness for cloud hosts, where <br>the landscape is shifting rapidly. Hosting companies are deeply affected by intermediary <br>liability, hosting liability, state and corporate surveillance, state and corporate censorship, the <br>accessibility of and cost of interacting with courts, corruption, and socioeconomic stability.<br> +This report considers Iceland's relative competitive advantages and drawbacks as a hosting <br>locale relating to these issues.<br> +4<br> +<hr> +<A name=5></a><b>Table of Contents</b><br> +<a href="Greens-IslandsofResiliences.html#4">Abstract</a><br> +<a href="Greens-IslandsofResiliences.html#6">Introduction<br></a><a href="Greens-IslandsofResiliences.html#7">Energy</a><br> +<a href="Greens-IslandsofResiliences.html#7">Energy Sources<br></a><a href="Greens-IslandsofResiliences.html#9">Energy Utilization and Pricing<br></a><a href="Greens-IslandsofResiliences.html#10">Grid Resilience and Redundancy<br></a><a href="Greens-IslandsofResiliences.html#11">Climate and Cooling</a><br> +<a href="Greens-IslandsofResiliences.html#12">Connectivity</a><br> +<a href="Greens-IslandsofResiliences.html#12">Submarine Cables<br></a><a href="Greens-IslandsofResiliences.html#13">Installed and Utilized Capacity<br></a><a href="Greens-IslandsofResiliences.html#14">Domestic Network<br></a><a href="Greens-IslandsofResiliences.html#15">Round Trip Latency<br>Network Security<br>Future Connectivity Developments</a><br> +<a href="Greens-IslandsofResiliences.html#18">Jurisdiction</a><br> +<a href="Greens-IslandsofResiliences.html#18">Commercial Issues<br>Overview of Icelandic Information Regulation<br></a><a href="Greens-IslandsofResiliences.html#19">Compatibility with European Union Directives<br>Intermediary Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#20">Surveillance<br></a><a href="Greens-IslandsofResiliences.html#22">Censorship<br></a><a href="Greens-IslandsofResiliences.html#19">Data Protection<br></a><a href="Greens-IslandsofResiliences.html#23">Human Resources<br></a><a href="Greens-IslandsofResiliences.html#24">Icelandic Modern Media Initiative<br></a><a href="Greens-IslandsofResiliences.html#25">Source Protection<br>Freedom of Information Act<br></a><a href="Greens-IslandsofResiliences.html#26">Network Neutrality<br>Communications Protection and Communications Data Retention<br></a><a href="Greens-IslandsofResiliences.html#27">Intermediary Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#28">Libel Tourism Protection<br>Libel Reform and Publishing Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#29">Whistleblower Protection<br>Prior Restraint Limitations<br>Virtual Limited Liability Companies</a><br> +<a href="Greens-IslandsofResiliences.html#30">Selected Bibliography</a><br> + <br> +5<br> +<hr> +<A name=6></a><b>Introduction</b><br> +This preliminary study is intended to give a birds-eye view of the primary factors pertaining <br>to energy, connectivity and jurisdiction in Iceland, as applicable to ICT1 growth in general <br>and cloud hosting in particular.. It is necessarily narrow in scope and largely based on <br>aggregating publicly available information. As a result, some inaccuracies may exist, largely <br>due to poor information made available by private actors. A more in-depth follow up study <br>will remedy this by seeking out more detailed expert insights, detailed statistics, and <br>comparing against sourced cases.<br> +Regardless, this report clearly shows the advantages Iceland has in relation to ICTs, as well <br>as showing some of its potential weaknesses and possible remedies.<br> +Iceland’s key strengths are:<br> +●<br> +Cheap and abundant energy generated from green, renewable, sustainable and <br>resilient energy sources, distributed over a well designed and resilient power grid.<br> +●<br> +Increasingly good connectivity to the outside world with reasonable redundancy <br>and a large amount of unused capacity available for expansion, and a very highly <br>developed internal network with high resiliency.<br> +●<br> +An advanced and stable jurisdiction, with clear information rights and regulations, <br>well structured administration, and well informed governing bodies.<br> +Iceland’s main weaknesses are:<br> +●<br> +Scale discrepancies both in energy generation and consumption which could <br>potentially threaten grid resilience in extreme cases. This can be improved with <br>further diversification of energy consumers, such as large-scale ICT deployments.<br> +●<br> +Iceland’s data connectivity is provided by a relatively small number of submarine <br>cables connecting to the outside world, creating some network precarity. This is <br>currently being improved with the addition of new cables.<br> +●<br> +International data transport bandwidth through submarine cables is currently <br>expensive. This could be mitigated by further investments, subsidies, or other <br>methods to reduce the price for connection, with the intention of increasing the <br>overall usage.<br> +●<br> +Iceland has similar issues with blanket communications surveillance as in the EU, <br>which make it less attractive for hosting than countries where communications are <br>not monitored. This is hard to fix without political will in the EU.<br> +●<br> +Wildcard properties exist in the implementation of the e-Commerce directive, <br>connected to injunctive powers that district sheriffs still have. This can be solved by <br>clarifying the instances under which injunctions can be made, and restricting the <br>issuing authority to courts.<br> +Together Iceland’s key strengths form a very sound basis for the expansion of ICT in <br>Iceland, especially cloud hosting. Most of the weaknesses in Iceland’s position are either <br> +1 Information and Communication Technologies<br> +6<br> +<hr> +<A name=7></a>structural weaknesses common amongst all EU member states or are relatively trivial issues <br>which can be resolved easily.<br> + <br> +<b>Energy</b><br> +Energy is the largest cost center for most cloud hosting companies. Beyond price per <br>kilowatt hour, hosting companies must consider redundant network availability, power grid <br>resilience, environmental sustainability, climate, and equipment cooling requirements as <br>core parts of their energy strategy. <br> +In our analytical model for energy, we asked the following questions:<br> +<b>How prevalent are renewable energy sources in current electrical production?</b><br> +1. Less than 3% of all energy production based on renewable energy sources.<br>2. Between 4 and 40% of all energy production based on renewable energy sources.<br>3. Between 40 and 60% of all energy production based on renewable energy sources.<br>4. Between 60 and 97% of all energy production based on renewable energy sources.<br>5. More than 97% of all energy production based on renewable energy sources.<br> +<b>How much can current electrical production be increased without the construction of <br>new (not currently planned) power plants?</b><br> +1. By less than 5% of current average power use.<br>2. By less than 25% of current average power use.<br>3. By less than 50% of current average power use.<br>4. By more than 75% of current average power use<br>5. By more than 100% of current average power use.<br> +<b>What is the annual average price per kiloWatt hour for a commercial customer using <br>less than 2 GWh/year, including generation and distribution?</b><br> +1. > €0.20/kWh<br>2. > €0.14/kWh<br>3. <= €0.14/kWh<br>4. < €0.09/kWh<br>5. < €0.07/kWh<br> + <br> + <br> +Iceland's national energy plan was last updated in November of 2011.<br> +<b>Energy Sources</b><br> +7<br> +<hr> +<A name=8></a>In 2009, Iceland’s total energy utilization was roughly 240 PJ2 of primary energy sources, <br>which equates to roughly 67 TWh3. The primary energy sources were, in order of magnitude: <br>geothermal, hydroelectric, oil, and coal. Geothermal energy use was greater than all other <br>energy sources combined, while coal use was relatively minuscule. Energy use in Iceland <br>has risen substantially since the 1940’s with the industrialization of the country, which up <br>until roughly 1960 was almost entirely rural.<br> +A vast amount of geothermal energy is used for house-heating (45%), followed by electricity <br>production (39%). In addition, it is used for snow-melting, swimming pools, fish farming, <br>greenhouses and for industrial purposes. In 2009 a total of 22.3 PJ of geothermal energy <br>was used for electricity production.<br> +Only 18% of Iceland’s primary energy utilization comes from petrochemicals, of which <br>90% is oil and 10% coal. The majority of the coal is used by the iron smelting plant at <br>Grundartangi, with other industrial processes consuming the remainder. Almost no natural <br>gas is used in Iceland. Roughly 660 thousand tonnes of oil were used in Iceland in 2009, <br>of which 41% went to powering cars, 18% for aircraft, and 29% for fishing. Petroleum use <br>for cars has increased by 64% since 1990 in Iceland, contributing to the overall increase in <br>use. Oil is not used for electricity production except for some emergency backup generators. <br>Some towns have backup generators capable of sustaining basic operations throughout the <br>town temporarily, but the redundancy of the electricity grid renders this use minimal.<br> +As a result, the electricity production in Iceland is almost exclusively from geothermal and <br>hydroelectric primary energy sources. The theoretical maximum energy production in Iceland <br>is 64 TWh per year from hydroelectric sources and between 10 and 30 TWh per year from <br>geothermal sources. However, for natural protection purposes substantial regions of Iceland <br>have been classified as natural reserves, parks, or other protected areas. In addition, certain <br>areas have been classified as energy reserves that will not be used in coming years, in part <br>for sustainability reasons. This lowers the effective energy available for production.<br> +The current installed production capacity is 12.3 TWh per year for hydroelectric power, <br>and 4.6 TWh per year for geothermal power. After subtracting the protected and reserve <br>production categories, the total available hydroelectric and geothermal energy available for <br>future expansion is 11.91 TWh per year.<br> +Variability of energy pricing and availability is a critical issue for data centers. As Iceland has <br>little or no hydrocarbon-based electricity production, electricity prices are largely unaffected <br>by fluctuations in the oil, gas, and coal markets, and will not be affected by supply chain <br>interruptions in these markets. This provides a critical level of energy resilience for the <br>Icelandic electrical system at the supply end. Cheap, reliable, resilience, and predictably <br>priced energy sources are, in combination, a significant advantage for potential hosting <br>companies.<br> +2 Petajoules. 1 PJ = 1015 J<br>3 Terawatt hours. 1 TWh = 1012 W·h<br> +8<br> +<hr> +<A name=9></a><IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +<IMG src="Greens-IslandsofResilience-9.png"><br> +(Primary energy sources in Iceland 1940-2009. Inset: Proportional use. Top to bottom: Coal, <br> +oil, geothermal and hydroelectric. Source: Orkuáætlun 2011)<br> +<b>Energy Utilization and Pricing</b><br> +In 2009, 74% of produced electricity in Iceland went to the aluminum industry, with roughly <br>4.9 TWh/year to Alcoa Fjarðarál, 4.0 TWh/year to Rio Tinto Alcan, and 4.0 TWh/year to <br>Norðurál. 6% of produced electricity was used in the services industry, 5% for iron smelting <br>plants, 5% for household appliances, 4% for utilities, 4% for general industries, and 1% in <br>agriculture.<br> +9<br> +<hr> +<A name=10></a><IMG src="Greens-IslandsofResilience-10.png"><br> +<IMG src="Greens-IslandsofResilience-10.png"><br> +<IMG src="Greens-IslandsofResilience-10.png"><br> +<IMG src="Greens-IslandsofResilience-10.png"><br> +<IMG src="Greens-IslandsofResilience-10.png"><br> +<IMG src="Greens-IslandsofResilience-10.png"><br> +(Electricity use 2009. From top to bottom: Fisheries, agriculture, general industries, district <br> +heating, home use, steel mills, services and aluminum industry. Source: Orkuátælun 2011)<br> +Energy use for household appliances accounted for 627 GWh in 2009, accounting for 7.1 <br>B ISK (€44.3 million) in consumer use, including VAT. Average household electricity costs <br>in Reykjavík are 11.30 ISK/kWh, or €0.07/kWh. This rate is substantially higher than the <br>price for industry. In the case of the aluminum smelters, these rates are 30% lower than <br>the European average4, although the energy prices for aluminum smelting have been <br>confidential. Alcoa Fjarðarál reportedly paid between 28-35 USD/MWh in 2006, or roughly <br>€0.044/kWh at 2006 exchange rates.<br> +(Main power lines and power plants. Source: Landsnet. For realtime energy distribution <br> +<a href="http://landsnet.is/raforkukerfid/kerfisstjornun/aflflutningurnuna/">figures, see http://landsnet.is/raforkukerfid/kerfisstjornun/aflflutningurnuna/</a> )<br> +<b>Grid Resilience and Redundancy</b><br> +Power grid resilience in Iceland is fairly high. The 61 power stations in Iceland are connected <br>with a circular grid which goes around the country, providing basic redundancy. In addition, <br>most power stations on the southwest corner have further grid redundancy simply due to the <br>higher population density and related network effects.<br> +There are 50 hydroelectric power stations in Iceland, mostly small. There are 7 geothermal <br>power plants, and 4 fueled power plants—one that generates power through garbage <br>incineration, two diesel powered, and one methane plant.<br> +4 <a href="http://www.mbl.is/greinasafn/grein/1026890/">http://www.mbl.is/greinasafn/grein/1026890/</a><br> +10<br> +<hr> +<A name=11></a>Some parts of the country, most notably the western fjords, are very poorly connected into <br>the grid and frequently get disconnected during the winter months due to poor weather <br>conditions. Power availability is maintained primarily with diesel generators when this <br>happens. Similarly, Flatey and Grímsey, two populated islands off the Icelandic west <br>and north coasts, respectively, are not connected to the main power grid, but are instead <br>powered by diesel generators.<br> +Resilience is quite high on the southwest corner, where most economic activity is situated, <br>but the east coast has also improved substantially in recent years due to developments in <br>relation to the Kárahnjúkar dam project and the Alcoa Fjarðarál aluminum smelter.<br> +The overall infrastructural elasticity on the power grid is high enough to handle most types of <br>outages due to line failures, power station shutdowns and disasters, but some very extreme <br>edge cases exist where grid resilience is threatened, notably sudden outages in production <br>units such as Kárahnjúkavirkjun, which could potentially lead to chain reactions of failures, <br>similar to the power outage at Itaipu power station in Brazil on 21 January, 2002. In general, <br>larger plants require larger transmission lines and inevitably cause more widespread <br>damage when they do fail. Similarly, larger consumption units may threaten grid resilience. <br>For instance, almost one third of Iceland’s total electricity consumption is used by a single <br>aluminum smelter, meaning that the unlikely edge case of an abrupt total disconnect would <br>momentarily increase the available electricity substantially. This kind of pathological outage <br>may however be mitigated by various means, not least the further diversification of power <br>production and consumption.<br> +<b>Climate and Cooling</b><br> +Estimates for data center energy utilization from IBM5 suggest that roughly half of all energy <br>is used on cooling, and an additional fourth on heat waste, mostly due to internal electrical <br>resistance in system components. Therefore, a priori energy waste in typical data centers <br>is roughly 75% before any actual computation occurs. Mitigating this waste is clearly crucial <br>to the efficiency, cost-effectiveness and sustainability of any data center. The proportional <br>cost of cooling for data centers has risen dramatically over the past few years, relative to the <br>cost of hardware. Reduction in hardware deployments due to virtualization and increases <br>in system density have dramatically reduced equipment purchase costs as a proportion <br>of operating costs. As a result of this, component-level heat waste mitigation is a primary <br>industry research goal.<br> +Increasingly, large data center operators have started to look to areas with relatively cold <br>climates. Cooling costs are significantly lower in cold areas, and most energy use in data <br>centers in those areas that goes to cooling is attributable to airflow management and de-<br>humidification rather than direct refrigeration. An example of this is the planned data center <br>that Facebook, Inc., is building near Luleå, Sweden6.<br> +5 https://www-950.ibm.com/events/wwe/grp/grp030.nsf/vLookupPDFs/IBM%20BladeCenter%20 <br>Product_Tikiri/$file/IBM%20BladeCenter%20Product_Tikiri.pdf<br>6 http://online.wsj.com/article/BT-CO-20111215-712478.html<br> +11<br> +<hr> +<A name=12></a>In this respect, Iceland's climate is clear benefit for cloud hosting providers even though <br>it’s not nearly as cold as some more northerly locales. The oceanic climate contributes to <br>relatively stable temperatures over the year. Apart from insolation, there is relatively little <br>seasonal variation in the factors that contribute to data center cooling. On the negative <br>side, Iceland’s climate is generally rather humid, with an annual average of roughly 70.75%. <br>In order for outside air to be used for cooling purposes some dehumidification would be <br>needed.<br> +<b>Variable</b><br> +<b>Jan</b><br> +<b>Feb</b><br> +<b>Mar</b><br> +<b>Apr</b><br> +<b>May</b><br> +<b>Jun</b><br> +<b>Jul</b><br> +<b>Aug</b><br> +<b>Sep</b><br> +<b>Oct</b><br> +<b>Nov</b><br> +<b>Dec</b><br> +<b>Average temp. °C</b><br> +-2.60<br> +-2.59<br> +-1.59<br> +1.37<br> +5.24<br> +8.49<br> +10.31<br> +9.58<br> +6.29<br> +2.75<br> +-0.04<br> +-1.91<br> +<b>Insolation, kWh/m²/day</b><br> +0.11<br> +0.53<br> +1.31<br> +2.77<br> +4.11<br> +4.71<br> +4.16<br> +3.27<br> +2.17<br> +0.97<br> +0.25<br> +0.03<br> +<b>Wind speed, m/s</b><br> +10.20<br> +10.27<br> +9.63<br> +8.42<br> +7.18<br> +6.51<br> +6.40<br> +6.63<br> +7.62<br> +8.85<br> +8.76<br> +10.41<br> +<b>Humidity, %</b><br> +80<br> +78<br> +71<br> +69<br> +66<br> +66<br> +63<br> +61<br> +67<br> +72<br> +77<br> +79.0<br> +(Reykjavík average temperature, insolation and windspeed, source: Gaisma.com)<br> +<b>Connectivity</b><br> +Iceland’s connectivity to the outside world has improved substantially over the last two <br>decades. Since 1994, submarine fiber optics connections have existed to the Europe <br>and North America. Since 2004, domestic Internet connectivity has gone up from 81% of <br>households to 90%, compared to EU growth from 41% to 65%. Of the 10% of Icelandic <br>households not connected to the Internet, 40% (4% of the total) claim not to want an Internet <br>connection, whereas 25% (2.5% of the total) say it is due to price of connectivity.<br> +<b>Submarine Cables</b><br> +As of November 2011, there are four fiber optics cable links to Iceland: DanIce, Greenland <br>Connect, FarIce, and CANTAT-3, in order of decreasing capacity. Several projects have <br>been proposed to increase the number of fiber optics links to Iceland; of them, Emerald <br>Express is the furthest towards completion.<br> +<b>Fiber optic cable</b><br> +<b>Owner</b><br> +<b>Total capacity</b><br> +<b>Installed capacity</b><br> +<b>Utilized capacity</b><br> +CANTAT-3<br> +Síminn<br> +7.5 Gb/s<br> +None<br> +Decommissioned<br> +FarIce<br> +Farice ehf<br> +720 Gb/s<br> +Unknown<br> + <br> +Danice<br> +Farice ehf<br> +5.2 Tb/s<br> +~20 Gb/s<br> + <br> +Greenland connect<br> +TELE Greenland<br> +1.9 Tb/s<br> +Unknown<br> + <br> +Emerald Express<br> +Emerald Networks<br> +58.6 Tb/s (planned)<br> +N/A<br> +Under construction<br> + <br>The CANTAT-3 was the first fiber optics cable connection to Iceland, greatly increasing the <br>country’s telecommunications capacity. Installed in 1994, it was disrupted in late 2006 and <br>was not returned to full capacity until mid-year 2007. The CANTAT-3 cable was retired in <br> +12<br> +<hr> +<A name=13></a>late 2010, due to age, operational costs, and low capacity.<br> +Farice ehf operates two fiber-optic submarine systems as of late 2011. It is partially owned <br>by the Icelandic state and Arion bank, but a 20% stake is held by Faroese shareholders.<br> +Their first system, FarIce, lies between Seyðisfjörður, Iceland and Dunnet Bay, Scotland with <br>a layover in Funningsfjørður in the Faroe Islands. From these locations it is backhauled to <br>Reykjavík, Edinburgh and Tórshavn respectively. It traverses a roughly 1,400 km route using <br>Dense Wavelength Division Multiplexing (DWDM) transmission technology. It has been in <br>use since 2004 and is currently Iceland’s main communications line. Currently only roughly <br>3% of FarIce’s total potential capacity is installed, according to available sources.<br> +Farice ehf’s second system, Danice, was laid in 2008 and connects Landeyjarsandur in <br>Iceland to Blaabjerg, Denmark, with a planned expansion to Eemshaven, Netherlands. <br>Despite having significantly greater capacity than FarIce, it is much less utilized and mostly <br>used as a redundancy cable for FarIce.<br> +The most recent fiber optic connection to Iceland is through Greenland Connect, installed <br>in 2009 and owned and operated by TELE Greenland. It connects Milton, Trinity Bay, <br>Newfoundland and Labrador, Canada, to Nuuk, Greenland, Qaqortoq, Greenland, and <br>Landeyjarsandur, Iceland. It contains two fiber pairs specified for 128 wavelengths carrying <br>10 Gb/s each. As its landing point in Iceland is co-located with the Danice cable, direct <br>bridging between them is possible.<br> +The Emerald Express is a planned 6x100x100 Gb/s fiber optics cable from the United States <br>to Ireland with an offshoot to the Reykjanes peninsula in Iceland. Being constructed by <br>Emerald Atlantis, Ltd. and TE SubCom, Ltd., it is scheduled to enter service in late 2012 and <br>intends to facilitate ultra-low-latency connections to Europe and North America. Its Iceland <br>branch will presumably carry two pairs, one for connection to Ireland, the other to the United <br>States; the last pair connecting the US to Ireland directly.<br> +<b>Installed and Utilized Capacity</b><br> +Total capacity of installed fiber optic cables is currently around 7.8 Tb/s, not counting the <br>CANTAT-3 cable. However, endpoint equipment has only been installed for a fraction of this <br>capacity. The installed capacity is not known, but conservative estimates put it close to 200 <br>Gb/s, or around 2.5% of the total capacity.<br> +Current utilized capacity is also unknown, but various estimates can be used to arrive at a <br>figure. The combined foreign connectivity of universities and secondary colleges in Iceland is <br>currently 16.5 Gb/s through RHNet. As RHNet typically accounts for between 14.2%-14.9% <br>of total traffic through the Reykjavík Internet Exchange, it can be estimated that total foreign <br>bandwidth consumption is close to 120 Gb/s. This number may turn out to be severely <br>understated, but more detailed data is not available. <br> +13<br> +<hr> +<A name=14></a><IMG src="Greens-IslandsofResilience-14.png"><br> +<IMG src="Greens-IslandsofResilience-14.png"><br> +(Map of proposed Emerald Express cable. Source: Emerald Networks)<br> + <br>Uplink redundancy to Europe is good due to the FarIce and DanIce cables going separate <br>routes. However, redundancy to the US is poor, since the only reliable connection is through <br>Greenland. Currently, in the case of an outage, rerouting would have to be through Europe—<br>presumably London. US redundancy will improve substantially when the Emerald Express is <br>completed. <br> <br>Overall uplink redundancy is becoming better, providing more infrastructural elasticity <br>and greater resilience. The older emergency satellite redundancy is slowly becoming less <br>relevant and is probably not realistically needed.<br> <br> +<b>Domestic Network</b><br> +The main domestic telecommunications hub is RIX (Reykjavík Internet Exchange), which is <br>operated by ISNIC. This hub connects the main Internet service providers and data centers <br>together.<br> +In general, domestic fiber optics and copper networks are operated by Míla, Fjarski and <br>Gagnaveita Reykjavíkur. Míla is a subsidiary of the formerly state-run phone company (since <br>privatized, currently known as Síminn). It operates a fiber optics ring around the country <br>which were installed by NATO, but has expanded it substantially and introduced additional <br>redundancy. It also operates fiber and copper networks in most settlements.<br> +Fjarki is a subsidiary of Landsvirkjun, the (mostly) state owned power company.<br> +14<br> +<hr> +<A name=15></a>Gagnaveita Reykjavíkur is a subsidiary of Orkuveita Reykjavíkur, the Reykjavík city <br>power company. It provides mostly fiber to the home connections but also operates some <br>communications backbones within the Reykjavík metropolitan area.<br> +<b>Round Trip Latency</b><br> +Round-trip latency to Europe is generally low, but varies widely depending on destination city <br>and provider, origin location and provider, and various other variables. Generally speaking <br>the network latency has low stochasticity (“jitter”), averaging around 4ms (milliseconds), <br>suggesting natural latency rather than network congestion.<br> +We did informal testing of multiple origin and endpoints on known locations to arrive at <br>some idea of latency trends. Typical round-trip times to London are close to 55ms; 31ms to <br>Copenhagen. Connections to Oslo trend around 70ms, Berlin around 71ms, and to Madrid <br>74ms. On connections closer to the uplinks, slightly better times were observed, while <br>household Internet connections showed slightly worse round-trip times. As such, none of this <br>was particularly unexpected.<br> +The theoretical roundtrip time for a photon traveling over the big circle route from Reykjavík <br>to London is 12.64ms; to Copenhagen it is 14.02ms. Therefore the Copenhagen connection <br>is as close to reasonable expectations as is possible, while the London connection could <br>possibly be improved. The FarIce endpoint is in Edinburgh, so packets bound for London <br>must traverse potentially congested and slow UK networks after their initial arrival.<br> +<b>Network Security</b><br> +No major network security incidents have occurred in Iceland. Denial of Service attacks <br>happen on a relatively small scale on a fairly regular basis, but are easily mitigated with <br>standard techniques. No large scale online attacks have occurred in recent years, although <br>in some cases competent attackers have been able to disable individual service providers <br>for a number of hours. This is not considered to be more frequent in Iceland than in the EU, <br>based on anecdotal evidence.<br> +Individual servers and home computers are moderately well protected from security threats <br>compared to other countries, owing to a fair degree of awareness, a comparatively low <br>incidence of pirated operating system software, and generally well configured routers on <br>home connections. That said, many computers run outdated operating systems with severe <br>security vulnerabilities, and many websites operate outdated web platforms, in particular <br>Wordpress and Joomla, which are common staging grounds for attack.<br> +The Icelandic government is acutely aware of the threats posed to the security of networks, <br>and in recently proposed amendments to the telecommunications act, provisions are made <br>for the establishment of a CERT (Computer Emergency Response Team). This should <br>increase multi-party coordination and responsiveness in the case of online attacks or other <br>ICT-related emergency, and thus overall communications resilience.<br> +<b>Future Connectivity Developments</b><br> +A number of proposals have been made for future developments in connectivity in Iceland. <br> +15<br> +<hr> +<A name=16></a><IMG src="Greens-IslandsofResilience-16.png"><br> +<IMG src="Greens-IslandsofResilience-16.png"><br> +<IMG src="Greens-IslandsofResilience-16.png"><br> +<IMG src="Greens-IslandsofResilience-16.png"><br> +<IMG src="Greens-IslandsofResilience-16.png"><br> +<IMG src="Greens-IslandsofResilience-16.png"><br> + <br>One example which has frequently been brought up is that Iceland’s geographical situation <br>makes it ideal for connecting the American east coast, Europe, and East Asia, due to <br>the receding polar ice cover. Such a connection could land in Longyearbyen in Svalbard, <br>and have connections to Murmansk, some settlements along northern Siberia, and either <br>connect to Yakutsk via the Lena river or go through the Bering strait and connect to Alaska <br>on the one hand and Kamchatka and Japan on the other hand.<br> <br>This would shorten round-trip latency to East Asia substantially, as most current connections <br>go through the Mediterranean, down past India, and through the South China Sea. The <br>Longyearbyen connection would allow for redundancy to Norway through an existing <br>connection. Connections in Russia would help in Russia’s developing ICTs, as currently it is <br>estimated that 70% of Russian communications go through Sweden. However, it would be <br>vital to Europe’s communications security interests that such a connection have direct routes <br>to East Asia rather than an intermittent landing in Russia. There are numerous ways in <br>which such a proposal could be made beneficial to all parties, and it would open possibilities <br>for diverse applications from cross-continental high speed trading and currency arbitrage <br>to online gaming. For telephony applications, this connection would push the latency on <br>communications between Europe and East Asia down below the threshold of human <br>perception, itself a revolution in global telecommunications.<br> <br>Less ambitious potential developments that have been proposed include construction of <br>large data centers on the Reykjanes peninsula, construction of further fiber optics links to <br>Europe and America, and the establishment of data caches and mediation centers in Iceland <br>for high availability applications.<br> <br> +(Example routes for a “polar express” cable; also shows autumn arctic ice cover)<br> + <br> +16<br> +<hr> +<A name=17></a><IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +<IMG src="Greens-IslandsofResilience-17.png"><br> +The Russian Optical Trans-Arctic Submarine Cable System (ROTACS) project aims to do <br>just that. According to an article <br> +(ROTACS telecommunication project outline; source: <a href="http://barentsnova.com/node/1737">http://barentsnova.com/node/1737)</a><br> + <br> +(ROTACS and Arctic Fibre; source: Laser Focus World7)<br> +TODO: <a href="http://barentsnova.com/node/1737">http://barentsnova.com/node/1737</a><br> +7 <a href="http://www.laserfocusworld.com/articles/print/volume-48/issue-04/world-news/fiber-cables-to-span-the-arctic-ocean.html">http://www.laserfocusworld.com/articles/print/volume-48/issue-04/world-news/fiber-cables-to-span-the-arctic-<br>ocean.html</a><br> +17<br> +<hr> +<A name=18></a><b>Jurisdiction</b><br> +Iceland is a parliamentary republic which gained independence from Denmark in 1944. It <br>is a member of the United Nations, the Council of Europe (CoE), the European Economic <br>Area (EEA), the European Free Trade Association (EFTA) and the North Atlantic Treaty <br>Organization (NATO), amongst others. It is party to numerous international agreements <br>including Schengen.<br> +Iceland’s membership in the EEA means that outside of a few limited areas, all EU <br>commercial directives take effect in Iceland. In addition, both for conformity and utility, <br>Iceland has adopted various non-EEA relevant directives. This tendency has been <br>increasing as part of the preparations and negotiations for EU membership. As of 12 <br>December, 2011, eight out of 33 chapters have been closed in Iceland’s EU accession <br>negotiations. Of particular interest to this report, the chapter on information society and <br>media is considered to generally already conform to the EU <i>acquis</i>.<br> +<b>Commercial Issues</b><br> +After the collapse of the Icelandic banking sector in 2008, the Icelandic Central Bank <br>(Seðlabanki Íslands) was authorized to put limitations on the flow of capital, in particular <br>those with no relevance to goods or services. The Central Bank is also authorized to require <br>domestic companies to deposit and exchange foreign currency. As of November 2009 all <br>restrictions have been lifted on new investments, and in practice trade from Iceland is not <br>hindered substantially by the capital restrictions.<br> +VAT in Iceland is generally quite high, with most goods and services falling in the 25.5% <br>VAT category. However, law 163/2010 introduced new exceptions to the VAT law (law 50/<br>1988) which makes data processing and information provision, as well as “electronically <br>provided services” exempt from taxed capital flows.<br> +Further, this law allowed an exemption from VAT for the importation of servers and related <br>equipment (i.e., equipment which is necessary for the functioning of the servers and is <br>only of direct benefit to the owners of the servers) in cases where the owners have official <br>residence in other member states in the EEA, EFTA, or the Faroe Islands, and do not <br>have fixed operations in Iceland in accordance with Icelandic tax law. This exception puts <br>more specific requirements, for example that the owners of the servers pay VAT in their <br>home country, that the purpose of the operations be of such a nature that it would require <br>commercial registration if it were domestic, that the servers were imported specifically for <br>the purpose of operation in a data center which their owner is in business with, that the <br>servers and other equipment are used only by the owners, but not for other purposes within <br>the data center, and that the servers be used from outside of Iceland. This exception is due <br>for reconsideration in late 2013, but as it stands is exceptionally beneficial for cloud hosting <br>providers.<br> +<b>Overview of Icelandic Information Regulation</b><br> +18<br> +<hr> +<A name=19></a>Icelandic law conforms broadly to the European <i>acquis </i>regarding a number of different <br>information regulations.<br> <br>Telecommunications are in general governed by law 81/2003 (telecommunications act), <br>which implements EU directive 999/5/EC, regulation 2887/2000/EC, the Telecoms Package <br>(directives 2002/19/EC, 2002/20/EC, 2002/21/EC and 2002/22/EC), and directives 2002/58/<br>EC and 2002/77/EC.<br> <br>Electronic commerce and other electronic services are generally governed by law 30/<br>2002, which implements the e-Commerce directive (2000/31/EC), thereby establishing <br>intermediary liability limitations which are crucial to the functioning of Internet service <br>providers, hosting providers and data centers. The only practical failing of the Icelandic <br>implementation of the e-commerce directive is that allowance is made for injunctions <br>which, for historical reasons, can be issued by a regional sheriff (<i>sýslumaður</i>) without court <br>supervision. This has not caused problems in the context of intermediary liability limitations, <br>but has been used to stifle media on one occasion, and could potentially be abused further.<br> +Media is regulated under the media law, 38/2011, which implements Audiovisual <br>Media Services Directive (2007/65/EC). Broadcast media is also regulated by the <br>telecommunications act (81/2003).<br> <br>Personal and private data is protected under law 77/2000, which implements the Data <br>Protection Directive (95/46/EC). Electronic signatures are allowed as a valid form of <br>signature under law 28/2001, and to this end a national authentication card scheme has <br>been developed and is being distributed as a feature of banking cards.<br> <br>Freedom of access to government information is defined in law 50/1996. This law has been <br>under review, and a broad-reaching proposal for a new freedom of information law was <br>submitted to the Parliament during its 139th term (ending in October 2011), but did not <br>pass. A small subset of the changes proposed in that law by the relevant parliamentary <br>committee were adopted into a new version of the bill which was submitted to parliament <br>at the beginning of the 140th term. This new version did not include provisions proposed <br>by the review committee regarding public registration of government documents and public <br>advertisement of confidentiality terms, reasons and durations for secret documents.<br> <br>With regard to intellectual monopoly rights, patents are defined in law 17/1991, biopatents <br>in law 58/2000, descriptions of electronic components are protected under law 78/1993, <br>trademarks under law 45/1997, and in particular corporate logos are protected under law <br>155/2002. Finally, copyrights are defined in law 73/1972, which implements EU directives <br>89/552/EEC, 2003/4/EC, 2001/29/EC, 2001/84/EC, 91/250/EEC, 92/100/EEC, 93/83/<br>EEC, 93/98/EEC, 2004/48/EC (IPRED) and 2006/123/EC. Law 53/2006 defines specific <br>permissions regarding the collection of evidence pertaining to violations of intellectual <br>monopoly rights.<br> <br> +<b>Compatibility with European Union Directives</b><br> +As previously stated, Iceland’s laws regarding information technology and media are largely <br>in accordance with European <i>acquis</i>. However, in the European Commission’s Opinion on <br> +19<br> +<hr> +<A name=20></a>Iceland's application for membership of the European Union (COM(2010) 62)8, a few minor <br>issues are laid out.<br> +The most salient issue is that the EU Data Retention Directive (2006/24/EC) has not <br>been transposed. This is however a trivial issue——the telecommunications act contains <br>provisions for data retention which originate from early drafts of the data retention, and is in <br>all regards equivalent to the Data Retention Directive. Therefore, transposition is a formality. <br>Data retention will be discussed further in the later section on electronic surveillance.<br> +Also according to the opinion, while “the legislative and administrative structure is similar to <br>most EU Member States” the appointment procedures for the national regulatory authority <br>(the post and telecoms administration, <i>póst- og fjarskiptastofnun</i>) have to be revisited to <br>ensure transparency, objectivity, and high standards regarding security of tenure.<br> +It goes on to say that “in the field of information society services, the main directives have <br>been transposed into the Icelandic legal order, i.e. the Directives on electronic signatures, e-<br>commerce and conditional access.” <br> +<b>Intermediary Liability Limitations</b><br> +Law 30/2002 on e-commerce and electronic services implements the e-commerce directive <br>(2000/31/EC), which provides indemnity for "mere conduits", such as telecommunications <br>networks and Internet hosting providers.<br> +There are few and mostly well defined exceptions to this indemnity: <br> +●<br> +an injunction from a sheriff or court order<br> +●<br> +an notice-and-takedown procedure regarding copyright infringement<br> +●<br> +knowledge of child pornography<br> + <br>The exception for general court orders without further definition is worrying, due to the <br>remnants of an magistrate system mostly abolished in 1991. Prior to this, the district “sheriff” <br>(<i>sýslumaður</i>) also served as magistrate and had the ability to, amongst other things, enact <br>injunctions. When their magisterial rights were revoked with the 1991 law, they retained <br>their ability to enact injunctions. Although this has not caused problems in terms of Internet <br>hosting, a sheriff’s injunction was used in 2009 to prevent the state broadcaster, RÚV, <br>from airing a story pertaining to a leaked large loan book from the bank Kaupþing. As the <br>injunction was revoked when the injunction had failed, it was never taken to court, so its <br>veracity under the constitution was not tested.<br> <br>The exceptions should probably be improved by clarifying which exact circumstances can <br>trigger such exceptions, as well as restricting the injunction measures to actual courts.<br> +<b>Surveillance</b><br> +The Telecommunications Act (Law 81/2003) was amended in 2005 to include provisions <br>for data retention. It applies to telecommunication providers and its current implementation <br>mandates the retention of records of all connection data for 6 months. It states that <br>communications companies may only deliver information on telecommunications in criminal <br> +8 <a href="http://ec.europa.eu/enlargement/pdf/key_documents/2010/is_opinion_analytical-report.pdf">http://ec.europa.eu/enlargement/pdf/key_documents/2010/is_opinion_analytical-report.pdf</a><br> +20<br> +<hr> +<A name=21></a>cases or on matters of public safety. It also states that such information may not be given to <br>others than police and public prosecution.<br> +According to COM(2010) 62, an analytical report accompanying the communication from <br>the Commission to the European Parliament and the Council containing the Commission <br>Opinion on Iceland’s application for membership to the European Union, Iceland has <br>not currently implemented the Data Retention Directive. This directive is currently being <br>discussed (December 2011) in the Icelandic Parliament, however there are complications <br>owing to the fact that the Data Retention Directive, 2006/24/EC, came into effect one year <br>after the Icelandic Data Retention provisions, which have not since been overturned or <br>amended. However, the 2005 law which established data retention in Iceland was made <br>at the request of the Icelandic police chief (<i>Ríkislögreglustjóri</i>), making use of the current <br>discussions that were then ongoing in the European Commission about the issue. Therefore, <br>the implementation of data retention is structurally equivalent to the data retention directive, <br>although formally the EU directive has not been implemented. <br> <br>During discussions in the Icelandic parliament about the (formal) implementation of <br>the data retention directive, some parliamentarians were surprised to find that such a <br>broad surveillance law already existed in the telecommunications act. There have been <br>discussions, both public and within the parliament, about the potential abolition of data <br>retention. However, this would impede the EU membership process and is therefore unlikely <br>to gain traction without any political support from within the EU.<br> <br>There is an ongoing discussion about granting police enhanced surveillance rights, in <br>the form of proactive investigative measures aimed at counteracting organized crime and <br>terrorism. Although these measures have not yet been implemented, there is currently a <br>resolution proposal being processed in the parliament. The interior minister, Ögmundur <br>Jónasson, has independently stated that he is preparing proposals for such a law. The <br>scope of such a law is unknown, but it is clear that proactive investigation measures would <br>necessarily have to include expanded rights for telecommunications surveillance.<br> <br>Wiretapping and other electronic surveillance is regulated under the Telecommunications <br>Act (81/2003) and further defined in Rules no. 837/2006 on Electronic Surveillance9.<br> <br>Both data retention and surveillance support add to operating costs and jurisdictional <br>uncertainty for cloud hosting providers, especially given the complexity of unsettled <br>international cross-jurisdictional issues.<br> <br>A new bill has been proposed in the Parliament, by the Interior Minister, for the <br>establishment of a CERT team. The proposal as it stands contains provisions for allowing <br>the CERT team to perform limited surveillance of a computer network, having been granted <br>permission to do so by the network operator. It also gives the CERT team the right to report <br>illegal activities on the network to the police. This combination could potentially be abused <br>as a gateway to blanket surveillance, as has been noted in a memo issued by the Icelandic <br> +9 <a href="http://www.personuvernd.is/information-in-english/greinar//nr/610">http://www.personuvernd.is/information-in-english/greinar//nr/610</a><br> +21<br> +<hr> +<A name=22></a>Digital Freedoms Society10, but with greater restrictions (such as a ban on deep packet <br>inspection and identification of individual users or network analysis that could compromise a <br>user’s identity), it could serve to improve network security.<br> +<b>Censorship</b><br> +No state censorship is currently practiced in Iceland. <br> +Corporate censorship has been employed by telecoms providers in a few cases, at request <br>of police and child protection authorities. Most notable was the anonymous forum site <br><i>Ringulreið</i>, which was accused of being a center for cyber-bullying. After the major telecoms <br>providers, Síminn and Vodafone, voluntarily censored access to the site from its users, the <br>site was shut down by its operators. <br> +Some ISPs, most notably Síminn, the largest ISP in Iceland (formerly the state telecoms <br>company) offer parental filtering services to their customers on an opt-in basis. Such <br>blocking software is largely controlled by end-users, although it is somewhat unclear by <br>which criteria websites are added to these filter lists. However, no anti-competitive, political <br>or religious censorship has been noticed in these systems.<br> +Over the last year, it can be argued that abuse of libel law has been on the rise. Journalists <br>and commentators have been increasingly found guilty of libel for comments made on online <br>media. In particular, one journalist has been found guilty for directly quoting an interviewee, <br>whose statement was considered to be libelous by the court. In another case, an elderly <br>woman was found guilty of libel for a Facebook comment wherein she made a value <br>judgement on the characters of the claimants. Of course, in each of these cases there are <br>competing interests and some uncertainty left to the courts, but many have commented on <br>the potential chilling effects associated with such lawsuits and have called for reform.<br> +<b>Data Protection</b><br> +Data protection is regulated under law 77/2000, which implements EU Directive 95/46/EC <br>(Data Protection Directive) and parts of EU Directive 97/7/EC (Equal Treatment in Social <br>Security Directive). The day-to-day management of compliance is managed by the Data <br>Protection Authority.<br> +Various rules and regulations apply with regards to data protection that might have <br>relevance to data centers and information hosting, specifically:<br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/610">Rules no. 837/2006 on Electronic Surveillance.</a><br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/441">Rules no. 698/2004 on The Obligation to Notify and Processing which requires a <br>Permit.</a><br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/442">Rules no. 299/2001 on security of personal data</a><br> +●<br> +<a href="http://eng.domsmalaraduneyti.is/laws-and-regulations/nr/1042">Regulation no. 322/2001 on Management of Personal Information by the Police</a><br> +10 Full disclosure: one of the authors of this report, Smári McCarthy, co-signed the memo <br>in question and is a board member of the Icelandic Digital Freedoms Society at the time of <br>writing.<br> +22<br> +<hr> +<A name=23></a><IMG src="Greens-IslandsofResilience-23.png"><br> +<IMG src="Greens-IslandsofResilience-23.png"><br> +<IMG src="Greens-IslandsofResilience-23.png"><br> +<IMG src="Greens-IslandsofResilience-23.png"><br> +<IMG src="Greens-IslandsofResilience-23.png"><br> +<IMG src="Greens-IslandsofResilience-23.png"><br> +<b>Human Resources</b><br> +Iceland is a highly educated country. Out of a workforce of 181,000 people, 33.3% have <br>primary education, 38.2% have vocational education, and 28.1% have university education.<br> +After the financial crisis started in 2008, unemployment rose from 1.01% in 2007 to 8.13% <br>in 2010. Recent reports suggest that the unemployment rate is going down, but that has not <br>been confirmed by publicly available statistics.<br> +A 2006 OECD report showed that the number of scientific and engineering publications <br>in internationally recognised journals had increased at an average annual growth rate of <br>5.7% since 1998 and that between 1991 and 2001, the number of publications per million <br>population increased by 50%, from 403 to 610, compared to averages of 416 and 556 in <br>those same years in the EU15. At that time, Iceland ranked eighth in the number of <br>citations per paper (worldwide). The financial crisis caused some reductions in innovation <br>and research & development funding, but this primarily had the effect of shifting researchers <br>further into private sector research operations and startup companies. On the other hand, <br>the Icelandic Innovation Center has started a number of seed labs where startup companies <br>and small proprietors can rent inexpensive office space.<br> <br> +Bala Kamallakharan has noted11 that 2011 was a record year for insolvencies in Iceland, <br>while the number of new company registrations has dropped significantly. This could <br>perhaps be attributed to unavailability of capital available to startups, or perhaps deflation <br>of the last decade’s bubble. Without suitable employment for its highly skilled labor force to <br>absorb, Icelanders will either resort to leaving for better opportunities abroad or remain idle <br>domestically letting their considerable talent go to waste. <br> +11 <a href="http://www.startupiceland.com/2012/01/2011-has-been-record-year-in-iceland.html">http://www.startupiceland.com/2012/01/2011-has-been-record-year-in-iceland.html</a><br> +23<br> +<hr> +<A name=24></a> <br>Either way, the combination of experienced researchers, high unemployment rate, low rate <br>of startup and high insolvency rate suggests that unless Iceland continues to experience an <br>increase in “brain drain”, where well educated people seek employment outside the country, <br>a significant underemployed or unemployed workforce will exist in Iceland.<br> <br> +<b>Icelandic Modern Media Initiative<br></b>On July 16th 2010, the Icelandic Parliament, Alþingi, unanimously adopted a parliamentary <br>resolution to develop in Iceland advanced legislation for the protection of the rights to <br>information and free speech. Since then, the <i>Icelandic Modern Media Initiative</i>, or IMMI, as it <br>was called, has been in development, both inside the government ministries and institutions, <br>and within Icelandic civil society. The originators of the IMMI initiative founded, in 2011, the <br>International Modern Media Institute, a synacronymous civil society organization working <br>towards ensuring that the goals and spirit of IMMI are met in Iceland, and sharing the ideas <br>and developments with the world at large.<br> <br> <br> <br> <br> +<b>Subject area</b><br> +<b>Status</b><br> +<b>Notes</b><br> +<b>Source Protection</b><br> +<b>Complete</b><br> +<b>Media law + constitution</b><br> +<b>Freedom of Information Act</b><br> +<b>Pending </b><br> +<b>New law replacing older law + </b><br> +<b>ratification</b><br> +<b>constitution</b><br> +<b>Communications Protection</b><br> +<b>Pending </b><br> +<b>Changes to law + constitution</b><br> +<b>ratification</b><br> +<b>Intermediary Liability </b><br> +<b>In development</b><br> +<b>Changes to law + constitution</b><br> +<b>Limitations</b><br> +<b>Publishing Liability Limitations</b><br> +<b>In development</b><br> +<b>Changes to law</b><br> +<b>Whistleblower Protection</b><br> +<b>In development</b><br> +<b>Changes to law + constitution</b><br> +<b>Prior Restraint Limitations</b><br> +<b>Pending </b><br> +<b>Constitution + regulatory changes</b><br> +<b>ratification +<br>In Development</b><br> +<b>Judicial Process Protections</b><br> +<b>On hiatus</b><br> + <br> +<b>Network Neutrality</b><br> +<b>Pending </b><br> +<b>Constitution</b><br> +<b>ratification</b><br> +<b>Virtual Limited Liability </b><br> +<b>On hiatus</b><br> + <br> +<b>Companies</b><br> +<b>Freedom of Expression Prize</b><br> +<b>On hiatus</b><br> + <br> + <br> +24<br> +<hr> +<A name=25></a><b>Source Protection<br></b>The protection of sources refers to measures which forbid journalists from exposing the <br>identity of their sources without the source’s permission. The purpose of such measures is <br>to increase the willingness and security of sources who consider themselves to be at risk, <br>when providing information of criminal wrongdoing, corruption, negligence or other socially <br>unacceptable behavior to journalists.<br> <br>Journalistic source protection was implemented in Icelandic law 38/2011 (the media act). <br>The source protection clause is defined in article 25., which states:<br> <br> +Employees of media organizations which have been licensed or registered with the media committee <br>are forbidden to expose the identity of source for articles, books, retellings, announcements or other <br>material, regardless of whether it has been published, if the source or the author requested anonymity. <br>Employees of the media organization are also forbidden to release data which contain information <br>regarding the source or author in such circumstances.<br>The rule in the 1st paragraph also applies to those who, due to connections to the media organization <br>or the production of the material has gained knowledge of the identity of the source or author, or has <br>attained data to that effect.<br>Source protection under paragraphs 1 and 2 can only be relieved with the permission of the source or <br>the author, or on the basis of article 119 of the law on the prosecution of criminal cases, no. 88/2008.12<br> + <br> <br>In addition to the stipulation in the new media law, the proposed constitution for Iceland <br>contains, in article 16, the statement:<br> <br> +The protection of journalists, their sources of information and whistle-blowers shall be ensured by law. <br>It is not permitted to breach confidentiality without the consent of the person providing the information <br>except in the process of criminal proceedings and pursuant to a court order.<br> + <br>This provides equivalent protection under the constitution, if ratified, ensuring that the source <br>protection clause would not be removed from law without referendum.<br> <br><b>Status: Complete.<br> </b><br> +<b>Freedom of Information Act<br></b>Access to government documents and records is mandated in Iceland by law 50/1996, (the <br>information act). The current Icelandic FOI law does not conform to CoE convention, and it <br>does not match the standards set in the Aarhus convention for environmental information.13<br> <br>An updated information act was proposed at Alþingi in 2011, however, due to end of term <br>in late September 2011, the bill did not complete the third reading in parliament and was <br>therefore dropped. It has since been reintroduced with many of the changes merged in and <br>multiple improvements made, however, the newly proposed version does not meet the high <br>standard the bill had previously achieved.<br> <br>IMMI submitted an 8 page report and a 84 page change comparison of the two bills to <br>the constitutional and regulatory committee of Alþingi in February 2012#, criticizing the <br>government’s backpedaling against the changes that had previously been proposed in <br> +12 The exception in article 119 of law 88/2008 applies to the case where criminal proceedings for serious offences cannot be <br>resolved without the identity of the source or author being exposed. In such cases, it has been recommended although it is not <br>stipulated in statutes, that the identity first be exposed to the judge <i>in camera</i>, so that the judge can appropriately measure the <br>potential risk to the source against the benefit of the source’s exposure. This is generally considered an acceptable limitation to <br>the otherwise absolute source protection clause.<br>13 The Aarhus convention was ratified by law 131/2011.<br> +25<br> +<hr> +<A name=26></a>parliamentary committee. At the moment, the committee work is proceeding.<br> <br>Cautious optimism suggests that the committee will once again restore the bill to its former <br>state and that it will be accepted. If this is the case, the norm for access to information <br>in Iceland will be altered from being a ‘publish on request’ regime to ‘publish by default’ <br>regime.14 Then, any documents which are not published can be at least listed along with <br>information about why it has been held back and FOI requests can be made for those <br>documents specifically. This change is the most important alteration of many.<br> <br>In the meantime, the new proposed constitution of Iceland has guaranteed a substantial <br>improvement of information rights.15<br> <br><b>Status: Pending ratification</b><br> +<b>Network Neutrality<br></b>Network neutrality is a very broad concept, but generally refers to the idea that each node <br>operating on the network should be considered equal to all others in terms of access. <br>Numerous governments and corporations have instantiated various forms of censorship and <br>containerization#. Due to technical limitations of the IPv4 space, almost every end-user of <br>the Internet can be considered in an aberration of the end-to-end principle often from NAT <br>(Network Address Translation), this makes their nodes second class citizens of the Internet. <br>There is a lot to be done in terms of network neutrality.<br> <br>This is going to be a topic for many years, but for now IMMI has decided to take the first <br>steps. Article 14 of the proposed constitution creates an obligation for the government to <br>protect the Internet, with the same constraints as those on free speech in general. Although <br>those limitations should definitely be questioned, this must be considered a substantial <br>victory, as no country currently even mentions the Internet in its constitution, let alone <br>defends it:<br> <br> +The government shall guarantee conditions that are conducive to open and informed public discussion. <br>Access to the Internet and information technology shall not be curtailed except by a decision of a court <br>of law and on the same substantive conditions that apply to restrictions on the freedom of expression.<br> + <br><b>Status: Pending Ratification</b><br> +<b>Communications Protection and Communications Data Retention<br></b>In the interests of protecting privacy and source confidentiality, protection of communications <br>is a vital ingredient to any coherent information regulation strategy.<br> <br>The protection of communications is a wide project that can be roughly split into two tasks. <br>On the one hand, removing existing threats to communications protection from law, and on <br>the other hand establishing new protections for communications.<br> <br>In January 2012, as Alþingi was debating the adoption of the European Union’s Data <br>Retention Directive, IMMI produced a report outlining the dangers of blanket data retention. <br>In committee, IMMI’s views got the support of the Privacy Directorate, and this led to the <br>parliamentary committee requesting that the directive be postponed indefinitely and that <br>the foreign minister inform the European Union that Iceland would not be implementing the <br> +14 meaning that instead of FOI requests having to be made for each document individually in order to obtain a private copy for <br>dissemination, which is a slow and complicated process, the rule will become that government publishes all documents publicly <br>by default, for instance in an online database.<br>15<a href="http://www.stjornlagarad.is/english/"> http://www.stjornlagarad.is/english/ Articile 15 (English PDF available from the website)</a><br> +26<br> +<hr> +<A name=27></a>directive.<br> <br>This however was not enough, as Iceland has in law a data retention clause (paragraph <br>3, article 42, of the telecommunications act, 81/2003, amended in 2005), which predates <br>the EU’s Data Retention Directive by a year. IMMI has argued against this clause, both in <br>newspapers and in opinions to parliament, and has drafted a bill for the removal of the act.<br> <br>More recently, IMMI was asked to submit proposals for improvement of certain articles of <br>the telecommunications act being added to introduce a Computer Emergency Response <br>Team (CERT) in Icelandic law, so as to better balance against privacy concerns. In these <br>proposals, IMMI included the following proposal:<br> <br> +Paragraph 3 of article 42, requiring the retention of telecommunication data, is dropped.<br> +Appended to article 42 is a new paragraph:<br>Parties other than the sender and the receiver of electronic packet-switched communications are <br>forbidden to inspect or electronically process the payload of the packets. Headers and metadata of <br>packet-switched communications shall only be stored for the period needed to resolve the routing of the <br>communications and security measures as per article 47. a.<br> <br> +This would effectively remove the data retention provisions from law, if adopted, and <br>simultaneously improve the communications protection by making it a criminal offense to <br>intercept and inspect communications, by methods such as Deep Packet Inspection. It is our <br>hope that this provision be adopted in law.<br> <br>In addition to this development, the proposed constitution of Iceland contains a clause in <br>article 11 expressly forbidding the search of communications, except with a valid court <br>order.16<br> <br> <br><b>Status: Pending ratification & in further development</b><br> +<b>Intermediary Liability Limitations<br></b>The original idea for limited liability for telecommunications intermediaries comes from the <br>development of the Communications Decency Act in the United States around 1996. Since <br>then, the European Union has adopted the e-Commerce Directive, which implements similar <br>limitations. The directive is implemented in Iceland as the electronic commerce and other <br>electronic services act (30/2002), and has equivalent measures.<br> <br>Immediately on exploring the intermediary liability limitations (ILLs) in the Icelandic law, a <br>striking flaw presents itself in the form of “general court orders”. This phrasing is very vague <br>and more importantly lends itself to being understood that district sheriffs, who in Iceland <br>have injunctive powers, can issue takedown orders. IMMI has an interest in tightening this <br>language, and intends to make proposals to do so in the coming months.<br> <br>More importantly though, ILLs have been under attack globally in recent years. A great many <br>changes in strategies relating to intellectual monopoly enforcement, protection of official <br>secrets and political attempts at opening doors for corruption have revolved around eroding <br>ILLs. In order to counteract this trend, IMMI has partnered with several organizations to <br>explore what can be done to define a legal and technical defense of both Internet endpoints <br>and intermediaries that can better withstand political attempts at erosion. This work is in <br>early stages, but some results are scheduled for July 2012.<br> <br><b>Status: In development</b><br> +16 <a href="http://www.stjornlagarad.is/english/">http://www.stjornlagarad.is/english/ Articile 11</a><br> +27<br> +<hr> +<A name=28></a><b>Libel Tourism Protection<br></b>Libel tourism is the act of a company or individual choosing to pursue lawsuits against <br>individuals or companies in a country with a low threshold for libel lawsuits. Legal extortion <br>schemes have been perpetuated with companies being tried in countries such as England <br>and Wales even if the defendant resides elsewhere in the world. This is a form of forum <br>shopping. Implementing laws that prevent or diminish the effects of libel tourism in Iceland <br>will protect Icelandic citizens and residents from this kind of forum shopping. It’s fairly <br>important that people can predict with some certainty where, if anywhere, they will be <br>taken to court. This also applies to companies, who base a lot of their operational security <br>on knowing the legal environment. In this way, ending libel tourism will encourage foreign <br>investment and provide financial security for companies operating here already.<br> <br>For now, Iceland has a mechanism. As a signatory of the Lugano treaty, Icelandic courts <br>can decide not to uphold foreign court verdicts which go against the rule of law in Iceland. <br>This means that a libel verdict from a foreign country can be challenged in an Icelandic court <br>on the basis of article 34 of the Lugano treaty if it comes from a country with a substantially <br>different burden of proof for libel than Iceland does. This has not been tested, but is currently <br>our best bet.<br> <br>In the meantime, British libel reform efforts are going well, and coupled with a well written <br>libel law in Iceland, may be sufficient to put an end to libel tourism - at least in Iceland. When <br>that is finished, the bigger issue of International Forum Shopping remains.<br> <br><b>Status: Complete / Untested solution</b><br> +<b>Libel Reform and Publishing Liability Limitations<br></b>The media law from 2011 introduced new rules regarding media liability. However, since its <br>adoption, a number of court cases have been heard in Reykjavík which cast a shadow on <br>the reform and point at a deeper structural fault in the current libel regime.<br> <br>Although media liability is defined in the print law and superseded by the media law, the <br>terms of libel itself are defined in chapter XXV of the criminal act, which treats violations <br>of privacy and libel as equal criminal offenses. Under the criminal act, it is illegal to make <br>truthful accusations, to offend somebody publicly or privately, or to make unfavorable <br>comments about deceased persons. As these are criminal offenses, they have assigned <br>imprisonment penalties from 1 to 4 years, as well as fines, although imprisonment is rarely <br>used in practice.<br> <br>The global trend in libel law is to move it away from criminal sanctions and into tort law, <br>making it a civil offense, punishable only by fines. Alongside this, the scope of libel is to be <br>narrowed, making the truth a valid defense and ensuring that people cannot be brought to <br>charge for making value judgements against another’s character. It should be legal to call a <br>person a jerk, although it is questionable whether you can call somebody a murderous jerk <br>without backing it up with evidence.<br> <br>IMMI has completed the basic research needed to implement these changes and drafted <br>a bill which aim to alleviate at least most of the existing concerns. Due to parliamentary <br>scheduling rules, it cannot be introduced until the autumn of 2012.<br> <br><b>Status: Pending</b><br> +28<br> +<hr> +<A name=29></a><b>Whistleblower Protection<br></b>A whistleblower is a person that tries to disclose or report information on situations affecting <br>the public that may evidence of criminal activity. Protection for individuals reporting <br>institutionalized corruption is paramount. They may be providing relevant information <br>to the public record, such as data or testimony about relevant matters like public health, <br>passed incidents, crime, government biases, democracy undermining practices, violations of <br>constitutional rights, corruption and bribery.<br> <br>Threats to whistleblowers come from corporate interests, governmental interests, criminal <br>activities, biases inherent in legal and judicial officials and systems. Whistleblower <br>protections must include a right to anonymity, physical, financial and social security.<br> <br>As the threat models, institutional settings and personal complexities of whistleblowing vary <br>widely, this is perhaps the most complicated of IMMI’s tasks. While a lot of development <br>work has been put into this issue already, we feel that the adequate protection of <br>whistleblowers cannot be completed without deep investigation.<br> <br>As one core issue, the idea of corporate personhood must be challenged. Disregarding <br>other arguments for doing so, it is very important that it not be decided that companies and <br>other corporate vehicles have a right to privacy, as this would pit whistleblower activities up <br>against privacy and data protection law, the sanctity of which is of equal importance. It’s a <br>fight nobody should have to fight. That said, there has been no such ruling in Iceland and it <br>is not foreseeable that that will change; it’s merely one issue of many that must be monitored <br>and pro-actively taken action on.17<br> <br><b>Status: In development</b><br> +<b>Prior Restraint Limitations<br></b>Prior restraint is banned under article 73 of the Icelandic constitution. A slightly stronger <br>implementation of prior restraint limitations are introduced in the new constitution, which is <br>pending ratification.<br> <br>Outside of constitutional guarantees, IMMI also has an interest in protecting against abuse <br>of injunctions by sheriffs, who still have injunctive authorities as a holdover from their now <br>abolished tribunal role. This fits in with the discussion of Intermediary Liability Limitations <br>stated above, and IMMI expects to be able to address these two concerns jointly.<br> <br><b>Status: Pending ratification<br> </b><br> +<b>Virtual Limited Liability Companies<br></b>Icelandic corporate law is currently somewhat hostile to foreign ownership from outside the <br>European Economic Area (EEA). The idea of Virtual Limited Liability Companies is to allow <br>for virtually defined corporate entities, whereby the ownership is somewhat ephemeral, as <br>long as the owners adhere to certain Icelandic transparency requirements. In that way, a <br>virtually operated commpany would have tax obligations and operational safe harbor rights <br>in Iceland like any other company, but gets to operate virtually in exchange for some strict <br>guarantees of transparency and such.<br> <br> +17 For more detail see:: <a href="http://immi.is/Press_Release:_IMMI_Status_Update,_April_2012">http://immi.is/Press_Release:_IMMI_Status_Update,_April_2012 </a><br> +29<br> +<hr> +<A name=30></a>This issue has more to do with creating a pleasant investment environment than explicitly <br>improving the information regime in Iceland. For that reason, it has been relegated to the set <br>of the last things we aim to accomplish in this set, and is therefore on hiatus for now.<br> <br><b>Status: On hiatus.<br></b> <br> <br> +<b>Selected Bibliography</b><br> +●<br> +Orkustefna fyrir Ísland; Stýrihópur um mótun heildstæðrar orkustefnu; <a href="http://www.nea.is/media/gagnasofn/Orkustefna-fyrir-Island.pdf">http://<br>www.nea.is/media/gagnasofn/Orkustefna-fyrir-Island.pdf<br></a> <br> +●<br> +Iceland. What a Great Place to Put a Data Center; Verne Global / Martin Hannigan; <br><a href="http://www.uknof.org.uk/uknof12/Hanningan-Undersea.pdf">http://www.uknof.org.uk/uknof12/Hanningan-Undersea.pdf</a><br> + <br> +●<br> +<a href="http://www.os.is/gogn/Skyrslur/OS-2010/OS-2010-07.pdf">Orkuspá fyrir Ísland 2010-2050; Orkustofnun; http://www.os.is/gogn/Skyrslur/OS-<br>2010/OS-2010-07.pdf<br></a> <br> +●<br> +Benchmarking Study on Iceland as a Location for Data Centre Activity; Invest in <br><a href="http://www.invest.is/resources/files/invest.is/BDC%20Report.pdf">Iceland Agency; http://www.invest.is/resources/files/invest.is/BDC%20Report.pdf<br></a> <br> +●<br> +Mikil arðsemi af raforkusölu til stóriðju; Vísir; <a href="http://www.visir.is/mikil-ardsemi-af-raforkusolu-til-storidju/article/2011712209851">http://www.visir.is/mikil-ardsemi-af-<br>raforkusolu-til-storidju/article/2011712209851<br></a> <br> +●<br> +<a href="http://www.oecd.org/dataoecd/15/62/36648108.pdf">Policy Mix for Innovation in Iceland; OECD; http://www.oecd.org/dataoecd/15/62/<br>36648108.pdf</a><br> +30<br> +<hr> + <script> + $(document.body).annotator() + $(document.body).annotator() + .annotator('addPlugin', 'Store') + + </script> +</BODY> +</HTML> diff --git a/report/Greens-IslandsofResilience-1.orig.png b/report/Greens-IslandsofResilience-1.orig.png Binary files differnew file mode 100644 index 0000000..b32e94b --- /dev/null +++ b/report/Greens-IslandsofResilience-1.orig.png diff --git a/report/Greens-IslandsofResilience-1.png b/report/Greens-IslandsofResilience-1.png Binary files differnew file mode 100644 index 0000000..642dca3 --- /dev/null +++ b/report/Greens-IslandsofResilience-1.png diff --git a/report/Greens-IslandsofResilience-10.png b/report/Greens-IslandsofResilience-10.png Binary files differnew file mode 100644 index 0000000..5ee1b52 --- /dev/null +++ b/report/Greens-IslandsofResilience-10.png diff --git a/report/Greens-IslandsofResilience-14.png b/report/Greens-IslandsofResilience-14.png Binary files differnew file mode 100644 index 0000000..bef26c7 --- /dev/null +++ b/report/Greens-IslandsofResilience-14.png diff --git a/report/Greens-IslandsofResilience-16.png b/report/Greens-IslandsofResilience-16.png Binary files differnew file mode 100644 index 0000000..3e71718 --- /dev/null +++ b/report/Greens-IslandsofResilience-16.png diff --git a/report/Greens-IslandsofResilience-17.png b/report/Greens-IslandsofResilience-17.png Binary files differnew file mode 100644 index 0000000..c8d3d99 --- /dev/null +++ b/report/Greens-IslandsofResilience-17.png diff --git a/report/Greens-IslandsofResilience-2.png b/report/Greens-IslandsofResilience-2.png Binary files differnew file mode 100644 index 0000000..5d47d89 --- /dev/null +++ b/report/Greens-IslandsofResilience-2.png diff --git a/report/Greens-IslandsofResilience-23.png b/report/Greens-IslandsofResilience-23.png Binary files differnew file mode 100644 index 0000000..b975706 --- /dev/null +++ b/report/Greens-IslandsofResilience-23.png diff --git a/report/Greens-IslandsofResilience-3.png b/report/Greens-IslandsofResilience-3.png Binary files differnew file mode 100644 index 0000000..a5e188b --- /dev/null +++ b/report/Greens-IslandsofResilience-3.png diff --git a/report/Greens-IslandsofResilience-9.png b/report/Greens-IslandsofResilience-9.png Binary files differnew file mode 100644 index 0000000..a00e4ec --- /dev/null +++ b/report/Greens-IslandsofResilience-9.png diff --git a/report/Greens-IslandsofResilience.html b/report/Greens-IslandsofResilience.html new file mode 100644 index 0000000..26a0f2e --- /dev/null +++ b/report/Greens-IslandsofResilience.html @@ -0,0 +1,14 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" +"http://www.w3.org/TR/html4/frameset.dtd"> +<HTML> +<HEAD> +<TITLE>Greens-IslandsofResilience</TITLE> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<META name="generator" content="pdftohtml 0.36"> +<META name="date" content="2012-07-27T09:43:08+00:00"> +</HEAD> +<FRAMESET cols="100,*"> +<FRAME name="links" src="Greens-IslandsofResilience_ind.html"> +<FRAME name="contents" src="Greens-IslandsofResiliences.html"> +</FRAMESET> +</HTML> diff --git a/report/Greens-IslandsofResilience.pdf b/report/Greens-IslandsofResilience.pdf Binary files differnew file mode 100644 index 0000000..be307d7 --- /dev/null +++ b/report/Greens-IslandsofResilience.pdf diff --git a/report/Greens-IslandsofResilience.txt b/report/Greens-IslandsofResilience.txt new file mode 100644 index 0000000..6c59f7b --- /dev/null +++ b/report/Greens-IslandsofResilience.txt @@ -0,0 +1,343 @@ +Islands of Resilience +Comparative Model for Energy, Connectivity and Jurisdiction +Realizing European ICT possibilities through a case study of Iceland + +Smári McCarthy and Eleanor Saitta + +1 + +Prepared at the request of: + +on behalf of Members of the European Parliament Christian Engström, Indrek Tarand, Carl Schlyter, Sandrine Bélier, Karima Delli, Eva Lichtenberger, Raül Romeva i Rueda, Heide Rühle, Judith Sargentini, Bas Eickhout and Marije Cornelissen + +Prepared at the request of The Greens / European Free Alliance Authors: Smári McCarthy Eleanor Saitta Contributing Researchers: Guðjón Idir Jason Scott On behalf of Members of the European Parliament: Christian Engström Indrek Tarand Carl Schlyter Sandrine Bélier Karmima Delli Eva Lichtenberger Paül Romeva i Rueda Heide Rühle Judith Sargentini Bas Eickhout Marije Cornelissen + +Produced by: + +International Modern Media Institute Laugavegur 3 101 Reykjavík Iceland + +2 + +Distributed under the terms of the Creative Commons Attribution-Sharealike 3.0-unported License + +3 + +Abstract +Locale is rapidly becoming one of the most important competitive differentiators in the provision of cloud-based information technology services. Broadly speaking, three categories of issues define a locale's fitness for hosting the cloud: energy, connectivity, and jurisdiction. Energy is the largest cost center for most cloud hosts. Beyond price per kilowatt hour, hosting companies must consider redundant network availability, power grid resilience, environmental sustainability, climate, and equipment cooling requirements as core parts of their energy strategy. Connectivity is clearly essential for hosts, and differentiating factors here include total installed bandwidth, current utilized bandwidth, hub redundancy, international uplink redundancy, round trip latency, traffic shaping and network neutrality. Jurisdictional issues are an area of emerging concern and awareness for cloud hosts, where the landscape is shifting rapidly. Hosting companies are deeply affected by intermediary liability, hosting liability, state and corporate surveillance, state and corporate censorship, the accessibility of and cost of interacting with courts, corruption, and socioeconomic stability. This report considers Iceland's relative competitive advantages and drawbacks as a hosting locale relating to these issues. + +4 + +Table of Contents +Abstract Introduction Energy Energy Sources Energy Utilization and Pricing Grid Resilience and Redundancy Climate and Cooling Connectivity Submarine Cables Installed and Utilized Capacity Domestic Network Round Trip Latency Network Security Future Connectivity Developments Jurisdiction Commercial Issues Overview of Icelandic Information Regulation Compatibility with European Union Directives Intermediary Liability Limitations Surveillance Censorship Data Protection Human Resources Icelandic Modern Media Initiative Source Protection Freedom of Information Act Network Neutrality Communications Protection and Communications Data Retention Intermediary Liability Limitations Libel Tourism Protection Libel Reform and Publishing Liability Limitations Whistleblower Protection Prior Restraint Limitations Virtual Limited Liability Companies Selected Bibliography + +5 + +Introduction +This preliminary study is intended to give a birds-eye view of the primary factors pertaining to energy, connectivity and jurisdiction in Iceland, as applicable to ICT1 growth in general and cloud hosting in particular.. It is necessarily narrow in scope and largely based on aggregating publicly available information. As a result, some inaccuracies may exist, largely due to poor information made available by private actors. A more in-depth follow up study will remedy this by seeking out more detailed expert insights, detailed statistics, and comparing against sourced cases. Regardless, this report clearly shows the advantages Iceland has in relation to ICTs, as well as showing some of its potential weaknesses and possible remedies. Iceland’s key strengths are: ● ● Cheap and abundant energy generated from green, renewable, sustainable and resilient energy sources, distributed over a well designed and resilient power grid. Increasingly good connectivity to the outside world with reasonable redundancy and a large amount of unused capacity available for expansion, and a very highly developed internal network with high resiliency. An advanced and stable jurisdiction, with clear information rights and regulations, well structured administration, and well informed governing bodies. + +● + +Iceland’s main weaknesses are: ● Scale discrepancies both in energy generation and consumption which could potentially threaten grid resilience in extreme cases. This can be improved with further diversification of energy consumers, such as large-scale ICT deployments. Iceland’s data connectivity is provided by a relatively small number of submarine cables connecting to the outside world, creating some network precarity. This is currently being improved with the addition of new cables. International data transport bandwidth through submarine cables is currently expensive. This could be mitigated by further investments, subsidies, or other methods to reduce the price for connection, with the intention of increasing the overall usage. Iceland has similar issues with blanket communications surveillance as in the EU, which make it less attractive for hosting than countries where communications are not monitored. This is hard to fix without political will in the EU. Wildcard properties exist in the implementation of the e-Commerce directive, connected to injunctive powers that district sheriffs still have. This can be solved by clarifying the instances under which injunctions can be made, and restricting the issuing authority to courts. + +● + +● + +● + +● + +Together Iceland’s key strengths form a very sound basis for the expansion of ICT in Iceland, especially cloud hosting. Most of the weaknesses in Iceland’s position are either + +1 + +Information and Communication Technologies + +6 + +structural weaknesses common amongst all EU member states or are relatively trivial issues which can be resolved easily. + +Energy +Energy is the largest cost center for most cloud hosting companies. Beyond price per kilowatt hour, hosting companies must consider redundant network availability, power grid resilience, environmental sustainability, climate, and equipment cooling requirements as core parts of their energy strategy. In our analytical model for energy, we asked the following questions: How prevalent are renewable energy sources in current electrical production? 1. 2. 3. 4. 5. Less than 3% of all energy production based on renewable energy sources. Between 4 and 40% of all energy production based on renewable energy sources. Between 40 and 60% of all energy production based on renewable energy sources. Between 60 and 97% of all energy production based on renewable energy sources. More than 97% of all energy production based on renewable energy sources. + +How much can current electrical production be increased without the construction of new (not currently planned) power plants? 1. 2. 3. 4. 5. By less than 5% of current average power use. By less than 25% of current average power use. By less than 50% of current average power use. By more than 75% of current average power use By more than 100% of current average power use. + +What is the annual average price per kiloWatt hour for a commercial customer using less than 2 GWh/year, including generation and distribution? 1. 2. 3. 4. 5. > €0.20/kWh > €0.14/kWh <= €0.14/kWh < €0.09/kWh < €0.07/kWh + +Iceland's national energy plan was last updated in November of 2011. + +Energy Sources + +7 + +In 2009, Iceland’s total energy utilization was roughly 240 PJ2 of primary energy sources, which equates to roughly 67 TWh3. The primary energy sources were, in order of magnitude: geothermal, hydroelectric, oil, and coal. Geothermal energy use was greater than all other energy sources combined, while coal use was relatively minuscule. Energy use in Iceland has risen substantially since the 1940’s with the industrialization of the country, which up until roughly 1960 was almost entirely rural. A vast amount of geothermal energy is used for house-heating (45%), followed by electricity production (39%). In addition, it is used for snow-melting, swimming pools, fish farming, greenhouses and for industrial purposes. In 2009 a total of 22.3 PJ of geothermal energy was used for electricity production. Only 18% of Iceland’s primary energy utilization comes from petrochemicals, of which 90% is oil and 10% coal. The majority of the coal is used by the iron smelting plant at Grundartangi, with other industrial processes consuming the remainder. Almost no natural gas is used in Iceland. Roughly 660 thousand tonnes of oil were used in Iceland in 2009, of which 41% went to powering cars, 18% for aircraft, and 29% for fishing. Petroleum use for cars has increased by 64% since 1990 in Iceland, contributing to the overall increase in use. Oil is not used for electricity production except for some emergency backup generators. Some towns have backup generators capable of sustaining basic operations throughout the town temporarily, but the redundancy of the electricity grid renders this use minimal. As a result, the electricity production in Iceland is almost exclusively from geothermal and hydroelectric primary energy sources. The theoretical maximum energy production in Iceland is 64 TWh per year from hydroelectric sources and between 10 and 30 TWh per year from geothermal sources. However, for natural protection purposes substantial regions of Iceland have been classified as natural reserves, parks, or other protected areas. In addition, certain areas have been classified as energy reserves that will not be used in coming years, in part for sustainability reasons. This lowers the effective energy available for production. The current installed production capacity is 12.3 TWh per year for hydroelectric power, and 4.6 TWh per year for geothermal power. After subtracting the protected and reserve production categories, the total available hydroelectric and geothermal energy available for future expansion is 11.91 TWh per year. Variability of energy pricing and availability is a critical issue for data centers. As Iceland has little or no hydrocarbon-based electricity production, electricity prices are largely unaffected by fluctuations in the oil, gas, and coal markets, and will not be affected by supply chain interruptions in these markets. This provides a critical level of energy resilience for the Icelandic electrical system at the supply end. Cheap, reliable, resilience, and predictably priced energy sources are, in combination, a significant advantage for potential hosting companies. + +2 3 + +Petajoules. 1 PJ = 1015 J Terawatt hours. 1 TWh = 1012 W·h + +8 + +(Primary energy sources in Iceland 1940-2009. Inset: Proportional use. Top to bottom: Coal, oil, geothermal and hydroelectric. Source: Orkuáætlun 2011) + +Energy Utilization and Pricing +In 2009, 74% of produced electricity in Iceland went to the aluminum industry, with roughly 4.9 TWh/year to Alcoa Fjarðarál, 4.0 TWh/year to Rio Tinto Alcan, and 4.0 TWh/year to Norðurál. 6% of produced electricity was used in the services industry, 5% for iron smelting plants, 5% for household appliances, 4% for utilities, 4% for general industries, and 1% in agriculture. + +9 + +(Electricity use 2009. From top to bottom: Fisheries, agriculture, general industries, district heating, home use, steel mills, services and aluminum industry. Source: Orkuátælun 2011) Energy use for household appliances accounted for 627 GWh in 2009, accounting for 7.1 B ISK (€44.3 million) in consumer use, including VAT. Average household electricity costs in Reykjavík are 11.30 ISK/kWh, or €0.07/kWh. This rate is substantially higher than the price for industry. In the case of the aluminum smelters, these rates are 30% lower than the European average4, although the energy prices for aluminum smelting have been confidential. Alcoa Fjarðarál reportedly paid between 28-35 USD/MWh in 2006, or roughly €0.044/kWh at 2006 exchange rates. + +(Main power lines and power plants. Source: Landsnet. For realtime energy distribution figures, see http://landsnet.is/raforkukerfid/kerfisstjornun/aflflutningurnuna/ ) + +Grid Resilience and Redundancy +Power grid resilience in Iceland is fairly high. The 61 power stations in Iceland are connected with a circular grid which goes around the country, providing basic redundancy. In addition, most power stations on the southwest corner have further grid redundancy simply due to the higher population density and related network effects. There are 50 hydroelectric power stations in Iceland, mostly small. There are 7 geothermal power plants, and 4 fueled power plants—one that generates power through garbage incineration, two diesel powered, and one methane plant. + +4 + +http://www.mbl.is/greinasafn/grein/1026890/ + +10 + +Some parts of the country, most notably the western fjords, are very poorly connected into the grid and frequently get disconnected during the winter months due to poor weather conditions. Power availability is maintained primarily with diesel generators when this happens. Similarly, Flatey and Grímsey, two populated islands off the Icelandic west and north coasts, respectively, are not connected to the main power grid, but are instead powered by diesel generators. Resilience is quite high on the southwest corner, where most economic activity is situated, but the east coast has also improved substantially in recent years due to developments in relation to the Kárahnjúkar dam project and the Alcoa Fjarðarál aluminum smelter. The overall infrastructural elasticity on the power grid is high enough to handle most types of outages due to line failures, power station shutdowns and disasters, but some very extreme edge cases exist where grid resilience is threatened, notably sudden outages in production units such as Kárahnjúkavirkjun, which could potentially lead to chain reactions of failures, similar to the power outage at Itaipu power station in Brazil on 21 January, 2002. In general, larger plants require larger transmission lines and inevitably cause more widespread damage when they do fail. Similarly, larger consumption units may threaten grid resilience. For instance, almost one third of Iceland’s total electricity consumption is used by a single aluminum smelter, meaning that the unlikely edge case of an abrupt total disconnect would momentarily increase the available electricity substantially. This kind of pathological outage may however be mitigated by various means, not least the further diversification of power production and consumption. + +Climate and Cooling +Estimates for data center energy utilization from IBM5 suggest that roughly half of all energy is used on cooling, and an additional fourth on heat waste, mostly due to internal electrical resistance in system components. Therefore, a priori energy waste in typical data centers is roughly 75% before any actual computation occurs. Mitigating this waste is clearly crucial to the efficiency, cost-effectiveness and sustainability of any data center. The proportional cost of cooling for data centers has risen dramatically over the past few years, relative to the cost of hardware. Reduction in hardware deployments due to virtualization and increases in system density have dramatically reduced equipment purchase costs as a proportion of operating costs. As a result of this, component-level heat waste mitigation is a primary industry research goal. Increasingly, large data center operators have started to look to areas with relatively cold climates. Cooling costs are significantly lower in cold areas, and most energy use in data centers in those areas that goes to cooling is attributable to airflow management and dehumidification rather than direct refrigeration. An example of this is the planned data center that Facebook, Inc., is building near Luleå, Sweden6. + +5 + +https://www-950.ibm.com/events/wwe/grp/grp030.nsf/vLookupPDFs/IBM%20BladeCenter%20 Product_Tikiri/$file/IBM%20BladeCenter%20Product_Tikiri.pdf 6 http://online.wsj.com/article/BT-CO-20111215-712478.html 11 + +In this respect, Iceland's climate is clear benefit for cloud hosting providers even though it’s not nearly as cold as some more northerly locales. The oceanic climate contributes to relatively stable temperatures over the year. Apart from insolation, there is relatively little seasonal variation in the factors that contribute to data center cooling. On the negative side, Iceland’s climate is generally rather humid, with an annual average of roughly 70.75%. In order for outside air to be used for cooling purposes some dehumidification would be needed. +Variable Average temp. °C Insolation, kWh/m²/day Wind speed, m/s Humidity, % Jan -2.60 0.11 10.20 80 Feb -2.59 0.53 10.27 78 Mar -1.59 1.31 9.63 71 Apr 1.37 2.77 8.42 69 May 5.24 4.11 7.18 66 Jun 8.49 4.71 6.51 66 Jul 10.31 4.16 6.40 63 Aug 9.58 3.27 6.63 61 Sep 6.29 2.17 7.62 67 Oct 2.75 0.97 8.85 72 Nov -0.04 0.25 8.76 77 Dec -1.91 0.03 10.41 79.0 + +(Reykjavík average temperature, insolation and windspeed, source: Gaisma.com) + +Connectivity +Iceland’s connectivity to the outside world has improved substantially over the last two decades. Since 1994, submarine fiber optics connections have existed to the Europe and North America. Since 2004, domestic Internet connectivity has gone up from 81% of households to 90%, compared to EU growth from 41% to 65%. Of the 10% of Icelandic households not connected to the Internet, 40% (4% of the total) claim not to want an Internet connection, whereas 25% (2.5% of the total) say it is due to price of connectivity. + +Submarine Cables +As of November 2011, there are four fiber optics cable links to Iceland: DanIce, Greenland Connect, FarIce, and CANTAT-3, in order of decreasing capacity. Several projects have been proposed to increase the number of fiber optics links to Iceland; of them, Emerald Express is the furthest towards completion. +Fiber optic cable CANTAT-3 FarIce Danice Greenland connect Emerald Express Owner Síminn Farice ehf Farice ehf TELE Greenland Emerald Networks Total capacity 7.5 Gb/s 720 Gb/s 5.2 Tb/s 1.9 Tb/s 58.6 Tb/s (planned) Installed capacity None Unknown ~20 Gb/s Unknown N/A Under construction Utilized capacity Decommissioned + +The CANTAT-3 was the first fiber optics cable connection to Iceland, greatly increasing the country’s telecommunications capacity. Installed in 1994, it was disrupted in late 2006 and was not returned to full capacity until mid-year 2007. The CANTAT-3 cable was retired in + +12 + +late 2010, due to age, operational costs, and low capacity. Farice ehf operates two fiber-optic submarine systems as of late 2011. It is partially owned by the Icelandic state and Arion bank, but a 20% stake is held by Faroese shareholders. Their first system, FarIce, lies between Seyðisfjörður, Iceland and Dunnet Bay, Scotland with a layover in Funningsfjørður in the Faroe Islands. From these locations it is backhauled to Reykjavík, Edinburgh and Tórshavn respectively. It traverses a roughly 1,400 km route using Dense Wavelength Division Multiplexing (DWDM) transmission technology. It has been in use since 2004 and is currently Iceland’s main communications line. Currently only roughly 3% of FarIce’s total potential capacity is installed, according to available sources. Farice ehf’s second system, Danice, was laid in 2008 and connects Landeyjarsandur in Iceland to Blaabjerg, Denmark, with a planned expansion to Eemshaven, Netherlands. Despite having significantly greater capacity than FarIce, it is much less utilized and mostly used as a redundancy cable for FarIce. The most recent fiber optic connection to Iceland is through Greenland Connect, installed in 2009 and owned and operated by TELE Greenland. It connects Milton, Trinity Bay, Newfoundland and Labrador, Canada, to Nuuk, Greenland, Qaqortoq, Greenland, and Landeyjarsandur, Iceland. It contains two fiber pairs specified for 128 wavelengths carrying 10 Gb/s each. As its landing point in Iceland is co-located with the Danice cable, direct bridging between them is possible. The Emerald Express is a planned 6x100x100 Gb/s fiber optics cable from the United States to Ireland with an offshoot to the Reykjanes peninsula in Iceland. Being constructed by Emerald Atlantis, Ltd. and TE SubCom, Ltd., it is scheduled to enter service in late 2012 and intends to facilitate ultra-low-latency connections to Europe and North America. Its Iceland branch will presumably carry two pairs, one for connection to Ireland, the other to the United States; the last pair connecting the US to Ireland directly. + +Installed and Utilized Capacity +Total capacity of installed fiber optic cables is currently around 7.8 Tb/s, not counting the CANTAT-3 cable. However, endpoint equipment has only been installed for a fraction of this capacity. The installed capacity is not known, but conservative estimates put it close to 200 Gb/s, or around 2.5% of the total capacity. Current utilized capacity is also unknown, but various estimates can be used to arrive at a figure. The combined foreign connectivity of universities and secondary colleges in Iceland is currently 16.5 Gb/s through RHNet. As RHNet typically accounts for between 14.2%-14.9% of total traffic through the Reykjavík Internet Exchange, it can be estimated that total foreign bandwidth consumption is close to 120 Gb/s. This number may turn out to be severely understated, but more detailed data is not available. + +13 + +(Map of proposed Emerald Express cable. Source: Emerald Networks) Uplink redundancy to Europe is good due to the FarIce and DanIce cables going separate routes. However, redundancy to the US is poor, since the only reliable connection is through Greenland. Currently, in the case of an outage, rerouting would have to be through Europe— presumably London. US redundancy will improve substantially when the Emerald Express is completed. Overall uplink redundancy is becoming better, providing more infrastructural elasticity and greater resilience. The older emergency satellite redundancy is slowly becoming less relevant and is probably not realistically needed. + +Domestic Network +The main domestic telecommunications hub is RIX (Reykjavík Internet Exchange), which is operated by ISNIC. This hub connects the main Internet service providers and data centers together. In general, domestic fiber optics and copper networks are operated by Míla, Fjarski and Gagnaveita Reykjavíkur. Míla is a subsidiary of the formerly state-run phone company (since privatized, currently known as Síminn). It operates a fiber optics ring around the country which were installed by NATO, but has expanded it substantially and introduced additional redundancy. It also operates fiber and copper networks in most settlements. Fjarki is a subsidiary of Landsvirkjun, the (mostly) state owned power company. + +14 + +Gagnaveita Reykjavíkur is a subsidiary of Orkuveita Reykjavíkur, the Reykjavík city power company. It provides mostly fiber to the home connections but also operates some communications backbones within the Reykjavík metropolitan area. + +Round Trip Latency +Round-trip latency to Europe is generally low, but varies widely depending on destination city and provider, origin location and provider, and various other variables. Generally speaking the network latency has low stochasticity (“jitter”), averaging around 4ms (milliseconds), suggesting natural latency rather than network congestion. We did informal testing of multiple origin and endpoints on known locations to arrive at some idea of latency trends. Typical round-trip times to London are close to 55ms; 31ms to Copenhagen. Connections to Oslo trend around 70ms, Berlin around 71ms, and to Madrid 74ms. On connections closer to the uplinks, slightly better times were observed, while household Internet connections showed slightly worse round-trip times. As such, none of this was particularly unexpected. The theoretical roundtrip time for a photon traveling over the big circle route from Reykjavík to London is 12.64ms; to Copenhagen it is 14.02ms. Therefore the Copenhagen connection is as close to reasonable expectations as is possible, while the London connection could possibly be improved. The FarIce endpoint is in Edinburgh, so packets bound for London must traverse potentially congested and slow UK networks after their initial arrival. + +Network Security +No major network security incidents have occurred in Iceland. Denial of Service attacks happen on a relatively small scale on a fairly regular basis, but are easily mitigated with standard techniques. No large scale online attacks have occurred in recent years, although in some cases competent attackers have been able to disable individual service providers for a number of hours. This is not considered to be more frequent in Iceland than in the EU, based on anecdotal evidence. Individual servers and home computers are moderately well protected from security threats compared to other countries, owing to a fair degree of awareness, a comparatively low incidence of pirated operating system software, and generally well configured routers on home connections. That said, many computers run outdated operating systems with severe security vulnerabilities, and many websites operate outdated web platforms, in particular Wordpress and Joomla, which are common staging grounds for attack. The Icelandic government is acutely aware of the threats posed to the security of networks, and in recently proposed amendments to the telecommunications act, provisions are made for the establishment of a CERT (Computer Emergency Response Team). This should increase multi-party coordination and responsiveness in the case of online attacks or other ICT-related emergency, and thus overall communications resilience. + +Future Connectivity Developments +A number of proposals have been made for future developments in connectivity in Iceland. + +15 + +One example which has frequently been brought up is that Iceland’s geographical situation makes it ideal for connecting the American east coast, Europe, and East Asia, due to the receding polar ice cover. Such a connection could land in Longyearbyen in Svalbard, and have connections to Murmansk, some settlements along northern Siberia, and either connect to Yakutsk via the Lena river or go through the Bering strait and connect to Alaska on the one hand and Kamchatka and Japan on the other hand. This would shorten round-trip latency to East Asia substantially, as most current connections go through the Mediterranean, down past India, and through the South China Sea. The Longyearbyen connection would allow for redundancy to Norway through an existing connection. Connections in Russia would help in Russia’s developing ICTs, as currently it is estimated that 70% of Russian communications go through Sweden. However, it would be vital to Europe’s communications security interests that such a connection have direct routes to East Asia rather than an intermittent landing in Russia. There are numerous ways in which such a proposal could be made beneficial to all parties, and it would open possibilities for diverse applications from cross-continental high speed trading and currency arbitrage to online gaming. For telephony applications, this connection would push the latency on communications between Europe and East Asia down below the threshold of human perception, itself a revolution in global telecommunications. Less ambitious potential developments that have been proposed include construction of large data centers on the Reykjanes peninsula, construction of further fiber optics links to Europe and America, and the establishment of data caches and mediation centers in Iceland for high availability applications. + +(Example routes for a “polar express” cable; also shows autumn arctic ice cover) + +16 + +The Russian Optical Trans-Arctic Submarine Cable System (ROTACS) project aims to do just that. According to an article + +(ROTACS telecommunication project outline; source: http://barentsnova.com/node/1737) + +(ROTACS and Arctic Fibre; source: Laser Focus World7) TODO: http://barentsnova.com/node/1737 +7 + +http://www.laserfocusworld.com/articles/print/volume-48/issue-04/world-news/fiber-cables-to-span-the-arcticocean.html + +17 + +Jurisdiction +Iceland is a parliamentary republic which gained independence from Denmark in 1944. It is a member of the United Nations, the Council of Europe (CoE), the European Economic Area (EEA), the European Free Trade Association (EFTA) and the North Atlantic Treaty Organization (NATO), amongst others. It is party to numerous international agreements including Schengen. Iceland’s membership in the EEA means that outside of a few limited areas, all EU commercial directives take effect in Iceland. In addition, both for conformity and utility, Iceland has adopted various non-EEA relevant directives. This tendency has been increasing as part of the preparations and negotiations for EU membership. As of 12 December, 2011, eight out of 33 chapters have been closed in Iceland’s EU accession negotiations. Of particular interest to this report, the chapter on information society and media is considered to generally already conform to the EU acquis. + +Commercial Issues +After the collapse of the Icelandic banking sector in 2008, the Icelandic Central Bank (Seðlabanki Íslands) was authorized to put limitations on the flow of capital, in particular those with no relevance to goods or services. The Central Bank is also authorized to require domestic companies to deposit and exchange foreign currency. As of November 2009 all restrictions have been lifted on new investments, and in practice trade from Iceland is not hindered substantially by the capital restrictions. VAT in Iceland is generally quite high, with most goods and services falling in the 25.5% VAT category. However, law 163/2010 introduced new exceptions to the VAT law (law 50/ 1988) which makes data processing and information provision, as well as “electronically provided services” exempt from taxed capital flows. Further, this law allowed an exemption from VAT for the importation of servers and related equipment (i.e., equipment which is necessary for the functioning of the servers and is only of direct benefit to the owners of the servers) in cases where the owners have official residence in other member states in the EEA, EFTA, or the Faroe Islands, and do not have fixed operations in Iceland in accordance with Icelandic tax law. This exception puts more specific requirements, for example that the owners of the servers pay VAT in their home country, that the purpose of the operations be of such a nature that it would require commercial registration if it were domestic, that the servers were imported specifically for the purpose of operation in a data center which their owner is in business with, that the servers and other equipment are used only by the owners, but not for other purposes within the data center, and that the servers be used from outside of Iceland. This exception is due for reconsideration in late 2013, but as it stands is exceptionally beneficial for cloud hosting providers. + +Overview of Icelandic Information Regulation + +18 + +Icelandic law conforms broadly to the European acquis regarding a number of different information regulations. Telecommunications are in general governed by law 81/2003 (telecommunications act), which implements EU directive 999/5/EC, regulation 2887/2000/EC, the Telecoms Package (directives 2002/19/EC, 2002/20/EC, 2002/21/EC and 2002/22/EC), and directives 2002/58/ EC and 2002/77/EC. Electronic commerce and other electronic services are generally governed by law 30/ 2002, which implements the e-Commerce directive (2000/31/EC), thereby establishing intermediary liability limitations which are crucial to the functioning of Internet service providers, hosting providers and data centers. The only practical failing of the Icelandic implementation of the e-commerce directive is that allowance is made for injunctions which, for historical reasons, can be issued by a regional sheriff (sýslumaður) without court supervision. This has not caused problems in the context of intermediary liability limitations, but has been used to stifle media on one occasion, and could potentially be abused further. Media is regulated under the media law, 38/2011, which implements Audiovisual Media Services Directive (2007/65/EC). Broadcast media is also regulated by the telecommunications act (81/2003). Personal and private data is protected under law 77/2000, which implements the Data Protection Directive (95/46/EC). Electronic signatures are allowed as a valid form of signature under law 28/2001, and to this end a national authentication card scheme has been developed and is being distributed as a feature of banking cards. Freedom of access to government information is defined in law 50/1996. This law has been under review, and a broad-reaching proposal for a new freedom of information law was submitted to the Parliament during its 139th term (ending in October 2011), but did not pass. A small subset of the changes proposed in that law by the relevant parliamentary committee were adopted into a new version of the bill which was submitted to parliament at the beginning of the 140th term. This new version did not include provisions proposed by the review committee regarding public registration of government documents and public advertisement of confidentiality terms, reasons and durations for secret documents. With regard to intellectual monopoly rights, patents are defined in law 17/1991, biopatents in law 58/2000, descriptions of electronic components are protected under law 78/1993, trademarks under law 45/1997, and in particular corporate logos are protected under law 155/2002. Finally, copyrights are defined in law 73/1972, which implements EU directives 89/552/EEC, 2003/4/EC, 2001/29/EC, 2001/84/EC, 91/250/EEC, 92/100/EEC, 93/83/ EEC, 93/98/EEC, 2004/48/EC (IPRED) and 2006/123/EC. Law 53/2006 defines specific permissions regarding the collection of evidence pertaining to violations of intellectual monopoly rights. + +Compatibility with European Union Directives +As previously stated, Iceland’s laws regarding information technology and media are largely in accordance with European acquis. However, in the European Commission’s Opinion on + +19 + +Iceland's application for membership of the European Union (COM(2010) 62)8, a few minor issues are laid out. The most salient issue is that the EU Data Retention Directive (2006/24/EC) has not been transposed. This is however a trivial issue——the telecommunications act contains provisions for data retention which originate from early drafts of the data retention, and is in all regards equivalent to the Data Retention Directive. Therefore, transposition is a formality. Data retention will be discussed further in the later section on electronic surveillance. Also according to the opinion, while “the legislative and administrative structure is similar to most EU Member States” the appointment procedures for the national regulatory authority (the post and telecoms administration, póst- og fjarskiptastofnun) have to be revisited to ensure transparency, objectivity, and high standards regarding security of tenure. It goes on to say that “in the field of information society services, the main directives have been transposed into the Icelandic legal order, i.e. the Directives on electronic signatures, ecommerce and conditional access.” + +Intermediary Liability Limitations +Law 30/2002 on e-commerce and electronic services implements the e-commerce directive (2000/31/EC), which provides indemnity for "mere conduits", such as telecommunications networks and Internet hosting providers. There are few and mostly well defined exceptions to this indemnity: ● an injunction from a sheriff or court order ● an notice-and-takedown procedure regarding copyright infringement ● knowledge of child pornography The exception for general court orders without further definition is worrying, due to the remnants of an magistrate system mostly abolished in 1991. Prior to this, the district “sheriff” (sýslumaður) also served as magistrate and had the ability to, amongst other things, enact injunctions. When their magisterial rights were revoked with the 1991 law, they retained their ability to enact injunctions. Although this has not caused problems in terms of Internet hosting, a sheriff’s injunction was used in 2009 to prevent the state broadcaster, RÚV, from airing a story pertaining to a leaked large loan book from the bank Kaupþing. As the injunction was revoked when the injunction had failed, it was never taken to court, so its veracity under the constitution was not tested. The exceptions should probably be improved by clarifying which exact circumstances can trigger such exceptions, as well as restricting the injunction measures to actual courts. + +Surveillance +The Telecommunications Act (Law 81/2003) was amended in 2005 to include provisions for data retention. It applies to telecommunication providers and its current implementation mandates the retention of records of all connection data for 6 months. It states that communications companies may only deliver information on telecommunications in criminal +8 + +http://ec.europa.eu/enlargement/pdf/key_documents/2010/is_opinion_analytical-report.pdf + +20 + +cases or on matters of public safety. It also states that such information may not be given to others than police and public prosecution. According to COM(2010) 62, an analytical report accompanying the communication from the Commission to the European Parliament and the Council containing the Commission Opinion on Iceland’s application for membership to the European Union, Iceland has not currently implemented the Data Retention Directive. This directive is currently being discussed (December 2011) in the Icelandic Parliament, however there are complications owing to the fact that the Data Retention Directive, 2006/24/EC, came into effect one year after the Icelandic Data Retention provisions, which have not since been overturned or amended. However, the 2005 law which established data retention in Iceland was made at the request of the Icelandic police chief (Ríkislögreglustjóri), making use of the current discussions that were then ongoing in the European Commission about the issue. Therefore, the implementation of data retention is structurally equivalent to the data retention directive, although formally the EU directive has not been implemented. During discussions in the Icelandic parliament about the (formal) implementation of the data retention directive, some parliamentarians were surprised to find that such a broad surveillance law already existed in the telecommunications act. There have been discussions, both public and within the parliament, about the potential abolition of data retention. However, this would impede the EU membership process and is therefore unlikely to gain traction without any political support from within the EU. There is an ongoing discussion about granting police enhanced surveillance rights, in the form of proactive investigative measures aimed at counteracting organized crime and terrorism. Although these measures have not yet been implemented, there is currently a resolution proposal being processed in the parliament. The interior minister, Ögmundur Jónasson, has independently stated that he is preparing proposals for such a law. The scope of such a law is unknown, but it is clear that proactive investigation measures would necessarily have to include expanded rights for telecommunications surveillance. Wiretapping and other electronic surveillance is regulated under the Telecommunications Act (81/2003) and further defined in Rules no. 837/2006 on Electronic Surveillance9. Both data retention and surveillance support add to operating costs and jurisdictional uncertainty for cloud hosting providers, especially given the complexity of unsettled international cross-jurisdictional issues. A new bill has been proposed in the Parliament, by the Interior Minister, for the establishment of a CERT team. The proposal as it stands contains provisions for allowing the CERT team to perform limited surveillance of a computer network, having been granted permission to do so by the network operator. It also gives the CERT team the right to report illegal activities on the network to the police. This combination could potentially be abused as a gateway to blanket surveillance, as has been noted in a memo issued by the Icelandic + +9 + +http://www.personuvernd.is/information-in-english/greinar//nr/610 + +21 + +Digital Freedoms Society10, but with greater restrictions (such as a ban on deep packet inspection and identification of individual users or network analysis that could compromise a user’s identity), it could serve to improve network security. + +Censorship +No state censorship is currently practiced in Iceland. Corporate censorship has been employed by telecoms providers in a few cases, at request of police and child protection authorities. Most notable was the anonymous forum site Ringulreið, which was accused of being a center for cyber-bullying. After the major telecoms providers, Síminn and Vodafone, voluntarily censored access to the site from its users, the site was shut down by its operators. Some ISPs, most notably Síminn, the largest ISP in Iceland (formerly the state telecoms company) offer parental filtering services to their customers on an opt-in basis. Such blocking software is largely controlled by end-users, although it is somewhat unclear by which criteria websites are added to these filter lists. However, no anti-competitive, political or religious censorship has been noticed in these systems. Over the last year, it can be argued that abuse of libel law has been on the rise. Journalists and commentators have been increasingly found guilty of libel for comments made on online media. In particular, one journalist has been found guilty for directly quoting an interviewee, whose statement was considered to be libelous by the court. In another case, an elderly woman was found guilty of libel for a Facebook comment wherein she made a value judgement on the characters of the claimants. Of course, in each of these cases there are competing interests and some uncertainty left to the courts, but many have commented on the potential chilling effects associated with such lawsuits and have called for reform. + +Data Protection +Data protection is regulated under law 77/2000, which implements EU Directive 95/46/EC (Data Protection Directive) and parts of EU Directive 97/7/EC (Equal Treatment in Social Security Directive). The day-to-day management of compliance is managed by the Data Protection Authority. Various rules and regulations apply with regards to data protection that might have relevance to data centers and information hosting, specifically: ● ● ● ● Rules no. 837/2006 on Electronic Surveillance. Rules no. 698/2004 on The Obligation to Notify and Processing which requires a Permit. Rules no. 299/2001 on security of personal data Regulation no. 322/2001 on Management of Personal Information by the Police + +10 + +Full disclosure: one of the authors of this report, Smári McCarthy, co-signed the memo in question and is a board member of the Icelandic Digital Freedoms Society at the time of writing. +22 + +Human Resources +Iceland is a highly educated country. Out of a workforce of 181,000 people, 33.3% have primary education, 38.2% have vocational education, and 28.1% have university education. After the financial crisis started in 2008, unemployment rose from 1.01% in 2007 to 8.13% in 2010. Recent reports suggest that the unemployment rate is going down, but that has not been confirmed by publicly available statistics. A 2006 OECD report showed that the number of scientific and engineering publications in internationally recognised journals had increased at an average annual growth rate of 5.7% since 1998 and that between 1991 and 2001, the number of publications per million population increased by 50%, from 403 to 610, compared to averages of 416 and 556 in those same years in the EU15. At that time, Iceland ranked eighth in the number of citations per paper (worldwide). The financial crisis caused some reductions in innovation and research & development funding, but this primarily had the effect of shifting researchers further into private sector research operations and startup companies. On the other hand, the Icelandic Innovation Center has started a number of seed labs where startup companies and small proprietors can rent inexpensive office space. + +Bala Kamallakharan has noted11 that 2011 was a record year for insolvencies in Iceland, while the number of new company registrations has dropped significantly. This could perhaps be attributed to unavailability of capital available to startups, or perhaps deflation of the last decade’s bubble. Without suitable employment for its highly skilled labor force to absorb, Icelanders will either resort to leaving for better opportunities abroad or remain idle domestically letting their considerable talent go to waste. +11 http://www.startupiceland.com/2012/01/2011-has-been-record-year-in-iceland.html + +23 + +Either way, the combination of experienced researchers, high unemployment rate, low rate of startup and high insolvency rate suggests that unless Iceland continues to experience an increase in “brain drain”, where well educated people seek employment outside the country, a significant underemployed or unemployed workforce will exist in Iceland. + +Icelandic Modern Media Initiative +On July 16th 2010, the Icelandic Parliament, Alþingi, unanimously adopted a parliamentary resolution to develop in Iceland advanced legislation for the protection of the rights to information and free speech. Since then, the Icelandic Modern Media Initiative, or IMMI, as it was called, has been in development, both inside the government ministries and institutions, and within Icelandic civil society. The originators of the IMMI initiative founded, in 2011, the International Modern Media Institute, a synacronymous civil society organization working towards ensuring that the goals and spirit of IMMI are met in Iceland, and sharing the ideas and developments with the world at large. + +Subject area +Source Protection Freedom of Information Act + +Status +Complete Pending ratification Pending ratification In development + +Notes +Media law + constitution New law replacing older law + constitution Changes to law + constitution + +Communications Protection + +Intermediary Liability Limitations Publishing Liability Limitations Whistleblower Protection Prior Restraint Limitations + +Changes to law + constitution + +In development In development Pending ratification + In Development On hiatus Pending ratification On hiatus + +Changes to law Changes to law + constitution Constitution + regulatory changes + +Judicial Process Protections Network Neutrality + +Constitution + +Virtual Limited Liability Companies Freedom of Expression Prize + +On hiatus + +24 + +Source Protection +The protection of sources refers to measures which forbid journalists from exposing the identity of their sources without the source’s permission. The purpose of such measures is to increase the willingness and security of sources who consider themselves to be at risk, when providing information of criminal wrongdoing, corruption, negligence or other socially unacceptable behavior to journalists. Journalistic source protection was implemented in Icelandic law 38/2011 (the media act). The source protection clause is defined in article 25., which states: +Employees of media organizations which have been licensed or registered with the media committee are forbidden to expose the identity of source for articles, books, retellings, announcements or other material, regardless of whether it has been published, if the source or the author requested anonymity. Employees of the media organization are also forbidden to release data which contain information regarding the source or author in such circumstances. The rule in the 1st paragraph also applies to those who, due to connections to the media organization or the production of the material has gained knowledge of the identity of the source or author, or has attained data to that effect. Source protection under paragraphs 1 and 2 can only be relieved with the permission of the source or the author, or on the basis of article 119 of the law on the prosecution of criminal cases, no. 88/2008. 12 + +In addition to the stipulation in the new media law, the proposed constitution for Iceland contains, in article 16, the statement: +The protection of journalists, their sources of information and whistle-blowers shall be ensured by law. It is not permitted to breach confidentiality without the consent of the person providing the information except in the process of criminal proceedings and pursuant to a court order. + +This provides equivalent protection under the constitution, if ratified, ensuring that the source protection clause would not be removed from law without referendum. Status: Complete. + +Freedom of Information Act +Access to government documents and records is mandated in Iceland by law 50/1996, (the information act). The current Icelandic FOI law does not conform to CoE convention, and it does not match the standards set in the Aarhus convention for environmental information.13 An updated information act was proposed at Alþingi in 2011, however, due to end of term in late September 2011, the bill did not complete the third reading in parliament and was therefore dropped. It has since been reintroduced with many of the changes merged in and multiple improvements made, however, the newly proposed version does not meet the high standard the bill had previously achieved. IMMI submitted an 8 page report and a 84 page change comparison of the two bills to the constitutional and regulatory committee of Alþingi in February 2012#, criticizing the government’s backpedaling against the changes that had previously been proposed in +12 The exception in article 119 of law 88/2008 applies to the case where criminal proceedings for serious offences cannot be + +resolved without the identity of the source or author being exposed. In such cases, it has been recommended although it is not stipulated in statutes, that the identity first be exposed to the judge in camera, so that the judge can appropriately measure the potential risk to the source against the benefit of the source’s exposure. This is generally considered an acceptable limitation to the otherwise absolute source protection clause. 13 The Aarhus convention was ratified by law 131/2011. + +25 + +parliamentary committee. At the moment, the committee work is proceeding. Cautious optimism suggests that the committee will once again restore the bill to its former state and that it will be accepted. If this is the case, the norm for access to information in Iceland will be altered from being a ‘publish on request’ regime to ‘publish by default’ regime.14 Then, any documents which are not published can be at least listed along with information about why it has been held back and FOI requests can be made for those documents specifically. This change is the most important alteration of many. In the meantime, the new proposed constitution of Iceland has guaranteed a substantial improvement of information rights.15 Status: Pending ratification + +Network Neutrality +Network neutrality is a very broad concept, but generally refers to the idea that each node operating on the network should be considered equal to all others in terms of access. Numerous governments and corporations have instantiated various forms of censorship and containerization#. Due to technical limitations of the IPv4 space, almost every end-user of the Internet can be considered in an aberration of the end-to-end principle often from NAT (Network Address Translation), this makes their nodes second class citizens of the Internet. There is a lot to be done in terms of network neutrality. This is going to be a topic for many years, but for now IMMI has decided to take the first steps. Article 14 of the proposed constitution creates an obligation for the government to protect the Internet, with the same constraints as those on free speech in general. Although those limitations should definitely be questioned, this must be considered a substantial victory, as no country currently even mentions the Internet in its constitution, let alone defends it: +The government shall guarantee conditions that are conducive to open and informed public discussion. Access to the Internet and information technology shall not be curtailed except by a decision of a court of law and on the same substantive conditions that apply to restrictions on the freedom of expression. + +Status: Pending Ratification + +Communications Protection and Communications Data Retention +In the interests of protecting privacy and source confidentiality, protection of communications is a vital ingredient to any coherent information regulation strategy. The protection of communications is a wide project that can be roughly split into two tasks. On the one hand, removing existing threats to communications protection from law, and on the other hand establishing new protections for communications. In January 2012, as Alþingi was debating the adoption of the European Union’s Data Retention Directive, IMMI produced a report outlining the dangers of blanket data retention. In committee, IMMI’s views got the support of the Privacy Directorate, and this led to the parliamentary committee requesting that the directive be postponed indefinitely and that the foreign minister inform the European Union that Iceland would not be implementing the +14 meaning that instead of FOI requests having to be made for each document individually in order to obtain a private copy for + +dissemination, which is a slow and complicated process, the rule will become that government publishes all documents publicly by default, for instance in an online database. 15 http://www.stjornlagarad.is/english/ Articile 15 (English PDF available from the website) + +26 + +directive. This however was not enough, as Iceland has in law a data retention clause (paragraph 3, article 42, of the telecommunications act, 81/2003, amended in 2005), which predates the EU’s Data Retention Directive by a year. IMMI has argued against this clause, both in newspapers and in opinions to parliament, and has drafted a bill for the removal of the act. More recently, IMMI was asked to submit proposals for improvement of certain articles of the telecommunications act being added to introduce a Computer Emergency Response Team (CERT) in Icelandic law, so as to better balance against privacy concerns. In these proposals, IMMI included the following proposal: +Paragraph 3 of article 42, requiring the retention of telecommunication data, is dropped. Appended to article 42 is a new paragraph: Parties other than the sender and the receiver of electronic packet-switched communications are forbidden to inspect or electronically process the payload of the packets. Headers and metadata of packet-switched communications shall only be stored for the period needed to resolve the routing of the communications and security measures as per article 47. a. + +This would effectively remove the data retention provisions from law, if adopted, and simultaneously improve the communications protection by making it a criminal offense to intercept and inspect communications, by methods such as Deep Packet Inspection. It is our hope that this provision be adopted in law. In addition to this development, the proposed constitution of Iceland contains a clause in article 11 expressly forbidding the search of communications, except with a valid court order.16 Status: Pending ratification & in further development + +Intermediary Liability Limitations +The original idea for limited liability for telecommunications intermediaries comes from the development of the Communications Decency Act in the United States around 1996. Since then, the European Union has adopted the e-Commerce Directive, which implements similar limitations. The directive is implemented in Iceland as the electronic commerce and other electronic services act (30/2002), and has equivalent measures. Immediately on exploring the intermediary liability limitations (ILLs) in the Icelandic law, a striking flaw presents itself in the form of “general court orders”. This phrasing is very vague and more importantly lends itself to being understood that district sheriffs, who in Iceland have injunctive powers, can issue takedown orders. IMMI has an interest in tightening this language, and intends to make proposals to do so in the coming months. More importantly though, ILLs have been under attack globally in recent years. A great many changes in strategies relating to intellectual monopoly enforcement, protection of official secrets and political attempts at opening doors for corruption have revolved around eroding ILLs. In order to counteract this trend, IMMI has partnered with several organizations to explore what can be done to define a legal and technical defense of both Internet endpoints and intermediaries that can better withstand political attempts at erosion. This work is in early stages, but some results are scheduled for July 2012. Status: In development +16 http://www.stjornlagarad.is/english/ Articile 11 + +27 + +Libel Tourism Protection +Libel tourism is the act of a company or individual choosing to pursue lawsuits against individuals or companies in a country with a low threshold for libel lawsuits. Legal extortion schemes have been perpetuated with companies being tried in countries such as England and Wales even if the defendant resides elsewhere in the world. This is a form of forum shopping. Implementing laws that prevent or diminish the effects of libel tourism in Iceland will protect Icelandic citizens and residents from this kind of forum shopping. It’s fairly important that people can predict with some certainty where, if anywhere, they will be taken to court. This also applies to companies, who base a lot of their operational security on knowing the legal environment. In this way, ending libel tourism will encourage foreign investment and provide financial security for companies operating here already. For now, Iceland has a mechanism. As a signatory of the Lugano treaty, Icelandic courts can decide not to uphold foreign court verdicts which go against the rule of law in Iceland. This means that a libel verdict from a foreign country can be challenged in an Icelandic court on the basis of article 34 of the Lugano treaty if it comes from a country with a substantially different burden of proof for libel than Iceland does. This has not been tested, but is currently our best bet. In the meantime, British libel reform efforts are going well, and coupled with a well written libel law in Iceland, may be sufficient to put an end to libel tourism - at least in Iceland. When that is finished, the bigger issue of International Forum Shopping remains. Status: Complete / Untested solution + +Libel Reform and Publishing Liability Limitations +The media law from 2011 introduced new rules regarding media liability. However, since its adoption, a number of court cases have been heard in Reykjavík which cast a shadow on the reform and point at a deeper structural fault in the current libel regime. Although media liability is defined in the print law and superseded by the media law, the terms of libel itself are defined in chapter XXV of the criminal act, which treats violations of privacy and libel as equal criminal offenses. Under the criminal act, it is illegal to make truthful accusations, to offend somebody publicly or privately, or to make unfavorable comments about deceased persons. As these are criminal offenses, they have assigned imprisonment penalties from 1 to 4 years, as well as fines, although imprisonment is rarely used in practice. The global trend in libel law is to move it away from criminal sanctions and into tort law, making it a civil offense, punishable only by fines. Alongside this, the scope of libel is to be narrowed, making the truth a valid defense and ensuring that people cannot be brought to charge for making value judgements against another’s character. It should be legal to call a person a jerk, although it is questionable whether you can call somebody a murderous jerk without backing it up with evidence. IMMI has completed the basic research needed to implement these changes and drafted a bill which aim to alleviate at least most of the existing concerns. Due to parliamentary scheduling rules, it cannot be introduced until the autumn of 2012. Status: Pending + +28 + +Whistleblower Protection +A whistleblower is a person that tries to disclose or report information on situations affecting the public that may evidence of criminal activity. Protection for individuals reporting institutionalized corruption is paramount. They may be providing relevant information to the public record, such as data or testimony about relevant matters like public health, passed incidents, crime, government biases, democracy undermining practices, violations of constitutional rights, corruption and bribery. Threats to whistleblowers come from corporate interests, governmental interests, criminal activities, biases inherent in legal and judicial officials and systems. Whistleblower protections must include a right to anonymity, physical, financial and social security. As the threat models, institutional settings and personal complexities of whistleblowing vary widely, this is perhaps the most complicated of IMMI’s tasks. While a lot of development work has been put into this issue already, we feel that the adequate protection of whistleblowers cannot be completed without deep investigation. As one core issue, the idea of corporate personhood must be challenged. Disregarding other arguments for doing so, it is very important that it not be decided that companies and other corporate vehicles have a right to privacy, as this would pit whistleblower activities up against privacy and data protection law, the sanctity of which is of equal importance. It’s a fight nobody should have to fight. That said, there has been no such ruling in Iceland and it is not foreseeable that that will change; it’s merely one issue of many that must be monitored and pro-actively taken action on.17 Status: In development + +Prior Restraint Limitations +Prior restraint is banned under article 73 of the Icelandic constitution. A slightly stronger implementation of prior restraint limitations are introduced in the new constitution, which is pending ratification. Outside of constitutional guarantees, IMMI also has an interest in protecting against abuse of injunctions by sheriffs, who still have injunctive authorities as a holdover from their now abolished tribunal role. This fits in with the discussion of Intermediary Liability Limitations stated above, and IMMI expects to be able to address these two concerns jointly. Status: Pending ratification + +Virtual Limited Liability Companies +Icelandic corporate law is currently somewhat hostile to foreign ownership from outside the European Economic Area (EEA). The idea of Virtual Limited Liability Companies is to allow for virtually defined corporate entities, whereby the ownership is somewhat ephemeral, as long as the owners adhere to certain Icelandic transparency requirements. In that way, a virtually operated commpany would have tax obligations and operational safe harbor rights in Iceland like any other company, but gets to operate virtually in exchange for some strict guarantees of transparency and such. + +17 For more detail see:: http://immi.is/Press_Release:_IMMI_Status_Update,_April_2012 + +29 + +This issue has more to do with creating a pleasant investment environment than explicitly improving the information regime in Iceland. For that reason, it has been relegated to the set of the last things we aim to accomplish in this set, and is therefore on hiatus for now. Status: On hiatus. + +Selected Bibliography +● Orkustefna fyrir Ísland; Stýrihópur um mótun heildstæðrar orkustefnu; http:// www.nea.is/media/gagnasofn/Orkustefna-fyrir-Island.pdf Iceland. What a Great Place to Put a Data Center; Verne Global / Martin Hannigan; http://www.uknof.org.uk/uknof12/Hanningan-Undersea.pdf Orkuspá fyrir Ísland 2010-2050; Orkustofnun; http://www.os.is/gogn/Skyrslur/OS2010/OS-2010-07.pdf Benchmarking Study on Iceland as a Location for Data Centre Activity; Invest in Iceland Agency; http://www.invest.is/resources/files/invest.is/BDC%20Report.pdf Mikil arðsemi af raforkusölu til stóriðju; Vísir; http://www.visir.is/mikil-ardsemi-afraforkusolu-til-storidju/article/2011712209851 Policy Mix for Innovation in Iceland; OECD; http://www.oecd.org/dataoecd/15/62/ 36648108.pdf ● + +● + +● + +● + +● + +30 + +
\ No newline at end of file diff --git a/report/Greens-IslandsofResilience_ind.html b/report/Greens-IslandsofResilience_ind.html new file mode 100644 index 0000000..9ba354c --- /dev/null +++ b/report/Greens-IslandsofResilience_ind.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML> +<HEAD> +<TITLE></TITLE> +</HEAD> +<BODY> +<A href="Greens-IslandsofResiliences.html#1" target="contents" >Page 1</a><br> +<A href="Greens-IslandsofResiliences.html#2" target="contents" >Page 2</a><br> +<A href="Greens-IslandsofResiliences.html#3" target="contents" >Page 3</a><br> +<A href="Greens-IslandsofResiliences.html#4" target="contents" >Page 4</a><br> +<A href="Greens-IslandsofResiliences.html#5" target="contents" >Page 5</a><br> +<A href="Greens-IslandsofResiliences.html#6" target="contents" >Page 6</a><br> +<A href="Greens-IslandsofResiliences.html#7" target="contents" >Page 7</a><br> +<A href="Greens-IslandsofResiliences.html#8" target="contents" >Page 8</a><br> +<A href="Greens-IslandsofResiliences.html#9" target="contents" >Page 9</a><br> +<A href="Greens-IslandsofResiliences.html#10" target="contents" >Page 10</a><br> +<A href="Greens-IslandsofResiliences.html#11" target="contents" >Page 11</a><br> +<A href="Greens-IslandsofResiliences.html#12" target="contents" >Page 12</a><br> +<A href="Greens-IslandsofResiliences.html#13" target="contents" >Page 13</a><br> +<A href="Greens-IslandsofResiliences.html#14" target="contents" >Page 14</a><br> +<A href="Greens-IslandsofResiliences.html#15" target="contents" >Page 15</a><br> +<A href="Greens-IslandsofResiliences.html#16" target="contents" >Page 16</a><br> +<A href="Greens-IslandsofResiliences.html#17" target="contents" >Page 17</a><br> +<A href="Greens-IslandsofResiliences.html#18" target="contents" >Page 18</a><br> +<A href="Greens-IslandsofResiliences.html#19" target="contents" >Page 19</a><br> +<A href="Greens-IslandsofResiliences.html#20" target="contents" >Page 20</a><br> +<A href="Greens-IslandsofResiliences.html#21" target="contents" >Page 21</a><br> +<A href="Greens-IslandsofResiliences.html#22" target="contents" >Page 22</a><br> +<A href="Greens-IslandsofResiliences.html#23" target="contents" >Page 23</a><br> +<A href="Greens-IslandsofResiliences.html#24" target="contents" >Page 24</a><br> +<A href="Greens-IslandsofResiliences.html#25" target="contents" >Page 25</a><br> +<A href="Greens-IslandsofResiliences.html#26" target="contents" >Page 26</a><br> +<A href="Greens-IslandsofResiliences.html#27" target="contents" >Page 27</a><br> +<A href="Greens-IslandsofResiliences.html#28" target="contents" >Page 28</a><br> +<A href="Greens-IslandsofResiliences.html#29" target="contents" >Page 29</a><br> +<A href="Greens-IslandsofResiliences.html#30" target="contents" >Page 30</a><br> +</BODY> +</HTML> diff --git a/report/Greens-IslandsofResiliences.html b/report/Greens-IslandsofResiliences.html new file mode 100644 index 0000000..56b0ac5 --- /dev/null +++ b/report/Greens-IslandsofResiliences.html @@ -0,0 +1,475 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML> +<HEAD> + <!-- <script src='/annotator/jquery.min.js'></script> --> + <!-- <script src='/annotator/annotator-full.min.js'></script> --> + <!-- <script src='/annotator/plugins/store.js'></script> --> + <!-- <link rel='stylesheet' href='/annotator/annotator.min.css'> --> +<TITLE></TITLE> +</HEAD> +<BODY> +<A name=1></a><IMG src="Greens-IslandsofResilience-1.png"><br> + <br> <br> + <br> +<b>Islands of Resilience</b><br> +<b>Comparative Model for Energy, Connectivity and Jurisdiction</b><br> +<b>Realizing European ICT possibilities through a case study of Iceland</b><br> + <br> + <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> + <br> <br> <br> +Smári McCarthy and Eleanor Saitta<br> + <br> <br> <br> <br> <br> <br> +1<br> +<hr> +<A name=2></a><IMG src="Greens-IslandsofResilience-2.png"><br> + <br>Prepared at the request of:<br> +on behalf of Members of the European Parliament <br>Christian Engström, Indrek Tarand, Carl Schlyter, Sandrine Bélier, Karima Delli, Eva Lichtenberger, Raül <br>Romeva i Rueda, Heide Rühle, Judith Sargentini, Bas Eickhout and Marije Cornelissen<br> <br> <br><b> <br> <br>Prepared at the request of The Greens / European Free Alliance<br> <br>Authors:</b><br> +<b>On behalf of Members of the European Parliament:</b><br> +<b> </b>Smári McCarthy<br> + Christian Engström<br> + Eleanor Saitta<br> + Indrek Tarand<br> Carl Schlyter<br> +<b>Contributing Researchers:</b><br> + Sandrine Bélier<br> +<b> </b>Guðjón Idir<br> + Karmima Delli<br> + Jason Scott<br> + Eva Lichtenberger<br> Paül Romeva i Rueda<br> Heide Rühle<br> Judith Sargentini<br> Bas Eickhout<br> Marije Cornelissen<br> +<b>Produced by:<br> </b><br> +<b> <br> </b><br> +<b> International Modern Media Institute<br></b> Laugavegur 3<br> 101 Reykjavík<br> Iceland<br> + <br> <br> <br> + <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> +2<br> +<hr> +<A name=3></a><IMG src="Greens-IslandsofResilience-3.png"><br> + <br> <br> <br> <br> + Distributed under the terms of the <br> +Creative Commons Attribution-Sharealike 3.0-unported License<br> +<b> </b><br> +3<br> +<hr> +<A name=4></a><b>Abstract</b><br> +Locale is rapidly becoming one of the most important competitive differentiators in the <br>provision of cloud-based information technology services. Broadly speaking, three <br>categories of issues define a locale's fitness for hosting the cloud: energy, connectivity, and <br>jurisdiction.<br> +Energy is the largest cost center for most cloud hosts. Beyond price per kilowatt hour, <br>hosting companies must consider redundant network availability, power grid resilience, <br>environmental sustainability, climate, and equipment cooling requirements as core parts of <br>their energy strategy.<br> +Connectivity is clearly essential for hosts, and differentiating factors here include total <br>installed bandwidth, current utilized bandwidth, hub redundancy, international uplink <br>redundancy, round trip latency, traffic shaping and network neutrality.<br> +Jurisdictional issues are an area of emerging concern and awareness for cloud hosts, where <br>the landscape is shifting rapidly. Hosting companies are deeply affected by intermediary <br>liability, hosting liability, state and corporate surveillance, state and corporate censorship, the <br>accessibility of and cost of interacting with courts, corruption, and socioeconomic stability.<br> +This report considers Iceland's relative competitive advantages and drawbacks as a hosting <br>locale relating to these issues.<br> +4<br> +<hr> +<A name=5></a><b>Table of Contents</b><br> +<a href="Greens-IslandsofResiliences.html#4">Abstract</a><br> +<a href="Greens-IslandsofResiliences.html#6">Introduction<br></a><a href="Greens-IslandsofResiliences.html#7">Energy</a><br> +<a href="Greens-IslandsofResiliences.html#7">Energy Sources<br></a><a href="Greens-IslandsofResiliences.html#9">Energy Utilization and Pricing<br></a><a href="Greens-IslandsofResiliences.html#10">Grid Resilience and Redundancy<br></a><a href="Greens-IslandsofResiliences.html#11">Climate and Cooling</a><br> +<a href="Greens-IslandsofResiliences.html#12">Connectivity</a><br> +<a href="Greens-IslandsofResiliences.html#12">Submarine Cables<br></a><a href="Greens-IslandsofResiliences.html#13">Installed and Utilized Capacity<br></a><a href="Greens-IslandsofResiliences.html#14">Domestic Network<br></a><a href="Greens-IslandsofResiliences.html#15">Round Trip Latency<br>Network Security<br>Future Connectivity Developments</a><br> +<a href="Greens-IslandsofResiliences.html#18">Jurisdiction</a><br> +<a href="Greens-IslandsofResiliences.html#18">Commercial Issues<br>Overview of Icelandic Information Regulation<br></a><a href="Greens-IslandsofResiliences.html#19">Compatibility with European Union Directives<br>Intermediary Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#20">Surveillance<br></a><a href="Greens-IslandsofResiliences.html#22">Censorship<br></a><a href="Greens-IslandsofResiliences.html#19">Data Protection<br></a><a href="Greens-IslandsofResiliences.html#23">Human Resources<br></a><a href="Greens-IslandsofResiliences.html#24">Icelandic Modern Media Initiative<br></a><a href="Greens-IslandsofResiliences.html#25">Source Protection<br>Freedom of Information Act<br></a><a href="Greens-IslandsofResiliences.html#26">Network Neutrality<br>Communications Protection and Communications Data Retention<br></a><a href="Greens-IslandsofResiliences.html#27">Intermediary Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#28">Libel Tourism Protection<br>Libel Reform and Publishing Liability Limitations<br></a><a href="Greens-IslandsofResiliences.html#29">Whistleblower Protection<br>Prior Restraint Limitations<br>Virtual Limited Liability Companies</a><br> +<a href="Greens-IslandsofResiliences.html#30">Selected Bibliography</a><br> + <br> +5<br> +<hr> +<A name=6></a><b>Introduction</b><br> +This preliminary study is intended to give a birds-eye view of the primary factors pertaining <br>to energy, connectivity and jurisdiction in Iceland, as applicable to ICT1 growth in general <br>and cloud hosting in particular.. It is necessarily narrow in scope and largely based on <br>aggregating publicly available information. As a result, some inaccuracies may exist, largely <br>due to poor information made available by private actors. A more in-depth follow up study <br>will remedy this by seeking out more detailed expert insights, detailed statistics, and <br>comparing against sourced cases.<br> +Regardless, this report clearly shows the advantages Iceland has in relation to ICTs, as well <br>as showing some of its potential weaknesses and possible remedies.<br> +Iceland’s key strengths are:<br> +●<br> +Cheap and abundant energy generated from green, renewable, sustainable and <br>resilient energy sources, distributed over a well designed and resilient power grid.<br> +●<br> +Increasingly good connectivity to the outside world with reasonable redundancy <br>and a large amount of unused capacity available for expansion, and a very highly <br>developed internal network with high resiliency.<br> +●<br> +An advanced and stable jurisdiction, with clear information rights and regulations, <br>well structured administration, and well informed governing bodies.<br> +Iceland’s main weaknesses are:<br> +●<br> +Scale discrepancies both in energy generation and consumption which could <br>potentially threaten grid resilience in extreme cases. This can be improved with <br>further diversification of energy consumers, such as large-scale ICT deployments.<br> +●<br> +Iceland’s data connectivity is provided by a relatively small number of submarine <br>cables connecting to the outside world, creating some network precarity. This is <br>currently being improved with the addition of new cables.<br> +●<br> +International data transport bandwidth through submarine cables is currently <br>expensive. This could be mitigated by further investments, subsidies, or other <br>methods to reduce the price for connection, with the intention of increasing the <br>overall usage.<br> +●<br> +Iceland has similar issues with blanket communications surveillance as in the EU, <br>which make it less attractive for hosting than countries where communications are <br>not monitored. This is hard to fix without political will in the EU.<br> +●<br> +Wildcard properties exist in the implementation of the e-Commerce directive, <br>connected to injunctive powers that district sheriffs still have. This can be solved by <br>clarifying the instances under which injunctions can be made, and restricting the <br>issuing authority to courts.<br> +Together Iceland’s key strengths form a very sound basis for the expansion of ICT in <br>Iceland, especially cloud hosting. Most of the weaknesses in Iceland’s position are either <br> +1 Information and Communication Technologies<br> +6<br> +<hr> +<A name=7></a>structural weaknesses common amongst all EU member states or are relatively trivial issues <br>which can be resolved easily.<br> + <br> +<b>Energy</b><br> +Energy is the largest cost center for most cloud hosting companies. Beyond price per <br>kilowatt hour, hosting companies must consider redundant network availability, power grid <br>resilience, environmental sustainability, climate, and equipment cooling requirements as <br>core parts of their energy strategy. <br> +In our analytical model for energy, we asked the following questions:<br> +<b>How prevalent are renewable energy sources in current electrical production?</b><br> +1. Less than 3% of all energy production based on renewable energy sources.<br>2. Between 4 and 40% of all energy production based on renewable energy sources.<br>3. Between 40 and 60% of all energy production based on renewable energy sources.<br>4. Between 60 and 97% of all energy production based on renewable energy sources.<br>5. More than 97% of all energy production based on renewable energy sources.<br> +<b>How much can current electrical production be increased without the construction of <br>new (not currently planned) power plants?</b><br> +1. By less than 5% of current average power use.<br>2. By less than 25% of current average power use.<br>3. By less than 50% of current average power use.<br>4. By more than 75% of current average power use<br>5. By more than 100% of current average power use.<br> +<b>What is the annual average price per kiloWatt hour for a commercial customer using <br>less than 2 GWh/year, including generation and distribution?</b><br> +1. > €0.20/kWh<br>2. > €0.14/kWh<br>3. <= €0.14/kWh<br>4. < €0.09/kWh<br>5. < €0.07/kWh<br> + <br> +Iceland's national energy plan was last updated in November of 2011.<br> +<b>Energy Sources</b><br> +7<br> +<hr> +<A name=8></a>In 2009, Iceland’s total energy utilization was roughly 240 PJ2 of primary energy sources, <br>which equates to roughly 67 TWh3. The primary energy sources were, in order of magnitude: <br>geothermal, hydroelectric, oil, and coal. Geothermal energy use was greater than all other <br>energy sources combined, while coal use was relatively minuscule. Energy use in Iceland <br>has risen substantially since the 1940’s with the industrialization of the country, which up <br>until roughly 1960 was almost entirely rural.<br> +A vast amount of geothermal energy is used for house-heating (45%), followed by electricity <br>production (39%). In addition, it is used for snow-melting, swimming pools, fish farming, <br>greenhouses and for industrial purposes. In 2009 a total of 22.3 PJ of geothermal energy <br>was used for electricity production.<br> +Only 18% of Iceland’s primary energy utilization comes from petrochemicals, of which <br>90% is oil and 10% coal. The majority of the coal is used by the iron smelting plant at <br>Grundartangi, with other industrial processes consuming the remainder. Almost no natural <br>gas is used in Iceland. Roughly 660 thousand tonnes of oil were used in Iceland in 2009, <br>of which 41% went to powering cars, 18% for aircraft, and 29% for fishing. Petroleum use <br>for cars has increased by 64% since 1990 in Iceland, contributing to the overall increase in <br>use. Oil is not used for electricity production except for some emergency backup generators. <br>Some towns have backup generators capable of sustaining basic operations throughout the <br>town temporarily, but the redundancy of the electricity grid renders this use minimal.<br> +As a result, the electricity production in Iceland is almost exclusively from geothermal and <br>hydroelectric primary energy sources. The theoretical maximum energy production in Iceland <br>is 64 TWh per year from hydroelectric sources and between 10 and 30 TWh per year from <br>geothermal sources. However, for natural protection purposes substantial regions of Iceland <br>have been classified as natural reserves, parks, or other protected areas. In addition, certain <br>areas have been classified as energy reserves that will not be used in coming years, in part <br>for sustainability reasons. This lowers the effective energy available for production.<br> +The current installed production capacity is 12.3 TWh per year for hydroelectric power, <br>and 4.6 TWh per year for geothermal power. After subtracting the protected and reserve <br>production categories, the total available hydroelectric and geothermal energy available for <br>future expansion is 11.91 TWh per year.<br> +Variability of energy pricing and availability is a critical issue for data centers. As Iceland has <br>little or no hydrocarbon-based electricity production, electricity prices are largely unaffected <br>by fluctuations in the oil, gas, and coal markets, and will not be affected by supply chain <br>interruptions in these markets. This provides a critical level of energy resilience for the <br>Icelandic electrical system at the supply end. Cheap, reliable, resilience, and predictably <br>priced energy sources are, in combination, a significant advantage for potential hosting <br>companies.<br> +2 Petajoules. 1 PJ = 1015 J<br>3 Terawatt hours. 1 TWh = 1012 W·h<br> +8<br> +<hr> +<A name=9></a><IMG src="Greens-IslandsofResilience-9.png"><br> +(Primary energy sources in Iceland 1940-2009. Inset: Proportional use. Top to bottom: Coal, <br> +oil, geothermal and hydroelectric. Source: Orkuáætlun 2011)<br> +<b>Energy Utilization and Pricing</b><br> +In 2009, 74% of produced electricity in Iceland went to the aluminum industry, with roughly <br>4.9 TWh/year to Alcoa Fjarðarál, 4.0 TWh/year to Rio Tinto Alcan, and 4.0 TWh/year to <br>Norðurál. 6% of produced electricity was used in the services industry, 5% for iron smelting <br>plants, 5% for household appliances, 4% for utilities, 4% for general industries, and 1% in <br>agriculture.<br> +9<br> +<hr> +<A name=10></a><IMG src="Greens-IslandsofResilience-10.png"><br> +(Electricity use 2009. From top to bottom: Fisheries, agriculture, general industries, district <br> +heating, home use, steel mills, services and aluminum industry. Source: Orkuátælun 2011)<br> +Energy use for household appliances accounted for 627 GWh in 2009, accounting for 7.1 <br>B ISK (€44.3 million) in consumer use, including VAT. Average household electricity costs <br>in Reykjavík are 11.30 ISK/kWh, or €0.07/kWh. This rate is substantially higher than the <br>price for industry. In the case of the aluminum smelters, these rates are 30% lower than <br>the European average4, although the energy prices for aluminum smelting have been <br>confidential. Alcoa Fjarðarál reportedly paid between 28-35 USD/MWh in 2006, or roughly <br>€0.044/kWh at 2006 exchange rates.<br> +(Main power lines and power plants. Source: Landsnet. For realtime energy distribution <br> +<a href="http://landsnet.is/raforkukerfid/kerfisstjornun/aflflutningurnuna/">figures, see http://landsnet.is/raforkukerfid/kerfisstjornun/aflflutningurnuna/</a> )<br> +<b>Grid Resilience and Redundancy</b><br> +Power grid resilience in Iceland is fairly high. The 61 power stations in Iceland are connected <br>with a circular grid which goes around the country, providing basic redundancy. In addition, <br>most power stations on the southwest corner have further grid redundancy simply due to the <br>higher population density and related network effects.<br> +There are 50 hydroelectric power stations in Iceland, mostly small. There are 7 geothermal <br>power plants, and 4 fueled power plants—one that generates power through garbage <br>incineration, two diesel powered, and one methane plant.<br> +4 <a href="http://www.mbl.is/greinasafn/grein/1026890/">http://www.mbl.is/greinasafn/grein/1026890/</a><br> +10<br> +<hr> +<A name=11></a>Some parts of the country, most notably the western fjords, are very poorly connected into <br>the grid and frequently get disconnected during the winter months due to poor weather <br>conditions. Power availability is maintained primarily with diesel generators when this <br>happens. Similarly, Flatey and Grímsey, two populated islands off the Icelandic west <br>and north coasts, respectively, are not connected to the main power grid, but are instead <br>powered by diesel generators.<br> +Resilience is quite high on the southwest corner, where most economic activity is situated, <br>but the east coast has also improved substantially in recent years due to developments in <br>relation to the Kárahnjúkar dam project and the Alcoa Fjarðarál aluminum smelter.<br> +The overall infrastructural elasticity on the power grid is high enough to handle most types of <br>outages due to line failures, power station shutdowns and disasters, but some very extreme <br>edge cases exist where grid resilience is threatened, notably sudden outages in production <br>units such as Kárahnjúkavirkjun, which could potentially lead to chain reactions of failures, <br>similar to the power outage at Itaipu power station in Brazil on 21 January, 2002. In general, <br>larger plants require larger transmission lines and inevitably cause more widespread <br>damage when they do fail. Similarly, larger consumption units may threaten grid resilience. <br>For instance, almost one third of Iceland’s total electricity consumption is used by a single <br>aluminum smelter, meaning that the unlikely edge case of an abrupt total disconnect would <br>momentarily increase the available electricity substantially. This kind of pathological outage <br>may however be mitigated by various means, not least the further diversification of power <br>production and consumption.<br> +<b>Climate and Cooling</b><br> +Estimates for data center energy utilization from IBM5 suggest that roughly half of all energy <br>is used on cooling, and an additional fourth on heat waste, mostly due to internal electrical <br>resistance in system components. Therefore, a priori energy waste in typical data centers <br>is roughly 75% before any actual computation occurs. Mitigating this waste is clearly crucial <br>to the efficiency, cost-effectiveness and sustainability of any data center. The proportional <br>cost of cooling for data centers has risen dramatically over the past few years, relative to the <br>cost of hardware. Reduction in hardware deployments due to virtualization and increases <br>in system density have dramatically reduced equipment purchase costs as a proportion <br>of operating costs. As a result of this, component-level heat waste mitigation is a primary <br>industry research goal.<br> +Increasingly, large data center operators have started to look to areas with relatively cold <br>climates. Cooling costs are significantly lower in cold areas, and most energy use in data <br>centers in those areas that goes to cooling is attributable to airflow management and de-<br>humidification rather than direct refrigeration. An example of this is the planned data center <br>that Facebook, Inc., is building near Luleå, Sweden6.<br> +5 https://www-950.ibm.com/events/wwe/grp/grp030.nsf/vLookupPDFs/IBM%20BladeCenter%20 <br>Product_Tikiri/$file/IBM%20BladeCenter%20Product_Tikiri.pdf<br>6 http://online.wsj.com/article/BT-CO-20111215-712478.html<br> +11<br> +<hr> +<A name=12></a>In this respect, Iceland's climate is clear benefit for cloud hosting providers even though <br>it’s not nearly as cold as some more northerly locales. The oceanic climate contributes to <br>relatively stable temperatures over the year. Apart from insolation, there is relatively little <br>seasonal variation in the factors that contribute to data center cooling. On the negative <br>side, Iceland’s climate is generally rather humid, with an annual average of roughly 70.75%. <br>In order for outside air to be used for cooling purposes some dehumidification would be <br>needed.<br> +<b>Variable</b><br> +<b>Jan</b><br> +<b>Feb</b><br> +<b>Mar</b><br> +<b>Apr</b><br> +<b>May</b><br> +<b>Jun</b><br> +<b>Jul</b><br> +<b>Aug</b><br> +<b>Sep</b><br> +<b>Oct</b><br> +<b>Nov</b><br> +<b>Dec</b><br> +<b>Average temp. °C</b><br> +-2.60<br> +-2.59<br> +-1.59<br> +1.37<br> +5.24<br> +8.49<br> +10.31<br> +9.58<br> +6.29<br> +2.75<br> +-0.04<br> +-1.91<br> +<b>Insolation, kWh/m²/day</b><br> +0.11<br> +0.53<br> +1.31<br> +2.77<br> +4.11<br> +4.71<br> +4.16<br> +3.27<br> +2.17<br> +0.97<br> +0.25<br> +0.03<br> +<b>Wind speed, m/s</b><br> +10.20<br> +10.27<br> +9.63<br> +8.42<br> +7.18<br> +6.51<br> +6.40<br> +6.63<br> +7.62<br> +8.85<br> +8.76<br> +10.41<br> +<b>Humidity, %</b><br> +80<br> +78<br> +71<br> +69<br> +66<br> +63<br> +61<br> +67<br> +72<br> +77<br> +79.0<br> +(Reykjavík average temperature, insolation and windspeed, source: Gaisma.com)<br> +<b>Connectivity</b><br> +Iceland’s connectivity to the outside world has improved substantially over the last two <br>decades. Since 1994, submarine fiber optics connections have existed to the Europe <br>and North America. Since 2004, domestic Internet connectivity has gone up from 81% of <br>households to 90%, compared to EU growth from 41% to 65%. Of the 10% of Icelandic <br>households not connected to the Internet, 40% (4% of the total) claim not to want an Internet <br>connection, whereas 25% (2.5% of the total) say it is due to price of connectivity.<br> +<b>Submarine Cables</b><br> +As of November 2011, there are four fiber optics cable links to Iceland: DanIce, Greenland <br>Connect, FarIce, and CANTAT-3, in order of decreasing capacity. Several projects have <br>been proposed to increase the number of fiber optics links to Iceland; of them, Emerald <br>Express is the furthest towards completion.<br> +<b>Fiber optic cable</b><br> +<b>Owner</b><br> +<b>Total capacity</b><br> +<b>Installed capacity</b><br> +<b>Utilized capacity</b><br> +CANTAT-3<br> +Síminn<br> +7.5 Gb/s<br> +None<br> +Decommissioned<br> +FarIce<br> +Farice ehf<br> +720 Gb/s<br> +Unknown<br> + <br> +Danice<br> +Farice ehf<br> +5.2 Tb/s<br> +~20 Gb/s<br> + <br> +Greenland connect<br> +TELE Greenland<br> +1.9 Tb/s<br> +Unknown<br> + <br> +Emerald Express<br> +Emerald Networks<br> +58.6 Tb/s (planned)<br> +N/A<br> +Under construction<br> + <br>The CANTAT-3 was the first fiber optics cable connection to Iceland, greatly increasing the <br>country’s telecommunications capacity. Installed in 1994, it was disrupted in late 2006 and <br>was not returned to full capacity until mid-year 2007. The CANTAT-3 cable was retired in <br> +12<br> +<hr> +<A name=13></a>late 2010, due to age, operational costs, and low capacity.<br> +Farice ehf operates two fiber-optic submarine systems as of late 2011. It is partially owned <br>by the Icelandic state and Arion bank, but a 20% stake is held by Faroese shareholders.<br> +Their first system, FarIce, lies between Seyðisfjörður, Iceland and Dunnet Bay, Scotland with <br>a layover in Funningsfjørður in the Faroe Islands. From these locations it is backhauled to <br>Reykjavík, Edinburgh and Tórshavn respectively. It traverses a roughly 1,400 km route using <br>Dense Wavelength Division Multiplexing (DWDM) transmission technology. It has been in <br>use since 2004 and is currently Iceland’s main communications line. Currently only roughly <br>3% of FarIce’s total potential capacity is installed, according to available sources.<br> +Farice ehf’s second system, Danice, was laid in 2008 and connects Landeyjarsandur in <br>Iceland to Blaabjerg, Denmark, with a planned expansion to Eemshaven, Netherlands. <br>Despite having significantly greater capacity than FarIce, it is much less utilized and mostly <br>used as a redundancy cable for FarIce.<br> +The most recent fiber optic connection to Iceland is through Greenland Connect, installed <br>in 2009 and owned and operated by TELE Greenland. It connects Milton, Trinity Bay, <br>Newfoundland and Labrador, Canada, to Nuuk, Greenland, Qaqortoq, Greenland, and <br>Landeyjarsandur, Iceland. It contains two fiber pairs specified for 128 wavelengths carrying <br>10 Gb/s each. As its landing point in Iceland is co-located with the Danice cable, direct <br>bridging between them is possible.<br> +The Emerald Express is a planned 6x100x100 Gb/s fiber optics cable from the United States <br>to Ireland with an offshoot to the Reykjanes peninsula in Iceland. Being constructed by <br>Emerald Atlantis, Ltd. and TE SubCom, Ltd., it is scheduled to enter service in late 2012 and <br>intends to facilitate ultra-low-latency connections to Europe and North America. Its Iceland <br>branch will presumably carry two pairs, one for connection to Ireland, the other to the United <br>States; the last pair connecting the US to Ireland directly.<br> +<b>Installed and Utilized Capacity</b><br> +Total capacity of installed fiber optic cables is currently around 7.8 Tb/s, not counting the <br>CANTAT-3 cable. However, endpoint equipment has only been installed for a fraction of this <br>capacity. The installed capacity is not known, but conservative estimates put it close to 200 <br>Gb/s, or around 2.5% of the total capacity.<br> +Current utilized capacity is also unknown, but various estimates can be used to arrive at a <br>figure. The combined foreign connectivity of universities and secondary colleges in Iceland is <br>currently 16.5 Gb/s through RHNet. As RHNet typically accounts for between 14.2%-14.9% <br>of total traffic through the Reykjavík Internet Exchange, it can be estimated that total foreign <br>bandwidth consumption is close to 120 Gb/s. This number may turn out to be severely <br>understated, but more detailed data is not available. <br> +13<br> +<hr> +<A name=14></a><IMG src="Greens-IslandsofResilience-14.png"><br> +(Map of proposed Emerald Express cable. Source: Emerald Networks)<br> + <br>Uplink redundancy to Europe is good due to the FarIce and DanIce cables going separate <br>routes. However, redundancy to the US is poor, since the only reliable connection is through <br>Greenland. Currently, in the case of an outage, rerouting would have to be through Europe—<br>presumably London. US redundancy will improve substantially when the Emerald Express is <br>completed. <br> <br>Overall uplink redundancy is becoming better, providing more infrastructural elasticity <br>and greater resilience. The older emergency satellite redundancy is slowly becoming less <br>relevant and is probably not realistically needed.<br> <br> +<b>Domestic Network</b><br> +The main domestic telecommunications hub is RIX (Reykjavík Internet Exchange), which is <br>operated by ISNIC. This hub connects the main Internet service providers and data centers <br>together.<br> +In general, domestic fiber optics and copper networks are operated by Míla, Fjarski and <br>Gagnaveita Reykjavíkur. Míla is a subsidiary of the formerly state-run phone company (since <br>privatized, currently known as Síminn). It operates a fiber optics ring around the country <br>which were installed by NATO, but has expanded it substantially and introduced additional <br>redundancy. It also operates fiber and copper networks in most settlements.<br> +Fjarki is a subsidiary of Landsvirkjun, the (mostly) state owned power company.<br> +14<br> +<hr> +<A name=15></a>Gagnaveita Reykjavíkur is a subsidiary of Orkuveita Reykjavíkur, the Reykjavík city <br>power company. It provides mostly fiber to the home connections but also operates some <br>communications backbones within the Reykjavík metropolitan area.<br> +<b>Round Trip Latency</b><br> +Round-trip latency to Europe is generally low, but varies widely depending on destination city <br>and provider, origin location and provider, and various other variables. Generally speaking <br>the network latency has low stochasticity (“jitter”), averaging around 4ms (milliseconds), <br>suggesting natural latency rather than network congestion.<br> +We did informal testing of multiple origin and endpoints on known locations to arrive at <br>some idea of latency trends. Typical round-trip times to London are close to 55ms; 31ms to <br>Copenhagen. Connections to Oslo trend around 70ms, Berlin around 71ms, and to Madrid <br>74ms. On connections closer to the uplinks, slightly better times were observed, while <br>household Internet connections showed slightly worse round-trip times. As such, none of this <br>was particularly unexpected.<br> +The theoretical roundtrip time for a photon traveling over the big circle route from Reykjavík <br>to London is 12.64ms; to Copenhagen it is 14.02ms. Therefore the Copenhagen connection <br>is as close to reasonable expectations as is possible, while the London connection could <br>possibly be improved. The FarIce endpoint is in Edinburgh, so packets bound for London <br>must traverse potentially congested and slow UK networks after their initial arrival.<br> +<b>Network Security</b><br> +No major network security incidents have occurred in Iceland. Denial of Service attacks <br>happen on a relatively small scale on a fairly regular basis, but are easily mitigated with <br>standard techniques. No large scale online attacks have occurred in recent years, although <br>in some cases competent attackers have been able to disable individual service providers <br>for a number of hours. This is not considered to be more frequent in Iceland than in the EU, <br>based on anecdotal evidence.<br> +Individual servers and home computers are moderately well protected from security threats <br>compared to other countries, owing to a fair degree of awareness, a comparatively low <br>incidence of pirated operating system software, and generally well configured routers on <br>home connections. That said, many computers run outdated operating systems with severe <br>security vulnerabilities, and many websites operate outdated web platforms, in particular <br>Wordpress and Joomla, which are common staging grounds for attack.<br> +The Icelandic government is acutely aware of the threats posed to the security of networks, <br>and in recently proposed amendments to the telecommunications act, provisions are made <br>for the establishment of a CERT (Computer Emergency Response Team). This should <br>increase multi-party coordination and responsiveness in the case of online attacks or other <br>ICT-related emergency, and thus overall communications resilience.<br> +<b>Future Connectivity Developments</b><br> +A number of proposals have been made for future developments in connectivity in Iceland. <br> +15<br> +<hr> +<A name=16></a><IMG src="Greens-IslandsofResilience-16.png"><br> + <br>One example which has frequently been brought up is that Iceland’s geographical situation <br>makes it ideal for connecting the American east coast, Europe, and East Asia, due to <br>the receding polar ice cover. Such a connection could land in Longyearbyen in Svalbard, <br>and have connections to Murmansk, some settlements along northern Siberia, and either <br>connect to Yakutsk via the Lena river or go through the Bering strait and connect to Alaska <br>on the one hand and Kamchatka and Japan on the other hand.<br> <br>This would shorten round-trip latency to East Asia substantially, as most current connections <br>go through the Mediterranean, down past India, and through the South China Sea. The <br>Longyearbyen connection would allow for redundancy to Norway through an existing <br>connection. Connections in Russia would help in Russia’s developing ICTs, as currently it is <br>estimated that 70% of Russian communications go through Sweden. However, it would be <br>vital to Europe’s communications security interests that such a connection have direct routes <br>to East Asia rather than an intermittent landing in Russia. There are numerous ways in <br>which such a proposal could be made beneficial to all parties, and it would open possibilities <br>for diverse applications from cross-continental high speed trading and currency arbitrage <br>to online gaming. For telephony applications, this connection would push the latency on <br>communications between Europe and East Asia down below the threshold of human <br>perception, itself a revolution in global telecommunications.<br> <br>Less ambitious potential developments that have been proposed include construction of <br>large data centers on the Reykjanes peninsula, construction of further fiber optics links to <br>Europe and America, and the establishment of data caches and mediation centers in Iceland <br>for high availability applications.<br> <br> +(Example routes for a “polar express” cable; also shows autumn arctic ice cover)<br> + <br> +16<br> +<hr> +<A name=17></a><IMG src="Greens-IslandsofResilience-17.png"><br> +The Russian Optical Trans-Arctic Submarine Cable System (ROTACS) project aims to do <br>just that. According to an article <br> +(ROTACS telecommunication project outline; source: <a href="http://barentsnova.com/node/1737">http://barentsnova.com/node/1737)</a><br> + <br> +(ROTACS and Arctic Fibre; source: Laser Focus World7)<br> +TODO: <a href="http://barentsnova.com/node/1737">http://barentsnova.com/node/1737</a><br> +7 <a href="http://www.laserfocusworld.com/articles/print/volume-48/issue-04/world-news/fiber-cables-to-span-the-arctic-ocean.html">http://www.laserfocusworld.com/articles/print/volume-48/issue-04/world-news/fiber-cables-to-span-the-arctic-<br>ocean.html</a><br> +17<br> +<hr> +<A name=18></a><b>Jurisdiction</b><br> +Iceland is a parliamentary republic which gained independence from Denmark in 1944. It <br>is a member of the United Nations, the Council of Europe (CoE), the European Economic <br>Area (EEA), the European Free Trade Association (EFTA) and the North Atlantic Treaty <br>Organization (NATO), amongst others. It is party to numerous international agreements <br>including Schengen.<br> +Iceland’s membership in the EEA means that outside of a few limited areas, all EU <br>commercial directives take effect in Iceland. In addition, both for conformity and utility, <br>Iceland has adopted various non-EEA relevant directives. This tendency has been <br>increasing as part of the preparations and negotiations for EU membership. As of 12 <br>December, 2011, eight out of 33 chapters have been closed in Iceland’s EU accession <br>negotiations. Of particular interest to this report, the chapter on information society and <br>media is considered to generally already conform to the EU <i>acquis</i>.<br> +<b>Commercial Issues</b><br> +After the collapse of the Icelandic banking sector in 2008, the Icelandic Central Bank <br>(Seðlabanki Íslands) was authorized to put limitations on the flow of capital, in particular <br>those with no relevance to goods or services. The Central Bank is also authorized to require <br>domestic companies to deposit and exchange foreign currency. As of November 2009 all <br>restrictions have been lifted on new investments, and in practice trade from Iceland is not <br>hindered substantially by the capital restrictions.<br> +VAT in Iceland is generally quite high, with most goods and services falling in the 25.5% <br>VAT category. However, law 163/2010 introduced new exceptions to the VAT law (law 50/<br>1988) which makes data processing and information provision, as well as “electronically <br>provided services” exempt from taxed capital flows.<br> +Further, this law allowed an exemption from VAT for the importation of servers and related <br>equipment (i.e., equipment which is necessary for the functioning of the servers and is <br>only of direct benefit to the owners of the servers) in cases where the owners have official <br>residence in other member states in the EEA, EFTA, or the Faroe Islands, and do not <br>have fixed operations in Iceland in accordance with Icelandic tax law. This exception puts <br>more specific requirements, for example that the owners of the servers pay VAT in their <br>home country, that the purpose of the operations be of such a nature that it would require <br>commercial registration if it were domestic, that the servers were imported specifically for <br>the purpose of operation in a data center which their owner is in business with, that the <br>servers and other equipment are used only by the owners, but not for other purposes within <br>the data center, and that the servers be used from outside of Iceland. This exception is due <br>for reconsideration in late 2013, but as it stands is exceptionally beneficial for cloud hosting <br>providers.<br> +<b>Overview of Icelandic Information Regulation</b><br> +18<br> +<hr> +<A name=19></a>Icelandic law conforms broadly to the European <i>acquis </i>regarding a number of different <br>information regulations.<br> <br>Telecommunications are in general governed by law 81/2003 (telecommunications act), <br>which implements EU directive 999/5/EC, regulation 2887/2000/EC, the Telecoms Package <br>(directives 2002/19/EC, 2002/20/EC, 2002/21/EC and 2002/22/EC), and directives 2002/58/<br>EC and 2002/77/EC.<br> <br>Electronic commerce and other electronic services are generally governed by law 30/<br>2002, which implements the e-Commerce directive (2000/31/EC), thereby establishing <br>intermediary liability limitations which are crucial to the functioning of Internet service <br>providers, hosting providers and data centers. The only practical failing of the Icelandic <br>implementation of the e-commerce directive is that allowance is made for injunctions <br>which, for historical reasons, can be issued by a regional sheriff (<i>sýslumaður</i>) without court <br>supervision. This has not caused problems in the context of intermediary liability limitations, <br>but has been used to stifle media on one occasion, and could potentially be abused further.<br> +Media is regulated under the media law, 38/2011, which implements Audiovisual <br>Media Services Directive (2007/65/EC). Broadcast media is also regulated by the <br>telecommunications act (81/2003).<br> <br>Personal and private data is protected under law 77/2000, which implements the Data <br>Protection Directive (95/46/EC). Electronic signatures are allowed as a valid form of <br>signature under law 28/2001, and to this end a national authentication card scheme has <br>been developed and is being distributed as a feature of banking cards.<br> <br>Freedom of access to government information is defined in law 50/1996. This law has been <br>under review, and a broad-reaching proposal for a new freedom of information law was <br>submitted to the Parliament during its 139th term (ending in October 2011), but did not <br>pass. A small subset of the changes proposed in that law by the relevant parliamentary <br>committee were adopted into a new version of the bill which was submitted to parliament <br>at the beginning of the 140th term. This new version did not include provisions proposed <br>by the review committee regarding public registration of government documents and public <br>advertisement of confidentiality terms, reasons and durations for secret documents.<br> <br>With regard to intellectual monopoly rights, patents are defined in law 17/1991, biopatents <br>in law 58/2000, descriptions of electronic components are protected under law 78/1993, <br>trademarks under law 45/1997, and in particular corporate logos are protected under law <br>155/2002. Finally, copyrights are defined in law 73/1972, which implements EU directives <br>89/552/EEC, 2003/4/EC, 2001/29/EC, 2001/84/EC, 91/250/EEC, 92/100/EEC, 93/83/<br>EEC, 93/98/EEC, 2004/48/EC (IPRED) and 2006/123/EC. Law 53/2006 defines specific <br>permissions regarding the collection of evidence pertaining to violations of intellectual <br>monopoly rights.<br> <br> +<b>Compatibility with European Union Directives</b><br> +As previously stated, Iceland’s laws regarding information technology and media are largely <br>in accordance with European <i>acquis</i>. However, in the European Commission’s Opinion on <br> +19<br> +<hr> +<A name=20></a>Iceland's application for membership of the European Union (COM(2010) 62)8, a few minor <br>issues are laid out.<br> +The most salient issue is that the EU Data Retention Directive (2006/24/EC) has not <br>been transposed. This is however a trivial issue——the telecommunications act contains <br>provisions for data retention which originate from early drafts of the data retention, and is in <br>all regards equivalent to the Data Retention Directive. Therefore, transposition is a formality. <br>Data retention will be discussed further in the later section on electronic surveillance.<br> +Also according to the opinion, while “the legislative and administrative structure is similar to <br>most EU Member States” the appointment procedures for the national regulatory authority <br>(the post and telecoms administration, <i>póst- og fjarskiptastofnun</i>) have to be revisited to <br>ensure transparency, objectivity, and high standards regarding security of tenure.<br> +It goes on to say that “in the field of information society services, the main directives have <br>been transposed into the Icelandic legal order, i.e. the Directives on electronic signatures, e-<br>commerce and conditional access.” <br> +<b>Intermediary Liability Limitations</b><br> +Law 30/2002 on e-commerce and electronic services implements the e-commerce directive <br>(2000/31/EC), which provides indemnity for "mere conduits", such as telecommunications <br>networks and Internet hosting providers.<br> +There are few and mostly well defined exceptions to this indemnity: <br> +●<br> +an injunction from a sheriff or court order<br> +●<br> +an notice-and-takedown procedure regarding copyright infringement<br> +●<br> +knowledge of child pornography<br> + <br>The exception for general court orders without further definition is worrying, due to the <br>remnants of an magistrate system mostly abolished in 1991. Prior to this, the district “sheriff” <br>(<i>sýslumaður</i>) also served as magistrate and had the ability to, amongst other things, enact <br>injunctions. When their magisterial rights were revoked with the 1991 law, they retained <br>their ability to enact injunctions. Although this has not caused problems in terms of Internet <br>hosting, a sheriff’s injunction was used in 2009 to prevent the state broadcaster, RÚV, <br>from airing a story pertaining to a leaked large loan book from the bank Kaupþing. As the <br>injunction was revoked when the injunction had failed, it was never taken to court, so its <br>veracity under the constitution was not tested.<br> <br>The exceptions should probably be improved by clarifying which exact circumstances can <br>trigger such exceptions, as well as restricting the injunction measures to actual courts.<br> +<b>Surveillance</b><br> +The Telecommunications Act (Law 81/2003) was amended in 2005 to include provisions <br>for data retention. It applies to telecommunication providers and its current implementation <br>mandates the retention of records of all connection data for 6 months. It states that <br>communications companies may only deliver information on telecommunications in criminal <br> +8 <a href="http://ec.europa.eu/enlargement/pdf/key_documents/2010/is_opinion_analytical-report.pdf">http://ec.europa.eu/enlargement/pdf/key_documents/2010/is_opinion_analytical-report.pdf</a><br> +20<br> +<hr> +<A name=21></a>cases or on matters of public safety. It also states that such information may not be given to <br>others than police and public prosecution.<br> +According to COM(2010) 62, an analytical report accompanying the communication from <br>the Commission to the European Parliament and the Council containing the Commission <br>Opinion on Iceland’s application for membership to the European Union, Iceland has <br>not currently implemented the Data Retention Directive. This directive is currently being <br>discussed (December 2011) in the Icelandic Parliament, however there are complications <br>owing to the fact that the Data Retention Directive, 2006/24/EC, came into effect one year <br>after the Icelandic Data Retention provisions, which have not since been overturned or <br>amended. However, the 2005 law which established data retention in Iceland was made <br>at the request of the Icelandic police chief (<i>Ríkislögreglustjóri</i>), making use of the current <br>discussions that were then ongoing in the European Commission about the issue. Therefore, <br>the implementation of data retention is structurally equivalent to the data retention directive, <br>although formally the EU directive has not been implemented. <br> <br>During discussions in the Icelandic parliament about the (formal) implementation of <br>the data retention directive, some parliamentarians were surprised to find that such a <br>broad surveillance law already existed in the telecommunications act. There have been <br>discussions, both public and within the parliament, about the potential abolition of data <br>retention. However, this would impede the EU membership process and is therefore unlikely <br>to gain traction without any political support from within the EU.<br> <br>There is an ongoing discussion about granting police enhanced surveillance rights, in <br>the form of proactive investigative measures aimed at counteracting organized crime and <br>terrorism. Although these measures have not yet been implemented, there is currently a <br>resolution proposal being processed in the parliament. The interior minister, Ögmundur <br>Jónasson, has independently stated that he is preparing proposals for such a law. The <br>scope of such a law is unknown, but it is clear that proactive investigation measures would <br>necessarily have to include expanded rights for telecommunications surveillance.<br> <br>Wiretapping and other electronic surveillance is regulated under the Telecommunications <br>Act (81/2003) and further defined in Rules no. 837/2006 on Electronic Surveillance9.<br> <br>Both data retention and surveillance support add to operating costs and jurisdictional <br>uncertainty for cloud hosting providers, especially given the complexity of unsettled <br>international cross-jurisdictional issues.<br> <br>A new bill has been proposed in the Parliament, by the Interior Minister, for the <br>establishment of a CERT team. The proposal as it stands contains provisions for allowing <br>the CERT team to perform limited surveillance of a computer network, having been granted <br>permission to do so by the network operator. It also gives the CERT team the right to report <br>illegal activities on the network to the police. This combination could potentially be abused <br>as a gateway to blanket surveillance, as has been noted in a memo issued by the Icelandic <br> +9 <a href="http://www.personuvernd.is/information-in-english/greinar//nr/610">http://www.personuvernd.is/information-in-english/greinar//nr/610</a><br> +21<br> +<hr> +<A name=22></a>Digital Freedoms Society10, but with greater restrictions (such as a ban on deep packet <br>inspection and identification of individual users or network analysis that could compromise a <br>user’s identity), it could serve to improve network security.<br> +<b>Censorship</b><br> +No state censorship is currently practiced in Iceland. <br> +Corporate censorship has been employed by telecoms providers in a few cases, at request <br>of police and child protection authorities. Most notable was the anonymous forum site <br><i>Ringulreið</i>, which was accused of being a center for cyber-bullying. After the major telecoms <br>providers, Síminn and Vodafone, voluntarily censored access to the site from its users, the <br>site was shut down by its operators. <br> +Some ISPs, most notably Síminn, the largest ISP in Iceland (formerly the state telecoms <br>company) offer parental filtering services to their customers on an opt-in basis. Such <br>blocking software is largely controlled by end-users, although it is somewhat unclear by <br>which criteria websites are added to these filter lists. However, no anti-competitive, political <br>or religious censorship has been noticed in these systems.<br> +Over the last year, it can be argued that abuse of libel law has been on the rise. Journalists <br>and commentators have been increasingly found guilty of libel for comments made on online <br>media. In particular, one journalist has been found guilty for directly quoting an interviewee, <br>whose statement was considered to be libelous by the court. In another case, an elderly <br>woman was found guilty of libel for a Facebook comment wherein she made a value <br>judgement on the characters of the claimants. Of course, in each of these cases there are <br>competing interests and some uncertainty left to the courts, but many have commented on <br>the potential chilling effects associated with such lawsuits and have called for reform.<br> +<b>Data Protection</b><br> +Data protection is regulated under law 77/2000, which implements EU Directive 95/46/EC <br>(Data Protection Directive) and parts of EU Directive 97/7/EC (Equal Treatment in Social <br>Security Directive). The day-to-day management of compliance is managed by the Data <br>Protection Authority.<br> +Various rules and regulations apply with regards to data protection that might have <br>relevance to data centers and information hosting, specifically:<br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/610">Rules no. 837/2006 on Electronic Surveillance.</a><br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/441">Rules no. 698/2004 on The Obligation to Notify and Processing which requires a <br>Permit.</a><br> +●<br> +<a href="http://www.personuvernd.is/information-in-english/greinar//nr/442">Rules no. 299/2001 on security of personal data</a><br> +●<br> +<a href="http://eng.domsmalaraduneyti.is/laws-and-regulations/nr/1042">Regulation no. 322/2001 on Management of Personal Information by the Police</a><br> +10 Full disclosure: one of the authors of this report, Smári McCarthy, co-signed the memo <br>in question and is a board member of the Icelandic Digital Freedoms Society at the time of <br>writing.<br> +22<br> +<hr> +<A name=23></a><IMG src="Greens-IslandsofResilience-23.png"><br> +<b>Human Resources</b><br> +Iceland is a highly educated country. Out of a workforce of 181,000 people, 33.3% have <br>primary education, 38.2% have vocational education, and 28.1% have university education.<br> +After the financial crisis started in 2008, unemployment rose from 1.01% in 2007 to 8.13% <br>in 2010. Recent reports suggest that the unemployment rate is going down, but that has not <br>been confirmed by publicly available statistics.<br> +A 2006 OECD report showed that the number of scientific and engineering publications <br>in internationally recognised journals had increased at an average annual growth rate of <br>5.7% since 1998 and that between 1991 and 2001, the number of publications per million <br>population increased by 50%, from 403 to 610, compared to averages of 416 and 556 in <br>those same years in the EU15. At that time, Iceland ranked eighth in the number of <br>citations per paper (worldwide). The financial crisis caused some reductions in innovation <br>and research & development funding, but this primarily had the effect of shifting researchers <br>further into private sector research operations and startup companies. On the other hand, <br>the Icelandic Innovation Center has started a number of seed labs where startup companies <br>and small proprietors can rent inexpensive office space.<br> <br> +Bala Kamallakharan has noted11 that 2011 was a record year for insolvencies in Iceland, <br>while the number of new company registrations has dropped significantly. This could <br>perhaps be attributed to unavailability of capital available to startups, or perhaps deflation <br>of the last decade’s bubble. Without suitable employment for its highly skilled labor force to <br>absorb, Icelanders will either resort to leaving for better opportunities abroad or remain idle <br>domestically letting their considerable talent go to waste. <br> +11 <a href="http://www.startupiceland.com/2012/01/2011-has-been-record-year-in-iceland.html">http://www.startupiceland.com/2012/01/2011-has-been-record-year-in-iceland.html</a><br> +23<br> +<hr> +<A name=24></a> <br>Either way, the combination of experienced researchers, high unemployment rate, low rate <br>of startup and high insolvency rate suggests that unless Iceland continues to experience an <br>increase in “brain drain”, where well educated people seek employment outside the country, <br>a significant underemployed or unemployed workforce will exist in Iceland.<br> <br> +<b>Icelandic Modern Media Initiative<br></b>On July 16th 2010, the Icelandic Parliament, Alþingi, unanimously adopted a parliamentary <br>resolution to develop in Iceland advanced legislation for the protection of the rights to <br>information and free speech. Since then, the <i>Icelandic Modern Media Initiative</i>, or IMMI, as it <br>was called, has been in development, both inside the government ministries and institutions, <br>and within Icelandic civil society. The originators of the IMMI initiative founded, in 2011, the <br>International Modern Media Institute, a synacronymous civil society organization working <br>towards ensuring that the goals and spirit of IMMI are met in Iceland, and sharing the ideas <br>and developments with the world at large.<br> <br> <br> <br> <br> +<b>Subject area</b><br> +<b>Status</b><br> +<b>Notes</b><br> +<b>Source Protection</b><br> +<b>Complete</b><br> +<b>Media law + constitution</b><br> +<b>Freedom of Information Act</b><br> +<b>Pending </b><br> +<b>New law replacing older law + </b><br> +<b>ratification</b><br> +<b>constitution</b><br> +<b>Communications Protection</b><br> +<b>Pending </b><br> +<b>Changes to law + constitution</b><br> +<b>ratification</b><br> +<b>Intermediary Liability </b><br> +<b>In development</b><br> +<b>Changes to law + constitution</b><br> +<b>Limitations</b><br> +<b>Publishing Liability Limitations</b><br> +<b>In development</b><br> +<b>Changes to law</b><br> +<b>Whistleblower Protection</b><br> +<b>In development</b><br> +<b>Changes to law + constitution</b><br> +<b>Prior Restraint Limitations</b><br> +<b>Pending </b><br> +<b>Constitution + regulatory changes</b><br> +<b>ratification +<br>In Development</b><br> +<b>Judicial Process Protections</b><br> +<b>On hiatus</b><br> + <br> +<b>Network Neutrality</b><br> +<b>Pending </b><br> +<b>Constitution</b><br> +<b>ratification</b><br> +<b>Virtual Limited Liability </b><br> +<b>On hiatus</b><br> + <br> +<b>Companies</b><br> +<b>Freedom of Expression Prize</b><br> +<b>On hiatus</b><br> + <br> +24<br> +<hr> +<A name=25></a><b>Source Protection<br></b>The protection of sources refers to measures which forbid journalists from exposing the <br>identity of their sources without the source’s permission. The purpose of such measures is <br>to increase the willingness and security of sources who consider themselves to be at risk, <br>when providing information of criminal wrongdoing, corruption, negligence or other socially <br>unacceptable behavior to journalists.<br> <br>Journalistic source protection was implemented in Icelandic law 38/2011 (the media act). <br>The source protection clause is defined in article 25., which states:<br> <br> +Employees of media organizations which have been licensed or registered with the media committee <br>are forbidden to expose the identity of source for articles, books, retellings, announcements or other <br>material, regardless of whether it has been published, if the source or the author requested anonymity. <br>Employees of the media organization are also forbidden to release data which contain information <br>regarding the source or author in such circumstances.<br>The rule in the 1st paragraph also applies to those who, due to connections to the media organization <br>or the production of the material has gained knowledge of the identity of the source or author, or has <br>attained data to that effect.<br>Source protection under paragraphs 1 and 2 can only be relieved with the permission of the source or <br>the author, or on the basis of article 119 of the law on the prosecution of criminal cases, no. 88/2008.12<br> + <br> <br>In addition to the stipulation in the new media law, the proposed constitution for Iceland <br>contains, in article 16, the statement:<br> <br> +The protection of journalists, their sources of information and whistle-blowers shall be ensured by law. <br>It is not permitted to breach confidentiality without the consent of the person providing the information <br>except in the process of criminal proceedings and pursuant to a court order.<br> + <br>This provides equivalent protection under the constitution, if ratified, ensuring that the source <br>protection clause would not be removed from law without referendum.<br> <br><b>Status: Complete.<br> </b><br> +<b>Freedom of Information Act<br></b>Access to government documents and records is mandated in Iceland by law 50/1996, (the <br>information act). The current Icelandic FOI law does not conform to CoE convention, and it <br>does not match the standards set in the Aarhus convention for environmental information.13<br> <br>An updated information act was proposed at Alþingi in 2011, however, due to end of term <br>in late September 2011, the bill did not complete the third reading in parliament and was <br>therefore dropped. It has since been reintroduced with many of the changes merged in and <br>multiple improvements made, however, the newly proposed version does not meet the high <br>standard the bill had previously achieved.<br> <br>IMMI submitted an 8 page report and a 84 page change comparison of the two bills to <br>the constitutional and regulatory committee of Alþingi in February 2012#, criticizing the <br>government’s backpedaling against the changes that had previously been proposed in <br> +12 The exception in article 119 of law 88/2008 applies to the case where criminal proceedings for serious offences cannot be <br>resolved without the identity of the source or author being exposed. In such cases, it has been recommended although it is not <br>stipulated in statutes, that the identity first be exposed to the judge <i>in camera</i>, so that the judge can appropriately measure the <br>potential risk to the source against the benefit of the source’s exposure. This is generally considered an acceptable limitation to <br>the otherwise absolute source protection clause.<br>13 The Aarhus convention was ratified by law 131/2011.<br> +25<br> +<hr> +<A name=26></a>parliamentary committee. At the moment, the committee work is proceeding.<br> <br>Cautious optimism suggests that the committee will once again restore the bill to its former <br>state and that it will be accepted. If this is the case, the norm for access to information <br>in Iceland will be altered from being a ‘publish on request’ regime to ‘publish by default’ <br>regime.14 Then, any documents which are not published can be at least listed along with <br>information about why it has been held back and FOI requests can be made for those <br>documents specifically. This change is the most important alteration of many.<br> <br>In the meantime, the new proposed constitution of Iceland has guaranteed a substantial <br>improvement of information rights.15<br> <br><b>Status: Pending ratification</b><br> +<b>Network Neutrality<br></b>Network neutrality is a very broad concept, but generally refers to the idea that each node <br>operating on the network should be considered equal to all others in terms of access. <br>Numerous governments and corporations have instantiated various forms of censorship and <br>containerization#. Due to technical limitations of the IPv4 space, almost every end-user of <br>the Internet can be considered in an aberration of the end-to-end principle often from NAT <br>(Network Address Translation), this makes their nodes second class citizens of the Internet. <br>There is a lot to be done in terms of network neutrality.<br> <br>This is going to be a topic for many years, but for now IMMI has decided to take the first <br>steps. Article 14 of the proposed constitution creates an obligation for the government to <br>protect the Internet, with the same constraints as those on free speech in general. Although <br>those limitations should definitely be questioned, this must be considered a substantial <br>victory, as no country currently even mentions the Internet in its constitution, let alone <br>defends it:<br> <br> +The government shall guarantee conditions that are conducive to open and informed public discussion. <br>Access to the Internet and information technology shall not be curtailed except by a decision of a court <br>of law and on the same substantive conditions that apply to restrictions on the freedom of expression.<br> + <br><b>Status: Pending Ratification</b><br> +<b>Communications Protection and Communications Data Retention<br></b>In the interests of protecting privacy and source confidentiality, protection of communications <br>is a vital ingredient to any coherent information regulation strategy.<br> <br>The protection of communications is a wide project that can be roughly split into two tasks. <br>On the one hand, removing existing threats to communications protection from law, and on <br>the other hand establishing new protections for communications.<br> <br>In January 2012, as Alþingi was debating the adoption of the European Union’s Data <br>Retention Directive, IMMI produced a report outlining the dangers of blanket data retention. <br>In committee, IMMI’s views got the support of the Privacy Directorate, and this led to the <br>parliamentary committee requesting that the directive be postponed indefinitely and that <br>the foreign minister inform the European Union that Iceland would not be implementing the <br> +14 meaning that instead of FOI requests having to be made for each document individually in order to obtain a private copy for <br>dissemination, which is a slow and complicated process, the rule will become that government publishes all documents publicly <br>by default, for instance in an online database.<br>15<a href="http://www.stjornlagarad.is/english/"> http://www.stjornlagarad.is/english/ Articile 15 (English PDF available from the website)</a><br> +26<br> +<hr> +<A name=27></a>directive.<br> <br>This however was not enough, as Iceland has in law a data retention clause (paragraph <br>3, article 42, of the telecommunications act, 81/2003, amended in 2005), which predates <br>the EU’s Data Retention Directive by a year. IMMI has argued against this clause, both in <br>newspapers and in opinions to parliament, and has drafted a bill for the removal of the act.<br> <br>More recently, IMMI was asked to submit proposals for improvement of certain articles of <br>the telecommunications act being added to introduce a Computer Emergency Response <br>Team (CERT) in Icelandic law, so as to better balance against privacy concerns. In these <br>proposals, IMMI included the following proposal:<br> <br> +Paragraph 3 of article 42, requiring the retention of telecommunication data, is dropped.<br> +Appended to article 42 is a new paragraph:<br>Parties other than the sender and the receiver of electronic packet-switched communications are <br>forbidden to inspect or electronically process the payload of the packets. Headers and metadata of <br>packet-switched communications shall only be stored for the period needed to resolve the routing of the <br>communications and security measures as per article 47. a.<br> <br> +This would effectively remove the data retention provisions from law, if adopted, and <br>simultaneously improve the communications protection by making it a criminal offense to <br>intercept and inspect communications, by methods such as Deep Packet Inspection. It is our <br>hope that this provision be adopted in law.<br> <br>In addition to this development, the proposed constitution of Iceland contains a clause in <br>article 11 expressly forbidding the search of communications, except with a valid court <br>order.16<br> <br> <br><b>Status: Pending ratification & in further development</b><br> +<b>Intermediary Liability Limitations<br></b>The original idea for limited liability for telecommunications intermediaries comes from the <br>development of the Communications Decency Act in the United States around 1996. Since <br>then, the European Union has adopted the e-Commerce Directive, which implements similar <br>limitations. The directive is implemented in Iceland as the electronic commerce and other <br>electronic services act (30/2002), and has equivalent measures.<br> <br>Immediately on exploring the intermediary liability limitations (ILLs) in the Icelandic law, a <br>striking flaw presents itself in the form of “general court orders”. This phrasing is very vague <br>and more importantly lends itself to being understood that district sheriffs, who in Iceland <br>have injunctive powers, can issue takedown orders. IMMI has an interest in tightening this <br>language, and intends to make proposals to do so in the coming months.<br> <br>More importantly though, ILLs have been under attack globally in recent years. A great many <br>changes in strategies relating to intellectual monopoly enforcement, protection of official <br>secrets and political attempts at opening doors for corruption have revolved around eroding <br>ILLs. In order to counteract this trend, IMMI has partnered with several organizations to <br>explore what can be done to define a legal and technical defense of both Internet endpoints <br>and intermediaries that can better withstand political attempts at erosion. This work is in <br>early stages, but some results are scheduled for July 2012.<br> <br><b>Status: In development</b><br> +16 <a href="http://www.stjornlagarad.is/english/">http://www.stjornlagarad.is/english/ Articile 11</a><br> +27<br> +<hr> +<A name=28></a><b>Libel Tourism Protection<br></b>Libel tourism is the act of a company or individual choosing to pursue lawsuits against <br>individuals or companies in a country with a low threshold for libel lawsuits. Legal extortion <br>schemes have been perpetuated with companies being tried in countries such as England <br>and Wales even if the defendant resides elsewhere in the world. This is a form of forum <br>shopping. Implementing laws that prevent or diminish the effects of libel tourism in Iceland <br>will protect Icelandic citizens and residents from this kind of forum shopping. It’s fairly <br>important that people can predict with some certainty where, if anywhere, they will be <br>taken to court. This also applies to companies, who base a lot of their operational security <br>on knowing the legal environment. In this way, ending libel tourism will encourage foreign <br>investment and provide financial security for companies operating here already.<br> <br>For now, Iceland has a mechanism. As a signatory of the Lugano treaty, Icelandic courts <br>can decide not to uphold foreign court verdicts which go against the rule of law in Iceland. <br>This means that a libel verdict from a foreign country can be challenged in an Icelandic court <br>on the basis of article 34 of the Lugano treaty if it comes from a country with a substantially <br>different burden of proof for libel than Iceland does. This has not been tested, but is currently <br>our best bet.<br> <br>In the meantime, British libel reform efforts are going well, and coupled with a well written <br>libel law in Iceland, may be sufficient to put an end to libel tourism - at least in Iceland. When <br>that is finished, the bigger issue of International Forum Shopping remains.<br> <br><b>Status: Complete / Untested solution</b><br> +<b>Libel Reform and Publishing Liability Limitations<br></b>The media law from 2011 introduced new rules regarding media liability. However, since its <br>adoption, a number of court cases have been heard in Reykjavík which cast a shadow on <br>the reform and point at a deeper structural fault in the current libel regime.<br> <br>Although media liability is defined in the print law and superseded by the media law, the <br>terms of libel itself are defined in chapter XXV of the criminal act, which treats violations <br>of privacy and libel as equal criminal offenses. Under the criminal act, it is illegal to make <br>truthful accusations, to offend somebody publicly or privately, or to make unfavorable <br>comments about deceased persons. As these are criminal offenses, they have assigned <br>imprisonment penalties from 1 to 4 years, as well as fines, although imprisonment is rarely <br>used in practice.<br> <br>The global trend in libel law is to move it away from criminal sanctions and into tort law, <br>making it a civil offense, punishable only by fines. Alongside this, the scope of libel is to be <br>narrowed, making the truth a valid defense and ensuring that people cannot be brought to <br>charge for making value judgements against another’s character. It should be legal to call a <br>person a jerk, although it is questionable whether you can call somebody a murderous jerk <br>without backing it up with evidence.<br> <br>IMMI has completed the basic research needed to implement these changes and drafted <br>a bill which aim to alleviate at least most of the existing concerns. Due to parliamentary <br>scheduling rules, it cannot be introduced until the autumn of 2012.<br> <br><b>Status: Pending</b><br> +28<br> +<hr> +<A name=29></a><b>Whistleblower Protection<br></b>A whistleblower is a person that tries to disclose or report information on situations affecting <br>the public that may evidence of criminal activity. Protection for individuals reporting <br>institutionalized corruption is paramount. They may be providing relevant information <br>to the public record, such as data or testimony about relevant matters like public health, <br>passed incidents, crime, government biases, democracy undermining practices, violations of <br>constitutional rights, corruption and bribery.<br> <br>Threats to whistleblowers come from corporate interests, governmental interests, criminal <br>activities, biases inherent in legal and judicial officials and systems. Whistleblower <br>protections must include a right to anonymity, physical, financial and social security.<br> <br>As the threat models, institutional settings and personal complexities of whistleblowing vary <br>widely, this is perhaps the most complicated of IMMI’s tasks. While a lot of development <br>work has been put into this issue already, we feel that the adequate protection of <br>whistleblowers cannot be completed without deep investigation.<br> <br>As one core issue, the idea of corporate personhood must be challenged. Disregarding <br>other arguments for doing so, it is very important that it not be decided that companies and <br>other corporate vehicles have a right to privacy, as this would pit whistleblower activities up <br>against privacy and data protection law, the sanctity of which is of equal importance. It’s a <br>fight nobody should have to fight. That said, there has been no such ruling in Iceland and it <br>is not foreseeable that that will change; it’s merely one issue of many that must be monitored <br>and pro-actively taken action on.17<br> <br><b>Status: In development</b><br> +<b>Prior Restraint Limitations<br></b>Prior restraint is banned under article 73 of the Icelandic constitution. A slightly stronger <br>implementation of prior restraint limitations are introduced in the new constitution, which is <br>pending ratification.<br> <br>Outside of constitutional guarantees, IMMI also has an interest in protecting against abuse <br>of injunctions by sheriffs, who still have injunctive authorities as a holdover from their now <br>abolished tribunal role. This fits in with the discussion of Intermediary Liability Limitations <br>stated above, and IMMI expects to be able to address these two concerns jointly.<br> <br><b>Status: Pending ratification<br> </b><br> +<b>Virtual Limited Liability Companies<br></b>Icelandic corporate law is currently somewhat hostile to foreign ownership from outside the <br>European Economic Area (EEA). The idea of Virtual Limited Liability Companies is to allow <br>for virtually defined corporate entities, whereby the ownership is somewhat ephemeral, as <br>long as the owners adhere to certain Icelandic transparency requirements. In that way, a <br>virtually operated commpany would have tax obligations and operational safe harbor rights <br>in Iceland like any other company, but gets to operate virtually in exchange for some strict <br>guarantees of transparency and such.<br> <br> +17 For more detail see:: <a href="http://immi.is/Press_Release:_IMMI_Status_Update,_April_2012">http://immi.is/Press_Release:_IMMI_Status_Update,_April_2012 </a><br> +29<br> +<hr> +<A name=30></a>This issue has more to do with creating a pleasant investment environment than explicitly <br>improving the information regime in Iceland. For that reason, it has been relegated to the set <br>of the last things we aim to accomplish in this set, and is therefore on hiatus for now.<br> <br><b>Status: On hiatus.<br></b> <br> <br> +<b>Selected Bibliography</b><br> +●<br> +Orkustefna fyrir Ísland; Stýrihópur um mótun heildstæðrar orkustefnu; <a href="http://www.nea.is/media/gagnasofn/Orkustefna-fyrir-Island.pdf">http://<br>www.nea.is/media/gagnasofn/Orkustefna-fyrir-Island.pdf<br></a> <br> +●<br> +Iceland. What a Great Place to Put a Data Center; Verne Global / Martin Hannigan; <br><a href="http://www.uknof.org.uk/uknof12/Hanningan-Undersea.pdf">http://www.uknof.org.uk/uknof12/Hanningan-Undersea.pdf</a><br> + <br> +●<br> +<a href="http://www.os.is/gogn/Skyrslur/OS-2010/OS-2010-07.pdf">Orkuspá fyrir Ísland 2010-2050; Orkustofnun; http://www.os.is/gogn/Skyrslur/OS-<br>2010/OS-2010-07.pdf<br></a> <br> +●<br> +Benchmarking Study on Iceland as a Location for Data Centre Activity; Invest in <br><a href="http://www.invest.is/resources/files/invest.is/BDC%20Report.pdf">Iceland Agency; http://www.invest.is/resources/files/invest.is/BDC%20Report.pdf<br></a> <br> +●<br> +Mikil arðsemi af raforkusölu til stóriðju; Vísir; <a href="http://www.visir.is/mikil-ardsemi-af-raforkusolu-til-storidju/article/2011712209851">http://www.visir.is/mikil-ardsemi-af-<br>raforkusolu-til-storidju/article/2011712209851<br></a> <br> +●<br> +<a href="http://www.oecd.org/dataoecd/15/62/36648108.pdf">Policy Mix for Innovation in Iceland; OECD; http://www.oecd.org/dataoecd/15/62/<br>36648108.pdf</a><br> +30<br> +<hr> + <!-- <script> --> + <!-- $(document.body).annotator() --> + <!-- $(document.body).annotator() --> + <!-- .annotator('addPlugin', 'Store') --> + + <!-- </script> --> +</BODY> +</HTML> diff --git a/report/index.html b/report/index.html new file mode 100644 index 0000000..2b46671 --- /dev/null +++ b/report/index.html @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<title>Index of /report/</title> +<style type="text/css"> +a, a:active {text-decoration: none; color: blue;} +a:visited {color: #48468F;} +a:hover, a:focus {text-decoration: underline; color: red;} +body {background-color: #F5F5F5;} +h2 {margin-bottom: 12px;} +table {margin-left: 12px;} +th, td { font: 90% monospace; text-align: left;} +th { font-weight: bold; padding-right: 14px; padding-bottom: 3px;} +td {padding-right: 14px;} +td.s, th.s {text-align: right;} +div.list { background-color: white; border-top: 1px solid #646464; border-bottom: 1px solid #646464; padding-top: 10px; padding-bottom: 14px;} +div.foot { font: 90% monospace; color: #787878; padding-top: 4px;} +</style> +</head> +<body> +<h2>Index of /report/</h2> +<div class="list"> +<table summary="Directory Listing" cellpadding="0" cellspacing="0"> +<thead><tr><th class="n">Name</th><th class="m">Last Modified</th><th class="s">Size</th><th class="t">Type</th></tr></thead> +<tbody> +<tr><td class="n"><a href="../">Parent Directory</a>/</td><td class="m"> </td><td class="s">- </td><td class="t">Directory</td></tr> +<tr><td class="n"><a href="1.html">1.html</a></td><td class="m">2012-Jul-30 11:08:09</td><td class="s">94.1K</td><td class="t">text/html</td></tr> +<tr><td class="n"><a href="2.html%7e">2.html~</a></td><td class="m">2012-Jul-30 11:09:14</td><td class="s">91.5K</td><td class="t">application/octet-stream</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-1.orig.png">Greens-IslandsofResilience-1.orig.png</a></td><td class="m">2012-Jul-30 10:52:25</td><td class="s">407.4K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-1.png">Greens-IslandsofResilience-1.png</a></td><td class="m">2012-Jul-30 11:18:53</td><td class="s">220.3K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-10.png">Greens-IslandsofResilience-10.png</a></td><td class="m">2012-Jul-30 10:52:32</td><td class="s">307.0K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-14.png">Greens-IslandsofResilience-14.png</a></td><td class="m">2012-Jul-30 10:52:33</td><td class="s">262.3K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-16.png">Greens-IslandsofResilience-16.png</a></td><td class="m">2012-Jul-30 10:52:36</td><td class="s">735.5K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-17.png">Greens-IslandsofResilience-17.png</a></td><td class="m">2012-Jul-30 10:52:37</td><td class="s">247.6K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-2.png">Greens-IslandsofResilience-2.png</a></td><td class="m">2012-Jul-30 10:52:26</td><td class="s">103.8K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-23.png">Greens-IslandsofResilience-23.png</a></td><td class="m">2012-Jul-30 10:52:38</td><td class="s">7.2K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-3.png">Greens-IslandsofResilience-3.png</a></td><td class="m">2012-Jul-30 10:52:28</td><td class="s">15.0K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience-9.png">Greens-IslandsofResilience-9.png</a></td><td class="m">2012-Jul-30 10:52:30</td><td class="s">115.4K</td><td class="t">image/png</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience.html">Greens-IslandsofResilience.html</a></td><td class="m">2012-Jul-30 10:59:23</td><td class="s">0.5K</td><td class="t">text/html</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience.html%7e">Greens-IslandsofResilience.html~</a></td><td class="m">2012-Jul-30 10:52:02</td><td class="s">0.5K</td><td class="t">application/octet-stream</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience.pdf">Greens-IslandsofResilience.pdf</a></td><td class="m">2012-Jul-30 10:48:34</td><td class="s">3.0M</td><td class="t">application/pdf</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience.txt">Greens-IslandsofResilience.txt</a></td><td class="m">2012-Jul-30 10:54:32</td><td class="s">64.1K</td><td class="t">text/plain</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResilience_ind.html">Greens-IslandsofResilience_ind.html</a></td><td class="m">2012-Jul-30 10:52:38</td><td class="s">2.4K</td><td class="t">text/html</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResiliences.html">Greens-IslandsofResiliences.html</a></td><td class="m">2012-Jul-30 11:38:59</td><td class="s">91.1K</td><td class="t">text/html</td></tr> +<tr><td class="n"><a href="Greens-IslandsofResiliences.html%7e">Greens-IslandsofResiliences.html~</a></td><td class="m">2012-Jul-30 11:09:44</td><td class="s">91.0K</td><td class="t">application/octet-stream</td></tr> +</tbody> +</table> +</div> +<div class="foot">lighttpd/1.4.28</div> +</body> +</html> |