/*
 * Copyright (c) 2014 Amazon.com, Inc. All rights reserved.
 */
var goog=goog||{};goog.userAgent=goog.userAgent||{};goog.global=this;goog.string=goog.string||{};goog.string.contains=function(a,e){return a.indexOf(e)!==-1};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_EDGE=!1;
goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.global.navigator?goog.global.navigator.userAgent:null};goog.userAgent.getNavigator=function(){return goog.global.navigator};
goog.userAgent.init_=function(){goog.userAgent.detectedOpera_=!1;goog.userAgent.detectedEdge_=!1;goog.userAgent.detectedIe_=!1;goog.userAgent.detectedWebkit_=!1;goog.userAgent.detectedMobile_=!1;goog.userAgent.detectedGecko_=!1;var a;if(!goog.userAgent.BROWSER_KNOWN_&&(a=goog.userAgent.getUserAgentString())){var e=goog.userAgent.getNavigator();if(a.indexOf("Opera")===0)goog.userAgent.detectedOpera_=!0,goog.userAgent.ENGINE="Opera";if(!goog.userAgent.detectedOpera_&&a.indexOf("MSIE")!==-1)goog.userAgent.detectedIe_=
!0,goog.userAgent.ENGINE="IE";if(!goog.userAgent.detectedOpera_&&a.indexOf("WebKit")!==-1)goog.userAgent.detectedWebkit_=!0,goog.userAgent.ENGINE="WebKit";if(goog.userAgent.detectedWebkit_&&a.indexOf("Mobile")!==-1)goog.userAgent.detectedMobile_=!0;if(!goog.userAgent.detectedOpera_&&!goog.userAgent.detectedWebkit_&&e.product==="Gecko")goog.userAgent.detectedGecko_=!0,goog.userAgent.ENGINE="Gecko";if(a.indexOf("Edge")!==-1)goog.userAgent.detectedEdge_=!0}};goog.userAgent.BROWSER_KNOWN_||goog.userAgent.init_();
goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.userAgent.detectedOpera_;goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.userAgent.detectedEdge_;goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.userAgent.detectedIe_;goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.userAgent.detectedGecko_;
goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.userAgent.detectedWebkit_;goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.detectedMobile_;goog.userAgent.SAFARI=goog.userAgent.WEBKIT;goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigator();return a&&a.platform||""};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;
goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11;
goog.userAgent.initPlatform_=function(){goog.userAgent.OS="";if(goog.string.contains(goog.userAgent.PLATFORM,"Mac"))goog.userAgent.detectedMac_=!0,goog.userAgent.OS="Mac";if(goog.string.contains(goog.userAgent.PLATFORM,"Win"))goog.userAgent.detectedWindows_=!0,goog.userAgent.OS="Windows";if(goog.string.contains(goog.userAgent.PLATFORM,"Linux"))goog.userAgent.detectedLinux_=!0,goog.userAgent.OS="Linux";if(goog.userAgent.getNavigator()&&goog.string.contains(goog.userAgent.getNavigator().appVersion||
"","X11"))goog.userAgent.detectedX11_=!0,goog.userAgent.OS="X11"};goog.userAgent.PLATFORM_KNOWN_||goog.userAgent.initPlatform_();goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.userAgent.detectedMac_;goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.userAgent.detectedWindows_;goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.detectedLinux_;
goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.detectedX11_;goog.userAgent.determineVersion_=function(){var a="",e=goog.userAgent.getVersionRegexResult_();e&&(a=e?e[1]:"");return goog.userAgent.IE&&(e=goog.userAgent.getDocumentMode_(),e!=null&&e>parseFloat(a))?String(e):a};
goog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv\:([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\/([\d\.]+)/.exec(a);if(goog.userAgent.IE)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\/(\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \/]?(\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};
goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.isDocumentModeCache_={};goog.userAgent.isDocumentMode=function(a){return goog.userAgent.isDocumentModeCache_[a]||(goog.userAgent.isDocumentModeCache_[a]=goog.userAgent.IE&&document.documentMode&&document.documentMode>=a)};goog.userAgent.product=goog.userAgent.product||{};goog.userAgent.product.ASSUME_FIREFOX=!1;goog.userAgent.product.ASSUME_CAMINO=!1;goog.userAgent.product.ASSUME_IPHONE=!1;
goog.userAgent.product.ASSUME_IPAD=!1;goog.userAgent.product.ASSUME_ANDROID=!1;goog.userAgent.product.ASSUME_CHROME=!1;goog.userAgent.product.ASSUME_SAFARI=!1;
goog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_CAMINO||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI;
goog.userAgent.product.init_=function(){goog.userAgent.product.BROWSER_NAME="";goog.userAgent.product.detectedFirefox_=!1;goog.userAgent.product.detectedCamino_=!1;goog.userAgent.product.detectedIphone_=!1;goog.userAgent.product.detectedIpad_=!1;goog.userAgent.product.detectedAndroid_=!1;goog.userAgent.product.detectedChrome_=!1;goog.userAgent.product.detectedSafari_=!1;goog.userAgent.product.detectedIe_=!1;goog.userAgent.product.detectedEdge_=!1;var a=goog.userAgent.getUserAgentString();if(a)if(a.indexOf("iPhone")!==
-1||a.indexOf("iPod")!==-1)goog.userAgent.product.detectedIphone_=!0,goog.userAgent.product.BROWSER_NAME="iPhone";else if(a.indexOf("iPad")!==-1)goog.userAgent.product.detectedIpad_=!0,goog.userAgent.product.BROWSER_NAME="iPad";else if(a.indexOf("Android")!==-1)goog.userAgent.product.detectedAndroid_=!0,goog.userAgent.product.BROWSER_NAME="Android";else if(a.indexOf("Edge")!==-1)goog.userAgent.product.detectedEdge_=!0,goog.userAgent.product.BROWSER_NAME="Edge";else if(a.indexOf("Chrome")!==-1)goog.userAgent.product.detectedChrome_=
!0,goog.userAgent.product.BROWSER_NAME="Chrome";else if(a.indexOf("Safari")!==-1)goog.userAgent.product.detectedSafari_=!0,goog.userAgent.product.BROWSER_NAME="Safari";else if(a.indexOf("MSIE")!==-1)goog.userAgent.product.detectedIe_=!0,goog.userAgent.product.BROWSER_NAME="IE";else if(a.indexOf("Camino")!==-1)goog.userAgent.product.detectedCamino_=!0,goog.userAgent.product.BROWSER_NAME="Camino";else if(a.indexOf("Firefox")!==-1)goog.userAgent.product.detectedFirefox_=!0,goog.userAgent.product.BROWSER_NAME=
"Firefox"};goog.userAgent.product.PRODUCT_KNOWN_||goog.userAgent.product.init_();goog.userAgent.product.OPERA=goog.userAgent.OPERA;goog.userAgent.product.IE=goog.userAgent.IE;goog.userAgent.product.EDGE=goog.userAgent.EDGE;goog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.userAgent.product.detectedFirefox_;goog.userAgent.product.CAMINO=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CAMINO:goog.userAgent.product.detectedCamino_;
goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.detectedIphone_;goog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.userAgent.product.detectedIpad_;goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.userAgent.product.detectedAndroid_;
goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.userAgent.product.detectedChrome_;goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.detectedSafari_;goog.userAgent.platform=goog.userAgent.platform||{};
goog.userAgent.platform.determineVersion_=function(){var a;if(goog.userAgent.WINDOWS)return a=/Windows NT ([0-9.]+)/,(a=a.exec(goog.userAgent.getUserAgentString()))?a[1]:"0";else if(goog.userAgent.MAC)return a=/10[_.][0-9_.]+/,(a=a.exec(goog.userAgent.getUserAgentString()))?a[0].replace(/_/g,"."):"10";return""};goog.userAgent.platform.VERSION=goog.userAgent.platform.determineVersion_();
goog.userAgent.product.determineVersion_=function(){var a="",e,b;if(goog.userAgent.product.FIREFOX)e=/Firefox\/([0-9.]+)/;else if(goog.userAgent.product.IE||goog.userAgent.product.OPERA)return goog.userAgent.VERSION;else goog.userAgent.product.EDGE?e=/Edge\/([0-9.]+)/:goog.userAgent.product.CHROME?e=/Chrome\/([0-9.]+)/:goog.userAgent.product.SAFARI?e=/Version\/([0-9.]+)/:goog.userAgent.product.IPHONE||goog.userAgent.product.IPAD?(e=/Version\/(\S+).*Mobile\/(\S+)/,b=!0):goog.userAgent.product.ANDROID?
e=/Android\s+([0-9.]+)(?:.*Version\/([0-9.]+))?/:goog.userAgent.product.CAMINO&&(e=/Camino\/([0-9.]+)/);e&&(a=(a=e.exec(goog.userAgent.getUserAgentString()))?b?a[1]+"."+a[2]:a[2]||a[1]:"");return a};goog.userAgent.product.VERSION=goog.userAgent.product.determineVersion_();
var GoogleUserAgent=function(){return{browserName:goog.userAgent.product.BROWSER_NAME,osName:goog.userAgent.OS,engineName:goog.userAgent.ENGINE,browserVersionString:goog.userAgent.product.VERSION,engineVersionString:goog.userAgent.VERSION,isMobile:goog.userAgent.MOBILE}}();
function AppCacheEventProvider(a){function e(){m=!1;l=-1;s.done(function(){});KindleBuildInfo.getCurrentTotalAppcacheFileCount().then(s.resolve,s.reject)}function b(a,b,d){function c(){j.callEventListeners(a,b)}s.then(c,c);d&&(m=!0,s=jQuery.Deferred())}function d(a){m&&e();b("checking",a,!1)}function c(a){m&&e();l+=1;if(a.total!==void 0&&a.loaded!==void 0)s.resolve(a.total+1),j.callEventListeners("progress",a);else{var b=function(){a.loaded=l;return function(b){a.total=b===-1?-1:b-1;j.callEventListeners("progress",
a)}}();s.then(b,b)}}var j=ListenerManager(),l=-1,m=!0,s;s=jQuery.Deferred();(function(){typeof a.addEventListener==="function"&&(a.addEventListener("error",function(a){b("error",a,!0)}),a.addEventListener("cached",function(a){b("cached",a,!0)}),a.addEventListener("noupdate",function(a){b("noupdate",a,!0)}),a.addEventListener("updateready",function(a){b("updateready",a,!0)}),a.addEventListener("downloading",function(a){b("downloading",a,!1)}),a.addEventListener("checking",d,!1),a.addEventListener("progress",
c,!1))})();var p={status:0,abort:a.abort,update:a.update,swapCache:a.swapCache,addEventListener:j.addEventListener,removeEventListener:j.removeEventListener};$.extend(p,CreateAppCacheConstants());return p}function CreateAppCacheConstants(){var a={};["CHECKING","DOWNLOADING","IDLE","OBSOLETE","UNCACHED","UPDATEREADY"].forEach(function(e){a[e]=window.applicationCache[e]});return a}
var KindleAppCacheEventHandler=function(){function a(){n={timer:_metricsManager.createTimer(),loaded:0,total:0}}function e(){a()}function b(){KindleHostDeviceDetector.isNetworkAvailableSync()?(o.getValue()>0?_metricsManager.emit("KindleApp:AppCacheError:RestartBrowserFailed",{breakdown:["Browser"]}):r.getValue()>0?_metricsManager.emit("KindleApp:AppCacheError:RetryFailed",{breakdown:["Browser"]}):n.timer.emit("KindleApp:AppCacheError:FirstTime",{breakdown:["Browser"]}),n.timer.emit("KindleApp:AppCacheError",
{submetrics:[{name:"progress",value:n.total}],breakdown:["Browser"]}),KindleHostDeviceDetector.isiOS_4x()&&n.loaded===n.total&&r.getValue()>=1?(m(Kindle.APP_CACHE.CACHE_NEEDS_BROWSER_RESTART),o.increment(),_metricsManager.emit("KindleApp:AppCacheError:SafariRebootPrompt",{breakdown:["Browser"]})):(m(Kindle.APP_CACHE.CACHE_NEEDS_RETRY),r.increment(),_metricsManager.emit("KindleApp:AppCacheError:RetryPrompt",{breakdown:["Browser"]})),KindleHostDeviceDetector.isiOS()&&KindleHostDeviceDetector.isOnline()&&
h==="CHECKING"&&KindleLocalStorage.getItem("cached")&&(_metricsManager.emit("KindleApp:AppCacheError:OnlineInstafail",{breakdown:["Browser"]}),KindleLocalStorage.setItem("cached",0),KindleHostDeviceDetector.isiOSAppMode()&&(_metricsManager.emit("KindleApp::iOSAppModeAppCacheFix"),KindleModuleManager.getModuleSync(KindleModuleManager.APP_REGISTRATION).register())),h=""):m(Kindle.APP_CACHE.CACHE_DONE)}function d(b){n===null&&a();m(Kindle.APP_CACHE.CACHE_PROGRESS,{progressRatio:b.total?b.loaded+1/b.total+
1:0});h="";n.loaded=b.loaded+1;n.total=b.total+1}function c(){o.getValue()>0?_metricsManager.emit("KindleApp:AppCacheError:RestartBrowserSucess",{breakdown:["Browser"]}):r.getValue()>0&&_metricsManager.emit("KindleApp:AppCacheError:RetrySucess",{breakdown:["Browser"]});r.reset();o.reset()}function j(){h="";m(Kindle.APP_CACHE.CACHE_DONE);c();n.timer.emit("KindleApp:AppCacheUpdate",{submetrics:[{name:"progress",value:n.loaded}],breakdown:["Browser"]})}function l(){h="";m(Kindle.APP_CACHE.CACHE_CACHED);
KindleLocalStorage.getItem("cached")||KindleLocalStorage.setItem("cached",1);c();n&&n.loaded&&n.timer.emit("KindleApp:AppCacheSuccess",{submetrics:[{name:"progress",value:n.loaded}],breakdown:["Browser"]})}function m(a,b){b||(b={});y=a;p.callEventListeners(a,b)}var s,p=ListenerManager(),h="",n=null,r,o,y;return{initialize:function(a,c,m){_metricsManager=c;typeof Kindle==="undefined"&&(Kindle=m);r=LocalStorageCounter("AppCacheRetryCount");o=LocalStorageCounter("AppCacheBrowserRestartCount");s=a;h=
["UNCACHED","IDLE","CHECKING","DOWNLOADING","UPDATE READY","OBSOLETE"][s.status];try{s.addEventListener("checking",e,!1),s.addEventListener("error",b,!1),s.addEventListener("progress",d,!1),s.addEventListener("cached",l,!1),s.addEventListener("noupdate",l,!1),s.addEventListener("updateready",j,!1)}catch(p){}},getCacheStatus:function(){return y},removeEventListener:function(a,b){p.removeEventListener(a,b)},addEventListener:function(a,b,d){p.addEventListener(a,b,d)}}}(),KindleAppCacheManager=function(){function a(a){if(KindleHostDeviceDetector.isiOS_4x()||
KindleHostDeviceDetector.isFirefox())a=AppCacheEventProvider(a);try{KindleAppCacheEventHandler.initialize(a,j,l),b.resolve(KindleAppCacheEventHandler)}catch(d){b.reject()}}function e(e,s){j=e;l=s;b=$.Deferred();c?d||(d=$(document.createElement("iframe")).attr("seamless",!0).css("display","none").css("visibility","hidden").attr("src",KINDLE_APPCACHER_SRC)[0],$(document.body).append($(d)),KindleDebug.log("AppCacheIframe created")):a(window.applicationCache);return b.promise()}var b,d,c,j,l;return{initialize:function(a){var b=
[KindleModuleManager.METRICS_MANAGER,KindleModuleManager.CONSTANTS];(c=KindleHostDeviceDetector.isFirefox()&&window.applicationCache.status!==window.applicationCache.UNCACHED)&&b.push(a);KindleModuleManager.define(Kindle.MODULE.APPCACHE_EVENTHANDLER,b,e)},connectIframeAppCache:a}}();
Kindle.URL=function(){function a(){return window.location.host.split(".")[0].indexOf("read-")!==-1}function e(){return window.location.protocol+"//"+window.location.hostname+window.location.port+window.location.pathname}function b(a){for(var b={},a=a.split("&"),d=0;d<a.length;d++){var c;c=a[d].split("=");var l=c[0],e="";c.length>1&&(e=c[1]);c={key:l,value:e};c.key&&(b[c.key]=decodeURIComponent(c.value))}return b}function d(a){var b=a;a.indexOf("?")===0&&a.length>1&&(b=a.substring(1));return b}function c(a){var b=
"";a&&(b+="?"+a);return b}function j(a){var b={},d;for(d in a)h.indexOf(d)>-1&&(b[d]=a[d]);return b}function l(a){var b=s();b.hasOwnProperty(a)&&delete b[a];a=$.param(b);a=c(a);m(a)}function m(a){a=window.location.protocol+"//"+window.location.hostname+window.location.port+window.location.pathname+a+window.location.hash;if(window.history.replaceState)try{window.history.replaceState(document.title,document.title,a)}catch(b){}}function s(){var a={},c=window.location.search;c&&(a=d(c),a=b(a));return a=
j(a)}function p(){var a=s(),d=a[n];if(d){var d=decodeURIComponent(d),d=b(d),c;for(c in d)a[c]=d[c];delete a[n]}return a}var h=["srsBasePath","usePdxBucket","key","version","maxDBSize","ref_","siteState","kcrFree","autoHide","tag","language","lang","stringIDMode","region","host","hostVersion","clear","asin","library","ip","rwis"],n="siteState",r;return{normalizeQueryString:function(){var a=p(),a=$.param(a),a=c(a);m(a)},removeQueryParameter:l,removeAllQueryParameters:function(){var a=s(),b;for(b in a)a.hasOwnProperty(b)&&
l(b)},removeASIN:function(){l("asin")},addSavedStateToQueryParameters:function(){var a=p();if(r)for(var b in r)a[b]=r[b];a=$.param(a);a=c(a);m(a)},getQueryParameters:s,getFragIdParameters:function(){var a={};window.location.hash.length>0&&window.location.hash.substring(1).split("&").forEach(function(b){b=b.split("=");b.length===2&&(a[b[0]]=decodeURIComponent(b[1]))});return a=j(a)},getBaseURL:e,getHostURL:function(){return window.location.protocol+"//"+window.location.hostname+window.location.port},
getBasePathURL:function(){return e().replace(/[^\/]*\.html$/,"")},getSiteState:function(){var a="",b=window.location.search,b=b||"",c;for(c in r)b&&(b+="&"),b+=c+"="+r[c];b&&(b=d(b),c=encodeURIComponent(b),a+=n+"="+c);return a},addToSavedSiteState:function(a){r||(r={});for(var b in a)r[b]=a[b]},getAmazonDomain:function(){var a=/^.*\.(amazon(\.[^.]*){1,2})$/.exec(window.location.host);return a!==null?a[1]:null},isJPDomain:function(){return Kindle.URL.isPreProd()?Kindle.URL.getPreProdCountryCode()===
"jp":Kindle.URL.getAmazonDomain()===Kindle.CountryToDomainMap.jp},isPreProd:a,getPreProdCountryCode:function(){if(a()){var b=window.location.host.split(".")[0],b=b.substr(b.length-3);if(b.charAt(0)==="-")return b.substr(1,2)}return""}}}();
function KindleAppFactory(){function a(){return!!G}function e(){return window.self!==window.top&&!G}function b(){aa||(aa=c(V.KINDLE_READER_ID,KINDLE_READER_SRC,"#"+V.KINDLE_READER_CONTAINER_ID))}function d(){ba||(ba=c(V.KINDLE_LIBRARY_ID,KINDLE_LIBRARY_SRC,"#"+V.KINDLE_LIBRARY_CONTAINER_ID))}function c(f,a,b){if(!KindleHostDeviceDetector.isMetro()&&a[0]==="."){var B=Kindle.top.location.href;B.slice(-1)!=="/"&&(B=B.slice(0,B.lastIndexOf("/")+1));a=B+a.slice(2)}f=$(document.createElement("iframe")).attr("id",
f).attr("seamless","seamless").addClass(qa);KindleHostDeviceDetector.isIE()||f.attr("src",a);$(b).append(f);KindleHostDeviceDetector.isIE()&&f[0].contentWindow.location.replace(a);return f}function j(f){if(f)f.readerClass?w.readerClass=f.readerClass:delete w.readerClass,f.readerAppBar?w.readerAppBar=f.readerAppBar:delete w.readerAppBar,f.cacheSample?w.cacheSample=f.cacheSample:delete w.cacheSample,f.returnToLibrary?w.returnToLibrary=f.returnToLibrary:delete w.returnToLibrary,f.position?(w.position=
Number(f.position),delete w.location):f.location?(w.location=Number(f.location),delete w.position):(delete w.position,delete w.location),w.asin=f.asin,f.isSample!==void 0?w.isSample=f.isSample?!0:!1:delete w.isSample,f.hostStorage===!0?w.contentProvider=o(w.asin):delete w.contentProvider;w.closeButton=e()?Kindle.Reader.CloseButtonNone:Kindle.Reader.CloseButtonAuto;w.standAlone=ba===void 0;w.asin&&H&&(H.openBook(w),KindleBanner.changeBookCover(w.asin),aa&&aa.focus(),w.standAlone&&$("#"+V.KINDLE_READER_CONTAINER_ID).removeClass("hidden"))}
function l(f){w.asin=void 0;KindleLocalStorage.setItem(Y,"");Kindle.URL.removeASIN();H&&(H.unloadReader(),H=null);$("#"+V.KINDLE_READER_CONTAINER_ID).addClass("hidden").empty();aa=void 0;f&&(ga=f);if(R)R.onReaderClose()}function m(){console.log("hiding library");ha=setTimeout(function(){$("#"+V.KINDLE_LIBRARY_CONTAINER_ID).addClass("hidden")},3E3)}function s(){console.log("hiding reader");H&&H.pauseReader();$("#"+V.KINDLE_READER_CONTAINER_ID).addClass("hidden");ha&&(clearTimeout(ha),ha=void 0);$("#"+
V.KINDLE_LIBRARY_CONTAINER_ID).removeClass("hidden");ba&&ba.focus();if(R!==null)R.onShowLibrary()}function p(){ga&&(KindleMetricsManager.endMetrics(ga),ga=null);b()}function h(){var f=KindleHostDeviceDetector.isInAppMode()?"inApp":"inBrowser",a=w.asin?"inReader":"inLibrary",b=KindleHostDeviceDetector.isOnline()?"online":"offline",f={submetrics:[{name:f,value:1},{name:a,value:1},{name:b,value:1}],breakdown:["Browser","Partner"]};KindleMetricsManager.emit("App::Open",f);e()&&KindleMetricsManager.emit("App::Open::Embedded",
f);w.kcrFree&&KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(f){f=f.getAuthenticationState();KindleMetricsManager.emit("App::Open::"+f)})}function n(){H&&H.unloadReader();KindleModuleManager.require(Kindle.MODULE.DB_CLIENT).done(function(f){f.persistDB()})}function r(){var f,a=!0;!KindleHostDeviceDetector.isCookieEnabled()&&!w.kcrFree?(f=KINDLE_NO_COOKIE_SRC,a=!1):!KindleHostDeviceDetector.isLocalStorageEnabled()&&!w.kcrFree&&(f=KINDLE_NO_LOCAL_STORAGE_SRC,a=!1);a||
(f=$(document.createElement("iframe")).attr("src",f).addClass(qa).attr("seamless","seamless"),$("body").append(f));return a}function o(f){return RemoteContentCache.create({asin:f,contentProvider:G.contentProvider,contentRemover:G.deleteBookContent})}function y(){function f(b){KindleAppCacheEventHandler.addEventListener(b,function(){if(KindleHostDeviceDetector.isOnline())switch(b){case Kindle.APP_CACHE.CACHE_NEEDS_RETRY:G.onAppCacheStatus("error");a=!1;break;case Kindle.APP_CACHE.CACHE_PROGRESS:a||
(G.onAppCacheStatus("incomplete"),a=!0);break;case Kindle.APP_CACHE.CACHE_DONE:case Kindle.APP_CACHE.CACHE_CACHED:G.onAppCacheStatus("success");if(window.applicationCache.status===window.applicationCache.UPDATEREADY)G.onAppCacheUpdateReady();a=!1}})}var a=!1;f(Kindle.APP_CACHE.CACHE_NEEDS_RETRY);f(Kindle.APP_CACHE.CACHE_PROGRESS);f(Kindle.APP_CACHE.CACHE_DONE);f(Kindle.APP_CACHE.CACHE_CACHED)}function t(){function f(a,b){function B(f){var b=g.elementFromPoint(f.pageX,f.pageY);return g.createTouch(a,
b,f.identifier,f.pageX,f.pageY,f.screenX,f.screenY)}function k(f){for(var a=[],b=0;b<f.length;b++)a.push(B(f[b]));return g.createTouchList.apply(g,a)}var g=a.document,u=g.createEvent("TouchEvent",{bubbles:!0});u.initTouchEvent(b.type,b.bubbles,b.cancelable,a,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,k(b.touches),k(b.targetTouches),k(b.changedTouches),b.scale,b.rotation);return u}function a(){return function(f){KindleTOS.proxyTouchEvent(f);f.preventDefault()}}
function b(a){return function(b){var g=a.querySelectorAll(".KindleIFrame");KindleAssert(g.length===1,"Expecting exactly one iFrame");var B=g[0],g=B.contentDocument,B=f(B.contentWindow,b);if(g=g.elementFromPoint(b.changedTouches[0].clientX,b.changedTouches[0].clientY))g.dispatchEvent(B),B.defaultPrevented&&b.preventDefault()}}document.addEventListener("touchmove",function(f){f.preventDefault()},!1);var B=["touchstart","touchmove","touchend","touchcancel"],g,k,u;if(KindleHostDeviceDetector.isiOS_8x()&&
KindleHostDeviceDetector.isInAppMode()){g=document.querySelectorAll(".touchproxy");for(k=0;k<g.length;k++)for(u=0;u<B.length;u++)g[k].addEventListener(B[u],b(g[k],0));g=document.querySelectorAll(".touchbhproxy");for(k=0;k<g.length;k++)for(u=0;u<B.length;u++)g[k].addEventListener(B[u],a(g[k]))}}function x(){KindleUpgradeDeviceDetector.isMetroUpdateRequiredBecauseI18NSupported(X,w.language)?q("langSupport"):KindleUpgradeDeviceDetector.isMetroUpdateRequiredBecauseVersionNonSupported(X)&&q();KindleUpgradeDeviceDetector.isMetroUpdateRequiredBecauseCountryNotSupported(X,
w.language,w.ip).done(function(f){f&&q("countryBlk")})}function q(f){if(G){var a=Kindle.URL.getBasePathURL();a.indexOf("k4w")===-1&&(a=Kindle.URL.getHostURL()+"/");var b=KINDLE_UPGRADE_SRC.substr(1+KINDLE_UPGRADE_SRC.indexOf("/")),g=w.language||KindleHostDeviceDetector.getBrowserLanguage();a+=b+"?language="+g;a+=f?"&type="+f:"";G.showWebPage({url:a})}}function J(){var f,a,g;if(!G){g="library";if(w.hasOwnProperty("library"))KindleLocalStorage.removeItem(Y),Kindle.URL.removeQueryParameter("library");
else if(w.asin)g="book";else if(w.clear)Kindle.URL.removeQueryParameter("clear");else if(a=KindleLocalStorage.getItem(Y))try{f=JSON.parse(a);if(f.isSample!==void 0)w.isSample=f.isSample;if(f.type==="reader")g="book",w.asin=f.asin}catch(B){w.asin=a}g==="library"&&(d(),s())}b();h()}function F(f,a){var b=jQuery.Deferred();KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(g){KindleHostDeviceDetector.isOnline()?g.getOwnedContent(f,a).then(b.resolve,b.reject):b.reject("offline")},
b.reject);return b.promise()}function E(){return{setLoginParameters:function(f){k(f)},setFocusToReader:function(){H&&H.setFocus()},showAppbar:function(){H&&H.setToolbarVisible(!0)},hideAppbar:function(){H&&H.setToolbarVisible(!1)},toggleAppbar:function(){H&&H.toggleToolbar()},openBook:function(f){w.asin&&(l(),b());j(f)},goTo:function(f){H&&(f.position>=0?H.goToPosition(f.position):f.location>=0&&H.goToLocation(f.location))},deregister:function(){return ca(!1,!0)},clearDatabases:function(){return KindleModuleManager.require(Kindle.MODULE.DB_CLIENT).pipe(function(f){return f.clear()})},
clearLocalStorage:function(){KindleLocalStorage.clear();return $.Deferred().resolve({success:!0}).promise()},sendMetrics:function(f){f.metrics.method?KindleMetricsManager.emit(f.metrics.method,f.metrics):KindleMetricsManager.emit(f.metrics)},sendMetricsNow:function(f){f.metrics.method?KindleMetricsManager.emitNow(f.metrics.method,f.metrics):KindleMetricsManager.emitNow(f.metrics)},getOwnedContent:function(f){return F(f&&f.lastSyncTime||null,f&&f.reason||null)},requestDeviceName:function(){KindleDebug.warn("requestDeviceName not implemented yet (waiting for new service api)")},
requestDownloadedBookList:function(){return z()},getDownloadedBookInfo:function(f){return A(f)},downloadBook:function(f){C(f)},cancelBookDownload:function(){H&&H.cancelBookDownload()},removeBook:function(f){var a=$.Deferred();H?H.removeBook(f,a.resolve,a.reject):a.reject();return a.promise()},removeBookOwnership:function(f){return L(f)},getSearchContext:function(f){return H?H.getSearchContext(f):$.Deferred().reject()},requestOemAssociateId:function(f){var a=jQuery.Deferred();KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(b){b.getOemAssociateId(f).then(a.resolve,
a.reject)},a.reject);return a.promise()},getTodoItems:function(f){var a=jQuery.Deferred();KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(b){b.getTodoItems(f).then(a.resolve,a.reject)},a.reject);return a.promise()},removeTodoItems:function(f){var a=jQuery.Deferred();KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(b){b.removeTodoItems(f).then(a.resolve,a.reject)},a.reject);return a.promise()},uploadSnapshot:function(f){var a=jQuery.Deferred();
KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).then(function(b){b.uploadSnapshot(f).then(a.resolve,a.reject)},a.reject);return a.promise()},getSearchIndex:function(f){return KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).pipe(function(a){return a.getSearchIndexInfo(f)})},getSelectedText:function(f){return H.getSelectedText(f)},hideContextMenu:function(){H.hideContextMenu()},setServiceHost:function(f){KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).done(function(a){a.setServiceHost(f)})},
uploadJournal:function(){return KindleModuleManager.getModule(KindleModuleManager.JOURNAL_MANAGER).pipe(function(f){return f.uploadJournal()})},setStoreCookies:function(f){var a=$.Deferred();try{for(var b=0;b<f.length;b++)document.cookie=f[b].value;setTimeout(a.resolve,0);return a.promise()}catch(g){return a.reject(g)}},updateAppCache:function(){window.applicationCache.update()},getTOSParams:function(f){var a=$.Deferred(),f=f||{};f.width=f.hasTouch?1366:2560;f.height=f.hasTouch?768:1440;f.dpi=f.hasTouch?
148:72;return a.resolve({cachePollAttemptInterval:18E5,cachePollWaitAfterSuccess:432E5,width:f.width,height:f.height,dpi:f.dpi}).promise()},moveAsinToHost:function(f){return KindleModuleManager.getModule(KindleModuleManager.CONTENT_MIGRATION).pipe(function(a){return a.moveBook(f)})},notifyMigrationStatus:function(f){return KindleModuleManager.getModule(KindleModuleManager.CONTENT_MIGRATION).pipe(function(a){return a.notifyMigrationStatus(f)})},convertPositions:function(f){if(H)return H.convertPositions(f)},
updateAnnotations:function(f){if(H)return H.updateAnnotations(f)},updateReaderChrome:function(f){if(H)return H.updateReaderChrome(f)},pingNA:function(){return KindleNetwork.pingNA()},getUrlForPfm:function(f){var a=new $.Deferred,b="";f&&f.method&&f.pfm&&Kindle.PFMLinks[f.pfm]&&(b=Kindle.PFMLinks[f.pfm][f.method]);return a.resolve({url:b})}}}function L(f){return KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).pipe(function(a){return a.removeOwnership(f.asin,f.contentType)})}function z(){var f=
jQuery.Deferred();KindleModuleManager.getModuleList([KindleModuleManager.DB_CLIENT]).then(function(a){(a=a[KindleModuleManager.DB_CLIENT].getAppDb())&&a.getCachedAsins(Kindle.BookInfo.CachedState.FULLY_DOWNLOADED).then(f.resolve,f.reject)},f.reject);return f.promise()}function A(f){function a(g){var B,k,u={asin:f.asin};g.context=g.context||{};g.metadata=g.metadata||{};for(B in f)B!=="asin"&&f.hasOwnProperty(B)&&(k=g[B]||g.context[B]||g.metadata[B],k!==void 0&&(u[B]=k));b.resolve(u)}var b=jQuery.Deferred();
KindleModuleManager.getModule(KindleModuleManager.DB_CLIENT).then(function(g){g.getBookDb().BookInfoDB(f.asin).getBookInfo().then(a,b.reject)},b.reject);return b.promise()}function C(f){function a(){G.onBookDownloadComplete({asin:f.asin})}function b(a){G.onBookDownloadFailed({asin:f.asin,error:a})}function g(a){if(a!==f.prevPct)f.prevPct=a,G.onBookDownloadProgress({asin:f.asin,pct:a})}if(H){if(f.hostStorage===!0)f.contentProvider=o(f.asin);f.prevPct=0;H.downloadBook(f,g,a,b)}}function g(){j()}function v(f){var a=
f&&f.canOpen,b=f&&f.errorCode,f=f&&f.subErrorCode;KindleTOS.setOpenBookReady();ma();a?($("#"+V.KINDLE_READER_CONTAINER_ID).removeClass("hidden"),m()):u();if(R)R.onReaderOpenStatus(a,b,f)}function u(f){l(f);d();s()}function N(f){if(f){f={asin:w.asin,type:"reader"};if(w.isSample!==void 0)f.isSample=w.isSample;KindleLocalStorage.setItem(Y,JSON.stringify(f))}}function k(f){var a={hostApp:Q(),hostVersion:X,loginParams:f};KindleModuleManager.define(Kindle.MODULE.SERVICE_INITIALIZATION_ARGS,[],function(){return a})}
function D(f){function a(){Kindle.URL.addSavedStateToQueryParameters();window.location.reload(!0)}switch(f.newState){case Kindle.Service.AuthOK:ia.resolve();break;case Kindle.Service.AuthError:f.prevState===Kindle.Service.AuthOK?ca(!0):ja();break;case Kindle.Service.AuthUserMismatch:KindleMetricsManager.emitNow("Service::ClientHashMismatch",{breakdown:["Browser"]});ra().always(a);break;case Kindle.Service.AuthTokenMismatch:a()}}function Q(){return G?{onServiceAuthState:G.onServiceAuthState,getRequestSigningHeaders:G.getRequestSigningHeaders}:
{onServiceAuthState:D,getRequestSigningHeaders:function(){KindleDebug.error("Non-Embedded applications do not use signed request headers.")}}}function P(){function f(b){var g={version:"1.0",clientName:w.kcrFree?Kindle.ClientName.KCRFree:KindleHostDeviceDetector.getClientName(),devicePlatform:a,marketplace:Kindle.DomainToCountryMap[Kindle.URL.getAmazonDomain()]},B={storage:window.localStorage,kindleStreamsUploadCallback:KindleModuleManager.getModuleSync(Kindle.MODULE.METRICS_UPLOADER).uploadKindleStreams,
enabled:!w.kcrFree,logger:KindleDebug,platformContext:g,isOnline:KindleHostDeviceDetector.isOnline};KindleStreamsManager.initialize(B);b={uploadCallback:KindleModuleManager.getModuleSync(Kindle.MODULE.METRICS_UPLOADER).uploadMetrics,kindleStreamsManager:KindleStreamsManager,platformContext:g,dbClient:b,logger:KindleDebug,isOnline:KindleHostDeviceDetector.isOnline,isNumber:isNumber,persistMetrics:!!b};KindleMetricsManager.initialize(b)}var a=KindleHostDeviceDetector.getDeviceType()+":"+KindleHostDeviceDetector.getDevicePlatform();
f();KindleMetricsManager.setBreakdown("Version",KindleVersion.getMetricsVersionString());da()&&KindleMetricsManager.setBreakdown("Partner",da());KindleModuleManager.getModule(KindleModuleManager.DB_CLIENT).done(function(a){f(a)})}function O(){KindleModuleManager.define(Kindle.MODULE.APPLICATION_ARGS,[],w);KindleDBClient.initialize();if(!G){var f={};f.srsBasePath=w.srsBasePath;f.usePdxBucket=w.usePdxBucket;k(f)}KindleModuleManager.registerModuleWithDeferred(KindleModuleManager.JOURNAL_MANAGER,KindlJournalManager.initialize());
f=KindleUserAgentMetricsInfo.browserWithVersionString();G&&KindleHostDeviceDetector.isMetro()&&(ContentMigration.initialize(),f=X);KindleMetricsManager.setBreakdown("Browser",f);KindleModuleManager.getModule(KindleModuleManager.DB_CLIENT).done(function(){Z=KindleModuleManager.getModuleSync(KindleModuleManager.METRICS_MANAGER);G&&Z.emit("zzz::HostVersion_"+X+"_kcr@"+KindleVersion.getMetricsVersionString())}).fail(function(){KindleDebug.error("metricsManagerInitializeError: Can not initialize metrics manager")})}
function K(f){var a;a={};if(da())a.tag=da();if(w.kcrFree)a.kcrFree=!0;if(f.refTag)a.refTag=f.refTag;if(a.asin=f.asin){KindleLocalStorage.removeItem(Y);if(!a.refTag)a.refTag=f.from===Kindle.SampleToDetailPageButton.Close?Kindle.RefTag.Values.StoreSampleClose:Kindle.RefTag.Values.StoreSample;Kindle.URL.isJPDomain()?(a="http://www.amazon.co.jp/dp/"+f.asin+"?ref="+a.refTag,W(a,f.openInNewTab)):LinkUrls.getDetailPage(a).then(function(a){W(a,f.openInNewTab||e())})}else Kindle.URL.isJPDomain()?(a=a.refTag?
"&ref_="+a.refTag:"",W("http://www.amazon.co.jp/b?node=2275256051"+a,f.openInNewTab)):(a.refTag=a.refTag||Kindle.RefTag.Values.StoreLibButton,LinkUrls.getStoreUrl(a).then(function(a){W(a,f.openInNewTab||e())}))}function I(){return!Kindle.URL.isJPDomain()}function M(f,a){var g=Z.startMetrics("Store::TOSOpen"),a=$.extend({storeStartTime:Date.now()},a),k=f===U.LIBRARY?R&&R.onStoreOpenStatus:H&&H.onStoreOpenStatus;ka||(ka=!0,KindleTOS.open(a).then(function(a){k&&k(Kindle.STORE.OPEN_STORE);a?KindleLocalStorage.removeItem(Y):
(f!==U.LIBRARY&&(l(),b()),m(),ma(),KindleTOS.setStoreClosedCallback(B));Z.endMetrics(g);ka=!1},function(){k&&k(Kindle.STORE.GENERIC_ERROR);Z.modifyMetricsMethod(g,"Store::TOSOpenFail");Z.endMetrics(g);ka=!1}))}function S(){var f=!!w.storePath,a=Kindle.PFMLinks[la]?Kindle.PFMLinks[la].country==="US":!1;return!e()&&Kindle.URL.getAmazonDomain()===Kindle.CountryToDomainMap.us&&a&&(KindleHostDeviceDetector.isiOS()||f)}function T(f,a){var b=f===U.LIBRARY?R&&R.onStoreOpenStatus:H&&H.onStoreOpenStatus;!KindleHostDeviceDetector.isOnline()&&
b?b(Kindle.STORE.OFFLINE_ERROR):S()?M(f,a):(a.openInNewTab=a.openInNewTab||KindleHostDeviceDetector.isiOS(),K(a),b&&b(Kindle.STORE.OPEN_STORE))}function ea(f,a){var b=a&&a.hasOwnProperty("asin")?a.asin:null,g=f===U.LIBRARY?Kindle.RefTag.Values.NotebookLibrary:Kindle.RefTag.Values.NotebookReader,B=f===U.LIBRARY?R&&R.onNotebookOpenStatus:H&&H.onNotebookOpenStatus;!KindleHostDeviceDetector.isOnline()&&B?B(Kindle.Notebook.OFFLINE_ERROR):(b=LinkUrls.getNotebookURL(b,g),W(b,!0),B&&B(Kindle.Notebook.OPEN_NOTEBOOK))}
function f(f){f=Kindle.URL.getBaseURL()+"?asin="+f.asin;W(f,e())}function B(){w.asin?(b(),va(1E3)):(d(),s(),R&&R.libraryUpdateNeeded())}function va(f){na=setTimeout(function(){fa&&($("body").append(fa),fa=null);var f=$("#loading_spinner"),a=$(window).width(),b=parseInt(f.css("width"),10),g=$(window).height(),B=parseInt(f.css("height"),10);f.css("top",(g-B)/2+"px").css("left",(a-b)/2+"px").show()},f)}function ma(){na&&clearTimeout(na);var f=$("#loading_spinner").detach();f.length&&!fa&&(fa=f)}function W(f,
a){if(G)KindleDebug.error("Tried to go to a different URL when we are hosted");else if(a&&KindleHostDeviceDetector.isiOS()&&window.navigator.standalone){var b=document.createElement("a");b.href=f;b.target="_blank";var g=document.createEvent("MouseEvents");g.initEvent("click",!0,!0);b.dispatchEvent(g)}else a?window.open(f):window.location=f}function ja(){return KindleRegistrationHandler.register()}function ca(f,a){return KindleRegistrationHandler.deregister(f,a).then(function(){if(G&&G.onDeregister)G.onDeregister(!0)},
function(){if(G&&G.onDeregister)G.onDeregister(!1)})}function ra(){KindleLocalStorage.clear();return KindleModuleManager.getModuleSync(KindleModuleManager.DB_CLIENT).clear()}function da(){return w.tag}function sa(){$(window).height()!==ta&&(ta=$(window).height(),$(window).trigger("resize"),window.scrollTo(0,0));setTimeout(sa,1E3)}var V={KINDLE_READER_ID:"KindleReaderIFrame",KINDLE_READER_CONTAINER_ID:"KindleReaderContainer",KINDLE_LIBRARY_ID:"KindleLibraryIFrame",KINDLE_LIBRARY_CONTAINER_ID:"KindleLibraryContainer",
KINDLE_STORE_CONTAINER_ID:"KindleStoreContainer"},U={LIBRARY:"fromLibrary",READER:"fromReader"},oa,la="",qa="KindleIFrame",Y="last_app_activity",aa,ba,w={},H=null,R=null,ga,ka=!1,ha,na,fa,Z,pa,X,G,ia,ta=$(window).height,ua=!1;return{initialize:function(){if(!ua){ua=!0;KindleHostDeviceDetector.isiOSAppMode()||(Kindle.URL.normalizeQueryString(),w=$.extend({},Kindle.URL.getFragIdParameters(),Kindle.URL.getQueryParameters()));ma();oa=[Kindle.MODULE.APPCACHE_EVENTHANDLER,KindleModuleManager.RESOURCE_BUNDLE,
KindleModuleManager.DB_CLIENT,KindleModuleManager.METRICS_MANAGER,KindleModuleManager.SERVICE_CLIENT,KindleModuleManager.CONSTANTS,KindleModuleManager.NETWORK,KindleModuleManager.JOURNAL_MANAGER,KindleModuleManager.LINK_URLS];KindleModuleManager.registerModule(KindleModuleManager.CONSTANTS,Kindle);KindleModuleManager.registerModule(KindleModuleManager.RESOURCE_BUNDLE,ResourceBundle);KindleModuleManager.registerModule(KindleModuleManager.NETWORK,KindleNetwork);KindleModuleManager.registerModule(KindleModuleManager.METRICS_MANAGER,
KindleMetricsManager);KindleModuleManager.registerModule(KindleModuleManager.LINK_URLS,LinkUrls);ResourceBundle.setStringIDMode(!!w.stringIDMode);ResourceBundle.initialize(w.language||w.lang,w.region);KindleTemplateManager.initialize();KindleStreamingReaderClient.initialize();P();t();document.title=ResourceBundle.getLocalizedString("k_window_title");ia=new jQuery.Deferred;KindleAppCacheManager.initialize(ia);KindleHostDeviceDetector.isiOS()&&$("body").addClass("ipad");if(KindleHostDeviceDetector.hasiOSInnerHeightBug())window.onresize=
function(){window.scrollTo(0,0)},$("body").addClass("iosInnerHeightBug");if(KindleHostDeviceDetector.isSafari(6.1))$(document).on("mousewheel",function(){});KindleDeviceCapabilities.hasPageResizeIssues()&&sa();if(r()){window.onbeforeunload=n;if(w.host){if(!KindleHostDeviceDetector.isMetro()||!/^(ms-appx:\/\/)?amznmobilellc.kindleforwindows8$/.test(w.host)){console.error("unknown embedded host: "+w.host);return}pa=w.host;X=w.hostVersion;G=ReaderHostInterfaceFactory(E(),pa);KindleModuleManager.define(KindleModuleManager.EMBEDDED_HOSTINTERFACE,
[],G);Kindle.URL.removeQueryParameter("host");x();G.onReaderLoaded({readerVersion:KindleVersion.getVersionString(),sendCrashWVMetricsVersions:[]});y();KindleHostDeviceDetector.isMetro()&&KindleModuleManager.getModuleList([KindleModuleManager.DB_CLIENT]).then(function(f){f[KindleModuleManager.DB_CLIENT].enableFullDb().then(function(){KindleDebug.log("In metro mode, enabling full database")},function(){KindleDebug.error("In metro mode, was not able to enable full database.")})})}if(w.ref_)if(Kindle.RefTag.isRWISRefTag(w.ref_)){var f=
w.ref_,a=w.asin?w.asin:"";Kindle.URL.addToSavedSiteState(w);Kindle.URL.removeAllQueryParameters();KindleBanner.showRWISBanner(f,a)}else Kindle.URL.addToSavedSiteState({ref_:w.ref_}),Kindle.URL.removeQueryParameter("ref_");w.tag&&(Kindle.URL.addToSavedSiteState({tag:w.tag}),Kindle.URL.removeQueryParameter("tag"));if(w.kcrFree&&!w.asin)w.asin=Kindle.ERROR.OPEN_BOOK_ASIN_NOT_SPECIFIED;O();w.storePath&&KindleTOS.setStoreURL(decodeURIComponent(w.storePath));KindleTOS.setOpenBookCallback(j);KindleTOS.setStoreClosedCallback(B);
if(w.kcrFree)J();else{var b;KindleModuleManager.getModule(KindleModuleManager.SERVICE_CLIENT).pipe(function(f){b=f;return f.authenticate()}).pipe(function(){b.getPFM().done(function(f){la=f.pfm;var a=KindleModuleManager.getModuleSync(KindleModuleManager.METRICS_MANAGER).getKindleStreamsManager();a.setPfm(la);a.setEid(f.eid);LinkUrls.initializeEid(f.eid)});J()})}(G||w.kcrFree)&&ia.resolve();KindleChromeInstaller.initialize()}}},registerEventCallback:function(f,a){var b=[],g;for(g in Kindle.APP_CACHE)b.push(Kindle.APP_CACHE[g]);
b.indexOf(f)>=0&&KindleAppCacheEventHandler.addEventListener(f,a)},getSharedModuleSync:function(f){oa.indexOf(f)===-1&&KindleDebug.error(f+"is not a shared module");return KindleModuleManager.getModuleSync(f)},getSharedModules:function(){return KindleModuleManager.getModuleList(oa)},getAppInterfaceForReader:function(){function B(f){setTimeout(function(){l(f);b()},0)}return G?{onReaderReady:g,closeReader:function(f){G.onBookClose();B(f)},onStartReadingStatus:function(f){G.onBookOpenStatus(f);(!f||
!f.canOpen)&&B()},onRendererLoaded:N,openStore:function(f){G.onOpenStore({origin:U.READER,asin:f})},openNotebook:function(f){G.onOpenNotebook({origin:U.READER,asin:f})},pinBookToStart:function(f){G.pinBookToStart(f)},onReaderTapped:function(){G.onReaderTapped()},onUserAction:function(){G.onUserAction()},hideAppBar:function(){G.hideAppBar()},onBookDownloadComplete:function(f){G.onBookDownloadComplete(f)},searchContent:function(f){G.searchContent(f)},showAnnotations:function(f){G.showAnnotations(f)},
isHostControlled:a,isEmbeddedInWebsite:e,isNotebookAvailable:I}:{onReaderReady:g,closeReader:u,onStartReadingStatus:v,onRendererLoaded:N,openStore:function(f){T(U.READER,f)},openNotebook:function(f){ea(U.READER,f)},openFullKCR:f,register:ja,deregister:ca,pinBookToStart:function(){},onReaderTapped:function(){},onUserAction:function(){},hideAppBar:function(){},onBookDownloadComplete:function(){},searchContent:function(){},showAnnotations:function(){},isHostControlled:a,isEmbeddedInWebsite:e,isNotebookAvailable:I}},
setReaderInterface:function(f){KindleInterfaces.assertImplements(f,KindleInterfaces.IKindleReader);H=f},getAppInterfaceForLibrary:function(){return{openExternalLink:function(f){W(f,!0)},storeIsTOS:S,openStore:function(f){T(U.LIBRARY,f)},isNotebookAvailable:I,openNotebook:function(f){ea(U.LIBRARY,f)},openBook:j,onLibraryLoaded:p,getQueryParameters:function(){return w},register:ja,deregister:ca}},setLibraryInterface:function(f){KindleInterfaces.assertImplements(f,KindleInterfaces.IKindleLibrary);R=
f},cleanupForNextUser:ra,register:ja,deregister:ca,getQueryParams:function(){return w},gotoURL:W,isHostControlled:a,isEmbeddedInWebsite:e,isNotebookAvailable:I,getEmbeddorHostname:function(){return pa},getPartnerTag:da}}var KindleApp=KindleAppFactory();typeof amznJQ!=="undefined"&&amznJQ.declareAvailable("cascade");
var KindleBanner=function(){function a(){if(j){var a=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a-=$("#"+d.KINDLE_BANNER_CONTAINER_ID).height();a={height:a};$("."+d.KINDLE_APP_CONTAINER).css(a)}}function e(){if(!j){j=!0;$("."+d.KINDLE_BANNER_CONTAINER_ID).css("display","block");var b={top:$("#"+d.KINDLE_BANNER_CONTAINER_ID).height()+"px"};$("."+d.KINDLE_APP_CONTAINER).css(b);a();window.addEventListener("resize",a)}}function b(a){return"https://images-na.ssl-images-amazon.com/images/P/"+
a+".01._SX60_SY80_TTXW_SCLZZZZZZZ_.jpg"}var d={KINDLE_APP_CONTAINER:"KindleAppContainer",KINDLE_BANNER_CONTAINER_ID:"KindleBannerContainer",KINDLE_BANNER_CENTER:"kindleApp_banner_center",KINDLE_BANNER_TEXT:"kindleApp_banner_RWIS_text"},c,j=!1,l={rwis:4,next_available:5},m={rwis:1};return{showRWISBanner:function(s,p){function h(){c.emit("Banner::RWIS::LearnMore")}function n(){c.emit("Banner::RWIS::GetAppLink")}if(!l.rwis||!m.rwis?0:LocalStorageCounter("kcrNotification."+l.rwis).getValue()<m.rwis){c||
(c=KindleModuleManager.getModuleSync(KindleModuleManager.METRICS_MANAGER));c.emit("Banner::RWIS::Show");var r=KindleHostDeviceDetector.isiOS(),o=s&&s==="kcr_rwis_kshare"?!0:!1,o={learnMoreLink:LinkUrls.getKCPLandingPageLink(s),bookCoverURL:b(p),isiPad:r,isKp:o},o=$(Handlebars.templates.KindleRWISBanner(o)),y=ResourceBundle.getLanguage();if(r)switch(o.find("#kindleApp_banner_get_app_button").click(n),y){case "de":case "fr":o.find("#"+d.KINDLE_BANNER_CENTER).css("width","540px");o.find("#"+d.KINDLE_BANNER_TEXT).css({"line-height":"20px",
"padding-top":"0"});break;case "ja":case "it":o.find("#"+d.KINDLE_BANNER_TEXT).css("padding-top","0");o.find("#"+d.KINDLE_BANNER_CENTER).css("width","465px");break;case "pt":o.find("#"+d.KINDLE_BANNER_TEXT).css("padding-top","0");o.find("#"+d.KINDLE_BANNER_CENTER).css("width","505px");break;case "es":o.find("#"+d.KINDLE_BANNER_TEXT).css("padding-top","0"),o.find("#"+d.KINDLE_BANNER_CENTER).css("width","525px")}else r={showAppleLogo:!0,showWindowsLogo:!Kindle.URL.isJPDomain(),showAmazonLogo:!0,showAndroidLogo:!0},
r=new KindleTextMeWidget(r,"KindleRWISBanner"),o.find("#kindleApp_banner_text_me_widget_wrapper").append(r),o.find("#kindleApp_banner_learn_more").click(h),y==="fr"&&o.find("#"+d.KINDLE_BANNER_TEXT).css("line-height","20px");o.find("#kindleApp_banner_close_button").click(function(){j&&(window.removeEventListener("resize",a),$("."+d.KINDLE_BANNER_CONTAINER_ID).css("display","none"),$("."+d.KINDLE_APP_CONTAINER).css({top:"0px",height:"100%"}),j=!1);l.rwis&&m.rwis&&LocalStorageCounter("kcrNotification."+
l.rwis).increment();c.emit("Banner::RWIS::Close")});$("#KindleBannerContainer").append(o);e()}},changeBookCover:function(a){j&&(a=b(a),$("#kindleApp_banner_book_cover").attr("src",a))}}}(),KindleBuildInfo=function(){function a(a,d,c){var j=$.Deferred();$.getJSON(e,Math.floor(Math.random()*1E9),function(l){l=l[a];c(l)?j.resolve(l):j.reject(d)}).error(function(){j.reject(d)});return j.promise()}var e="./offline/build_info.uncached.js";return{getCurrentTotalAppcacheFileCount:function(){return a("filecount",
-1,function(a){return typeof a==="number"&&a>1})}}}(),KindleMetricsManager=function(){function a(){function a(){Date.now()-f>b&&(I=Date.now());f=Date.now();setTimeout(a,g)}if(!M){M=!0;var b=2E4,g=5E3,f;I=0;Date.now();f=Date.now();setTimeout(a,g)}}function e(a){if(a.timerStart>=I)return!0;a=Date.now()-a.timerStart;F("Metrics::Suspended",{time:a});return!1}function b(){if(A.length>0){var a=A;A=[];r().insertList(a).fail(function(){Array.prototype.push.apply(a,A);A=a})}}function d(){P&&O<=Date.now()+
K||(clearTimeout(P),P=setTimeout(function(){P=null;d();n()},K),O=Date.now()+K)}function c(a){if($.isArray(a))return a;var b;if(a){b=[];for(var g in a)b.push(a[g])}return b}function j(a){var b=a.timers;if(b)for(var g in b);a.timers=c(a.timers);a.counters=c(a.counters)}function l(a){var b=new jQuery.Deferred,g=[],f=[];if(a){for(b=0;b<a.length;b++){var B=a[b];a[b].kindleStream?g.push(B):f.push(B)}return p(f)}return b.resolve([])}function m(a){for(var b=new jQuery.Deferred,g=0;g<a.length;g++)j(a[g]);
a.length>0&&r()?r().insertList(a).then(function(){b.resolve(a)},function(){l(a).then(function(){b.resolve(a)},function(){Array.prototype.push.apply(A,a);b.reject(a)})}):(Array.prototype.push.apply(A,a),b.resolve(a));return b.promise()}function s(a,b,k){var f=g[a],a=f.counters;if(!a)a=f.counters={};f=a[b];if(!f&&(f=a[b]={},f.name=b,f.count=0,k))typeof k==="string"&&(k=[k]),f.breakDown=k;return f}function p(a){var b=new jQuery.Deferred,g=/exception/i;u()?v(k.devicePlatform,k.clientName,k.version,k.marketplace,
k.breakdownDeclarations,a).then(function(f){f.Output.metricProcessCount&&f.Output.metricProcessCount>0||f.Output.__type&&f.Output.__type.match(g)?b.resolve(a):b.reject(a)},function(){b.reject(a)}):b.reject(a);return b.promise()}function h(a,b,g){var f,B=new jQuery.Deferred;if(u()){if(!r())return B.reject(),B.promise();r().batchTransaction(b).done(function(a){if(a[0]&&a[0].length>0){f=a[0];for(a=0;a<f.length;a++){var b=f[a];if(b.breakDown)b.breakdown=b.breakDown,delete b.breakDown}g(f).done(B.resolve).fail(function(){r()&&
r().insertList(f);B.reject()})}else B.resolve([])}).fail(function(){B.reject()})}else B.reject();return B.promise()}function n(a){return $.when(z.uploadKS(a),h("PMET",[{operation:Kindle.DB.GET_RECORD_OPERATION,tableName:E,params:[{method:{operator:Kindle.DB.NOT_EQUAL,values:["KindleStreamsData"]}}]},{operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:E,params:[{method:{operator:Kindle.DB.NOT_EQUAL,values:["KindleStreamsData"]}}]}],p))}function r(){try{if(L)return L.getAppDb().getTable(E)}catch(a){}return null}
function o(a){function b(f,a){var g={};g.name=a.name;g.count=a.value;var k=y(a.breakdown);if(k.length>0)g.breakDown=k;if(!f.counters)f.counters=[];f.counters.push(g)}if(!(typeof a==="object"&&typeof a.name==="string"&&typeof a.params==="undefined"||typeof a.params==="object"))return null;var g={},f=a.name,a=$.extend({},a.params);g.method=f;g.time=0;if(a){if(a.time>=0&&N(a.time))g.time=a.time;if(a.submetrics){if(!$.isArray(a.submetrics))a.submetrics=[a.submetrics];for(f=0;f<a.submetrics.length;f++)b(g,
a.submetrics[f])}f=y(a.breakdown);if(f.length>0)g.breakDown=f}return g}function y(a){var b=[];if(a===void 0)return b;$.isArray(a)||(a=[a]);for(var g=0;g<a.length;g++)typeof a[g]==="string"&&(D.indexOf(a[g]),b.push(a[g]));return b}function t(a){a||(a={});if(!a.startTime)a.startTime=Date.now();N(a.startTime);this.params=a}function x(a,b){return a=$.map(a,function(a){a.time=b;return a})}function q(a){if(typeof a[0]==="string"){var b={};b.name=a[0];if(a[1])b.params=a[1];a=[b]}else a=$.isArray(a[0])?a[0]:
[];return $.map(a,o)}function J(){}function F(){var a=q(arguments);return m(a).fail(J)}var E="metrics",L=null,z=null,A=[],C=0,g={},v,u=function(){return navigator.onLine},N=isNumber,k={breakdownDeclarations:{}},D=["Browser","Version","Partner","ProcessorClass","ViewState","SystemLanguage","Online","CloudItemsCount","LocalItemsCount","HostVersion","PFM","CrashLocation"],Q=Object.freeze({Short:3E4,Default:3E5,Min:1E4,Max:6E5}),P=null,O=0,K=Q.Default,I,M=!1;t.prototype.elapsed=function(){var a=0;N(this._elapsed)?
a=this._elapsed:N(this.params.startTime)&&e({timerStart:this.params.startTime})&&(a=Date.now()-this.params.startTime);return a};t.prototype.stop=function(){this._elapsed=Date.now()-this.params.startTime;return this};t.prototype.emit=function(){var a=this.elapsed(),b=q(arguments),b=x(b,a);return m(b).fail(J)};t.prototype.emitNow=function(){var a=this.elapsed(),b=q(arguments),b=x(b,a);return l(b).fail(J)};return{modifyMetricsMethod:function(a,b){if(g[a])g[a].method=b},startMetrics:function(a,b){var k=
{};k.method=a;k.timerStart=Date.now();if(b&&b.breakdown)k.breakDown=y(b.breakdown);C++;g[C]=k;return C},endMetrics:function(a,b){var k,f=g[a];if(f&&f.timerStart){if(e(f))f.time=Date.now()-f.timerStart;delete f.timerStart;var B=[f];b&&(typeof b==="string"&&(b=[b]),$.each(b,function(a,b){var g=$.extend({},f);g.method+=b;B.push(g)}));k=m(B);delete g[a]}else k=(new jQuery.Deferred).reject().promise();return k},cancelMetrics:function(a){delete g[a]},startSubTimer:function(a,b,k){var f=g[a],a=f.timers;
if(!a)a=f.timers={};f=a[b];if(!f&&(f=a[b]={},f.name=b,f.count=0,f.time=0,k=y(k),k.length>0))f.breakDown=k;if(!f.timerStart)f.timerStart=Date.now()},endSubTimer:function(a,b){var k=g[a].timers[b];k.timerStart!==void 0&&(e(k)&&(k.count+=1,k.time+=Date.now()-k.timerStart),delete k.timerStart)},renameSubTimer:function(a,b,k){var a=g[a],f=a.timers[b];if(f.time>=0)a.timers[k]=f,a.timers[k].name=k,delete a.timers[b]},getSubTimer:function(a,b){return g[a].timers[b]},setSubCounter:function(a,b,g,f){a=s(a,
b,f);N(g)||(g=1);a.count=g},increaseSubCounter:function(a,b,g,f){a=s(a,b,f);N(g)||(g=1);a.count+=g},initialize:function(g){z=g.kindleStreamsManager;v=g.uploadCallback;k=$.extend(k,g.platformContext);L=g.dbClient;u=g.isOnline||u;N=g.isNumber;g.persistMetrics&&(b(),d());a()},uploadMetrics:n,setMetricsUploadInterval:function(a){var b=K;Q.Min<a&&a<Q.Max||(a=K);a!==K&&(K=a,d());return b},UploadInterval:Q,getKindleStreamsManager:function(){return z},setBreakdown:function(a,b){$.isArray(b)&&(b=b.join(":"));
typeof b==="string"&&D.indexOf(a)>-1&&(k.breakdownDeclarations[a]=b)},clearBreakdowns:function(){k.breakdownDeclarations={}},replaceBreakdowns:function(a){k.breakdownDeclarations=a},createTimer:function(){return new t},emitNow:function(){var a=q(arguments);return l(a).fail(J)},emit:F}}(),KindleStreamsManager=function(){function a(a,d){function l(a,b){var d=q.getLastSpan();(a!=d.startPosition||b!=d.endPosition)&&h(a,b)}function e(a,b){var d=q.getBookMetadata();j.openContent(d.contentType,d.embeddedId,
d.asin,d.srl,d.erl,d.bookLength,{},d.bookOpenTime);c();q.setStatus(t);h(a,b)}function h(b,g){q.setLastSpan({startPosition:b,endPosition:g});a===d?j.consumeContentPoint("Reading","Text",a,{},Date.now()):j.consumeContentSpan("Reading","Text",a,d,{},Date.now());c()}n.log("Consume Content was called. Current state: ["+b()+"]");var m=q.getStatus();m===y?e(a,d):m===t&&l(a,d)}function e(){n.log("Hide was called. Current state: ["+b()+"]");q.getStatus()===t&&(j.hideContext("Book",{},Date.now()),c(),q.setStatus(x))}
function b(){var a=q.getStatus();return a?a.name:"null"}function d(a){var b=new jQuery.Deferred,d=r.clear();if(d.length>0){var c=Manager.buildUploadKindleStreamsRequest(d,h.devicePlatform,h.clientName,h.marketplace,m,s,KindleVersion.getVersionNumber());l(c.url,c.postData,a).then(function(){b.resolve(d)},function(){r.prepend(d);b.reject(d)})}else b.resolve([]);return b.promise()}function c(){var a=j.events.pop();r.add(a)}var j=null,l=null,m=null,s=null,p=function(){return navigator.onLine},h={},n=
null,r=function(){function a(){if(c){var b=d.getItem(l);return b?JSON.parse(b):[]}else return[]}function b(a){c&&(a=JSON.stringify(a),d.setItem(l,a))}var d=null,c=null,l="ks_metrics";return{init:function(a){d=a.storage;c=a.enabled},get:a,add:function(d){var c=a();c.push(d);b(c)},clear:function(){var d=a();b([]);return d},prepend:function(d){if(d){var c=a();b(d.concat(c))}}}}(),o={name:"CLOSED",value:0},y={name:"OPEN_BUT_UNCONSUMED",value:1},t={name:"OPEN",value:2},x={name:"HIDDEN",value:3},q=function(){function a(d){n.log("KS: Setting status to ["+
d.name+"]");b=d}var b=o,d=null,c=null;return{getStatus:function(){return b},setStatus:a,getLastSpan:function(){return c},setLastSpan:function(a){c=a},getBookMetadata:function(){return d},setBookMetadata:function(a){d=a},reset:function(){c=d=null;a(o)}}}();return{initialize:function(a){typeof a.kindleStreamsUploadCallback!=="function"&&reportError("Invalid uploadCallback","The initialization parameter 'uploadCallback' must be a function");l=a.kindleStreamsUploadCallback;n=a.logger;r.init({logger:a.logger,
storage:a.storage,enabled:a.enabled});h=$.extend(h,a.platformContext);p=a.isOnline||p;j=new Manager;q.reset()},setPfm:function(a){m=a},setEid:function(a){s=a},uploadKS:function(a){if(p())return a?d(!0):d(!1)},openBook:function(a){n.log("OpenBook was called. Current state: ["+b()+"]");if(q.getStatus()===o){q.reset();var d={bookOpenTime:Date.now()};$.extend(d,a);q.setBookMetadata(a);q.setStatus(y)}},closeBook:function(){n.log("Close Book was called. Current state: ["+b()+"]");e();q.reset()},consumeContent:a,
showBook:function(){n.log("Restore was called. Current state: ["+b()+"]");if(q.getStatus()===x){var d=q.getBookMetadata();d.bookOpenTime=Date.now();q.setBookMetadata(d);q.setStatus(y);d=q.getLastSpan();a(d.startPosition,d.endPosition)}},hideBook:e}}(),EventTypes=function(){function a(){}a.OpenContext="OpenContext";a.ShowContext="ShowContext";a.HideContext="HideContext";a.OpenContent="OpenContent";a.Action="Action";a.ContentAction="ContentAction";a.ConsumeContentSpan="ConsumeContentSpan";a.ConsumeContentPoint=
"ConsumeContentPoint";a.AuxContentState="AuxContentState";a.Metadata="Metadata";a.SettingState="SettingState";return a}(),Manager=function(){function a(){this.events=[]}a.prototype.getEvents=function(){return this.events.slice(0)};a.prototype.clearEvents=function(a){var b=this.events;b.splice(0,a&&a<b.length?a:b.length)};a.prototype.addEvent=function(a){this.events.push(a)};a.prototype.consumeContentPoint=function(a,b,d,c,j){c===void 0&&(c={});this.addEvent({type:EventTypes.ConsumeContentPoint,timestamp:j||
Date.now(),context:a||KSRequestHandler.CONTEXT_FALLBACK,pointType:b,position:Math.max(d||0,0),metadataMap:c})};a.prototype.consumeContentSpan=function(a,b,d,c,j,l){j===void 0&&(j={});this.addEvent({type:EventTypes.ConsumeContentSpan,context:a||KSRequestHandler.CONTEXT_FALLBACK,timestamp:l||Date.now(),spanType:b,startPosition:d,endPosition:c,metadataMap:j})};a.prototype.hideContext=function(a,b,d){b===void 0&&(b={});this.addEvent({type:EventTypes.HideContext,context:a||KSRequestHandler.CONTEXT_FALLBACK,
timestamp:d||Date.now(),metadataMap:b})};a.prototype.openContent=function(a,b,d,c,j,l,m,s){m===void 0&&(m={});this.addEvent({type:EventTypes.OpenContent,contentType:a,timestamp:s||Date.now(),asin:d,embeddedId:b,srl:c,erl:j,bookLength:l,metadataMap:m})};a.prototype.openContext=function(a,b,d,c){d===void 0&&(d={});this.addEvent({type:EventTypes.OpenContext,openerContext:a||KSRequestHandler.CONTEXT_FALLBACK,openedContext:b||KSRequestHandler.CONTEXT_FALLBACK,timestamp:c||Date.now(),metadataMap:d})};a.prototype.performAction=
function(a,b,d,c){d===void 0&&(d={});this.addEvent({type:EventTypes.Action,context:a||KSRequestHandler.CONTEXT_FALLBACK,actionId:b,timestamp:c||Date.now(),metadataMap:d})};a.prototype.performContentAction=function(a,b,d,c,j,l){j===void 0&&(j={});this.addEvent({type:EventTypes.ContentAction,context:a||KSRequestHandler.CONTEXT_FALLBACK,actionId:b,startPosition:d,endPosition:c,timestamp:l||Date.now(),metadataMap:j})};a.prototype.recordAuxContentState=function(a,b,d,c,j,l,m){l===void 0&&(l={});this.addEvent({type:EventTypes.AuxContentState,
auxContentType:a,supportsMainContent:b,hasData:d,isEnabled:c,supportsNoData:j,timestamp:m||Date.now(),metadataMap:l})};a.prototype.recordMetadata=function(a,b,d){this.addEvent({type:EventTypes.Metadata,context:a||KSRequestHandler.CONTEXT_FALLBACK,timestamp:d||Date.now(),metadataMap:b})};a.prototype.recordSetting=function(a,b,d,c,j,l){j===void 0&&(j={});this.addEvent({type:EventTypes.SettingState,context:a||KSRequestHandler.CONTEXT_FALLBACK,settingId:b,state:d,isChange:c,timestamp:l||Date.now(),metadataMap:j})};
a.prototype.showContext=function(a,b,d){b===void 0&&(b={});this.addEvent({type:EventTypes.ShowContext,context:a||KSRequestHandler.CONTEXT_FALLBACK,timestamp:d||Date.now(),metadataMap:b})};a.getUploadUrl=function(){for(var a=!1,b=0,d=[/k4w/,/pre/];b<d.length;b++)if(d[b].test(window.location.hostname)){a=!0;break}b="read.amazon.co.jp";a&&(b="read-pre-prod-jp.amazon.com");return"https://"+b+"/api/uploadMetrics"+window.location.search};a.buildUploadKindleStreamsRequest=function(e,b,d,c,j,l,m){e={devicePlatform:b,
clientName:d,versionForKindleStreams:m,messageNumber:-1,sessionId:"-1",metricBreakdown:{},metrics:[],kindleStreamsMetrics:e.map(function(a){return JSON.stringify(a)}),marketplace:c,pfm:j,eid:l};return{url:a.getUploadUrl(c),serviceCall:"uploadMetrics",postData:e,async:!1}};return a}(),KSRequestHandler=function(){function a(){}a.CONTEXT_FALLBACK="Unknown";return a}(),KindleNetwork=function(){function a(){return s=navigator.onLine}function e(){a()===!1?b(!1):$.ajax("/service/web/reader/ping")}function b(a){l&&
(window.clearTimeout(l),l=0);m=Date.now();a!==j&&(j=a,c.callEventListeners(a?"online":"offline"));d()}function d(){c.hasEventListener(j?"offline":"online")?l||(l=window.setTimeout(e,j?9E5:18E4)):l&&(window.clearTimeout(l),l=0)}var c=new ListenerManager,j=!0,l,m=0,s;return{pingNA:function(){var a=new $.Deferred;$.ajax("https://read.amazon.com").then(function(b,d,c){a.resolve(c&&c.status!==0)},function(){a.resolve(!1)});return a.promise()},initialize:function(){$(document).ajaxComplete(function(a,d,
c){c.qaMetricsIngester||b(!!d.status)});document.body.addEventListener("offline",e);document.body.addEventListener("online",e);b(a())},addEventListener:function(a,b){c.addEventListener(a,b);d()},removeEventListener:function(a,b){c.removeEventListener(a,b);d()},isOnline:function(d){s!==a()&&b(s);d=Number(d);return Date.now()-m<(d>=0?d:Infinity)?j:s===!1?!1:null}}}();
Kindle.RefTag=function(){return{Values:{StorePromoMangaJP:"kcr_store_promo_manga_jp",StoreLibButton:"kcr_store_libbutton",StoreSample:"kcr_store_sample",StoreSampleClose:"kcr_store_sample_close",StoreEmptyLibIpad:"kcr_store_emptylib_ipad",StoreLibButtonIpad:"kcr_store_libbutton_ipad",NotebookLibrary:"kcr_notebook_lib",NotebookReader:"kcr_notebook_rdr"},isRWISRefTag:function(a){return a&&a.indexOf("kcr_rwis_")===0}}}();
var KindleRegistrationHandler=function(){function a(){var a=e(Kindle.URL.getBaseURL()),c=b.apUrl;c+="?openid.assoc_handle="+b.assocHandle;c+="&openid.return_to="+encodeURIComponent(a);c+="&openid.mode=logout";c+="&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0";(a=Kindle.URL.getSiteState())&&(c+="&"+a);KindleApp.gotoURL(c)}function e(a){var c=b.apUrl;c+="?openid.assoc_handle="+b.assocHandle;c+="&openid.return_to="+encodeURIComponent(a);c+="&openid.mode=checkid_setup";c+="&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0";
c+="&openid.identity=";c+="http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select";c+="&openid.claimed_id=";c+="http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select";c+="&pageId=amzn_kcr";(a=Kindle.URL.getSiteState())&&(c+="&"+a);return c}var b=function(){function a(b){b=b.toLowerCase();return{apUrl:"https://"+b+"-pre-prod.amazon.com/ap/signin",assocHandle:"amzn_kweb_"+b}}var b=Kindle.URL.getAmazonDomain();if(Kindle.URL.isPreProd()){var e=Kindle.URL.getPreProdCountryCode();if(e)return a(e)}return function(){var a=
Kindle.DomainToCountryMap[b];return{apUrl:"https://www."+b+"/ap/signin",assocHandle:a==="us"?"amzn_kweb":"amzn_kweb_"+a}}()}();return{register:function(){KindleApp.gotoURL(e(Kindle.URL.getBaseURL()))},deregister:function(b,c){function e(){var a=new jQuery.Deferred;KindleModuleManager.getModule(KindleModuleManager.JOURNAL_MANAGER).then(function(b){b.uploadJournal().then(a.resolve,a.resolve)});return a.promise()}function l(){var a=new jQuery.Deferred;y.getAppDb().getPinnedSessionIds().done(function(b){KindleModuleManager.getModuleSync(KindleModuleManager.SERVICE_CLIENT).deregisterSessions(b).then(a.resolve,
a.reject)});return a.promise()}function m(){function a(){n.uploadMetrics().then(p,p)}r.then(a,a)}function s(){h.reject()}function p(){c?KindleApp.cleanupForNextUser().then(function(){KindleDebug.log("db & localStorage cleared.");KindleApp.isHostControlled()||a();h.resolve()},function(){KindleDebug.log("Failed to clear db/localStorage");KindleApp.isHostControlled()||a();h.resolve()},function(a){h.notify(a)}):(KindleLocalStorage.removeItem(Kindle.App.LIBRARY_FAIL_FLAG),y.getAppDb().clearDeviceToken().then(a,
a),h.resolve())}var h=new jQuery.Deferred,n=KindleModuleManager.getModuleSync(KindleModuleManager.METRICS_MANAGER),r,o=n.createTimer();r=c?o.emit([{name:"Library::SignOut"},{name:"Library::SignOut:Intentional"}]):o.emit([{name:"Library::SignOut"},{name:"Library::SignOut:Unintentional"}]);var y=KindleModuleManager.getModuleSync(KindleModuleManager.DB_CLIENT);b?p():$.when(e(),l()).then(m,s);return h.promise()}}}(),KindleStreamingReaderClient=function(){function a(a){var b,a=a||{};b=(a.srsHostName||
"")+("/"+(a.srsBasePath||"service")+"/")+"web/";E=b+"content/";a.useSignedServiceRequests&&(b+="device/");F=b+"reader/";L=b+"register/";z=F+"setOfflineStatus/";A=F+"deregisterSessions/";C=F}function e(){g=!0}function b(a){var b={prevState:P,newState:a};if(a===Kindle.Service.AuthOK&&(b.eid=k,D))b.deviceName=D;P=a;Q.onServiceAuthState(b)}function d(a,g,k){function d(){b(Kindle.Service.AuthError);c.reject(a,g,k)}if(a.status===J){var c=$.Deferred();u=null;K.clearDeviceToken().then(d,d);return c.promise()}else return $.Deferred().reject(a,
g,k)}function c(a,b){return $.ajax({url:a,dataType:"json",beforeSend:function(a){a.setRequestHeader("x-amzn-sessionid",b);return!0}}).pipe(null,d)}function j(){var a=$.cookie("session-id"),b=function(){var a=L+"getDeviceToken",f=KindleHostDeviceDetector.getDeviceType();a+="?serialNumber="+(I||f)+"&deviceType="+f;return encodeURI(a)}(),g=O.createTimer();return c(b,a).pipe(function(a,f,b){f=jQuery.Deferred();a.deviceSessionToken?f.resolve(a):(f.reject(b,"failed"),g.emit("Service::GetDeviceTokenCallBrokenResult"));
g.emit("Service::GetDeviceTokenCall");return f.promise()}).fail(function(){g.emitNow("Service::GetDeviceTokenCallFail")})}function l(a,b){return{url:a,type:"POST",dataType:"json",processData:!1,contentType:"application/json",data:JSON.stringify(b)}}function m(a){function g(){KindleDebug.error("Failed to sign SRS request.");return $.Deferred().reject()}function k(a){var f;f=/\/web.*$/.exec(a.url);return!f?g():Q.getRequestSigningHeaders({path:f[0],verb:a.type||"GET",data:a.data||""}).pipe(function(f){a.beforeSend=
function(a){$.each(f,function(f,b){a.setRequestHeader(f,b)});return!0};return $.Deferred().resolve(a)},g)}function c(a){return u?(a.beforeSend=function(a){a.setRequestHeader("X-ADP-Session-Token",u);return!0},$.Deferred().resolve(a)):(KindleDebug.error("Device Token must be loaded in order to make an authenticated request. Cancelling request."),b(Kindle.Service.AuthError),$.Deferred().reject())}o();return(M?k(a):c(a)).pipe($.ajax).pipe(null,d)}function s(a){a.beforeSend=function(a){a.setRequestHeader("Amzn-Device-Type",
KindleHostDeviceDetector.getDeviceType());return!0};return $.ajax(a)}function p(a){function b(){m(d).done(k.resolve).fail(function(a){KindleHostDeviceDetector.isiOSAppMode()&&a.status===0&&v.emit("KindleApp::iOSAppModeStatusCodeIsZero")}).fail(function(a,f,g){a.status!==J&&(f!=="timeout"&&u-- >0?(setTimeout(b,c),c*=2):k.reject(a,f,g))})}var g=a.url,k=$.Deferred(),d={url:g,dataType:"json"},u=1,c=50;b();var v=O.createTimer();k.done(function(){v.emit(a.metricId)});k.fail(function(){v.emitNow(a.metricId+
"Fail")});return k.promise()}function h(a){function b(){s(d).done(k.resolve).fail(function(a,f,g){a.status!==J&&f!=="timeout"&&u-- >0?(setTimeout(b,c),c*=2):k.reject(a,f,g)})}var g=a.url,k=$.Deferred(),d={url:g,dataType:"json"},u=1,c=50;b();var v=O.createTimer();k.done(function(){v.emit(a.metricId)});k.fail(function(){v.emitNow(a.metricId+"Fail")});return k.promise()}function n(){function a(f,g,k){function d(){(!f||f.status!==J)&&b(Kindle.Service.AuthError);l.reject(f,g,k)}u=null;K.clearDeviceToken().then(d,
d)}function g(){P!==Kindle.Service.AuthOK&&b(Kindle.Service.AuthOK);l.resolve(u)}function d(c){if(N&&N!==c.clientHashId)b(Kindle.Service.AuthUserMismatch);else{u=c.deviceSessionToken;N=c.clientHashId;k=c.eid;if(c.deviceName)D=c.deviceName;jQuery.when(K.setDeviceToken(c.deviceSessionToken),K.setUserHashId(c.clientHashId),K.setEID(c.eid)).then(g,a)}}function c(){j().then(d,a)}function v(a){N=a[Kindle.Service.UserHashIdKey];k=a[Kindle.Service.EidKey];a[Kindle.Service.DeviceTokenKey]?(u=a[Kindle.Service.DeviceTokenKey],
g()):c()}var l=$.Deferred();u?l.resolve(u):K.getValuesForKeys([Kindle.Service.DeviceTokenKey,Kindle.Service.UserHashIdKey,Kindle.Service.EidKey]).then(v,c);return l.promise()}function r(){var a=$.Deferred();K.getValuesForKeys([Kindle.Service.DeviceTokenKey,Kindle.Service.UserHashIdKey,Kindle.Service.EidKey]).then(function(b){N=b[Kindle.Service.UserHashIdKey];k=b[Kindle.Service.EidKey];b[Kindle.Service.DeviceTokenKey]?(u=b[Kindle.Service.DeviceTokenKey],a.resolve(!0)):a.resolve(!1)},function(){a.resolve(!1)});
return a.promise()}function o(){function a(){b(Kindle.Service.AuthTokenMismatch);k.reject()}var k=$.Deferred();if(!u)return k.resolve();var d=O.createTimer();K.getDeviceToken().done(function(b){b!==u?d.emit("Service::CheckTokenConsistencyMismatch",{breakdown:["Browser"]}).always(a):k.resolve()}).fail(function(){g||d.emit("Service::CheckTokenConsistencyFail",{breakdown:["Browser"]}).always(a)});return k.promise()}function y(a){return a&&(a==="only"||P!==Kindle.Service.AuthOK)}function t(a,b){var g=
F+a+"?asin="+b.asin+"&kindleSessionId="+b.kindleSessionId;return b.position&&b.position>0?(g+="&lastPageRead="+b.position+"&localTimeOffset="+b.localTimeOffset+"&countryCode="+b.countryCode,g+="&positionType="+b.positionType,g=encodeURI(g)+(!b.refEmId?"":"&guid="+encodeURIComponent(b.refEmId))):encodeURI(g)}function x(a,b,g){a=l(a,b);a.crossDomain=!0;a.async=!g;return s(a)}function q(a,b,g,k,d,c){function u(a,f,b,g,d,c){return{Operation:c?"uploadMetricsExternal":"uploadMetrics",Input:{devicePlatform:a,
clientName:f,version:b,marketplace:k,metricBreakdown:g,metrics:d}}}var v;return function(){function k(a,f,b){var g=$.Deferred();return b.responseText.indexOf("UploadMetricsResponse")===-1?g.reject():g.resolve(a,f,b)}var D=Kindle.Service.AuthOK===P&&(M||$.cookie("at-main")),h=F+"uploadMetrics";return D?(v=u(a,b,g,d,c,!1),m(l(h,v)).pipe(k)):$.Deferred().reject()}().pipe(null,function(){var k=E+"uploadMetrics";v=u(a,b,g,d,c,!0);return s(l(k,v))}).done(function(){var a;if(a=S||KindleLocalStorage.getItem("QAMetricsURL"))a=
{url:a,type:"POST",dataType:"json",processData:!1,headers:{Source:window.location.href},contentType:"application/json",data:JSON.stringify(v),qaMetricsIngester:!0},$.ajax(a).fail(function(a){a.status&&KindleDebug.warn("Failed to echo metrics to the QA ingester service; statusCode="+a.statusCode)})})}var J=403,F,E,L,z,A,C,g=!1,v,u,N,k,D,Q,P,O,K,I,M,S,T;a();$.ajaxSetup({headers:{"Cache-Control":"no-cache",Pragma:"no-cache"},timeout:6E4});var ea={getAuthenticationState:function(){return P},authenticate:function(){if(P===
Kindle.Service.AuthOK)return $.Deferred().resolve();else if(M)return $.Deferred().reject();return n()},checkTokenConsistency:o,deregisterSessions:function(a){return p({metricId:"Service::DeregisterSessionsCall",url:function(a){a=A+"?sessions="+a.join();return encodeURI(a)}(a)})},doneReading:function(a){return p({metricId:"Service::DoneReadingCall",url:t("doneReading",a)})},getAnnotations:function(a,b){var g=F+"getAnnotations?asin="+encodeURIComponent(a)+(!b?"":"&guid="+encodeURIComponent(b));return p({metricId:"Service::GetAnnotationsCall",
url:g})},getEID:function(){function a(){return $.Deferred().resolve(k)}function b(){var g=O.createTimer();return j().fail(function(){g.emitNow("Service::GetEIDTokenCallFail")}).pipe(function(b){k=b.eid;g.emit("Service::GetEIDTokenCallSuccess");return K.setEID(b.eid).pipe(a,a)},null)}return k?a():K.getEID().pipe(null,b)},getFileUrl:function(a){var b=y(a.kcrFree),g={metricId:"Service::GetFileUrlCall",url:function(){var g=b?E:F;g+="getFileUrl?asin="+a.asin+"&contentVersion="+a.contentVersion+"&formatVersion="+
a.formatVersion;KindleHostDeviceDetector.hasCanvasSizeLimitProblem()||(g+="&clientVersion="+v);g+=T?"&usePdxBucket="+T:"";g+=a.kindleSessionId?"&kindleSessionId="+a.kindleSessionId:"";g+=a.isSample?"&isSample="+a.isSample:"";g+=a.skeletonIds?"&skeletonIds="+a.skeletonIds.join(","):"";g+=a.fragmentIds?"&fragmentIds="+a.fragmentIds.join(","):"";g+=a.glyphIds?"&glyphIds="+a.glyphIds.join(","):"";g+=a.resourceIds?"&resourceIds="+a.resourceIds.join(","):"";g+=a.locationMapIds?"&locationMapIds="+a.locationMapIds.join(","):
"";return encodeURI(g)}()};return(b?h:p)(g)},getLPR:function(a,b){var g=F+"getLPR?asin="+encodeURIComponent(a)+(!b?"":"&guid="+encodeURIComponent(b));return p({metricId:"Service::GetLPRCall",url:g})},getOemAssociateId:function(a){var a={Operation:"getAssociateId",Input:{deviceType:a.deviceType,deviceParameters:{eid:a.eid,oemPartnerName:a.oemPartnerName,oemDealGuid:a.oemDealGuid}}},b=F+"getAssociateId",g=O.createTimer();return m(l(b,a)).then(function(a){g.emit("Service::OemAssociateIdSuccess");(!a||
!a.Output||!a.Output.associateId)&&g.emit("Service::OemAssociateIdEmpty")},function(){g.emit("Service::OemAssociateIdFailure")})},getOwnedContent:function(a,b){return p({metricId:"Service::GetOwnedContentCall",url:function(){var g="";a&&(g="?lastSyncTime="+encodeURIComponent(a));b&&(g?g+="&":g="?",g+="reason="+encodeURIComponent(b));return F+"getOwnedContent"+g}()})},getPFM:function(){return p({metricId:"Service::GetPFMCall",url:F+"getPFM"})},getTodoItems:function(a){var b=a.reason,g=a.versionNumber,
a=C+"getTodoListItems?maxNumItems="+(a.maxNumItems||a.count);b&&(a+="&reason="+b);g&&(a+="&softwareRev="+g);a=encodeURI(a);return p({metricId:"Service::GetTodoItemCall",url:a})},getSearchIndexInfo:function(a){var b=y(a.kcrFree),g=b?E:F;g+="getSearchIndex?asin="+encodeURIComponent(a.asin)+"&formatVersion="+encodeURIComponent(a.formatVersion)+"&contentVersion="+encodeURIComponent(a.contentVersion);return(b?h:p)({url:g,metricId:"Service::GetSearchIndex"})},getWordDefinition:function(a){var b=Kindle.Service.AuthOK===
P,a={metricId:"Service::GetWordDefinitionCall",url:encodeURI((b?F:E)+"getWordDefinition?word="+a)};return(b?p:h)(a)},removeTodoItems:function(a){if(a.length!==1)return $.Deferred().reject("Must be one item").promise();var a=a[0],b=C+"removeTodoListItem";b+="?type="+a.type+"&action="+a.action+"&key="+a.key+"&completeStatus="+(a.completeStatus||a.complete_status)+"&failureCode="+(a.failureCode||a.failure_code||"");b=encodeURI(b);return p({metricId:"Service::RemoveTodoItemsCall",url:b})},resetLPR:function(a){return p({metricId:"Service::ResetLPRCall",
url:t("resetLPR",a)})},removeOwnership:function(a,b){return p({metricId:"Service::RemoveOwnershipCall",url:F+"removeOwnership?asin="+a+"&contentType="+b})},setOfflineStatus:function(a){return p({metricId:"Service::SetOfflineStatusCall",url:encodeURI(z+"?asin="+a.asin+"&kindleSessionId="+a.kindleSessionId+"&offline="+(a.isOffline?"true":"false"))})},setServiceHost:function(b){a({useSignedServiceRequests:M,srsHostName:b})},startReading:function(a){var b=y(a.kcrFree),g={metricId:"Service::StartReadingServiceCall",
url:function(){var g=b?E:F;g+="startReading?asin="+a.asin;g+=a.kindleSessionId?"&kindleSessionId="+a.kindleSessionId:"";g+=a.contentVersion?"&contentVersion="+a.contentVersion:"";g+=a.formatVersion?"&formatVersion="+a.formatVersion:"";g+=a.isSample!==void 0?"&isSample="+(a.isSample?"true":"false"):"";v&&(g+="&clientVersion="+v);return encodeURI(g)}()};return(b?h:p)(g)},stillReading:function(a){return p({metricId:"Service::StillReadingCall",url:t("stillReading",a)})},updateAnnotations:function(a,b){var g=
F+"updateAnnotations",k={Operation:"updateAnnotations",Input:{annotations:a,localTimeOffset:b}},d=O.createTimer();return m(l(g,k)).then(function(){d.emit("Service::UpdateAnnotationsCall")},function(){d.emitNow("Service::UpdateAnnotationsCallFail")})},uploadMetrics:q,uploadSnapshot:function(a){a=C+"uploadSnapshot?snapshot="+encodeURIComponent(a.response);return p({metricId:"Service::UploadSnapshotCall",url:a})},whenOnline:function(){var a=jQuery.Deferred();if(KindleNetwork.isOnline())a.resolve();else{var b=
function(){KindleNetwork.removeEventListener("online",b);a.resolve()};KindleNetwork.addEventListener("online",b)}return a.promise()}};return{initialize:function(){KindleModuleManager.define(Kindle.MODULE.SERVICE_CLIENT,[Kindle.MODULE.SERVICE_INITIALIZATION_ARGS,KindleModuleManager.METRICS_MANAGER,Kindle.MODULE.DB_CLIENT],function(f,g,k){var d=jQuery.Deferred();O=g;K=k.getAppDb();var c,u;Q=f.hostApp;if(f.loginParams)I=f.loginParams.dsn,M=!!f.loginParams.useSignedServiceRequests,S=f.loginParams.qaMetricsUrl,
c=f.loginParams.hostName,u=f.loginParams.srsBasePath,T=f.loginParams.usePdxBucket;v=KindleApp.isHostControlled()?KindleVersion.parseVersionString(f.hostVersion):KindleVersion.getVersionNumber();KindleNetwork.initialize();window.addEventListener("beforeunload",e,!1);M?K.getUserHashId().always(function(g){g&&f.loginParams.clientHashId&&g!==f.loginParams.clientHashId?b(Kindle.Service.AuthUserMismatch):b(Kindle.Service.AuthOK);a({useSignedServiceRequests:!0,srsHostName:c,srsBasePath:u});d.resolve(ea)}):
(u&&a({srsBasePath:u}),r().then(function(a){b(a?Kindle.Service.AuthOK:Kindle.Service.NotAuth);d.resolve(ea)},d.reject));return d});KindleModuleManager.define(Kindle.MODULE.METRICS_UPLOADER,[],function(){return{uploadMetrics:q,uploadKindleStreams:x}})}}}(),KindleTOS=function(){function a(){var a="https://images-na.ssl-images-amazon.com/images/G/01/kindle/kindlefortheweb/store/"+L+"/BrowserHost-min.js",b=$.Deferred();if(e())return b.resolve().promise();$.getScript(a,function(){e()?b.resolve():b.reject()});
return b.promise()}function e(){return typeof BrowserHostAPI!=="undefined"}function b(){var a=new jQuery.Deferred,b={w:$(window).width(),h:$(window).height(),dpi:null,osv:null,deviceType:KindleHostDeviceDetector.getDeviceType(),bhv:L};KindleModuleManager.getModule([KindleModuleManager.SERVICE_CLIENT]).then(function(g){g.getEID().then(function(g){b.eid=g;a.resolve("?"+$.param(b))},function(){KindleDebug.error("Couldn't fetch EID.");a.reject("?"+$.param(b))})},function(){KindleDebug.error("SRS not loaded");
a.reject("?"+$.param(b))});return a.promise()}function d(a){function g(b){var d=q?"&asin="+encodeURIComponent(q):"",b=E+b+d+("&ref_="+(a||(q?Kindle.RefTag.Values.StoreSample:F?Kindle.RefTag.Values.StoreEmptyLibIpad:Kindle.RefTag.Values.StoreLibButtonIpad))),d=KindleApp.getPartnerTag();b+=d?"&tag="+d:"";n&&$("#"+r.KINDLE_STORE_CONTAINER_ID).addClass("hidden").empty();d=new Date;n=$(document.createElement("iframe")).attr("id",r.KINDLE_STORE_ID+d.getTime()).attr("src",b).attr("seamless","seamless").addClass(o);
$("#"+r.KINDLE_STORE_CONTAINER_ID).append(n)}b().then(g,g)}function c(){$("#"+r.KINDLE_STORE_CONTAINER_ID).addClass("hidden").empty();C=n=null;g=!0;A&&A()}function j(){var b=$.Deferred();a().then(function(){var a={hostVersion:y,storeStartTime:J,deviceType:KindleHostDeviceDetector.getDeviceType()};BrowserHost=new K4WBrowserHost(a,{pageReady:l,closeStore:m,openBook:s,bookStatus:p,openInExternalBrowser:h});b.resolve()},b.reject);return b.promise()}function l(){clearTimeout(t);$("#"+r.KINDLE_STORE_CONTAINER_ID).removeClass("hidden");
x.resolve(!1)}function m(){c()}function s(a){if(g){g=!1;var b=a.type,a=a.asin;if(z)switch(b){case v.EBOOK:z({asin:a,isSample:!1});c();break;case v.SAMPLE:z({asin:a,isSample:!0}),C=a,$("#"+r.KINDLE_STORE_CONTAINER_ID).hide(),A&&A()}}}function p(a){return{id:a,status:1,percentDownloaded:1}}function h(a){clearTimeout(t);x.resolve(!0);var b=document.createElement("a");b.href=a;b.target="_blank";a=document.createEvent("MouseEvents");a.initEvent("click",!0,!0);b.dispatchEvent(a)}var n,r={KINDLE_STORE_ID:"store",
KINDLE_STORE_CONTAINER_ID:"KindleStoreContainer"},o="KindleIFrame",y=3,t,x,q,J,F,E="https://www.amazon.com/gp/kindle/kcp/tos.html",L="029",z,A,C,g=!0,v={EBOOK:"EBOK",SAMPLE:"EBSP"};return{open:function(a){x=$.Deferred();q=a.asin;J=a.storeStartTime;F=a.isSourceEmptyLibBtn;if(q&&q===C&&n)return $("#"+r.KINDLE_STORE_CONTAINER_ID).show(),x.resolve(!1),x.promise();j().then(function(){t=setTimeout(function(){x.reject();c()},3E4);d(a.refTag)},x.reject);return x.promise()},setOpenBookCallback:function(a){z=
a},setStoreClosedCallback:function(a){A=a},setOpenBookReady:function(){g=!0},setStoreURL:function(a){E=a},proxyTouchEvent:function(a){if(e()){var b=JSON.parse(JSON.stringify(a));b.type=a.type;b.bubbles=a.bubbles;BrowserHost.proxyTouchEvent(b)}}}}(),KindleUpgradeDeviceDetector=function(){function a(a,b,d){a=KindleVersion.parseVersionString(a);return KindleVersion.parseVersionString(b)<=a&&a<=KindleVersion.parseVersionString(d)}return{isMetroUpdateRequiredBecauseVersionNonSupported:function(e){if(!KindleHostDeviceDetector.isMetro())return!1;
var b=!!KindleHostDeviceDetector.isOnline();return e&&b?a(e,"0.0.0.0","1.1.3.1"):!1},isMetroUpdateRequiredBecauseI18NSupported:function(e,b){if(!KindleHostDeviceDetector.isMetro())return!1;var d=!!KindleHostDeviceDetector.isOnline();return["de","es","it","fr","pt"].indexOf((b||KindleHostDeviceDetector.getBrowserLanguage()).substr(0,2))>-1&&e&&d?a(e,"1.0.2.0","1.0.2.99"):!1},isMetroUpdateRequiredBecauseCountryNotSupported:function(e,b,d){var c=jQuery.Deferred(),j=!!KindleHostDeviceDetector.isOnline(),
b=(b||KindleHostDeviceDetector.getBrowserLanguage()).substr(0,2);if(!KindleHostDeviceDetector.isMetro()||!j||!a(e,"1.0.2.0","1.0.2.99"))return c.resolve(!1).promise();e="/kcrservice/checkBLCountry?lang="+b;d&&(e+="&ip="+d);$.ajax({url:e,dataType:"json"}).then(function(a){c.resolve(a?a.value:!1)},function(){c.resolve(!1)});return c.promise()}}}(),ResourceBundle=function(a,e){function b(a){return!a||!h[a.toUpperCase()]?"":a.toUpperCase()}function d(a){return!a?"":p[a]?a:a.length===2&&x[a]?x[a]:(a=x[a.substr(0,
2).toLowerCase()])?a:""}function c(){KindleAssert(o,"Language and culture must be set before calling getLanguage");return o.substr(0,2).toLowerCase()}function j(){KindleAssert(y,"Language and culture must be set before calling getFormatRegion");return y}function l(a,b){function d(a,g){var c=b[g];delete b[g];return c}for(var c=/\$\{([A-Za-z0-9_]+)\}/g,b=$.extend({},b),g;c.exec(a)&&g!==a;)g=a,a=a.replace(c,d);return a}function m(a){return a&&a.length>=5?a.substr(3,2).toUpperCase():""}function s(){return navigator&&
(navigator.language||navigator.userLanguage)?navigator.language||navigator.userLanguage:""}var p=a,h=e,n=!1,r,o,y,t=-(new Date).getTimezoneOffset(),x={de:"de-DE",en:"en-US",es:"es-ES",fr:"fr-FR",it:"it-IT",pt:"pt-BR",ja:"ja-JP",zh:"zh-CN"},q={"amazon.com":"en-US","amazon.com.au":"en-AU","amazon.co.uk":"en-GB","amazon.in":"en-IN","amazon.ca":"en-CA","amazon.de":"de-DE","amazon.fr":"fr-FR","amazon.it":"it-IT","amazon.es":"es-ES","amazon.com.mx":"es-MX","amazon.com.br":"pt-BR","amazon.co.jp":"ja-JP",
"amazon.cn":"zh-CN"},J=function(a,b){if(n)return a;if(p[b])return p[b][a]},F={en:["the ","a ","an "],de:["die ","der ","das ","des ","dem ","den ","ein ","eine ","einer ","einem ","einen "],es:["el ","la ","los ","las ","un ","una ","unos ","unas "],pt:["o ","a ","os ","as ","um ","uma ","uns ","umas "],fr:["le ","la ","l'","les ","un ","une ","des "],it:["il ","lo ","la ","l'","i ","gli ","le ","un ","uno ","una ","un'"]},E={da:["og","i","jeg","det","at","en","den","til","er","som","p\u00e5","de",
"med","han","af","for"],de:["der","die","das","des","dem","den","ein","eine","einer","einem","einen","dies","diese","diesem","diesem","diesen","dieser","dieses","ich","du","er","sie","es","wir","ihr","sie","Sie","als","an","ans","auch","auf","aufs","aus","bei","fuer","f\u00fcr","nicht","nur","oder","so","und","um","ums","vom","von","in","im"],en:["the","a","an","this","that","these","those","i","you","she","he","it","we","they","as","like","at","to","also","on","of","by","for","not","only","or","so",
"and","about","from","in"],es:["el","la","los","las","un","una","unos","unas","del","al","este","ese","aquel","estos","esos","aquellos","esta","esa","aquella","estas","esas","aquellas","yo","t\u00fa","tus","vos","usted","\u00e9l","ella","ello","nosotros","nosotras","vosotros","vosotras","ustedes","ellos","ellas","en","y","o","a","por","no","ni","desde","e"],fi:["olla","olen","olet","on","olemme","olette","ovat","ole","se","sen","sit\u00e4","siin\u00e4","siit\u00e4","siihen","sill\u00e4","silt\u00e4",
"sille","sin\u00e4","siksi","kanssa"],fr:["le","la","l'","les","un","une","des","du","de","au","aux","ce","cet","cette","ces","je","tu","elle","il","on","nous","vous","elles","ils","comme","\u00e0","aussi","sur","par","pour","ne","n\u2019","pas","ou","or","donc","et","dans"],hu:["a","az","egy","be","ki","le","fel","meg","el","\u00e1t","r\u00e1","ide","oda","sz\u00e9t","\u00f6ssze","vissza","de","h\u00e1t","\u00e9s","vagy","hogy","van","lesz","volt","csak","nem","igen","mint","\u00e9n","te","\u00f5",
"mi","ti","\u00f5k","\u00f6n"],it:["il","lo","la","l'","i","gli","le","un","uno","una","un'","del","dello","della","dell'","dei","degli","degl'","delle","questo","questa","questi","queste","quello","quella","quelli","codesto","codesta","codesti","codeste","io","noi","tu","voi","egli","esso","essi","ella","essa","esse","ad","al","allo","agli","all","agl","alla","alle","con","col","coi","da","dal","dallo","dai","dagli","dall","dagl","dalla","dalle","di","del","dello","dei","degli","dell","degl","della",
"delle","in","nel","nello","nei","nell","negl","nella","nelle","su","sul","sullo","sui","sugli","sull","sugl","sulla","sulle","per","ed","anche","non","a","e","o"],nl:["de","en","van","ik","te","dat","die","in","een","hij","het","niet","zijn","is","was","op","aan","met","als","voor","had","er"],no:["at","en","et","den","til","er","p\u00e5","med","han","av","var","ved","fra","bli","ble","blei","blitt","v\u00e6re","kom","for","\u00e5","blir","v\u00e6rt","v\u00e6re","d\u00e5","ein","eit","eitt","vere",
"vore","verte","vort","varte","vart"],pt:["o","a","os","as","um","uma","uns","umas","esta","estes","estas","aquele","aquela","aqueles","aqueles","aquelas","isto","aquilo","eu","voc\u00ea","ele","ela","n\u00f3s","v\u00f3s","voc\u00eas","eles","elas","de","a","e","em","para","n\u00e3o","no","na","por","como","ou"],ro:["o","unui","unei","unor","cel","cea","cei","cele","celui","celei","celor","al","a","ai","ale","pe","la","\u00een","f\u0103r\u0103","sub","despre","c\u0103tre","cu","de","din","l\u00e2ng\u0103",
"spre","ca","sunt","s","e\u015fti","este","e","suntem","sunte\u0163i","eram","erai","era","era\u0163i","erau","fiu","fii","fie","fim","fi\u0163i","fi","fiind","fost"],sv:["och","det","att","i","en","jag","hon","som","han","p\u00e5","den","med","var","sig","f\u00f6r","s\u00e5","till","\u00e4r","men","ett","om","hade","de","av"],tr:["acaba","altm\u00fd\u00fe","alt\u00fd","ama","bana","baz\u00fd","belki","ben","benden","beni","benim","be\u00fe","bin","bir","biri","birka\u00e7","birkez","bir\u00feey",
"bir\u00feeyi","biz","bizden","bizi","bizim","bu","buna","bunda","bundan","bunu","bunun","da","daha","dahi","de","defa","diye","doksan","dokuz","d\u00f6rt","elli","en","gibi","hem","hep","hepsi","her","hi\u00e7","iki","ile","INSERmi","ise","i\u00e7in","katrilyon","kez","ki","kim","kimden","kime","kimi","k\u00fdrk","milyar","milyon","mu","m\u00fc","m\u00fd","nas\u00fdl","ne","neden","nerde","nerede","nereye","niye","ni\u00e7in","on","ona","ondan","onlar","onlardan","onlari","onlar\u00fdn","onu","otuz",
"sanki","sekiz","seksen","sen","senden","seni","senin","siz","sizden","sizi","sizin","trilyon","t\u00fcm","ve","veya","ya","yani","yedi","yetmi\u00fe","yirmi","y\u00fcz","\u00e7ok","\u00e7\u00fcnk\u00fc","\u00fc\u00e7","\u00feey","\u00feeyden","\u00feeyi","\u00feeyler","\u00feu","\u00feuna","\u00feunda","\u00feundan","\u00feunu"]};return{initialize:function(a,c){var l=q[Kindle.URL.getAmazonDomain()];o=d(a)||d(s())||d(l)||"en-US";y=b(c)||b(m(o))||"US";l=c&&c.toUpperCase()||m(a)||m(s())||m(l)||"US";
r=o.substr(0,2).toLowerCase()+"-"+l},getFormatRegion:j,getUserLanguageCulture:function(){KindleAssert(r,"Language and culture must be set before calling getUserLanguageCulture");return r},getLanguage:c,getLocalizedString:function(a,b,c){var h=o;c&&(h=d(c));c=J(a,h);typeof c!=="string"&&(h!=="en-US"&&(c=J(a,"en-US")),c||(c=a));b&&(c=l(c,b));return c},getLocalizedTime:function(a){return $.format.date(a,h[j()].k_format_time,c())},getLocalTimeOffset:function(){return t},getLocalizedDate:function(a){return $.format.date(a,
h[j()].k_format_date,c())},getLocalizedDateTime:function(a){return $.format.date(a,h[j()].k_format_date_time,c())},getLocalizedArticles:function(){return F[c()]||[]},getLocalizedSearchStopWords:function(a){a=a||c();return E[a]||[]},isLanguageEN:function(){return o.substring(0,2)==="en"},setStringIDMode:function(a){n=!!a},languageCultureNameToRegion:m}}(Kindle.strings,Kindle.formats),KindleO_Aaa=function(){function a(a){for(var b=[],c,e,h,j,r,o,y=0;y<a.length;)h=a.charCodeAt(y++)&255,c=a.charCodeAt(y++),
j=c&255,e=a.charCodeAt(y++),r=e&255,o=h>>2,h=(h&3)<<4|j>>4,j=(j&15)<<2|r>>6,r&=63,isNaN(c)?j=r=64:isNaN(e)&&(r=64),b.push(d.charAt(o)+d.charAt(h)+d.charAt(j)+d.charAt(r));return b.join("")}function e(a){for(var b=[],d,e,h,j,r,o=0;o<a.length;)d=c[a.charCodeAt(o++)],e=c[a.charCodeAt(o++)],j=c[a.charCodeAt(o++)],r=c[a.charCodeAt(o++)],d=d<<2|e>>4,e=(e&15)<<4|j>>2,h=(j&3)<<6|r,b.push(String.fromCharCode(d)),j!==64&&b.push(String.fromCharCode(e)),r!==64&&b.push(String.fromCharCode(h));return b.join("")}
function b(a,b){var d=[];d.length=256;for(var c=0;c<256;c++)d[c]=c;for(var h=0,e,c=0;c<256;c++)h=h+d[c]+b[c%b.length]&255,e=d[c],d[c]=d[h],d[h]=e;for(var h=c=0,j=[],o=0;o<a.length;o++)c=c+1&255,h=h+d[c]&255,e=d[c],d[c]=d[h],d[h]=e,j.push(String.fromCharCode(a.charCodeAt(o)^d[d[c]+d[h]&255]));return j.join("")}for(var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c=[],j=0;j<d.length;j+=1)c[d.charCodeAt(j)]=j;return{o_aaa:a,o_aag:e,o_aac:function(d,c){var e;e=d.replace(/\x0d\x0a/g,
"\n");for(var p=[],h=0;h<e.length;h++){var n=e.charCodeAt(h);n<128?p.push(String.fromCharCode(n)):(n>127&&n<2048?p.push(String.fromCharCode(n>>6|192)):(p.push(String.fromCharCode(n>>12|224)),p.push(String.fromCharCode(n>>6&63|128))),p.push(String.fromCharCode(n&63|128)))}e=p.join("");p=c;p+="00000000000000000000000000000000".substring(0,32-p.length);h=[];for(j=0;j<p.length;j+=2)h.push(parseInt(p.substring(j,j+2),16));return a(b(e,h))},o_aad:function(a,d){for(var c=e(a),j=[],h=0;h<d.length;h++)j.push(d.charCodeAt(h));
for(var c=b(c,j),j=[],h=0,n,r,o;h<c.length;)n=c.charCodeAt(h),n<128?(j.push(String.fromCharCode(n)),h++):n>191&&n<224?(r=c.charCodeAt(h+1),j.push(String.fromCharCode((n&31)<<6|r&63)),h+=2):(r=c.charCodeAt(h+1),o=c.charCodeAt(h+2),j.push(String.fromCharCode((n&15)<<12|(r&63)<<6|o&63)),h+=3);return j.join("")}}}(),KindleAppDb=function(a){function e(){return KindleModuleManager.getModuleSync(KindleModuleManager.DB_CLIENT).getBookDb()}function b(a){var b=new jQuery.Deferred;j.getRecord("keyValue",{key:a}).then(function(a){a&&
a.length>0&&b.resolve(a[0].value);b.reject()},b.reject);return b.promise()}function d(a,b){return j.upsertRecord("keyValue",{value:b},{key:a})}function c(a){return j.deleteRecord("keyValue",{key:a})}var j=a;a.updateBookData=function(a,b,d){var c,h,n=[],r=[];for(c in a)r.push(a[c].asin),n.push({operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:"bookdata",params:[{asin:a[c].asin}]});for(c in b)a=b[c],n.push({operation:Kindle.DB.UPSERT_RECORD_OPERATION,tableName:"bookdata",params:[a,{asin:a.asin}]});
h=n.length;d&&n.push({operation:Kindle.DB.UPSERT_RECORD_OPERATION,tableName:"keyValue",params:[{value:String(d)},{key:"synctime"}]});return j.batchTransaction(n).pipe(function(){function a(){return h}return r.length<1||!e()?(new jQuery.Deferred).resolve(h):e().deleteBooksData(r).pipe(a,a)})};a.getAllBooks=function(){return j.getRecord("bookdata")};a.getAllBooksForContentType=function(a){return j.getRecord("bookdata",{contentType:a})};a.getBook=function(a,b){j.getRecord("bookdata",{asin:a}).done(function(a){b(a.length>
0?a[0]:{})})};a.getBookDataLastSyncTime=function(a){b("synctime").done(function(b){a(b?b:Kindle.DB.NEVER)}).fail(function(){a(Kindle.DB.NEVER)})};a.updateLastPositionRead=function(a,b,d,c){j.updateRecord("bookdata",{lastPositionRead:b,lastTimeRead:d},{asin:a}).fail(c)};a.updateLastFPRSyncTime=function(a,b,d){j.updateRecord("bookdata",{lastFPRSyncTime:b},{asin:a}).fail(d)};a.updateLastReadTime=function(a,b,d,c){j.upsertRecord("bookdata",{lastTimeRead:b,lastFPRSyncTime:d},{asin:a}).fail(c)};a.updateMaxPosition=
function(a,b,d){j.updateRecord("bookdata",{maxPosition:b},{asin:a}).fail(d)};a.getDeviceToken=function(){return b(Kindle.Service.DeviceTokenKey)};a.setDeviceToken=function(a){return d(Kindle.Service.DeviceTokenKey,a)};a.clearDeviceToken=function(){return c(Kindle.Service.DeviceTokenKey)};a.getUserHashId=function(){return b(Kindle.Service.UserHashIdKey)};a.setUserHashId=function(a){return d(Kindle.Service.UserHashIdKey,a)};a.clearUserHashId=function(){return c(Kindle.Service.UserHashIdKey)};a.getEID=
function(){return b(Kindle.Service.EidKey)};a.setEID=function(a){return d(Kindle.Service.EidKey,a)};a.clearEID=function(){return c(Kindle.Service.EidKey)};a.getValueForKey=b;a.setValueForKey=d;a.removeValueForKey=c;a.getValuesForKeys=function(a){for(var b=[],d=new jQuery.Deferred,c=0;c<a.length;c++)b.push({operation:Kindle.DB.GET_RECORD_OPERATION,tableName:"keyValue",params:[{key:a[c]}]});j.batchTransaction(b).then(function(a){for(var b,c={},e=0;e<a.length;e++)if(a[e]&&a[e].length)b=a[e][0],c[b.key]=
b.value;d.resolve(c)},d.reject);return d.promise()};a.getCachedAsins=function(a,b){function d(b){var e,h=[];for(e=0;e<b.length;e++)a.indexOf(b[e].cacheState)>=0&&h.push(b[e]);c.resolve(h)}var c=jQuery.Deferred();if(e()){var h={asin:!0,cacheState:!0,cachedSize:!0,context:!!b};e().getRecord("bookinfo",null,h).then(a?d:c.resolve,c.reject)}else c.resolve([]);return c.promise()};a.getCachedCovers=function(){function a(d){var c,e={};for(c=0;c<d.length;c++)e[d[c].asin]=d[c].coverData;b.resolve(e)}var b=
new jQuery.Deferred;e()?e().getRecord("covers",null).then(a,b.reject):a([]);return b.promise()};a.getBookCachedState=function(a){return e()?e().getRecord("bookinfo",{asin:a},{cacheState:!0}):(a=new jQuery.Deferred,a.resolve([]),a.promise())};a.getPinnedSessionIds=function(){function a(b){var c,e=[];if(b)for(c=0;c<b.length;c++)e.push(b[c].context.kindleSessionId);d.resolve(e)}function b(){d.resolve([])}var d=new jQuery.Deferred;e()?e().getRecord("bookinfo",{cacheState:Kindle.BookInfo.CachedState.PINNED},
{context:!0}).then(a,b):d.resolve([]);return d.promise()};return a},KindleBookDb=function(a){function e(){switch(KindleHostDeviceDetector.getDevicePlatform()){case "iPad":case "iPhone":case "playBook":return 5E7;case "desktop":return KindleHostDeviceDetector.isIE()?25E7:Number.MAX_VALUE;default:return 5E7}}function b(a,b){var d={},c;for(c in a)a.hasOwnProperty(c)&&!b[c]&&(d[c]=a[c]);d=JSON.stringify(d);return d==="{}"?"":d}function d(a,b){if(b){var d=JSON.parse(b),c;for(c in d)d.hasOwnProperty(c)&&
(a[c]=d[c])}return a}function c(a,b,d,c,k,e){var h=Date.now();z.getRecord(a,{asin:d,id:{operator:Kindle.DB.IN_ARRAY,values:c}}).then(function(a){b(a,h,k)},function(a){e(a)})}function j(a,b,d,c,k,e){Date.now();var h=0,j,l=[],t;for(t in c)j=b(d,c[t]),h+=j.size,l.push(j);z.insertList(a,l).then(function(){Date.now();k(h)},function(a){e(a)})}function l(a,b,d,c){var k=KindleMetricsProfiler("getIds:"+a);z.getPieceIds(a,b).then(function(a){k.addCount(b,a.length);k.endTimer();k.log();d(a)},function(a){c(a)})}
function m(a,b,c){Date.now();var b=[],e=0,k;for(k in a){var h=a[k],j=h.id;e+=h.piece.length+h.metadata.length;b[j]=d({fragmentData:h.piece,fragmentMetadata:JSON.parse(h.metadata)},h.other)}c(b)}function s(a,c){var d=c.fragmentData,e=JSON.stringify(c.fragmentMetadata),k=b(c,{fragmentData:1,fragmentMetadata:1});return{asin:a,id:c.fragmentMetadata.id,size:d.length+e.length+k.length,piece:d,metadata:e,other:k}}function p(a,b,c){Date.now();var b=[],e;for(e in a){var k=a[e];b[k.id]=d({skeletonData:k.piece,
skeletonMetadata:JSON.parse(k.metadata)},k.other)}c(b)}function h(a,c){var d=c.skeletonData,e=JSON.stringify(c.skeletonMetadata),k=b(c,{skeletonData:1,skeletonMetadata:1});return{asin:a,id:c.skeletonMetadata.id,size:d.length+e.length+k.length,piece:d,metadata:e,other:k}}function n(a,b,c){Date.now();var b=[],e=0,k;for(k in a){var h=a[k],j=h.id;e+=h.piece.length+h.metadata.length;b[j]=d({glyphData:JSON.parse(h.piece),glyphFragmentMetadata:JSON.parse(h.metadata)},h.other)}c(b)}function r(a,c){var d=
JSON.stringify(c.glyphData),e=JSON.stringify(c.glyphFragmentMetadata),k=b(c,{glyphData:1,glyphFragmentMetadata:1});return{asin:a,id:c.glyphFragmentMetadata.id,size:d.length+e.length+k.length,piece:d,metadata:e,other:k}}function o(a,b,c){Date.now();var b=[],e=0,k;for(k in a){var h=a[k],j=h.id;e+=h.piece.length+h.metadata.length;b[j]=d({data:JSON.parse(h.piece),metadata:JSON.parse(h.metadata)},h.other)}c(b)}function y(a,c){var d=JSON.stringify(c.data),e=JSON.stringify(c.metadata),k=b(c,{data:1,metadata:1});
return{asin:a,id:c.metadata.id,size:d.length+e.length+k.length,piece:d,metadata:e,other:k}}function t(a,b,c){Date.now();var b=[],e=0,k;for(k in a){var h=a[k],j=h.id;e+=h.piece.length+h.metadata.length;b[j]=d({locations:JSON.parse(h.piece),metadata:JSON.parse(h.metadata)},h.other)}c(b)}function x(a,c){var d=JSON.stringify(c.locations),e=JSON.stringify(c.metadata),k=b(c,{locations:1,metadata:1});return{asin:a,id:c.metadata.id,size:d.length+e.length+k.length,piece:d,metadata:e,other:k}}function q(a){return z.dbDeleteBooksData(a)}
function J(a){return z.dbGetBookStatistics(a)}function F(){var a=new jQuery.Deferred;z.getRecord("bookinfo",{cacheState:Kindle.BookInfo.CachedState.PINNED},{cachedSize:!0}).then(function(b){var c=0,d;for(d in b)c+=b[d].cachedSize;a.resolve(c)},function(){a.reject()});return a.promise()}function E(){var a=new jQuery.Deferred,b=e();b===Number.MAX_VALUE?a.resolve(Number.MAX_VALUE):F().then(function(c){c=b-1E6-c*2.4;c=Math.round(c/2.4);a.resolve(c)},function(){a.resolve(0)});return a.promise()}function L(b){function d(){var a=
new jQuery.Deferred;E().then(function(b){q=b;a.resolve(b)},function(){q=0;a.resolve()});return a.promise()}var e=0,q=0;return{getFragments:function(a){var d=new jQuery.Deferred;c("fragments",m,b,a,d.resolve,d.reject);return d.promise()},putFragments:function(a){var c=new jQuery.Deferred;j("fragments",s,b,a,function(a){e+=a;c.resolve(a)},c.reject);return c.promise()},getFragmentIds:function(){var a=new jQuery.Deferred;l("fragments",b,a.resolve,a.reject);return a.promise()},getSkeletons:function(a){var d=
new jQuery.Deferred;c("skeleton",p,b,a,d.resolve,d.reject);return d.promise()},putSkeletons:function(a){var c=new jQuery.Deferred;j("skeleton",h,b,a,function(a){e+=a;c.resolve(a)},c.reject);return c.promise()},getSkeletonIds:function(){var a=new jQuery.Deferred;l("skeleton",b,a.resolve,a.reject);return a.promise()},getGlyphs:function(a){var d=new jQuery.Deferred;c("glyphs",n,b,a,d.resolve,d.reject);return d.promise()},putGlyphs:function(a){var c=new jQuery.Deferred;j("glyphs",r,b,a,function(a){e+=
a;c.resolve(a)},c.reject);return c.promise()},getGlyphIds:function(){var a=new jQuery.Deferred;l("glyphs",b,a.resolve,a.reject);return a.promise()},getResources:function(a){var d=new jQuery.Deferred;c("resources",o,b,a,d.resolve,d.reject);return d.promise()},putResources:function(a){var c=new jQuery.Deferred;j("resources",y,b,a,function(a){e+=a;c.resolve(a)},c.reject);return c.promise()},getResourceIds:function(){var a=new jQuery.Deferred;l("resources",b,a.resolve,a.reject);return a.promise()},getLocationMaps:function(a){var d=
new jQuery.Deferred;c("locations",t,b,a,d.resolve,d.reject);return d.promise()},putLocationMaps:function(a){var c=new jQuery.Deferred;j("locations",x,b,a,function(a){e+=a;c.resolve(a)},c.reject);return c.promise()},getLocationMapIds:function(){var a=new jQuery.Deferred;l("locations",b,a.resolve,a.reject);return a.promise()},getAnnotations:function(){return z.getRecord("annotationsCache",{asin:b},{annotationsData:!0}).pipe(function(a){if(a&&a.length===1)return a[0].annotationsData})},putAnnotations:function(a){return z.insertRecord("annotationsCache",
{asin:b,annotationsData:a})},getBookInfo:function(){var a=new jQuery.Deferred;z.getRecord("bookinfo",{asin:b}).then(function(b){b.length===1?(e=b[0].cachedSize||0,a.resolve(b[0])):a.reject()},a.reject);return a.promise()},insertBookInfo:function(a){a=$.extend(!0,{},a,{asin:b,openTime:Date.now()});return z.insertRecord("bookinfo",a)},updateBookInfo:function(a){a=$.extend({openTime:Date.now()},a);return z.updateRecord("bookinfo",a,{asin:b})},getBookStatistics:function(){var a=new jQuery.Deferred;J(b).then(function(c){c.totalSize!==
c.cachedSize?(e=c.cachedSize=c.totalSize,z.updateRecord("bookinfo",{cachedSize:e},{asin:b}).then(function(){a.resolve(c)},a.reject)):a.resolve(c)},a.reject);return a.promise()},getCacheQuota:function(){return{cachedSize:e,cacheQuota:q}},computeCacheQuota:function(){return d().promise()},deleteOldestBookData:function(b){return a.deleteOldestBookData(b)},deleteBooksData:function(b){return a.deleteBooksData(b)},deleteSearchIndex:function(){return z.deleteRecord("searchIndex",{asin:b})},getPageNumbers:function(){return z.getRecord("pageNumberCache",
{asin:b},{pageNumberData:!0}).pipe(function(a){if(a&&a.length===1)return a[0].pageNumberData})},putPageNumbers:function(a){return z.insertRecord("pageNumberCache",{asin:b,pageNumberData:a})},getSearchIndex:function(){return z.getSearchIndexData(b)},putSearchIndex:function(a){return z.putSearchIndexData(b,a)},reserveStorage:function(a){function b(){h=setTimeout(function(){h=null;z.dropTable(d)},1E3)}function c(){var a=new ArrayBuffer(g*1024),a=new Blob([a]);z.insertRecord(d,{asin:"0000000000",id:e,
data:a}).then(function(){h&&(clearTimeout(h),--e>0?(b(),c()):z.dropTable(d))},function(){h&&(clearTimeout(h),z.dropTable(d))})}var d="reservedStorage",g=100,e=a*1024/g,h;b();c()},getFilteredSearchIndexAsins:function(a){var b=$.Deferred();z.getRecord("searchIndex",{asin:{operator:Kindle.DB.IN_ARRAY,values:a}},{asin:!0}).then(function(a){a=a.map(function(a){return a.asin}).sort().filter(function(a,b,c){return b===0||c[b-1]!==c[b]});b.resolve(a)},b.reject);return b.promise()}}}var z=a,A=null,C=0;a.deleteBooksData=
q;a.deleteOtherBooksData=function(a){for(var b=new jQuery.Deferred,c=["fragments","glyphs","skeleton","bookinfo","annotationsCache","covers","searchIndex","pageNumberCache"],d=[],k=0;k<c.length;k++)d.push({operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:c[k],params:[{asin:{operator:Kindle.DB.NOT_EQUAL,values:[a]}}]});z.batchTransaction(d).then(function(){b.resolve()},function(a){b.reject(a)});return b.promise()};a.deleteOldestBookData=function(a){function b(){A.resolve(arguments);A=null}function c(){A.reject(arguments);
A=null}function d(k){function e(a){for(var b=function(){return a&&a.length>0?k.filter(function(b){return a.indexOf(b.asin)>=0}):k}(),c=b[0],d=1;d<b.length;d++)b[d].openTime<c.openTime&&(c=b[d]);return c.asin}function h(){q([e()]).then(b,c)}if(!k||k.length===0)KindleHostDeviceDetector.isIE()&&C===0?(b(),C++):(KindleDebug.warn("trying to delete oldest asin, but got no list of books"),C=0,c());else{C=0;var j=k.map(function(a){return a.asin});L(a).getFilteredSearchIndexAsins(j).done(function(a){a&&a.length>
0?L(e(a)).deleteSearchIndex().then(b,c):h()}).fail(h)}}A||(A=new jQuery.Deferred,z.getOldBookList(a).then(d,c));return A};a.getBookStatistics=J;a.updateBookInfos=function(a){var b=[],c;for(c in a){var d={},k;for(k in a[c])d[k]=a[c][k];b.push({operation:Kindle.DB.UPDATE_RECORD_OPERATION,tableName:"bookinfo",params:[d,{asin:c}]})}return z.batchTransaction(b)};a.BookInfoDB=L;return a},KindleDBClient=function(){function a(){if(!J)throw{name:"databaseInitializationError",message:"Please call initialize function first"};
}function e(a){var b=$.extend({appDb:E},a);x.callEventListeners(a.type,b)}function b(a){var b=$.extend({bookDb:L},a);x.callEventListeners(a.type,b)}function d(a){var b=new jQuery.Deferred;a.wrapper?a.wrapper.dropTables().then(b.resolve,b.reject,b.notify):b.resolve();return b.promise()}function c(a){if(F)return F.promise();F=new jQuery.Deferred;I.initDfd=new jQuery.Deferred;var b=KindleStubDBWrapper(P);n(!1);b.createTables(O,I.version).then(function(){l(b);KindleAppDb(b);I.wrapper=b;I.initDfd.resolve(b);
z=E=b;J=!0;F.resolve(a)},function(a){F.reject(a)});return F.promise()}function j(){function a(){++g===d&&(z=null,KindleStubDBWrapper(P).dropTables(),f.resolve())}function b(c){return function(b){var d=[],g;for(g in b)d.push({operation:Kindle.DB.UPSERT_RECORD_OPERATION,tableName:c,params:[b[g],b[g]]});E.batchTransaction(d).then(a,f.reject)}}var f=new jQuery.Deferred;if(!z)return f.resolve(),f.promise();var c=z.getTableNames(),d=c.length,g=0,k;for(k in c)z.getRecord(c[k]).then(b(c[k]),f.reject);return f.promise()}
function l(a){function b(f){return{tableName:f,insertRecord:function(b){return a.insertRecord(f,b)},insertList:function(b){return a.insertList(f,b)},updateRecord:function(b,c){return a.updateRecord(f,b,c)},getRecord:function(b,c){return a.getRecord(f,b,c)},deleteRecord:function(b){return a.deleteRecord(f,b)},batchTransaction:function(b){var c;for(c=0;c<b.length;c++)b[c].tableName=f;return a.batchTransaction(b)}}}var f=a.getTableNames(),c,d;for(d in f)c=f[d],K[c]=b(c);a.getTable=function(a){return K[a]}}
function m(a){a.onversionchange=function(a){I.handle&&I.handle.close();M.handle&&M.handle.close();a&&a.target&&a.target.close&&typeof a.target.close==="function"&&a.target.close();setTimeout(function(){function a(){window.location.reload(!0)}_metricsManager.emitNow("App::DatabaseGoneOnVersionZero",{breakdown:["Browser"]}).then(a,a)},500)}}function s(){function a(){l(b);KindleAppDb(b);I.wrapper=b;I.initDfd.resolve(b)}var b={};if(!I.initDfd)I.initDfd=new jQuery.Deferred,KindleHostDeviceDetector.isWebSQLSupported()?
(b=KindleSqlWrapper(I),b.flavor="websql",b.openDatabase().then(function(b){I.handle=b;a();KindleLocalStorage.setItem("haveDB","1")},I.initDfd.reject)):KindleHostDeviceDetector.isIndexedDBSupported()?(b=KindleIDBWrapper(I),b.flavor="IndexedDB",b.openDatabase().done(function(b){m(b);I.handle=b;KindleLocalStorage.setItem("haveDB","1");a()}).fail(I.initDfd.reject)):c(this);return I.initDfd.promise()}function p(){function a(){l(b);KindleBookDb(b);M.wrapper=b;M.initDfd.resolve(b)}var b={};if(!M.initDfd){M.initDfd=
new jQuery.Deferred;try{KindleHostDeviceDetector.isWebSQLSupported()?(b=KindleSqlWrapper(M),b.openDatabase().then(function(f){M.handle=f;a(b)},M.initDfd.reject)):KindleHostDeviceDetector.isIndexedDBSupported()?(b=KindleIDBWrapper(M),b.openDatabase().done(function(b){m(b);M.handle=b;a()}).fail(M.initDfd.reject)):M.initDfd.reject("nodb")}catch(f){M.initDfd.reject()}}return M.initDfd.promise()}function h(){if(KindleHostDeviceDetector.isChromeApp())return!0;if((KindleHostDeviceDetector.isFirefox()||KindleHostDeviceDetector.isIE())&&
KindleLocalStorage.getItem("haveDB"))return!0;var a=KindleLocalStorage.getItem("booksdb");if(a==="true")return!0;else if(a==="false")return!1}function n(a){KindleLocalStorage.setItem("booksdb",a?"true":"false")}function r(){var a;a=new jQuery.Deferred;if(L)return a.resolve(L),a.promise();var b;b=!KindleHostDeviceDetector.isWebSQLSupported()&&!KindleHostDeviceDetector.isIndexedDBSupported()?!1:KindleHostDeviceDetector.isChrome()&&!KindleHostDeviceDetector.isChromeApp()?!1:!0;if(!b)return a.reject(),
a.promise();M.initDfd=null;p().then(function(b){L=b;n(!0);a.resolve(L)},function(){n(!1);a.reject()});return a.promise()}function o(){var a;a=new jQuery.Deferred;if(E&&E!==z)return a.resolve(E).promise();I.initDfd=null;s().then(function(b){E=b;a.resolve(E)},function(){a.reject()});return a.promise()}function y(){function a(){E=z;KindleLocalStorage.removeItem("haveDB");C=A.memAppDb}function b(){C=A.dbBookDb}function f(f){return j().pipe(function(){E=f;z=null;KindleLocalStorage.removeItem(P);C=A.dbAppDb;
return r().pipe(b)},a)}var c;switch(C){case A.dbBookDb:c=$.Deferred().resolve();break;case A.dbAppDb:c=r().pipe(b);break;case A.memAppDb:c=o().pipe(f,a)}return c.promise()}function t(){function a(b,f){E=b;C=(L=f)?A.dbBookDb:A.dbAppDb;J=!0;q.resolve(S)}function b(f){$.when(h()?p():null).then(function(b){C=A.dbBookDb;a(f,b)},function(){C=A.dbAppDb;a(f,null)})}function f(){C=A.memAppDb;c(S).done(q.resolve)}if(!q)q=new jQuery.Deferred,(KindleHostDeviceDetector.isFirefox()||KindleHostDeviceDetector.isIE()?
KindleLocalStorage.getItem("haveDB"):1)?s().then(b,f):(C=A.memAppDb,c(S).done(q.resolve));return q.promise()}var x=ListenerManager(),q=null,J=!1,F=null,E=null,L=null,z=null,A={none:"none",memAppDb:"memAppDb",dbAppDb:"dbAppDb",dbBookDb:"dbBookDb"},C=A.none,g=Kindle.DB.TEXT_TYPE,v=Kindle.DB.NUMBER_TYPE,u=Kindle.DB.OBJECT_TYPE,N=Kindle.DB.BLOB_TYPE,k=Kindle.DB.ALLOW_NULL,D=Kindle.DB.PRIMARY_KEY,Q=Kindle.DB.PIECE_ID_TYPE,P="app_db_storage",O={bookdata:{asin:g|D,contentType:g|k,title:g|k,authors:u|k,purchaseDate:v|
k,maxPosition:v|k,lastTimeRead:v|k,lastPositionRead:v|k,lastFPRSyncTime:v|k,authorPronunciations:u|k,titlePronunciation:g|k},keyValue:{key:g|D,value:g|k},metrics:{method:g,time:v,timers:u|k,counters:u|k,breakDown:u|k,kindleStream:u|k},journal:{id:Kindle.DB.AUTO_INCREMENT,entry:u}},g={bookinfo:{asin:g|D,cacheState:g|Kindle.DB.SECONDARY_KEY,cachedSize:v|k,openTime:v,context:u,metadata:u,manifest:u,fragmap:u},skeleton:{asin:g|D,id:v|D|Q,size:v,piece:g,metadata:g,other:g},fragments:{asin:g|D,id:v|D|Q,
size:v,piece:g,metadata:g,other:g},glyphs:{asin:g|D,id:v|D|Q,size:v,piece:g,metadata:g,other:g},resources:{asin:g|D,id:v|D|Q,size:v,piece:g,metadata:g,other:g},locations:{asin:g|D,id:v|D|Q,size:v,piece:g,metadata:g,other:g},annotationsCache:{asin:g|D,annotationsData:u},covers:{asin:g|D,coverData:g},searchIndex:{asin:g|D,component:g|D,data:N},pageNumberCache:{asin:g|D,pageNumberData:u},reservedStorage:{asin:g|D,id:g|D,data:N}},K={},I={shortName:"K4W",version:3,displayName:"Kindle Cloud Reader",defaultSize:5E6,
initDfd:null,wrapper:null,handle:null,tables:O,versionUpdate:[{version:2,tableName:"bookdata",operation:Kindle.DB.ALTER_TABLE_OPERATION,params:["contentType"]},{version:2,tableName:"bookdata",operation:Kindle.DB.UPDATE_RECORD_OPERATION,params:[{contentType:"EBOK"}]},{version:3,tableName:"bookdata",operation:Kindle.DB.ALTER_TABLE_OPERATION,params:["authorPronunciations","titlePronunciation"]},{version:4,tableName:"metrics",operation:Kindle.DB.ALTER_TABLE_OPERATION,params:["kindleStream"]}]},M={shortName:"K4Wbooks",
version:7,displayName:"Kindle Cloud Reader Books",defaultSize:5E7,initDfd:null,wrapper:null,handle:null,tables:g,versionUpdate:[{version:4,tableName:"bookinfo",operation:Kindle.DB.ALTER_TABLE_OPERATION,params:["manifest"]},{version:5,tableName:"searchIndex",operation:Kindle.DB.CREATE_TABLE_OPERATION,params:[g.searchIndex]},{version:6,tableName:"pageNumberCache",operation:Kindle.DB.CREATE_TABLE_OPERATION,params:[g.pageNumberCache]},{version:7,tableName:"reservedStorage",operation:Kindle.DB.CREATE_TABLE_OPERATION,
params:[g.reservedStorage]}]},S={enableFullDb:function(){return y(this)},getAppDb:function(){a();return E},getBookDb:function(){a();return L},bookDbEnabled:h,persistDB:function(){E&&E.persist&&E.persist();L&&L.persist&&L.persist()},clear:function(a,b){function f(){I.wrapper=null;E=I.initDfd=null;M.wrapper=null;z=L=M.initDfd=null;J=!1;F=_initializeFullDeferred=null;c.resolve()}var c=new jQuery.Deferred;(function(){function a(b){b=Number(b)||0;c.notify({clearDbAttempts:b});return I.wrapper.setValueForKey("clearDbAttempts",
b+1)}return I.wrapper.getValueForKey("clearDbAttempts").pipe(a,a)})().always(function(){d(I).then(function(){d(M).then(f,c.reject)},c.reject,c.notify)});c.then(a,b);return c.promise()},addEventListener:function(a,c){E&&E.addEventListener&&E.addEventListener(a,e);L&&L.addEventListener&&L.addEventListener(a,b);x.addEventListener(a,c)},removeEventListener:function(a,b){x.removeEventListener(a,b)}};return{initialize:function(){KindleModuleManager.define(Kindle.MODULE.DB_CLIENT,[Kindle.MODULE.APPLICATION_ARGS],
t)}}}();
function KindleIDBWrapper(a){function e(a,b){b=b||{};b.type=b.type||a;Q.callEventListeners(a,b)}function b(a){if(!D[a])throw{name:"databaseAccessError",message:"Trying to access undefined table "+a};}function d(){var a=[],b;for(b in D)a.push(b);return a}function c(a,b,c){if(D[a].info[b]&Kindle.DB.PIECE_ID_TYPE){for(a=""+c;a.length<v;)a="0"+a;return a}else return c}function j(a,f){if(a&&f){b(f);var d=D[f],k="";if(d.genKeyPath)for(var d=d.keyList,e=0;e<d.length;++e){if(a[d[e]]===void 0){k=void 0;break}k+=
c(f,d[e],a[d[e]]);e<d.length-1&&(k+=g)}else k=d.autoInc?a.__idbKey:a[d.keyPath];return k}}function l(a,b,d){for(var k="",e,h,j=0;j<b.length;++j){e=b[j];h=d[e];if(!h)break;h=h.hasOwnProperty(Kindle.DB.OPERATOR)?h[Kindle.DB.VALUES][0]:h;k+=c(a,e,h);j<b.length-1&&(k+=g)}return k}function m(a,b,d){var k="",e,h,j;for(j=0;j<b.length;++j){h=b[j];e=d[h];if(!e)throw{name:"CreateUpperBoundException",message:"Need at least the root primary key to create an upper bound"};if(e.hasOwnProperty(Kindle.DB.OPERATOR)){var u=
e[Kindle.DB.VALUES][e[Kindle.DB.VALUES].length-1];if(typeof u==="number")e=e[Kindle.DB.VALUES][e[Kindle.DB.VALUES].length-1];else if(typeof u==="string")e=u;else throw{name:"InvalidKeyException",message:"Tried to generate a lowerbound key with invalid keys"};}k+=c(a,h,e);j<b.length-1&&(k+=g)}return k}function s(a,b){for(var c=Date.now()-2E3,d=0;d<K.length;d++)if(K[d].id===a){K[d].time<c&&KindleDebug.log("Long write: "+(Date.now()-K[d].time));K.splice(d,1);break}K.length===0&&(clearInterval(S),S=null);
I&&(I=!1,e(Kindle.ERROR.DB_LINGERING_WRITE,{stalled:!1,writeOk:b}))}function p(){var a=Date.now()-5E3;K.some(function(b){return b.time<a&&!b.warned})&&(K.forEach(function(a){a.warned=!0}),I=!0,e(Kindle.ERROR.DB_LINGERING_WRITE,{stalled:!0}))}function h(a,b,c){var d,g=new jQuery.Deferred,e=new jQuery.Deferred,h=$.makeArray(a),j;c===O?(S||(S=setInterval(p,5E3)),K.push({id:++M,time:Date.now(),warned:I}),j=M):j=0;var u=j;try{d=k.transaction(h,c)}catch(v){return g.reject().promise()}d.oncomplete=function(){u&&
s(u,!0);e.then(g.resolve,g.reject)};d.onerror=function(a){u&&s(u,!1);g.reject(a)};d.onabort=function(){u&&s(u,!1);g.reject({code:Kindle.DB.QUOTA_ERR,message:"Assumed QUOTA_ERR"})};b(d,a,e);return g.promise()}function n(a,b,c){function d(){++g===k&&l.resolve(m)}for(var g=0,k=c.length,e=D[b].tableInfo,h=D[b].keyPath,u=D[b].genKeyPath,v=D[b].autoInc,l=new jQuery.Deferred,t,m=[],q=0;q<c.length;q++){for(var x in c[q])t=e[x],t&Kindle.DB.TEXT_TYPE?c[q][x]=typeof c[q][x]==="string"?c[q][x]:String(c[q][x]):
t&Kindle.DB.NUMBER_TYPE&&(c[q][x]=typeof c[q][x]==="number"?c[q][x]:Number(c[q][x]));!v&&!c[q][h]?(t=u?j(c[q],b):h,t=a.put(c[q],t)):t=v?a.add(c[q]):a.put(c[q]);t.onsuccess=d;t.onerror=l.reject;m.push(c[q])}return l.promise()}function r(a,c){if(!a||!c)throw{name:"databaseInsertError",message:"Tried to insert with an empty table name or empty object list"};b(a);return h(a,function(a,b,d){a=a.objectStore(b);n(a,b,c).then(d.resolve,d.reject)},O)}function o(a,c,d){function g(a,b){return a-b}b(c);var k=
d?$.extend(!0,{},d):d,e,h=D[c].tableInfo,u=D[c].keyPath,d=D[c].keyList,v=D[c].autoInc,t=new jQuery.Deferred,q=!1,x;if(k)for(var n in k){var y=k[n];if(y){var s=h[n],y=y.hasOwnProperty(Kindle.DB.OPERATOR);if(s&Kindle.DB.TEXT_TYPE)if(y){for(var r in k[n][Kindle.DB.VALUES])s=k[n][Kindle.DB.VALUES][r],k[n][Kindle.DB.VALUES][r]=typeof s==="string"?s:String(s);k[n][Kindle.DB.VALUES].sort()}else typeof k[n]!=="string"&&(k[n]=String(k[n]));else if(s&Kindle.DB.NUMBER_TYPE)if(y){for(var F in k[n][Kindle.DB.VALUES])s=
k[n][Kindle.DB.VALUES][F],k[n][Kindle.DB.VALUES][F]=typeof s==="number"?s:Number(s);k[n][Kindle.DB.VALUES].sort(g)}else typeof k[n]!=="number"&&(k[n]=Number(k[n]));!q&&y&&(q=!0)}}!q&&k&&(k[u]?e=k[u]:v||(e=j(k,c)));if(e)x=a.get(e),x.onsuccess=function(a){(a=a.target.result)?t.resolve([a]):t.resolve([])},x.onerror=t.reject;else{var N=[],p;if(k){e=!0;for(var o in d)if(!k[d[o]]){e=!1;break}if(v)x=a.openCursor();else if(e)e=l(c,d,k),c=m(c,d,k),c=IDBKeyRange.bound(e,c,!1,!1),x=a.openCursor(c);else{o={};
for(var J in d)if(k[d[J]]){p=d[J];o[p]=k[p];break}if(!p){for(var E in k)if(k[E].hasOwnProperty(Kindle.DB.OPERATOR)){p=E;o[E]=k[E];break}p||(p=Object.keys(k)[0])}o[p]&&o[p].hasOwnProperty(Kindle.DB.OPERATOR)?(e=l(c,[p],o),c=m(c,[p],o),c=IDBKeyRange.bound(e,c,!1,!1)):c=IDBKeyRange.only(k[p]);try{x=a.index(p).openCursor(c)}catch(z){x=a.openCursor()}}}else x=a.openCursor();x.onerror=t.reject;x.onsuccess=function(a){var a=a.target.result,b=!0;if(a){for(var c in k){var f=k[c];if(f){if(f.hasOwnProperty(Kindle.DB.OPERATOR))switch(b=
$.inArray(a.value[c],f[Kindle.DB.VALUES])!==-1,f[Kindle.DB.OPERATOR]){case Kindle.DB.NOT_EQUAL:b=!b}else f!==a.value[c]&&(b=!1);if(!b)break}}b&&(c=v?$.extend(a.value,{__idbKey:a.primaryKey}):a.value,N.push(c));a["continue"]()}else t.resolve(N)}}return t.promise()}function y(a,b,c){var d=c[0],c=c[1],g=new jQuery.Deferred;o(a,b,c).then(function(c){if(c.length>0){for(var k in c)c[k]=$.extend(c[k],d);n(a,b,c).then(g.resolve,g.reject)}else g.resolve(c)},g.reject);return g.promise()}function t(a,b,c){return h(a,
function(a,d,g){a=a.objectStore(d);y(a,d,[b,c]).then(g.resolve,g.reject)},O)}function x(a,b,c){var d=new jQuery.Deferred;y(a,b,c).then(function(g){g.length===0?(c[0]=$.extend(c[0],c[1]),n(a,b,[c[0]]).then(d.resolve,d.reject)):d.resolve(g)},d.reject);return d.promise()}function q(a,b,c){return o(a,b,c[0])}function J(a,b,c){return h(a,function(a,d,g){a=a.objectStore(d);q(a,d,[b]).then(function(a){if(c)for(var b in a)for(var d in a[b])d in c||delete a[b][d];g.resolve(a)},g.reject)},P)}function F(a,b,
c){function d(c){function e(){return function(){++h===c.length&&g.resolve()}}var h=0;if(c.length===0)g.resolve();else for(var u in c){var v=j(c[u],b);k=a["delete"](v);k.onsuccess=e(v,c[u]);k.onerror=g.reject}}var c=c[0],g=new jQuery.Deferred,k;c?o(a,b,c).then(d,g.reject):(k=a.clear(),k.onsuccess=g.resolve,k.onerror=g.reject);return g.promise()}function E(a){for(var b=new jQuery.Deferred,c=k.transaction(a,O),d=0;d<a.length;d++)c.objectStore(a[d]).clear().onerror=b.reject;c.oncomplete=b.resolve;c.onabort=
b.reject;c.onerror=b.reject;return b.promise()}function L(){var b=new jQuery.Deferred;k.onversionchange=function(){k.close();k=void 0};k.close();var c=window.indexedDB.deleteDatabase(a.shortName);c.onsuccess=function(){b.resolve()};c.onerror=function(){b.reject()};c.onblocked=function(){b.notify({blocked:!0})};return b.promise()}function z(){return A(function(a){return a.value})}function A(a){return h("bookinfo",function(b,c,d){var g=[],b=b.objectStore(c).openCursor();b.onsuccess=function(b){if(b=
b.target.result){var c=a(b);c&&g.push(c);b["continue"]()}else d.resolve(g)};b.onerror=d.reject},P)}function C(a){function b(a){t.reject(a)}function c(a){t.reject(a)}function g(a){if(a=a.target.result)a["delete"](),a["continue"]()}function e(){}var h=d(),v,t,l,q,x,m,n,y;t=new jQuery.Deferred;m=k.transaction(h,O);m.oncomplete=function(){t.resolve()};m.onerror=b;m.onabort=b;for(l=0;l<a.length;++l){q=a[l];x=j({asin:q,id:0},"skeleton");y=j({asin:q,id:u},"skeleton");y=IDBKeyRange.bound(x,y);for(x=0;x<h.length;x++)v=
D[h[x]],n=m.objectStore(h[x]),v.genKeyPath?(v=n.openCursor(y),v.onsuccess=g):(v=n["delete"](q),v.onsuccess=e),v.onerror=c}return t.promise()}var g=String.fromCharCode(31),v=8,u="99999999",N=a,k=null,D={},Q=ListenerManager(),P=IDBTransaction.READ_ONLY||"readonly",O=IDBTransaction.READ_WRITE||"readwrite",K=[],I=!1,M=1,S=null,T={};T[Kindle.DB.INSERT_LIST_OPERATION]=n;T[Kindle.DB.UPDATE_RECORD_OPERATION]=y;T[Kindle.DB.UPSERT_RECORD_OPERATION]=x;T[Kindle.DB.DELETE_RECORD_OPERATION]=F;T[Kindle.DB.GET_RECORD_OPERATION]=
q;T[Kindle.DB.CREATE_TABLE_OPERATION]=function(){KindleDebug.error("Illegal function: doCreateTable")};if(!function(a){var b,c;for(c in a){b=c;var d=!0,k=!1,e=void 0,h=[],j=[],u="",v=[],t=a[c],l=void 0;for(l in t){e=t[l];if(e&Kindle.DB.AUTO_INCREMENT||e&Kindle.DB.PRIMARY_KEY)k?d=!1:(k=!!(e&Kindle.DB.AUTO_INCREMENT))||h.push(l);e&(Kindle.DB.PRIMARY_KEY|Kindle.DB.SECONDARY_KEY)&&v.push({name:l,keyPath:l,unique:!1,multientry:!1})}if(d){for(var e=!1,q=0;q<h.length;++q)u+=h[q],j[q]=t[l],q<h.length-1&&
(u+=g,e=!0);h.length===0&&(k=!0);D[b]={info:t,keyList:h,keyPath:u?u:void 0,genKeyPath:e,genKeyTypes:j,indexes:v,autoInc:k,tableInfo:t}}b=d;if(b&Kindle.DB.CONSTRAINT_ERROR)return!1}return!0}(a.tables))throw Error("Invalid table description for "+a.shortName);return{createTables:function(){KindleDebug.error("Called deprecated createTables function")},openDatabase:function(){var a=new jQuery.Deferred,b;window.indexedDB=window.indexedDB||window.mozIndexedDB||window.msIndexedDB||window.webkitIndexedDB;
window.IDBTransaction=window.IDBTransaction||window.webkitIDBTransaction;b=window.indexedDB.open(N.shortName,N.version);b.onsuccess=function(b){k=b.target.result;a.resolve(k)};b.onerror=function(b){a.reject(b)};b.onupgradeneeded=function(a){var c;a:{c=N.tables;var a=a.target.result,d,g,k;k=a.objectStoreNames;for(d=0;d<k.length;d++)g=k[d],c.hasOwnProperty(g)||a.deleteObjectStore(g);for(g in c)if($.inArray(g,k)===-1){var e=a;d=g;if(D[d]===void 0)d=Kindle.DB.CONSTRAINT_ERR;else{var h={autoIncrement:D[d].autoInc};
if(!h.autoIncrement&&!D[d].genKeyPath)h.keyPath=D[d].keyPath;var e=e.createObjectStore(d,h),j=h=void 0;for(j in D[d].indexes)h=D[d].indexes[j],e.createIndex(h.name,h.keyPath,{unique:h.unique});d=null}if(d&Kindle.DB.CONSTRAINT_ERR){c=!1;break a}}c=!0}c||b.abort()};return a.promise()},dropTable:function(a){return E([a])},dropTables:function(){function a(){z().then(b,e)}function b(a){function f(){d(a).then(g,e)}a.length===0?g():c(a).then(f,e)}function c(a){function b(){++f===a.length&&d.resolve()}for(var d=
new jQuery.Deferred,f=0,g=0;g<a.length;g++)t("bookinfo",{cacheState:Kindle.BookInfo.CachedState.PARTIAL},{asin:a[g].asin}).then(b,d.reject);return d.promise()}function d(a){function b(){++f===a.length&&c.resolve()}for(var c=new jQuery.Deferred,f=0,g=0;g<a.length;g++)C([a[g].asin]).then(b,c.reject);return c.promise()}function g(){E($.makeArray(k.objectStoreNames)).then(h.resolve,e)}function e(){KindleDebug.error("Error occured signing out");h.reject()}var h;if(window.indexedDB.deleteDatabase)return L();
h=new jQuery.Deferred;k.name==="K4Wbooks"?$.when(E(["annotationsCache"]),E(["pageNumberCache"])).then(a,e):g();return h.promise()},getTableNames:d,insertRecord:function(a,b){return r(a,[b])},insertList:r,upsertRecord:function(a,b,c){return h(a,function(a,d,g){a=a.objectStore(d);x(a,d,[b,c]).then(g.resolve,g.reject)},O)},updateRecord:t,getRecord:J,deleteRecord:function(a,b){return h(a,function(a,c,d){a=a.objectStore(c);F(a,c,[b]).then(d.resolve,d.reject)},O)},batchTransaction:function(a){if(!a||a.length===
0){var c=new jQuery.Deferred;c.resolve([]);return c.promise()}var c=[],d=!0,g=[],k=0,e;for(e in a)$.inArray(a[e].tableName,c)===-1&&(b(a[e].tableName),c.push(a[e].tableName)),d&&a[e].operation!==Kindle.DB.GET_RECORD_OPERATION&&(d=!1);return h(c,function(c,d,f){function e(b){return function(c){g[b]=c;++k===a.length?f.resolve(g):j()}}function h(){c.abort();f.reject()}function j(){(u=a[v])||f.reject();b(u.tableName);T[u.operation](c.objectStore(u.tableName),u.tableName,u.params).then(e(v),h);++v}var u,
v=0;j();return f.promise()},d?P:O)},getPieceIds:function(a,c){b(a);return h(a,function(b,d,k){var e=[],h,b=b.objectStore(a),d=j({asin:c,id:0},a);h=j({asin:c,id:u},a);d=IDBKeyRange.bound(d,h);b=b.openCursor(d);b.onsuccess=function(a){var b;(a=a.target.result)?(b=a.key.split(g),b=parseInt(b[1],10),e.push(b),a["continue"]()):k.resolve(e)};b.onerror=k.reject},P)},getOldBookList:function(a){return A(function(b){if(b.key!==a&&b.value.cacheState!==Kindle.BookInfo.CachedState.PINNED)return b.value})},dbGetBookStatistics:function(a){function b(a){h.reject(a)}
function c(a){h.reject(a)}function g(a){t[a]={count:0,size:0};return function(b){(b=b.target.result)?(t[a].count++,t[a].size+=b.value.size,b["continue"]()):t.totalSize+=t[a].size}}var e=[];$.each(d(),function(a,b){D[b]&&D[b].info.size&&e.push(b)});e.push("bookinfo");var h,v,t,l,q,x;h=new jQuery.Deferred;t={totalSize:0,cacheState:"",cachedSize:0};l=k.transaction(e,P);l.oncomplete=function(){h.resolve(t)};l.onerror=b;l.onabort=b;v=j({asin:a,id:0},e[0]);x=j({asin:a,id:u},e[0]);x=IDBKeyRange.bound(v,
x);for(v=0;v<e.length-1;v++)t[e[v]]={count:0,size:0},q=l.objectStore(e[v]),q=q.openCursor(x),q.onsuccess=g(e[v]),q.onerror=c;q=l.objectStore("bookinfo");q=q.get(a);q.onsuccess=function(a){if(a=a.target.result)t.cacheState=a.cacheState,t.cachedSize=a.cachedSize||0};q.onerror=c;return h.promise()},dbDeleteBooksData:C,getSearchIndexData:function(a){var b=$.Deferred(),c=KindleMetricsProfiler("retrieve db search index");J("searchIndex",{asin:a}).then(function(a){if(!a||!a.length)b.reject();else{var d=
{};a.forEach(function(a){d[a.component]=a.data});c.endTimer();c.log();b.resolve(d)}},b.reject);return b.promise()},putSearchIndexData:function(a,b){var c=$.Deferred(),d=KindleMetricsProfiler("save db search index"),g=[];g.push({asin:a,component:"positions",data:b.positions});g.push({asin:a,component:"words",data:b.words});g.push({asin:a,component:"properties",data:b.properties});r("searchIndex",g).always(function(){d.endTimer();d.log();c.resolve(b)});return c.promise()},deleteJournalEntries:function(a){return h("journal",
function(b,c,d){b=b.objectStore(c).openCursor();b.onsuccess=function(b){if(b=b.target.result){var c=b.value,g;for(g in a)if(c.type===a[g].type&&(c.guid||c.refEmId)===(a[g].guid||a[g].refEmId)&&c.start===a[g].start&&c.end===a[g].end&&c.position===a[g].position&&c.modifiedTimestamp===a[g].modifiedTimestamp&&c.asin===a[g].asin){delete a[g];b["delete"]();break}b["continue"]()}else d.resolve()};b.onerror=d.reject},O)},addEventListener:Q.addEventListener,removeEventListener:Q.removeEventListener}}
function KindleSqlWrapper(a,e){function b(a){if(!A[a])throw{name:"databaseAccessError",message:"Trying to access undefined table "+a};}function d(a,b){var c=new jQuery.Deferred,d=[];z[b?"readTransaction":"transaction"](function(b){a(b,d)},function(a){c.reject(a)},function(){c.resolve(d)});return c.promise()}function c(){var a=[],b;for(b in A)a.push(b);return a}function j(a,b,c){var d=[],k,e;for(e in a)k=b[e],k!==void 0?a[e]&Kindle.DB.OBJECT_TYPE?d.push(JSON.stringify(k)):a[e]&Kindle.DB.BLOB_TYPE?
d.push(L(k)):d.push(k):c&&!(a[e]&Kindle.DB.AUTO_INCREMENT)&&d.push(null);return d}function l(a,b){var c="",d,e;for(e in a)if(d=b[e])if(c+=(c?" AND ":"")+e,d.hasOwnProperty(Kindle.DB.OPERATOR))switch(d[Kindle.DB.OPERATOR]){case Kindle.DB.NOT_EQUAL:c+=" != ?";break;case Kindle.DB.IN_ARRAY:c+=" IN (?";for(var h=1;h<d[Kindle.DB.VALUES].length;h++)c+=", ?";c+=")"}else c+=" = ?";return c}function m(a){var b="";a&Kindle.DB.TEXT_TYPE||a&Kindle.DB.OBJECT_TYPE||a&Kindle.DB.BLOB_TYPE?b+="TEXT ":a&Kindle.DB.AUTO_INCREMENT?
b+="INTEGER PRIMARY KEY AUTOINCREMENT ":a&Kindle.DB.NUMBER_TYPE&&(b+="INTEGER ");!(a&Kindle.DB.PRIMARY_KEY)&&!(a&Kindle.DB.ALLOW_NULL)&&(b+="NOT NULL ");return b}function s(a,b){var c="DELETE FROM "+a;b&&(c+=" WHERE "+l(A[a],b));return c+";"}function p(a,b,c){if(c===void 0)c="*";else{var d=A[a],e="",h;for(h in d)c[h]&&(e+=(e?", ":"")+h);c=e}c="SELECT "+c+" FROM "+a;b&&(c+=" WHERE "+l(A[a],b));return c+";"}function h(a,c){b(a);if($.isArray(c)){if(c.length===0)return(new jQuery.Deferred).resolve().promise()}else return(new jQuery.Deferred).reject().promise();
return d(function(b){n(b,a,[c])},!1)}function n(a,b,c,d,e){var c=c[0],h,d=A[b],e="INSERT OR "+(e?"IGNORE":"REPLACE")+" INTO "+b+" (",t="",q="";for(h in d)d[h]&Kindle.DB.AUTO_INCREMENT||(t+=(t?", ":"")+h,q+=(q?", ":"")+"?");e+=t+") VALUES ("+q+");";h=e;b=A[b];for(e=0;e<c.length;e++)d=j(b,c[e],!0),a.executeSql(h,d)}function r(a,b,c,d,e){var d=c[0],c=c[1],h=A[b],t=A[b],q="",x;for(x in t)d[x]!==void 0&&(q+=(q?", ":"")+x+" = ?");b="UPDATE "+(e?"OR IGNORE ":"")+b+" SET "+q;c&&(b+=" WHERE "+l(t,c));b+=";";
d=j(h,d);c&&(d=d.concat(j(h,c)));a.executeSql(b,d)}function o(a,b,c){r(a,b,c,[],!0);n(a,b,[[$.extend({},c[0],c[1])]],[],!0)}function y(a,b){var c={},d,e,h;for(h in a)if(d=b[h],d!==void 0&&d!==null){e=a[h];var j=c,t=h;if(e&Kindle.DB.OBJECT_TYPE)d=JSON.parse(d);else if(e&Kindle.DB.BLOB_TYPE){e=d;d=e.slice(1);e.charAt(0)==="x"&&(d=KindleO_Aaa.o_aag(d));e=new ArrayBuffer(d.length);for(var q=new Uint8Array(e),l=0;l<d.length;l++)q[l]=d.charCodeAt(l);d=e}j[t]=d}return c}function t(a,c,e){b(a);return d(function(b,
d){q(b,a,[c,e],d)},!0)}function x(a){var b=[],c;if(a)for(var d in a)c=a[d],c.hasOwnProperty(Kindle.DB.VALUES)?b=b.concat(c[Kindle.DB.VALUES]):b.push(c);return b}function q(a,b,c,d){var e=c[0],h=A[b];a.executeSql(p(b,e,c[1]),x(e),function(a,b){if(b.rows.length>0)for(var c=0;c<b.rows.length;c++)d.push(y(h,b.rows.item(c)))})}function J(a,b,c){c=c[0];a.executeSql(s(b,c),x(c))}function F(a){return d(function(b,c){for(var d,e=0;e<a.length;e++)if(d=C[a[e].operation])c[e]=[],d(b,a[e].tableName,a[e].params,
c[e])},!1)}function E(a){var b,c=[];for(b in a)c.push({operation:Kindle.DB.CREATE_TABLE_OPERATION,tableName:b,params:[a[b]]});return F(c)}function L(a){a=function(a){var b;b=a instanceof ArrayBuffer||Object.prototype.toString.call(a)==="[object ArrayBuffer]";if(!b)throw"[KindleSqlWrapper binaryToString] Unknown data type passed. Expect ArrayBuffer.";var c,d;if(KindleHostDeviceDetector.hasArrayLikeApply())try{var g=a.byteLength;b=g;for(c=[];b>=0;){var e=g-b,h=a.slice(e,Math.min(e+1E4,g));d=new Uint8Array(h);
c.push(String.fromCharCode.apply(null,d));b-=1E4}}catch(j){c=null}if(!c){c=[];d=new Uint8Array(a);for(a=0;a<d.length;a++)c.push(String.fromCharCode(d[a]))}return c.join("")}(a);return a.match(/\x00/g)?"x"+KindleO_Aaa.o_aaa(a):"t"+a}var z=null,A={},C={};C[Kindle.DB.INSERT_LIST_OPERATION]=n;C[Kindle.DB.UPDATE_RECORD_OPERATION]=r;C[Kindle.DB.UPSERT_RECORD_OPERATION]=o;C[Kindle.DB.DELETE_RECORD_OPERATION]=J;C[Kindle.DB.GET_RECORD_OPERATION]=q;C[Kindle.DB.CREATE_TABLE_OPERATION]=function(a,b,c){var c=
c[0],d="CREATE TABLE IF NOT EXISTS "+b+"(",e="",h,j=!0,t;for(t in c)j?j=!1:d+=", ",d+=t+" ",h=c[t],d+=m(h),h&Kindle.DB.PRIMARY_KEY&&(e+=e?", ":" PRIMARY KEY (",e+=t);e&&(d+=", "+e+")");d+=");";A[b]=c;a.executeSql(d,[])};C[Kindle.DB.ALTER_TABLE_OPERATION]=function(a,b,c){var d=A[b],e,h;e="";for(var j=0;j<c.length;j++)e=c[j],h=d[e]|Kindle.DB.ALLOW_NULL,e="ALTER TABLE "+b+" ADD COLUMN "+e+" ",e+=m(h),e+=";",a.executeSql(e,[])};return{createTables:function(){KindleDebug.error("Called deprecated createTables function")},
openDatabase:function(){var b=new jQuery.Deferred,c=a.defaultSize;e!==void 0&&c>e*1E6&&(c=_maxDbSize*1E6);try{z=openDatabase(a.shortName,"",a.displayName,c)}catch(d){try{z=openDatabase(a.shortName,"",a.displayName,5E6)}catch(h){return b.reject(h)}}var k=parseInt(z.version,10)||z.version;KindleHostDeviceDetector.isiOS_4x()||z.changeVersion(k,a.version);E(a.tables).done(function(){var c=a.versionUpdate,d=[];if(c&&c.length)for(var e=0;e<c.length;e++)c[e].version>k&&d.push({operation:c[e].operation,tableName:c[e].tableName,
params:c[e].params});F(d).then(b.resolve(z),b.reject)}).fail(b.reject);return b.promise()},dropTables:function(){return d(function(a){for(var b in A)a.executeSql("DROP TABLE IF EXISTS "+b+";")},!1)},getTableNames:c,insertRecord:function(a,b){return h(a,[b])},insertList:h,upsertRecord:function(a,c,e){b(a);return d(function(b){o(b,a,[c,e])},!1)},updateRecord:function(a,c,e){b(a);return d(function(b){r(b,a,[c,e])},!1)},getRecord:t,deleteRecord:function(a,c){b(a);return d(function(b){J(b,a,[c])},!1)},
batchTransaction:F,getPieceIds:function(a,b){var c=new jQuery.Deferred;t(a,{asin:b},{id:!0}).then(function(a){var b=[],d;for(d in a)b.push(a[d].id);c.resolve(b)},c.reject);return c.promise()},getOldBookList:function(a){var b=new jQuery.Deferred;t("bookinfo",{asin:{operator:Kindle.DB.NOT_EQUAL,values:[a]},cacheState:{operator:Kindle.DB.NOT_EQUAL,values:[Kindle.BookInfo.CachedState.PINNED]}},{asin:!0,openTime:!0}).then(function(a){a.length===0?b.reject():b.resolve(a)},b.reject);return b.promise()},
dbGetBookStatistics:function(a){var b=new jQuery.Deferred,d=[];$.each(c(),function(a,b){A[b]&&A[b].size&&d.push(b)});for(var e={totalSize:0,cacheState:"",cachedSize:0},h,j=[],t=0;t<d.length;t++)j.push({operation:Kindle.DB.GET_RECORD_OPERATION,tableName:d[t],params:[{asin:a},{size:!0}]});j.push({operation:Kindle.DB.GET_RECORD_OPERATION,tableName:"bookinfo",params:[{asin:a},{cacheState:!0,cachedSize:!0}]});F(j).then(function(a){for(var c=0;c<d.length;c++){var g=a[c],j=0,t=void 0;for(t in g)j+=g[t].size;
h={count:g.length,size:j};e[d[c]]=h;e.totalSize+=h.size}e.cacheState=a[a.length-1][0].cacheState;e.cachedSize=a[a.length-1][0].cachedSize||0;b.resolve(e)},function(){b.resolve(e)});return b.promise()},dbDeleteBooksData:function(a){var b,d,e,h=[];e=c();for(d=0;d<a.length;++d)for(b=0;b<e.length;++b)h.push({operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:e[b],params:[{asin:a[d]}]});return F(h)},getSearchIndexData:function(a){var b=$.Deferred();t("searchIndex",{asin:a}).then(function(a){if(!a||
!a.length)b.reject();else{var c={},d={};a.forEach(function(a){c[a.component]=a.data});d.positions=c.positions;d.words=c.words;d.properties=c.properties;b.resolve(d)}},b.reject);return b.promise()},putSearchIndexData:function(a,b){var c=$.Deferred(),d=[];d.push({asin:a,component:"positions",data:b.positions});d.push({asin:a,component:"words",data:b.words});d.push({asin:a,component:"properties",data:b.properties});h("searchIndex",d).always(function(){c.resolve(b)});return c.promise()},deleteJournalEntries:function(a){var b=
[],c;for(c in a)b.push({operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:"journal",params:[{id:a[c].id}]});return F(b)}}}
function KindleStubDBWrapper(a){function e(a){if(!h[a])throw{name:"databaseAccessError",message:"Trying to access undefined table "+a};}function b(a,b){var c=b[0],d,j,l,m;for(m in c){d={};l=a;j=d;var s;s=l;var p=c[m];e(s);var o=h[s],C=!0,g=void 0,v=void 0;for(v in o.info)if(g=o.info[v],p[v])if(g&Kindle.DB.AUTO_INCREMENT)C=!1;else{switch(typeof p[v]){case "number":C=g&Kindle.DB.NUMBER_TYPE;break;case "string":C=g&Kindle.DB.TEXT_TYPE;break;case "object":C=g&Kindle.DB.OBJECT_TYPE}if(!C)break}else if(g&
Kindle.DB.AUTO_INCREMENT)r[s]++,p[v]=r[s];else if(!(g&Kindle.DB.ALLOW_NULL)||g&Kindle.DB.PRIMARY_KEY)C=!1;s=C?null:Kindle.DB.CONSTRAINT_ERR;C=o=p=void 0;if(s===null){C=h[l].keyList;o=n[l];for(l=0;l<C.length-1;l++)p=C[l],o[p]||(o[p]={}),o=o[j];j.container=o;j.key=C[C.length-1]}j=s;if(j===null)l=c[m][d.key],d.container[l]?j=Kindle.DB.CONSTRAINT_ERR:d.container[l]=c[m];else{j=Kindle.DB.CONSTRAINT_ERR;break}}return j}function d(a,c){var d=new jQuery.Deferred,e=b(a,[c]);e?d.reject(e):d.resolve();return d.promise()}
function c(a,b){e(a);var c=h[a].keyList,d=n[a],j,l,m={};for(j=0;j<c.length;j++)if(l=c[j],b[l])if(j===c.length-1){m.key=b[l];break}else d[b[l]]||(n[b[l]]={}),d=n[b[l]],delete b[l];else break;if(j<c.length-1)throw"unsupported use case for in-memory DB!!";m.container=d;m.selection=b;return m}function j(a,b){var d=b[0],e=null,h=c(a,b[1]);h.container&&h.key&&h.container[h.key]?$.extend(h.container[h.key],d):e=Kindle.DB.CONSTRAINT_ERR;return e}function l(a,c){$.extend(c[0],c[1]);var d=b(a,[[c[0]]]);d===
Kindle.DB.CONSTRAINT_ERR&&(d=j(a,c));return d}function m(a,b,d){var b=b[0],e=h[a],j=n[a],l,m;if(b){if(a=c(a,b),j=a.container)if(a.key)j[a.key]&&d.push(j[a.key]);else for(l in a=a.selection,e=!0,j){for(m in a)if(j[l][m]!==b[m]){e=!1;break}e&&d.push(j[l])}}else if(e.keyList.length!==1)throw"unsupported use case for in-memory DB!!";else for(l in j)d.push(j[l]);return null}function s(a,b){var d=b[0],e,h=n[a],j,l,m;if(d){if(e=c(a,d),h=e.container)if(e.key)delete h[e.key];else for(j in e=e.selection,m=
!0,h){for(l in e)if(h[j][l]!==d[l]){m=!1;break}m&&delete h[j]}}else n[a]={};return null}function p(a){var b=new jQuery.Deferred,c,d=[],e;for(e in a)if(c=a[e],d[e]=[],c=o[c.operation](c.tableName,c.params,d[e]))break;c===null?b.resolve(d):b.reject(c);return b.promise()}var h={},n={},r={},o={};o[Kindle.DB.INSERT_LIST_OPERATION]=b;o[Kindle.DB.UPDATE_RECORD_OPERATION]=j;o[Kindle.DB.UPSERT_RECORD_OPERATION]=l;o[Kindle.DB.DELETE_RECORD_OPERATION]=s;o[Kindle.DB.GET_RECORD_OPERATION]=m;o[Kindle.DB.CREATE_TABLE_OPERATION]=
function(a,b){var c=!0,d=!1,e,j=[],l=0,m=b[0],s;for(s in m)if(e=m[s],e&Kindle.DB.AUTO_INCREMENT||e&Kindle.DB.PRIMARY_KEY)d?c=!1:(d=e&Kindle.DB.AUTO_INCREMENT,j.push(s));if(c){if(j.length===0)j.push("id"),m.id=Kindle.DB.AUTO_INCREMENT,d=!0;h[a]={info:m,keyList:j};(e=n[a])||(n[a]={});if(d){for(var p in e)l=Math.max(l,parseInt(p,10));r[a]=l}}return c?null:Kindle.DB.CONSTRAINT_ERR};(function(){var b;try{b=JSON.parse(KindleLocalStorage.getItem(a))}catch(c){}b&&typeof b==="object"&&(n=b)})();return{persist:function(){var b=
null;try{KindleLocalStorage.setItem(a,JSON.stringify(n))}catch(c){b=Kindle.DB.QUOTA_ERR}return b},createTables:function(a){var b,c,d;b=new jQuery.Deferred;d=[];for(c in a)d.push({operation:Kindle.DB.CREATE_TABLE_OPERATION,tableName:c,params:[a[c]]});p(d).then(b.resolve,b.reject);return b.promise()},dropTables:function(){n={};h={};r={};KindleLocalStorage.setItem(a,null);return(new $.Deferred).resolve().promise()},getTableNames:function(){var a=[],b;for(b in h)a.push(b);return a},insertRecord:function(a,
b){return d(a,[b])},insertList:d,upsertRecord:function(a,b,c){var d=new jQuery.Deferred;(a=l(a,[b,c]))?d.reject(a):d.resolve();return d.promise()},updateRecord:function(a,b,c){var d=new jQuery.Deferred;(a=j(a,[b,c]))?d.reject(a):d.resolve();return d.promise()},getRecord:function(a,b){var c=new jQuery.Deferred,d=[],e=m(a,[b],d);e?c.reject(e):c.resolve(d);return c.promise()},deleteRecord:function(a,b){var c=new jQuery.Deferred,d=s(a,[b]);d?c.reject(d):c.resolve();return c.promise()},batchTransaction:p,
deleteJournalEntries:function(a){var b=[],c;for(c in a)b.push({operation:Kindle.DB.DELETE_RECORD_OPERATION,tableName:"journal",params:[{id:a[c].id}]});return p(b)}}}
var BookChunk=function(){var a=Object.freeze?function(a){return Object.freeze(a)}:function(a){return a},e=["fragment","glyph","skeleton","resource","locationMap"],b={};e.forEach(function(a){b[a]={}});b.resource.huge=!0;var d={types:a(e),properties:a(b),getId:function(a){if(a.fragmentMetadata!==void 0)return a.fragmentMetadata.id;else if(a.skeletonMetadata!==void 0)return a.skeletonMetadata.id;else if(a.glyphFragmentMetadata!==void 0)return a.glyphFragmentMetadata.id;else if(a.metadata!==void 0)return a.metadata.id;
else KindleAssert(!1,"Can't get id from book chunk: unrecognizable metadata.")}};e.forEach(function(a){d[a.toUpperCase()+"_TYPE"]=a});return a(d)}(),RemoteContentCache=function(){return{create:function(a){function e(a){l=a;if(!b||b.state!=="pending")b=$.Deferred();b.resolve(l)}var b=$.Deferred(),d=a.asin,c=a.contentProvider,j=a.contentRemover,l,m={};BookChunk.types.forEach(function(a){m[a]={getChunks:function(b,e,j){c("getChunks",d,a,b).then(e,j)},putChunks:function(b,e,j){var l={};b.forEach(function(a,
b){l[b]=a});c("putChunks",d,a,l).then(e,j)},getCachedIds:function(b,e){c("getChunkIds",d,a).then(b,e)}}});m.queryBookinfo=function(){return c("getBookinfo",d).pipe(function(a){e(a);return a})};m.getBookinfo=function(){return b.promise()};m.putBookinfo=function(a){e(a);return c("putBookinfo",d,a)};m.updateBookinfo=function(a){if(!l)return $.Deferred().reject("bad state");$.extend(l,a);return c("updateBookinfo",d,a)};m.getAnnotations=function(){return c("getAnnotations",d)};m.putAnnotations=function(a){return c("putAnnotations",
d,a)};m.getPageNumbers=function(){return c("getPageNumbers",d)};m.putPageNumbers=function(a){return c("putPageNumbers",d,a)};m.computeQuota=function(){return $.Deferred().resolve(0)};m.getBookStatistics=function(){return $.Deferred().reject()};m.checkCache=function(){return!0};m.deleteOldestBook=function(a,b){b()};m.deleteBooksData=function(){l=void 0;b.state()!=="pending"&&(b=$.Deferred());return j({asin:d})};m.downloadSearchIndex=function(a){return c("getSearchIndexReader",d,a)};m.initMetadata=
function(a){return c("initMetadata",d,a)};return m}}}(),ContentMigration=function(){function a(a){function b(d){var e="get"+(d.substr(0,1).toUpperCase()+d.substr(1))+"Ids";return a.source[e]().pipe(function(b){function e(){var m=b.splice(0,100);if(m.length===0)j.then(l.resolve,l.reject);else{var n="get"+(d.substr(0,1).toUpperCase()+d.substr(1))+"s",m=a.source[n](m);$.when(m,j).then(function(b){var l={};b.forEach(function(a,b){l[b]=a});j=a.target("putChunksNonT",a.asin,d,l);setTimeout(e,100)},l.reject)}}
var j=$.Deferred().resolve(),l=$.Deferred();e();return l.promise()})}function d(){var a=BookChunk.types[s++];a?b(a).then(d,e.reject):e.resolve()}var e=$.Deferred(),s=0,p=a.timer.createSubTimer("chunks");d();e.done(function(){p.endTimer()});return e.promise()}function e(a){var b=$.Deferred(),d=a.timer.createSubTimer("annotations");a.source.getAnnotations().then(function(d){a.target("putAnnotations",a.asin,d).then(b.resolve,b.reject)},b.reject);b.done(function(){d.endTimer()});return b.promise()}function b(a){var b=
$.Deferred(),d=a.timer.createSubTimer("pageNumbers");a.source.getPageNumbers().then(function(d){a.target("putPageNumbers",a.asin,d).then(b.resolve,b.reject)},b.reject);b.done(function(){d.endTimer()});return b.promise()}function d(a){var b=$.Deferred(),d=a.timer.createSubTimer("bookinfo");a.source.getBookInfo().then(function(d){a.target("putBookinfo",a.asin,d).then(b.resolve,b.reject)},b.reject);b.done(function(){d.endTimer()});return b.promise()}return{initialize:function(){KindleModuleManager.define(KindleModuleManager.CONTENT_MIGRATION,
[Kindle.MODULE.DB_CLIENT,KindleModuleManager.EMBEDDED_HOSTINTERFACE],function(c,j){return{moveBook:function(l){var m=$.Deferred(),s=c.getBookDb();if(!l)return m.reject("Need ASIN as param").promise();var p={timer:KindleMetricsProfiler("Migrate "+l),asin:l,target:j.contentProvider,source:s.BookInfoDB(l)},l=$.when(a(p),e(p),b(p),d(p));l.then(function(){p.timer.endTimer();p.timer.log()});l.then(m.resolve,m.reject);return m.promise()},notifyMigrationStatus:function(a){var b=$.Deferred();if(!a||!a.status)return b.reject("Need param.status as param").promise();
a.status==="done"?c.getBookDb().dropTables().then(b.resolve,b.reject):b.reject("this status is not handled");return b.promise()}}})}}}();function AssertionError(a){Error.call(this,a)}AssertionError.prototype=Error();AssertionError.prototype.name="AssertionError";function KindleAssert(){}
var KindleDebug=function(){return{error:function(){},log:function(){},warn:function(){},saveLogs:function(){saveLog=!0}}}(),KindleDeviceCapabilities=function(){function a(){return KindleHostDeviceDetector.isMetro()||KindleHostDeviceDetector.isIE()?!0:!1}var e;return{searchInTheBook:function(){return!KindleHostDeviceDetector.isiOS_4x()},showPageNumbers:function(){return!KindleHostDeviceDetector.isiOS_4x()},multiColumnMode:function(){return!0},useNativeSelection:a,useCSSRegions:function(){return a()},
useLocaleCompare:function(){if(e===void 0){try{"a".localeCompare("b","i")}catch(a){return e=a.name==="RangeError"}e=!1}return e},showFirstRunDialog:function(){return!KindleHostDeviceDetector.isMSEdge()},hasPageResizeIssues:function(){return KindleHostDeviceDetector.isiOS_9x()?!0:!1},hasSplitView:function(){return KindleHostDeviceDetector.isiOS()&&KindleHostDeviceDetector.getOSMajorVersion()>=9}}}(),KindleHostDeviceDetector=function(){function a(){return navigator.platform.indexOf("iPad")!==-1}function e(){return navigator.platform.indexOf("iPhone")!==
-1||navigator.platform.indexOf("iPod")!==-1}function b(){return a()||e()||p()}function d(){var a=-1;b()&&(a=navigator.userAgent.match(/OS (\d+)_/)[1]);return a}function c(){return(a()||e())&&parseInt(d(),10)===7}function j(){return(a()||e())&&parseInt(d(),10)>=8}function l(){return(a()||e())&&parseInt(d(),10)>=9}function m(){return navigator.userAgent.indexOf("Firefox")!==-1&&navigator.userAgent.indexOf("Trident")<0}function s(a){var b=navigator.userAgent.match(/Version\/(\d+\.\d+)(?:\.\d+)*(?: Mobile\/\S+)? Safari/);
return!b?!1:!a?!0:Number(b[1])>=Number(a)}function p(){return navigator.userAgent.indexOf("Cloud9")!==-1}function h(){return navigator.userAgent.indexOf("MSAppHost")!==-1}function n(){return h()&&r()}function r(){return!!/arm/i.test(navigator.cpuClass)}function o(){return m()?navigator.onLine:KindleModuleManager.getModuleSync(KindleModuleManager.NETWORK).isOnline()}function y(){return navigator.userAgent.indexOf("MSIE")!==-1||navigator.userAgent.indexOf("Trident")!==-1}function t(){return navigator.userAgent.indexOf("Chrome")!==
-1&&navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Edg")!==-1}function x(){return"standalone"in navigator&&navigator.standalone}function q(){return window.chrome&&Kindle.top.chrome.app&&Kindle.top.chrome.app.isInstalled}function J(){return window.navigator.msMaxTouchPoints>=1}return{isiOS:b,isiPad:a,isiPhone:e,isiOS_4x:function(){return(a()||e())&&navigator.userAgent.indexOf("OS 4")!==-1},isiOS_5xOrGreater:function(){return(a()||e())&&parseInt(d(),10)>=5},isiOS_7x:c,isiOS_8x:j,
isiOS_9x:l,hasiOSInnerHeightBug:function(){return!l()&&(c()||j())},hasCanvasSizeLimitProblem:function(){return b()},isMacintosh:function(){return navigator.userAgent.indexOf("(Macintosh;")!==-1},isFirefox:m,hasHangingDbPrompt:function(){if(!m())return!1;var a=/Firefox\/(\d+)/.exec(navigator.userAgent);return a.length>=1&&a[1]>=17},isSafari:s,isMetro:h,isMetroArm:n,isMetroSnappedView:function(){return h()&&window.outerWidth===320},isIE:y,isIE10:function(){return y()&&navigator.userAgent.indexOf("Trident/6.0")!==
-1},isIE11:function(){return y()&&(navigator.userAgent.indexOf("Trident/7.0")!==-1||navigator.userAgent.indexOf("Trident/8.0")!==-1)},isMSEdge:t,isArm:r,isCloud9:p,isTablet:function(){return a()||h()},isOnline:o,isPageVisibilityApiSupported:function(){var a;typeof document.hidden!=="undefined"?a="hidden":typeof document.msHidden!=="undefined"?a="msHidden":typeof document.webkitHidden!=="undefined"&&(a="webkitHidden");return a!==void 0&&typeof document.addEventListener!=="undefined"},getPageVisibilityApiTerms:function(){var a,
b;typeof document.hidden!=="undefined"?(a="hidden",b="visibilitychange"):typeof document.msHidden!=="undefined"?(a="msHidden",b="msvisibilitychange"):typeof document.webkitHidden!=="undefined"&&(a="webkitHidden",b="webkitvisibilitychange");return{hidden:a,visibilityChange:b}},isNetworkAvailable:function(){if(!o())return(new jQuery.Deferred).reject().promise();var a=$.Deferred();$.ajax({url:"/ping",error:function(){a.reject()},timeout:5E3}).then(a.resolve,a.reject);return a.promise()},isNetworkAvailableSync:function(){if(!o())return!1;
var a=!0;$.ajax({url:"/ping",error:function(){a=!1},timeout:50,async:!1});return a},isChrome:function(){return window.chrome&&!t()},isiOSAppMode:x,isChromeApp:q,isFirefoxAppSupported:function(){return!!KindleHostDeviceDetector.isFirefox()&&window.navigator.mozApps},isInAppMode:function(){return x()||q()},isCookieEnabled:function(){return navigator.cookieEnabled},areWebWorkersSupported:function(){return typeof Worker!=="undefined"},isLocalStorageEnabled:function(){return KindleLocalStorage.isLocalStorageEnabled()},
hasArrayLikeApply:function(){return!b()||parseInt(KindleHostDeviceDetector.getOSMajorVersion(),10)>=6},isWebSQLSupported:function(){return!!window.openDatabase},isIndexedDBSupported:function(){return!!window.mozIndexedDB||!!window.indexedDB},isMSTouchEnabledDevice:J,isTouchDevice:function(){return b()||J()},getDevicePlatform:function(){return a()?"iPad":e()?"iPhone":p()?"otter":n()?"metroArm":h()?"metro":"desktop"},hasCanvasPerformanceProblem:function(){return a()&&KindleHostPadDetector.isPad1(x())||
n()},hasMissingImgOnLoadProblem:function(){return s()||x()||m()},hasImageRenderingProblem:function(){return s()||x()},getDeviceType:function(){return h()?Kindle.DeviceType.Metro:Kindle.DeviceType.KCR},getClientName:function(){return h()?Kindle.ClientName.Metro:Kindle.ClientName.KCR},getOSMajorVersion:d,getOSMinorVersion:function(){var a=-1;b()&&(a=navigator.userAgent.match(/OS (\d+)_(\d+_?(\d+)?)/)[2]);return a},getBrowserLanguage:function(){return navigator.language||navigator.userLanguage}}}(),
KindleHostPadDetector=function(){return{isPad1:function(a){if(KindleLocalStorage.getItem("definitelyNotPad1"))return!1;var e=0,b=1E3,d=0,c;for(i=0;i<3;i++)c=SunSpiderBenchmark.get3DSpeed(),c>e?e=c:c<b&&(b=c),d+=c;e=d/3;if(e>=200&&a)return!0;if(e>=100&&!a)return!0;KindleLocalStorage.setItem("definitelyNotPad1","true");return!1}}}();
function KindleInterfacesFactory(){function a(a,b){for(var d in b)if(b.hasOwnProperty(d)&&typeof a[d]!==typeof b[d])return!1;return!0}return{IKindleLibrary:{onReaderOpenStatus:function(){},onReaderClose:function(){},onStoreOpenStatus:function(){},libraryUpdateNeeded:function(){}},IKindleReader:{openBook:function(){},unloadReader:function(){},onStoreOpenStatus:function(){},pauseReader:function(){},resumeReader:function(){},setToolbarVisible:function(){},downloadBook:function(){},removeBook:function(){}},
IKindleAppForLibrary:{storeIsTOS:function(){},openStore:function(){},openBook:function(){},onLibraryLoaded:function(){},getQueryParameters:function(){}},IKindleAppForReader:{onReaderReady:function(){},closeReader:function(){},onStartReadingStatus:function(){},onRendererLoaded:function(){},openStore:function(){},pinBookToStart:function(){},onReaderTapped:function(){},onUserAction:function(){},hideAppBar:function(){}},checkImplements:a,assertImplements:function(e,b){a(e,b)||KindleAssert(!1,"Object fails to provide all properties of interface prototype")}}}
var KindleInterfaces=KindleInterfacesFactory(),KindlJournalManager=function(){function a(a){var b=[],c;for(c in a){var d=a[c].entry;d.guid=d.guid||d.refEmId;delete d.refEmId;d&&b.push(d)}return b}function e(a){var b=[],d;for(d in a)b.push({entry:a[d]});return j.getAppDb().getTable(c).insertList(b)}function b(b){function c(){var r,o=KindleModuleManager.getModuleSync(KindleModuleManager.RESOURCE_BUNDLE).getLocalTimeOffset();e<b.length?(n=Math.min(e+100,b.length),r=Array.prototype.slice.call(b,e,n),
e=n,l.updateAnnotations(a(r),o).then(function(){j.getAppDb().deleteJournalEntries(r).then(c,d.reject)},d.reject)):d.resolve()}var d=new jQuery.Deferred,e=0,n;c();return d.promise()}function d(){var a=new jQuery.Deferred;j.getAppDb().getTable(c).getRecord().then(function(c){c.length>0?b(c).then(a.resolve,a.reject):a.resolve()},a.reject);return a.promise()}var c="journal",j=null,l=null;return{initialize:function(){var a=new jQuery.Deferred,b=this;KindleModuleManager.getModuleList([KindleModuleManager.SERVICE_CLIENT,
KindleModuleManager.DB_CLIENT]).then(function(c){l=c[KindleModuleManager.SERVICE_CLIENT];j=c[KindleModuleManager.DB_CLIENT];a.resolve(b)},a.reject);return a.promise()},saveToJournal:function(a){var b=new jQuery.Deferred;e(a).then(function(){d().then(b.resolve,b.resolve)},b.reject);return b.promise()},uploadJournal:d}}(),KindleLegacyDeviceTokenStorage=function(){return{hasDeviceTokenFromStorage:function(){return KindleLocalStorage.getItem("kindleDeviceToken")!==null},getDeviceTokenFromStorage:function(){return KindleLocalStorage.getItem("kindleDeviceToken")},
setDeviceToken:function(a){KindleLocalStorage.setItem("kindleDeviceToken",a)},clearDeviceTokenFromStorage:function(){KindleLocalStorage.removeItem("kindleDeviceToken")}}}(),KindleMetricsProfiler=function(a){function e(a){for(var b=0,e=0;e<a.length;e+=1)b+=a[e].end-a[e].start;return b}var b={};b.name=a;b.counters=null;b.subTimers=null;b.runs=[{start:(new Date).getTime(),end:null}];b.endTimer=function(){var a=this.runs[this.runs.length-1];if(a.end===null)a.end=(new Date).getTime()};b.addCount=function(a,
b){if(this.counters===null)this.counters={};this.counters[a]===void 0?this.counters[a]=b:this.counters[a]+=b};b.createSubTimer=function(a){if(this.subTimers===null)this.subTimers={};this.subTimers[a]===void 0?this.subTimers[a]=KindleMetricsProfiler(a):this.subTimers[a].runs.push({start:(new Date).getTime(),end:null});return this.subTimers[a]};b.log=function(){this.logAsPercentageOfTime("",e(this.runs))};b.logAsPercentageOfTime=function(a,b){var j=a+":"+this.name,l,m=e(this.runs);KindleDebug.log(j+
":Time: "+m+"ms - ("+(b?m/b*100:100).toFixed(2)+"%)");for(l in this.counters)KindleDebug.log(j+":"+l+" : "+this.counters[l]);for(l in this.subTimers)this.subTimers[l].logAsPercentageOfTime(j,b)};return b};
function KindleModuleManagerFactory(){function a(a,b){if(o[a])throw"Duplicate registration of module "+a;if(!b)throw"Module is not initialized with an object "+a;o[a]=b;y[a].resolve(b)}function e(a){if(o.hasOwnProperty(a))throw"Duplicate registration of module "+a;o[a]=void 0}function b(b,c){y[b]||(y[b]=new jQuery.Deferred);a(b,c)}function d(b,c){e(b);y[b]||(y[b]=new jQuery.Deferred);c(y[b]);y[b].done(function(c){a(b,c)})}function c(a,b){d(a,function(a){b.done(a.resolve).fail(a.reject)})}function j(a){y[a]||
(y[a]=new jQuery.Deferred);return y[a].promise()}function l(a){if(!o[a])throw"Trying to get uninitialized module "+a;return o[a]}function m(a){return o.hasOwnProperty(a)}function s(a,b){o[a]=b}function p(a){var b=o[a];return{done:function(a){a(b)},fail:function(){},when:function(a){a(b)}}}function h(a){for(var b={},c=0;c<a.length;c++)b[name]=o[a];return{done:function(a){a(b)},fail:function(){},when:function(a){a(b)}}}function n(){o={}}var r={CONSTANTS:"Constants",DB_CLIENT:"DBClient",RESOURCE_BUNDLE:"ResourceBundle",
METRICS_MANAGER:"metrics_manager",SERVICE_CLIENT:"ServiceClient",APP_REGISTRATION:"Registration",JOURNAL_MANAGER:"JournalManager",BOOK_METADATA:"book_metaData",BOOK_FRAGMAP:"book_fragmap",EMBEDDED_HOSTINTERFACE:"embeddedHostInterface",CONTENT_MIGRATION:"contentMigration",NETWORK:"network",LINK_URLS:"linkUrls"},o={},y={};return{CONSTANTS:r.CONSTANTS,DB_CLIENT:r.DB_CLIENT,RESOURCE_BUNDLE:r.RESOURCE_BUNDLE,METRICS_MANAGER:r.METRICS_MANAGER,SERVICE_CLIENT:r.SERVICE_CLIENT,APP_REGISTRATION:r.APP_REGISTRATION,
JOURNAL_MANAGER:r.JOURNAL_MANAGER,BOOK_METADATA:r.BOOK_METADATA,BOOK_FRAGMAP:r.BOOK_FRAGMAP,EMBEDDED_HOSTINTERFACE:r.EMBEDDED_HOSTINTERFACE,CONTENT_MIGRATION:r.CONTENT_MIGRATION,NETWORK:r.NETWORK,LINK_URLS:r.LINK_URLS,ERROR_CODE_CANCEL:"canceled",registerModule:b,registerModuleList:function(a){for(var c in a)b(c,a[c])},registerModuleWithInitializer:d,registerModuleWithDeferred:c,detachModule:function(a){var b=o[a],c=y[a];c&&!c.isResolved()&&c.reject("canceled");delete o[a];delete y[a];return b},getModule:j,
getModuleList:function(a){var b=new jQuery.Deferred,c,d=[];for(c=0;c<a.length;c++)d.push(j(a[c]));$.when.apply($,d).done(function(){var c,d={};for(c=0;c<a.length;c++)d[a[c]]=arguments[c];b.resolve(d)}).fail(b.reject);return b.promise()},getModuleSync:l,isModuleInitialized:function(a){return o[a]!==void 0},isModuleRegistered:m,switchToTestMode:function(){this.registerModuleTest=s;this.getModule=p;this.getModuleSync=l;this.getModuleList=h;this.clear=n;delete this.registerModuleWithDeferred;delete this.registerModuleWithInitializer},
define:function(a,b,d){if(!m(a)){var e=[],h=$.Deferred();c(a,h);b&&b.length&&b.forEach(function(a){e.push(a&&$.isFunction(a.promise)?a:j(a))});$.when.apply($,e).then(function(){var a;typeof d==="function"?(a=$.makeArray(arguments),a=d.apply(d,a)):a=d;a&&$.isFunction(a.promise)?a.then(h.resolve,function(){h.reject()}):h.resolve(a)},function(){h.reject()})}},require:function(a,b){$.isArray(a)||(a=[a]);var c,d,e=[];a.forEach(function(a){e.push(a&&$.isFunction(a.promise)?a:j(a))});b||(d=$.Deferred(),
c=d.promise());$.when.apply($,e).then(function(){var a=$.makeArray(arguments);b?b.apply(b,a):d.resolve.apply(d,a)},function(){d&&d.reject()});return c}}}
var KindleModuleManager=KindleModuleManagerFactory(),KindleRemoteClient=function(){return{uploadFeedback:function(a){if(!a)return(new $.Deferred.reject).promise();var e=KindleLibrarySetting.getSettings(),e={DevicePlatform:KindleHostDeviceDetector.getDevicePlatform(),UserAgent:navigator.userAgent,WindowHeight:window.innerHeight,WindowWidth:window.innerWidth,AppCached:!!KindleLocalStorage.getItem("cached"),AppCacheStatus:window.applicationCache.status,TouchEnabled:KindleHostDeviceDetector.isTouchDevice(),
ApplicationMode:KindleHostDeviceDetector.isInAppMode(),Language:navigator.language,LocalStorageEnabled:KindleHostDeviceDetector.isLocalStorageEnabled(),LibrarySort:e.sortParam,LibraryView:e.viewState,TLD:Kindle.URL.getAmazonDomain()||"unknown"};return function(a){return KindleModuleManager.getModule(KindleModuleManager.DB_CLIENT).pipe(function(d){try{var c=d.getAppDb(),e=c.getCachedAsins(Kindle.BookInfo.CachedState.FULLY_DOWNLOADED),l=c.getAllBooks();a.info.OfflineStorageEnabled=!!d.bookDbEnabled();
return $.when(e,l)}catch(m){return $.Deferred.reject()}}).pipe(function(d,c){$.extend(a.info,{TotalBookCount:c.length,TotalBookDownloaded:d.length});return a.eid?a.eid:KindleModuleManager.getModuleSync(Kindle.MODULE.SERVICE_CLIENT).getEID()}).pipe(function(d){a.eid=d;return a},function(){return $.Deferred().resolve(a)})}({version:KindleVersion.getVersionString(),message:a.text,deviceType:KindleHostDeviceDetector.getDeviceType(),info:e}).pipe(function(a){a={url:"/remote/feedback",type:"POST",processData:!1,
contentType:"application/json",data:JSON.stringify(a)};return $.ajax(a)})}}}(),KindleTemplateManager=function(){return{initialize:function(){Handlebars.registerHelper("str",function(a){return ResourceBundle.getLocalizedString(a)})}}}(),KindleUserAgentMetricsInfo=function(){function a(){function a(){var b=/MSAppHost\/([0-9\.]+)/.exec(navigator.userAgent);if(b)return b[1]}var c;if(!(c=function(){var a;if(["ipad","iphone"].indexOf(b)!==-1&&(b="ios",(a=/CPU OS ([0-9_]+) /.exec(navigator.userAgent))&&
a.length>=2))return a[1]}())){var d;KindleHostDeviceDetector.isIE()&&(d=KindleHostDeviceDetector.isIE10()?"10":KindleHostDeviceDetector.isIE11()?"11":"unknown");c=d||a()||GoogleUserAgent.browserVersionString.toLowerCase()}return c}var e,b,d,c,j,l={chrome:14,firefox:7,safari:5,metro:1,ie:10,ios:4,edge:16};return{browserWithVersionString:function(){if(!e){b=GoogleUserAgent.browserName.toLowerCase();d=a();a:{if(d){var m=/^0*([0-9]+)/.exec(d);if(m&&m.length>=2){c=parseInt(m[1],10);break a}else KindleDebug.error("Bad regex on versionString: "+
d)}c=void 0}j="undefined"===typeof c?"other":l[b]?[b,c].join("@"):"other";e=!0}return j}}}(),KindleVersion=function(){var a="011213999";window.location.hostname==="k4w-dev.aka.amazon.com"&&(a="999999998");if(a.length!==9)throw{name:"BadVersion",message:"bad version number. got: "+a};var e=null,b=null;return{getMetricsVersionString:function(){b||(b=parseInt(a.slice(0,2),10),b+=".",b+=parseInt(a.slice(2,4),10),b+=".",b+=parseInt(a.slice(4,6),10));return b},getVersionString:function(){e||(e=parseInt(a.slice(0,
2),10),e+=".",e+=parseInt(a.slice(2,4),10),e+=".",e+=parseInt(a.slice(4,6),10),e+=".",e+=parseInt(a.slice(6),10));return e},getVersionNumber:function(){return Number(a)},parseVersionString:function(a){return a&&(a=/(\d{1,2})\.(\d{1,2})\.(\d{1,2})\.(\d{1,3})/.exec(a))?Number(a[1])*1E7+Number(a[2])*1E5+Number(a[3])*1E3+Number(a[4]):NaN}}}(),LinkUrls=function(){function a(){d||(Kindle.URL.isPreProd()?(b=(b=Kindle.URL.getPreProdCountryCode())?b:"us",d=Kindle.CountryToDomainMap[b]):(d=Kindle.URL.getAmazonDomain(),
b=Kindle.DomainToCountryMap[d]))}function e(a){return $.Deferred().resolve(function(){var b;b=c+Kindle.CountryToDomainMap.us+j;b+="?"+m.DeviceType+"="+Kindle.DeviceType.KCR+"&"+m.Eid+"="+(p||"")+"&"+m.Method+"="+a;return b}())}var b,d,c="https://www.",j="/gp/kindle/kcp/links",l={Help:{NodeId:"200701430"},OfflineReading:{NodeId:"201255020"},IncreaseOfflineStorage:{NodeId:"201265520"},TroubleShooting:{NodeId:"200732370"},License:{NodeId:"200701450",RefTag:"kcr_legalnotices_menu"},KCPLanding:{DocId:{us:"1000493771",
uk:"1000425503",de:"1000482783",fr:"1000538763",it:"1000576423",es:"1000576363",jp:"3077089376",au:"3077705566",cn:"98968","in":"1000659093",ca:"1000817631",br:"1000828031",mx:"1001216041"},iTunesURL:"https://itunes.apple.com/",iTunesEndPoint:"/app/apple-store/id302584613?mt=8",DesktopEndpoint:"/gp/feature.html",DesktopQueryParam:"?ie=UTF8&docId="}},m={DeviceType:"deviceType",Eid:"eid",Method:"method",Asin:"a"},s={Help:"Help",Legal:"License",Terms:"TermsCond",Store:"StoreFront",Privacy:"Privacy",
DetailPage:"DetailPage"},p;return{getStoreUrl:function(b){if(p&&!b.kcrFree)return e(s.Store).pipe(function(a){b.tag&&(a+="&tag="+b.tag);b.refTag&&(a+="&ref_="+b.refTag);return a});else{a();var j=c+d+"?ref_="+b.refTag;b.tag&&(j+="&tag="+b.tag+"&at="+b.tag);return $.Deferred().resolve(j)}},getPrivacyUrl:function(){a();return c+d+"/privacy"},getTermsOfUseUrl:function(){return"http://www.kindle.com/support/terms"},getLegalUrl:function(){a();return c+d+"/gp/help/customer/display.html?nodeId="+l.License.NodeId+
"ref="+l.License.RefTag},getHelpUrl:function(){a();return c+d+"/gp/help/customer/display.html?nodeId="+l.Help.NodeId},getOfflineReadingUrl:function(){a();return c+d+"/gp/help/customer/display.html?nodeId="+l.OfflineReading.NodeId},getIncreaseOfflineStorageUrl:function(){a();return c+d+"/gp/help/customer/display.html?nodeId="+l.IncreaseOfflineStorage.NodeId},getTroubleShootingUrl:function(){a();return c+d+"/gp/help/customer/display.html?nodeId="+l.TroubleShooting.NodeId},getDetailPage:function(b){if(p&&
!b.kcrFree)return e(s.DetailPage).pipe(function(a){a+="&"+m.Asin+"="+b.asin;b.tag&&(a+="&tag="+b.tag);b.refTag&&(a+="&ref_="+b.refTag);return a});else{a();var j=c+d+"/dp/"+b.asin+("?ref_="+(b.refTag||Kindle.RefTag.Values.StoreSample));b.tag&&(j+="&tag="+b.tag+"&at="+b.tag);return $.Deferred().resolve(j)}},getKCPLandingPageLink:function(e){(!d||!b)&&a();var j;KindleHostDeviceDetector.isiPad()?j=l.KCPLanding.iTunesURL+b+l.KCPLanding.iTunesEndPoint:(j=c+d+l.KCPLanding.DesktopEndpoint,j=e?j+"/ref="+e:
j,j+=l.KCPLanding.DesktopQueryParam+l.KCPLanding.DocId[b]);return j},getDownloadLink:function(e){(!d||!b)&&a();var j=c+d+"/gp/kindle/kcpApp.html";return e?j+"/ref="+e:j},getAmazonDomainURL:function(){(!d||!b)&&a();return c+d},getRTEServiceURL:function(){(!d||!b)&&a();if(Kindle.URL.isPreProd()){var c="https://kindlestore-preprod";if(b==="it"||b==="es"||b==="in")c+="-eux";return c+"."+d+"/kindle-dbs/ajax/SendSMSorEmail"}return this.getAmazonDomainURL()+"/kindle-dbs/ajax/SendSMSorEmail"},getNotebookURL:function(a,
b){var c=Kindle.URL.getHostURL()+"/notebook",d=[];a&&d.push("asin="+a);b&&d.push("ref_="+b);return c=d?c+"?"+d.join("&"):c},initializeEid:function(a){p=a}}}(),KindleChromeInstaller=function(){function a(){function a(){window.location.reload(!1)}Kindle.top.chrome.webstore.install(void 0,function(){KindleDebug.log("install success");setTimeout(a,250)},function(a){KindleDebug.error(a)})}function e(){return window.chrome&&Kindle.top.chrome.webstore&&Kindle.top.chrome.webstore.install}return{install:function(){e()?
window.parent.document.getElementById("inlineInstallProxy").click():KindleMessageDialog.showError(Kindle.ERROR.OUTDATED_CHROME)},initialize:function(){if(KindleHostDeviceDetector.isChrome()&&e()){var b=document.createElement("button");b.id="inlineInstallProxy";b.style.display="none";$(b).click(a);$("body").append(b)}}}}(),KindleFirefoxInstaller=function(){function a(){return Kindle.URL.getHostURL()+"/offline/kcr_ff.webapp"}function e(){if(!KindleHostDeviceDetector.isFirefoxAppSupported())return $.Deferred().reject().promise();
var b=$.Deferred(),d=navigator.mozApps.getInstalled();d.onsuccess=function(){var c=!1,e=a();d.result.forEach(function(a){a.manifestURL===e&&(c=!0)});b.resolve(c)};d.onerror=function(){KindleDebug.error("Error checking installation status: "+this.error.message);b.reject()};return b.promise()}return{install:function(){var b=$.Deferred();e().done(function(d){d?b.reject():(d=navigator.mozApps.install(a()),d.onsuccess=function(){KindleDebug.log("Firefox App successfully installed.");b.resolve()},d.onerror=
function(){KindleDebug.error("Firefox App failed to install.");b.reject()})}).fail(b.reject);return b.promise()}}}();
EmbeddedReaderAPI={setLoginParameters:function(){},setFocusToReader:function(){},showAppbar:function(){},hideAppbar:function(){},toggleAppbar:function(){},sendMetrics:function(){},sendMetricsNow:function(){},deregister:function(){},clearDatabases:function(){},clearLocalStorage:function(){},openBook:function(){},goTo:function(){},downloadBook:function(){},requestDownloadedBookList:function(){},cancelBookDownload:function(){},removeBook:function(){},removeBookOwnership:function(){},getSearchContext:function(){},
requestOemAssociateId:function(){},getTodoItems:function(){},removeTodoItems:function(){},uploadSnapshot:function(){},getSearchIndex:function(){},getDownloadedBookInfo:function(){},requestDeviceName:function(){},getSelectedText:function(){},hideContextMenu:function(){},setStoreCookies:function(){},setServiceHost:function(){},uploadJournal:function(){},getTOSParams:function(){},moveAsinToHost:function(){},notifyMigrationStatus:function(){},updateAppCache:function(){},convertPositions:function(){},
updateAnnotations:function(){}};
ReaderHostAPI={onReaderLoaded:function(){},onAppCacheStatus:function(){},onAppCacheUpdateReady:function(){},onBookOpenStatus:function(){},onBookClose:function(){},onOpenStore:function(){},onServiceAuthState:function(){},pinBookToStart:function(){},onBookDownloadComplete:function(){},onBookDownloadFailed:function(){},onBookDownloadProgress:function(){},onDeregister:function(){},onReaderTapped:function(){},onUserAction:function(){},hideAppBar:function(){},showWebPage:function(){},getRequestSigningHeaders:$.rpc.fn(),
contentProvider:$.rpc.fn({timeout:9E4}),deleteBookContent:$.rpc.fn(),searchContent:function(){},showAnnotations:function(){}};function ReaderHostInterfaceFactory(a,e){KindleInterfaces.assertImplements(a,EmbeddedReaderAPI);return $.rpc({name:"KCR",iRemote:ReaderHostAPI,local:a,channelId:"reader",target:window.parent,remoteDomain:e})};
