PageSourceSearch

https://citeas.org/api

html citeas.org collected 2026-10-02 07:06:56 UTC 14,390 bytes, 283 lines download raw bytes

1<!doctype html>
2<html ng-app="app" ng-controller="AppCtrl" lang="en" xmlns="http://www.w3.org/1999/html">
3<head>
4    <base href="/"> <!-- needed for html5 pretty urls -->
5    <meta charset="utf-8">
6    <title ng-bind-html="pageTitle()">CiteAs</title>
7    <meta name="viewport" content="initial-scale=1" />
8
9
10
11    <meta name="citation_title" content="{{ productMetadata.title }}" ng-if="productMetadata && productMetadata.title">
12    <meta name="citation_publication_date" content="{{ productMetadata.year }}" ng-if="productMetadata && productMetadata.year">
13    <meta name="citation_journal_title" content="{{ productMetadata['container-title'] }}" ng-if="productMetadata && productMetadata['container-title']">
14
15    <meta name="citation_author" content="{{ author.family }}" ng-repeat="author in productMetadata.author" ng-if="productMetadata && productMetadata.author">
16
17
18
19    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic">
20    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc4/angular-material.min.css">
21    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" rel="stylesheet">
22    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc4/angular-material.min.css">
23    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
24
25    <link href="/static/main.css" rel="stylesheet">
26    <!--<link rel="icon" type="image/ico" href="/static/img/favicon.ico" /> -->
27
28</head>
29
30
31
32<body ng-cloak class="template-{{ global.template }}">
33<div class="nav">
34
35    <a href="/" class="main-logo template-{{ global.template }}">
36        <img src="static/img/citeas-logo.png" alt="">
37    </a>
38
39    <div class="spacer"></div>
40
41    <div class="links">
42        <a href="about">About</a>
43        <a href="api">API</a>
44    </div>
45</div>
46<div class="main-view container-fluid" ng-view></div>
47
48<script type="text/ng-template" id="step-info.tpl.html">
49    <md-dialog>
50        <md-toolbar>
51            <div class="md-toolbar-tools">
52                <h2>{{ stepInfo.subject }}</h2>
53                <span flex></span>
54                <md-button class="md-icon-button" ng-click="cancel()">
55                    <i class="fa fa-times"></i>
56                </md-button>
57            </div>
58        </md-toolbar>
59
60        <md-dialog-content>
61            <div class="md-dialog-content">
62                <p class="intro">
63                    {{ stepInfo.step_intro }}
64                </p>
65                <p class="more">
66                    {{ stepInfo.step_more }}
67                </p>
68                <div class="more-resources" ng-show="stepInfo.step_links.length">
69                    <h3>Additional resources:</h3>
70                    <ul>
71                        <li ng-repeat="link in stepInfo.step_links">
72                            <a href="{{ link[1] }}">{{ link[0] }}</a>
73                        </li>
74                    </ul>
75                </div>
76
77
78            </div>
79        </md-dialog-content>
80
81
82
83    </md-dialog>
84
85</script>
85
86
87
88
89
90<!-- Angular and Angular-ecosystem dependencies  -->
91<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
vendor: 1 bytes, line 91
91
92<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
vendor: 1 bytes, line 92
92
93<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.min.js"></script>
vendor: 1 bytes, line 93
93
94<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
vendor: 1 bytes, line 94
94
95<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>
vendor: 1 bytes, line 95
95
96<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular-resource.min.js"></script>
vendor: 1 bytes, line 96
96
97<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular-sanitize.min.js"></script>
vendor: 1 bytes, line 97
97
98<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular-animate.min.js"></script>
vendor: 1 bytes, line 98
98
99<script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.1.0-rc4/angular-material.min.js"></script>
vendor: 1 bytes, line 99
99
100<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-cookies.js"></script>
100
101
102<!-- externally hosted libs outside the Angular ecosystem -->
103<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js"></script>
vendor: 1 bytes, line 103
103
104<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js"></script>
104
105
106
107<!-- inlined scripts -->
108<!-- ng-progress (progressbar) -->
109<script>angular.module("ngProgress.provider",["ngProgress.directive"]).service("ngProgress",function(){"use strict";return["$document","$window","$compile","$rootScope","$timeout",function(a,b,c,d,e){this.autoStyle=!0,this.count=0,this.height="3px",this.$scope=d.$new(),this.color="#1565C0",this.parent=a.find("body")[0],this.count=0,this.progressbarEl=c("<ng-progress></ng-progress>")(this.$scope),this.parent.appendChild(this.progressbarEl[0]),this.$scope.count=this.count,void 0!==this.height&&this.progressbarEl.eq(0).children().css("height",this.height),void 0!==this.color&&(this.progressbarEl.eq(0).children().css("background-color",this.color),this.progressbarEl.eq(0).children().css("color",this.color)),this.intervalCounterId=0,this.start=function(){this.show();var a=this;clearInterval(this.intervalCounterId),this.intervalCounterId=setInterval(function(){isNaN(a.count)?(clearInterval(a.intervalCounterId),a.count=0,a.hide()):(a.remaining=100-a.count,a.count=a.count+.15*Math.pow(1-Math.sqrt(a.remaining),2),a.updateCount(a.count))},200)},this.updateCount=function(a){this.$scope.count=a,this.$scope.$$phase||this.$scope.$apply()},this.setHeight=function(a){return void 0!==a&&(this.height=a,this.$scope.height=this.height,this.$scope.$$phase||this.$scope.$apply()),this.height},this.setColor=function(a){return void 0!==a&&(this.color=a,this.$scope.color=this.color,this.$scope.$$phase||this.$scope.$apply()),this.color},this.hide=function(){this.progressbarEl.children().css("opacity","0");var a=this;a.animate(function(){a.progressbarEl.children().css("width","0%"),a.animate(function(){a.show()},500)},500)},this.show=function(){var a=this;a.animate(function(){a.progressbarEl.children().css("opacity","1")},100)},this.animate=function(a,b){void 0!==this.animation&&e.cancel(this.animation),this.animation=e(a,b)},this.status=function(){return this.count},this.stop=function(){clearInterval(this.intervalCounterId)},this.set=function(a){return this.show(),this.updateCount(a),this.count=a,clearInterval(this.intervalCounterId),this.count},this.css=function(a){return this.progressbarEl.children().css(a)},this.reset=function(){return clearInterval(this.intervalCounterId),this.count=0,this.updateCount(this.count),0},this.complete=function(){this.count=100,this.updateCount(this.count);var a=this;return clearInterval(this.intervalCounterId),e(function(){a.hide(),e(function(){a.count=0,a.updateCount(a.count)},500)},1e3),this.count},this.setParent=function(a){if(null===a||void 0===a)throw new Error("Provide a valid parent of type HTMLElement");null!==this.parent&&void 0!==this.parent&&this.parent.removeChild(this.progressbarEl[0]),this.parent=a,this.parent.appendChild(this.progressbarEl[0])},this.getDomElement=function(){return this.progressbarEl},this.setAbsolute=function(){this.progressbarEl.css("position","absolute")}}]}).factory("ngProgressFactory",["$injector","ngProgress",function(a,b){var c={createInstance:function(){return a.instantiate(b)}};return c}]),angular.module("ngProgress.directive",[]).directive("ngProgress",["$window","$rootScope",function(a,b){var c={replace:!0,restrict:"E",link:function(a,b,c,d){a.$watch("count",function(c){(void 0!==c||null!==c)&&(a.counter=c,b.eq(0).children().css("width",c+"%"))}),a.$watch("color",function(c){(void 0!==c||null!==c)&&(a.color=c,b.eq(0).children().css("background-color",c),b.eq(0).children().css("color",c))}),a.$watch("height",function(c){(void 0!==c||null!==c)&&(a.height=c,b.eq(0).children().css("height",c))})},template:'<div id="ngProgress-container"><div id="ngProgress"></div></div>'};return c}]),angular.module("ngProgress",["ngProgress.directive","ngProgress.provider"]);</script>
vendor: 1 bytes, line 109
109
vendor: 5,446 bytes, lines 110-256
110<script>
111
112//download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage
113// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
114// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
115// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
116// v4 adds AMD/UMD, commonJS, and plain browser support
117// v4.1 adds url download capability via solo URL argument (same domain/CORS only)
118// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors
119// https://github.com/rndme/download
120
121(function (root, factory) {
122	if (typeof define === 'function' && define.amd) {
123		// AMD. Register as an anonymous module.
124		define([], factory);
125	} else if (typeof exports === 'object') {
126		// Node. Does not work with strict CommonJS, but
127		// only CommonJS-like environments that support module.exports,
128		// like Node.
129		module.exports = factory();
130	} else {
131		// Browser globals (root is window)
132		root.download = factory();
133  }
134}(this, function () {
135
136	return function download(data, strFileName, strMimeType) {
137
138		var self = window, // this script is only for browsers anyway...
139			defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads
140			mimeType = strMimeType || defaultMime,
141			payload = data,
142			url = !strFileName && !strMimeType && payload,
143			anchor = document.createElement("a"),
144			toString = function(a){return String(a);},
145			myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
146			fileName = strFileName || "download",
147			blob,
148			reader;
149			myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
150
151		if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
152			payload=[payload, mimeType];
153			mimeType=payload[0];
154			payload=payload[1];
155		}
156
157
158		if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument
159			fileName = url.split("/").pop().split("?")[0];
160			anchor.href = url; // assign href prop to temp anchor
161		  	if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:
162        		var ajax=new XMLHttpRequest();
163        		ajax.open( "GET", url, true);
164        		ajax.responseType = 'blob';
165        		ajax.onload= function(e){
166				  download(e.target.response, fileName, defaultMime);
167				};
168        		setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:
169			    return ajax;
170			} // end if valid url?
171		} // end if url?
172
173
174		//go ahead and download dataURLs right away
175		if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){
176
177			if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
178				payload=dataUrlToBlob(payload);
179				mimeType=payload.type || defaultMime;
180			}else{
181				return navigator.msSaveBlob ?  // IE10 can't do a[download], only Blobs:
182					navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
183					saver(payload) ; // everyone else can save dataURLs un-processed
184			}
185
186		}//end if dataURL passed?
187
188		blob = payload instanceof myBlob ?
189			payload :
190			new myBlob([payload], {type: mimeType}) ;
191
192
193		function dataUrlToBlob(strUrl) {
194			var parts= strUrl.split(/[:;,]/),
195			type= parts[1],
196			decoder= parts[2] == "base64" ? atob : decodeURIComponent,
197			binData= decoder( parts.pop() ),
198			mx= binData.length,
199			i= 0,
200			uiArr= new Uint8Array(mx);
201
202			for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);
203
204			return new myBlob([uiArr], {type: type});
205		 }
206
207		function saver(url, winMode){
208
209			if ('download' in anchor) { //html5 A[download]
210				anchor.href = url;
211				anchor.setAttribute("download", fileName);
212				anchor.className = "download-js-link";
213				anchor.innerHTML = "downloading...";
214				anchor.style.display = "none";
215				document.body.appendChild(anchor);
216				setTimeout(function() {
217					anchor.click();
218					document.body.removeChild(anchor);
219					if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}
220				}, 66);
221				return true;
222			}
223
224			// handle non-a[download] safari as best we can:
225			if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) {
226				url=url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
227				if(!window.open(url)){ // popup blocked, offer direct download:
228					if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
229				}
230				return true;
231			}
232
233			//do iframe dataURL download (old ch+FF):
234			var f = document.createElement("iframe");
235			document.body.appendChild(f);
236
237			if(!winMode){ // force a mime that will download:
238				url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
239			}
240			f.src=url;
241			setTimeout(function(){ document.body.removeChild(f); }, 333);
242
243		}//end saver
244
245
246
247
248		if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
249			return navigator.msSaveBlob(blob, fileName);
250		}
251
252		if(self.URL){ // simple fast and modern way using Blob and URL:
253			saver(self.URL.createObjectURL(blob), true);
254		}else{
255			// handle non-Blob()+non-URL browsers:
256			if(typeof blob === "string" || blob.constructor===toString ){
257				try{
258					return saver( "data:" +  mimeType   + ";base64,"  +  self.btoa(blob)  );
259				}catch(y){
260					return saver( "data:" +  mimeType   + "," + encodeURIComponent(blob)  );
261				}
262			}
263
264			// Blob but not URL support:
265			reader=new FileReader();
266			reader.onload=function(e){
267				saver(this.result);
268			};
269			reader.readAsDataURL(blob);
270		}
271		return true;
272	}; /* end download() */
273}));
274
275
276</script>
276
277
278
279<!-- our actual app -->
280<script type="text/javascript" src="/static/ti.js"></script>
vendor: 1 bytes, line 280
280
281<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
vendor: 1 bytes, line 281
281
282<script src="//localhost:35728/livereload.js"></script>
282
283</body>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.