!function () {/* Copyright (C) 2013 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Copyright (C) 2006 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ (function () { function aa(g) { function r() { try { L.doScroll("left") } catch (ba) { k.setTimeout(r, 50); return } x("poll") } function x(r) { if ("readystatechange" != r.type || "complete" == z.readyState) ("load" == r.type ? k : z)[B](n + r.type, x, !1), !l && (l = !0) && g.call(k, r.type || r) } var X = z.addEventListener, l = !1, E = !0, v = X ? "addEventListener" : "attachEvent", B = X ? "removeEventListener" : "detachEvent", n = X ? "" : "on"; if ("complete" == z.readyState) g.call(k, "lazy"); else { if (z.createEventObject && L.doScroll) { try { E = !k.frameElement } catch (ba) { } E && r() } z[v](n + "DOMContentLoaded", x, !1); z[v](n + "readystatechange", x, !1); k[v](n + "load", x, !1) } } function T() { U && aa(function () { var g = M.length; ca(g ? function () { for (var r = 0; r < g; ++r) (function (g) { k.setTimeout(function () { k.exports[M[g]].apply(k, arguments) }, 0) })(r) } : void 0) }) } for (var k = window, z = document, L = z.documentElement, N = z.head || z.getElementsByTagName("head")[0] || L, B = "", F = z.getElementsByTagName("script"), l = F.length; 0 <= --l;) { var O = F[l], Y = O.src.match(/^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/); if (Y) { B = Y[1] || ""; O.parentNode.removeChild(O); break } } var U = !0, H = [], P = [], M = []; B.replace(/[?&]([^&=]+)=([^&]+)/g, function (g, r, x) { x = decodeURIComponent(x); r = decodeURIComponent(r); "autorun" == r ? U = !/^[0fn]/i.test(x) : "lang" == r ? H.push(x) : "skin" == r ? P.push(x) : "callback" == r && M.push(x) }); l = 0; for (B = H.length; l < B; ++l) (function () { var g = z.createElement("script"); g.onload = g.onerror = g.onreadystatechange = function () { !g || g.readyState && !/loaded|complete/.test(g.readyState) || (g.onerror = g.onload = g.onreadystatechange = null, --S, S || k.setTimeout(T, 0), g.parentNode && g.parentNode.removeChild(g), g = null) }; g.type = "text/javascript"; g.src = "https://cdn.rawgit.com/google/code-prettify/master/loader/lang-" + encodeURIComponent(H[l]) + ".js"; N.insertBefore(g, N.firstChild) })(H[l]); for (var S = H.length, F = [], l = 0, B = P.length; l < B; ++l) F.push("https://cdn.rawgit.com/google/code-prettify/master/loader/skins/" + encodeURIComponent(P[l]) + ".css"); //F.push("/css/lightTheme.css"); (function (g) { function r(l) { if (l !== x) { var k = z.createElement("link"); k.rel = "stylesheet"; k.type = "text/css"; l + 1 < x && (k.error = k.onerror = function () { r(l + 1) }); k.href = g[l]; N.appendChild(k) } } var x = g.length; r(0) })(F); var ca = function () { "undefined" !== typeof window && (window.PR_SHOULD_USE_CONTINUATION = !0); var g; (function () { function r(a) { function d(e) { var a = e.charCodeAt(0); if (92 !== a) return a; var c = e.charAt(1); return (a = k[c]) ? a : "0" <= c && "7" >= c ? parseInt(e.substring(1), 8) : "u" === c || "x" === c ? parseInt(e.substring(2), 16) : e.charCodeAt(1) } function f(e) { if (32 > e) return (16 > e ? "\\x0" : "\\x") + e.toString(16); e = String.fromCharCode(e); return "\\" === e || "-" === e || "]" === e || "^" === e ? "\\" + e : e } function c(e) { var c = e.substring(1, e.length - 1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]", "g")); e = []; var a = "^" === c[0], b = ["["]; a && b.push("^"); for (var a = a ? 1 : 0, h = c.length; a < h; ++a) { var m = c[a]; if (/\\[bdsw]/i.test(m)) b.push(m); else { var m = d(m), p; a + 2 < h && "-" === c[a + 1] ? (p = d(c[a + 2]), a += 2) : p = m; e.push([m, p]); 65 > p || 122 < m || (65 > p || 90 < m || e.push([Math.max(65, m) | 32, Math.min(p, 90) | 32]), 97 > p || 122 < m || e.push([Math.max(97, m) & -33, Math.min(p, 122) & -33])) } } e.sort(function (e, a) { return e[0] - a[0] || a[1] - e[1] }); c = []; h = []; for (a = 0; a < e.length; ++a) m = e[a], m[0] <= h[1] + 1 ? h[1] = Math.max(h[1], m[1]) : c.push(h = m); for (a = 0; a < c.length; ++a) m = c[a], b.push(f(m[0])), m[1] > m[0] && (m[1] + 1 > m[0] && b.push("-"), b.push(f(m[1]))); b.push("]"); return b.join("") } function g(e) { for (var a = e.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)", "g")), b = a.length, d = [], h = 0, m = 0; h < b; ++h) { var p = a[h]; "(" === p ? ++m : "\\" === p.charAt(0) && (p = +p.substring(1)) && (p <= m ? d[p] = -1 : a[h] = f(p)) } for (h = 1; h < d.length; ++h) -1 === d[h] && (d[h] = ++r); for (m = h = 0; h < b; ++h) p = a[h], "(" === p ? (++m, d[m] || (a[h] = "(?:")) : "\\" === p.charAt(0) && (p = +p.substring(1)) && p <= m && (a[h] = "\\" + d[p]); for (h = 0; h < b; ++h) "^" === a[h] && "^" !== a[h + 1] && (a[h] = ""); if (e.ignoreCase && A) for (h = 0; h < b; ++h) p = a[h], e = p.charAt(0), 2 <= p.length && "[" === e ? a[h] = c(p) : "\\" !== e && (a[h] = p.replace(/[a-zA-Z]/g, function (a) { a = a.charCodeAt(0); return "[" + String.fromCharCode(a & -33, a | 32) + "]" })); return a.join("") } for (var r = 0, A = !1, q = !1, I = 0, b = a.length; I < b; ++I) { var t = a[I]; if (t.ignoreCase) q = !0; else if (/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ""))) { A = !0; q = !1; break } } for (var k = {b: 8, t: 9, n: 10, v: 11, f: 12, r: 13}, u = [], I = 0, b = a.length; I < b; ++I) { t = a[I]; if (t.global || t.multiline) throw Error("" + t); u.push("(?:" + g(t) + ")") } return new RegExp(u.join("|"), q ? "gi" : "g") } function l(a, d) { function f(a) { var b = a.nodeType; if (1 == b) { if (!c.test(a.className)) { for (b = a.firstChild; b; b = b.nextSibling) f(b); b = a.nodeName.toLowerCase(); if ("br" === b || "li" === b) g[q] = "\n", A[q << 1] = r++, A[q++ << 1 | 1] = a } } else if (3 == b || 4 == b) b = a.nodeValue, b.length && (b = d ? b.replace(/\r\n?/g, "\n") : b.replace(/[ \t\r\n]+/g, " "), g[q] = b, A[q << 1] = r, r += b.length, A[q++ << 1 | 1] = a) } var c = /(?:^|\s)nocode(?:\s|$)/, g = [], r = 0, A = [], q = 0; f(a); return {a: g.join("").replace(/\n$/, ""), c: A} } function k(a, d, f, c, g) { f && (a = {h: a, l: 1, j: null, m: null, a: f, c: null, i: d, g: null}, c(a), g.push.apply(g, a.g)) } function z(a) { for (var d = void 0, f = a.firstChild; f; f = f.nextSibling) var c = f.nodeType, d = 1 === c ? d ? a : f : 3 === c ? S.test(f.nodeValue) ? a : d : d; return d === a ? void 0 : d } function E(a, d) { function f(a) { for (var q = a.i, r = a.h, b = [q, "pln"], t = 0, A = a.a.match(g) || [], u = {}, e = 0, l = A.length; e < l; ++e) { var D = A[e], w = u[D], h = void 0, m; if ("string" === typeof w) m = !1; else { var p = c[D.charAt(0)]; if (p) h = D.match(p[1]), w = p[0]; else { for (m = 0; m < n; ++m) if (p = d[m], h = D.match(p[1])) { w = p[0]; break } h || (w = "pln") } !(m = 5 <= w.length && "lang-" === w.substring(0, 5)) || h && "string" === typeof h[1] || (m = !1, w = "src"); m || (u[D] = w) } p = t; t += D.length; if (m) { m = h[1]; var C = D.indexOf(m), G = C + m.length; h[2] && (G = D.length - h[2].length, C = G - m.length); w = w.substring(5); k(r, q + p, D.substring(0, C), f, b); k(r, q + p + C, m, F(w, m), b); k(r, q + p + G, D.substring(G), f, b) } else b.push(q + p, w) } a.g = b } var c = {}, g; (function () { for (var f = a.concat(d), q = [], k = {}, b = 0, t = f.length; b < t; ++b) { var n = f[b], u = n[3]; if (u) for (var e = u.length; 0 <= --e;) c[u.charAt(e)] = n; n = n[1]; u = "" + n; k.hasOwnProperty(u) || (q.push(n), k[u] = null) } q.push(/[\0-\uffff]/); g = r(q) })(); var n = d.length; return f } function v(a) { var d = [], f = []; a.tripleQuotedStrings ? d.push(["str", /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, "'\""]) : a.multiLineStrings ? d.push(["str", /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, "'\"`"]) : d.push(["str", /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, "\"'"]); a.verbatimStrings && f.push(["str", /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); var c = a.hashComments; c && (a.cStyleComments ? (1 < c ? d.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#"]) : d.push(["com", /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/, null, "#"]), f.push(["str", /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/, null])) : d.push(["com", /^#[^\r\n]*/, null, "#"])); a.cStyleComments && (f.push(["com", /^\/\/[^\r\n]*/, null]), f.push(["com", /^\/\*[\s\S]*?(?:\*\/|$)/, null])); if (c = a.regexLiterals) { var g = (c = 1 < c ? "" : "\n\r") ? "." : "[\\S\\s]"; f.push(["lang-regex", RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*(" + ("/(?=[^/*" + c + "])(?:[^/\\x5B\\x5C" + c + "]|\\x5C" + g + "|\\x5B(?:[^\\x5C\\x5D" + c + "]|\\x5C" + g + ")*(?:\\x5D|$))+/") + ")")]) } (c = a.types) && f.push(["typ", c]); c = ("" + a.keywords).replace(/^ | $/g, ""); c.length && f.push(["kwd", new RegExp("^(?:" + c.replace(/[\s,]+/g, "|") + ")\\b"), null]); d.push(["pln", /^\s+/, null, " \r\n\t\u00a0"]); c = "^.[^\\s\\w.$@'\"`/\\\\]*"; a.regexLiterals && (c += "(?!s*/)"); f.push(["lit", /^@[a-z_$][a-z_$@0-9]*/i, null], ["typ", /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], ["pln", /^[a-z_$][a-z_$@0-9]*/i, null], ["lit", /^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i, null, "0123456789"], ["pln", /^\\[\s\S]?/, null], ["pun", new RegExp(c), null]); return E(d, f) } function B(a, d, f) { function c(a) { var b = a.nodeType; if (1 == b && !r.test(a.className)) if ("br" === a.nodeName.toLowerCase()) g(a), a.parentNode && a.parentNode.removeChild(a); else for (a = a.firstChild; a; a = a.nextSibling) c(a); else if ((3 == b || 4 == b) && f) { var e = a.nodeValue, d = e.match(n); d && (b = e.substring(0, d.index), a.nodeValue = b, (e = e.substring(d.index + d[0].length)) && a.parentNode.insertBefore(q.createTextNode(e), a.nextSibling), g(a), b || a.parentNode.removeChild(a)) } } function g(a) { function c(a, b) { var e = b ? a.cloneNode(!1) : a, p = a.parentNode; if (p) { var p = c(p, 1), d = a.nextSibling; p.appendChild(e); for (var f = d; f; f = d) d = f.nextSibling, p.appendChild(f) } return e } for (; !a.nextSibling;) if (a = a.parentNode, !a) return; a = c(a.nextSibling, 0); for (var e; (e = a.parentNode) && 1 === e.nodeType;) a = e; b.push(a) } for (var r = /(?:^|\s)nocode(?:\s|$)/, n = /\r\n?|\n/, q = a.ownerDocument, k = q.createElement("li"); a.firstChild;) k.appendChild(a.firstChild); for (var b = [k], t = 0; t < b.length; ++t) c(b[t]); d === (d | 0) && b[0].setAttribute("value", d); var l = q.createElement("ol"); l.className = "linenums"; d = Math.max(0, d - 1 | 0) || 0; for (var t = 0, u = b.length; t < u; ++t) k = b[t], k.className = "L" + (t + d) % 10, k.firstChild || k.appendChild(q.createTextNode("\u00a0")), l.appendChild(k); a.appendChild(l) } function n(a, d) { for (var f = d.length; 0 <= --f;) { var c = d[f]; V.hasOwnProperty(c) ? Q.console && console.warn("cannot override language handler %s", c) : V[c] = a } } function F(a, d) { a && V.hasOwnProperty(a) || (a = /^\s*= +g[1], d = /\n/g, r = a.a, k = r.length, f = 0, q = a.c, n = q.length, c = 0, b = a.g, t = b.length, v = 0; b[t] = k; var u, e; for (e = u = 0; e < t;) b[e] !== b[e + 2] ? (b[u++] = b[e++], b[u++] = b[e++]) : e += 2; t = u; for (e = u = 0; e < t;) { for (var x = b[e], z = b[e + 1], w = e + 2; w + 2 <= t && b[w + 1] === z;) w += 2; b[u++] = x; b[u++] = z; e = w } b.length = u; var h = a.h; a = ""; h && (a = h.style.display, h.style.display = "none"); try { for (; c < n;) { var m = q[c + 2] || k, p = b[v + 2] || k, w = Math.min(m, p), C = q[c + 1], G; if (1 !== C.nodeType && (G = r.substring(f, w))) { g && (G = G.replace(d, "\r")); C.nodeValue = G; var Z = C.ownerDocument, W = Z.createElement("span"); W.className = b[v + 1]; var B = C.parentNode; B.replaceChild(W, C); W.appendChild(C); f < m && (q[c + 1] = C = Z.createTextNode(r.substring(w, m)), B.insertBefore(C, W.nextSibling)) } f = w; f >= m && (c += 2); f >= p && (v += 2) } } finally { h && (h.style.display = a) } } catch (y) { Q.console && console.log(y && y.stack || y) } } var Q = "undefined" !== typeof window ? window : {}, J = ["break,continue,do,else,for,if,return,while"], K = [[J, "auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"], R = [K, "alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], L = [K, "abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"], M = [K, "abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"], K = [K, "abstract,async,await,constructor,debugger,enum,eval,export,from,function,get,import,implements,instanceof,interface,let,null,of,set,undefined,var,with,yield,Infinity,NaN"], N = [J, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], O = [J, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"], J = [J, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"], P = /^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/, S = /\S/, T = v({ keywords: [R, M, L, K, "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", N, O, J], hashComments: !0, cStyleComments: !0, multiLineStrings: !0, regexLiterals: !0 }), V = {}; n(T, ["default-code"]); n(E([], [["pln", /^[^]+/], ["dec", /^]*(?:>|$)/], ["com", /^<\!--[\s\S]*?(?:-\->|$)/], ["lang-", /^<\?([\s\S]+?)(?:\?>|$)/], ["lang-", /^<%([\s\S]+?)(?:%>|$)/], ["pun", /^(?:<[%?]|[%?]>)/], ["lang-", /^