Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
hipchat4 / opt / HipChat4 / qtwebengine_resources_200p.pak
Size: Mime:
0­
/®
3$¯
B°
°±
!˲
bë³
õ´
ù
µ
»¶
™˜·
¸
£¹
ª¥º
l©»
P¬¼
M³½
˹¾
ž½¿
\ÛÀ
ÞâÁ
ÏíÂ
™óÃ
ýÄ
|Å
ªÆ
E
Ç
ÂÈ
&É
U(Ê
},Ë
Þ3Ì
²@Í
_UÎ
fÏ
!Ð
ْÑ
¸•Ò
”˜Ó
øÔ
{¡Õ
¹²Ö
]Æ×
Sר
+ÚÙ
ëÞÚ
èÛ
»ðÜ
kòÝ
!úÞ
M	ß
à
á
Jâ
Š ã
Û'ä
Û/å
7æ
§9ç
ô>è
´KtöWu±X|òY}nZ~ÛZ$[€‘[„\‚{]ƒV^„È_…r† „‡m“ˆ>•‰€žŠ‰ ‹УŒ	©‚²Ž2³y¶9‘4¿’(ƓȔ¶Ì•¡Ð–ŒÔ—¸×˜äÚ™ØÞšÌâ›$íœkñ—ôž‹øŸ·û ¢ÿ¡é¢ã£Þ
¤­¥ž¦##§Æ'¨™)©¹,ªÚ0«ó7¬ƒ8­£;®Ã>¯ªB°uH±›I²ˆL³°O´ØRµV¶(Y·P\¸x_¹gºj»§m¼Ïp½÷s¾w¿?zÀ¯{Á–€Â~…Ã_ŠÄҍÅP¨ÆF¯Çå°È+ÄÉ›×ÊØË´ØÌ_Ù͍ÚΧÜÏ«ÝÐàÞÑeßÒ6àÓààÔ`âÕæãÖSå×ëæØ£èÙÑéÚÍëÛ¤îÜðÝ`ñÞ¾òßôàzõáØöâ úãþäU岿çqèRgé¢hêñië@kì­lí¯oî$rï<sðÉsñ-tòýtówôzxõÅyöÚz÷ï{ø}ùÌ}úq~ûü«ýx€þôÿoƒ<„¸…3‡dŠ©Œ,”/—̙	‡½
ªÕ(ÖñÖ
¹×ØçØFÙ¨ÙÚcÚ´ÚÛgÛ­ÛóÛ9ÜÜÅÜÝQÝ—ÝÝÝ #Þ!iÞ"¯Þ#õÞ$;ß%ß&Çß'
à(Sà)™à*ßà+%á,ká-±á.÷á/=â0ƒâ1Éâ2ã3Uã4›ã5áã6'ä7mä8³ä9ùä:?å;‡å<Ùå=)æ>qæ?¹æ@çAIçBçCñçD6èE•èFöèG;éH€éIÅéJ#êKêLÏêMëNnëO¸ëPìQQìRŸìSîìT<íUŠíVØíW)îXsîY¿îZï[Zï\©ï]÷ï^Eð_“ð`äða.ñbzñcÇñdòedòf²ògŠôh>öiè÷jkî+lÛ.m~3ƒC<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<script>
function setMessage(msg) {
  document.getElementById('message').textContent = msg;
}
function notifyDidFinishLoading() {
  if (plugin.didFinishLoading)
    plugin.didFinishLoading();
}
</script>

<style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
visibility: hidden;
}

#outer:hover h1, #outer:hover #close {
  visibility: visible;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#outer {
  align-items: center;
  border: 1px black solid;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
}

#close {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA9UlEQVR4Xu3UsWrCUByH0fMEouiuhrg4xohToJVGH0CHLBncEwfx/VvIFHLJBWmHDvKbv7PcP9f3L/fXwBsApZSRpUpEgbOnxwiReng6x4AvjdrNXRLkibubWqMcB9Yujk7qjhjmtZOji/U4wELuoBwQXa50kFsQA5jK+kQ/l5kSA4ZEK5Fo+3kcCIlGM8ijQEhUqkEeBUKiUPTyl4C5vZ1cbmdv/iqwclXY6aZwtXoFSLQqhVwmkytUWglxAMG7T0yCu4gD0v7ZBKeVxoEwFxIxYBPmIWEzDnyEeUj4HAfYdvmMcGYdsSUGsOzlIbHEv/uV38APrreiBRBIs3QAAAAASUVORK5CYII=) 2x);
  background-position: right top;
  background-repeat: no-repeat;
  cursor: pointer;
  height: 14px;
  position: absolute;
  right: 3px;
  top: 3px;
visibility: hidden;
  width: 14px;
}

#close[data-plugin-type='document'] {
  display: none;
}

#close:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqUlEQVR4XqWRMQqEMBBF/1E8Ra6x6V3FRnS9QbCxtJg6Z7CzE9lTiIXXyUb3C8EULixDIMM8Zt4kcDfxM5A45U+cgeXnC1tREgkzAgob3hiq3CUHvGLG4FTQoSgxQGDrzN8WTLBGnx2IVDksen9GH7Z9hA5E6uxABMJyCHDMCEGHzugLQPPlBCBNGq+5YtpnGw1Bv+te15ypljTpVzdak5Opy+z+qf//zQ+Lg+07ay5KsgAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB4UlEQVR42u2VsWoCQRBAh+MUFP0C1V9QD4NEOxs9xBQHQVCwSJFWVBAtBNXCxk6wTkBJYUTwEwQLC61E8QP0NzZzt5g5726DkC7EYWHZ8T3WndkV2C/jLwn4hwVYBIdLn9vkLp79QcBCTDMiy3w2gQ9XeTYkEHA8vqj2rworXu3HF1YFfSWgp5QFnKVLvYvzDEKEZ5hW70oXOCtcEbQLIkx7+IQtfMBSOjU6XEF4oyOdYInZbXyOuajjDlpNeQgleIUJKUz4BDMledhqOu/AzVSmzZ49CUjCC0yvim98iqtJT2L2jKsqczsdok9XrHNexaww415lnTNwn6CM/KxJIR8bnUZHPhLO6yMoIyk2pNjLewFuE5AiY1KMMQx8Q7hQYFek4AkjxXFe1rsF84I/BTFQMGL+1Lxwl4DwdtM1gjwKohgxyLtG7SYpxALqugOMcfOKN+bFXeBsLB1uulNcRqq7/tt36k41zoL6QlxGjtd6lrahiqCi1iOFYyvXuxY8yzK33VnvUivbLlOlj/jktm0s3YnXrNIXXufHNxuOGasi8S68zkwrlnV8ZcJJsTIUxbLgQcFZWE8N0gau2p40VVcM0gYeFpSRK6445UhBuKiRgiyKw+34rLt59nb1/7+RwReVkaFtqvNBuwAAAABJRU5ErkJggg==) 2x);
}

#close:active {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAQklEQVR4AWP4TwBSTQGDHcMZIIYAKA9VwRkwtINJgyCaCTAlCBaKAoQ+hFmoCqBKENKkK8C0gpAjCXuTyICiQ2QBAPSwyG3ByZlCAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA/ElEQVR4Xu3UsWrCUBiG4efGlIBoIMFbcnYolYJ3pg4iKGrGYFTRwaUFhYAekiDt0EG++X2W83N8/3J/DbwBMJJSsdQItcDY1VlCOImzq3Ed8OmicHASB3ns5KBw8VUNpDJrW7uAiJ3sbK1l0mqArpmFTUlQ5jYWZrrUAUSmT0SZm4qoA56JvVhs/5g3A7RLolA85A1ASOTye65NMxASK6syfxGITMzvMxG9CvRkliWwlOm9AsSOcitzU1NzK7mjuBkQvHtLK7iLBiB5PhttJSGpB8I8vM6kDuiHeUjoVwMfYR4SRtUAw1veIZzOjRhSBzCoyKFjgH/3K7+BHzg+Cgw0eSW3AAAAAElFTkSuQmCC) 2x);
}
</style>
<style>
body {
  background-color: rgb(187, 187, 187);
}

#plugin_icon {
  opacity: .6;
}
</style>
</head>

<body id="t" onload="notifyDidFinishLoading();">
<div i18n-values="title:name" id="outer">
  <div id="inner">
<div><img id="plugin_icon" src="data:image/png;base64,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"></div>

    <h1 id="message" i18n-content="message"></h1>
  </div>
  <div id="close" i18n-values="title:hide;data-plugin-type:pluginType"
      onclick="plugin.hide();">
  </div>
</div>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<script>
function insertLink() {
  // Replace the chrome://plugins text with a working link (i18n_template
  // doesn't allow raw HTML in template data).
  var link = document.getElementById("enable_link");
  var link_html = link.innerHTML;
  link.parentNode.removeChild(link);
  var message = document.getElementById("message");
  var message_html = message.innerHTML;
  message.innerHTML = message_html.replace('chrome://plugins', link_html);
}
</script>
<style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
visibility: hidden;
}

#outer:hover h1, #outer:hover #close {
  visibility: visible;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#outer {
  align-items: center;
  border: 1px black solid;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
}

#close {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA9UlEQVR4Xu3UsWrCUByH0fMEouiuhrg4xohToJVGH0CHLBncEwfx/VvIFHLJBWmHDvKbv7PcP9f3L/fXwBsApZSRpUpEgbOnxwiReng6x4AvjdrNXRLkibubWqMcB9Yujk7qjhjmtZOji/U4wELuoBwQXa50kFsQA5jK+kQ/l5kSA4ZEK5Fo+3kcCIlGM8ijQEhUqkEeBUKiUPTyl4C5vZ1cbmdv/iqwclXY6aZwtXoFSLQqhVwmkytUWglxAMG7T0yCu4gD0v7ZBKeVxoEwFxIxYBPmIWEzDnyEeUj4HAfYdvmMcGYdsSUGsOzlIbHEv/uV38APrreiBRBIs3QAAAAASUVORK5CYII=) 2x);
  background-position: right top;
  background-repeat: no-repeat;
  cursor: pointer;
  height: 14px;
  position: absolute;
  right: 3px;
  top: 3px;
visibility: hidden;
  width: 14px;
}

#close[data-plugin-type='document'] {
  display: none;
}

#close:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqUlEQVR4XqWRMQqEMBBF/1E8Ra6x6V3FRnS9QbCxtJg6Z7CzE9lTiIXXyUb3C8EULixDIMM8Zt4kcDfxM5A45U+cgeXnC1tREgkzAgob3hiq3CUHvGLG4FTQoSgxQGDrzN8WTLBGnx2IVDksen9GH7Z9hA5E6uxABMJyCHDMCEGHzugLQPPlBCBNGq+5YtpnGw1Bv+te15ypljTpVzdak5Opy+z+qf//zQ+Lg+07ay5KsgAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB4UlEQVR42u2VsWoCQRBAh+MUFP0C1V9QD4NEOxs9xBQHQVCwSJFWVBAtBNXCxk6wTkBJYUTwEwQLC61E8QP0NzZzt5g5726DkC7EYWHZ8T3WndkV2C/jLwn4hwVYBIdLn9vkLp79QcBCTDMiy3w2gQ9XeTYkEHA8vqj2rworXu3HF1YFfSWgp5QFnKVLvYvzDEKEZ5hW70oXOCtcEbQLIkx7+IQtfMBSOjU6XEF4oyOdYInZbXyOuajjDlpNeQgleIUJKUz4BDMledhqOu/AzVSmzZ49CUjCC0yvim98iqtJT2L2jKsqczsdok9XrHNexaww415lnTNwn6CM/KxJIR8bnUZHPhLO6yMoIyk2pNjLewFuE5AiY1KMMQx8Q7hQYFek4AkjxXFe1rsF84I/BTFQMGL+1Lxwl4DwdtM1gjwKohgxyLtG7SYpxALqugOMcfOKN+bFXeBsLB1uulNcRqq7/tt36k41zoL6QlxGjtd6lrahiqCi1iOFYyvXuxY8yzK33VnvUivbLlOlj/jktm0s3YnXrNIXXufHNxuOGasi8S68zkwrlnV8ZcJJsTIUxbLgQcFZWE8N0gau2p40VVcM0gYeFpSRK6445UhBuKiRgiyKw+34rLt59nb1/7+RwReVkaFtqvNBuwAAAABJRU5ErkJggg==) 2x);
}

#close:active {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAQklEQVR4AWP4TwBSTQGDHcMZIIYAKA9VwRkwtINJgyCaCTAlCBaKAoQ+hFmoCqBKENKkK8C0gpAjCXuTyICiQ2QBAPSwyG3ByZlCAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA/ElEQVR4Xu3UsWrCUBiG4efGlIBoIMFbcnYolYJ3pg4iKGrGYFTRwaUFhYAekiDt0EG++X2W83N8/3J/DbwBMJJSsdQItcDY1VlCOImzq3Ed8OmicHASB3ns5KBw8VUNpDJrW7uAiJ3sbK1l0mqArpmFTUlQ5jYWZrrUAUSmT0SZm4qoA56JvVhs/5g3A7RLolA85A1ASOTye65NMxASK6syfxGITMzvMxG9CvRkliWwlOm9AsSOcitzU1NzK7mjuBkQvHtLK7iLBiB5PhttJSGpB8I8vM6kDuiHeUjoVwMfYR4SRtUAw1veIZzOjRhSBzCoyKFjgH/3K7+BHzg+Cgw0eSW3AAAAAElFTkSuQmCC) 2x);
}
</style>
<style>
body {
  background-color: rgb(187, 187, 187);
}

#plugin_icon {
  opacity: .6;
}
</style>
</head>

<body id="t" onLoad="insertLink()">
<div i18n-values="title:name" id="outer">
  <div id="inner">
    <div><img id="plugin_icon" src="data:image/png;base64,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" /></div>
    <h1 id="message" i18n-content="message"></h1>
    <div id="enable_link">
      <a href="#" onclick="plugin.openAboutPlugins();">chrome://plugins</a>
    </div>
  </div>
  <div id="close" i18n-values="title:hide;data-plugin-type:pluginType"
      onclick="plugin.hide();">
  </div>
</div>
</body>
</html>
<!doctype html>
<html i18n-values="dir:textdirection;lang:language">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0,
                                 maximum-scale=1.0, user-scalable=no">
  <title i18n-content="title"></title>
  <style>/* Copyright 2014 The Chromium Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */

a {
  color: #585858;
}

.bad-clock .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,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) 1x,
      url(data:image/png;base64,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) 2x);
}

body {
  background-color: #f7f7f7;
  color: #646464;
}

body.safe-browsing {
  background-color: rgb(206, 52, 38);
  color: white;
}

button {
  -webkit-user-select: none;
  background: rgb(76, 142, 250);
  border: 0;
  border-radius: 2px;
  box-sizing: border-box;
  color: #fff;
  cursor: pointer;
  float: right;
  font-size: .875em;
  margin: 0;
  padding: 10px 24px;
  transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

[dir='rtl'] button {
  float: left;
}

button:active {
  background: rgb(50, 102, 213);
  outline: 0;
}

button:hover {
  box-shadow: 0 1px 3px rgba(0, 0, 0, .50);
}

#debugging {
  display: inline;
  overflow: auto;
}

.debugging-content {
  line-height: 1em;
  margin-bottom: 0;
  margin-top: 1em;
}

.debugging-title {
  font-weight: bold;
}

#details {
  color: #696969;
  margin: 45px 0 50px;
}

#details p:not(:first-of-type) {
  margin-top: 20px;
}

#details-button {
  background: inherit;
  border: 0;
  float: none;
  margin: 0;
  padding: 10px 0;
  text-decoration: underline;
}

#details-button:hover {
  box-shadow: inherit;
}

.error-code {
  color: #777;
  display: inline;
  font-size: .86667em;
  margin-top: 15px;
  opacity: .5;
  text-transform: uppercase;
}

#error-debugging-info {
  font-size: 0.8em;
}

h1 {
  color: #333;
  font-size: 1.6em;
  font-weight: normal;
  line-height: 1.25em;
  margin-bottom: 16px;
}

h2 {
  font-size: 1.2em;
  font-weight: normal;
}

.hidden {
  display: none;
}

html {
  -webkit-text-size-adjust: 100%;
  font-size: 125%;
}

.icon {
  background-repeat: no-repeat;
  background-size: 100%;
  height: 72px;
  margin: 0 0 40px;
  width: 72px;
}

input[type=checkbox] {
  opacity: 0;
}

input[type=checkbox]:focus ~ .checkbox {
  outline: -webkit-focus-ring-color auto 5px;
}

.interstitial-wrapper {
  box-sizing: border-box;
  font-size: 1em;
  line-height: 1.6em;
  margin: 100px auto 0;
  max-width: 600px;
  width: 100%;
}

#main-message > p {
  display: inline;
}

#extended-reporting-opt-in {
  font-size: .875em;
  margin-top: 39px;
}

#extended-reporting-opt-in label {
  position: relative;
}

.nav-wrapper {
  margin-top: 51px;
}

.nav-wrapper::after {
  clear: both;
  content: '';
  display: table;
  width: 100%;
}

.safe-browsing :-webkit-any(
    a, #details, #details-button, h1, h2, p, .small-link) {
  color: white;
}

.safe-browsing button {
  background-color: rgba(255, 255, 255, .15);
}

.safe-browsing button:active {
  background-color: rgba(255, 255, 255, .25);
}

.safe-browsing button:hover {
  box-shadow: 0 2px 3px rgba(0, 0, 0, .5);
}

.safe-browsing .error-code {
  display: none;
}

.safe-browsing .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,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) 1x,
      url(data:image/png;base64,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) 2x);
}

.small-link {
  color: #696969;
  font-size: .875em;
}

.ssl .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,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) 1x,
      url(data:image/png;base64,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) 2x);
}

.captive-portal .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAQAAAD/5HvMAAAEyElEQVR4Xu3afWhVZRwH8LvdmjVSjKyQbKazia1k1sL6YzXoZdy28/J8f5XRC7hwEVk0hZQCXY2SipCgYgappXMQ5Ya9ELZqoEM3VHqxBkapm21jOBWmbLfudk+0Peeu2+mc3zk9514WbN9/zz18ds75Pc/vPM+JTP9NZzrT+b9Fn2nGxHrainb8ggEaRgLn0IOjaMFroloU/Ssg1yxBLZpxBD00QufpODrRiFX6IiUKXY8XcRAJsryC3nRL7EpsQJ/r0V3iSS0/MKU4D6uoQwLY/P1q4i0aYX9xVqyPRH1jbr8UtfSbE8CDqIK60wBjOEb7aDf24CBO/gN12LjJF4dM+dPAoNgMdNkUxLENQltAFViJdbTWfFTcaRbiMXyCpE1CM4vR5uAzdwB/hcxCDI5jXqGFeAadNJoGH0ErVhg3YPs46Ad9JldNS3GCAbDPkFGG/eJGWktn3PA4IUB3oxPzGY4AXSBLCSTLgfZxx2MLV1Q5tFHeWxWQDNalHulWeo4q9GW4VVShng5J0KgZ8+bkYpcEqIJk6H2y0CiW4H58gGMYQhyn8DlqUUltZIk1XF01kKUW5yhm3gVB3Q76MDaRyXBQR1aIIJnyi6jNZUgs8uTQfUiGDJIxZ9OPfxEwhAO0F70To5NR5skxrsUgWaGDZLQCHBHVxnKxWjwuivRS7McK7na1kpUZkEwUzXbFiZfZcVk8pE6xZ3u34AV5TFJUsV2ObBHU0+Q5wu0eJ21krw+eD4lzBvOYf7wLeyI5DEfLx2l1DPqoSXK8SItis/gm41mlago/9P2UApklZE0pkHhdAv6YIiB8NwEQL9HvUwCkzZHz15g5Gw8jmR0QtsizvOoACUjAIdlOZQUkHpCgDqd1gwRslhX3djZAmDsBwpATJPtDUZPqGFuyUWU453IWu7fFHZOvhjiQ+aqiDheQ/bJjXpf2oP+caRA+cgPJpkxckeZfiIHMgmirC8gee4rz0qF6KV3IJEi86R8kg0oazQ6Iv2Uyoiajt4x/qJ1BfcCe6JQZC/BQ82XvDLYHJPUEK3tmYHTmlotpbzCSwsDomDpc+mD6VgHETB3M5Or2c5xUBvGTq7P98DjBEjqrBOLbD2eDZj7o+aJdhnhooJxUbd/r1cJ+yl1mJMMBGWUSP6zlezT5SIirGNKacEB4bwKEXcxrEN7gThUGSCtILaZXMC+KiGN+5kHYITndkSj7Ko3GTIPMEvtJFKt9LDYgiZtVQTLnqUPUOJcV8KWE95df4m85ps0+CQ/ig68xN72lscF4yveCFTa5g9AXnDR5lczC1Jr+4UhuCsAv6YlH3EDURFbgPCG3Y2altmPG9FIJ8LnoOYLbXNDzgi+Myvkqii9sIuocAHZZuN9tAKi6hnaiBwka9f942y2rzFcut4tZOO+3r5J6xcVmYEeKc9xlPuC3FhDHynBA6LQ5GGA2ftnNl82RqDrIDgb1ZU4AnxzUTc7raDeWhwPCUW0BA/C7gYeP9cWqILSUX8YAgmxxIoF3tYL/DkK9Y/znwm8CI4lvRLV+dVAQThOpOPht8p+ogZ4W9/jijFFD5eXhWPgPCXjMh/pSVYD6pxaywPGOKOIBWfkYhXYKozgvy5/rYBva8avzcx19sSrgT2jJnjJMVMiUAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,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) 2x);
}

.checkbox {
  background: transparent;
  border: 1px solid white;
  border-radius: 2px;
  display: block;
  height: 14px;
  left: 0;
  position: absolute;
  right: 0;
  top: -1px;
  width: 14px;
}

.checkbox::before {
  background: transparent;
  border: 2px solid white;
  border-right-width: 0;
  border-top-width: 0;
  content: '';
  height: 4px;
  left: 2px;
  opacity: 0;
  position: absolute;
  top: 3px;
  transform: rotate(-45deg);
  width: 9px;
}

.ssl-opt-in .checkbox {
  border-color: #696969;
}

.ssl-opt-in .checkbox::before {
  border-color: #696969;
}

input[type=checkbox]:checked ~ .checkbox::before {
  opacity: 1;
}

@media (max-width: 700px) {
  .interstitial-wrapper {
    padding: 0 10%;
  }

  #error-debugging-info {
    overflow: auto;
  }
}

@media (max-height: 600px) {
  .error-code {
    margin-top: 10px;
  }
}

@media (max-width: 420px) {
  button,
  [dir='rtl'] button,
  .small-link {
    float: none;
    font-size: .825em;
    font-weight: 400;
    margin: 0;
    text-transform: uppercase;
    width: 100%;
  }

  #details {
    margin: 20px 0 20px 0;
  }

  #details p:not(:first-of-type) {
    margin-top: 10px;
  }

  #details-button {
    display: block;
    margin-top: 20px;
    text-align: center;
    width: 100%;
  }

  .interstitial-wrapper {
    padding: 0 5%;
  }

  #extended-reporting-opt-in {
    margin-top: 24px;
  }

  .nav-wrapper {
    margin-top: 30px;
  }
}

/**
 * Mobile specific styling.
 * Navigation buttons are anchored to the bottom of the screen.
 * Details message replaces the top content in its own scrollable area.
 */

@media (max-width: 420px) and (max-height: 736px) and (orientation: portrait) {
  #details-button {
    border: 0;
    margin: 8px 0 0;
  }

  .secondary-button {
    -webkit-margin-end: 0;
    margin-top: 16px;
  }
}

/* Fixed nav. */
@media (min-width: 240px) and (max-width: 420px) and
       (min-height: 401px) and (max-height: 736px) and (orientation:portrait),
       (min-width: 421px) and (max-width: 736px) and (min-height: 240px) and
       (max-height: 420px) and (orientation:landscape) {
  body .nav-wrapper {
    background: #f7f7f7;
    bottom: 0;
    box-shadow: 0 -22px 40px rgb(247, 247, 247);
    left: 0;
    margin: 0;
    max-width: 736px;
    padding-left: 24px;
    padding-right: 24px;
    position: fixed;
    z-index: 1;
  }

  body.safe-browsing .nav-wrapper {
    background: rgb(206, 52, 38);
    box-shadow: 0 -22px 40px rgb(206, 52, 38);
  }

  .interstitial-wrapper {
    max-width: 736px;
  }

  #details,
  #main-content {
    padding-bottom: 40px;
  }
}

@media (max-width: 420px) and (max-height: 736px) and (orientation: portrait),
       (max-width: 736px) and (max-height: 420px) and (orientation: landscape) {
  body {
    margin: 0 auto;
  }

  button,
  [dir='rtl'] button,
  button.small-link {
    font-family: Roboto-Regular,Helvetica;
    font-size: .933em;
    font-weight: 600;
    margin: 6px 0;
    text-transform: uppercase;
  }

  .nav-wrapper {
    box-sizing: border-box;
    padding-bottom: 8px;
    width: 100%;
  }

  .error-code {
    margin-top: 0;
  }

  #details {
    box-sizing: border-box;
    height: auto;
    margin: 0;
    opacity: 1;
    transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1);
  }

  #details.hidden,
  #main-content.hidden {
    display: block;
    height: 0;
    opacity: 0;
    overflow: hidden;
  }

  #details-button {
    padding-bottom: 16px;
    padding-top: 16px;
  }

  h1 {
    font-size: 1.5em;
    margin-bottom: 8px;
  }

  .icon {
    margin-bottom: 12px;
  }

  .interstitial-wrapper {
    box-sizing: border-box;
    margin: 24px auto 12px;
    padding: 0 24px;
    position: relative;
  }

  .interstitial-wrapper p {
    font-size: .95em;
    line-height: 1.61em;
    margin-top: 8px;
  }

  #main-content {
    margin: 0;
    transition: opacity 100ms cubic-bezier(0.4, 0, 0.2, 1);
  }

  .small-link {
    border: 0;
  }

  .suggested-left > #control-buttons,
  .suggested-right > #control-buttons {
    float: none;
    margin: 0;
  }
}

@media (min-height: 400px) and (orientation:portrait) {
  body:not(.extended-reporting-has-checkbox) .interstitial-wrapper {
    margin-bottom: 145px;
  }
}

@media (min-height: 299px) and (orientation:portrait) {
  .nav-wrapper {
    padding-bottom: 16px;
  }
}

@media (min-height: 405px) and (max-height: 736px) and
       (max-width: 420px) and (orientation:portrait) {
  .icon {
    margin-bottom: 24px;
  }

  .interstitial-wrapper {
    margin-top: 64px;
  }
}

@media (min-height: 480px) and (max-width: 420px) and
       (max-height: 736px) and (orientation: portrait),
       (min-height: 338px) and (max-height: 420px) and (max-width: 736px) and
       (orientation: landscape) {
  .icon {
    margin-bottom: 24px;
  }

  .nav-wrapper {
    padding-bottom: 24px;
  }
}

@media (min-height: 500px) and (max-width: 414px) and (orientation: portrait) {
  :not(.extended-reporting-has-checkbox) .interstitial-wrapper {
    margin-top: 96px;
  }
}

/* Phablet sizing */
@media (min-width: 375px) and (min-height: 641px) and (max-height: 736px) and
       (max-width: 414px) and (orientation: portrait) {
  button,
  [dir='rtl'] button,
  .small-link {
    font-size: 1em;
    padding-bottom: 12px;
    padding-top: 12px;
  }

  body:not(.offline) .icon {
    height: 80px;
    width: 80px;
  }

  #details-button {
    margin-top: 28px;
  }

  h1 {
    font-size: 1.7em;
  }

  .icon {
    margin-bottom: 28px;
  }

  .interstitial-wrapper {
    padding: 28px;
  }

  .interstitial-wrapper p {
    font-size: 1.05em;
  }

  .nav-wrapper {
    padding: 28px;
  }
}

@media (min-width: 420px) and (max-width: 736px) and
       (min-height: 240px) and (max-height: 298px) and
       (orientation:landscape) {
  body:not(.offline) .icon {
    height: 50px;
    width: 50px;
  }

  .icon {
    padding-top: 0;
  }

  .interstitial-wrapper {
    margin-top: 16px;
  }

  .nav-wrapper {
    padding: 0 24px 8px;
  }
}

@media (min-width: 420px) and (max-width: 736px) and
       (min-height: 240px) and (max-height: 420px) and
       (orientation:landscape) {
  #details-button {
    margin: 0;
  }

  .interstitial-wrapper {
    margin-bottom: 70px;
  }

  .nav-wrapper {
    margin-top: 0;
  }

  #extended-reporting-opt-in {
    margin-top: 0;
  }
}

/* Phablet landscape */
@media (min-width: 680px) and (max-height: 414px) {
  .interstitial-wrapper {
    margin: 24px auto;
  }

  .nav-wrapper {
    margin: 16px auto 0;
  }
}

@media (max-height: 240px) and (orientation: landscape),
       (max-height: 480px) and (orientation: portrait),
       (max-width: 419px) and (max-height: 323px) {
  body:not(.offline) .icon {
    height: 56px;
    width: 56px;
  }

  .icon {
    margin-bottom: 16px;
  }
}

/* Small mobile screens. No fixed nav. */
@media (max-height: 400px) and (orientation: portrait),
       (max-height: 239px) and (orientation: landscape),
       (max-width: 419px) and (max-height: 399px) {
  .interstitial-wrapper {
    display: flex;
    flex-direction: column;
    margin-bottom: 0;
  }

  #details {
    flex: 1 1 auto;
    order: 0;
  }

  #main-content {
    flex: 1 1 auto;
    order: 0;
  }

  .nav-wrapper {
    flex: 0 1 auto;
    margin-top: 8px;
    order: 1;
    padding-left: 0;
    padding-right: 0;
    position: relative;
    width: 100%;
  }
}

/* Extended reporting opt-in. No fixed nav. */
@media (max-height: 736px) and (orientation: portrait),
       (max-height: 360px) and (max-width: 680px) and (orientation: landscape) {
  .extended-reporting-has-checkbox .interstitial-wrapper {
    display: flex;
    flex-direction: column;
    margin-bottom: 0;
  }

  .extended-reporting-has-checkbox #details {
    flex: 1 1 auto;
    order: 0;
  }

  .extended-reporting-has-checkbox #main-content {
    flex: 1 1 auto;
    order: 0;
    padding-bottom: 0;
  }

  .extended-reporting-has-checkbox #extended-reporting-opt-in {
    margin-bottom: 8px;
  }

  body.extended-reporting-has-checkbox .nav-wrapper {
    flex: 0 1 auto;
    margin-top: 0;
    order: 1;
    padding-left: 0;
    padding-right: 0;
    position: relative;
    width: 100%;
  }
}

@media (max-width: 239px) and (orientation: portrait) {
  .nav-wrapper {
    padding-left: 0;
    padding-right: 0;
  }
}
</style>
  <style>/* Copyright 2013 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

/* Don't use the main frame div when the error is in a subframe. */
html[subframe] #main-frame-error {
  display: none;
}

/* Don't use the subframe error div when the error is in a main frame. */
html:not([subframe]) #sub-frame-error {
  display: none;
}

#diagnose-button {
  -webkit-margin-start: 0;
  float: none;
  margin-bottom: 10px;
  margin-top: 20px;
}

h1 {
  margin-top: 0;
}

h2 {
  color: #666;
  font-size: 1.2em;
  font-weight: normal;
  margin: 10px 0;
}

a {
  color: rgb(17, 85, 204);
  text-decoration: none;
}

.icon {
  -webkit-user-select: none;
  content: '';
}

.icon-generic {
  /**
   * Can't access chrome://theme/IDR_ERROR_NETWORK_GENERIC from an untrusted
   * renderer process, so embed the resource manually.
   */
  content: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIAQMAAABvIyEEAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAENJREFUeF7tzbEJACEQRNGBLeAasBCza2lLEGx0CxFGG9hBMDDxRy/72O9FMnIFapGylsu1fgoBdkXfUHLrQgdfrlJN1BdYBjQQm3UAAAAASUVORK5CYII=) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQAQMAAADdiHD7AAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAFJJREFUeF7t0cENgDAMQ9FwYgxG6WjpaIzCCAxQxVggFuDiCvlLOeRdHR9yzjncHVoq3npu+wQUrUuJHylSTmBaespJyJQoObUeyxDQb3bEm5Au81c0pSCD8HYAAAAASUVORK5CYII=) 2x);
}

.icon-offline {
  content: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIAQMAAABvIyEEAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAGxJREFUeF7tyMEJwkAQRuFf5ipMKxYQiJ3Z2nSwrWwBA0+DQZcdxEOueaePp9+dQZFB7GpUcURSVU66yVNFj6LFICatThZB6r/ko/pbRpUgilY0Cbw5sNmb9txGXUKyuH7eV25x39DtJXUNPQGJtWFV+BT/QAAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQBAMAAAAVaP+LAAAAGFBMVEUAAABTU1NNTU1TU1NPT09SUlJSUlJTU1O8B7DEAAAAB3RSTlMAoArVKvVgBuEdKgAAAJ1JREFUeF7t1TEOwyAMQNG0Q6/UE+RMXD9d/tC6womIFSL9P+MnAYOXeTIzMzMzMzMzaz8J9Ri6HoITmuHXhISE8nEh9yxDh55aCEUoTGbbQwjqHwIkRAEiIaG0+0AA9VBMaE89Rogeoww936MQrWdBr4GN/z0IAdQ6nQ/FIpRXDwHcA+JIJcQowQAlFUA0MfQpXLlVQfkzR4igS6ENjknm/wiaGhsAAAAASUVORK5CYII=) 2x);
  position: relative;
}

.icon-disabled {
  content: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABICAMAAAAZF4G5AAAABlBMVEVMaXFTU1OXUj8tAAAAAXRSTlMAQObYZgAAASZJREFUeAHd11Fq7jAMRGGf/W/6PoWB67YMqv5DybwG/CFjRuR8JBw3+ByiRjgV9W/TJ31P0tBfC6+cj1haUFXKHmVJo5wP98WwQ0ZCbfUc6LQ6VuUBz31ikADkLMkDrfUC4rR6QGW+gF6rx7NaHWCj1Y/W6lf4L7utvgBSt3rBFSS/XBMPUILcJINHCBWYUfpWn4NBi1ZfudIc3rf6/NGEvEA+AsYTJozmXemjXeLZAov+mnkN2HfzXpMSVQDnGw++57qNJ4D1xitA2sJ+VAWMygSEaYf2mYPTjZfk2K8wmP7HLIH5Mg4/pP+PEcDzUvDMvYbs/2NWwPO5vBdMZE4EE5UTQLiBFDaUlTDPBRoJ9HdAYIkIo06og3BNXtCzy7zA1aXk5x+tJARq63eAygAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACQAQMAAAArwfVjAAAABlBMVEVMaXFTU1OXUj8tAAAAAXRSTlMAQObYZgAAAYdJREFUeF7F1EFqwzAUBNARAmVj0FZe5QoBH6BX+dn4GlY2PYNzGx/A0CvkCIJuvIraKJKbgBvzf2g62weDGD7CYggpfFReis4J0ey9EGFIiEQQojFSlA9kSIiqd0KkFjKsewgRbStEN19mxUPTtmW9HQ/h6tyqNQ8NlSMZdzyE6qkoE0trVYGFm0n1WYeBhduzwbwBC7voS+vIxfeMjeaiLxsMMtQNwMPtuew+DjzcTHk8YMfDknEcIUOtf2lVfgVH3K4Xv5PRYAXRVMtItIJ3rfaCIVn9DsTH2NxisAVRex2Hh3hX+/mRUR08bAwPEYsI51ZxWH4Q0SpicQRXeyEaIug48FEdegARfMz/tADVsRciwTAxW308ehmC2gLraC+YCbV3QoTZexa+zegAEW5PhhgYfmbvJgcRqngGByOSXdFJcLk2JeDPEN0kxe1JhIt5FiFA+w+ItMELsUyPF2IaJ4aILqb4FbxPwhImwj6JauKgDUCYaxmYIsd4KXdMjIC9ItB5Bn4BNRwsG0XM2nwAAAAASUVORK5CYII=) 2x);
  width: 112px;
}

.error-code {
  display: block;
}

#content-top {
  margin: 20px;
}

#help-box-inner {
  background-color: #f9f9f9;
  border-top: 1px solid #EEE;
  color: #444;
  padding: 20px;
  text-align: start;
}

.hidden {
  display: none;
}

#suggestion {
  margin-top: 15px;
}

#short-suggestion {
  margin-top: 5px;
}

#sub-frame-error-details {
  color: #8F8F8F;
/* Not done on mobile for performance reasons. */
  text-shadow: 0 1px 0 rgba(255,255,255,0.3);
}

[jscontent=failedUrl] {
  overflow-wrap: break-word;
}

#search-container {
  /* Prevents a space between controls. */
  display: flex;
  margin-top: 20px;
}

#search-box {
  border: 1px solid #cdcdcd;
  flex-grow: 1;
  font-size: 16px;
  height: 26px;
  margin-right: 0;
  padding: 1px 9px;
}

#search-box:focus {
  border: 1px solid rgb(93, 154, 255);
  outline: none;
}

#search-button {
  border: none;
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
  box-shadow: none;
  display: flex;
  height: 30px;
  margin: 0;
  padding: 0;
  width: 60px;
}

#search-image {
  content:
      -webkit-image-set(
          url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAQAAAB+HTb/AAAArElEQVR4Xn3NsUoCUBzG0XvB3U0chR4geo5qihpt6gkCx0bXFsMERWj2KWqIanAvmlUUoQapwU6g4l8H5bd9Z/iSPS0hu/RqZqrncBuzLl7U3Rn4cSpQFTeroejJl1Lgs7f4ceDPdeBMXYp86gaONYJkY83AnqHiGk9wHnjk16PKgo5N9BUCkzPf5j6M0PfuVg5MymoetFwoaKAlB26WdXAvJ7u5mezitqtkT//7Sv/u96CaLQAAAABJRU5ErkJggg==) 1x,
          url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAQAAACVzLYUAAABYElEQVR4Xr3VMUuVURzH8XO98jgkGikENkRD0KRGDUVDQy0h2SiC4IuIiktL4AvQt1CDBJUJwo1KXXS6cWdHw7tcjWwoC5Hrx+UZgnNO5CXiO/75jD/+QZf9MzjskVU7DrU1zRv9G9ir5hsA4Nii83+GA9ZI1nI1D6tWAE1TRlQMuuuFDthzMQefgo4nKr+f3dIGDdUUHPYD1ISoMQdgJgUfgqaKEOcxWE/BVTArJBvwC0cGY7gNLgiZNsD1GP4EPVn4EtyLYRuczcJ34HYMP4E7GdajDS7FcB48z8AJ8FmI4TjouBkzZ2yBuRQMlsButIZ+dfDVUBqOaIHvavpLVHXfFmAqv45r9gEHNr3y3hcAfLSgSMPgiiZR+6Z9AMuKNAwqpjUcA2h55pxgAfBWkYRlQ254YMJloaxPHbCkiGCymL5RlLA7GnRDXyuC7uhicLoKdRyaDE5Pl00K//93nABqPgBDK8sfWgAAAABJRU5ErkJggg==) 2x);
  margin: auto;
}

.secondary-button {
  -webkit-margin-end: 16px;
  background: #d9d9d9;
  color: #696969;
}

.snackbar {
  background: #323232;
  border-radius: 2px;
  bottom: 24px;
  box-sizing: border-box;
  color: #fff;
  font-size: .87em;
  left: 24px;
  max-width: 568px;
  min-width: 288px;
  opacity: 0;
  padding: 16px 24px 12px;
  position: fixed;
  transform: translateY(90px);
  will-change: opacity, transform;
  z-index: 999;
}

.snackbar-show {
  -webkit-animation:
    show-snackbar .25s cubic-bezier(0.0, 0.0, 0.2, 1) forwards,
    hide-snackbar .25s cubic-bezier(0.4, 0.0, 1, 1) forwards 5s;
}

@-webkit-keyframes show-snackbar {
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@-webkit-keyframes hide-snackbar {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(90px);
  }
}

.suggestions {
  margin-top: 18px;
}

.suggestion-header {
  font-weight: bold;
  margin-bottom: 4px;
}

.suggestion-body {
  color: #777;
}

/* Increase line height at higher resolutions. */
@media (min-width: 641px) and (min-height: 641px) {
  #help-box-inner {
    line-height: 18px;
  }
}

/* Decrease padding at low sizes. */
@media (max-width: 640px), (max-height: 640px) {
  h1 {
    margin: 0 0 15px;
  }
  #content-top {
    margin: 15px;
  }
  #help-box-inner {
    padding: 20px;
  }
  .suggestions {
    margin-top: 10px;
  }
  .suggestion-header {
    margin-bottom: 0;
  }
  .error-code {
    margin-top: 10px;
  }
}

/* Don't allow overflow when in a subframe. */
html[subframe] body {
  overflow: hidden;
}

#sub-frame-error {
  -webkit-align-items: center;
  background-color: #DDD;
  display: -webkit-flex;
  -webkit-flex-flow: column;
  height: 100%;
  -webkit-justify-content: center;
  left: 0;
  position: absolute;
  top: 0;
  transition: background-color .2s ease-in-out;
  width: 100%;
}

#sub-frame-error:hover {
  background-color: #EEE;
}

#sub-frame-error .icon-generic {
  margin: 0 0 16px;
}

#sub-frame-error-details {
  margin: 0 10px;
  text-align: center;
  visibility: hidden;
}

/* Show details only when hovering. */
#sub-frame-error:hover #sub-frame-error-details {
  visibility: visible;
}

/* If the iframe is too small, always hide the error code. */
/* TODO(mmenke): See if overflow: no-display works better, once supported. */
@media (max-width: 200px), (max-height: 95px) {
  #sub-frame-error-details {
    display: none;
  }
}

/* Adjust icon for small embedded frames in apps. */
@media (max-height: 100px) {
  #sub-frame-error .icon-generic {
    height: auto;
    margin: 0;
    padding-top: 0;
    width: 25px;
  }
}

/* details-button is special; it's a <button> element that looks like a link. */
#details-button {
  box-shadow: none;
  min-width: 0;
}

/* Styles for platform dependent separation of controls and details button. */
.suggested-left > #control-buttons,
.suggested-left #stale-load-button,
.suggested-right > #details-button {
  float: left;
}

.suggested-right > #control-buttons,
.suggested-right #stale-load-button,
.suggested-left > #details-button {
  float: right;
}

.suggested-left .secondary-button {
  -webkit-margin-end: 0px;
  -webkit-margin-start: 16px;
}

#details-button.singular {
  float: none;
}

#buttons::after {
  clear: both;
  content: '';
  display: block;
  width: 100%;
}

/* Offline page */
.offline .interstitial-wrapper {
  color: #2b2b2b;
  font-size: 1em;
  line-height: 1.55;
  margin: 0 auto;
  max-width: 600px;
  padding-top: 100px;
  width: 100%;
}

.offline .runner-container {
  height: 150px;
  max-width: 600px;
  overflow: hidden;
  position: absolute;
  top: 35px;
  width: 44px;
}

.offline .runner-canvas {
  height: 150px;
  max-width: 600px;
  opacity: 1;
  overflow: hidden;
  position: absolute;
  top: 0;
  z-index: 2;
}

.offline .controller {
  background: rgba(247,247,247, .1);
  height: 100vh;
  left: 0;
  position: absolute;
  top: 0;
  width: 100vw;
  z-index: 1;
}

#offline-resources {
  display: none;
}

@media (max-width: 420px) {
  .suggested-left > #control-buttons,
  .suggested-right > #control-buttons {
    float: none;
  }

  .snackbar {
    left: 0;
    bottom: 0;
    width: 100%;
    border-radius: 0;
  }
}

@media (max-height: 350px) {
  h1 {
    margin: 0 0 15px;
  }

  .icon-offline {
    margin: 0 0 10px;
  }

  .interstitial-wrapper {
    margin-top: 5%;
  }

  .nav-wrapper {
    margin-top: 30px;
  }
}

@media (min-width: 600px) and (max-width: 736px) and (orientation: landscape) {
  .offline .interstitial-wrapper {
    margin-left: 0;
    margin-right: 0;
  }
}

@media (min-width: 420px) and (max-width: 736px) and
       (min-height: 240px) and (max-height: 420px) and
       (orientation:landscape) {
  .interstitial-wrapper {
    margin-bottom: 100px;
  }
}

@media (min-height: 240px) and (orientation: landscape) {
  .offline .interstitial-wrapper {
    margin-bottom: 90px;
  }

  .icon-offline {
    margin-bottom: 20px;
  }
}

@media (max-height: 320px) and (orientation: landscape) {
  .icon-offline {
    margin-bottom: 0;
  }

  .offline .runner-container {
    top: 10px;
  }
}

@media (max-width: 240px) {
  button {
    padding-left: 12px;
    padding-right: 12px;
  }

  .interstitial-wrapper {
    overflow: inherit;
    padding: 0 8px;
  }
}

@media (max-width: 120px) {
  button {
    width: auto;
  }
}</style>
  <script>// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var mobileNav = false;

/**
 * For small screen mobile the navigation buttons are moved
 * below the advanced text.
 */
function onResize() {
  var helpOuterBox = document.querySelector('#details');
  var mainContent = document.querySelector('#main-content');
  var mediaQuery = '(min-width: 240px) and (max-width: 420px) and ' +
      '(max-height: 736px) and (orientation: portrait),' +
      '(max-width: 736px) and (max-height: 420px) and (orientation: landscape)';
  var detailsHidden = helpOuterBox.classList.contains('hidden');
  var runnerContainer = document.querySelector('.runner-container');

  // Check for change in nav status.
  if (mobileNav != window.matchMedia(mediaQuery).matches) {
    mobileNav = !mobileNav;

    // Handle showing the top content / details sections according to state.
    if (mobileNav) {
      mainContent.classList.toggle('hidden', !detailsHidden);
      helpOuterBox.classList.toggle('hidden', detailsHidden);
      if (runnerContainer) {
        runnerContainer.classList.toggle('hidden', !detailsHidden);
      }
    } else if (!detailsHidden) {
      // Non mobile nav with visible details.
      mainContent.classList.remove('hidden');
      helpOuterBox.classList.remove('hidden');
      if (runnerContainer) {
        runnerContainer.classList.remove('hidden');
      }
    }
  }
}

function setupMobileNav() {
  window.addEventListener('resize', onResize);
  onResize();
}

document.addEventListener('DOMContentLoaded', setupMobileNav);
</script>
  <script>// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function toggleHelpBox() {
  var helpBoxOuter = document.getElementById('details');
  helpBoxOuter.classList.toggle('hidden');
  var detailsButton = document.getElementById('details-button');
  if (helpBoxOuter.classList.contains('hidden'))
    detailsButton.innerText = detailsButton.detailsText;
  else
    detailsButton.innerText = detailsButton.hideDetailsText;

  // Details appears over the main content on small screens.
  if (mobileNav) {
    document.getElementById('main-content').classList.toggle('hidden');
    var runnerContainer = document.querySelector('.runner-container');
    if (runnerContainer) {
      runnerContainer.classList.toggle('hidden');
    }
  }
}

function diagnoseErrors() {
  var extensionId = 'idddmepepmjcgiedknnmlbadcokidhoa';
  var diagnoseFrame = document.getElementById('diagnose-frame');
  diagnoseFrame.innerHTML =
      '<iframe src="chrome-extension://' + extensionId +
      '/index.html"></iframe>';
}

// Subframes use a different layout but the same html file.  This is to make it
// easier to support platforms that load the error page via different
// mechanisms (Currently just iOS).
if (window.top.location != window.location)
  document.documentElement.setAttribute('subframe', '');

// Re-renders the error page using |strings| as the dictionary of values.
// Used by NetErrorTabHelper to update DNS error pages with probe results.
function updateForDnsProbe(strings) {
  var context = new JsEvalContext(strings);
  jstProcess(context, document.getElementById('t'));
}

// Given the classList property of an element, adds an icon class to the list
// and removes the previously-
function updateIconClass(classList, newClass) {
  var oldClass;

  if (classList.hasOwnProperty('last_icon_class')) {
    oldClass = classList['last_icon_class'];
    if (oldClass == newClass)
      return;
  }

  classList.add(newClass);
  if (oldClass !== undefined)
    classList.remove(oldClass);

  classList['last_icon_class'] = newClass;

  if (newClass == 'icon-offline') {
    document.body.classList.add('offline');
    new Runner('.interstitial-wrapper');
  } else {
    document.body.classList.add('neterror');
  }
}

// Does a search using |baseSearchUrl| and the text in the search box.
function search(baseSearchUrl) {
  var searchTextNode = document.getElementById('search-box');
  document.location = baseSearchUrl + searchTextNode.value;
  return false;
}

// Use to track clicks on elements generated by the navigation correction
// service.  If |trackingId| is negative, the element does not come from the
// correction service.
function trackClick(trackingId) {
  // This can't be done with XHRs because XHRs are cancelled on navigation
  // start, and because these are cross-site requests.
  if (trackingId >= 0 && errorPageController)
    errorPageController.trackClick(trackingId);
}

// Called when an <a> tag generated by the navigation correction service is
// clicked.  Separate function from trackClick so the resources don't have to
// be updated if new data is added to jstdata.
function linkClicked(jstdata) {
  trackClick(jstdata.trackingId);
}

// Implements button clicks.  This function is needed during the transition
// between implementing these in trunk chromium and implementing them in
// iOS.
function reloadButtonClick(url) {
  if (window.errorPageController) {
    errorPageController.reloadButtonClick();
  } else {
    location = url;
  }
}

function showSavedCopyButtonClick() {
  if (window.errorPageController) {
    errorPageController.showSavedCopyButtonClick();
  }
}

function detailsButtonClick() {
  if (window.errorPageController)
    errorPageController.detailsButtonClick();
}

/**
 * Replace the reload button with the Google cached copy suggestion.
 */
function setUpCachedButton(buttonStrings) {
  var reloadButton = document.getElementById('reload-button');

  reloadButton.textContent = buttonStrings.msg;
  var url = buttonStrings.cacheUrl;
  var trackingId = buttonStrings.trackingId;
  reloadButton.onclick = function(e) {
    e.preventDefault();
    trackClick(trackingId);
    if (window.errorPageController) {
      errorPageController.trackCachedCopyButtonClick(
          buttonStrings.defaultLabel);
    }
    location = url;
  };
  reloadButton.style.display = '';
  document.getElementById('control-buttons').hidden = false;
}

var primaryControlOnLeft = true;
primaryControlOnLeft = false;

function onDocumentLoad() {
  var controlButtonDiv = document.getElementById('control-buttons');
  var reloadButton = document.getElementById('reload-button');
  var detailsButton = document.getElementById('details-button');
  var showSavedCopyButton = document.getElementById('show-saved-copy-button');

  var primaryButton, secondaryButton;
  if (showSavedCopyButton.primary) {
    primaryButton = showSavedCopyButton;
    secondaryButton = reloadButton;
  } else {
    primaryButton = reloadButton;
    secondaryButton = showSavedCopyButton;
  }

  // Sets up the proper button layout for the current platform.
  if (primaryControlOnLeft) {
    buttons.classList.add('suggested-left');
    controlButtonDiv.insertBefore(secondaryButton, primaryButton);
  } else {
    buttons.classList.add('suggested-right');
    controlButtonDiv.insertBefore(primaryButton, secondaryButton);
  }

  if (reloadButton.style.display == 'none' &&
      showSavedCopyButton.style.display == 'none') {
    detailsButton.classList.add('singular');
  }

// Hide the details button if there are no details to show.
  if (loadTimeData.valueExists('summary') &&
          !loadTimeData.getValue('summary').msg) {
    detailsButton.style.display = 'none';
  }

  // Show control buttons.
  if (loadTimeData.valueExists('reloadButton') &&
          loadTimeData.getValue('reloadButton').msg ||
      loadTimeData.valueExists('showSavedCopyButton') &&
          loadTimeData.getValue('showSavedCopyButton').msg) {
    controlButtonDiv.hidden = false;

    // Set the secondary button state in the cases of two call to actions.
    if (loadTimeData.valueExists('reloadButton') &&
            loadTimeData.getValue('reloadButton').msg &&
        loadTimeData.valueExists('showSavedCopyButton') &&
            loadTimeData.getValue('showSavedCopyButton').msg) {
      secondaryButton.classList.add('secondary-button');
    }
  }

  // Add a main message paragraph.
  if (loadTimeData.valueExists('primaryParagraph')) {
    var p = document.querySelector('#main-message p');
    p.innerHTML = loadTimeData.getString('primaryParagraph');
    p.hidden = false;
  }

  // Check for Google cached copy suggestion.
  if (loadTimeData.valueExists('cacheButton')) {
    setUpCachedButton(loadTimeData.getValue('cacheButton'));
  }
}

document.addEventListener('DOMContentLoaded', onDocumentLoad);
</script>
  <script>// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(function() {
'use strict';
/**
 * T-Rex runner.
 * @param {string} outerContainerId Outer containing element id.
 * @param {Object} opt_config
 * @constructor
 * @export
 */
function Runner(outerContainerId, opt_config) {
  // Singleton
  if (Runner.instance_) {
    return Runner.instance_;
  }
  Runner.instance_ = this;

  this.outerContainerEl = document.querySelector(outerContainerId);
  this.containerEl = null;
  this.snackbarEl = null;
  this.detailsButton = this.outerContainerEl.querySelector('#details-button');

  this.config = opt_config || Runner.config;

  this.dimensions = Runner.defaultDimensions;

  this.canvas = null;
  this.canvasCtx = null;

  this.tRex = null;

  this.distanceMeter = null;
  this.distanceRan = 0;

  this.highestScore = 0;

  this.time = 0;
  this.runningTime = 0;
  this.msPerFrame = 1000 / FPS;
  this.currentSpeed = this.config.SPEED;

  this.obstacles = [];

  this.started = false;
  this.activated = false;
  this.crashed = false;
  this.paused = false;

  this.resizeTimerId_ = null;

  this.playCount = 0;

  // Sound FX.
  this.audioBuffer = null;
  this.soundFx = {};

  // Global web audio context for playing sounds.
  this.audioContext = null;

  // Images.
  this.images = {};
  this.imagesLoaded = 0;

  if (this.isDisabled()) {
    this.setupDisabledRunner();
  } else {
    this.loadImages();
  }
}
window['Runner'] = Runner;


/**
 * Default game width.
 * @const
 */
var DEFAULT_WIDTH = 600;

/**
 * Frames per second.
 * @const
 */
var FPS = 60;

/** @const */
var IS_HIDPI = window.devicePixelRatio > 1;

/** @const */
var IS_IOS = window.navigator.userAgent.indexOf('CriOS') > -1 ||
    window.navigator.userAgent == 'UIWebViewForStaticFileContent';

/** @const */
var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;

/** @const */
var IS_TOUCH_ENABLED = 'ontouchstart' in window;

/**
 * Default game configuration.
 * @enum {number}
 */
Runner.config = {
  ACCELERATION: 0.001,
  BG_CLOUD_SPEED: 0.2,
  BOTTOM_PAD: 10,
  CLEAR_TIME: 3000,
  CLOUD_FREQUENCY: 0.5,
  GAMEOVER_CLEAR_TIME: 750,
  GAP_COEFFICIENT: 0.6,
  GRAVITY: 0.6,
  INITIAL_JUMP_VELOCITY: 12,
  MAX_CLOUDS: 6,
  MAX_OBSTACLE_LENGTH: 3,
  MAX_OBSTACLE_DUPLICATION: 2,
  MAX_SPEED: 13,
  MIN_JUMP_HEIGHT: 35,
  MOBILE_SPEED_COEFFICIENT: 1.2,
  RESOURCE_TEMPLATE_ID: 'audio-resources',
  SPEED: 6,
  SPEED_DROP_COEFFICIENT: 3
};


/**
 * Default dimensions.
 * @enum {string}
 */
Runner.defaultDimensions = {
  WIDTH: DEFAULT_WIDTH,
  HEIGHT: 150
};


/**
 * CSS class names.
 * @enum {string}
 */
Runner.classes = {
  CANVAS: 'runner-canvas',
  CONTAINER: 'runner-container',
  CRASHED: 'crashed',
  ICON: 'icon-offline',
  SNACKBAR: 'snackbar',
  SNACKBAR_SHOW: 'snackbar-show',
  TOUCH_CONTROLLER: 'controller'
};


/**
 * Sprite definition layout of the spritesheet.
 * @enum {Object}
 */
Runner.spriteDefinition = {
  LDPI: {
    CACTUS_LARGE: {x: 332, y: 2},
    CACTUS_SMALL: {x: 228, y: 2},
    CLOUD: {x: 86, y: 2},
    HORIZON: {x: 2, y: 54},
    PTERODACTYL: {x: 134, y: 2},
    RESTART: {x: 2, y: 2},
    TEXT_SPRITE: {x: 484, y: 2},
    TREX: {x: 677, y: 2}
  },
  HDPI: {
    CACTUS_LARGE: {x: 652,y: 2},
    CACTUS_SMALL: {x: 446,y: 2},
    CLOUD: {x: 166,y: 2},
    HORIZON: {x: 2,y: 104},
    PTERODACTYL: {x: 260,y: 2},
    RESTART: {x: 2,y: 2},
    TEXT_SPRITE: {x: 954,y: 2},
    TREX: {x: 1338,y: 2}
  }
};


/**
 * Sound FX. Reference to the ID of the audio tag on interstitial page.
 * @enum {string}
 */
Runner.sounds = {
  BUTTON_PRESS: 'offline-sound-press',
  HIT: 'offline-sound-hit',
  SCORE: 'offline-sound-reached'
};


/**
 * Key code mapping.
 * @enum {Object}
 */
Runner.keycodes = {
  JUMP: {'38': 1, '32': 1},  // Up, spacebar
  DUCK: {'40': 1},  // Down
  RESTART: {'13': 1}  // Enter
};


/**
 * Runner event names.
 * @enum {string}
 */
Runner.events = {
  ANIM_END: 'webkitAnimationEnd',
  CLICK: 'click',
  KEYDOWN: 'keydown',
  KEYUP: 'keyup',
  MOUSEDOWN: 'mousedown',
  MOUSEUP: 'mouseup',
  RESIZE: 'resize',
  TOUCHEND: 'touchend',
  TOUCHSTART: 'touchstart',
  VISIBILITY: 'visibilitychange',
  BLUR: 'blur',
  FOCUS: 'focus',
  LOAD: 'load'
};


Runner.prototype = {
  /**
   * Whether the easter egg has been disabled. CrOS enterprise enrolled devices.
   * @return {boolean}
   */
  isDisabled: function() {
    return loadTimeData && loadTimeData.valueExists('disabledEasterEgg');
  },

  /**
   * For disabled instances, set up a snackbar with the disabled message.
   */
  setupDisabledRunner: function() {
    this.containerEl = document.createElement('div');
    this.containerEl.className = Runner.classes.SNACKBAR;
    this.containerEl.textContent = loadTimeData.getValue('disabledEasterEgg');
    this.outerContainerEl.appendChild(this.containerEl);

    // Show notification when the activation key is pressed.
    document.addEventListener(Runner.events.KEYDOWN, function(e) {
      if (Runner.keycodes.JUMP[e.keyCode]) {
        this.containerEl.classList.add(Runner.classes.SNACKBAR_SHOW);
        document.querySelector('.icon').classList.add('icon-disabled');
      }
    }.bind(this));
  },

  /**
   * Setting individual settings for debugging.
   * @param {string} setting
   * @param {*} value
   */
  updateConfigSetting: function(setting, value) {
    if (setting in this.config && value != undefined) {
      this.config[setting] = value;

      switch (setting) {
        case 'GRAVITY':
        case 'MIN_JUMP_HEIGHT':
        case 'SPEED_DROP_COEFFICIENT':
          this.tRex.config[setting] = value;
          break;
        case 'INITIAL_JUMP_VELOCITY':
          this.tRex.setJumpVelocity(value);
          break;
        case 'SPEED':
          this.setSpeed(value);
          break;
      }
    }
  },

  /**
   * Cache the appropriate image sprite from the page and get the sprite sheet
   * definition.
   */
  loadImages: function() {
    if (IS_HIDPI) {
      Runner.imageSprite = document.getElementById('offline-resources-2x');
      this.spriteDef = Runner.spriteDefinition.HDPI;
    } else {
      Runner.imageSprite = document.getElementById('offline-resources-1x');
      this.spriteDef = Runner.spriteDefinition.LDPI;
    }

    this.init();
  },

  /**
   * Load and decode base 64 encoded sounds.
   */
  loadSounds: function() {
    if (!IS_IOS) {
      this.audioContext = new AudioContext();

      var resourceTemplate =
          document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;

      for (var sound in Runner.sounds) {
        var soundSrc =
            resourceTemplate.getElementById(Runner.sounds[sound]).src;
        soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1);
        var buffer = decodeBase64ToArrayBuffer(soundSrc);

        // Async, so no guarantee of order in array.
        this.audioContext.decodeAudioData(buffer, function(index, audioData) {
            this.soundFx[index] = audioData;
          }.bind(this, sound));
      }
    }
  },

  /**
   * Sets the game speed. Adjust the speed accordingly if on a smaller screen.
   * @param {number} opt_speed
   */
  setSpeed: function(opt_speed) {
    var speed = opt_speed || this.currentSpeed;

    // Reduce the speed on smaller mobile screens.
    if (this.dimensions.WIDTH < DEFAULT_WIDTH) {
      var mobileSpeed = speed * this.dimensions.WIDTH / DEFAULT_WIDTH *
          this.config.MOBILE_SPEED_COEFFICIENT;
      this.currentSpeed = mobileSpeed > speed ? speed : mobileSpeed;
    } else if (opt_speed) {
      this.currentSpeed = opt_speed;
    }
  },

  /**
   * Game initialiser.
   */
  init: function() {
    // Hide the static icon.
    document.querySelector('.' + Runner.classes.ICON).style.visibility =
        'hidden';

    this.adjustDimensions();
    this.setSpeed();

    this.containerEl = document.createElement('div');
    this.containerEl.className = Runner.classes.CONTAINER;

    // Player canvas container.
    this.canvas = createCanvas(this.containerEl, this.dimensions.WIDTH,
        this.dimensions.HEIGHT, Runner.classes.PLAYER);

    this.canvasCtx = this.canvas.getContext('2d');
    this.canvasCtx.fillStyle = '#f7f7f7';
    this.canvasCtx.fill();
    Runner.updateCanvasScaling(this.canvas);

    // Horizon contains clouds, obstacles and the ground.
    this.horizon = new Horizon(this.canvas, this.spriteDef, this.dimensions,
        this.config.GAP_COEFFICIENT);

    // Distance meter
    this.distanceMeter = new DistanceMeter(this.canvas,
          this.spriteDef.TEXT_SPRITE, this.dimensions.WIDTH);

    // Draw t-rex
    this.tRex = new Trex(this.canvas, this.spriteDef.TREX);

    this.outerContainerEl.appendChild(this.containerEl);

    if (IS_MOBILE) {
      this.createTouchController();
    }

    this.startListening();
    this.update();

    window.addEventListener(Runner.events.RESIZE,
        this.debounceResize.bind(this));
  },

  /**
   * Create the touch controller. A div that covers whole screen.
   */
  createTouchController: function() {
    this.touchController = document.createElement('div');
    this.touchController.className = Runner.classes.TOUCH_CONTROLLER;
  },

  /**
   * Debounce the resize event.
   */
  debounceResize: function() {
    if (!this.resizeTimerId_) {
      this.resizeTimerId_ =
          setInterval(this.adjustDimensions.bind(this), 250);
    }
  },

  /**
   * Adjust game space dimensions on resize.
   */
  adjustDimensions: function() {
    clearInterval(this.resizeTimerId_);
    this.resizeTimerId_ = null;

    var boxStyles = window.getComputedStyle(this.outerContainerEl);
    var padding = Number(boxStyles.paddingLeft.substr(0,
        boxStyles.paddingLeft.length - 2));

    this.dimensions.WIDTH = this.outerContainerEl.offsetWidth - padding * 2;

    // Redraw the elements back onto the canvas.
    if (this.canvas) {
      this.canvas.width = this.dimensions.WIDTH;
      this.canvas.height = this.dimensions.HEIGHT;

      Runner.updateCanvasScaling(this.canvas);

      this.distanceMeter.calcXPos(this.dimensions.WIDTH);
      this.clearCanvas();
      this.horizon.update(0, 0, true);
      this.tRex.update(0);

      // Outer container and distance meter.
      if (this.activated || this.crashed) {
        this.containerEl.style.width = this.dimensions.WIDTH + 'px';
        this.containerEl.style.height = this.dimensions.HEIGHT + 'px';
        this.distanceMeter.update(0, Math.ceil(this.distanceRan));
        this.stop();
      } else {
        this.tRex.draw(0, 0);
      }

      // Game over panel.
      if (this.crashed && this.gameOverPanel) {
        this.gameOverPanel.updateDimensions(this.dimensions.WIDTH);
        this.gameOverPanel.draw();
      }
    }
  },

  /**
   * Play the game intro.
   * Canvas container width expands out to the full width.
   */
  playIntro: function() {
    if (!this.started && !this.crashed) {
      this.playingIntro = true;
      this.tRex.playingIntro = true;

      // CSS animation definition.
      var keyframes = '@-webkit-keyframes intro { ' +
            'from { width:' + Trex.config.WIDTH + 'px }' +
            'to { width: ' + this.dimensions.WIDTH + 'px }' +
          '}';
      document.styleSheets[0].insertRule(keyframes, 0);

      this.containerEl.addEventListener(Runner.events.ANIM_END,
          this.startGame.bind(this));

      this.containerEl.style.webkitAnimation = 'intro .4s ease-out 1 both';
      this.containerEl.style.width = this.dimensions.WIDTH + 'px';

      if (this.touchController) {
        this.outerContainerEl.appendChild(this.touchController);
      }
      this.activated = true;
      this.started = true;
    } else if (this.crashed) {
      this.restart();
    }
  },


  /**
   * Update the game status to started.
   */
  startGame: function() {
    this.runningTime = 0;
    this.playingIntro = false;
    this.tRex.playingIntro = false;
    this.containerEl.style.webkitAnimation = '';
    this.playCount++;

    // Handle tabbing off the page. Pause the current game.
    window.addEventListener(Runner.events.VISIBILITY,
          this.onVisibilityChange.bind(this));

    window.addEventListener(Runner.events.BLUR,
          this.onVisibilityChange.bind(this));

    window.addEventListener(Runner.events.FOCUS,
          this.onVisibilityChange.bind(this));
  },

  clearCanvas: function() {
    this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
        this.dimensions.HEIGHT);
  },

  /**
   * Update the game frame.
   */
  update: function() {
    this.drawPending = false;

    var now = getTimeStamp();
    var deltaTime = now - (this.time || now);
    this.time = now;

    if (this.activated) {
      this.clearCanvas();

      if (this.tRex.jumping) {
        this.tRex.updateJump(deltaTime);
      }

      this.runningTime += deltaTime;
      var hasObstacles = this.runningTime > this.config.CLEAR_TIME;

      // First jump triggers the intro.
      if (this.tRex.jumpCount == 1 && !this.playingIntro) {
        this.playIntro();
      }

      // The horizon doesn't move until the intro is over.
      if (this.playingIntro) {
        this.horizon.update(0, this.currentSpeed, hasObstacles);
      } else {
        deltaTime = !this.started ? 0 : deltaTime;
        this.horizon.update(deltaTime, this.currentSpeed, hasObstacles);
      }

      // Check for collisions.
      var collision = hasObstacles &&
          checkForCollision(this.horizon.obstacles[0], this.tRex);

      if (!collision) {
        this.distanceRan += this.currentSpeed * deltaTime / this.msPerFrame;

        if (this.currentSpeed < this.config.MAX_SPEED) {
          this.currentSpeed += this.config.ACCELERATION;
        }
      } else {
        this.gameOver();
      }

      var playAcheivementSound = this.distanceMeter.update(deltaTime,
          Math.ceil(this.distanceRan));

      if (playAcheivementSound) {
        this.playSound(this.soundFx.SCORE);
      }
    }

    if (!this.crashed) {
      this.tRex.update(deltaTime);
      this.raq();
    }
  },

  /**
   * Event handler.
   */
  handleEvent: function(e) {
    return (function(evtType, events) {
      switch (evtType) {
        case events.KEYDOWN:
        case events.TOUCHSTART:
        case events.MOUSEDOWN:
          this.onKeyDown(e);
          break;
        case events.KEYUP:
        case events.TOUCHEND:
        case events.MOUSEUP:
          this.onKeyUp(e);
          break;
      }
    }.bind(this))(e.type, Runner.events);
  },

  /**
   * Bind relevant key / mouse / touch listeners.
   */
  startListening: function() {
    // Keys.
    document.addEventListener(Runner.events.KEYDOWN, this);
    document.addEventListener(Runner.events.KEYUP, this);

    if (IS_MOBILE) {
      // Mobile only touch devices.
      this.touchController.addEventListener(Runner.events.TOUCHSTART, this);
      this.touchController.addEventListener(Runner.events.TOUCHEND, this);
      this.containerEl.addEventListener(Runner.events.TOUCHSTART, this);
    } else {
      // Mouse.
      document.addEventListener(Runner.events.MOUSEDOWN, this);
      document.addEventListener(Runner.events.MOUSEUP, this);
    }
  },

  /**
   * Remove all listeners.
   */
  stopListening: function() {
    document.removeEventListener(Runner.events.KEYDOWN, this);
    document.removeEventListener(Runner.events.KEYUP, this);

    if (IS_MOBILE) {
      this.touchController.removeEventListener(Runner.events.TOUCHSTART, this);
      this.touchController.removeEventListener(Runner.events.TOUCHEND, this);
      this.containerEl.removeEventListener(Runner.events.TOUCHSTART, this);
    } else {
      document.removeEventListener(Runner.events.MOUSEDOWN, this);
      document.removeEventListener(Runner.events.MOUSEUP, this);
    }
  },

  /**
   * Process keydown.
   * @param {Event} e
   */
  onKeyDown: function(e) {
    // Prevent native page scrolling whilst tapping on mobile.
    if (IS_MOBILE) {
      e.preventDefault();
    }

    if (e.target != this.detailsButton) {
      if (!this.crashed && (Runner.keycodes.JUMP[e.keyCode] ||
           e.type == Runner.events.TOUCHSTART)) {
        if (!this.activated) {
          this.loadSounds();
          this.activated = true;
          errorPageController.trackEasterEgg();
        }

        if (!this.tRex.jumping && !this.tRex.ducking) {
          this.playSound(this.soundFx.BUTTON_PRESS);
          this.tRex.startJump(this.currentSpeed);
        }
      }

      if (this.crashed && e.type == Runner.events.TOUCHSTART &&
          e.currentTarget == this.containerEl) {
        this.restart();
      }
    }

    if (this.activated && !this.crashed && Runner.keycodes.DUCK[e.keyCode]) {
      e.preventDefault();
      if (this.tRex.jumping) {
        // Speed drop, activated only when jump key is not pressed.
        this.tRex.setSpeedDrop();
      } else if (!this.tRex.jumping && !this.tRex.ducking) {
        // Duck.
        this.tRex.setDuck(true);
      }
    }
  },


  /**
   * Process key up.
   * @param {Event} e
   */
  onKeyUp: function(e) {
    var keyCode = String(e.keyCode);
    var isjumpKey = Runner.keycodes.JUMP[keyCode] ||
       e.type == Runner.events.TOUCHEND ||
       e.type == Runner.events.MOUSEDOWN;

    if (this.isRunning() && isjumpKey) {
      this.tRex.endJump();
    } else if (Runner.keycodes.DUCK[keyCode]) {
      this.tRex.speedDrop = false;
      this.tRex.setDuck(false);
    } else if (this.crashed) {
      // Check that enough time has elapsed before allowing jump key to restart.
      var deltaTime = getTimeStamp() - this.time;

      if (Runner.keycodes.RESTART[keyCode] || this.isLeftClickOnCanvas(e) ||
          (deltaTime >= this.config.GAMEOVER_CLEAR_TIME &&
          Runner.keycodes.JUMP[keyCode])) {
        this.restart();
      }
    } else if (this.paused && isjumpKey) {
      // Reset the jump state
      this.tRex.reset();
      this.play();
    }
  },

  /**
   * Returns whether the event was a left click on canvas.
   * On Windows right click is registered as a click.
   * @param {Event} e
   * @return {boolean}
   */
  isLeftClickOnCanvas: function(e) {
    return e.button != null && e.button < 2 &&
        e.type == Runner.events.MOUSEUP && e.target == this.canvas;
  },

  /**
   * RequestAnimationFrame wrapper.
   */
  raq: function() {
    if (!this.drawPending) {
      this.drawPending = true;
      this.raqId = requestAnimationFrame(this.update.bind(this));
    }
  },

  /**
   * Whether the game is running.
   * @return {boolean}
   */
  isRunning: function() {
    return !!this.raqId;
  },

  /**
   * Game over state.
   */
  gameOver: function() {
    this.playSound(this.soundFx.HIT);
    vibrate(200);

    this.stop();
    this.crashed = true;
    this.distanceMeter.acheivement = false;

    this.tRex.update(100, Trex.status.CRASHED);

    // Game over panel.
    if (!this.gameOverPanel) {
      this.gameOverPanel = new GameOverPanel(this.canvas,
          this.spriteDef.TEXT_SPRITE, this.spriteDef.RESTART,
          this.dimensions);
    } else {
      this.gameOverPanel.draw();
    }

    // Update the high score.
    if (this.distanceRan > this.highestScore) {
      this.highestScore = Math.ceil(this.distanceRan);
      this.distanceMeter.setHighScore(this.highestScore);
    }

    // Reset the time clock.
    this.time = getTimeStamp();
  },

  stop: function() {
    this.activated = false;
    this.paused = true;
    cancelAnimationFrame(this.raqId);
    this.raqId = 0;
  },

  play: function() {
    if (!this.crashed) {
      this.activated = true;
      this.paused = false;
      this.tRex.update(0, Trex.status.RUNNING);
      this.time = getTimeStamp();
      this.update();
    }
  },

  restart: function() {
    if (!this.raqId) {
      this.playCount++;
      this.runningTime = 0;
      this.activated = true;
      this.crashed = false;
      this.distanceRan = 0;
      this.setSpeed(this.config.SPEED);

      this.time = getTimeStamp();
      this.containerEl.classList.remove(Runner.classes.CRASHED);
      this.clearCanvas();
      this.distanceMeter.reset(this.highestScore);
      this.horizon.reset();
      this.tRex.reset();
      this.playSound(this.soundFx.BUTTON_PRESS);

      this.update();
    }
  },

  /**
   * Pause the game if the tab is not in focus.
   */
  onVisibilityChange: function(e) {
    if (document.hidden || document.webkitHidden || e.type == 'blur') {
      this.stop();
    } else if (!this.crashed) {
      this.tRex.reset();
      this.play();
    }
  },

  /**
   * Play a sound.
   * @param {SoundBuffer} soundBuffer
   */
  playSound: function(soundBuffer) {
    if (soundBuffer) {
      var sourceNode = this.audioContext.createBufferSource();
      sourceNode.buffer = soundBuffer;
      sourceNode.connect(this.audioContext.destination);
      sourceNode.start(0);
    }
  }
};


/**
 * Updates the canvas size taking into
 * account the backing store pixel ratio and
 * the device pixel ratio.
 *
 * See article by Paul Lewis:
 * http://www.html5rocks.com/en/tutorials/canvas/hidpi/
 *
 * @param {HTMLCanvasElement} canvas
 * @param {number} opt_width
 * @param {number} opt_height
 * @return {boolean} Whether the canvas was scaled.
 */
Runner.updateCanvasScaling = function(canvas, opt_width, opt_height) {
  var context = canvas.getContext('2d');

  // Query the various pixel ratios
  var devicePixelRatio = Math.floor(window.devicePixelRatio) || 1;
  var backingStoreRatio = Math.floor(context.webkitBackingStorePixelRatio) || 1;
  var ratio = devicePixelRatio / backingStoreRatio;

  // Upscale the canvas if the two ratios don't match
  if (devicePixelRatio !== backingStoreRatio) {
    var oldWidth = opt_width || canvas.width;
    var oldHeight = opt_height || canvas.height;

    canvas.width = oldWidth * ratio;
    canvas.height = oldHeight * ratio;

    canvas.style.width = oldWidth + 'px';
    canvas.style.height = oldHeight + 'px';

    // Scale the context to counter the fact that we've manually scaled
    // our canvas element.
    context.scale(ratio, ratio);
    return true;
  } else if (devicePixelRatio == 1) {
    // Reset the canvas width / height. Fixes scaling bug when the page is
    // zoomed and the devicePixelRatio changes accordingly.
    canvas.style.width = canvas.width + 'px';
    canvas.style.height = canvas.height + 'px';
  }
  return false;
};


/**
 * Get random number.
 * @param {number} min
 * @param {number} max
 * @param {number}
 */
function getRandomNum(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}


/**
 * Vibrate on mobile devices.
 * @param {number} duration Duration of the vibration in milliseconds.
 */
function vibrate(duration) {
  if (IS_MOBILE && window.navigator.vibrate) {
    window.navigator.vibrate(duration);
  }
}


/**
 * Create canvas element.
 * @param {HTMLElement} container Element to append canvas to.
 * @param {number} width
 * @param {number} height
 * @param {string} opt_classname
 * @return {HTMLCanvasElement}
 */
function createCanvas(container, width, height, opt_classname) {
  var canvas = document.createElement('canvas');
  canvas.className = opt_classname ? Runner.classes.CANVAS + ' ' +
      opt_classname : Runner.classes.CANVAS;
  canvas.width = width;
  canvas.height = height;
  container.appendChild(canvas);

  return canvas;
}


/**
 * Decodes the base 64 audio to ArrayBuffer used by Web Audio.
 * @param {string} base64String
 */
function decodeBase64ToArrayBuffer(base64String) {
  var len = (base64String.length / 4) * 3;
  var str = atob(base64String);
  var arrayBuffer = new ArrayBuffer(len);
  var bytes = new Uint8Array(arrayBuffer);

  for (var i = 0; i < len; i++) {
    bytes[i] = str.charCodeAt(i);
  }
  return bytes.buffer;
}


/**
 * Return the current timestamp.
 * @return {number}
 */
function getTimeStamp() {
  return IS_IOS ? new Date().getTime() : performance.now();
}


//******************************************************************************


/**
 * Game over panel.
 * @param {!HTMLCanvasElement} canvas
 * @param {Object} textImgPos
 * @param {Object} restartImgPos
 * @param {!Object} dimensions Canvas dimensions.
 * @constructor
 */
function GameOverPanel(canvas, textImgPos, restartImgPos, dimensions) {
  this.canvas = canvas;
  this.canvasCtx = canvas.getContext('2d');
  this.canvasDimensions = dimensions;
  this.textImgPos = textImgPos;
  this.restartImgPos = restartImgPos;
  this.draw();
};


/**
 * Dimensions used in the panel.
 * @enum {number}
 */
GameOverPanel.dimensions = {
  TEXT_X: 0,
  TEXT_Y: 13,
  TEXT_WIDTH: 191,
  TEXT_HEIGHT: 11,
  RESTART_WIDTH: 36,
  RESTART_HEIGHT: 32
};


GameOverPanel.prototype = {
  /**
   * Update the panel dimensions.
   * @param {number} width New canvas width.
   * @param {number} opt_height Optional new canvas height.
   */
  updateDimensions: function(width, opt_height) {
    this.canvasDimensions.WIDTH = width;
    if (opt_height) {
      this.canvasDimensions.HEIGHT = opt_height;
    }
  },

  /**
   * Draw the panel.
   */
  draw: function() {
    var dimensions = GameOverPanel.dimensions;

    var centerX = this.canvasDimensions.WIDTH / 2;

    // Game over text.
    var textSourceX = dimensions.TEXT_X;
    var textSourceY = dimensions.TEXT_Y;
    var textSourceWidth = dimensions.TEXT_WIDTH;
    var textSourceHeight = dimensions.TEXT_HEIGHT;

    var textTargetX = Math.round(centerX - (dimensions.TEXT_WIDTH / 2));
    var textTargetY = Math.round((this.canvasDimensions.HEIGHT - 25) / 3);
    var textTargetWidth = dimensions.TEXT_WIDTH;
    var textTargetHeight = dimensions.TEXT_HEIGHT;

    var restartSourceWidth = dimensions.RESTART_WIDTH;
    var restartSourceHeight = dimensions.RESTART_HEIGHT;
    var restartTargetX = centerX - (dimensions.RESTART_WIDTH / 2);
    var restartTargetY = this.canvasDimensions.HEIGHT / 2;

    if (IS_HIDPI) {
      textSourceY *= 2;
      textSourceX *= 2;
      textSourceWidth *= 2;
      textSourceHeight *= 2;
      restartSourceWidth *= 2;
      restartSourceHeight *= 2;
    }

    textSourceX += this.textImgPos.x;
    textSourceY += this.textImgPos.y;

    // Game over text from sprite.
    this.canvasCtx.drawImage(Runner.imageSprite,
        textSourceX, textSourceY, textSourceWidth, textSourceHeight,
        textTargetX, textTargetY, textTargetWidth, textTargetHeight);

    // Restart button.
    this.canvasCtx.drawImage(Runner.imageSprite,
        this.restartImgPos.x, this.restartImgPos.y,
        restartSourceWidth, restartSourceHeight,
        restartTargetX, restartTargetY, dimensions.RESTART_WIDTH,
        dimensions.RESTART_HEIGHT);
  }
};


//******************************************************************************

/**
 * Check for a collision.
 * @param {!Obstacle} obstacle
 * @param {!Trex} tRex T-rex object.
 * @param {HTMLCanvasContext} opt_canvasCtx Optional canvas context for drawing
 *    collision boxes.
 * @return {Array<CollisionBox>}
 */
function checkForCollision(obstacle, tRex, opt_canvasCtx) {
  var obstacleBoxXPos = Runner.defaultDimensions.WIDTH + obstacle.xPos;

  // Adjustments are made to the bounding box as there is a 1 pixel white
  // border around the t-rex and obstacles.
  var tRexBox = new CollisionBox(
      tRex.xPos + 1,
      tRex.yPos + 1,
      tRex.config.WIDTH - 2,
      tRex.config.HEIGHT - 2);

  var obstacleBox = new CollisionBox(
      obstacle.xPos + 1,
      obstacle.yPos + 1,
      obstacle.typeConfig.width * obstacle.size - 2,
      obstacle.typeConfig.height - 2);

  // Debug outer box
  if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox);
  }

  // Simple outer bounds check.
  if (boxCompare(tRexBox, obstacleBox)) {
    var collisionBoxes = obstacle.collisionBoxes;
    var tRexCollisionBoxes = tRex.ducking ?
        Trex.collisionBoxes.DUCKING : Trex.collisionBoxes.RUNNING;

    // Detailed axis aligned box check.
    for (var t = 0; t < tRexCollisionBoxes.length; t++) {
      for (var i = 0; i < collisionBoxes.length; i++) {
        // Adjust the box to actual positions.
        var adjTrexBox =
            createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
        var adjObstacleBox =
            createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
        var crashed = boxCompare(adjTrexBox, adjObstacleBox);

        // Draw boxes for debug.
        if (opt_canvasCtx) {
          drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox);
        }

        if (crashed) {
          return [adjTrexBox, adjObstacleBox];
        }
      }
    }
  }
  return false;
};


/**
 * Adjust the collision box.
 * @param {!CollisionBox} box The original box.
 * @param {!CollisionBox} adjustment Adjustment box.
 * @return {CollisionBox} The adjusted collision box object.
 */
function createAdjustedCollisionBox(box, adjustment) {
  return new CollisionBox(
      box.x + adjustment.x,
      box.y + adjustment.y,
      box.width,
      box.height);
};


/**
 * Draw the collision boxes for debug.
 */
function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
  canvasCtx.save();
  canvasCtx.strokeStyle = '#f00';
  canvasCtx.strokeRect(tRexBox.x, tRexBox.y, tRexBox.width, tRexBox.height);

  canvasCtx.strokeStyle = '#0f0';
  canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y,
      obstacleBox.width, obstacleBox.height);
  canvasCtx.restore();
};


/**
 * Compare two collision boxes for a collision.
 * @param {CollisionBox} tRexBox
 * @param {CollisionBox} obstacleBox
 * @return {boolean} Whether the boxes intersected.
 */
function boxCompare(tRexBox, obstacleBox) {
  var crashed = false;
  var tRexBoxX = tRexBox.x;
  var tRexBoxY = tRexBox.y;

  var obstacleBoxX = obstacleBox.x;
  var obstacleBoxY = obstacleBox.y;

  // Axis-Aligned Bounding Box method.
  if (tRexBox.x < obstacleBoxX + obstacleBox.width &&
      tRexBox.x + tRexBox.width > obstacleBoxX &&
      tRexBox.y < obstacleBox.y + obstacleBox.height &&
      tRexBox.height + tRexBox.y > obstacleBox.y) {
    crashed = true;
  }

  return crashed;
};


//******************************************************************************

/**
 * Collision box object.
 * @param {number} x X position.
 * @param {number} y Y Position.
 * @param {number} w Width.
 * @param {number} h Height.
 */
function CollisionBox(x, y, w, h) {
  this.x = x;
  this.y = y;
  this.width = w;
  this.height = h;
};


//******************************************************************************

/**
 * Obstacle.
 * @param {HTMLCanvasCtx} canvasCtx
 * @param {Obstacle.type} type
 * @param {Object} spritePos Obstacle position in sprite.
 * @param {Object} dimensions
 * @param {number} gapCoefficient Mutipler in determining the gap.
 * @param {number} speed
 */
function Obstacle(canvasCtx, type, spriteImgPos, dimensions,
    gapCoefficient, speed) {

  this.canvasCtx = canvasCtx;
  this.spritePos = spriteImgPos;
  this.typeConfig = type;
  this.gapCoefficient = gapCoefficient;
  this.size = getRandomNum(1, Obstacle.MAX_OBSTACLE_LENGTH);
  this.dimensions = dimensions;
  this.remove = false;
  this.xPos = 0;
  this.yPos = 0;
  this.width = 0;
  this.collisionBoxes = [];
  this.gap = 0;
  this.speedOffset = 0;

  // For animated obstacles.
  this.currentFrame = 0;
  this.timer = 0;

  this.init(speed);
};

/**
 * Coefficient for calculating the maximum gap.
 * @const
 */
Obstacle.MAX_GAP_COEFFICIENT = 1.5;

/**
 * Maximum obstacle grouping count.
 * @const
 */
Obstacle.MAX_OBSTACLE_LENGTH = 3,


Obstacle.prototype = {
  /**
   * Initialise the DOM for the obstacle.
   * @param {number} speed
   */
  init: function(speed) {
    this.cloneCollisionBoxes();

    // Only allow sizing if we're at the right speed.
    if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
      this.size = 1;
    }

    this.width = this.typeConfig.width * this.size;
    this.xPos = this.dimensions.WIDTH - this.width;

    // Check if obstacle can be positioned at various heights.
    if (Array.isArray(this.typeConfig.yPos))  {
      var yPosConfig = IS_MOBILE ? this.typeConfig.yPosMobile :
          this.typeConfig.yPos;
      this.yPos = yPosConfig[getRandomNum(0, yPosConfig.length - 1)];
    } else {
      this.yPos = this.typeConfig.yPos;
    }

    this.draw();

    // Make collision box adjustments,
    // Central box is adjusted to the size as one box.
    //      ____        ______        ________
    //    _|   |-|    _|     |-|    _|       |-|
    //   | |<->| |   | |<--->| |   | |<----->| |
    //   | | 1 | |   | |  2  | |   | |   3   | |
    //   |_|___|_|   |_|_____|_|   |_|_______|_|
    //
    if (this.size > 1) {
      this.collisionBoxes[1].width = this.width - this.collisionBoxes[0].width -
          this.collisionBoxes[2].width;
      this.collisionBoxes[2].x = this.width - this.collisionBoxes[2].width;
    }

    // For obstacles that go at a different speed from the horizon.
    if (this.typeConfig.speedOffset) {
      this.speedOffset = Math.random() > 0.5 ? this.typeConfig.speedOffset :
          -this.typeConfig.speedOffset;
    }

    this.gap = this.getGap(this.gapCoefficient, speed);
  },

  /**
   * Draw and crop based on size.
   */
  draw: function() {
    var sourceWidth = this.typeConfig.width;
    var sourceHeight = this.typeConfig.height;

    if (IS_HIDPI) {
      sourceWidth = sourceWidth * 2;
      sourceHeight = sourceHeight * 2;
    }

    // X position in sprite.
    var sourceX = (sourceWidth * this.size) * (0.5 * (this.size - 1)) +
        this.spritePos.x;

    // Animation frames.
    if (this.currentFrame > 0) {
      sourceX += sourceWidth * this.currentFrame;
    }

    this.canvasCtx.drawImage(Runner.imageSprite,
      sourceX, this.spritePos.y,
      sourceWidth * this.size, sourceHeight,
      this.xPos, this.yPos,
      this.typeConfig.width * this.size, this.typeConfig.height);
  },

  /**
   * Obstacle frame update.
   * @param {number} deltaTime
   * @param {number} speed
   */
  update: function(deltaTime, speed) {
    if (!this.remove) {
      if (this.typeConfig.speedOffset) {
        speed += this.speedOffset;
      }
      this.xPos -= Math.floor((speed * FPS / 1000) * deltaTime);

      // Update frame
      if (this.typeConfig.numFrames) {
        this.timer += deltaTime;
        if (this.timer >= this.typeConfig.frameRate) {
          this.currentFrame =
              this.currentFrame == this.typeConfig.numFrames - 1 ?
              0 : this.currentFrame + 1;
          this.timer = 0;
        }
      }
      this.draw();

      if (!this.isVisible()) {
        this.remove = true;
      }
    }
  },

  /**
   * Calculate a random gap size.
   * - Minimum gap gets wider as speed increses
   * @param {number} gapCoefficient
   * @param {number} speed
   * @return {number} The gap size.
   */
  getGap: function(gapCoefficient, speed) {
    var minGap = Math.round(this.width * speed +
          this.typeConfig.minGap * gapCoefficient);
    var maxGap = Math.round(minGap * Obstacle.MAX_GAP_COEFFICIENT);
    return getRandomNum(minGap, maxGap);
  },

  /**
   * Check if obstacle is visible.
   * @return {boolean} Whether the obstacle is in the game area.
   */
  isVisible: function() {
    return this.xPos + this.width > 0;
  },

  /**
   * Make a copy of the collision boxes, since these will change based on
   * obstacle type and size.
   */
  cloneCollisionBoxes: function() {
    var collisionBoxes = this.typeConfig.collisionBoxes;

    for (var i = collisionBoxes.length - 1; i >= 0; i--) {
      this.collisionBoxes[i] = new CollisionBox(collisionBoxes[i].x,
          collisionBoxes[i].y, collisionBoxes[i].width,
          collisionBoxes[i].height);
    }
  }
};


/**
 * Obstacle definitions.
 * minGap: minimum pixel space betweeen obstacles.
 * multipleSpeed: Speed at which multiples are allowed.
 * speedOffset: speed faster / slower than the horizon.
 * minSpeed: Minimum speed which the obstacle can make an appearance.
 */
Obstacle.types = [
  {
    type: 'CACTUS_SMALL',
    width: 17,
    height: 35,
    yPos: 105,
    multipleSpeed: 4,
    minGap: 120,
    minSpeed: 0,
    collisionBoxes: [
      new CollisionBox(0, 7, 5, 27),
      new CollisionBox(4, 0, 6, 34),
      new CollisionBox(10, 4, 7, 14)
    ]
  },
  {
    type: 'CACTUS_LARGE',
    width: 25,
    height: 50,
    yPos: 90,
    multipleSpeed: 7,
    minGap: 120,
    minSpeed: 0,
    collisionBoxes: [
      new CollisionBox(0, 12, 7, 38),
      new CollisionBox(8, 0, 7, 49),
      new CollisionBox(13, 10, 10, 38)
    ]
  },
  {
    type: 'PTERODACTYL',
    width: 46,
    height: 40,
    yPos: [ 100, 75, 50 ], // Variable height.
    yPosMobile: [ 100, 50 ], // Variable height mobile.
    multipleSpeed: 999,
    minSpeed: 8.5,
    minGap: 150,
    collisionBoxes: [
      new CollisionBox(15, 15, 16, 5),
      new CollisionBox(18, 21, 24, 6),
      new CollisionBox(2, 14, 4, 3),
      new CollisionBox(6, 10, 4, 7),
      new CollisionBox(10, 8, 6, 9)
    ],
    numFrames: 2,
    frameRate: 1000/6,
    speedOffset: .8
  }
];


//******************************************************************************
/**
 * T-rex game character.
 * @param {HTMLCanvas} canvas
 * @param {Object} spritePos Positioning within image sprite.
 * @constructor
 */
function Trex(canvas, spritePos) {
  this.canvas = canvas;
  this.canvasCtx = canvas.getContext('2d');
  this.spritePos = spritePos;
  this.xPos = 0;
  this.yPos = 0;
  // Position when on the ground.
  this.groundYPos = 0;
  this.currentFrame = 0;
  this.currentAnimFrames = [];
  this.blinkDelay = 0;
  this.animStartTime = 0;
  this.timer = 0;
  this.msPerFrame = 1000 / FPS;
  this.config = Trex.config;
  // Current status.
  this.status = Trex.status.WAITING;

  this.jumping = false;
  this.ducking = false;
  this.jumpVelocity = 0;
  this.reachedMinHeight = false;
  this.speedDrop = false;
  this.jumpCount = 0;
  this.jumpspotX = 0;

  this.init();
};


/**
 * T-rex player config.
 * @enum {number}
 */
Trex.config = {
  DROP_VELOCITY: -5,
  GRAVITY: 0.6,
  HEIGHT: 47,
  HEIGHT_DUCK: 25,
  INIITAL_JUMP_VELOCITY: -10,
  INTRO_DURATION: 1500,
  MAX_JUMP_HEIGHT: 30,
  MIN_JUMP_HEIGHT: 30,
  SPEED_DROP_COEFFICIENT: 3,
  SPRITE_WIDTH: 262,
  START_X_POS: 50,
  WIDTH: 44,
  WIDTH_DUCK: 59
};


/**
 * Used in collision detection.
 * @type {Array<CollisionBox>}
 */
Trex.collisionBoxes = {
  DUCKING: [
    new CollisionBox(1, 18, 55, 25)
  ],
  RUNNING: [
    new CollisionBox(22, 0, 17, 16),
    new CollisionBox(1, 18, 30, 9),
    new CollisionBox(10, 35, 14, 8),
    new CollisionBox(1, 24, 29, 5),
    new CollisionBox(5, 30, 21, 4),
    new CollisionBox(9, 34, 15, 4)
  ]
};


/**
 * Animation states.
 * @enum {string}
 */
Trex.status = {
  CRASHED: 'CRASHED',
  DUCKING: 'DUCKING',
  JUMPING: 'JUMPING',
  RUNNING: 'RUNNING',
  WAITING: 'WAITING'
};

/**
 * Blinking coefficient.
 * @const
 */
Trex.BLINK_TIMING = 7000;


/**
 * Animation config for different states.
 * @enum {Object}
 */
Trex.animFrames = {
  WAITING: {
    frames: [44, 0],
    msPerFrame: 1000 / 3
  },
  RUNNING: {
    frames: [88, 132],
    msPerFrame: 1000 / 12
  },
  CRASHED: {
    frames: [220],
    msPerFrame: 1000 / 60
  },
  JUMPING: {
    frames: [0],
    msPerFrame: 1000 / 60
  },
  DUCKING: {
    frames: [262, 321],
    msPerFrame: 1000 / 8
  }
};


Trex.prototype = {
  /**
   * T-rex player initaliser.
   * Sets the t-rex to blink at random intervals.
   */
  init: function() {
    this.blinkDelay = this.setBlinkDelay();
    this.groundYPos = Runner.defaultDimensions.HEIGHT - this.config.HEIGHT -
        Runner.config.BOTTOM_PAD;
    this.yPos = this.groundYPos;
    this.minJumpHeight = this.groundYPos - this.config.MIN_JUMP_HEIGHT;

    this.draw(0, 0);
    this.update(0, Trex.status.WAITING);
  },

  /**
   * Setter for the jump velocity.
   * The approriate drop velocity is also set.
   */
  setJumpVelocity: function(setting) {
    this.config.INIITAL_JUMP_VELOCITY = -setting;
    this.config.DROP_VELOCITY = -setting / 2;
  },

  /**
   * Set the animation status.
   * @param {!number} deltaTime
   * @param {Trex.status} status Optional status to switch to.
   */
  update: function(deltaTime, opt_status) {
    this.timer += deltaTime;

    // Update the status.
    if (opt_status) {
      this.status = opt_status;
      this.currentFrame = 0;
      this.msPerFrame = Trex.animFrames[opt_status].msPerFrame;
      this.currentAnimFrames = Trex.animFrames[opt_status].frames;

      if (opt_status == Trex.status.WAITING) {
        this.animStartTime = getTimeStamp();
        this.setBlinkDelay();
      }
    }

    // Game intro animation, T-rex moves in from the left.
    if (this.playingIntro && this.xPos < this.config.START_X_POS) {
      this.xPos += Math.round((this.config.START_X_POS /
          this.config.INTRO_DURATION) * deltaTime);
    }

    if (this.status == Trex.status.WAITING) {
      this.blink(getTimeStamp());
    } else {
      this.draw(this.currentAnimFrames[this.currentFrame], 0);
    }

    // Update the frame position.
    if (this.timer >= this.msPerFrame) {
      this.currentFrame = this.currentFrame ==
          this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
      this.timer = 0;
    }

    // Speed drop becomes duck if the down key is still being pressed.
    if (this.speedDrop && this.yPos == this.groundYPos) {
      this.speedDrop = false;
      this.setDuck(true);
    }
  },

  /**
   * Draw the t-rex to a particular position.
   * @param {number} x
   * @param {number} y
   */
  draw: function(x, y) {
    var sourceX = x;
    var sourceY = y;
    var sourceWidth = this.ducking && this.status != Trex.status.CRASHED ?
        this.config.WIDTH_DUCK : this.config.WIDTH;
    var sourceHeight = this.config.HEIGHT;

    if (IS_HIDPI) {
      sourceX *= 2;
      sourceY *= 2;
      sourceWidth *= 2;
      sourceHeight *= 2;
    }

    // Adjustments for sprite sheet position.
    sourceX += this.spritePos.x;
    sourceY += this.spritePos.y;

    // Ducking.
    if (this.ducking && this.status != Trex.status.CRASHED) {
      this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY,
          sourceWidth, sourceHeight,
          this.xPos, this.yPos,
          this.config.WIDTH_DUCK, this.config.HEIGHT);
    } else {
      // Crashed whilst ducking. Trex is standing up so needs adjustment.
      if (this.ducking && this.status == Trex.status.CRASHED) {
        this.xPos++;
      }
      // Standing / running
      this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY,
          sourceWidth, sourceHeight,
          this.xPos, this.yPos,
          this.config.WIDTH, this.config.HEIGHT);
    }
  },

  /**
   * Sets a random time for the blink to happen.
   */
  setBlinkDelay: function() {
    this.blinkDelay = Math.ceil(Math.random() * Trex.BLINK_TIMING);
  },

  /**
   * Make t-rex blink at random intervals.
   * @param {number} time Current time in milliseconds.
   */
  blink: function(time) {
    var deltaTime = time - this.animStartTime;

    if (deltaTime >= this.blinkDelay) {
      this.draw(this.currentAnimFrames[this.currentFrame], 0);

      if (this.currentFrame == 1) {
        // Set new random delay to blink.
        this.setBlinkDelay();
        this.animStartTime = time;
      }
    }
  },

  /**
   * Initialise a jump.
   * @param {number} speed
   */
  startJump: function(speed) {
    if (!this.jumping) {
      this.update(0, Trex.status.JUMPING);
      // Tweak the jump velocity based on the speed.
      this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY - (speed / 10);
      this.jumping = true;
      this.reachedMinHeight = false;
      this.speedDrop = false;
    }
  },

  /**
   * Jump is complete, falling down.
   */
  endJump: function() {
    if (this.reachedMinHeight &&
        this.jumpVelocity < this.config.DROP_VELOCITY) {
      this.jumpVelocity = this.config.DROP_VELOCITY;
    }
  },

  /**
   * Update frame for a jump.
   * @param {number} deltaTime
   * @param {number} speed
   */
  updateJump: function(deltaTime, speed) {
    var msPerFrame = Trex.animFrames[this.status].msPerFrame;
    var framesElapsed = deltaTime / msPerFrame;

    // Speed drop makes Trex fall faster.
    if (this.speedDrop) {
      this.yPos += Math.round(this.jumpVelocity *
          this.config.SPEED_DROP_COEFFICIENT * framesElapsed);
    } else {
      this.yPos += Math.round(this.jumpVelocity * framesElapsed);
    }

    this.jumpVelocity += this.config.GRAVITY * framesElapsed;

    // Minimum height has been reached.
    if (this.yPos < this.minJumpHeight || this.speedDrop) {
      this.reachedMinHeight = true;
    }

    // Reached max height
    if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
      this.endJump();
    }

    // Back down at ground level. Jump completed.
    if (this.yPos > this.groundYPos) {
      this.reset();
      this.jumpCount++;
    }

    this.update(deltaTime);
  },

  /**
   * Set the speed drop. Immediately cancels the current jump.
   */
  setSpeedDrop: function() {
    this.speedDrop = true;
    this.jumpVelocity = 1;
  },

  /**
   * @param {boolean} isDucking.
   */
  setDuck: function(isDucking) {
    if (isDucking && this.status != Trex.status.DUCKING) {
      this.update(0, Trex.status.DUCKING);
      this.ducking = true;
    } else if (this.status == Trex.status.DUCKING) {
      this.update(0, Trex.status.RUNNING);
      this.ducking = false;
    }
  },

  /**
   * Reset the t-rex to running at start of game.
   */
  reset: function() {
    this.yPos = this.groundYPos;
    this.jumpVelocity = 0;
    this.jumping = false;
    this.ducking = false;
    this.update(0, Trex.status.RUNNING);
    this.midair = false;
    this.speedDrop = false;
    this.jumpCount = 0;
  }
};


//******************************************************************************

/**
 * Handles displaying the distance meter.
 * @param {!HTMLCanvasElement} canvas
 * @param {Object} spritePos Image position in sprite.
 * @param {number} canvasWidth
 * @constructor
 */
function DistanceMeter(canvas, spritePos, canvasWidth) {
  this.canvas = canvas;
  this.canvasCtx = canvas.getContext('2d');
  this.image = Runner.imageSprite;
  this.spritePos = spritePos;
  this.x = 0;
  this.y = 5;

  this.currentDistance = 0;
  this.maxScore = 0;
  this.highScore = 0;
  this.container = null;

  this.digits = [];
  this.acheivement = false;
  this.defaultString = '';
  this.flashTimer = 0;
  this.flashIterations = 0;

  this.config = DistanceMeter.config;
  this.maxScoreUnits = this.config.MAX_DISTANCE_UNITS;
  this.init(canvasWidth);
};


/**
 * @enum {number}
 */
DistanceMeter.dimensions = {
  WIDTH: 10,
  HEIGHT: 13,
  DEST_WIDTH: 11
};


/**
 * Y positioning of the digits in the sprite sheet.
 * X position is always 0.
 * @type {Array<number>}
 */
DistanceMeter.yPos = [0, 13, 27, 40, 53, 67, 80, 93, 107, 120];


/**
 * Distance meter config.
 * @enum {number}
 */
DistanceMeter.config = {
  // Number of digits.
  MAX_DISTANCE_UNITS: 5,

  // Distance that causes achievement animation.
  ACHIEVEMENT_DISTANCE: 100,

  // Used for conversion from pixel distance to a scaled unit.
  COEFFICIENT: 0.025,

  // Flash duration in milliseconds.
  FLASH_DURATION: 1000 / 4,

  // Flash iterations for achievement animation.
  FLASH_ITERATIONS: 3
};


DistanceMeter.prototype = {
  /**
   * Initialise the distance meter to '00000'.
   * @param {number} width Canvas width in px.
   */
  init: function(width) {
    var maxDistanceStr = '';

    this.calcXPos(width);
    this.maxScore = this.maxScoreUnits;
    for (var i = 0; i < this.maxScoreUnits; i++) {
      this.draw(i, 0);
      this.defaultString += '0';
      maxDistanceStr += '9';
    }

    this.maxScore = parseInt(maxDistanceStr);
  },

  /**
   * Calculate the xPos in the canvas.
   * @param {number} canvasWidth
   */
  calcXPos: function(canvasWidth) {
    this.x = canvasWidth - (DistanceMeter.dimensions.DEST_WIDTH *
        (this.maxScoreUnits + 1));
  },

  /**
   * Draw a digit to canvas.
   * @param {number} digitPos Position of the digit.
   * @param {number} value Digit value 0-9.
   * @param {boolean} opt_highScore Whether drawing the high score.
   */
  draw: function(digitPos, value, opt_highScore) {
    var sourceWidth = DistanceMeter.dimensions.WIDTH;
    var sourceHeight = DistanceMeter.dimensions.HEIGHT;
    var sourceX = DistanceMeter.dimensions.WIDTH * value;
    var sourceY = 0;

    var targetX = digitPos * DistanceMeter.dimensions.DEST_WIDTH;
    var targetY = this.y;
    var targetWidth = DistanceMeter.dimensions.WIDTH;
    var targetHeight = DistanceMeter.dimensions.HEIGHT;

    // For high DPI we 2x source values.
    if (IS_HIDPI) {
      sourceWidth *= 2;
      sourceHeight *= 2;
      sourceX *= 2;
    }

    sourceX += this.spritePos.x;
    sourceY += this.spritePos.y;

    this.canvasCtx.save();

    if (opt_highScore) {
      // Left of the current score.
      var highScoreX = this.x - (this.maxScoreUnits * 2) *
          DistanceMeter.dimensions.WIDTH;
      this.canvasCtx.translate(highScoreX, this.y);
    } else {
      this.canvasCtx.translate(this.x, this.y);
    }

    this.canvasCtx.drawImage(this.image, sourceX, sourceY,
        sourceWidth, sourceHeight,
        targetX, targetY,
        targetWidth, targetHeight
      );

    this.canvasCtx.restore();
  },

  /**
   * Covert pixel distance to a 'real' distance.
   * @param {number} distance Pixel distance ran.
   * @return {number} The 'real' distance ran.
   */
  getActualDistance: function(distance) {
    return distance ? Math.round(distance * this.config.COEFFICIENT) : 0;
  },

  /**
   * Update the distance meter.
   * @param {number} distance
   * @param {number} deltaTime
   * @return {boolean} Whether the acheivement sound fx should be played.
   */
  update: function(deltaTime, distance) {
    var paint = true;
    var playSound = false;

    if (!this.acheivement) {
      distance = this.getActualDistance(distance);

      // Score has gone beyond the initial digit count.
      if (distance > this.maxScore && this.maxScoreUnits ==
        this.config.MAX_DISTANCE_UNITS) {
        this.maxScoreUnits++;
        this.maxScore = parseInt(this.maxScore + '9');
      } else {
        this.distance = 0;
      }

      if (distance > 0) {
        // Acheivement unlocked
        if (distance % this.config.ACHIEVEMENT_DISTANCE == 0) {
          // Flash score and play sound.
          this.acheivement = true;
          this.flashTimer = 0;
          playSound = true;
        }

        // Create a string representation of the distance with leading 0.
        var distanceStr = (this.defaultString +
            distance).substr(-this.maxScoreUnits);
        this.digits = distanceStr.split('');
      } else {
        this.digits = this.defaultString.split('');
      }
    } else {
      // Control flashing of the score on reaching acheivement.
      if (this.flashIterations <= this.config.FLASH_ITERATIONS) {
        this.flashTimer += deltaTime;

        if (this.flashTimer < this.config.FLASH_DURATION) {
          paint = false;
        } else if (this.flashTimer >
            this.config.FLASH_DURATION * 2) {
          this.flashTimer = 0;
          this.flashIterations++;
        }
      } else {
        this.acheivement = false;
        this.flashIterations = 0;
        this.flashTimer = 0;
      }
    }

    // Draw the digits if not flashing.
    if (paint) {
      for (var i = this.digits.length - 1; i >= 0; i--) {
        this.draw(i, parseInt(this.digits[i]));
      }
    }

    this.drawHighScore();

    return playSound;
  },

  /**
   * Draw the high score.
   */
  drawHighScore: function() {
    this.canvasCtx.save();
    this.canvasCtx.globalAlpha = .8;
    for (var i = this.highScore.length - 1; i >= 0; i--) {
      this.draw(i, parseInt(this.highScore[i], 10), true);
    }
    this.canvasCtx.restore();
  },

  /**
   * Set the highscore as a array string.
   * Position of char in the sprite: H - 10, I - 11.
   * @param {number} distance Distance ran in pixels.
   */
  setHighScore: function(distance) {
    distance = this.getActualDistance(distance);
    var highScoreStr = (this.defaultString +
        distance).substr(-this.maxScoreUnits);

    this.highScore = ['10', '11', ''].concat(highScoreStr.split(''));
  },

  /**
   * Reset the distance meter back to '00000'.
   */
  reset: function() {
    this.update(0);
    this.acheivement = false;
  }
};


//******************************************************************************

/**
 * Cloud background item.
 * Similar to an obstacle object but without collision boxes.
 * @param {HTMLCanvasElement} canvas Canvas element.
 * @param {Object} spritePos Position of image in sprite.
 * @param {number} containerWidth
 */
function Cloud(canvas, spritePos, containerWidth) {
  this.canvas = canvas;
  this.canvasCtx = this.canvas.getContext('2d');
  this.spritePos = spritePos;
  this.containerWidth = containerWidth;
  this.xPos = containerWidth;
  this.yPos = 0;
  this.remove = false;
  this.cloudGap = getRandomNum(Cloud.config.MIN_CLOUD_GAP,
      Cloud.config.MAX_CLOUD_GAP);

  this.init();
};


/**
 * Cloud object config.
 * @enum {number}
 */
Cloud.config = {
  HEIGHT: 14,
  MAX_CLOUD_GAP: 400,
  MAX_SKY_LEVEL: 30,
  MIN_CLOUD_GAP: 100,
  MIN_SKY_LEVEL: 71,
  WIDTH: 46
};


Cloud.prototype = {
  /**
   * Initialise the cloud. Sets the Cloud height.
   */
  init: function() {
    this.yPos = getRandomNum(Cloud.config.MAX_SKY_LEVEL,
        Cloud.config.MIN_SKY_LEVEL);
    this.draw();
  },

  /**
   * Draw the cloud.
   */
  draw: function() {
    this.canvasCtx.save();
    var sourceWidth = Cloud.config.WIDTH;
    var sourceHeight = Cloud.config.HEIGHT;

    if (IS_HIDPI) {
      sourceWidth = sourceWidth * 2;
      sourceHeight = sourceHeight * 2;
    }

    this.canvasCtx.drawImage(Runner.imageSprite, this.spritePos.x,
        this.spritePos.y,
        sourceWidth, sourceHeight,
        this.xPos, this.yPos,
        Cloud.config.WIDTH, Cloud.config.HEIGHT);

    this.canvasCtx.restore();
  },

  /**
   * Update the cloud position.
   * @param {number} speed
   */
  update: function(speed) {
    if (!this.remove) {
      this.xPos -= Math.ceil(speed);
      this.draw();

      // Mark as removeable if no longer in the canvas.
      if (!this.isVisible()) {
        this.remove = true;
      }
    }
  },

  /**
   * Check if the cloud is visible on the stage.
   * @return {boolean}
   */
  isVisible: function() {
    return this.xPos + Cloud.config.WIDTH > 0;
  }
};


//******************************************************************************

/**
 * Horizon Line.
 * Consists of two connecting lines. Randomly assigns a flat / bumpy horizon.
 * @param {HTMLCanvasElement} canvas
 * @param {Object} spritePos Horizon position in sprite.
 * @constructor
 */
function HorizonLine(canvas, spritePos) {
  this.spritePos = spritePos;
  this.canvas = canvas;
  this.canvasCtx = canvas.getContext('2d');
  this.sourceDimensions = {};
  this.dimensions = HorizonLine.dimensions;
  this.sourceXPos = [this.spritePos.x, this.spritePos.x +
      this.dimensions.WIDTH];
  this.xPos = [];
  this.yPos = 0;
  this.bumpThreshold = 0.5;

  this.setSourceDimensions();
  this.draw();
};


/**
 * Horizon line dimensions.
 * @enum {number}
 */
HorizonLine.dimensions = {
  WIDTH: 600,
  HEIGHT: 12,
  YPOS: 127
};


HorizonLine.prototype = {
  /**
   * Set the source dimensions of the horizon line.
   */
  setSourceDimensions: function() {

    for (var dimension in HorizonLine.dimensions) {
      if (IS_HIDPI) {
        if (dimension != 'YPOS') {
          this.sourceDimensions[dimension] =
              HorizonLine.dimensions[dimension] * 2;
        }
      } else {
        this.sourceDimensions[dimension] =
            HorizonLine.dimensions[dimension];
      }
      this.dimensions[dimension] = HorizonLine.dimensions[dimension];
    }

    this.xPos = [0, HorizonLine.dimensions.WIDTH];
    this.yPos = HorizonLine.dimensions.YPOS;
  },

  /**
   * Return the crop x position of a type.
   */
  getRandomType: function() {
    return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0;
  },

  /**
   * Draw the horizon line.
   */
  draw: function() {
    this.canvasCtx.drawImage(Runner.imageSprite, this.sourceXPos[0],
        this.spritePos.y,
        this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
        this.xPos[0], this.yPos,
        this.dimensions.WIDTH, this.dimensions.HEIGHT);

    this.canvasCtx.drawImage(Runner.imageSprite, this.sourceXPos[1],
        this.spritePos.y,
        this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
        this.xPos[1], this.yPos,
        this.dimensions.WIDTH, this.dimensions.HEIGHT);
  },

  /**
   * Update the x position of an indivdual piece of the line.
   * @param {number} pos Line position.
   * @param {number} increment
   */
  updateXPos: function(pos, increment) {
    var line1 = pos;
    var line2 = pos == 0 ? 1 : 0;

    this.xPos[line1] -= increment;
    this.xPos[line2] = this.xPos[line1] + this.dimensions.WIDTH;

    if (this.xPos[line1] <= -this.dimensions.WIDTH) {
      this.xPos[line1] += this.dimensions.WIDTH * 2;
      this.xPos[line2] = this.xPos[line1] - this.dimensions.WIDTH;
      this.sourceXPos[line1] = this.getRandomType() + this.spritePos.x;
    }
  },

  /**
   * Update the horizon line.
   * @param {number} deltaTime
   * @param {number} speed
   */
  update: function(deltaTime, speed) {
    var increment = Math.floor(speed * (FPS / 1000) * deltaTime);

    if (this.xPos[0] <= 0) {
      this.updateXPos(0, increment);
    } else {
      this.updateXPos(1, increment);
    }
    this.draw();
  },

  /**
   * Reset horizon to the starting position.
   */
  reset: function() {
    this.xPos[0] = 0;
    this.xPos[1] = HorizonLine.dimensions.WIDTH;
  }
};


//******************************************************************************

/**
 * Horizon background class.
 * @param {HTMLCanvasElement} canvas
 * @param {Object} spritePos Sprite positioning.
 * @param {Object} dimensions Canvas dimensions.
 * @param {number} gapCoefficient
 * @constructor
 */
function Horizon(canvas, spritePos, dimensions, gapCoefficient) {
  this.canvas = canvas;
  this.canvasCtx = this.canvas.getContext('2d');
  this.config = Horizon.config;
  this.dimensions = dimensions;
  this.gapCoefficient = gapCoefficient;
  this.obstacles = [];
  this.obstacleHistory = [];
  this.horizonOffsets = [0, 0];
  this.cloudFrequency = this.config.CLOUD_FREQUENCY;
  this.spritePos = spritePos;

  // Cloud
  this.clouds = [];
  this.cloudSpeed = this.config.BG_CLOUD_SPEED;

  // Horizon
  this.horizonLine = null;

  this.init();
};


/**
 * Horizon config.
 * @enum {number}
 */
Horizon.config = {
  BG_CLOUD_SPEED: 0.2,
  BUMPY_THRESHOLD: .3,
  CLOUD_FREQUENCY: .5,
  HORIZON_HEIGHT: 16,
  MAX_CLOUDS: 6
};


Horizon.prototype = {
  /**
   * Initialise the horizon. Just add the line and a cloud. No obstacles.
   */
  init: function() {
    this.addCloud();
    this.horizonLine = new HorizonLine(this.canvas, this.spritePos.HORIZON);
  },

  /**
   * @param {number} deltaTime
   * @param {number} currentSpeed
   * @param {boolean} updateObstacles Used as an override to prevent
   *     the obstacles from being updated / added. This happens in the
   *     ease in section.
   */
  update: function(deltaTime, currentSpeed, updateObstacles) {
    this.runningTime += deltaTime;
    this.horizonLine.update(deltaTime, currentSpeed);
    this.updateClouds(deltaTime, currentSpeed);

    if (updateObstacles) {
      this.updateObstacles(deltaTime, currentSpeed);
    }
  },

  /**
   * Update the cloud positions.
   * @param {number} deltaTime
   * @param {number} currentSpeed
   */
  updateClouds: function(deltaTime, speed) {
    var cloudSpeed = this.cloudSpeed / 1000 * deltaTime * speed;
    var numClouds = this.clouds.length;

    if (numClouds) {
      for (var i = numClouds - 1; i >= 0; i--) {
        this.clouds[i].update(cloudSpeed);
      }

      var lastCloud = this.clouds[numClouds - 1];

      // Check for adding a new cloud.
      if (numClouds < this.config.MAX_CLOUDS &&
          (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap &&
          this.cloudFrequency > Math.random()) {
        this.addCloud();
      }

      // Remove expired clouds.
      this.clouds = this.clouds.filter(function(obj) {
        return !obj.remove;
      });
    }
  },

  /**
   * Update the obstacle positions.
   * @param {number} deltaTime
   * @param {number} currentSpeed
   */
  updateObstacles: function(deltaTime, currentSpeed) {
    // Obstacles, move to Horizon layer.
    var updatedObstacles = this.obstacles.slice(0);

    for (var i = 0; i < this.obstacles.length; i++) {
      var obstacle = this.obstacles[i];
      obstacle.update(deltaTime, currentSpeed);

      // Clean up existing obstacles.
      if (obstacle.remove) {
        updatedObstacles.shift();
      }
    }
    this.obstacles = updatedObstacles;

    if (this.obstacles.length > 0) {
      var lastObstacle = this.obstacles[this.obstacles.length - 1];

      if (lastObstacle && !lastObstacle.followingObstacleCreated &&
          lastObstacle.isVisible() &&
          (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) <
          this.dimensions.WIDTH) {
        this.addNewObstacle(currentSpeed);
        lastObstacle.followingObstacleCreated = true;
      }
    } else {
      // Create new obstacles.
      this.addNewObstacle(currentSpeed);
    }
  },

  /**
   * Add a new obstacle.
   * @param {number} currentSpeed
   */
  addNewObstacle: function(currentSpeed) {
    var obstacleTypeIndex = getRandomNum(0, Obstacle.types.length - 1);
    var obstacleType = Obstacle.types[obstacleTypeIndex];

    // Check for multiples of the same type of obstacle.
    // Also check obstacle is available at current speed.
    if (this.duplicateObstacleCheck(obstacleType.type) ||
        currentSpeed < obstacleType.minSpeed) {
      this.addNewObstacle(currentSpeed);
    } else {
      var obstacleSpritePos = this.spritePos[obstacleType.type];

      this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType,
          obstacleSpritePos, this.dimensions,
          this.gapCoefficient, currentSpeed));

      this.obstacleHistory.unshift(obstacleType.type);

      if (this.obstacleHistory.length > 1) {
        this.obstacleHistory.splice(Runner.config.MAX_OBSTACLE_DUPLICATION);
      }
    }
  },

  /**
   * Returns whether the previous two obstacles are the same as the next one.
   * Maximum duplication is set in config value MAX_OBSTACLE_DUPLICATION.
   * @return {boolean}
   */
  duplicateObstacleCheck: function(nextObstacleType) {
    var duplicateCount = 0;

    for (var i = 0; i < this.obstacleHistory.length; i++) {
      duplicateCount = this.obstacleHistory[i] == nextObstacleType ?
          duplicateCount + 1 : 0;
    }
    return duplicateCount >= Runner.config.MAX_OBSTACLE_DUPLICATION;
  },

  /**
   * Reset the horizon layer.
   * Remove existing obstacles and reposition the horizon line.
   */
  reset: function() {
    this.obstacles = [];
    this.horizonLine.reset();
  },

  /**
   * Update the canvas width and scaling.
   * @param {number} width Canvas width.
   * @param {number} height Canvas height.
   */
  resize: function(width, height) {
    this.canvas.width = width;
    this.canvas.height = height;
  },

  /**
   * Add a new cloud to the horizon.
   */
  addCloud: function() {
    this.clouds.push(new Cloud(this.canvas, this.spritePos.CLOUD,
        this.dimensions.WIDTH));
  }
};
})();
</script>
</head>
<body id="t" i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
  <div id="main-frame-error" class="interstitial-wrapper">
    <div id="main-content">
      <img class="icon"
          jseval="updateIconClass(this.classList, iconClass)">
      <div id="main-message">
        <h1 i18n-content="heading"></h1>
        <p hidden></p>
        <div class="error-code" jscontent="errorCode"></div>
      </div>
    </div>
    <div id="buttons" class="nav-wrapper">
      <div id="control-buttons" hidden>
        <button id="reload-button"
            class="blue-button text-button"
            onclick="trackClick(this.trackingId);
                     reloadButtonClick(this.url);"
            jsselect="reloadButton"
            jsvalues=".url:reloadUrl; .trackingId:reloadTrackingId"
            jscontent="msg"></button>
        <button id="show-saved-copy-button"
            class="blue-button text-button"
            onclick="showSavedCopyButtonClick()"
            jsselect="showSavedCopyButton"
            jscontent="msg" jsvalues="title:title; .primary:primary">
        </button>
      </div>
      <button id="details-button" class="text-button small-link"
         onclick="detailsButtonClick(); toggleHelpBox()"
         jsdisplay="details" jscontent="details"
         jsvalues=".detailsText:details; .hideDetailsText:hideDetails;"></button>
    </div>
    <div id="details" class="hidden">
      <div jsselect="summary">
        <span jsvalues=".innerHTML:msg"></span>
      </div>
      <div class="suggestions" jsselect="suggestions">
        <div class="suggestion-header" jsvalues=".innerHTML:header"></div>
        <div class="suggestion-body" jsvalues=".innerHTML:body"></div>
      </div>
      <button class="text-button" id="diagnose-button"
          onclick="diagnoseErrors()" jscontent="diagnose"
          jsdisplay="diagnose"></button>
      <div id="diagnose-frame" class="hidden"></div>
      <form class="suggestions" jsdisplay="searchUrl"
          jsvalues=".url:searchUrl; .trackingId:searchTrackingId"
          onsubmit="trackClick(this.trackingId); return search(this.url);">
        <div class="suggestion-header" jscontent="searchHeader"></div>
        <div id="search-container">
          <input type="text" name="q" id="search-box"
              jsvalues=".value:searchTerms" />
          <button type="submit" id="search-button" class="blue-button"
              jsvalues="aria-label:searchHeader">
            <img id="search-image">
          </button>
        </div>
      </form>
    </div>
  </div>
  <div id="sub-frame-error">
    <!-- Show details when hovering over the icon, in case the details are
         hidden because they're too large. -->
    <img class="icon" jseval="updateIconClass(this.classList, iconClass)"
        jsvalues=".title:errorDetails">
    <div id="sub-frame-error-details" jsvalues=".innerHTML:errorDetails"></div>
  </div>

  <div id="offline-resources">
    <img id="offline-resources-1x" src="data:image/png;base64,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">
    <img id="offline-resources-2x" src="data:image/png;base64,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">
    <template id="audio-resources">
      <audio id="offline-sound-press" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-hit" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-reached" src="data:audio/mpeg;base64,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"></audio>
    </template>
  </div>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<script>
  window.onload = function() {
    if (plugin.didFinishLoading)
      plugin.didFinishLoading();
  };

  window.onkeydown = function(e) {
    if (e.keyIdentifier == 'Enter' || e.keyIdentifier == 'U+0020') {
      plugin.load();
      e.preventDefault();
    }
  };
</script>
<style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
visibility: hidden;
}

#outer:hover h1, #outer:hover #close {
  visibility: visible;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#outer {
  align-items: center;
  border: 1px black solid;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
}

#close {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA9UlEQVR4Xu3UsWrCUByH0fMEouiuhrg4xohToJVGH0CHLBncEwfx/VvIFHLJBWmHDvKbv7PcP9f3L/fXwBsApZSRpUpEgbOnxwiReng6x4AvjdrNXRLkibubWqMcB9Yujk7qjhjmtZOji/U4wELuoBwQXa50kFsQA5jK+kQ/l5kSA4ZEK5Fo+3kcCIlGM8ijQEhUqkEeBUKiUPTyl4C5vZ1cbmdv/iqwclXY6aZwtXoFSLQqhVwmkytUWglxAMG7T0yCu4gD0v7ZBKeVxoEwFxIxYBPmIWEzDnyEeUj4HAfYdvmMcGYdsSUGsOzlIbHEv/uV38APrreiBRBIs3QAAAAASUVORK5CYII=) 2x);
  background-position: right top;
  background-repeat: no-repeat;
  cursor: pointer;
  height: 14px;
  position: absolute;
  right: 3px;
  top: 3px;
visibility: hidden;
  width: 14px;
}

#close[data-plugin-type='document'] {
  display: none;
}

#close:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqUlEQVR4XqWRMQqEMBBF/1E8Ra6x6V3FRnS9QbCxtJg6Z7CzE9lTiIXXyUb3C8EULixDIMM8Zt4kcDfxM5A45U+cgeXnC1tREgkzAgob3hiq3CUHvGLG4FTQoSgxQGDrzN8WTLBGnx2IVDksen9GH7Z9hA5E6uxABMJyCHDMCEGHzugLQPPlBCBNGq+5YtpnGw1Bv+te15ypljTpVzdak5Opy+z+qf//zQ+Lg+07ay5KsgAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB4UlEQVR42u2VsWoCQRBAh+MUFP0C1V9QD4NEOxs9xBQHQVCwSJFWVBAtBNXCxk6wTkBJYUTwEwQLC61E8QP0NzZzt5g5726DkC7EYWHZ8T3WndkV2C/jLwn4hwVYBIdLn9vkLp79QcBCTDMiy3w2gQ9XeTYkEHA8vqj2rworXu3HF1YFfSWgp5QFnKVLvYvzDEKEZ5hW70oXOCtcEbQLIkx7+IQtfMBSOjU6XEF4oyOdYInZbXyOuajjDlpNeQgleIUJKUz4BDMledhqOu/AzVSmzZ49CUjCC0yvim98iqtJT2L2jKsqczsdok9XrHNexaww415lnTNwn6CM/KxJIR8bnUZHPhLO6yMoIyk2pNjLewFuE5AiY1KMMQx8Q7hQYFek4AkjxXFe1rsF84I/BTFQMGL+1Lxwl4DwdtM1gjwKohgxyLtG7SYpxALqugOMcfOKN+bFXeBsLB1uulNcRqq7/tt36k41zoL6QlxGjtd6lrahiqCi1iOFYyvXuxY8yzK33VnvUivbLlOlj/jktm0s3YnXrNIXXufHNxuOGasi8S68zkwrlnV8ZcJJsTIUxbLgQcFZWE8N0gau2p40VVcM0gYeFpSRK6445UhBuKiRgiyKw+34rLt59nb1/7+RwReVkaFtqvNBuwAAAABJRU5ErkJggg==) 2x);
}

#close:active {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAQklEQVR4AWP4TwBSTQGDHcMZIIYAKA9VwRkwtINJgyCaCTAlCBaKAoQ+hFmoCqBKENKkK8C0gpAjCXuTyICiQ2QBAPSwyG3ByZlCAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA/ElEQVR4Xu3UsWrCUBiG4efGlIBoIMFbcnYolYJ3pg4iKGrGYFTRwaUFhYAekiDt0EG++X2W83N8/3J/DbwBMJJSsdQItcDY1VlCOImzq3Ed8OmicHASB3ns5KBw8VUNpDJrW7uAiJ3sbK1l0mqArpmFTUlQ5jYWZrrUAUSmT0SZm4qoA56JvVhs/5g3A7RLolA85A1ASOTye65NMxASK6syfxGITMzvMxG9CvRkliWwlOm9AsSOcitzU1NzK7mjuBkQvHtLK7iLBiB5PhttJSGpB8I8vM6kDuiHeUjoVwMfYR4SRtUAw1veIZzOjRhSBzCoyKFjgH/3K7+BHzg+Cgw0eSW3AAAAAElFTkSuQmCC) 2x);
}
</style>
<style>
#outer {
  border: none;
  cursor: pointer;
}

#shielding {
  background-color: rgba(0, 0, 0, 0.5);
  height: 100%;
  left: 0px;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 2;
}

#plugin-icon {
  display: block;
  opacity: 0.8;
}

#plugin-icon:hover {
  opacity: 0.95;
}

#poster {
  height: 100%;
  object-fit: contain;
  width: 100%;
  z-index: 1;
}

#inner-container {
  align-items: center;
  display: flex;
  justify-content: center;
  left: 0px;
  position: absolute;
  top: 0px;
  z-index: 2;
}
</style>
<base i18n-values="href:baseurl">
</head>

<body>
  <div i18n-values="title:name" id="outer">
    <img id="poster" i18n-values="srcset:poster">
    <div id="shielding"></div>
    <div id="inner-container"
         i18n-values=".style.width:visibleWidth;.style.height:visibleHeight">
      <div id="inner">
        <img id="plugin-icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAA8dJREFUaAXdWs9vEkEUZkvZQloNxJoY40kxJsDNo9GDif+Bf4CHpjEmJPoPeMce1F408dYjQePBgycv3vRG4GBMPREPLSlpCUWggN+3ncVl6PJrZ5a6k0x2Z2fnve/befPmzcwaIbVpGeLCyEsiG5L4Pso9kbu4nkj1CysSaAQ5trm5uV6pVB4eHx+/brVan3u93s9+v19Fbolc5TPW8R2+yzZsK2TIpPFYf6LS6Pb29rX9/f0NgPsIsA3kWVODbSmDsigT2TdCZjabvVyv158D9eGsyMe8f0iZlA0yJrK2FE4mkxer1eoTmMjvMYA8VVE2dVAXmHC8KU1mPp9Pdjqd755QztCYuqgTLJT1TrRYLN7T2Qtu/KiTukGGY8dTiu3t7T2CoqabMh+eN4kBLOjd5kpRQcIHrJNVCDIz94zJLoX4RfaEzK4pzGzqMRPmIFvEmJCRy2ViEg5gsjej2/PTO8lgJ5WJTbjmsePFpA+fJGzR9cQIFq4mZnBWPY8mJX84YhQRwJnhTFSEHXK7mcrNZvMdGjBQ1JqIFb0y4sUMBm3Q7Dl2KpVKd5jx1Xa1MgFWEWgO9UqEEagKxSSBL7WSy+WuIrJ9r0Kmmwxihi4uIwYpJkJxtzZTPxdE7IXVaq1We4bGWkyNmMHAmvGpMIQFzqppmg8GtNTccCXYSCQSb8rl8n2Q+aVG7D8pxEzs9pNlrtam/uQTXnT0iC2f14guUyN2yOcSO7TCpecEfFNXuxChHvY+Te0phCkzNWInB8uWw+HwLWrSnGxTe6vS1AT2JYtIJBK5oZmEU/yfTCbzbWtr62673f7grJjnXmC3xvoaupq7HUrSGNOScaoytSoEr1lMcHNB1uJDWZWpWdhtIj7g1qvCcltQUUe+pFfViHR+xBi82EY8Hn+Be9dodqTl8ANit1wix0ZtuE57ifPKFczMOyDxCtrmJRES2PvskR4WK7uYJZPa4Z8qiMIh3E6lUjuGYVz3qpPYyYHd2+t2uz+8CpyiPXVxQnycTqe/qCBBnQK7RaR7cHDwdQogXl5xmtJLCJrblGQQAjt39q2gcR22Ns8mNMfXUDpjHqEp6VqfNMSO/oCfzjBeaWzl/GojYTzonBwdHX0a0PJ+o82UnNAE5qHDosAsdUk0EJsPJBKY7SCSCcQGHYmEgrJlSi7B2MQmE6RAHCucUoEXC8JBj00mEEdvNplAHIbaZMxCoXDTzwMg6lJ9PG2TCcQPAzYZXv/7XzicZALxU41M6Fz85jR02uNEOOc9NzN4dMz1ObMsX9uPZ38BvwZw6z92PI4AAAAASUVORK5CYII="
             i18n-values=".style.maxWidth:visibleWidth;
                          .style.maxHeight:visibleHeight" />
      </div>
    </div>
  </div>
  <script>
    document.getElementById('poster').onerror = function() {
      this.hidden = true;
    };

    document.getElementById('outer').onclick = function() {
      plugin.load();
    };

    window.setPosterMargin = function(marginLeft, marginTop) {
      var container = document.getElementById('inner-container');
      container.style.marginLeft = marginLeft;
      container.style.marginTop = marginTop;
    };
  </script>
</body>
</html>
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var chrome;
if (!chrome)
  chrome = {};

if (!chrome.embeddedSearch) {
  chrome.embeddedSearch = new function() {
    this.searchBox = new function() {

      // =======================================================================
      //                            Private functions
      // =======================================================================
      native function Focus();
      native function GetDisplayInstantResults();
      native function GetMostVisitedItemData();
      native function GetQuery();
      native function GetSearchRequestParams();
      native function GetRightToLeft();
      native function GetStartMargin();
      native function GetSuggestionToPrefetch();
      native function IsFocused();
      native function IsKeyCaptureEnabled();
      native function Paste();
      native function SetVoiceSearchSupported();
      native function StartCapturingKeyStrokes();
      native function StopCapturingKeyStrokes();

      // =======================================================================
      //                           Exported functions
      // =======================================================================
      this.__defineGetter__('displayInstantResults', GetDisplayInstantResults);
      this.__defineGetter__('isFocused', IsFocused);
      this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled);
      this.__defineGetter__('rtl', GetRightToLeft);
      this.__defineGetter__('startMargin', GetStartMargin);
      this.__defineGetter__('suggestion', GetSuggestionToPrefetch);
      this.__defineGetter__('value', GetQuery);
      Object.defineProperty(this, 'requestParams',
                            { get: GetSearchRequestParams });

      this.focus = function() {
        Focus();
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.getMostVisitedItemData = function(restrictedId) {
        var item = GetMostVisitedItemData(restrictedId);
        if (item) {
          var sizeInPx = Math.floor(48 * window.devicePixelRatio + 0.5);
          // Populate large icon and fallback icon data, if they exist. We'll
          // render everything here, once these become available by default.
          if (item.largeIconUrl) {
            item.largeIconUrl +=
                sizeInPx + "/" + item.renderViewId + "/" + item.rid;
          }
          if (item.fallbackIconUrl) {
            item.fallbackIconUrl +=
                sizeInPx + ",,,,/" + item.renderViewId + "/" + item.rid;
          }
        }
        return item;
      };

      this.paste = function(value) {
        Paste(value);
      };

      this.setVoiceSearchSupported = function(supported) {
        SetVoiceSearchSupported(supported);
      };

      this.startCapturingKeyStrokes = function() {
        StartCapturingKeyStrokes();
      };

      this.stopCapturingKeyStrokes = function() {
        StopCapturingKeyStrokes();
      };

      this.onfocuschange = null;
      this.onkeycapturechange = null;
      this.onmarginchange = null;
      this.onsubmit = null;
      this.onsuggestionchange = null;
      this.ontogglevoicesearch = null;

      //TODO(jered): Remove this empty method when google no longer requires it.
      this.setRestrictedValue = function() {};
    };

    this.newTabPage = new function() {

      // =======================================================================
      //                            Private functions
      // =======================================================================
      native function CheckIsUserSignedInToChromeAs();
      native function CheckIsUserSyncingHistory();
      native function DeleteMostVisitedItem();
      native function GetAppLauncherEnabled();
      native function GetDispositionFromClick();
      native function GetMostVisitedItems();
      native function GetThemeBackgroundInfo();
      native function IsInputInProgress();
      native function LogEvent();
      native function LogMostVisitedImpression();
      native function LogMostVisitedNavigation();
      native function NavigateContentWindow();
      native function UndoAllMostVisitedDeletions();
      native function UndoMostVisitedDeletion();

      function GetMostVisitedItemsWrapper() {
        var mostVisitedItems = GetMostVisitedItems();
        for (var i = 0, item; item = mostVisitedItems[i]; ++i) {
          item.faviconUrl = GenerateFaviconURL(item.renderViewId, item.rid);

          // These properties are private data and should not be returned to
          // the page. They are only accessible via getMostVisitedItemData().
          delete item.url;
          delete item.title;
          delete item.domain;
          delete item.direction;
          delete item.renderViewId;
          delete item.largeIconUrl;
          delete item.fallbackIconUrl;
        }
        return mostVisitedItems;
      }

      function GenerateFaviconURL(renderViewId, rid) {
        return "chrome-search://favicon/size/16@" +
            window.devicePixelRatio + "x/" +
            renderViewId + "/" + rid;
      }

      // =======================================================================
      //                           Exported functions
      // =======================================================================
      this.__defineGetter__('appLauncherEnabled', GetAppLauncherEnabled);
      this.__defineGetter__('isInputInProgress', IsInputInProgress);
      this.__defineGetter__('mostVisited', GetMostVisitedItemsWrapper);
      this.__defineGetter__('themeBackgroundInfo', GetThemeBackgroundInfo);

      this.deleteMostVisitedItem = function(restrictedId) {
        DeleteMostVisitedItem(restrictedId);
      };

      this.getDispositionFromClick = function(middle_button,
                                              alt_key,
                                              ctrl_key,
                                              meta_key,
                                              shift_key) {
        return GetDispositionFromClick(middle_button,
                                       alt_key,
                                       ctrl_key,
                                       meta_key,
                                       shift_key);
      };

      this.checkIsUserSignedIntoChromeAs = function(identity) {
        CheckIsUserSignedInToChromeAs(identity);
      };

      this.checkIsUserSyncingHistory = function() {
        CheckIsUserSyncingHistory();
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logEvent = function(histogram_name) {
        LogEvent(histogram_name);
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logMostVisitedImpression = function(position, provider) {
        LogMostVisitedImpression(position, provider);
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logMostVisitedNavigation = function(position, provider) {
        LogMostVisitedNavigation(position, provider);
      };

      this.navigateContentWindow = function(destination, disposition) {
        NavigateContentWindow(destination, disposition);
      };

      this.undoAllMostVisitedDeletions = function() {
        UndoAllMostVisitedDeletions();
      };

      this.undoMostVisitedDeletion = function(restrictedId) {
        UndoMostVisitedDeletion(restrictedId);
      };

      this.onsignedincheckdone = null;
      this.onhistorysynccheckdone = null;
      this.oninputcancel = null;
      this.oninputstart = null;
      this.onmostvisitedchange = null;
      this.onthemechange = null;
    };

    // TODO(jered): Remove when google no longer expects this object.
    chrome.searchBox = this.searchBox;
  };
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the app API.

var GetAvailability = requireNative('v8_context').GetAvailability;
if (!GetAvailability('app').is_available) {
  exports.binding = {};
  exports.onInstallStateResponse = function(){};
  return;
}

var appNatives = requireNative('app');
var process = requireNative('process');
var extensionId = process.GetExtensionId();
var logActivity = requireNative('activityLogger');

function wrapForLogging(fun) {
  if (!extensionId)
    return fun;  // nothing interesting to log without an extension

  return function() {
    // TODO(ataly): We need to make sure we use the right prototype for
    // fun.apply. Array slice can either be rewritten or similarly defined.
    logActivity.LogAPICall(extensionId, "app." + fun.name,
        $Array.slice(arguments));
    return $Function.apply(fun, this, arguments);
  };
}

// This becomes chrome.app
var app = {
  getIsInstalled: wrapForLogging(appNatives.GetIsInstalled),
  getDetails: wrapForLogging(appNatives.GetDetails),
  getDetailsForFrame: wrapForLogging(appNatives.GetDetailsForFrame),
  runningState: wrapForLogging(appNatives.GetRunningState)
};

// Tricky; "getIsInstalled" is actually exposed as the getter "isInstalled",
// but we don't have a way to express this in the schema JSON (nor is it
// worth it for this one special case).
//
// So, define it manually, and let the getIsInstalled function act as its
// documentation.
app.__defineGetter__('isInstalled', wrapForLogging(appNatives.GetIsInstalled));

// Called by app_bindings.cc.
function onInstallStateResponse(state, callbackId) {
  var callback = callbacks[callbackId];
  delete callbacks[callbackId];
  if (typeof(callback) == 'function') {
    try {
      callback(state);
    } catch (e) {
      console.error('Exception in chrome.app.installState response handler: ' +
                    e.stack);
    }
  }
}

// TODO(kalman): move this stuff to its own custom bindings.
var callbacks = {};
var nextCallbackId = 1;

app.installState = function getInstallState(callback) {
  var callbackId = nextCallbackId++;
  callbacks[callbackId] = callback;
  appNatives.GetInstallState(callbackId);
};
if (extensionId)
  app.installState = wrapForLogging(app.installState);

exports.binding = app;
exports.onInstallStateResponse = onInstallStateResponse;
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the automation API.
var AutomationNode = require('automationNode').AutomationNode;
var AutomationRootNode = require('automationNode').AutomationRootNode;
var automation = require('binding').Binding.create('automation');
var automationInternal =
    require('binding').Binding.create('automationInternal').generate();
var eventBindings = require('event_bindings');
var Event = eventBindings.Event;
var forEach = require('utils').forEach;
var lastError = require('lastError');
var logging = requireNative('logging');
var nativeAutomationInternal = requireNative('automationInternal');
var GetRoutingID = nativeAutomationInternal.GetRoutingID;
var GetSchemaAdditions = nativeAutomationInternal.GetSchemaAdditions;
var schema = GetSchemaAdditions();

/**
 * A namespace to export utility functions to other files in automation.
 */
window.automationUtil = function() {};

// TODO(aboxhall): Look into using WeakMap
var idToAutomationRootNode = {};
var idToCallback = {};

var DESKTOP_TREE_ID = 0;

automationUtil.storeTreeCallback = function(id, callback) {
  if (!callback)
    return;

  var targetTree = idToAutomationRootNode[id];
  if (!targetTree) {
    // If we haven't cached the tree, hold the callback until the tree is
    // populated by the initial onAccessibilityEvent call.
    if (id in idToCallback)
      idToCallback[id].push(callback);
    else
      idToCallback[id] = [callback];
  } else {
    callback(targetTree);
  }
};

/**
 * Global list of tree change observers.
 * @type {Array<TreeChangeObserver>}
 */
automationUtil.treeChangeObservers = [];

automation.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // TODO(aboxhall, dtseng): Make this return the speced AutomationRootNode obj.
  apiFunctions.setHandleRequest('getTree', function getTree(tabID, callback) {
    var routingID = GetRoutingID();

    // enableTab() ensures the renderer for the active or specified tab has
    // accessibility enabled, and fetches its ax tree id to use as
    // a key in the idToAutomationRootNode map. The callback to
    // enableTab is bound to the callback passed in to getTree(), so that once
    // the tree is available (either due to having been cached earlier, or after
    // an accessibility event occurs which causes the tree to be populated), the
    // callback can be called.
    var params = { routingID: routingID, tabID: tabID };
    automationInternal.enableTab(params,
        function onEnable(id) {
          if (lastError.hasError(chrome)) {
            callback();
            return;
          }
          automationUtil.storeTreeCallback(id, callback);
        });
  });

  var desktopTree = null;
  apiFunctions.setHandleRequest('getDesktop', function(callback) {
    desktopTree =
        idToAutomationRootNode[DESKTOP_TREE_ID];
    if (!desktopTree) {
      if (DESKTOP_TREE_ID in idToCallback)
        idToCallback[DESKTOP_TREE_ID].push(callback);
      else
        idToCallback[DESKTOP_TREE_ID] = [callback];

      var routingID = GetRoutingID();

      // TODO(dtseng): Disable desktop tree once desktop object goes out of
      // scope.
      automationInternal.enableDesktop(routingID, function() {
        if (lastError.hasError(chrome)) {
          delete idToAutomationRootNode[
              DESKTOP_TREE_ID];
          callback();
          return;
        }
      });
    } else {
      callback(desktopTree);
    }
  });

  function removeTreeChangeObserver(observer) {
    var observers = automationUtil.treeChangeObservers;
    for (var i = 0; i < observers.length; i++) {
      if (observer == observers[i])
        observers.splice(i, 1);
    }
  }
  apiFunctions.setHandleRequest('removeTreeChangeObserver', function(observer) {
    removeTreeChangeObserver(observer);
  });

  function addTreeChangeObserver(observer) {
    removeTreeChangeObserver(observer);
    automationUtil.treeChangeObservers.push(observer);
  }
  apiFunctions.setHandleRequest('addTreeChangeObserver', function(observer) {
    addTreeChangeObserver(observer);
  });

});

// Listen to the automationInternal.onAccessibilityEvent event, which is
// essentially a proxy for the AccessibilityHostMsg_Events IPC from the
// renderer.
automationInternal.onAccessibilityEvent.addListener(function(data) {
  var id = data.treeID;
  var targetTree = idToAutomationRootNode[id];
  if (!targetTree) {
    // If this is the first time we've gotten data for this tree, it will
    // contain all of the tree's data, so create a new tree which will be
    // bootstrapped from |data|.
    targetTree = new AutomationRootNode(id);
    idToAutomationRootNode[id] = targetTree;
  }
  if (!privates(targetTree).impl.onAccessibilityEvent(data))
    return;

  // If we're not waiting on a callback to getTree(), we can early out here.
  if (!(id in idToCallback))
    return;

  // We usually get a 'placeholder' tree first, which doesn't have any url
  // attribute or child nodes. If we've got that, wait for the full tree before
  // calling the callback.
  // TODO(dmazzoni): Don't send down placeholder (crbug.com/397553)
  if (id != DESKTOP_TREE_ID && !targetTree.attributes.url &&
      targetTree.children.length == 0) {
    return;
  }

  // If the tree wasn't available when getTree() was called, the callback will
  // have been cached in idToCallback, so call and delete it now that we
  // have the complete tree.
  for (var i = 0; i < idToCallback[id].length; i++) {
    console.log('calling getTree() callback');
    var callback = idToCallback[id][i];
    callback(targetTree);
  }
  delete idToCallback[id];
});

automationInternal.onAccessibilityTreeDestroyed.addListener(function(id) {
  var targetTree = idToAutomationRootNode[id];
  if (targetTree) {
    privates(targetTree).impl.destroy();
    delete idToAutomationRootNode[id];
  } else {
    logging.WARNING('no targetTree to destroy');
  }
  delete idToAutomationRootNode[id];
});

exports.binding = automation.generate();

// Add additional accessibility bindings not specified in the automation IDL.
// Accessibility and automation share some APIs (see
// ui/accessibility/ax_enums.idl).
forEach(schema, function(k, v) {
  exports.binding[k] = v;
});
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');

var AutomationEventImpl = function(type, target) {
  this.propagationStopped = false;

  // TODO(aboxhall): make these read-only properties
  this.type = type;
  this.target = target;
  this.eventPhase = Event.NONE;
};

AutomationEventImpl.prototype = {
  stopPropagation: function() {
    this.propagationStopped = true;
  }
};

exports.AutomationEvent = utils.expose(
    'AutomationEvent',
    AutomationEventImpl,
    { functions: ['stopPropagation'],
      readonly: ['type', 'target', 'eventPhase'] });
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var AutomationEvent = require('automationEvent').AutomationEvent;
var automationInternal =
    require('binding').Binding.create('automationInternal').generate();
var IsInteractPermitted =
    requireNative('automationInternal').IsInteractPermitted;

var lastError = require('lastError');
var logging = requireNative('logging');
var schema = requireNative('automationInternal').GetSchemaAdditions();
var utils = require('utils');

/**
 * A single node in the Automation tree.
 * @param {AutomationRootNodeImpl} root The root of the tree.
 * @constructor
 */
function AutomationNodeImpl(root) {
  this.rootImpl = root;
  this.childIds = [];
  // Public attributes. No actual data gets set on this object.
  this.attributes = {};
  // Internal object holding all attributes.
  this.attributesInternal = {};
  this.listeners = {};
  this.location = { left: 0, top: 0, width: 0, height: 0 };
}

AutomationNodeImpl.prototype = {
  id: -1,
  role: '',
  state: { busy: true },
  isRootNode: false,

  get root() {
    return this.rootImpl.wrapper;
  },

  get parent() {
    return this.hostTree || this.rootImpl.get(this.parentID);
  },

  get firstChild() {
    return this.childTree || this.rootImpl.get(this.childIds[0]);
  },

  get lastChild() {
    var childIds = this.childIds;
    return this.childTree || this.rootImpl.get(childIds[childIds.length - 1]);
  },

  get children() {
    if (this.childTree)
      return [this.childTree];

    var children = [];
    for (var i = 0, childID; childID = this.childIds[i]; i++) {
      logging.CHECK(this.rootImpl.get(childID));
      children.push(this.rootImpl.get(childID));
    }
    return children;
  },

  get previousSibling() {
    var parent = this.parent;
    if (parent && this.indexInParent > 0)
      return parent.children[this.indexInParent - 1];
    return undefined;
  },

  get nextSibling() {
    var parent = this.parent;
    if (parent && this.indexInParent < parent.children.length)
      return parent.children[this.indexInParent + 1];
    return undefined;
  },

  doDefault: function() {
    this.performAction_('doDefault');
  },

  focus: function() {
    this.performAction_('focus');
  },

  makeVisible: function() {
    this.performAction_('makeVisible');
  },

  setSelection: function(startIndex, endIndex) {
    this.performAction_('setSelection',
                        { startIndex: startIndex,
                          endIndex: endIndex });
  },

  showContextMenu: function() {
    this.performAction_('showContextMenu');
  },

  domQuerySelector: function(selector, callback) {
    automationInternal.querySelector(
      { treeID: this.rootImpl.treeID,
        automationNodeID: this.id,
        selector: selector },
      this.domQuerySelectorCallback_.bind(this, callback));
  },

  find: function(params) {
    return this.findInternal_(params);
  },

  findAll: function(params) {
    return this.findInternal_(params, []);
  },

  matches: function(params) {
    return this.matchInternal_(params);
  },

  addEventListener: function(eventType, callback, capture) {
    this.removeEventListener(eventType, callback);
    if (!this.listeners[eventType])
      this.listeners[eventType] = [];
    this.listeners[eventType].push({callback: callback, capture: !!capture});
  },

  // TODO(dtseng/aboxhall): Check this impl against spec.
  removeEventListener: function(eventType, callback) {
    if (this.listeners[eventType]) {
      var listeners = this.listeners[eventType];
      for (var i = 0; i < listeners.length; i++) {
        if (callback === listeners[i].callback)
          listeners.splice(i, 1);
      }
    }
  },

  toJSON: function() {
    return { treeID: this.treeID,
             id: this.id,
             role: this.role,
             attributes: this.attributes };
  },

  dispatchEvent: function(eventType) {
    var path = [];
    var parent = this.parent;
    while (parent) {
      path.push(parent);
      parent = parent.parent;
    }
    var event = new AutomationEvent(eventType, this.wrapper);

    // Dispatch the event through the propagation path in three phases:
    // - capturing: starting from the root and going down to the target's parent
    // - targeting: dispatching the event on the target itself
    // - bubbling: starting from the target's parent, going back up to the root.
    // At any stage, a listener may call stopPropagation() on the event, which
    // will immediately stop event propagation through this path.
    if (this.dispatchEventAtCapturing_(event, path)) {
      if (this.dispatchEventAtTargeting_(event, path))
        this.dispatchEventAtBubbling_(event, path);
    }
  },

  toString: function() {
    var impl = privates(this).impl;
    if (!impl)
      impl = this;
    return 'node id=' + impl.id +
        ' role=' + this.role +
        ' state=' + $JSON.stringify(this.state) +
        ' parentID=' + impl.parentID +
        ' childIds=' + $JSON.stringify(impl.childIds) +
        ' attributes=' + $JSON.stringify(this.attributes);
  },

  dispatchEventAtCapturing_: function(event, path) {
    privates(event).impl.eventPhase = Event.CAPTURING_PHASE;
    for (var i = path.length - 1; i >= 0; i--) {
      this.fireEventListeners_(path[i], event);
      if (privates(event).impl.propagationStopped)
        return false;
    }
    return true;
  },

  dispatchEventAtTargeting_: function(event) {
    privates(event).impl.eventPhase = Event.AT_TARGET;
    this.fireEventListeners_(this.wrapper, event);
    return !privates(event).impl.propagationStopped;
  },

  dispatchEventAtBubbling_: function(event, path) {
    privates(event).impl.eventPhase = Event.BUBBLING_PHASE;
    for (var i = 0; i < path.length; i++) {
      this.fireEventListeners_(path[i], event);
      if (privates(event).impl.propagationStopped)
        return false;
    }
    return true;
  },

  fireEventListeners_: function(node, event) {
    var nodeImpl = privates(node).impl;
    var listeners = nodeImpl.listeners[event.type];
    if (!listeners)
      return;
    var eventPhase = event.eventPhase;
    for (var i = 0; i < listeners.length; i++) {
      if (eventPhase == Event.CAPTURING_PHASE && !listeners[i].capture)
        continue;
      if (eventPhase == Event.BUBBLING_PHASE && listeners[i].capture)
        continue;

      try {
        listeners[i].callback(event);
      } catch (e) {
        console.error('Error in event handler for ' + event.type +
                      'during phase ' + eventPhase + ': ' +
                      e.message + '\nStack trace: ' + e.stack);
      }
    }
  },

  performAction_: function(actionType, opt_args) {
    // Not yet initialized.
    if (this.rootImpl.treeID === undefined ||
        this.id === undefined) {
      return;
    }

    // Check permissions.
    if (!IsInteractPermitted()) {
      throw new Error(actionType + ' requires {"desktop": true} or' +
          ' {"interact": true} in the "automation" manifest key.');
    }

    automationInternal.performAction({ treeID: this.rootImpl.treeID,
                                       automationNodeID: this.id,
                                       actionType: actionType },
                                     opt_args || {});
  },

  domQuerySelectorCallback_: function(userCallback, resultAutomationNodeID) {
    // resultAutomationNodeID could be zero or undefined or (unlikely) null;
    // they all amount to the same thing here, which is that no node was
    // returned.
    if (!resultAutomationNodeID) {
      userCallback(null);
      return;
    }
    var resultNode = this.rootImpl.get(resultAutomationNodeID);
    if (!resultNode) {
      logging.WARNING('Query selector result not in tree: ' +
                      resultAutomationNodeID);
      userCallback(null);
    }
    userCallback(resultNode);
  },

  findInternal_: function(params, opt_results) {
    var result = null;
    this.forAllDescendants_(function(node) {
      if (privates(node).impl.matchInternal_(params)) {
        if (opt_results)
          opt_results.push(node);
        else
          result = node;
        return !opt_results;
      }
    });
    if (opt_results)
      return opt_results;
    return result;
  },

  /**
   * Executes a closure for all of this node's descendants, in pre-order.
   * Early-outs if the closure returns true.
   * @param {Function(AutomationNode):boolean} closure Closure to be executed
   *     for each node. Return true to early-out the traversal.
   */
  forAllDescendants_: function(closure) {
    var stack = this.wrapper.children.reverse();
    while (stack.length > 0) {
      var node = stack.pop();
      if (closure(node))
        return;

      var children = node.children;
      for (var i = children.length - 1; i >= 0; i--)
        stack.push(children[i]);
    }
  },

  matchInternal_: function(params) {
    if (Object.keys(params).length == 0)
      return false;

    if ('role' in params && this.role != params.role)
        return false;

    if ('state' in params) {
      for (var state in params.state) {
        if (params.state[state] != (state in this.state))
          return false;
      }
    }
    if ('attributes' in params) {
      for (var attribute in params.attributes) {
        if (!(attribute in this.attributesInternal))
          return false;

        var attrValue = params.attributes[attribute];
        if (typeof attrValue != 'object') {
          if (this.attributesInternal[attribute] !== attrValue)
            return false;
        } else if (attrValue instanceof RegExp) {
          if (typeof this.attributesInternal[attribute] != 'string')
            return false;
          if (!attrValue.test(this.attributesInternal[attribute]))
            return false;
        } else {
          // TODO(aboxhall): handle intlist case.
          return false;
        }
      }
    }
    return true;
  }
};

// Maps an attribute to its default value in an invalidated node.
// These attributes are taken directly from the Automation idl.
var AutomationAttributeDefaults = {
  'id': -1,
  'role': '',
  'state': {},
  'location': { left: 0, top: 0, width: 0, height: 0 }
};


var AutomationAttributeTypes = [
  'boolAttributes',
  'floatAttributes',
  'htmlAttributes',
  'intAttributes',
  'intlistAttributes',
  'stringAttributes'
];

/**
 * Maps an attribute name to another attribute who's value is an id or an array
 * of ids referencing an AutomationNode.
 * @param {!Object<string>}
 * @const
 */
var ATTRIBUTE_NAME_TO_ID_ATTRIBUTE = {
  'aria-activedescendant': 'activedescendantId',
  'aria-controls': 'controlsIds',
  'aria-describedby': 'describedbyIds',
  'aria-flowto': 'flowtoIds',
  'aria-labelledby': 'labelledbyIds',
  'aria-owns': 'ownsIds'
};

/**
 * A set of attributes ignored in the automation API.
 * @param {!Object<boolean>}
 * @const
 */
var ATTRIBUTE_BLACKLIST = {'activedescendantId': true,
                           'childTreeId': true,
                           'controlsIds': true,
                           'describedbyIds': true,
                           'flowtoIds': true,
                           'labelledbyIds': true,
                           'ownsIds': true
};

function defaultStringAttribute(opt_defaultVal) {
  return { default: undefined, reflectFrom: 'stringAttributes' };
}

function defaultIntAttribute(opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : 0;
  return { default: defaultVal, reflectFrom: 'intAttributes' };
}

function defaultFloatAttribute(opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : 0;
  return { default: defaultVal, reflectFrom: 'floatAttributes' };
}

function defaultBoolAttribute(opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : false;
  return { default: defaultVal, reflectFrom: 'boolAttributes' };
}

function defaultHtmlAttribute(opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : '';
  return { default: defaultVal, reflectFrom: 'htmlAttributes' };
}

function defaultIntListAttribute(opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : [];
  return { default: defaultVal, reflectFrom: 'intlistAttributes' };
}

function defaultNodeRefAttribute(idAttribute, opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : null;
  return { default: defaultVal,
           idFrom: 'intAttributes',
           idAttribute: idAttribute,
           isRef: true };
}

function defaultNodeRefListAttribute(idAttribute, opt_defaultVal) {
  var defaultVal = (opt_defaultVal !== undefined) ? opt_defaultVal : [];
  return { default: [],
           idFrom: 'intlistAttributes',
           idAttribute: idAttribute,
           isRef: true };
}

// Maps an attribute to its default value in an invalidated node.
// These attributes are taken directly from the Automation idl.
var DefaultMixinAttributes = {
  description: defaultStringAttribute(),
  help: defaultStringAttribute(),
  name: defaultStringAttribute(),
  value: defaultStringAttribute(),
  htmlTag: defaultStringAttribute(),
  hierarchicalLevel: defaultIntAttribute(),
  controls: defaultNodeRefListAttribute('controlsIds'),
  describedby: defaultNodeRefListAttribute('describedbyIds'),
  flowto: defaultNodeRefListAttribute('flowtoIds'),
  labelledby: defaultNodeRefListAttribute('labelledbyIds'),
  owns: defaultNodeRefListAttribute('ownsIds'),
  wordStarts: defaultIntListAttribute(),
  wordEnds: defaultIntListAttribute()
};

var ActiveDescendantMixinAttribute = {
  activedescendant: defaultNodeRefAttribute('activedescendantId')
};

var LinkMixinAttributes = {
  url: defaultStringAttribute()
};

var DocumentMixinAttributes = {
  docUrl: defaultStringAttribute(),
  docTitle: defaultStringAttribute(),
  docLoaded: defaultStringAttribute(),
  docLoadingProgress: defaultFloatAttribute()
};

var ScrollableMixinAttributes = {
  scrollX: defaultIntAttribute(),
  scrollXMin: defaultIntAttribute(),
  scrollXMax: defaultIntAttribute(),
  scrollY: defaultIntAttribute(),
  scrollYMin: defaultIntAttribute(),
  scrollYMax: defaultIntAttribute()
};

var EditableTextMixinAttributes = {
  textSelStart: defaultIntAttribute(-1),
  textSelEnd: defaultIntAttribute(-1),
  type: defaultHtmlAttribute()
};

var RangeMixinAttributes = {
  valueForRange: defaultFloatAttribute(),
  minValueForRange: defaultFloatAttribute(),
  maxValueForRange: defaultFloatAttribute()
};

var TableMixinAttributes = {
  tableRowCount: defaultIntAttribute(),
  tableColumnCount: defaultIntAttribute()
};

var TableCellMixinAttributes = {
  tableCellColumnIndex: defaultIntAttribute(),
  tableCellColumnSpan: defaultIntAttribute(1),
  tableCellRowIndex: defaultIntAttribute(),
  tableCellRowSpan: defaultIntAttribute(1)
};

var LiveRegionMixinAttributes = {
  containerLiveAtomic: defaultBoolAttribute(),
  containerLiveBusy: defaultBoolAttribute(),
  containerLiveRelevant: defaultStringAttribute(),
  containerLiveStatus: defaultStringAttribute(),
};

/**
 * AutomationRootNode.
 *
 * An AutomationRootNode is the javascript end of an AXTree living in the
 * browser. AutomationRootNode handles unserializing incremental updates from
 * the source AXTree. Each update contains node data that form a complete tree
 * after applying the update.
 *
 * A brief note about ids used through this class. The source AXTree assigns
 * unique ids per node and we use these ids to build a hash to the actual
 * AutomationNode object.
 * Thus, tree traversals amount to a lookup in our hash.
 *
 * The tree itself is identified by the accessibility tree id of the
 * renderer widget host.
 * @constructor
 */
function AutomationRootNodeImpl(treeID) {
  AutomationNodeImpl.call(this, this);
  this.treeID = treeID;
  this.axNodeDataCache_ = {};
}

AutomationRootNodeImpl.prototype = {
  __proto__: AutomationNodeImpl.prototype,

  isRootNode: true,
  treeID: -1,

  get: function(id) {
    if (id == undefined)
      return undefined;

    return this.axNodeDataCache_[id];
  },

  unserialize: function(update) {
    var updateState = { pendingNodes: {}, newNodes: {} };
    var oldRootId = this.id;

    if (update.nodeIdToClear < 0) {
        logging.WARNING('Bad nodeIdToClear: ' + update.nodeIdToClear);
        lastError.set('automation',
                      'Bad update received on automation tree',
                      null,
                      chrome);
        return false;
    } else if (update.nodeIdToClear > 0) {
      var nodeToClear = this.axNodeDataCache_[update.nodeIdToClear];
      if (!nodeToClear) {
        logging.WARNING('Bad nodeIdToClear: ' + update.nodeIdToClear +
                        ' (not in cache)');
        lastError.set('automation',
                      'Bad update received on automation tree',
                      null,
                      chrome);
        return false;
      }
      if (nodeToClear === this.wrapper) {
        this.invalidate_(nodeToClear);
      } else {
        var children = nodeToClear.children;
        for (var i = 0; i < children.length; i++)
          this.invalidate_(children[i]);
        var nodeToClearImpl = privates(nodeToClear).impl;
        nodeToClearImpl.childIds = []
        updateState.pendingNodes[nodeToClearImpl.id] = nodeToClear;
      }
    }

    for (var i = 0; i < update.nodes.length; i++) {
      if (!this.updateNode_(update.nodes[i], updateState))
        return false;
    }

    if (Object.keys(updateState.pendingNodes).length > 0) {
      logging.WARNING('Nodes left pending by the update: ' +
          $JSON.stringify(updateState.pendingNodes));
      lastError.set('automation',
                    'Bad update received on automation tree',
                    null,
                    chrome);
      return false;
    }

    // Notify tree change observers of new nodes.
    // TODO(dmazzoni): Notify tree change observers of changed nodes,
    // and handle subtreeCreated and nodeCreated properly.
    var observers = automationUtil.treeChangeObservers;
    if (observers.length > 0) {
      for (var nodeId in updateState.newNodes) {
        var node = updateState.newNodes[nodeId];
        var treeChange =
            {target: node, type: schema.TreeChangeType.nodeCreated};
        for (var i = 0; i < observers.length; i++) {
          try {
            observers[i](treeChange);
          } catch (e) {
            console.error('Error in tree change observer for ' +
                treeChange.type + ': ' + e.message +
                '\nStack trace: ' + e.stack);
          }
        }
      }
    }

    return true;
  },

  destroy: function() {
    if (this.hostTree)
      this.hostTree.childTree = undefined;
    this.hostTree = undefined;

    this.dispatchEvent(schema.EventType.destroyed);
    this.invalidate_(this.wrapper);
  },

  onAccessibilityEvent: function(eventParams) {
    if (!this.unserialize(eventParams.update)) {
      logging.WARNING('unserialization failed');
      return false;
    }

    var targetNode = this.get(eventParams.targetID);
    if (targetNode) {
      var targetNodeImpl = privates(targetNode).impl;
      targetNodeImpl.dispatchEvent(eventParams.eventType);
    } else {
      logging.WARNING('Got ' + eventParams.eventType +
                      ' event on unknown node: ' + eventParams.targetID +
                      '; this: ' + this.id);
    }
    return true;
  },

  toString: function() {
    function toStringInternal(node, indent) {
      if (!node)
        return '';
      var output =
          new Array(indent).join(' ') +
          AutomationNodeImpl.prototype.toString.call(node) +
          '\n';
      indent += 2;
      for (var i = 0; i < node.children.length; i++)
        output += toStringInternal(node.children[i], indent);
      return output;
    }
    return toStringInternal(this, 0);
  },

  invalidate_: function(node) {
    if (!node)
      return;

    // Notify tree change observers of the removed node.
    var observers = automationUtil.treeChangeObservers;
    if (observers.length > 0) {
      var treeChange = {target: node, type: schema.TreeChangeType.nodeRemoved};
      for (var i = 0; i < observers.length; i++) {
        try {
          observers[i](treeChange);
        } catch (e) {
          console.error('Error in tree change observer for ' + treeChange.type +
              ': ' + e.message + '\nStack trace: ' + e.stack);
        }
      }
    }

    var children = node.children;

    for (var i = 0, child; child = children[i]; i++) {
      // Do not invalidate into subrooted nodes.
      // TODO(dtseng): Revisit logic once out of proc iframes land.
      if (child.root != node.root)
        continue;
      this.invalidate_(child);
    }

    // Retrieve the internal AutomationNodeImpl instance for this node.
    // This object is not accessible outside of bindings code, but we can access
    // it here.
    var nodeImpl = privates(node).impl;
    var id = nodeImpl.id;
    for (var key in AutomationAttributeDefaults) {
      nodeImpl[key] = AutomationAttributeDefaults[key];
    }

    nodeImpl.attributesInternal = {};
    for (var key in DefaultMixinAttributes) {
      var mixinAttribute = DefaultMixinAttributes[key];
      if (!mixinAttribute.isRef)
        nodeImpl.attributesInternal[key] = mixinAttribute.default;
    }
    nodeImpl.childIds = [];
    nodeImpl.id = id;
    delete this.axNodeDataCache_[id];
  },

  deleteOldChildren_: function(node, newChildIds) {
    // Create a set of child ids in |src| for fast lookup, and return false
    // if a duplicate is found;
    var newChildIdSet = {};
    for (var i = 0; i < newChildIds.length; i++) {
      var childId = newChildIds[i];
      if (newChildIdSet[childId]) {
        logging.WARNING('Node ' + privates(node).impl.id +
                        ' has duplicate child id ' + childId);
        lastError.set('automation',
                      'Bad update received on automation tree',
                      null,
                      chrome);
        return false;
      }
      newChildIdSet[newChildIds[i]] = true;
    }

    // Delete the old children.
    var nodeImpl = privates(node).impl;
    var oldChildIds = nodeImpl.childIds;
    for (var i = 0; i < oldChildIds.length;) {
      var oldId = oldChildIds[i];
      if (!newChildIdSet[oldId]) {
        this.invalidate_(this.axNodeDataCache_[oldId]);
        oldChildIds.splice(i, 1);
      } else {
        i++;
      }
    }
    nodeImpl.childIds = oldChildIds;

    return true;
  },

  createNewChildren_: function(node, newChildIds, updateState) {
    logging.CHECK(node);
    var success = true;

    for (var i = 0; i < newChildIds.length; i++) {
      var childId = newChildIds[i];
      var childNode = this.axNodeDataCache_[childId];
      if (childNode) {
        if (childNode.parent != node) {
          var parentId = -1;
          if (childNode.parent) {
            var parentImpl = privates(childNode.parent).impl;
            parentId = parentImpl.id;
          }
          // This is a serious error - nodes should never be reparented.
          // If this case occurs, continue so this node isn't left in an
          // inconsistent state, but return failure at the end.
          logging.WARNING('Node ' + childId + ' reparented from ' +
                          parentId + ' to ' + privates(node).impl.id);
          lastError.set('automation',
                        'Bad update received on automation tree',
                        null,
                        chrome);
          success = false;
          continue;
        }
      } else {
        childNode = new AutomationNode(this);
        this.axNodeDataCache_[childId] = childNode;
        privates(childNode).impl.id = childId;
        updateState.pendingNodes[childId] = childNode;
        updateState.newNodes[childId] = childNode;
      }
      privates(childNode).impl.indexInParent = i;
      privates(childNode).impl.parentID = privates(node).impl.id;
    }

    return success;
  },

  setData_: function(node, nodeData) {
    var nodeImpl = privates(node).impl;

    // TODO(dtseng): Make into set listing all hosting node roles.
    if (nodeData.role == schema.RoleType.webView ||
        nodeData.role == schema.RoleType.embeddedObject) {
      if (nodeImpl.childTreeID !== nodeData.intAttributes.childTreeId)
        nodeImpl.pendingChildFrame = true;

      if (nodeImpl.pendingChildFrame) {
        nodeImpl.childTreeID = nodeData.intAttributes.childTreeId;
        automationUtil.storeTreeCallback(nodeImpl.childTreeID, function(root) {
          nodeImpl.pendingChildFrame = false;
          nodeImpl.childTree = root;
          privates(root).impl.hostTree = node;
          if (root.attributes.docLoadingProgress == 1)
            privates(root).impl.dispatchEvent(schema.EventType.loadComplete);
          nodeImpl.dispatchEvent(schema.EventType.childrenChanged);
        });
        automationInternal.enableFrame(nodeImpl.childTreeID);
      }
    }
    for (var key in AutomationAttributeDefaults) {
      if (key in nodeData)
        nodeImpl[key] = nodeData[key];
      else
        nodeImpl[key] = AutomationAttributeDefaults[key];
    }

    // Set all basic attributes.
    this.mixinAttributes_(nodeImpl, DefaultMixinAttributes, nodeData);

    // If this is a rootWebArea or webArea, set document attributes.
    if (nodeData.role == schema.RoleType.rootWebArea ||
        nodeData.role == schema.RoleType.webArea) {
      this.mixinAttributes_(nodeImpl, DocumentMixinAttributes, nodeData);
    }

    // If this is a scrollable area, set scrollable attributes.
    for (var scrollAttr in ScrollableMixinAttributes) {
      var spec = ScrollableMixinAttributes[scrollAttr];
      if (this.findAttribute_(scrollAttr, spec, nodeData) !== undefined) {
        this.mixinAttributes_(nodeImpl, ScrollableMixinAttributes, nodeData);
        break;
      }
    }

    // If this is inside a live region, set live region mixins.
    var attr = 'containerLiveStatus';
    var spec = LiveRegionMixinAttributes[attr];
    if (this.findAttribute_(attr, spec, nodeData) !== undefined) {
      this.mixinAttributes_(nodeImpl, LiveRegionMixinAttributes, nodeData);
    }

    // If this is a link, set link attributes
    if (nodeData.role == 'link') {
      this.mixinAttributes_(nodeImpl, LinkMixinAttributes, nodeData);
    }

    // If this is an editable text area, set editable text attributes.
    if (nodeData.role == schema.RoleType.textField ||
        nodeData.role == schema.RoleType.spinButton) {
      this.mixinAttributes_(nodeImpl, EditableTextMixinAttributes, nodeData);
    }

    // If this is a range type, set range attributes.
    if (nodeData.role == schema.RoleType.progressIndicator ||
        nodeData.role == schema.RoleType.scrollBar ||
        nodeData.role == schema.RoleType.slider ||
        nodeData.role == schema.RoleType.spinButton) {
      this.mixinAttributes_(nodeImpl, RangeMixinAttributes, nodeData);
    }

    // If this is a table, set table attributes.
    if (nodeData.role == schema.RoleType.table) {
      this.mixinAttributes_(nodeImpl, TableMixinAttributes, nodeData);
    }

    // If this is a table cell, set table cell attributes.
    if (nodeData.role == schema.RoleType.cell) {
      this.mixinAttributes_(nodeImpl, TableCellMixinAttributes, nodeData);
    }

    // If this has an active descendant, expose it.
    if ('intAttributes' in nodeData &&
        'activedescendantId' in nodeData.intAttributes) {
      this.mixinAttributes_(nodeImpl, ActiveDescendantMixinAttribute, nodeData);
    }

    for (var i = 0; i < AutomationAttributeTypes.length; i++) {
      var attributeType = AutomationAttributeTypes[i];
      for (var attributeName in nodeData[attributeType]) {
        nodeImpl.attributesInternal[attributeName] =
            nodeData[attributeType][attributeName];
        if (ATTRIBUTE_BLACKLIST.hasOwnProperty(attributeName) ||
            nodeImpl.attributes.hasOwnProperty(attributeName)) {
          continue;
        } else if (
          ATTRIBUTE_NAME_TO_ID_ATTRIBUTE.hasOwnProperty(attributeName)) {
          this.defineReadonlyAttribute_(nodeImpl,
                                        nodeImpl.attributes,
                                        attributeName,
                                        true);
        } else {
          this.defineReadonlyAttribute_(nodeImpl,
                                        nodeImpl.attributes,
                                        attributeName);
        }
      }
    }
  },

  mixinAttributes_: function(nodeImpl, attributes, nodeData) {
    for (var attribute in attributes) {
      var spec = attributes[attribute];
      if (spec.isRef)
        this.mixinRelationshipAttribute_(nodeImpl, attribute, spec, nodeData);
      else
        this.mixinAttribute_(nodeImpl, attribute, spec, nodeData);
    }
  },

  mixinAttribute_: function(nodeImpl, attribute, spec, nodeData) {
    var value = this.findAttribute_(attribute, spec, nodeData);
    if (value === undefined)
      value = spec.default;
    nodeImpl.attributesInternal[attribute] = value;
    this.defineReadonlyAttribute_(nodeImpl, nodeImpl, attribute);
  },

  mixinRelationshipAttribute_: function(nodeImpl, attribute, spec, nodeData) {
    var idAttribute = spec.idAttribute;
    var idValue = spec.default;
    if (spec.idFrom in nodeData) {
      idValue = idAttribute in nodeData[spec.idFrom]
          ? nodeData[spec.idFrom][idAttribute] : idValue;
    }

    // Ok to define a list attribute with an empty list, but not a
    // single ref with a null ID.
    if (idValue === null)
      return;

    nodeImpl.attributesInternal[idAttribute] = idValue;
    this.defineReadonlyAttribute_(
      nodeImpl, nodeImpl, attribute, true, idAttribute);
  },

  findAttribute_: function(attribute, spec, nodeData) {
    if (!('reflectFrom' in spec))
      return;
    var attributeGroup = spec.reflectFrom;
    if (!(attributeGroup in nodeData))
      return;

    return nodeData[attributeGroup][attribute];
  },

  defineReadonlyAttribute_: function(
      node, object, attributeName, opt_isIDRef, opt_idAttribute) {
    if (attributeName in object)
      return;

    if (opt_isIDRef) {
      $Object.defineProperty(object, attributeName, {
        enumerable: true,
        get: function() {
          var idAttribute = opt_idAttribute ||
                            ATTRIBUTE_NAME_TO_ID_ATTRIBUTE[attributeName];
          var idValue = node.attributesInternal[idAttribute];
          if (Array.isArray(idValue)) {
            return idValue.map(function(current) {
              return node.rootImpl.get(current);
            }, this);
          }
          return node.rootImpl.get(idValue);
        }.bind(this),
      });
    } else {
      $Object.defineProperty(object, attributeName, {
        enumerable: true,
        get: function() {
          return node.attributesInternal[attributeName];
        }.bind(this),
      });
    }

    if (object instanceof AutomationNodeImpl) {
      // Also expose attribute publicly on the wrapper.
      $Object.defineProperty(object.wrapper, attributeName, {
        enumerable: true,
        get: function() {
          return object[attributeName];
        },
      });

    }
  },

  updateNode_: function(nodeData, updateState) {
    var node = this.axNodeDataCache_[nodeData.id];
    var didUpdateRoot = false;
    if (node) {
      delete updateState.pendingNodes[privates(node).impl.id];
    } else {
      if (nodeData.role != schema.RoleType.rootWebArea &&
          nodeData.role != schema.RoleType.desktop) {
        logging.WARNING(String(nodeData.id) +
                     ' is not in the cache and not the new root.');
        lastError.set('automation',
                      'Bad update received on automation tree',
                      null,
                      chrome);
        return false;
      }
      // |this| is an AutomationRootNodeImpl; retrieve the
      // AutomationRootNode instance instead.
      node = this.wrapper;
      didUpdateRoot = true;
      updateState.newNodes[this.id] = this.wrapper;
    }
    this.setData_(node, nodeData);

    // TODO(aboxhall): send onChanged event?
    logging.CHECK(node);
    if (!this.deleteOldChildren_(node, nodeData.childIds)) {
      if (didUpdateRoot) {
        this.invalidate_(this.wrapper);
      }
      return false;
    }
    var nodeImpl = privates(node).impl;

    var success = this.createNewChildren_(node,
                                          nodeData.childIds,
                                          updateState);
    nodeImpl.childIds = nodeData.childIds;
    this.axNodeDataCache_[nodeImpl.id] = node;

    return success;
  }
};


var AutomationNode = utils.expose('AutomationNode',
                                  AutomationNodeImpl,
                                  { functions: ['doDefault',
                                                'find',
                                                'findAll',
                                                'focus',
                                                'makeVisible',
                                                'matches',
                                                'setSelection',
                                                'showContextMenu',
                                                'addEventListener',
                                                'removeEventListener',
                                                'domQuerySelector',
                                                'toString' ],
                                    readonly: ['parent',
                                               'firstChild',
                                               'lastChild',
                                               'children',
                                               'previousSibling',
                                               'nextSibling',
                                               'isRootNode',
                                               'role',
                                               'state',
                                               'location',
                                               'attributes',
                                               'indexInParent',
                                               'root'] });

var AutomationRootNode = utils.expose('AutomationRootNode',
                                      AutomationRootNodeImpl,
                                      { superclass: AutomationNode });

exports.AutomationNode = AutomationNode;
exports.AutomationRootNode = AutomationRootNode;
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the browserAction API.

var binding = require('binding').Binding.create('browserAction');

var setIcon = require('setIcon').setIcon;
var getExtensionViews = requireNative('runtime').GetExtensionViews;
var sendRequest = require('sendRequest').sendRequest;
var lastError = require('lastError');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });

  apiFunctions.setCustomCallback('openPopup',
      function(name, request, callback, response) {
    if (!callback)
      return;

    if (lastError.hasError(chrome)) {
      callback();
    } else {
      var views = getExtensionViews(-1, 'POPUP');
      callback(views.length > 0 ? views[0] : null);
    }
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming RtpStream API.

var binding = require('binding').Binding.create('cast.streaming.rtpStream');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('destroy',
      function(transportId) {
        natives.DestroyCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('getSupportedParams',
      function(transportId) {
        return natives.GetSupportedParamsCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('start',
      function(transportId, params) {
        natives.StartCastRtpStream(transportId, params);
  });
  apiFunctions.setHandleRequest('stop',
      function(transportId) {
        natives.StopCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('toggleLogging',
      function(transportId, enable) {
        natives.ToggleLogging(transportId, enable);
  });
  apiFunctions.setHandleRequest('getRawEvents',
      function(transportId, extraData, callback) {
        natives.GetRawEvents(transportId, extraData, callback);
  });
  apiFunctions.setHandleRequest('getStats',
      function(transportId, callback) {
        natives.GetStats(transportId, callback);
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming Session API.

var binding = require('binding').Binding.create('cast.streaming.session');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('create',
      function(audioTrack, videoTrack, callback) {
        natives.CreateSession(audioTrack, videoTrack, callback);
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming UdpTransport API.

var binding = require('binding').Binding.create('cast.streaming.udpTransport');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('destroy', function(transportId) {
    natives.DestroyCastUdpTransport(transportId);
  });
  apiFunctions.setHandleRequest('setDestination',
    function(transportId, destination) {
      natives.SetDestinationCastUdpTransport(transportId, destination);
  });
  apiFunctions.setHandleRequest('setOptions',
    function(transportId, options) {
      natives.SetOptionsCastUdpTransport(transportId, options);
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming Session API.

var binding = require('binding').Binding.create(
    'cast.streaming.receiverSession');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('createAndBind',
      function(ap, vp, local, weidgth, height, fr, url, cb, op) {
        natives.StartCastRtpReceiver(
            ap, vp, local, weidgth, height, fr, url, cb, op);
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var Event = require('event_bindings').Event;
var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  extendedSchema.unshift({'type': 'string'});
  return extendedSchema;
}

function ChromeDirectSetting(prefKey, valueSchema) {
  this.get = function(details, callback) {
    var getSchema = this.functionSchemas.get.definition.parameters;
    validate([details, callback], getSchema);
    return sendRequest('types.private.ChromeDirectSetting.get',
                       [prefKey, details, callback],
                       extendSchema(getSchema));
  };
  this.set = function(details, callback) {
    var setSchema = $Array.slice(
        this.functionSchemas.set.definition.parameters);
    setSchema[0].properties.value = valueSchema;
    validate([details, callback], setSchema);
    return sendRequest('types.private.ChromeDirectSetting.set',
                       [prefKey, details, callback],
                       extendSchema(setSchema));
  };
  this.clear = function(details, callback) {
    var clearSchema = this.functionSchemas.clear.definition.parameters;
    validate([details, callback], clearSchema);
    return sendRequest('types.private.ChromeDirectSetting.clear',
                       [prefKey, details, callback],
                       extendSchema(clearSchema));
  };
  this.onChange = new Event('types.private.ChromeDirectSetting.' +
                            prefKey +
                            '.onChange');
};

exports.ChromeDirectSetting = ChromeDirectSetting;

// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var Event = require('event_bindings').Event;
var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  extendedSchema.unshift({'type': 'string'});
  return extendedSchema;
}

function ChromeSetting(prefKey, valueSchema) {
  this.get = function(details, callback) {
    var getSchema = this.functionSchemas.get.definition.parameters;
    validate([details, callback], getSchema);
    return sendRequest('types.ChromeSetting.get',
                       [prefKey, details, callback],
                       extendSchema(getSchema));
  };
  this.set = function(details, callback) {
    var setSchema = $Array.slice(
        this.functionSchemas.set.definition.parameters);
    setSchema[0].properties.value = valueSchema;
    validate([details, callback], setSchema);
    return sendRequest('types.ChromeSetting.set',
                       [prefKey, details, callback],
                       extendSchema(setSchema));
  };
  this.clear = function(details, callback) {
    var clearSchema = this.functionSchemas.clear.definition.parameters;
    validate([details, callback], clearSchema);
    return sendRequest('types.ChromeSetting.clear',
                       [prefKey, details, callback],
                       extendSchema(clearSchema));
  };
  this.onChange = new Event('types.ChromeSetting.' + prefKey + '.onChange');
};

exports.ChromeSetting = ChromeSetting;
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var binding = require('binding').Binding.create('chromeWebViewInternal');
var contextMenusHandlers = require('contextMenusHandlers');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var handlers = contextMenusHandlers.create(true /* isWebview */);

  apiFunctions.setHandleRequest('contextMenusCreate',
      handlers.requestHandlers.create);

  apiFunctions.setCustomCallback('contextMenusCreate',
      handlers.callbacks.create);

  apiFunctions.setCustomCallback('contextMenusUpdate',
      handlers.callbacks.update);

  apiFunctions.setCustomCallback('contextMenusRemove',
      handlers.callbacks.remove);

  apiFunctions.setCustomCallback('contextMenusRemoveAll',
      handlers.callbacks.removeAll);

});

exports.ChromeWebView = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This module implements chrome-specific <webview> API.
// See web_view_api_methods.js for details.

var ChromeWebView = require('chromeWebViewInternal').ChromeWebView;
var ChromeWebViewSchema =
    requireNative('schema_registry').GetSchema('chromeWebViewInternal');
var CreateEvent = require('guestViewEvents').CreateEvent;
var EventBindings = require('event_bindings');
var GuestViewInternalNatives = requireNative('guest_view_internal');
var idGeneratorNatives = requireNative('id_generator');
var Utils = require('utils');
var WebViewImpl = require('webView').WebViewImpl;

// This is the only "webViewInternal.onClicked" named event for this renderer.
//
// Since we need an event per <webview>, we define events with suffix
// (subEventName) in each of the <webview>. Behind the scenes, this event is
// registered as a ContextMenusEvent, with filter set to the webview's
// |viewInstanceId|. Any time a ContextMenusEvent is dispatched, we re-dispatch
// it to the subEvent's listeners. This way
// <webview>.contextMenus.onClicked behave as a regular chrome Event type.
var ContextMenusEvent = CreateEvent('chromeWebViewInternal.onClicked');
// See comment above.
var ContextMenusHandlerEvent =
    CreateEvent('chromeWebViewInternal.onContextMenuShow');

// -----------------------------------------------------------------------------
// ContextMenusOnClickedEvent object.

// This event is exposed as <webview>.contextMenus.onClicked.
function ContextMenusOnClickedEvent(webViewInstanceId,
                                    opt_eventName,
                                    opt_argSchemas,
                                    opt_eventOptions) {
  var subEventName = GetUniqueSubEventName(opt_eventName);
  EventBindings.Event.call(this,
                           subEventName,
                           opt_argSchemas,
                           opt_eventOptions,
                           webViewInstanceId);

  var view = GuestViewInternalNatives.GetViewFromID(webViewInstanceId);
  if (!view) {
    return;
  }
  view.events.addScopedListener(ContextMenusEvent, function() {
    // Re-dispatch to subEvent's listeners.
    $Function.apply(this.dispatch, this, $Array.slice(arguments));
  }.bind(this), {instanceId: webViewInstanceId});
}

ContextMenusOnClickedEvent.prototype.__proto__ = EventBindings.Event.prototype;

function ContextMenusOnContextMenuEvent(webViewInstanceId,
                                        opt_eventName,
                                        opt_argSchemas,
                                        opt_eventOptions) {
  var subEventName = GetUniqueSubEventName(opt_eventName);
  EventBindings.Event.call(this,
                           subEventName,
                           opt_argSchemas,
                           opt_eventOptions,
                           webViewInstanceId);

  var view = GuestViewInternalNatives.GetViewFromID(webViewInstanceId);
  if (!view) {
    return;
  }
  view.events.addScopedListener(ContextMenusHandlerEvent, function(e) {
    var defaultPrevented = false;
    var event = {
      'preventDefault': function() { defaultPrevented = true; }
    };

    // Re-dispatch to subEvent's listeners.
    $Function.apply(this.dispatch, this, [event]);

    if (!defaultPrevented) {
      // TODO(lazyboy): Remove |items| parameter completely from
      // ChromeWebView.showContextMenu as we don't do anything useful with it
      // currently.
      var items = [];
      var guestInstanceId = GuestViewInternalNatives.
          GetViewFromID(webViewInstanceId).guest.getId();
      ChromeWebView.showContextMenu(guestInstanceId, e.requestId, items);
    }
  }.bind(this), {instanceId: webViewInstanceId});
}

ContextMenusOnContextMenuEvent.prototype.__proto__ =
    EventBindings.Event.prototype;

// -----------------------------------------------------------------------------
// WebViewContextMenusImpl object.

// An instance of this class is exposed as <webview>.contextMenus.
function WebViewContextMenusImpl(viewInstanceId) {
  this.viewInstanceId_ = viewInstanceId;
}

WebViewContextMenusImpl.prototype.create = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusCreate, null, args);
};

WebViewContextMenusImpl.prototype.remove = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusRemove, null, args);
};

WebViewContextMenusImpl.prototype.removeAll = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusRemoveAll, null, args);
};

WebViewContextMenusImpl.prototype.update = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusUpdate, null, args);
};

var WebViewContextMenus = Utils.expose(
    'WebViewContextMenus', WebViewContextMenusImpl,
    { functions: ['create', 'remove', 'removeAll', 'update'] });

// -----------------------------------------------------------------------------

WebViewImpl.prototype.maybeSetupContextMenus = function() {
  if (!this.contextMenusOnContextMenuEvent_) {
    var eventName = 'chromeWebViewInternal.onContextMenuShow';
    var eventSchema =
        Utils.lookup(ChromeWebViewSchema.events, 'name', 'onShow');
    var eventOptions = {supportsListeners: true};
    this.contextMenusOnContextMenuEvent_ = new ContextMenusOnContextMenuEvent(
        this.viewInstanceId, eventName, eventSchema, eventOptions);
  }

  var createContextMenus = function() {
    return this.weakWrapper(function() {
      if (this.contextMenus_) {
        return this.contextMenus_;
      }

      this.contextMenus_ = new WebViewContextMenus(this.viewInstanceId);

      // Define 'onClicked' event property on |this.contextMenus_|.
      var getOnClickedEvent = function() {
        return this.weakWrapper(function() {
          if (!this.contextMenusOnClickedEvent_) {
            var eventName = 'chromeWebViewInternal.onClicked';
            var eventSchema =
                Utils.lookup(ChromeWebViewSchema.events, 'name', 'onClicked');
            var eventOptions = {supportsListeners: true};
            var onClickedEvent = new ContextMenusOnClickedEvent(
                this.viewInstanceId, eventName, eventSchema, eventOptions);
            this.contextMenusOnClickedEvent_ = onClickedEvent;
            return onClickedEvent;
          }
          return this.contextMenusOnClickedEvent_;
        });
      }.bind(this);
      $Object.defineProperty(
          this.contextMenus_,
          'onClicked',
          {get: getOnClickedEvent(), enumerable: true});
      $Object.defineProperty(
          this.contextMenus_,
          'onShow',
          {
            get: this.weakWrapper(function() {
              return this.contextMenusOnContextMenuEvent_;
            }),
            enumerable: true
          });
      return this.contextMenus_;
    });
  }.bind(this);

  // Expose <webview>.contextMenus object.
  // TODO(lazyboy): Add documentation for contextMenus:
  // http://crbug.com/470979.
  $Object.defineProperty(
      this.element,
      'contextMenus',
      {
        get: createContextMenus(),
        enumerable: true
      });
};

function GetUniqueSubEventName(eventName) {
  return eventName + '/' + idGeneratorNatives.GetNextId();
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the contentSettings API.

var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  extendedSchema.unshift({'type': 'string'});
  return extendedSchema;
}

function ContentSetting(contentType, settingSchema) {
  this.get = function(details, callback) {
    var getSchema = this.functionSchemas.get.definition.parameters;
    validate([details, callback], getSchema);
    return sendRequest('contentSettings.get',
                       [contentType, details, callback],
                       extendSchema(getSchema));
  };
  this.set = function(details, callback) {
    var setSchema = $Array.slice(
        this.functionSchemas.set.definition.parameters);
    setSchema[0].properties.setting = settingSchema;
    validate([details, callback], setSchema);
    return sendRequest('contentSettings.set',
                       [contentType, details, callback],
                       extendSchema(setSchema));
  };
  this.clear = function(details, callback) {
    var clearSchema = this.functionSchemas.clear.definition.parameters;
    validate([details, callback], clearSchema);
    return sendRequest('contentSettings.clear',
                       [contentType, details, callback],
                       extendSchema(clearSchema));
  };
  this.getResourceIdentifiers = function(callback) {
    var schema =
        this.functionSchemas.getResourceIdentifiers.definition.parameters;
    validate([callback], schema);
    return sendRequest(
        'contentSettings.getResourceIdentifiers',
        [contentType, callback],
        extendSchema(schema));
  };
}

exports.ContentSetting = ContentSetting;
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the declarativeContent API.

var binding = require('binding').Binding.create('declarativeContent');

var utils = require('utils');
var validate = require('schemaUtils').validate;
var canonicalizeCompoundSelector =
    requireNative('css_natives').CanonicalizeCompoundSelector;
var setIcon = require('setIcon').setIcon;

binding.registerCustomHook( function(api) {
  var declarativeContent = api.compiledApi;

  // Returns the schema definition of type |typeId| defined in |namespace|.
  function getSchema(typeId) {
    return utils.lookup(api.schema.types,
                        'id',
                        'declarativeContent.' + typeId);
  }

  // Helper function for the constructor of concrete datatypes of the
  // declarative content API.
  // Makes sure that |this| contains the union of parameters and
  // {'instanceType': 'declarativeContent.' + typeId} and validates the
  // generated union dictionary against the schema for |typeId|.
  function setupInstance(instance, parameters, typeId) {
    for (var key in parameters) {
      if ($Object.hasOwnProperty(parameters, key)) {
        instance[key] = parameters[key];
      }
    }
    instance.instanceType = 'declarativeContent.' + typeId;
    var schema = getSchema(typeId);
    validate([instance], [schema]);
  }

  function canonicalizeCssSelectors(selectors) {
    for (var i = 0; i < selectors.length; i++) {
      var canonicalizedSelector = canonicalizeCompoundSelector(selectors[i]);
      if (canonicalizedSelector == '') {
        throw new Error(
            'Element of \'css\' array must be a ' +
            'list of valid compound selectors: ' +
            selectors[i]);
      }
      selectors[i] = canonicalizedSelector;
    }
  }

  // Setup all data types for the declarative content API.
  declarativeContent.PageStateMatcher = function(parameters) {
    setupInstance(this, parameters, 'PageStateMatcher');
    if ($Object.hasOwnProperty(this, 'css')) {
      canonicalizeCssSelectors(this.css);
    }
  };
  declarativeContent.ShowPageAction = function(parameters) {
    setupInstance(this, parameters, 'ShowPageAction');
  };
  declarativeContent.RequestContentScript = function(parameters) {
    setupInstance(this, parameters, 'RequestContentScript');
  };
  // TODO(rockot): Do not expose this in M39 stable. Making this restriction
  // possible will take some extra work. See http://crbug.com/415315
  declarativeContent.SetIcon = function(parameters) {
    setIcon(parameters, function (data) {
      setupInstance(this, data, 'SetIcon');
    }.bind(this));
  };
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the desktopCapture API.

var binding = require('binding').Binding.create('desktopCapture');
var sendRequest = require('sendRequest').sendRequest;
var idGenerator = requireNative('id_generator');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var pendingRequests = {};

  function onRequestResult(id, result) {
    if (id in pendingRequests) {
      var callback = pendingRequests[id];
      delete pendingRequests[id];
      callback(result);
    }
  }

  apiFunctions.setHandleRequest('chooseDesktopMedia',
                                function(sources, target_tab, callback) {
    // |target_tab| is an optional parameter.
    if (callback === undefined) {
      callback = target_tab;
      target_tab = undefined;
    }
    var id = idGenerator.GetNextId();
    pendingRequests[id] = callback;
    sendRequest(this.name,
                [id, sources, target_tab, onRequestResult.bind(null, id)],
                this.definition.parameters, {});
    return id;
  });

  apiFunctions.setHandleRequest('cancelChooseDesktopMedia', function(id) {
    if (id in pendingRequests) {
      delete pendingRequests[id];
      sendRequest(this.name, [id], this.definition.parameters, {});
    }
  });
});

exports.binding = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the developerPrivate API.

var binding = require('binding').Binding.create('developerPrivate');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // Converts the argument of |functionName| from DirectoryEntry to URL.
  function bindFileSystemFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(directoryEntry, callback) {
          var fileSystemName = directoryEntry.filesystem.name;
          var relativePath = $String.slice(directoryEntry.fullPath, 1);
          var url = directoryEntry.toURL();
          return [fileSystemName, relativePath, url, callback];
    });
  }

  bindFileSystemFunction('loadDirectory');

  // developerPrivate.enable is the same as chrome.management.setEnabled.
  // TODO(devlin): Migrate callers off developerPrivate.enable.
  bindingsAPI.compiledApi.enable = chrome.management.setEnabled;

  apiFunctions.setHandleRequest('allowFileAccess',
                                function(id, allow, callback) {
    chrome.developerPrivate.updateExtensionConfiguration(
        {extensionId: id, fileAccess: allow}, callback);
  });

  apiFunctions.setHandleRequest('allowIncognito',
                                function(id, allow, callback) {
    chrome.developerPrivate.updateExtensionConfiguration(
        {extensionId: id, incognitoAccess: allow}, callback);
  });

  apiFunctions.setHandleRequest('inspect', function(options, callback) {
    var renderViewId = options.render_view_id;
    if (typeof renderViewId == 'string') {
      renderViewId = parseInt(renderViewId);
      if (isNaN(renderViewId))
        throw new Error('Invalid value for render_view_id');
    }
    var renderProcessId = options.render_process_id;
    if (typeof renderProcessId == 'string') {
      renderProcessId = parseInt(renderProcessId);
      if (isNaN(renderProcessId))
        throw new Error('Invalid value for render_process_id');
    }
    chrome.developerPrivate.openDevTools({
        extensionId: options.extension_id,
        renderProcessId: renderProcessId,
        renderViewId: renderViewId,
        incognito: options.incognito
    }, callback);
  });
});

exports.binding = binding.generate();
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the downloads API.

var binding = require('binding').Binding.create('downloads');
var downloadsInternal = require('binding').Binding.create(
    'downloadsInternal').generate();
var eventBindings = require('event_bindings');

eventBindings.registerArgumentMassager(
    'downloads.onDeterminingFilename',
    function massage_determining_filename(args, dispatch) {
  var downloadItem = args[0];
  // Copy the id so that extensions can't change it.
  var downloadId = downloadItem.id;
  var suggestable = true;
  function isValidResult(result) {
    if (result === undefined)
      return false;
    if (typeof(result) != 'object') {
      console.error('Error: Invocation of form suggest(' + typeof(result) +
                    ') doesn\'t match definition suggest({filename: string, ' +
                    'conflictAction: string})');
      return false;
    } else if ((typeof(result.filename) != 'string') ||
               (result.filename.length == 0)) {
      console.error('Error: "filename" parameter to suggest() must be a ' +
                    'non-empty string');
      return false;
    } else if ([undefined, 'uniquify', 'overwrite', 'prompt'].indexOf(
                 result.conflictAction) < 0) {
      console.error('Error: "conflictAction" parameter to suggest() must be ' +
                    'one of undefined, "uniquify", "overwrite", "prompt"');
      return false;
    }
    return true;
  }
  function suggestCallback(result) {
    if (!suggestable) {
      console.error('suggestCallback may not be called more than once.');
      return;
    }
    suggestable = false;
    if (isValidResult(result)) {
      downloadsInternal.determineFilename(
          downloadId, result.filename, result.conflictAction || "");
    } else {
      downloadsInternal.determineFilename(downloadId, "", "");
    }
  }
  try {
    var results = dispatch([downloadItem, suggestCallback]);
    var async = (results &&
                 results.results &&
                 (results.results.length != 0) &&
                 (results.results[0] === true));
    if (suggestable && !async)
      suggestCallback();
  } catch (e) {
    suggestCallback();
    throw e;
  }
});
exports.binding = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the enterprise.platformKeys API.

// The platformKeys API consists of two major parts:
//   - the certificate management.
//   - the key generation and crypto operations and
// The former is implemented without custom binding as static functions.
// The latter is exposed by implementing WebCrypto's SubtleCrypto interface.
// The internal API provides the key and crypto operations through static
// functions expecting token IDs and this custom binding adds the SubtleCrypto
// wrapper.
// The Token object holds the token id and the SubtleCrypto member.

var binding = require('binding').Binding.create('enterprise.platformKeys');
var Token = require('enterprise.platformKeys.Token').Token;
var internalAPI = require('enterprise.platformKeys.internalAPI');

binding.registerCustomHook(function(api) {
  var apiFunctions = api.apiFunctions;

  var ret = apiFunctions.setHandleRequest('getTokens', function(callback) {
    internalAPI.getTokens(function(tokenIds) {
      callback($Array.map(tokenIds,
                          function(tokenId) { return new Token(tokenId); }));
    });
  });
});

exports.binding = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var binding = require('binding')
                  .Binding.create('enterprise.platformKeysInternal')
                  .generate();

exports.getTokens = binding.getTokens;
exports.generateKey = binding.generateKey;
exports.sign = binding.sign;
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');
var intersect = require('platformKeys.utils').intersect;
var keyModule = require('platformKeys.Key');
var Key = keyModule.Key;
var KeyType = keyModule.KeyType;
var KeyUsage = keyModule.KeyUsage;

/**
 * Implementation of WebCrypto.KeyPair used in enterprise.platformKeys.
 * @param {ArrayBuffer} publicKeySpki The Subject Public Key Info in DER
 *   encoding.
 * @param {KeyAlgorithm} algorithm The algorithm identifier.
 * @param {KeyUsage[]} usages The allowed key usages.
 * @constructor
 */
var KeyPairImpl = function(publicKeySpki, algorithm, usages) {
  this.publicKey = new Key(KeyType.public,
                           publicKeySpki,
                           algorithm,
                           intersect([KeyUsage.verify], usages),
                           true /* extractable */);
  this.privateKey = new Key(KeyType.private,
                            publicKeySpki,
                            algorithm,
                            intersect([KeyUsage.sign], usages),
                            false /* not extractable */);
};

exports.KeyPair = utils.expose('KeyPair',
                               KeyPairImpl,
                               {readonly:['publicKey', 'privateKey']});
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');
var internalAPI = require('enterprise.platformKeys.internalAPI');
var intersect = require('platformKeys.utils').intersect;
var subtleCryptoModule = require('platformKeys.SubtleCrypto');
var SubtleCrypto = subtleCryptoModule.SubtleCrypto;
var SubtleCryptoImpl = subtleCryptoModule.SubtleCryptoImpl;
var KeyPair = require('enterprise.platformKeys.KeyPair').KeyPair;
var KeyUsage = require('platformKeys.Key').KeyUsage;

var normalizeAlgorithm =
    requireNative('platform_keys_natives').NormalizeAlgorithm;

// This error is thrown by the internal and public API's token functions and
// must be rethrown by this custom binding. Keep this in sync with the C++ part
// of this API.
var errorInvalidToken = "The token is not valid.";

// The following errors are specified in WebCrypto.
// TODO(pneubeck): These should be DOMExceptions.
function CreateNotSupportedError() {
  return new Error('The algorithm is not supported');
}

function CreateInvalidAccessError() {
  return new Error('The requested operation is not valid for the provided key');
}

function CreateDataError() {
  return new Error('Data provided to an operation does not meet requirements');
}

function CreateSyntaxError() {
  return new Error('A required parameter was missing or out-of-range');
}

function CreateOperationError() {
  return new Error('The operation failed for an operation-specific reason');
}

// Catches an |internalErrorInvalidToken|. If so, forwards it to |reject| and
// returns true.
function catchInvalidTokenError(reject) {
  if (chrome.runtime.lastError &&
      chrome.runtime.lastError.message == errorInvalidToken) {
    reject(chrome.runtime.lastError);
    return true;
  }
  return false;
}

// Returns true if |array| is a BigInteger describing the standard public
// exponent 65537. In particular, it ignores leading zeros as required by the
// BigInteger definition in WebCrypto.
function equalsStandardPublicExponent(array) {
  var expected = [0x01, 0x00, 0x01];
  if (array.length < expected.length)
    return false;
  for (var i = 0; i < array.length; i++) {
    var expectedDigit = 0;
    if (i < expected.length) {
      // |expected| is symmetric, endianness doesn't matter.
      expectedDigit = expected[i];
    }
    if (array[array.length - 1 - i] !== expectedDigit)
      return false;
  }
  return true;
}

/**
 * Implementation of WebCrypto.SubtleCrypto used in enterprise.platformKeys.
 * Derived from platformKeys.SubtleCrypto.
 * @param {string} tokenId The id of the backing Token.
 * @constructor
 */
var EnterpriseSubtleCryptoImpl = function(tokenId) {
  SubtleCryptoImpl.call(this, tokenId);
};

EnterpriseSubtleCryptoImpl.prototype =
    Object.create(SubtleCryptoImpl.prototype);

EnterpriseSubtleCryptoImpl.prototype.generateKey =
    function(algorithm, extractable, keyUsages) {
  var subtleCrypto = this;
  return new Promise(function(resolve, reject) {
    // TODO(pneubeck): Apply the algorithm normalization of the WebCrypto
    // implementation.

    if (extractable) {
      // Note: This deviates from WebCrypto.SubtleCrypto.
      throw CreateNotSupportedError();
    }
    if (intersect(keyUsages, [KeyUsage.sign, KeyUsage.verify]).length !=
        keyUsages.length) {
      throw CreateDataError();
    }
    var normalizedAlgorithmParameters =
        normalizeAlgorithm(algorithm, 'GenerateKey');
    if (!normalizedAlgorithmParameters) {
      // TODO(pneubeck): It's not clear from the WebCrypto spec which error to
      // throw here.
      throw CreateSyntaxError();
    }

    // normalizeAlgorithm returns an array, but publicExponent should be a
    // Uint8Array.
    normalizedAlgorithmParameters.publicExponent =
        new Uint8Array(normalizedAlgorithmParameters.publicExponent);

    if (normalizedAlgorithmParameters.name !== 'RSASSA-PKCS1-v1_5' ||
        !equalsStandardPublicExponent(
            normalizedAlgorithmParameters.publicExponent)) {
      // Note: This deviates from WebCrypto.SubtleCrypto.
      throw CreateNotSupportedError();
    }

    internalAPI.generateKey(subtleCrypto.tokenId,
                            normalizedAlgorithmParameters.modulusLength,
                            function(spki) {
      if (catchInvalidTokenError(reject))
        return;
      if (chrome.runtime.lastError) {
        reject(CreateOperationError());
        return;
      }
      resolve(new KeyPair(spki, normalizedAlgorithmParameters, keyUsages));
    });
  });
};

exports.SubtleCrypto =
    utils.expose('SubtleCrypto',
                 EnterpriseSubtleCryptoImpl,
                 {
                   superclass: SubtleCrypto,
                   functions: ['generateKey']
                   // ['sign', 'exportKey'] are exposed by the base class
                 });
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');
var SubtleCrypto = require('enterprise.platformKeys.SubtleCrypto').SubtleCrypto;

/**
 * Implementation of enterprise.platformKeys.Token.
 * @param {string} id The id of the new Token.
 * @constructor
 */
var TokenImpl = function(id) {
  this.id = id;
  this.subtleCrypto = new SubtleCrypto(id);
};

exports.Token =
    utils.expose('Token', TokenImpl, {readonly:['id', 'subtleCrypto']});
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the feedbackPrivate API.

var binding = require('binding').Binding.create('feedbackPrivate');

var blobNatives = requireNative('blob_natives');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setUpdateArgumentsPostValidate(
      "sendFeedback", function(feedbackInfo, callback) {
    var attachedFileBlobUuid = '';
    var screenshotBlobUuid = '';

    if (feedbackInfo.attachedFile)
      attachedFileBlobUuid =
          blobNatives.GetBlobUuid(feedbackInfo.attachedFile.data);
    if (feedbackInfo.screenshot)
      screenshotBlobUuid =
          blobNatives.GetBlobUuid(feedbackInfo.screenshot);

    feedbackInfo.attachedFileBlobUuid = attachedFileBlobUuid;
    feedbackInfo.screenshotBlobUuid = screenshotBlobUuid;

    return [feedbackInfo, callback];
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the fileBrowserHandler API.

var binding = require('binding').Binding.create('fileBrowserHandler');

var eventBindings = require('event_bindings');
var fileBrowserNatives = requireNative('file_browser_handler');
var GetExternalFileEntry = fileBrowserNatives.GetExternalFileEntry;
var fileBrowserHandlerInternal = require('binding').Binding.create(
    'fileBrowserHandlerInternal').generate();

eventBindings.registerArgumentMassager('fileBrowserHandler.onExecute',
    function(args, dispatch) {
  if (args.length < 2) {
    dispatch(args);
    return;
  }
  var fileList = args[1].entries;
  if (!fileList) {
    dispatch(args);
    return;
  }
  // The second parameter for this event's payload is file definition
  // dictionary that we used to reconstruct File API's Entry instance
  // here.
  for (var i = 0; i < fileList.length; i++)
    fileList[i] = GetExternalFileEntry(fileList[i]);
  dispatch(args);
});

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('selectFile',
                                function(selectionParams, callback) {
    function internalCallback(externalCallback, internalResult) {
      if (!externalCallback)
        return;
      var result = undefined;
      if (internalResult) {
        result = { success: internalResult.success, entry: null };
        if (internalResult.success)
          result.entry = GetExternalFileEntry(internalResult.entry);
      }

      externalCallback(result);
    }

    return fileBrowserHandlerInternal.selectFile(
        selectionParams, $Function.bind(internalCallback, null, callback));
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the fileManagerPrivate API.

// Bindings
var binding = require('binding').Binding.create('fileManagerPrivate');
var eventBindings = require('event_bindings');

// Natives
var fileManagerPrivateNatives = requireNative('file_manager_private');
var fileBrowserHandlerNatives = requireNative('file_browser_handler');

// Internals
var fileManagerPrivateInternal =
    require('binding').Binding.create('fileManagerPrivateInternal').generate();

// Shorthands
var GetFileSystem = fileManagerPrivateNatives.GetFileSystem;
var GetExternalFileEntry = fileBrowserHandlerNatives.GetExternalFileEntry;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setCustomCallback('searchDrive',
      function(name, request, callback, response) {
    if (response && !response.error && response.entries) {
      response.entries = response.entries.map(function(entry) {
        return GetExternalFileEntry(entry);
      });
    }

    // So |callback| doesn't break if response is not defined.
    if (!response)
      response = {};

    if (callback)
      callback(response.entries, response.nextFeed);
  });

  apiFunctions.setCustomCallback('searchDriveMetadata',
      function(name, request, callback, response) {
    if (response && !response.error) {
      for (var i = 0; i < response.length; i++) {
        response[i].entry =
            GetExternalFileEntry(response[i].entry);
      }
    }

    // So |callback| doesn't break if response is not defined.
    if (!response)
      response = {};

    if (callback)
      callback(response);
  });

  apiFunctions.setHandleRequest('resolveIsolatedEntries',
                                function(entries, callback) {
    var urls = entries.map(function(entry) {
      return fileBrowserHandlerNatives.GetEntryURL(entry);
    });
    fileManagerPrivateInternal.resolveIsolatedEntries(urls, function(
        entryDescriptions) {
      callback(entryDescriptions.map(function(description) {
        return GetExternalFileEntry(description);
      }));
    });
  });

  apiFunctions.setHandleRequest('getEntryProperties',
                                function(entries, names, callback) {
    var urls = entries.map(function(entry) {
      return fileBrowserHandlerNatives.GetEntryURL(entry);
    });
    fileManagerPrivateInternal.getEntryProperties(urls, names, callback);
  });

  apiFunctions.setHandleRequest('addFileWatch', function(entry, callback) {
    var url = fileBrowserHandlerNatives.GetEntryURL(entry);
    fileManagerPrivateInternal.addFileWatch(url, callback);
  });

  apiFunctions.setHandleRequest('removeFileWatch', function(entry, callback) {
    var url = fileBrowserHandlerNatives.GetEntryURL(entry);
    fileManagerPrivateInternal.removeFileWatch(url, callback);
  });
});

eventBindings.registerArgumentMassager(
    'fileManagerPrivate.onDirectoryChanged', function(args, dispatch) {
  // Convert the entry arguments into a real Entry object.
  args[0].entry = GetExternalFileEntry(args[0].entry);
  dispatch(args);
});

exports.binding = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var fileSystemNatives = requireNative('file_system_natives');
var GetIsolatedFileSystem = fileSystemNatives.GetIsolatedFileSystem;
var sendRequest = require('sendRequest');
var lastError = require('lastError');
var GetModuleSystem = requireNative('v8_context').GetModuleSystem;
// TODO(sammc): Don't require extension. See http://crbug.com/235689.
var GetExtensionViews = requireNative('runtime').GetExtensionViews;

// For a given |apiName|, generates object with two elements that are used
// in file system relayed APIs:
// * 'bindFileEntryCallback' function that provides mapping between JS objects
//   into actual FileEntry|DirectoryEntry objects.
// * 'entryIdManager' object that implements methods for keeping the tracks of
//   previously saved file entries.
function getFileBindingsForApi(apiName) {
  // Fallback to using the current window if no background page is running.
  var backgroundPage = GetExtensionViews(-1, 'BACKGROUND')[0] || window;
  var backgroundPageModuleSystem = GetModuleSystem(backgroundPage);

  // All windows use the bindFileEntryCallback from the background page so their
  // FileEntry objects have the background page's context as their own. This
  // allows them to be used from other windows (including the background page)
  // after the original window is closed.
  if (window == backgroundPage) {
    var bindFileEntryCallback = function(functionName, apiFunctions) {
      apiFunctions.setCustomCallback(functionName,
          function(name, request, callback, response) {
        if (callback) {
          if (!response) {
            callback();
            return;
          }

          var entries = [];
          var hasError = false;

          var getEntryError = function(fileError) {
            if (!hasError) {
              hasError = true;
              lastError.run(
                  apiName + '.' + functionName,
                  'Error getting fileEntry, code: ' + fileError.code,
                  request.stack,
                  callback);
            }
          }

          // Loop through the response entries and asynchronously get the
          // FileEntry for each. We use hasError to ensure that only the first
          // error is reported. Note that an error can occur either during the
          // loop or in the asynchronous error callback to getFile.
          $Array.forEach(response.entries, function(entry) {
            if (hasError)
              return;
            var fileSystemId = entry.fileSystemId;
            var baseName = entry.baseName;
            var id = entry.id;
            var fs = GetIsolatedFileSystem(fileSystemId);

            try {
              var getEntryCallback = function(fileEntry) {
                if (hasError)
                  return;
                entryIdManager.registerEntry(id, fileEntry);
                entries.push(fileEntry);
                // Once all entries are ready, pass them to the callback. In the
                // event of an error, this condition will never be satisfied so
                // the callback will not be called with any entries.
                if (entries.length == response.entries.length) {
                  if (response.multiple) {
                    sendRequest.safeCallbackApply(
                        apiName + '.' + functionName, request, callback,
                        [entries]);
                  } else {
                    sendRequest.safeCallbackApply(
                        apiName + '.' + functionName, request, callback,
                        [entries[0]]);
                  }
                }
              }
              // TODO(koz): fs.root.getFile() makes a trip to the browser
              // process, but it might be possible avoid that by calling
              // WebDOMFileSystem::createV8Entry().
              if (entry.isDirectory) {
                fs.root.getDirectory(baseName, {}, getEntryCallback,
                                     getEntryError);
              } else {
                fs.root.getFile(baseName, {}, getEntryCallback, getEntryError);
              }
            } catch (e) {
              if (!hasError) {
                hasError = true;
                lastError.run(apiName + '.' + functionName,
                              'Error getting fileEntry: ' + e.stack,
                              request.stack,
                              callback);
              }
            }
          });
        }
      });
    };
    var entryIdManager = require('entryIdManager');
  } else {
    // Force the fileSystem API to be loaded in the background page. Using
    // backgroundPageModuleSystem.require('fileSystem') is insufficient as
    // requireNative is only allowed while lazily loading an API.
    backgroundPage.chrome.fileSystem;
    var bindFileEntryCallback = backgroundPageModuleSystem.require(
        apiName).bindFileEntryCallback;
    var entryIdManager = backgroundPageModuleSystem.require('entryIdManager');
  }
  return {bindFileEntryCallback: bindFileEntryCallback,
          entryIdManager: entryIdManager};
}

exports.getFileBindingsForApi = getFileBindingsForApi;
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the fileSystem API.

var binding = require('binding').Binding.create('fileSystem');
var sendRequest = require('sendRequest');

var getFileBindingsForApi =
    require('fileEntryBindingUtil').getFileBindingsForApi;
var fileBindings = getFileBindingsForApi('fileSystem');
var bindFileEntryCallback = fileBindings.bindFileEntryCallback;
var entryIdManager = fileBindings.entryIdManager;
var fileSystemNatives = requireNative('file_system_natives');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var fileSystem = bindingsAPI.compiledApi;

  function bindFileEntryFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(fileEntry, callback) {
      var fileSystemName = fileEntry.filesystem.name;
      var relativePath = $String.slice(fileEntry.fullPath, 1);
      return [fileSystemName, relativePath, callback];
    });
  }
  $Array.forEach(['getDisplayPath', 'getWritableEntry', 'isWritableEntry'],
                  bindFileEntryFunction);

  $Array.forEach(['getWritableEntry', 'chooseEntry', 'restoreEntry'],
                  function(functionName) {
    bindFileEntryCallback(functionName, apiFunctions);
  });

  apiFunctions.setHandleRequest('retainEntry', function(fileEntry) {
    var id = entryIdManager.getEntryId(fileEntry);
    if (!id)
      return '';
    var fileSystemName = fileEntry.filesystem.name;
    var relativePath = $String.slice(fileEntry.fullPath, 1);

    sendRequest.sendRequest(this.name, [id, fileSystemName, relativePath],
      this.definition.parameters, {});
    return id;
  });

  apiFunctions.setHandleRequest('isRestorable',
      function(id, callback) {
    var savedEntry = entryIdManager.getEntryById(id);
    if (savedEntry) {
      sendRequest.safeCallbackApply(
          'fileSystem.isRestorable',
          {},
          callback,
          [true]);
    } else {
      sendRequest.sendRequest(
          this.name, [id, callback], this.definition.parameters, {});
    }
  });

  apiFunctions.setUpdateArgumentsPostValidate('restoreEntry',
      function(id, callback) {
    var savedEntry = entryIdManager.getEntryById(id);
    if (savedEntry) {
      // We already have a file entry for this id so pass it to the callback and
      // send a request to the browser to move it to the back of the LRU.
      sendRequest.safeCallbackApply(
          'fileSystem.restoreEntry',
          {},
          callback,
          [savedEntry]);
      return [id, false, null];
    } else {
      // Ask the browser process for a new file entry for this id, to be passed
      // to |callback|.
      return [id, true, callback];
    }
  });

  apiFunctions.setCustomCallback('requestFileSystem',
      function(name, request, callback, response) {
    var fileSystem;
    if (response && response.file_system_id) {
      fileSystem = fileSystemNatives.GetIsolatedFileSystem(
          response.file_system_id, response.file_system_path);
    }
    sendRequest.safeCallbackApply(
        'fileSystem.requestFileSystem',
        request,
        callback,
        [fileSystem]);
  });

  // TODO(benwells): Remove these deprecated versions of the functions.
  fileSystem.getWritableFileEntry = function() {
    console.log("chrome.fileSystem.getWritableFileEntry is deprecated");
    console.log("Please use chrome.fileSystem.getWritableEntry instead");
    $Function.apply(fileSystem.getWritableEntry, this, arguments);
  };

  fileSystem.isWritableFileEntry = function() {
    console.log("chrome.fileSystem.isWritableFileEntry is deprecated");
    console.log("Please use chrome.fileSystem.isWritableEntry instead");
    $Function.apply(fileSystem.isWritableEntry, this, arguments);
  };

  fileSystem.chooseFile = function() {
    console.log("chrome.fileSystem.chooseFile is deprecated");
    console.log("Please use chrome.fileSystem.chooseEntry instead");
    $Function.apply(fileSystem.chooseEntry, this, arguments);
  };
});

exports.bindFileEntryCallback = bindFileEntryCallback;
exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the fileSystemProvider API.

var binding = require('binding').Binding.create('fileSystemProvider');
var fileSystemProviderInternal =
    require('binding').Binding.create('fileSystemProviderInternal').generate();
var eventBindings = require('event_bindings');
var fileSystemNatives = requireNative('file_system_natives');
var GetDOMError = fileSystemNatives.GetDOMError;

/**
 * Maximum size of the thumbnail in bytes.
 * @type {number}
 * @const
 */
var METADATA_THUMBNAIL_SIZE_LIMIT = 32 * 1024 * 1024;

/**
 * Regular expression to validate if the thumbnail URI is a valid data URI,
 * taking into account allowed formats.
 * @type {RegExp}
 * @const
 */
var METADATA_THUMBNAIL_FORMAT = new RegExp(
    '^data:image/(png|jpeg|webp);', 'i');

/**
 * Annotates a date with its serialized value.
 * @param {Date} date Input date.
 * @return {Date} Date with an extra <code>value</code> attribute.
 */
function annotateDate(date) {
  // Copy in case the input date is frozen.
  var result = new Date(date.getTime());
  result.value = result.toString();
  return result;
}

/**
 * Verifies if the passed image URI is valid.
 * @param {*} uri Image URI.
 * @return {boolean} True if valid, valse otherwise.
 */
function verifyImageURI(uri) {
  // The URI is specified by a user, so the type may be incorrect.
  if (typeof uri != 'string' && !(uri instanceof String))
    return false;

  return METADATA_THUMBNAIL_FORMAT.test(uri);
}

/**
 * Annotates an entry metadata by serializing its modifiedTime value.
 * @param {EntryMetadata} metadata Input metadata.
 * @return {EntryMetadata} metadata Annotated metadata, which can be passed
 *     back to the C++ layer.
 */
function annotateMetadata(metadata) {
  var result = {
    isDirectory: metadata.isDirectory,
    name: metadata.name,
    size: metadata.size,
    modificationTime: annotateDate(metadata.modificationTime)
  };
  if ('mimeType' in metadata)
    result.mimeType = metadata.mimeType;
  if ('thumbnail' in metadata)
    result.thumbnail = metadata.thumbnail;
  return result;
}

/**
 * Massages arguments of an event raised by the File System Provider API.
 * @param {Array<*>} args Input arguments.
 * @param {function(Array<*>)} dispatch Closure to be called with massaged
 *     arguments.
 */
function massageArgumentsDefault(args, dispatch) {
  var executionStart = Date.now();
  var options = args[0];
  var onSuccessCallback = function(hasNext) {
    fileSystemProviderInternal.operationRequestedSuccess(
        options.fileSystemId, options.requestId, Date.now() - executionStart);
  };
  var onErrorCallback = function(error) {
    fileSystemProviderInternal.operationRequestedError(
        options.fileSystemId, options.requestId, error,
        Date.now() - executionStart);
  }
  dispatch([options, onSuccessCallback, onErrorCallback]);
}

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onUnmountRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onGetMetadataRequested',
    function(args, dispatch) {
      var executionStart = Date.now();
      var options = args[0];
      var onSuccessCallback = function(metadata) {
        var error;
        // It is invalid to return a thumbnail when it's not requested. The
        // restriction is added in order to avoid fetching the thumbnail while
        // it's not needed.
        if (!options.thumbnail && metadata.thumbnail)
          error = 'Thumbnail data provided, but not requested.';

        // Check the format and size. Note, that in the C++ layer, there is
        // another sanity check to avoid passing any evil URL.
        if ('thumbnail' in metadata && !verifyImageURI(metadata.thumbnail))
          error = 'Thumbnail format invalid.';

        if ('thumbnail' in metadata &&
            metadata.thumbnail.length > METADATA_THUMBNAIL_SIZE_LIMIT) {
          error = 'Thumbnail data too large.';
        }

        if (error) {
          console.error(error);
          fileSystemProviderInternal.operationRequestedError(
              options.fileSystemId, options.requestId, 'FAILED',
              Date.now() - executionStart);
          return;
        }

        fileSystemProviderInternal.getMetadataRequestedSuccess(
            options.fileSystemId,
            options.requestId,
            annotateMetadata(metadata),
            Date.now() - executionStart);
      };

      var onErrorCallback = function(error) {
        fileSystemProviderInternal.operationRequestedError(
            options.fileSystemId, options.requestId, error,
            Date.now() - executionStart);
      }

      dispatch([options, onSuccessCallback, onErrorCallback]);
    });

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onGetActionsRequested',
    function(args, dispatch) {
      var executionStart = Date.now();
      var options = args[0];
      var onSuccessCallback = function(actions) {
        fileSystemProviderInternal.getActionsRequestedSuccess(
            options.fileSystemId,
            options.requestId,
            actions,
            Date.now() - executionStart);
      };

      var onErrorCallback = function(error) {
        fileSystemProviderInternal.operationRequestedError(
            options.fileSystemId, options.requestId, error,
            Date.now() - executionStart);
      }

      dispatch([options, onSuccessCallback, onErrorCallback]);
    });

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onReadDirectoryRequested',
    function(args, dispatch) {
      var executionStart = Date.now();
      var options = args[0];
      var onSuccessCallback = function(entries, hasNext) {
        var annotatedEntries = entries.map(annotateMetadata);
        // It is invalid to return a thumbnail when it's not requested.
        var error;
        annotatedEntries.forEach(function(metadata) {
          if (metadata.thumbnail) {
            var error =
                'Thumbnails must not be provided when reading a directory.';
            return;
          }
        });

        if (error) {
          console.error(error);
          fileSystemProviderInternal.operationRequestedError(
              options.fileSystemId, options.requestId, 'FAILED',
              Date.now() - executionStart);
          return;
        }

        fileSystemProviderInternal.readDirectoryRequestedSuccess(
            options.fileSystemId, options.requestId, annotatedEntries, hasNext,
            Date.now() - executionStart);
      };

      var onErrorCallback = function(error) {
        fileSystemProviderInternal.operationRequestedError(
            options.fileSystemId, options.requestId, error,
            Date.now() - executionStart);
      }
      dispatch([options, onSuccessCallback, onErrorCallback]);
    });

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onOpenFileRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onCloseFileRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onReadFileRequested',
    function(args, dispatch) {
      var executionStart = Date.now();
      var options = args[0];
      var onSuccessCallback = function(data, hasNext) {
        fileSystemProviderInternal.readFileRequestedSuccess(
            options.fileSystemId, options.requestId, data, hasNext,
            Date.now() - executionStart);
      };
      var onErrorCallback = function(error) {
        fileSystemProviderInternal.operationRequestedError(
            options.fileSystemId, options.requestId, error,
            Date.now() - executionStart);
      }
      dispatch([options, onSuccessCallback, onErrorCallback]);
    });

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onCreateDirectoryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onDeleteEntryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onCreateFileRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onCopyEntryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onMoveEntryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onTruncateRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onWriteFileRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onAbortRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onObserveDirectoryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onUnobserveEntryRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onAddWatcherRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onRemoveWatcherRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onConfigureRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onExecuteActionRequested',
    massageArgumentsDefault);

eventBindings.registerArgumentMassager(
    'fileSystemProvider.onMountRequested',
    function(args, dispatch) {
      var onSuccessCallback = function() {
        // TODO(mtomasz): To be implemented.
      };
      var onErrorCallback = function(error) {
        // TODO(mtomasz): To be implemented.
      }
      dispatch([onSuccessCallback, onErrorCallback]);
    });

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the GCM API.

var binding = require('binding').Binding.create('gcm');
var forEach = require('utils').forEach;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var gcm = bindingsAPI.compiledApi;

  apiFunctions.setUpdateArgumentsPostValidate(
    'send', function(message, callback) {
      // Validate message.data.
      var payloadSize = 0;
      forEach(message.data, function(property, value) {
        if (property.length == 0)
          throw new Error("One of data keys is empty.");

        var lowerCasedProperty = property.toLowerCase();
        // Issue an error for forbidden prefixes of property names.
        if (lowerCasedProperty.indexOf("goog.") == 0 ||
            lowerCasedProperty.indexOf("google") == 0 ||
            property.indexOf("collapse_key") == 0) {
          throw new Error("Invalid data key: " + property);
        }

        payloadSize += property.length + value.length;
      });

      if (payloadSize > gcm.MAX_MESSAGE_SIZE)
        throw new Error("Payload exceeded allowed size limit. Payload size is: "
            + payloadSize);

      if (payloadSize == 0)
        throw new Error("No data to send.");

      return arguments;
    });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Identity API.

var binding = require('binding').Binding.create('identity');

binding.registerCustomHook(function(binding, id, contextType) {
  var apiFunctions = binding.apiFunctions;
  var identity = binding.compiledApi;

  apiFunctions.setHandleRequest('getRedirectURL', function(path) {
    if (path === null || path === undefined)
      path = '/';
    else
      path = String(path);
    if (path[0] != '/')
      path = '/' + path;
    return 'https://' + id + '.chromiumapp.org' + path;
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the image writer private API.

var binding = require('binding').Binding.create('imageWriterPrivate');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setUpdateArgumentsPostValidate(
      'writeFromFile', function(device, fileEntry, options, callback) {
    var fileSystemName = fileEntry.filesystem.name;
    var relativePath = $String.slice(fileEntry.fullPath, 1);
    return [device, fileSystemName, relativePath, callback];
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the input ime API. Only injected into the
// v8 contexts for extensions which have permission for the API.

var binding = require('binding').Binding.create('input.ime');

var Event = require('event_bindings').Event;

binding.registerCustomHook(function(api) {
  var input_ime = api.compiledApi;

  input_ime.onKeyEvent.dispatchToListener = function(callback, args) {
    var engineID = args[0];
    var keyData = args[1];

    var result = false;
    try {
      result = $Function.call(Event.prototype.dispatchToListener,
          this, callback, args);
    } catch (e) {
      console.error('Error in event handler for onKeyEvent: ' + e.stack);
    }
    if (!input_ime.onKeyEvent.async) {
      input_ime.keyEventHandled(keyData.requestId, result);
    }
  };

  input_ime.onKeyEvent.addListener = function(cb, opt_extraInfo) {
    input_ime.onKeyEvent.async = false;
    if (opt_extraInfo instanceof Array) {
      for (var i = 0; i < opt_extraInfo.length; ++i) {
        if (opt_extraInfo[i] == "async") {
          input_ime.onKeyEvent.async = true;
        }
      }
    }
    $Function.call(Event.prototype.addListener, this, cb);
  };
});

exports.binding = binding.generate();
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the logPrivate API.
var binding = require('binding').Binding.create('logPrivate');
var sendRequest = require('sendRequest');

var getFileBindingsForApi =
    require('fileEntryBindingUtil').getFileBindingsForApi;
var fileBindings = getFileBindingsForApi('logPrivate');
var bindFileEntryCallback = fileBindings.bindFileEntryCallback;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var fileSystem = bindingsAPI.compiledApi;

  $Array.forEach(['dumpLogs'],
                  function(functionName) {
    bindFileEntryCallback(functionName, apiFunctions);
  });

});

exports.bindFileEntryCallback = bindFileEntryCallback;
exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Media Gallery API.

var binding = require('binding').Binding.create('mediaGalleries');
var blobNatives = requireNative('blob_natives');
var mediaGalleriesNatives = requireNative('mediaGalleries');

var blobsAwaitingMetadata = {};
var mediaGalleriesMetadata = {};

function createFileSystemObjectsAndUpdateMetadata(response) {
  var result = [];
  mediaGalleriesMetadata = {};  // Clear any previous metadata.
  if (response) {
    for (var i = 0; i < response.length; i++) {
      var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject(
          response[i].fsid);
      $Array.push(result, filesystem);
      var metadata = response[i];
      delete metadata.fsid;
      mediaGalleriesMetadata[filesystem.name] = metadata;
    }
  }
  return result;
}

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // getMediaFileSystems, addUserSelectedFolder, and addScanResults use a
  // custom callback so that they can instantiate and return an array of file
  // system objects.
  apiFunctions.setCustomCallback('getMediaFileSystems',
                                 function(name, request, callback, response) {
    var result = createFileSystemObjectsAndUpdateMetadata(response);
    if (callback)
      callback(result);
  });

  apiFunctions.setCustomCallback('addScanResults',
      function(name, request, callback, response) {
    var result = createFileSystemObjectsAndUpdateMetadata(response);
    if (callback)
      callback(result);
  });

  apiFunctions.setCustomCallback('addUserSelectedFolder',
      function(name, request, callback, response) {
    var fileSystems = [];
    var selectedFileSystemName = "";
    if (response && 'mediaFileSystems' in response &&
        'selectedFileSystemIndex' in response) {
      fileSystems = createFileSystemObjectsAndUpdateMetadata(
          response['mediaFileSystems']);
      var selectedFileSystemIndex = response['selectedFileSystemIndex'];
      if (selectedFileSystemIndex >= 0) {
        selectedFileSystemName = fileSystems[selectedFileSystemIndex].name;
      }
    }
    if (callback)
      callback(fileSystems, selectedFileSystemName);
  });

  apiFunctions.setCustomCallback('dropPermissionForMediaFileSystem',
      function(name, request, callback, response) {
    var galleryId = response;

    if (galleryId) {
      for (var key in mediaGalleriesMetadata) {
        if (mediaGalleriesMetadata[key].galleryId == galleryId) {
          delete mediaGalleriesMetadata[key];
          break;
        }
      }
    }
    if (callback)
      callback();
  });

  apiFunctions.setHandleRequest('getMediaFileSystemMetadata',
                                function(filesystem) {
    if (filesystem && filesystem.name &&
        filesystem.name in mediaGalleriesMetadata) {
      return mediaGalleriesMetadata[filesystem.name];
    }
    return {
      'name': '',
      'galleryId': '',
      'isRemovable': false,
      'isMediaDevice': false,
      'isAvailable': false,
    };
  });

  apiFunctions.setUpdateArgumentsPostValidate('getMetadata',
      function(mediaFile, options, callback) {
    var blobUuid = blobNatives.GetBlobUuid(mediaFile)
    // Store the blob in a global object to keep its refcount nonzero -- this
    // prevents the object from being garbage collected before any metadata
    // parsing gets to occur (see crbug.com/415792).
    blobsAwaitingMetadata[blobUuid] = mediaFile;
    return [blobUuid, options, callback];
  });

  apiFunctions.setCustomCallback('getMetadata',
      function(name, request, callback, response) {
    if (response.attachedImagesBlobInfo) {
      for (var i = 0; i < response.attachedImagesBlobInfo.length; i++) {
        var blobInfo = response.attachedImagesBlobInfo[i];
        var blob = blobNatives.TakeBrowserProcessBlob(
            blobInfo.blobUUID, blobInfo.type, blobInfo.size);
        response.metadata.attachedImages.push(blob);
      }
    }

    if (callback)
      callback(response.metadata);

    // The UUID was in position 0 in the setUpdateArgumentsPostValidate
    // function.
    var uuid = request.args[0];
    delete blobsAwaitingMetadata[uuid];
  });
});

exports.binding = binding.generate();
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the notifications API.
//
var binding = require('binding').Binding.create('notifications');

var sendRequest = require('sendRequest').sendRequest;
var exceptionHandler = require('uncaught_exception_handler');
var imageUtil = require('imageUtil');
var lastError = require('lastError');
var notificationsPrivate = requireNative('notifications_private');

function imageDataSetter(context, key) {
  var f = function(val) {
    this[key] = val;
  };
  return $Function.bind(f, context);
}

// A URL Spec is an object with the following keys:
//  path: The resource to be downloaded.
//  width: (optional) The maximum width of the image to be downloaded in device
//         pixels.
//  height: (optional) The maximum height of the image to be downloaded in
//          device pixels.
//  callback: A function to be called when the URL is complete. It
//    should accept an ImageData object and set the appropriate
//    field in |notificationDetails|.
function getUrlSpecs(imageSizes, notificationDetails) {
  var urlSpecs = [];

  // |iconUrl| might be optional for notification updates.
  if (notificationDetails.iconUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.iconUrl,
      width: imageSizes.icon.width * imageSizes.scaleFactor,
      height: imageSizes.icon.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'iconBitmap')
    });
  }

  // |appIconMaskUrl| is optional.
  if (notificationDetails.appIconMaskUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.appIconMaskUrl,
      width: imageSizes.appIconMask.width * imageSizes.scaleFactor,
      height: imageSizes.appIconMask.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'appIconMaskBitmap')
    });
  }

  // |imageUrl| is optional.
  if (notificationDetails.imageUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.imageUrl,
      width: imageSizes.image.width * imageSizes.scaleFactor,
      height: imageSizes.image.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'imageBitmap')
    });
  }

  // Each button has an optional icon.
  var buttonList = notificationDetails.buttons;
  if (buttonList && typeof buttonList.length === 'number') {
    var numButtons = buttonList.length;
    for (var i = 0; i < numButtons; i++) {
      if (buttonList[i].iconUrl) {
        $Array.push(urlSpecs, {
          path: buttonList[i].iconUrl,
          width: imageSizes.buttonIcon.width * imageSizes.scaleFactor,
          height: imageSizes.buttonIcon.height * imageSizes.scaleFactor,
          callback: imageDataSetter(buttonList[i], 'iconBitmap')
        });
      }
    }
  }

  return urlSpecs;
}

function replaceNotificationOptionURLs(notification_details, callback) {
  var imageSizes = notificationsPrivate.GetNotificationImageSizes();
  var url_specs = getUrlSpecs(imageSizes, notification_details);
  if (!url_specs.length) {
    callback(true);
    return;
  }

  var errors = 0;

  imageUtil.loadAllImages(url_specs, {
    onerror: function(index) {
      errors++;
    },
    oncomplete: function(imageData) {
      if (errors > 0) {
        callback(false);
        return;
      }
      for (var index = 0; index < url_specs.length; index++) {
        var url_spec = url_specs[index];
        url_spec.callback(imageData[index]);
      }
      callback(true);
    }
  });
}

function genHandle(name, failure_function) {
  return function(id, input_notification_details, callback) {
    // TODO(dewittj): Remove this hack. This is used as a way to deep
    // copy a complex JSON object.
    var notification_details = $JSON.parse(
        $JSON.stringify(input_notification_details));
    var that = this;
    var stack = exceptionHandler.getExtensionStackTrace();
    replaceNotificationOptionURLs(notification_details, function(success) {
      if (success) {
        sendRequest(that.name,
            [id, notification_details, callback],
            that.definition.parameters, {stack: stack});
        return;
      }
      lastError.run(name,
                    'Unable to download all specified images.',
                    stack,
                    failure_function, [callback || function() {}, id]);
    });
  };
}

var handleCreate = genHandle('notifications.create',
                             function(callback, id) { callback(id); });
var handleUpdate = genHandle('notifications.update',
                             function(callback, id) { callback(false); });

var notificationsCustomHook = function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('create', handleCreate);
  apiFunctions.setHandleRequest('update', handleUpdate);
};

binding.registerCustomHook(notificationsCustomHook);

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the omnibox API. Only injected into the v8 contexts
// for extensions which have permission for the omnibox API.

var binding = require('binding').Binding.create('omnibox');

var eventBindings = require('event_bindings');
var sendRequest = require('sendRequest').sendRequest;

// Remove invalid characters from |text| so that it is suitable to use
// for |AutocompleteMatch::contents|.
function sanitizeString(text, shouldTrim) {
  // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|.
  // 0x2028 = line separator; 0x2029 = paragraph separator.
  var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm;
  if (shouldTrim)
    text = text.trimLeft();
  return text.replace(kRemoveChars, '');
}

// Parses the xml syntax supported by omnibox suggestion results. Returns an
// object with two properties: 'description', which is just the text content,
// and 'descriptionStyles', which is an array of style objects in a format
// understood by the C++ backend.
function parseOmniboxDescription(input) {
  var domParser = new DOMParser();

  // The XML parser requires a single top-level element, but we want to
  // support things like 'hello, <match>world</match>!'. So we wrap the
  // provided text in generated root level element.
  var root = domParser.parseFromString(
      '<fragment>' + input + '</fragment>', 'text/xml');

  // DOMParser has a terrible error reporting facility. Errors come out nested
  // inside the returned document.
  var error = root.querySelector('parsererror div');
  if (error) {
    throw new Error(error.textContent);
  }

  // Otherwise, it's valid, so build up the result.
  var result = {
    description: '',
    descriptionStyles: []
  };

  // Recursively walk the tree.
  function walk(node) {
    for (var i = 0, child; child = node.childNodes[i]; i++) {
      // Append text nodes to our description.
      if (child.nodeType == Node.TEXT_NODE) {
        var shouldTrim = result.description.length == 0;
        result.description += sanitizeString(child.nodeValue, shouldTrim);
        continue;
      }

      // Process and descend into a subset of recognized tags.
      if (child.nodeType == Node.ELEMENT_NODE &&
          (child.nodeName == 'dim' || child.nodeName == 'match' ||
           child.nodeName == 'url')) {
        var style = {
          'type': child.nodeName,
          'offset': result.description.length
        };
        $Array.push(result.descriptionStyles, style);
        walk(child);
        style.length = result.description.length - style.offset;
        continue;
      }

      // Descend into all other nodes, even if they are unrecognized, for
      // forward compat.
      walk(child);
    }
  };
  walk(root);

  return result;
}

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setUpdateArgumentsPreValidate('setDefaultSuggestion',
                                             function(suggestResult) {
    if (suggestResult.content != undefined) {  // null, etc.
      throw new Error(
          'setDefaultSuggestion cannot contain the "content" field');
    }
    return [suggestResult];
  });

  apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) {
    var parseResult = parseOmniboxDescription(details.description);
    sendRequest(this.name, [parseResult], this.definition.parameters);
  });

  apiFunctions.setUpdateArgumentsPostValidate(
      'sendSuggestions', function(requestId, userSuggestions) {
    var suggestions = [];
    for (var i = 0; i < userSuggestions.length; i++) {
      var parseResult = parseOmniboxDescription(
          userSuggestions[i].description);
      parseResult.content = userSuggestions[i].content;
      $Array.push(suggestions, parseResult);
    }
    return [requestId, suggestions];
  });
});

eventBindings.registerArgumentMassager('omnibox.onInputChanged',
    function(args, dispatch) {
  var text = args[0];
  var requestId = args[1];
  var suggestCallback = function(suggestions) {
    chrome.omnibox.sendSuggestions(requestId, suggestions);
  };
  dispatch([text, suggestCallback]);
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the pageAction API.

var binding = require('binding').Binding.create('pageAction');

var setIcon = require('setIcon').setIcon;
var sendRequest = require('sendRequest').sendRequest;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the pageCapture API.

var binding = require('binding').Binding.create('pageCapture');

var handleUncaughtException = require('uncaught_exception_handler').handle;
var pageCaptureNatives = requireNative('page_capture');
var CreateBlob = pageCaptureNatives.CreateBlob;
var SendResponseAck = pageCaptureNatives.SendResponseAck;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setCustomCallback('saveAsMHTML',
      function(name, request, callback, response) {
    if (response)
      response = CreateBlob(response.mhtmlFilePath, response.mhtmlFileLength);

    try {
      callback(response);
    } catch (e) {
      handleUncaughtException(
          'Error in chrome.pageCapture.saveAsMHTML callback', e, request.stack);
    } finally {
      // Notify the browser. Now that the blob is referenced from JavaScript,
      // the browser can drop its reference to it.
      SendResponseAck(request.id);
    }
  });
});

exports.binding = binding.generate();
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the platformKeys API.

var binding = require('binding').Binding.create('platformKeys');
var SubtleCrypto = require('platformKeys.SubtleCrypto').SubtleCrypto;
var getPublicKey = require('platformKeys.getPublicKey').getPublicKey;
var internalAPI = require('platformKeys.internalAPI');

var keyModule = require('platformKeys.Key');
var Key = keyModule.Key;
var KeyType = keyModule.KeyType;
var KeyUsage = keyModule.KeyUsage;

function createPublicKey(publicKeySpki, algorithm) {
  return new Key(KeyType.public, publicKeySpki, algorithm, [KeyUsage.verify],
                 true /* extractable */);
}

function createPrivateKey(publicKeySpki, algorithm) {
  return new Key(KeyType.private, publicKeySpki, algorithm, [KeyUsage.sign],
                 false /* not extractable */);
}

binding.registerCustomHook(function(api) {
  var apiFunctions = api.apiFunctions;
  var subtleCrypto = new SubtleCrypto('' /* tokenId */);

  apiFunctions.setHandleRequest(
      'selectClientCertificates', function(details, callback) {
        internalAPI.selectClientCertificates(details, function(matches) {
          if (chrome.runtime.lastError) {
            callback([]);
            return;
          }
          callback($Array.map(matches, function(match) {
            // internalAPI.selectClientCertificates returns publicExponent as
            // ArrayBuffer, but it should be a Uint8Array.
            if (match.keyAlgorithm.publicExponent) {
              match.keyAlgorithm.publicExponent =
                  new Uint8Array(match.keyAlgorithm.publicExponent);
            }
            return match;
          }));
        });
      });

  apiFunctions.setHandleRequest(
      'subtleCrypto', function() { return subtleCrypto });

  apiFunctions.setHandleRequest(
      'getKeyPair', function(cert, params, callback) {
        getPublicKey(cert, params, function(publicKey, algorithm) {
          if (chrome.runtime.lastError) {
            callback();
            return;
          }
          callback(createPublicKey(publicKey, algorithm),
                   createPrivateKey(publicKey, algorithm));
        });
      });
});

exports.binding = binding.generate();
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var internalAPI = require('platformKeys.internalAPI');

var normalizeAlgorithm =
    requireNative('platform_keys_natives').NormalizeAlgorithm;

// Returns the normalized parameters of |importParams|.
// Any unknown parameters will be ignored.
function normalizeImportParams(importParams) {
  if (!importParams.name ||
      Object.prototype.toString.call(importParams.name) != '[object String]') {
    throw new Error('Algorithm: name: Missing or not a String');
  }

  var filteredParams = { name: importParams.name };

  var hashIsNone = false;
  if (importParams.hash) {
    if (importParams.hash.name.toLowerCase() === 'none') {
      hashIsNone = true;
      // Temporarily replace |hash| by a valid WebCrypto Hash for normalization.
      // This will be reverted to 'none' after normalization.
      filteredParams.hash = { name: 'SHA-1' };
    } else {
      filteredParams.hash = { name: importParams.hash.name }
    }
  }

  // Apply WebCrypto's algorithm normalization.
  var resultParams = normalizeAlgorithm(filteredParams, 'ImportKey');
  if (!resultParams ) {
    throw new Error('A required parameter was missing or out-of-range');
  }
  if (hashIsNone) {
    resultParams.hash = { name: 'none' };
  }
  return resultParams;
}

function combineAlgorithms(algorithm, importParams) {
  // internalAPI.getPublicKey returns publicExponent as ArrayBuffer, but it
  // should be a Uint8Array.
  if (algorithm.publicExponent) {
    algorithm.publicExponent = new Uint8Array(algorithm.publicExponent);
  }

  algorithm.hash = importParams.hash;
  return algorithm;
}

function getPublicKey(cert, importParams, callback) {
  importParams = normalizeImportParams(importParams);
  internalAPI.getPublicKey(
      cert, importParams.name, function(publicKey, algorithm) {
        if (chrome.runtime.lastError) {
          callback();
          return;
        }
        var combinedAlgorithm = combineAlgorithms(algorithm, importParams);
        callback(publicKey, combinedAlgorithm);
      });
}

exports.getPublicKey = getPublicKey;
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var binding = require('binding')
                  .Binding.create('platformKeysInternal')
                  .generate();

exports.selectClientCertificates = binding.selectClientCertificates;
exports.sign = binding.sign;
exports.getPublicKey = binding.getPublicKey;
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');

/**
 * Enum of possible key types (subset of WebCrypto.KeyType).
 * @enum {string}
 */
var KeyType = {
  public: 'public',
  private: 'private'
};

/**
 * Enum of possible key usages (subset of WebCrypto.KeyUsage).
 * @enum {string}
 */
var KeyUsage = {
  sign: 'sign',
  verify: 'verify'
};

/**
 * Implementation of WebCrypto.Key used in enterprise.platformKeys.
 * @param {KeyType} type The type of the new key.
 * @param {ArrayBuffer} publicKeySpki The Subject Public Key Info in DER
 *   encoding.
 * @param {KeyAlgorithm} algorithm The algorithm identifier.
 * @param {KeyUsage[]} usages The allowed key usages.
 * @param {boolean} extractable Whether the key is extractable.
 * @constructor
 */
var KeyImpl = function(type, publicKeySpki, algorithm, usages, extractable) {
  this.type = type;
  this.spki = publicKeySpki;
  this.algorithm = algorithm;
  this.usages = usages;
  this.extractable = extractable;
};

var KeyBase = function() {};

Object.defineProperty(KeyBase.prototype, 'algorithm', {
  enumerable: true,
  get: function() {
    return utils.deepCopy(privates(this).impl.algorithm);
  }
});

var Key = utils.expose(
    'Key',
    KeyImpl,
    {superclass: KeyBase, readonly: ['extractable', 'type', 'usages']});

/**
 * Returns |key|'s Subject Public Key Info. Throws an exception if |key| is not
 * a valid Key object.
 * @param {Key} key
 * @return {ArrayBuffer} The Subject Public Key Info in DER encoding of |key|.
 */
function getSpki(key) {
  if (!privates(key))
    throw new Error('Invalid key object.');
  var keyImpl = privates(key).impl;
  if (!keyImpl || !keyImpl.spki)
    throw new Error('Invalid key object.');
  return keyImpl.spki;
}

exports.Key = Key;
exports.KeyType = KeyType;
exports.KeyUsage = KeyUsage;
exports.getSpki = getSpki;
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');
var internalAPI = require('platformKeys.internalAPI');
var keyModule = require('platformKeys.Key');
var getSpki = keyModule.getSpki;
var KeyUsage = keyModule.KeyUsage;

var normalizeAlgorithm =
    requireNative('platform_keys_natives').NormalizeAlgorithm;

// This error is thrown by the internal and public API's token functions and
// must be rethrown by this custom binding. Keep this in sync with the C++ part
// of this API.
var errorInvalidToken = "The token is not valid.";

// The following errors are specified in WebCrypto.
// TODO(pneubeck): These should be DOMExceptions.
function CreateNotSupportedError() {
  return new Error('The algorithm is not supported');
}

function CreateInvalidAccessError() {
  return new Error('The requested operation is not valid for the provided key');
}

function CreateDataError() {
  return new Error('Data provided to an operation does not meet requirements');
}

function CreateSyntaxError() {
  return new Error('A required parameter was missing or out-of-range');
}

function CreateOperationError() {
  return new Error('The operation failed for an operation-specific reason');
}

// Catches an |internalErrorInvalidToken|. If so, forwards it to |reject| and
// returns true.
function catchInvalidTokenError(reject) {
  if (chrome.runtime.lastError &&
      chrome.runtime.lastError.message == errorInvalidToken) {
    reject(chrome.runtime.lastError);
    return true;
  }
  return false;
}

/**
 * Implementation of WebCrypto.SubtleCrypto used in platformKeys and
 * enterprise.platformKeys.
 * @param {string} tokenId The id of the backing Token.
 * @constructor
 */
var SubtleCryptoImpl = function(tokenId) {
  this.tokenId = tokenId;
};

SubtleCryptoImpl.prototype.sign = function(algorithm, key, dataView) {
  var subtleCrypto = this;
  return new Promise(function(resolve, reject) {
    if (key.type != 'private' || key.usages.indexOf(KeyUsage.sign) == -1)
      throw CreateInvalidAccessError();

    var normalizedAlgorithmParameters =
        normalizeAlgorithm(algorithm, 'Sign');
    if (!normalizedAlgorithmParameters) {
      // TODO(pneubeck): It's not clear from the WebCrypto spec which error to
      // throw here.
      throw CreateSyntaxError();
    }

    // Create an ArrayBuffer that equals the dataView. Note that dataView.buffer
    // might contain more data than dataView.
    var data = dataView.buffer.slice(dataView.byteOffset,
                                     dataView.byteOffset + dataView.byteLength);
    internalAPI.sign(subtleCrypto.tokenId,
                     getSpki(key),
                     key.algorithm.hash.name,
                     data,
                     function(signature) {
      if (catchInvalidTokenError(reject))
        return;
      if (chrome.runtime.lastError) {
        reject(CreateOperationError());
        return;
      }
      resolve(signature);
    });
  });
};

SubtleCryptoImpl.prototype.exportKey = function(format, key) {
  return new Promise(function(resolve, reject) {
    if (format == 'pkcs8') {
      // Either key.type is not 'private' or the key is not extractable. In both
      // cases the error is the same.
      throw CreateInvalidAccessError();
    } else if (format == 'spki') {
      if (key.type != 'public')
        throw CreateInvalidAccessError();
      resolve(getSpki(key));
    } else {
      // TODO(pneubeck): It should be possible to export to format 'jwk'.
      throw CreateNotSupportedError();
    }
  });
};

// Required for subclassing.
exports.SubtleCryptoImpl = SubtleCryptoImpl

exports.SubtleCrypto =
    utils.expose('SubtleCrypto',
                 SubtleCryptoImpl,
                 {functions:['sign', 'exportKey']});
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Returns the intersection of the arrays |a| and |b|, which do not have to be
// sorted.
function intersect(a, b) {
  var result = [];
  for (var i = 0; i < a.length; i++) {
    if (b.indexOf(a[i]) >= 0)
      result.push(a[i]);
  }
  return result;
};

exports.intersect = intersect;
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the syncFileSystem API.

var binding = require('binding').Binding.create('syncFileSystem');

var eventBindings = require('event_bindings');
var fileSystemNatives = requireNative('file_system_natives');
var syncFileSystemNatives = requireNative('sync_file_system');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // Functions which take in an [instanceOf=FileEntry].
  function bindFileEntryFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(entry, callback) {
      var fileSystemUrl = entry.toURL();
      return [fileSystemUrl, callback];
    });
  }
  $Array.forEach(['getFileStatus'], bindFileEntryFunction);

  // Functions which take in a FileEntry array.
  function bindFileEntryArrayFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(entries, callback) {
      var fileSystemUrlArray = [];
      for (var i=0; i < entries.length; i++) {
        $Array.push(fileSystemUrlArray, entries[i].toURL());
      }
      return [fileSystemUrlArray, callback];
    });
  }
  $Array.forEach(['getFileStatuses'], bindFileEntryArrayFunction);

  // Functions which take in an [instanceOf=DOMFileSystem].
  function bindFileSystemFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(filesystem, callback) {
      var fileSystemUrl = filesystem.root.toURL();
      return [fileSystemUrl, callback];
    });
  }
  $Array.forEach(['getUsageAndQuota'], bindFileSystemFunction);

  // Functions which return an [instanceOf=DOMFileSystem].
  apiFunctions.setCustomCallback('requestFileSystem',
      function(name, request, callback, response) {
    var result = null;
    if (response) {
      result = syncFileSystemNatives.GetSyncFileSystemObject(
          response.name, response.root);
    }
    if (callback)
      callback(result);
  });

  // Functions which return an array of FileStatusInfo object
  // which has [instanceOf=FileEntry].
  apiFunctions.setCustomCallback('getFileStatuses',
      function(name, request, callback, response) {
    var results = [];
    if (response) {
      for (var i = 0; i < response.length; i++) {
        var result = {};
        var entry = response[i].entry;
        result.fileEntry = fileSystemNatives.GetFileEntry(
            entry.fileSystemType,
            entry.fileSystemName,
            entry.rootUrl,
            entry.filePath,
            entry.isDirectory);
        result.status = response[i].status;
        result.error = response[i].error;
        $Array.push(results, result);
      }
    }
    if (callback)
      callback(results);
  });
});

eventBindings.registerArgumentMassager(
    'syncFileSystem.onFileStatusChanged', function(args, dispatch) {
  // Make FileEntry object using all the base string fields.
  var fileEntry = fileSystemNatives.GetFileEntry(
      args[0].fileSystemType,
      args[0].fileSystemName,
      args[0].rootUrl,
      args[0].filePath,
      args[0].isDirectory);

  // Combine into a single dictionary.
  var fileInfo = new Object();
  fileInfo.fileEntry = fileEntry;
  fileInfo.status = args[1];
  if (fileInfo.status == "synced") {
    fileInfo.action = args[2];
    fileInfo.direction = args[3];
  }
  dispatch([fileInfo]);
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the systemIndicator API.
// TODO(dewittj) Refactor custom binding to reduce redundancy between the
// extension action APIs.

var binding = require('binding').Binding.create('systemIndicator');

var setIcon = require('setIcon').setIcon;
var sendRequest = require('sendRequest').sendRequest;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Tab Capture API.

var binding = require('binding').Binding.create('tabCapture');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setCustomCallback('capture',
      function(name, request, callback, response) {
    if (!callback)
      return;

    if (response) {
      var options = {};
      if (response.audioConstraints)
        options.audio = response.audioConstraints;
      if (response.videoConstraints)
        options.video = response.videoConstraints;

      try {
        navigator.webkitGetUserMedia(options,
                                     function(stream) { callback(stream); },
                                     function() { callback(null); });
      } catch (e) {
        callback(null);
      }
    } else {
      callback(null);
    }
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the tabs API.

var binding = require('binding').Binding.create('tabs');

var messaging = require('messaging');
var tabsNatives = requireNative('tabs');
var OpenChannelToTab = tabsNatives.OpenChannelToTab;
var sendRequestIsDisabled = requireNative('process').IsSendRequestDisabled();
var forEach = require('utils').forEach;

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var tabs = bindingsAPI.compiledApi;

  apiFunctions.setHandleRequest('connect', function(tabId, connectInfo) {
    var name = '';
    var frameId = -1;
    if (connectInfo) {
      name = connectInfo.name || name;
      frameId = connectInfo.frameId;
      if (typeof frameId == 'undefined' || frameId < 0)
        frameId = -1;
    }
    var portId = OpenChannelToTab(tabId, frameId, extensionId, name);
    return messaging.createPort(portId, name);
  });

  apiFunctions.setHandleRequest('sendRequest',
                                function(tabId, request, responseCallback) {
    if (sendRequestIsDisabled)
      throw new Error(sendRequestIsDisabled);
    var port = tabs.connect(tabId, {name: messaging.kRequestChannel});
    messaging.sendMessageImpl(port, request, responseCallback);
  });

  apiFunctions.setHandleRequest('sendMessage',
      function(tabId, message, options, responseCallback) {
    var connectInfo = {
      name: messaging.kMessageChannel
    };
    if (options) {
      forEach(options, function(k, v) {
        connectInfo[k] = v;
      });
    }

    var port = tabs.connect(tabId, connectInfo);
    messaging.sendMessageImpl(port, message, responseCallback);
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function watchForTag(tagName, cb) {
  if (!document.body)
    return;

  function findChildTags(queryNode) {
    $Array.forEach(queryNode.querySelectorAll(tagName), function(node) {
      cb(node);
    });
  }
  // Query tags already in the document.
  findChildTags(document.body);

  // Observe the tags added later.
  var documentObserver = new MutationObserver(function(mutations) {
    $Array.forEach(mutations, function(mutation) {
      $Array.forEach(mutation.addedNodes, function(addedNode) {
        if (addedNode.nodeType == Node.ELEMENT_NODE) {
          if (addedNode.tagName == tagName)
            cb(addedNode);
          findChildTags(addedNode);
        }
      });
    });
  });
  documentObserver.observe(document, {subtree: true, childList: true});
}

// Expose a function to watch the |tagName| introduction via mutation observer.
//
// We employee mutation observer to watch on any introduction of |tagName|
// within document so that we may handle it accordingly (either creating it or
// reporting error due to lack of permission).
// Think carefully about when to call this. On one hand, mutation observer
// functions on document, so we need to make sure document is finished
// parsing. To satisfy this, document.readyState has to be "interactive" or
// after. On the other hand, we intend to do this as early as possible so that
// developer would have no chance to bring in any conflicted property. To meet
// this requirement, we choose "readystatechange" event of window and use
// capturing way.
function addTagWatcher(tagName, cb) {
  var useCapture = true;
  window.addEventListener('readystatechange', function listener(event) {
    if (document.readyState == 'loading')
      return;

    watchForTag(tagName, cb);
    window.removeEventListener(event.type, listener, useCapture);
  }, useCapture);
}

exports.addTagWatcher = addTagWatcher;
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the tts API.

var binding = require('binding').Binding.create('tts');

var idGenerator = requireNative('id_generator');
var sendRequest = require('sendRequest').sendRequest;
var lazyBG = requireNative('lazy_background_page');

binding.registerCustomHook(function(api) {
  var apiFunctions = api.apiFunctions;
  var tts = api.compiledApi;
  var handlers = {};

  function ttsEventListener(event) {
    var eventHandler = handlers[event.srcId];
    if (eventHandler) {
      eventHandler({
                     type: event.type,
                     charIndex: event.charIndex,
                     errorMessage: event.errorMessage
                   });
      if (event.isFinalEvent) {
        delete handlers[event.srcId];
        // Balanced in 'speak' handler.
        lazyBG.DecrementKeepaliveCount();
      }
    }
  }

  // This file will get run if an extension needs the ttsEngine permission, but
  // it doesn't necessarily have the tts permission. If it doesn't, trying to
  // add a listener to chrome.tts.onEvent will fail.
  // See http://crbug.com/122474.
  try {
    tts.onEvent.addListener(ttsEventListener);
  } catch (e) {}

  apiFunctions.setHandleRequest('speak', function() {
    var args = arguments;
    if (args.length > 1 && args[1] && args[1].onEvent) {
      var id = idGenerator.GetNextId();
      args[1].srcId = id;
      handlers[id] = args[1].onEvent;
      // Keep the page alive until the event finishes.
      // Balanced in eventHandler.
      lazyBG.IncrementKeepaliveCount();
    }
    sendRequest(this.name, args, this.definition.parameters);
    return id;
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the ttsEngine API.

var binding = require('binding').Binding.create('ttsEngine');

var eventBindings = require('event_bindings');

eventBindings.registerArgumentMassager('ttsEngine.onSpeak',
    function(args, dispatch) {
  var text = args[0];
  var options = args[1];
  var requestId = args[2];
  var sendTtsEvent = function(event) {
    chrome.ttsEngine.sendTtsEvent(requestId, event);
  };
  dispatch([text, options, sendTtsEvent]);
});

exports.binding = binding.generate();
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the webrtcDesktopCapturePrivate API.

var binding = require('binding').Binding.create('webrtcDesktopCapturePrivate');
var sendRequest = require('sendRequest').sendRequest;
var idGenerator = requireNative('id_generator');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var pendingRequests = {};

  function onRequestResult(id, result) {
    if (id in pendingRequests) {
      var callback = pendingRequests[id];
      delete pendingRequests[id];
      callback(result);
    }
  }

  apiFunctions.setHandleRequest('chooseDesktopMedia',
                                function(sources, request, callback) {
    var id = idGenerator.GetNextId();
    pendingRequests[id] = callback;
    sendRequest(this.name,
                [id, sources, request, onRequestResult.bind(null, id)],
                this.definition.parameters, {});
    return id;
  });

  apiFunctions.setHandleRequest('cancelChooseDesktopMedia', function(id) {
    if (id in pendingRequests) {
      delete pendingRequests[id];
      sendRequest(this.name, [id], this.definition.parameters, {});
    }
  });
});

exports.binding = binding.generate();
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the webstore API.

var webstoreNatives = requireNative('webstore');
var Event = require('event_bindings').Event;

function Installer() {
  this._pendingInstall = null;
  this.onInstallStageChanged =
      new Event(null, [{name: 'stage', type: 'string'}], {unmanaged: true});
  this.onDownloadProgress =
      new Event(null, [{name: 'progress', type: 'number'}], {unmanaged: true});
}

Installer.prototype.install = function(url, onSuccess, onFailure) {
  if (this._pendingInstall)
    throw new Error('A Chrome Web Store installation is already pending.');
  if (url !== undefined && typeof(url) !== 'string') {
    throw new Error(
        'The Chrome Web Store item link URL parameter must be a string.');
  }
  if (onSuccess !== undefined && typeof(onSuccess) !== 'function')
    throw new Error('The success callback parameter must be a function.');
  if (onFailure !== undefined && typeof(onFailure) !== 'function')
    throw new Error('The failure callback parameter must be a function.');

  // Since we call Install() with a bool for if we have listeners, listeners
  // must be set prior to the inline installation starting (this is also
  // noted in the Event documentation in
  // chrome/common/extensions/api/webstore.json).
  var installId = webstoreNatives.Install(
      this.onInstallStageChanged.hasListeners(),
      this.onDownloadProgress.hasListeners(),
      url,
      onSuccess,
      onFailure);
  if (installId !== undefined) {
    this._pendingInstall = {
      installId: installId,
      onSuccess: onSuccess,
      onFailure: onFailure
    };
  }
};

Installer.prototype.onInstallResponse =
    function(installId, success, error, resultCode) {
  var pendingInstall = this._pendingInstall;
  if (!pendingInstall || pendingInstall.installId != installId) {
    // TODO(kalman): should this be an error?
    return;
  }

  try {
    if (success && pendingInstall.onSuccess)
      pendingInstall.onSuccess();
    else if (!success && pendingInstall.onFailure)
      pendingInstall.onFailure(error, resultCode);
  } catch (e) {
    console.error('Exception in chrome.webstore.install response handler: ' +
                  e.stack);
  } finally {
    this._pendingInstall = null;
  }
};

Installer.prototype.onInstallStageChanged = function(installStage) {
  this.onInstallStageChanged.dispatch(installStage);
};

Installer.prototype.onDownloadProgress = function(progress) {
  this.onDownloadProgress.dispatch(progress);
};

var installer = new Installer();

var chromeWebstore = {
  install: function (url, onSuccess, onFailure) {
    installer.install(url, onSuccess, onFailure);
  },
  onInstallStageChanged: installer.onInstallStageChanged,
  onDownloadProgress: installer.onDownloadProgress
};

exports.binding = chromeWebstore;

// Called by webstore_bindings.cc.
exports.onInstallResponse =
    Installer.prototype.onInstallResponse.bind(installer);
exports.onInstallStageChanged =
    Installer.prototype.onInstallStageChanged.bind(installer);
exports.onDownloadProgress =
    Installer.prototype.onDownloadProgress.bind(installer);
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

exports.didCreateDocumentElement = function() {
  var root = document.documentElement.createShadowRoot();
  root.appendChild(document.createElement('style')).innerText =
      // TODO(jeremya): switch this to use automatic inlining once grit
      // supports inlining into JS. See http://crbug.com/146319.
      "x-titlebar { height: 24px; width: 100%; " +
        "position: fixed; left: 0; top: 0; }\n" +
      "div { margin-top: 24px; position: absolute; top: 0px; width: 100%; " +
        "-webkit-widget-region: region(control rectangle); }\n" +
      ":-webkit-full-screen * { display: none; }\n" +
      ":-webkit-full-screen-document * { display: none; }\n" +
      "div:-webkit-full-screen, div:-webkit-full-screen-document { " +
        "margin-top: 0; }\n" +
      "button { -webkit-widget-region: region(control rectangle); }\n" +
      "button.close { border: 0; background-color: transparent; " +
      "width: 16px; height: 16px; " +
      "position: absolute; right: 4px; top: 4px; }\n" +
      "button.close { background-image: url(data:image/png;base64," +
      "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA9ElEQVQ4T7VTQQ6CMBCk0H" +
      "AyIfAQbiZ+QHyDL/QLxqvx4MWDB+MvFAWMAuKsacmmSjkQSDbQ2Z3Z3WkQzsBHDOQ7owgs" +
      "MdUacTGmi3BeIFYcNycgciGlfFRVtcd3qoojz/PmdV0XOD8RGy1iCoQgT5G8IyREjni7IC" +
      "cg58ilwA7A8i4BwgMUxkKIV9M0PggTAoFlJpnwLhO5iEuFapq2s20CyoWIGbpeaRICyrI8" +
      "89FtAtqwGxdQ65yYsV8NcwVN5obR/uTJW4mQsfp2fgToGjPqbBjWeoJVfNRsbSskSO7+7B" +
      "sAiznZdgu6Qe97lH+htysv+AA10msRAt5JYQAAAABJRU5ErkJggg==); }\n" +
      "button.close:hover { background-image: url(data:image/png;base64," +
      "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABTElEQVQ4T2NkoBAwUqifAc" +
      "WA////KwANFAPiV4yMjA+QDcclBzcApCA6Otpz2bJluQkJCf3z58/fDTMEnxyyAWZADQuA" +
      "tj4B4ncpKSnbZs+efQjkCqjBmUDmMyD+ADSwD6j2FEgOxQWJiYmuCxYscIYawpWamnr89+" +
      "/fHECxbKjmB2VlZbs6OzsvwFyHEQZATXZz5syxAGr4BMR8QCwJDYvn1dXVO1taWi4ihw9G" +
      "LID8m5aWZgt0viXUEBaQAUDNh9E1o3gBFuIgA6Be8QKK3QXiLyA5oNMvIDsdph7DC9AASw" +
      "cquI9sAJDNk5GRcX769OlHsXoBKapAoQ2KiQcgPwMDkbGrq8sGyP8DChNQwM6aNeswRiAC" +
      "DYBF4yOgwnuwAAM5NTMz03rGjBnWsIAFql2ANxqB/l2B7F/kgCUYjUBbyEvKsFAllaY4Nw" +
      "IAmJDPEd+LFvYAAAAASUVORK5CYII=); }\n" +
      "button.close:active { background-image: url(data:image/png;base64," +
      "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZ0lEQVQ4T2NkoBAwUqifge" +
      "oG2AFd1AfERUB8CM11WOXQXXAGSROyITDNMGkTGAPdAHSFIENAAOQqGEBxHbYwQDcE2ScY" +
      "XsMViNgMwRYuOGOBIgMo8gLFgUi1aCQ7IZGcNaieF0h2AQCMABwRdsuhtQAAAABJRU5Erk" +
      "Jggg==); }\n"
  var titlebar = root.appendChild(document.createElement('x-titlebar'));
  var closeButton = titlebar.appendChild(document.createElement('button'));
  closeButton.className = 'close'
  closeButton.addEventListener('click', function() { window.close(); });
  var container = root.appendChild(document.createElement('div'));
  container.appendChild(document.createElement('content'));
}
‰PNG


IHDRTTaøR	PLTEÿÿÿƒÝÏÒtRNS@æØf`IDATx^íÕ1
€0ƒaïç’%÷˒Sºd‘ZDÈ Å(ozÐám;Ǝ‰⮙zìYE;CQÌÐÑþ¾Ÿû!ÑbWàۚVU`]æ-jÌñ–^ëšқ&úæžj¯5ʄ<oIEND®B`‚‰PNG


IHDR”‚RüaPLTEÿÿÿmHtçIDATx^íÙÑ1„áiËÞÏCõý_©75ԔXbŒ8ÿU,ù¬ŽœÜÄom”ª¡ÈzŠ%¢†B	ÔS(¡d9Ef)’KJtŠÒ6I†‘yj]3… Å3©¡ÖÒP	øšˆR¸G‰ÍQ|MAuU€Z}v¤ äÅ%ÓËSª˜B7xî£^=ö½ðÞ4ª\û(q®ÔQ><Ÿ	jý7Å)(–¥rJe)IBK(A²J¨ÿnrë—. ÕRC¡š2$£Ü2×GC–RN©Uy	0׃C
å†Z%h;•oš>8üܪ+VÅMIEND®B`‚‰PNG


IHDR|
5ôCIDATx^íÖ10ÂP$ýs%XèPô}™@ÃbRÂ,ó²)s±¤Ð
“BéôÃküp“B®³ÚS{Y/¡÷ºvP°IEND®B`‚‰PNG


IHDRE¢4IDATxc¨éÿ
€x'ÿ‚q¾ñf€ÊüGø….ðŸ2„¡8­ÅpÌéú0§þ‚xƒ4ÀIEND®B`‚‰PNG


IHDRÊDIDATxcˆšþŽ9P]€¤ÌÍIEND®B`‚‰PNG


IHDRE¢4IDATxcˆšþÿïb2þCñ7° ˜ƒÀ;Ñ~¡ü§\ÓНCvº>Èå‚x˜dz¿IEND®B`‚‰PNG


IHDR::K²‚£ºIDATx^íԱ	Â@†amB,²Wh‚ùcr»Ä*5,œ@ë¤ dµL¬>[Ë;~E„w€§{'øADß"J”(Q¢Sß>…F0EZ4îíú8‡oö^z‹X‡é–Ȑ{µB†¤ƒQ¢鐣‚ó¬BŽtP£2–p•Q6g	BÍI‹ÎnÛö"(<sÏöúØ ÖÎ!A½w;ÔHþf<Ä#ñH<Ä#ñH<ҷ"J”(Q¢D_¸’‚0l9õIEND®B`‚‰PNG


IHDR::K²‚£¾IDATx^íԱ
‚P†áZÄoà^H햮q$1Ҽ‹„=f/¨ nÁ+jq¦¯µñ~!‚÷žíáýŠ(Q¢D‰ŽM
u ,s¤¨Ûú‹ó3ÓóSëÕ¡*lh$F­°D€°¢Q·FҰ)¢NŒê>GiQ݋ÑêšY{d¨.RtòLëÛ[ÃvïúþJàJçà!ÆѸbx6‰Gâ‘x$‰Gâ‘x$iøˆ%J”(Ñšsáÿ:ÛýIEND®B`‚‰PNG


IHDR::K²‚£¢IDATx^íÔ1
Â@@QµÆ"] °EN³gˆg±ðZç@
Úæ"¶)«±µÜa>ÿ¯ûûA o‚‚‚‚.kû*–œIթïŽõX=ºÃԛÆÐԎÞ´£¥ *³•9Œjñ¢ZÂh>{Ñ|Š¢ëÛ6_êAyæë}cCcƒí«ÛÙ`Íß́#q$Žđ8GâH‰#}+PPPPPЊeCw8Ê5IEND®B`‚‰PNG


IHDR00ý19IDATx^í–=RÃ0…™˜†¸ÃÜQ¤J—Œ‘öG¶)ÜÂLBÍ85T\%ÃÄCPˆì–&Ò׿µµOo÷(žHäШS`à:’Ÿža‰-Uù¥Ä×CErÆáJ]—ϸáÆ8røK‹Ùyhù*þ`‡;y˜gI`ùçD—¼îäÖÓqh猠 ÏN¾%=;	oÌ-¹ß4¯ÓàÆÔ%}yy¶´Èc²—ßâ}}*`LZ›îîq\þi¬ïLgLjp"ð¬°4qèùÁw|ŷ¼ԣ€}kq;3ÜüCñ+
Ðd›ê½MÅmõC_B,*Èêe‚a§ò>ìÄâÚ[ìãZlà€Su!62¡U¹ï…ØÐ÷SY=Nd×X©+ÑÅ
¾\5ù6G"‘Ã:uPîu{wIEND®B`‚‰PNG


IHDRˆˆ<º£RIDATx^í]ml•Õ+`ÁvmyY‰¥‚¨Àe›Œ‰úÁ’mèâdS²`²Mãb|ý¢1~X–h$#މn¾ÄDP…6Êxµu-¥ii¹@_n齷¼”–"¡À}öÿmç—<=÷>}ÚÛ{¹÷9=&ÿ`Ûóœ—ÿï—ÿù¿œç<ßsÇS¬Xù_ƒ7ŽHzb± 
æ?AÉ÷]’7q?Ã~ªƒш!ñ'BމãÇgvŸ<yw$ù]4ýs,Ý(²GÚ+Ò-Ò+Ò/â(éW¿ëF´Å3x} /ô‰¾uâX‚ä6!ò:ÚÛˣ‘ÈcèZ‘}Ҧ gHz0Ƙ›¤á¼,A²LŠoº¾»»{©€ô¶´iI䩞çì™3N__Ÿ300à\¼xѹté’388è\¹rŹzõ*ĉÇãþŒ¿¡
Úâ<‹>Ðúô"Mæ‚9anא,– $ÅÁúú)‘îîećÒæœ ӧN9}çÎ9.\° gBÐ7ÆÀXcëd9‡9b®˜3Éb	’Fqoápxüå8”ÞÞ^XX—MÁ0ÌI'K7æŽ5¸·!K4CœÂûÅZl—6q*¼÷ìYá\¾|Àä¢`n˜#æê&JkZ|ˆb	âCŒ‰bš‹Åê]ʅ³%˜3æî^Ö&küÖJ¢X‚ŒÀb(§³ŽŠ„S8pþ<É@րµ`M\֊5kÅD#G^W8¼P”µÃMŒÀDÁÚt¢TBŠ(Æ=Ah5š››%ðis‰‘ȉ1k=}ú4‰r	º€NhMÌ&ˆ¿ºXڄh5úûúRÙJŒØzú‡ú(!GÖl‚


b5Ö«g¨Jçstà‘ãÐtE’MúáÎÎE1ÔAh5úû5¬@'ÔtÑ71Š zè*ÞúJi3À\†grË
tãΡ@wîØ‚{÷îÍsù&Ì&ó#À
tåÞrނ.I’`DRššŠ%„ے¦-Ån9ÑèVè”$	"AHœÅ(C"ˆáë`ʎ¨è:dr
º¥_‚èä˜+V“^c¯›X™\ƒn¡c’$!9ÚÛÚæËÚ錦¯ìnº¤ó
C×$IN„äh;qbžLü8p®·7ý‰/+Ð)tK’œ€ÎI’œ$Éq,*ã¶қirX’@Ç$I+tO’äAHŽoJèÂ^rX’@×t\I’a(»k׮)Ñh´‚éµõ9¬OBdžÀÙ"ˆž!ŒšCÙìD+6ºa,€	I’M‚`“Nvuý†Òì¦ÎmjžW`l€Q6Bë1±­­�ä\†Ôf\/Hø{0Vה tJ¿®©)ÇèpnÖVlíØ#:­'ˆîwD"‘¿2bÉ-¬0²Œֹý‘Œ„~‡œOX¿Ãú#‚ÕCôG2Jn-êêJ)
†ßaý`̸ÕdŽ ÜZº»ßd¦4·°ÂL+0ãV“)‚€y“¤zøcpP$gHíWn5ƒÀ˴„[‹N…Uòôy °¬˜@«†ÜjÒF:¦˙-
VÅÖk˜e†tXÓEZ)WÀ {©É
0cn¤XҊŒ™ tL%Túq€`
zë˜Âtº²è<°ïÊZv´"iø”	BëÑÑѱŸ
|ÆÔ
0–Vď ¾¾#\[`´CF4•š/2:‚0r9zôèíL©›¹؈†)x`K+2j‚0ïэ¬©‘ÕZ[ílßb^dTaÖô‹/¾(ŠÉffMmvØcfWGC˜œë:;:åüšÇyí5ÇyôQÇY¼ØqV¬ÀÏN|ÿ~'.&Ùäã‚ñ£À˜ûDm§Jç£c’pž{¤ð–5kœxO±!/0ÖyGJI»wïžÁKj<„,UNçÉ'Ayâ	´7î3/ûÖÀ|Dáö"÷ŽÿÒà’>¶€?RA{ckn3žѷñp×»½´µôQKüØ1#ë3ÀڽÍø¦¦@ұ!cnޜA6n4òX"°æÀ~X‚p{i:|xËúFn/3AœuëŒÓæ¹Íx„©u	}Vã!|ÁÀH‚¼ýv*Ás¦é3Ü]ÍԻAè\/÷s®ÇCø̅Ù±ÆÀ˜{ú!^ÁTUoè'\e	blVU0ÿ°’„þÇæ͛‹åóÅ9Ks‹wç=ý‚°8'·çýœ9}ڣSKÓXs`G)íííñê¨ñAK^eì騺	2ÄA
‡Ã/x¾1g	bôxÀÞ� Cdâͮó9{j	bháØ3a–Œ “E
¥º·ñÐqAK`ÍÊî¿T$3yAHE#‘¯|Y‚ê{p€‘L2‚K<Üâ[ƒ±1²&ìÁ/‚ä‹àË46ö–BK]€5‹v1p\Ð	’G‚Äb±~Ÿ$™%ˆ¡É2`ï"HžNĿӤá@ 	²{÷P9t(‘ kצ ‡ëc9›:€žQ
ƒk–/
êóÏ'¶ùàƒÔ΃Ès	}½ô’»
Ƥވ»A¦ž +WlժÄv_Aª«Ç[½ÚÝ㝠Ó}ì-Æyñš€Ý¿×_úº|‘GEpŽ둝$˜œÚî…½Åø$ðNj’í#^U•خ±Ñq–,	9ÐíûøòKm(¸Nª/Aæ9’ðÓO'o»w/}/ÁßÑ.¹µzöY½=Æt˜ëGi$Êàw$·gOòö]]ŽóƉÖ?¿þº‡½ɕ¸
(ó‰b"‘HuàSí[·&‚÷È#ÿ!‡ã•ØF¦â_·ô"Պ‰$üüó@§ځ½'A˜(“w$¶¾X78˜ü­¹§ž¢Úºœ;—ÌÁÅï0n ‹u‚}…–(KLµwuuý͈r}="˜äÛ@[[j}?žœx<«ør?°'A<‹urüýS96$w<—.uœ÷ßwâ#]c_Úã¹äù‘?6âÀ°÷,ֱÜ/·ñþ֘#‡W®ÿ."8¢••ð+až?ã÷ÿ~Ù2ï>^}WDqäØkåþÄCwuhypQ
ÀL·€\èߘCˆ<nڴiVL˦^°ŽO>aÖŝ~â}„~Mªä{Ï#‡<´,23‰ÔùâT(ÄäVêòÌ3^ɰ ‡¸€½סå!ÙTù Þ{&¿z¯­uœ—_Fô1R Úãª*X
#_½æÀÞ뵇!¹ùÌ÷ӆ¾¼­G'Ȱ"ÚItD~Øq֯wâ;wj·™ùò60öž/N¹#™úîЮ0^œÇw?{´5óú`îŽ`†}y[¤TòòǴšŒ%ˆ¹‡•óa_ÞÖծpx¯ ²1û!À˜û]ÿ0¤h:zt%/±³1û{vÀ˜{Œî‡TVVΕظÏÌk0-Ax
&0֚ÿቝH©„>›X¸³1ó}\`¬µKìü¯Á™
…Vñ*nK3¯âÆÀz¤×`©ìnݺuŽ šù®®½ÌØn۶m°áEº‰án¸³ó3?b?lõð֗ ú6sðàÁ{Ìü ý PÃC÷jۋ?AôhFä¹Xd—Ÿ$³yÈ.`«E/£û “f---™õQCûQC`Êäب?(¤ïDfG#‘ÃnðZaåXS÷åT?j8™Îê±Pè÷fXk=€%ӱ|Ôp‚;õþ駟Þ(Ìk
v}Æ~šK`šâgQ½­HkK˓<¬ˆÆF.,뷶¶®ҭGZ>ͮWΈ¦?0y+À
˜;`,Sü4»¿ihhø™v9XÙU›5fß44,ö±>ñ÷EJDÊ$·ެ£æ—ô³¿3rÑ|1„V„UޙR^(ÎN‡AWv}Å6°fU[Zt„V$_vnh9rŠâK4ú8!0VÀLa—Oë‘‚èÙUÖhDÊÅlýӀãF—ó£€0ӳ¦c$ˆ¿ú½¢b˜¯–ܬöÚj-°ٱcÇB_Ç4u‚øo5â?‹Å.ä–?bÓé‚ÉwÀÆckÉAd`·Ãz=·šP(ôlÎø#Öï`:ýOúÖBë‘i‚LжšŠ̑½î*˚…CÎV sfK06ÚÖ2!Ӂè[M‘ȬÏ>ûìÉÔý<{æÌ5¼%Ñ
t
C÷ÀX`£o-'ŝ†§?RUYy›Diddsmê5¶ÎˆºÊï(q§Ӂٵ$ˆîLUùý²}{÷Þ)Þó	fZ3KKÞ$:oƒÂb*ý`•
‚èþÖÙ555÷ʄ;y•UÆIbɆΡ{:¥n¿#ñ$IÈ‘òÚÚÚûdâ]ÜnÒë“XŸƒÛ
t]CçJ÷:9²IÝi½NyÍ31áêê껱ÝÐqMOtc£:¤ÐmMuõ=еÒy¡Â äÈ2AüI²o߾»Äyú–!pê×ZYîÊB§Э/9²O’TUU-:yòä—Lâ|7êƒÏV 3êOt¹:õ!GŽğ$ØgKl¾@.j}L­vck+èºTé?rdŸ þ$)Pžu™ÈÍrÅÖnÄÑòIÍÛÔ9Qèºƒ¡K¥ÓA ˆN†ÀÓTç&ys™8XG±ðá‹|ö°º’×$—CwJ‡ÓÊjäA¼Cà©"%*<§¢¢âöÎÎÎQäcRí’u`¡„ġ#è
:Sº+.õP6ˆÑI2I¥~‹T©油©i/ò´üxL¬aÍ<}Îc‚ЍÚRʕΊ”'iä,At’LÉWŽÕtn9;¶o_$Î׻Òv÷輪³°Vޗˆ.6@'ÜR”®
•î&jä0Aüý’b‘RZ“ºÚÚ%RÜE1¹fòõWX“^¬½®®î!Z
¥›b/Âøn9º5™+rë‘ææÕL®‘(¸¶àª!—çc-$“^X3ÖèVCßRL&ˆN’<—[¬’>eʴΗ+
þ(Êk¢"™?	¢3‹93ŸAÁڰFyWvZst [
Äߚ(/½T%‚æ(M⬉ùÝȇ9˜è®ï`n˜#s”8ւ5amX£Zk©Z{—Õ0Ÿ þ¾	#˜Öi$
-ŠT-èèèx/ž¢Â"ÃÑ˅¤怹0T¥`Θ;֠ˆq‰¡ÖZÈE÷5&HêێQ°?߲e˖ÛdÏþCW8¼EßOXÄpºf=ƒÇÐ7ÆÀXcë¤èÇ1WÌsÇ<ˆ‘°X‚ø„ÄQ`~g*îFešo•k577?%¡á‡<Z ˩ž8…ð`iðP‹á8B<ÆßÐmñžEè}&ŒÃ<æ‚9anÊñœ§æ|ƒZC‰FßÐÕÄߢä+ǭHyø¥ʩ›C²ˆ,øjÿþû޶¶®>’ïÀ֋…9à2!èc`,Œ‰±1)æ¨9–ª9©5äûXK‰2I§¦*«RL²(ËR®LøÍ$ŒÈ;wÞu¨±ñסP蕎ööwåúélXœ|‘>)†]$ðøüC´Å3x} /ô‰¾IŒ©Æ.Ws!)ŠÕ\§ª¹Oò †%H:·,ʲLS&œ„™
Ӯ€›ç"Î|’Gɏ<„GÛù$‚êk®ê{6	¡ƞ¦æR ‘Âc	A‚&<È2E™ðBR‰l†ªeÌR`–)`ËÈs<+WmËԳ³T_3Tß%j¬B5ö”d¤€d[oæğ,yaò­ŒñÊ에@J¦kÂ߳]±z¶ÖAõ¯"ϋ– ¹G4“!$	ä#lwŸ×ÉàCK`‡äñ´5—þñ+Vþ/µÉefáµIEND®B`‚‰PNG


IHDRˆˆ<º£RÒIDATx^í[oUÇÇKÌÅ8¦¶¹p 7 RBÛ<D‘’<DMÛ$J¤¶j«TiըJ¥^¤VÊKò	ªJ‰5jÓ$½¤RHHåª@	 Ås³c8llÎÅ|Á@€ħë­•¶϶}ðÙÃDZRž={fýÿZ³.³g¾ÏçG• A>ý±zõêO¥'—óU˜ß4•›
¤j,â<3
ñTG#Ä%ˆ¯D¨:ùá‡ÒgÎ<Éd~šÍf—ËfW‹ìöGDÒ"}"ƒ"y•Aý·4mhË3<KôEŸôí'¤²	QÕÙÑјÍdž@_Ù%mz½LÒÃ;xïäÝFW È“âÈáÃ7§ÓéǤ?H›ö( {{zòçϝË䇆†ò—/_Î_¹r%õêÕüÇœÿä“Oüðð0b¿ùmhË3<KôEŸ£‘¦±0&ÆvÉb¤8ÐÜ<;“N?!@¼!mú:ÛۛèïÏ_¼x`ÐË!ôÍ;xïäÝ.Yú#ceÌF–@2ÓÝÕյ?@}ƒ¼I__–‹pS)Œ±0&—,iÆÎ
—¡@I †8…ßk±QÚFŠóç"íÚ5€©DalŒ‘±e˜¹0§¢‚Äcº˜æoçr¹æåâ`Ö Q˜{á\˜›Ìñ;ÌՈ2‹¡Ng“)§pèÂs$-́¹0'›seΎE	qÈQÕÝյR”µ©‡†ÀGan.Q6£%ʴž f5ÚÚÚæHá÷ÒæŠE"C1|æzöìY#ÊtN̚øMxôi“2«180PÊRâÅÒ38ÒGI¹Ž¬×qÉÑÒÒR+Vã%¼z
UÍù¼‘†ÈÃè]I¼&ˆù]§O¯ÊQ1«18蝘~Ð:3ßÄ+‚¸¡«xëOK›!ÍeInA79”!tç„ÄÉ'ˆ‘cçΝÕb._Àlj>clAW…K΋èÒH’L‚¸QJkk½„pk'iI	KN6»II®{1“²ðõjɎht‡-¹†nÍ/I
A\r,ËQ‚פ×Äë&AС%×Ð-:6’$‚ FŽŽS§–Ë:ԝIJ{tiÎ+:F×F’Š&ˆ‘ãÔɓ·ËÀ?dý}}eH|A§èVIrI*’ FŽ©Ôb[VúÊMŽ@tl$9†î$E#ÇV–uH1׉$èÚW00’TA,”ݾ}ûìl6»AÒëìsŸÄW0§Š n†t&5
e§(Z	э…À`&F’©$˜q¦»ûGš!âÔyHÍ[ÆLÀŒ¦‚ f=¦Ÿ:uêkÔ	*.C2®%ü½ŒÀêºĜÒÿîÝ['ŽÑÑʬ­„Ú
؀‘9­e'ˆëwd2™?jÄRa±ÈF0zÙñGÊKó;d£Éð;‚?"X=fþHY	bKËþ¦¦2¥Éð;‚?V`fKMùbKK:ý‚fJ+€ –i3[jÊA³3¤zøù}U${Hƒ€X؁!XN*AliaWØfÝ}ž‚€•%ж€¡-5“FsLOŸ>ý¤fKVg	õ˲‚¡9¬%ˆk=fK\½_Ú$ `f¹‘f°4+2a‚˜c*¡Ò´H¨XA,ÍaA,®Öã'÷[Ù `†`	¦–†/™ f=:;;§ãó‰ϘC°S³"ã&ˆë{hä±€„‚%˜:¾Èøb‘ËñãÇïєº'‘Kˆh,¶fEÆMË{¤ɚzY­
Õ^ÁöEˋŒ‹ –5}÷ÝwëròŸŸYӐ][0¶ìêxÂò2ëtgç÷n„rþ™3gò»wïί[·./óί]»–ßùîînï·Æßk0#ˆÚÖHç_>'Æ.]º”ï½÷ Ũ"€9ÕېŒÁÚBޱd†(n¾Rëå&dNN޸q#$ˆÚÑ޻MÎvØ/Xƒù˜bˋœ;þ]Kú,!€?V¡½·[Àږ™¢)\^ÄÃ}Ù×奿¿ÐÇ+(ÔËúX;ËLQ‚`jj%›òu;¡Äÿ%¤½½ÝËm‰`
æ`_” ¶¼´=ºBËú^./,‰ r˜œwº°m‚ùJ[fF%ˆ¥Ö%ôy–‡¸ÁÀG‚477—BžóN`Ö`n©w— ®ÿq³œÏù
ùÞ‚¸Æ`
æ`o~HAÌÿ˜“Õ/ô#Ž‹
ñ4«*˜ÿìá@$AÌÿxûí·ë偑Ź@Ÿ‹w>Àq¢Å99=ï«<pîìÙèNA¼°s°‡Å2»££ã)=:ê!H ˆeöæ¨:ùÜA•+³~óÅ\ ˆ§_à}¡£j‘ oö嘽§ žîÀÞfQ™‰+սu4Ž)N‚øU¸´Êî¿á\p	r“z¯uÙLfwÌ¡@OC]°‡ÉD¤^âáöØL ˆ—5°‡‘Ñð†c,{hìí)… ®€µírp.¸©úŒ ¹Ü`L’,ÄÓdؤÊ%ñï\¤K0Aø8y„ôôô”• ½½½î;“œM‚p¡Ah˜Xë éâ ²çÔmsôèђÂsn_r¹OaޟH½îq™—t‚¬_¿~`›6mr۰ƒª$‚°ûÝíkóæÍ#Úlذ!é™Cd/1;vì؛o¾™ÿ裏\“êlXŽÚã̹á!ý¶ãý‰^bb	’<'5~ùÃ~Ývø&ù·Þzk,ä ]”/Cí"jJ´“K¤‡¹Ü`킶uë֨¶Ô\ŸÅþN»Èç·mÛæ¶çý‰sã2׃D~‡ÑŨ…ª½{÷ºքßü;\Qː‰²˜(&“ÉìIzªýĉ.x|NÉöºâJêé±ИßE«Ÿôç¾#•J%:Õö£Äeâá¯Ox±“é„nٲÅÖR…çé;ƉMf±N°ßP˜(‹LµËËö ܏¹-áéR¿D3r¸‘V'ñå~°7‚ŒZ¬“íïÏû²aèðáÑ$Y³fMþȑ#˜ֱZ
Úó\d­­­^lûQ‹uVî—Óxì˖C·={öPpDOž<‰’hoÏñ›çyÚûf—ö^l9ûÂr䆡C‡ÝçѦeüH˜“-‡þ½ٴö¶ahÔ-‡bFåœlªÒÖÖfYω
ý°¬øVÉûb[§ë†ÕÙL¦Ùç8Ғ[%I·s~&솸ûÁ~´MË#²©r!Þëz‰2¨ŽբЎöë¼ýôÌÁ~´ÏFäBäšï_yúñ¶#ÚÁu#NàÀY''äçÇÛ`^âºÉ4ïßo‰Ç?ø²M€ßQí¼=þÌ#˜¢o‹,”DÓ	§&âïfå`^ôãm×QíîêzM 
ñüаó¸ãFíRǏ?­‡Ø‚x~ŸXƒyÑd\?D¶Ò-“ØxÀÏc0AìL0kÇÿˆ?Ď5IBŸ5Z¸ñô{\0kç»øc0‰‰S©Ô3zw ˆ§Gqƒ1X;Ç`Ƥ+R/g—/e¢Ÿßê†ÃüÁV,åÒÂ
nìIËn¸+÷›ýÉÏë@Âu `놷±q—™<èç…BáB¡–r——q]¢ží-r°Èv/®$†vÈv°u¢—ñ](dI39‚ú)¿.5—‚©%Çly)éJ2-à,Éf2G“]á
b•[°ÓÂ
ʥ^j8ӜÕ©ÔÏý°"Áz€¥9§¹ÔpZaê]>$ºU˜ךìúL¸šÁLK¹µ¨9ÖÞþݐ°ˆ&D.VÖ?vìØ3®��ٕqÑ&&/¬ÀìÀ,K½š=֊ȝ)_—6ג•]
YS0;ØÒòH´õ( ®/‚׻X2p¯øµÀÿ’¾`ö‹\ߣd‚¸Vμ¤<¼RœNŽìöúˆm°3°³ª­YÉ"ˆY‘j-ìÜÒþÁl(ö`[¢×Û	Á¬ÀL±«6ë1Yq³«5š¿o³õw¶x]ÎŒþV`fYS#Ç	ï°nܰa…˜¯öʬö†j-ØÈa:+£Ó2$z©Ïø[¹\îbeù#!.˜\›¨¥¥\q֛m©I¥R¿®($ø¤Óã.-f=ÊMiÎRó%‘¥²ÖýM³¬S°É9:·l)X€	Ø.-`W‚Ä.5u"‹Þyç;%S÷xþܹëx,BtÎÑ=€˜€»´”™ ÑixóG¶lÞ|w&>¤‘Íuªׄ:‹E,èÔïhpÓéå#H¼?R£ùýŻvî¼O¼瓚i-3I9ìt Ñù)tŠEãw”™ ñþˆ9­KäDŸ‡d'õ(«ò“$££{sJ¿c
M’Z‘ù"ûöí{XޭËÍ$û$Áç°e£kt®º¯uÉ1•qÖYê5/`Àr†×,7ê¸NRt¢sHÑíÞ={Tr,PÝÏrœҩ$H<IvíÚu¿8OG,.ýX« èÎBYtŠncÈQ	‰'‰œp¼JŽoÚjIœKãÞø™þD—ÛÐi9*„ ñ$a]\"±ù
9¨õ¯L°´ÚM¨­ è]¢StEŽÊ"H<Ijñ¬5üºC΢xŽڍ:¯1©ù:7g¡;tˆ.U§µ.9’@—$ÏÕÎmò9çâ`gâŋ|a³‚®ä3É'ѝêp®…²9Bè¸F¤ASÀKån·{ä„Á7(òYRíJp`сmD†ÑºBgèNuXㆲI$ˆK’šú­Ó"R#沭µõ۾¨»åoÈÄs¶Ýç:A7º¤4ªÎêT‡3r$– .I¨T«c5ϖœM7®çëUi{Uω¿¡>Îb®v^::]¼†NlIQ]ÍQÝMwȑ`‚Äû%õ"͚4íÛ÷¨T#ßGQš\óúø+æfI/„¹755=fVCuSãoøCwɉ°&ËDîú ­íYM®Q8¶¥‡90—Bb0WæÌÜсk5Ü%Åg‚¸$©*p`ë5é³XMër9¢ע¼VU¤åOéÌ2fËg˜07æ(ßʮ`Î:÷®ÕpÈá1Aâ­I­zé5t;DigMÌï‹x4‡‚‰®äúccŒ–Ë0f.̉¹1GëB{mŒÕð˜ ñ¾‰E:˜ֹF³(Rµü¦®ÿz.›í5…kˆŒ£WI7ÆÀX,T5ǎ9(1n3bè\çX„âú>¤ôe'š(¬Ïwʕ¤w˚ý9Bz­(~Ð@Ђ 7°»³^ÎmôÍ;xïäÝ.)#cě9D#j9	‰	‰¢`~¨w«šæ»äÇUr›ÔÏ$4|ö¸ÒÛӃSˆ€¥áz€Åâ2Ž#2‘DømhË3<KôEŸQïbŒ…116ÆÈXu̷èbĆ® ñ¥Z·:õðªS·ÔÈ"²b÷ûï?|üر礦Óéf±0ç®B߼ƒwñNÞÍ
H±TǸPÇ\§s¨Ž± %e†§jԪÔYԲ4ª	¿Ã#²R®!»ÿð¡C?L¥RÏwvt¼*ÇOo`›Äâ¤ð
D¤vـçÿù7þFÚòÏÒ}Ñ'}!x§¾»QÇb¤¨ױÖèØgÄ#dâˏC–Zµ,sՄa–`Ú¸Ûˆ³Üȣòå(±¿kÛåFík™ö½Ä¡c©uH¹Œ$… I“i£e¶šð9
Rƒ6_k‹ÌÅ
l£‚¼4JôoÚv±>»Hûš¯}7è»æè»gG‘I€^c	’t²T9„©0³2
âÕì7Tæ9bÿníêõÙ9f´ïj‡U1¤© ¸¤™‰yŒ@1bífÙó.b’Lâyⅶþ!ž £J ÿrvöŠIEND®B`‚‰PNG


IHDRˆˆ<º£RIDATx^ípTÕǛ†`“æÄ0„Š
tFiëŽ3êN!YD Ñ(DI°&€
:†QÆ3b£XŠ@•*Ì`µժÓ
¢֩…Œ¥E¡`ˏ
:! °·çkϝ¾ìÍîMv³쾻gg¾Ó	޷ï½óýôžsÏ{ûÞ÷”Ra%}7`Æ
ßIãªp~i¬ï{”ÞCy·Iƒ‘W ®‚~¬¦¦è̍7^{.¸ë|yùãqc7¶ÒøOH‡HÇHÇIŠuœÿíÆ`,¶vø|¾ðà I
Dú‰êêR2±†Ìl&Sߧ1GH*N:‚}`_Ø'ö
h`ÄAñå=÷\|vüøñdÒ/iÌ.’J°váXpL8¶‹¢¡ø|޼¬Îqã&kiLI%©ÚpŒ8V³†EéCyÓǩªª‘¨¸6P>Ó!;Î[†>ƒRÈXÊõ¤1A’ò¹‚8œ“ÄF?J#	Œà¢pntŽ“p®^PûŒ1žÀØÆ8/œ+ÎٛzŽ􎪪QÁòò7a@*ŠÎý-ĀAIKy@t:98cFîùŠŠ'iÌ’JqA,vÜĞNÆИ݆¢ÝF!ë. &{shÖhޏ2#ÄJCâ4 ºÖ8uÓM£©0û¤gˆ+ÄL×&b.])¥ÔҘö^ jGì¼Kb'Ñpüí‘G2)¥<sJ‘”³±Ԑø
ǁúú|ZÂmƒûl9¼	1Րø]o»喒¾oz‰SÄV×%þĄcÁ§Kð"Ä1֐ø
Çñ)SF_Æ×bŒXkH’
GÛÍ7'8þyÁHö"æ’¤DÃñMmmIBҊ@ò9b¯!I*@4Ôñ+ 
;A©±‡’b.e?|ì±,ºcêÄ ‚ðB/ˆÙ!íOwu7'‡"xO4$‰pdœ™0áö¤ꐊ‚ðÞ#„©¥߷S§þ4)¯­ˆN~;eÊUð^Å{Qú…ó¨0ڙœˆà
<ÒEkü1ëŽg“Þ©G–õH\ẃîOø¢îɫqº‰+ :µ|vÿýþ锊à<ө&~€pjéžü%x¦SM\áÙ#ƒ{ðcsVðÎÂ;N5iÑbM-$Üö–àO‘woÃC#ÕÄ¦''N¬ü-x¨ÖØ1g\kÙ.øþZM¼ԳHì€paJK¥›Å7/uÁ ºγÇ1À
ÁKxªÛðѳG{uõx1À-ÁS=‹ô³öpoå"‚§ÞZ¤÷€ðÊåÈw\édK]„·zé= Ü÷ Ÿû9Ú5‘·Ët_¤W€è®éÖeËò¨XpSðëîjoAz¹¨}Ҥ))a"EJ½÷žRG*|T[Ûÿþ~øa¥Ǝuòx*¼†ç6@B—¶ÙtgÓ`LªÔÇ«ˆŸ;”ª©qx¯��€düuéҁú!µNjòd¥P=ú<ˆñ®BÒ¯á¹oz91yrµËi)¤Œw6ðÚL3& ]ÒU¸˝…£¾^Eõ™9ÓI@àµ7ÍØÉ åP;ÖÝË-_ +V8	¼†çð>2 œ^öϜ9ÒéôòÊ+ÑòÚkÎÆdCÃ(f­uºg Þi@6mŠlç, ð\·Þ
@Bê¼åשˆÏὮCÂ’AÊ=où…¾âdò¼gL@týñû—^ʧ
N¤ <‡÷º1á‹sôô¼ŸX@¼‘É:>yrMj"€À{]¨zéR Ò+³HM@xï-T»Â
2z'ìòÔD��HR.]Ý۔š€ äýÀ³à„W0¤¼sÀ_Rރ½’é|ZïJM@xÂ’IÂcޤ& nA`!t ÇS丐ôP@²H…¾ ݒ%]5w®9fãÆhðÀv¦Æ>}I;‘Q¾Öɓ]Mmi1Ǭ] /¾hðÑGÞؿ¯ãgd€ïùꫮ†íßoŽY¸0:@-2
طÏ;û÷; ,€ø<ÅlÛÖհ`P©I“ºŽ©¨
Ƚƒ78]
¨ªRêܹ®ã¶o÷uбâ÷"iÀø<þ¸9nÞ<¥:;{‚Æa¼iÀҥ–4ä¿"Õ
ˆ³g›¦}öY÷c/VêԩHhà¿c\÷ÛïÜiÇþý¼̵RèB£u‡ñ	·º˜6M©͛ÍÙo٢Ôôéáá2Ӑ2Ë*†ڭú§Ÿ6Í;vL©[o
¿Me%Ò@ÂÿâoŒ	U[›	Hs³¯÷ááFݛøºï	ºÿÕÜ޽º`^ÕÕݸø·@Àï÷¥¾Ò(3[í§++W8Ñœ?+˜îÓ@}}t44tÞùóºˆõµà½$ìÅ:úµw“3íãõëU·Ÿ3g”zùe¥&N쑘u0ÛuûY³ƉxÁ{0éjn=÷g)/WjëÖÈ+¢O<ºý‘ÿ÷Ið7þÛwt„ÿŽ÷ßwæð>är¿yÃÐÞٳ¯v®G°J‰ËçÝwuÝá„ཾa(ì-‡¯­[7ˆÖÃíNA‚ÿ‡¯Z¥»ž±ßóÂN=\žÃûð·òMˤ"Zî´`#çt÷ÝJµ¶Æšn³f¹x7Ùvxî¦å.ÝÔÓ&¬ÆFÎêÁq«žAqßÔäì#©๷‹ö‡S¤zÍ÷,Gá0W'hŒ­_o¢§O+º´©ԣê§9-xî]â€xW2»î»ï*l”R:|؋þN©ó‡çÞLÄo“Š©/¿G	 )!x
Ï#ýxÛ(T;*+W)$%¯CԈ!~}ûíµJI	Ákxé2FòγÏ£µñ·ˆۂÇð:¤þ°?ĎTLïUq[ð^±³=“4à›ÚÚ:ÄmÁcxm<Óö ]Rþ«W—¹ûK;¼}kåÊ2ï\ۓ–å.½ßìWb€›‚·ÆòÖˆ‘f¾˜;÷:'_($
îž;÷z#½ôæu \Ù¦[Ѷˆn©sܸ-ðÖX½ôæ…BºiöU]]à–à©nŽõú…B÷âiȹŠŠb€‚—ðÔ{ƒr´/5쯋Õon»íçb€‚—º8奆iÞÖû«ëÖ
%òZÅÂKxÍkQ#Î"‡§OŸ.ø[‡§M«3f¾x5;WêߍÞÁCxí«٭³Èî9s~Fc:ÅߩsOcã˜0³G”€˜µH©„:pþ{]ˆtMWꕋ·öˆsÑWy‹Þyæ™Qôî÷‰þ¼‚gðŽ=ÌгG_’æé‹ä“ÿçÎ;k}тá<cï2Ù#&@Ìîj6÷ïK)ռôHjy^±gÜ5e8bÄ^°¾½bÅHZW'égDðæOÏ=7*la; öTC•qÝWp2¹‘'§à%µÄˆ½`½X§º+©1¹êy2ÇH-<{Đ´Ts	©Œ^«ù›ä0@/à	¼ñ¦x@¬©&4hãڵ—Ñi6'Ö<€ðޘ©%þ€˜mx®Gh­}Eg °#1ˆ{xÀuGÑN öz$›ûû%ۖ,¹šªç½ÜY±ìCìá{‘mÔqÄ^è¢uȎ¦¦ë©{÷ïf€tJ÷#戽.J-uGœ±C’CH*m]°à‚ä@|
!ƈ5bαÏ1àH fÑzWÍE€äㇺ6~éF„Øþ}ѢëŽ"ŽýEFQš8@ìP^¼†Š§OúÖbŠØZáH< vH677¦åןûÌYʾƒ˜ZáH< vH8/¡µùHjଉÍbˆXrA:ÐGâ±C’Õu	éRz޽¿v#BÌ;Ä±ä˜æp$= &$z	\È
œÒÏ9'œ¾è™"Ċ~&Y‰ØqõRր#i±/³IÜ.£[®¤”³6âE>Q1B¬3Ďc˜m,e}ˆ	I·~óH—puéúú:óöEb‚ØpJ)å˜åq38|	ˆ	I?R&Vtʡ›ZFӛž§±g•Àq–b±
1Ñ)…c•˱ëgÀá[@ìuI>©XÏ&Ÿ.X %Ü)¼|ýàÓùóÇéYƒc“o©7œÄL9æl2Œtù¡»îªO¥æÎçŒsGŒYÃH)®bB’î)`ó¹éSÂSëzDÁ/”V‡ÁhÅ9þnýú‘|Î%ˆ1kp¸
ˆ}6Éá*½˜AÃʁ††:J=[Yñq.8'œΑϵ˜Ï=Ç2k8ˆ½6Ñ+\R¡EÏ(­<PÞ^]½šýµï]tÌ8vœƒñC
Ÿk®^¡µF*bO;&(œŸ/{}͚+(gßÓQUµ1™ßŽcÃ1âXqÌ8vœC0Œt"€ؗÄ^P
HE\À
åôsù›+WŽ>8cFJÉpkŽǂc±qá9œy0ŸCA֥«bŸQ2¹pËã
¿˜‹º2
idËâÅ7Ð30î%“~K;h¡©ýhÓÆQìûÂ>±oƒŠ2>Æb>æ<>‡Lˌ!€D	J_œÊæô“¯aᙥ”ÓХҨž|òš}³fÝJ¿i:Q]ý<½]éM2v]ã؍zÏ+'uxRCþ
ÿ
c0Û`[|¾߉ïÖ@ð>‡ñ1ö@‘ÏǚÍǞaC‰=ý„CÊãœ^¤á\?”îg„†‡õ£0å`„„áÃPìCÁû.äcÉñBaI#>Ä_JK§¡\6©€
È×2±™%ll)›\F ”ǖð¶ƒø»2D.ï;«;( ÄÕ
ˆßaI&†éY†Mü§¦V!k@ˆ
Yz\>o›«g†!3ˆtHÒcBÓÒð°²,ÊÔèí
,@ þ‡á±cÝÁHX‰DÿQiI¸½¥jIEND®B`‚‰PNG


IHDRJ~õs˜IDATxÚ͓Ý+ƒQÇçًY’ÎKîܚåe¡¼kO¶™Ùf)$$ñ,KË$’’r£D"ZZ¢V\¸¡]àޒÈÚõu<{6¬0wúvî>Ÿús¾?þ˜ÿ!HA M^3î¡&䄬ã"Õ)ƒ†€Sò» =Sª<åhöÙÅBöYHAF.¹*`ÜZ¡C´0ߠäCHɇÕ 	øÓc½¿…9&¤T-•',qEt§¨ØaЂž(þpíÀDQ!¤ڥB=Z#v§)¾YÇ-¾9ŒB»4©u¨Ј.MØn	É+7ÊÐÌãæ§K'Ɛ	A\¨sԠF˜Ð
6è0¨×Þñn7.æ1û¸øH¶­ŽwSÚ_ép®§øù&!K¬F:ÈஆWz¡ƒžÍAï"ų?ð/Ï:p ¡˜‰ÅC'˘BÎwåËɭG,¯èÑö¬P<÷§¶
ý
Ë	Ë
cˆ¸W1
ò[½Eþü~/ýËþÅó’Ù‰¯ÐâÝ^Ç
’] 1ÐBùw:1oæŒk0½½ßbIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MýIDATx^í™kpUÕý†ß@’sr;¹‡„B\$$@¡*X­…ÑÚiíX¬X‹Š"¥8t°ढ़*„QükۿŽ¢ã࠶Öb¬ ƒB©w¢E”p“[ˆ„ÜHÈ9'çifÍɚ=ŒÄÙ'ú¥óÌ0¾¬g޽æ]¿u–ø/ó?s}ÎOL?ÃÃ
æoó¿r‰;»ôpÅ)^yûI0ÿz¯8źÐp/`—öÌó™۵6°½ïa >Üuæ©ã?½/CřD¬ÄPœ¡›ÅÿYÜQno#ÜֹöµÑòD’²€ÅÄ«ø»2Úÿî€vêyˆEÌç6îe#'$Z›oW‚É!f¨ÎåãäÝQü L=sˆCNˆa›ÀÐõì…>Å…¡
Øåö\nØE-:/WҌQX¯$«0»ü3Â3
J!û8ºHIŠ3{aˆ±òÞ72t`ún(§èk»¯P	f;F/`v¾G)­ëþŒœpki`/°ž9È}œø£|ò˜Ï­€‰?±n\ø"Y¦³œ°™+Ìi Ô<3O‰æ3D'`ŠÇ#ßá‘åçtnøìå¦7më‘eMwÚ¢ˆU¢2ºނéV Š6<Q0[iºfTý°ý„cüô½_¤d)Q±Q
˜¬œP3|Œ,¯ð×û5U“U©‰š¤šWV¬C–gøè:“íE·ù”G¼†,­@G“jU¡ñ*Ò«<³¦ç8t:ršÊ0D)àUšüo"Ë pzTµŠåW޲•§B•ïZ°Y6P?K)Šװhҕß{!ËC¼
”-ŸR”¡<×LuÂ1GE_@ÛËJ7}µÀÉz€J+0’^ 竄QÊP²’”ªuo]Úú	ÀîgeÑh6룕J6ÕH•ëçn°õ¼{ƒ²•öñ%íÿ:çrU, åq¥Ék
ɵ@¼|ÊÍ+ë9]dX
<ØôrˆÝ ËJ„0¥Üqcaä\pÝqJR¶Š>¬ûÖ
f—y…”cÇr3[Áòõ½Jµ¸,¢e¨`zM¨Žo¾†÷YLúV&ñ΀âÉrm.š Wã¾|à&dÙ
-hbX
†ƒ˕jKم€ùÊRá‚Yá |†,óØK”µ`ö²L®†˫TTɑMWZ8Žp2c
·°œE|XdƧ‘l)»†E6â˜Õ?؂,¿`b*Ñ–#\‹,—<ªLSÊîL¦Uzê=€*+FÁ_ ‹i(6ΐϔ²+{&ª襅Ï!Ë#؅ƒGßýÛ—ÌÕŵsßþÀ	¼VàzZ7(#RÊnL	JW~|yç>ï@ƒ@¨ûµ3çhšjT­MՌž€Žýò5îý}™-e¦•¢*~k%@²làñŪQ¥ÊUªrUÞzu_/Àd¹“Ê[ʮl!Vm6ÇôWÀ7ï©R%2³AÝÜîý`pŒª©t}­W²…äBÀQH»X‚,ÛhÝþáÝۮÿ|ië¦pà
¶!Ë,³…äF 2fjôœé}ÝpÐq=Ç1pB‡NS¬Àh‚@ïþ9&·‘£9Oã›6üY²yÄJìãQJâG<,øt¾-$ҰR^|y8GICNÁh|ÎäK H¨ û_vJt#à,å½Ïl!
Êí¬F–·xóvJt!àÈ`ô¤Î&€ŒDÀÃýt8r™@û&[HnlywͬPÀi–Œ΅DnÅ8–:Žç/BÏLQ²É€½)*S*߼´³L£\Š˜Éíl¤mMá vœŽ7Ðò¤Ò#…äBÀޕ5BEIUÝGÂ4ÂyéØÿUÞÙ{ëæY/'p÷ⱑBr%`ú r6–ì\ë˜É:šÀI¸óО—[¤iýL_r=ÀGç^Ý9xÏ@!¹°[qRu°½‹t„ðQËrà›ƻL¸\ÓT­*UôS©êæwf["º¶G¦wö3˜Jú÷S8'e!¼ðZUk¢JU¤Â~ƪü酯"KÐצ™“ѥ€³’n¸40W1b™H¿ö¿¨TdîŒYÊÖH©âÌAèA–”gѽ€³’¿w0Bxh¦¯g^üÊTŠ’”¢L_hÓȲÓÌò›£ٽ€sN|ðøYVûV®R• •ž|ÀSÈr8{XùJRÀ9'¶4ÀeV “nB§~S®4%*AÉïÎîÞ	ÐLžãºpâUåG€sN|áxYV_-zaÂ]þ¿W·=ð5åI¶ß)¿™¢°s¢Ê:¿;àwtƒåëÈ@–‰ôgå•)×ÌÈQ	8çı[—A=rÉ|êx‚¸šäÀÇç4¬T‘²e“(ìœ8*yB[#܆¾“vpr{|¹ق	.šp°–Î	´…X€e{èüêҋT¤œ™ J›Aºü*©»îl<wދz6kÐúÉU—j¼üöw£¡˜’•¥•Ýteó.èæ/\F<²¤rÏrÂ{6ä֪T£”©$3E>åh´Ê4ùÅe­Aö°×ÙÁú BëîoT•JÍok)v4^À>äxBJ4Qտ¾¶aݡ-m_vŸœî>~ªq_ýæÕ?ûñGÿ¿v¦¨B㔯,¥ȫX÷3áyg£%¿ŠTª
MRj5Õp¡¹/NV¥&¨D…ÊS†’í£ÖÐl
%)MÙò«PÅ*Q™.è§\e*ÕxkŒ
4RÙJ<äØå‡*à|MLP²Ҕ©åɯ|ƒ_#•k~ÎÍ0‹{#¯i..§nrˆ—W‰J–O©JSºҔ*_?ÉJR¹OšÑþ¤;ð¨kðDžtͣ®]ü¼ÿ+è=D¦,âIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MÄIDATx^íÙQ‹‚@Fá“eIȀPŠèMEA ±ÐÿÿO-x±6}ÂÔ.Lïeˆύãy|xà´@ÏoĈ€€qgAû½“{Œ˜1cþ»!“á ·‰/-BŽ"b1qY`ÚÛuÖB·€ˆ%+°bIä0fFB¦2fŒÝærc˜¿P(€bÀ<À<À<ÀNM}SbRJP’3e¬OòUvjê‹1¬©@ÍC¬\kå«ÔÔÔgôéù*IMçÉWX©éfv¾
@RÓù$_`¥¦›Ùù*IMç“|}o¯¿ñÈÐ}
Üì§@Î*öœ¹ÒèãÆ7÷×î|s£ÑǕ3{*9:'!*¶ìùRwàąF4\8qЯgϖŠœ„w†9…º’šGpdGMI¡.'c…‘wAçmȂ%	F)kJv
`Gɚ£„%y~´>\Dÿ:J=À<À<Àr=5Ýô|uÿ½%_ŸSÓ!ÀÎW;5ú‡’¯ϩ	½
°óÕNM‡€á_NuÀÓMÏLÈyIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MôIDATx^͘mˆUÇgæޛö!$-X-´¢’`/ë–”R¹õ¡Óò¥¨ úPFŸLÒÕòmWWñK`-ÅÊE`A,T¢D¡Q°‚©»¾ìû:sçt8ïäNw{.ØüØOsï>¿}þóœsv<ÍõŃëÊÿH@a¸êª5”Á3øÿŠgP^ªŠW[‰‡uVq–¾!o(d’7ø…jŠÀêx…ƒWž!‡‡qœxy]×U]ÑåL*æ3u¯©¼ñǿ©w¤Ë:NLÁ3ä¡eòx†T|r€?uߙ•TP†…֞
äš;€í@ÿ¶=NLÁ}»e
øx¤BÀ&ðg‚J"¤e|¼tܯx7¥@
i}MÒàAJÿ¬٫GZH€‚ädÈtš‰ír•&C@¢ @¬ @® @® @® @® @® @® @® ®…P@„P ­Ð%P8…OÒ
h—}&蔀XAӀ–i£€XAF@ÍVsÔýj¾Z4.óÍý9jv" €XbêԨP" 8.%*Ԩ[T!‡GLH™c†+ãaï–(S'r+œî²14¨Sn¡ej„Įr…YŸ^‰DԩRɤšÐÈè€@¡a%²
Iyð }
fuôÝ@f´éº ^	å
¡Bz›ÁK*ùNÙþ–¢Çå°
gžÂGYÚ#Ðޝø²°ïFžtñÊ^ç0 AÓ
\lLéRËÔµ8ÙdªªSݧîUw«™ªcÚg¨6E°‘€
à8Àenö·?NH•’Á-±v•‹h Û6†ëÙZ³‚éÐ<¼̮üÅÔVPv{\à%¶¢t_ßð¥kÀÑM̭SߚMÝö hÚh*®Z(ð";Pº÷sG¿„Õ á4x¬~MHjz«!$9pV±Å7;Ÿø”`C1º¥i¶ÓçΚĄ©Í&)/Šàyv£ø~ے>JQñÄϰƒüFÞ;²ŽŠ˜X7®"¶H"x–½øíXØK¡øþ¾yt¦†qÖ
&S°í<–?Í|~ÜõÀnƒ²?ΜkÆƸqÊÁÅäÉáµK@ÂçøÞy;)JöÇ0pD³‚HØ,}Èã)¯Èq²gn·-_qOxùÍ//†ւã#4ÓîéšNޅ Ðħzælu]'ĞóJI!x¡iQ꽍I”T@0Üs×fʮ|d©S£úa_™Ž¦a<ܾ|Úd|<„ڍ왱	W>9¿E„˜(ú>kóGègŸ´‘PÀ)4ïx;I½†]N´¹ÐDԨP8Ñɣ¼ʯe9èáSÛ×?v¬=chÿҠš,§!¦¼»Q¥´yp$„¶p'åú·Ç:×Îذîb À-ªMå±wìƒxvôäwøktǡ©kê¦H‰*F<Cd±ÍOÇC…àЁ¡¯W½ѱîåϫç9Ï—(R%$wÀ'h­ÓŠè=þà¦ޟ¸€)ÏF¹L@Eځ´‚F+N€*E.sÁpΕ/R±Ãê¾ãhó+š8	aŒKŒ2’/Ùò
ƒ4‚l\5ÊM/¢֊ËH–¤:Õäð鎒ëoÒ¹¸ÎZ>WIEND®B`‚‰PNG


IHDR@@ªiqÞcsClÁ0`M	4IDATx^í[}lVWçýì[úñBûÒõ»S*Z¶“¡Ø1†ÃA‰‚K±¢Ý©Ä"$$‚’…„¿œؒj•Ď™!I#! F‚eP *ý²¾Jéñù%¿ӜÜÜ֛޼7Ñ'ùårï9ç9<¿óô<Ï}îy'(¥þ§álø?–ìã]Æ$ ä†ј´Œ¼=Á	§ÑALd2ø<Æ~aÏÿ_gƒsÒGÕâj²ì3Nã0níڵɛ7o¾vï޽]?þxxxx@‰àŠ{<G;ú‘Œ¨I„gǤmh``à{Z)ÉùE€cÅã˖-Ëéééùá“'Oº”A?é߀qoz„7h<Ýj"õ‰ҕrŸi(
3Nò§Nš)«û‘¢œû×Gê§m›Õ+ïÎW•¿)WٿãŠ{<G»҂q§OŸž=¦7x% ã¹¹C7nÜX-mYn$؈éyœ;qþüùâÞ}˜øjÿõÝ÷kUôí	*2Ў~èÁxè!	1M‚°úp¡”¢CW¯^}Íq®|[[ÛâÊ=˜°µ³U6N‚žþÇ?‰^èszÂXDØ9)(T”m۶I‚54~á…ùƒƒƒç1ÑŸR?w7Ò×vŒÃxˆèûz5	^ÈL”p4øCWŸz²oݺõ&¸ÜwI¥~Eƒ¼`ã?éíPè…~ÎC/›€<A™A€_$èÕÏ\¼xq‘¸l7”¿þçe0Šz CCCÝÐOۢ^	(7ð‹½ú9/^|JÿÑõ!°'€€>ôcí^¨0ð®>ÿäúúúöB!BÚx}þþþ÷0éŸŽ{Lb7åáÇ¡q}<	˜ßR­ ¢ÿŸ˜‡óÅì°'Átÿ\A¡„¬;P„äF`#ZGqS¾‚@?æÁ|z3´#s$͈c†>qõÌÃù2,	°'$rKe§¾X1?<ú1çKØ`O‚I@Ùýû÷;0øå–}Ù<xЁy¬	°'ÁݺººÞÇù±/Qú}ð{1cÇ~„Avµ+Ð9~üøöQ ªªêY)nôú‘	B/ôû,Hpä‚Ϟ={ö€Þö] oGæȻ€èýôÛä~63AAYii錻wï^ϷAèƒ^è·É}!ˆ3GJ0uë֭¯‰Ëþþré€öÏ@Œ£ë@ôB¿ͻÀx’ð¦&A×õœŒÓ_hllü>þóÐÙ•Oƣúkã¡ú —ú'êÕ÷—ï$d€^³¹T¦o޼ùõ;wît8k‚ˆëEy0WÜ;k‚JÆ]Âx衾)f=H8o.]õiŸŸÿ¥#GŽüLÊó=ʃ úcšúr]+BöؓI$$IBÝwfyyù¼}ûömíììü@V÷²¸÷=(À÷xŽvôCŽ« ž¤Y´!Àzݶ”Øt6[€՝«ÁûÙlŸÎþ¥ŸëZ¶'ÀOà}W±Œq|š JðŒ隣½Œýó8Þ}åí	🃈Æï)ÌäJ¸Âe¼–ðùöËḸ»ñöøO£§AYté$
ÕHòy–«á4>
ØGùT_‡J:	°O–h”Ýù{ÒN‚WãÒ@@ðI>öå5‹3B€„à°hÑ"e)æù„L3ÄŠ€ÚÚZ׶P(¤.\¸ l…'Uðz›6mRêêj×öuëÖ)HooïP2™ü¶´Õ¾*xIð¢jÁW_f~?ƒin93½ÆýH`ذaƒҲwï^×>ÙÙÙø8© ïŠHÛBúEÁ,jâ9æùŸgŽ_"HŽ€õë×ã,ä£
£Š‹‹]ûîرCVèáÊÏ|NðÌe‚+^¦ó|ŸˊN,Ô×׏ßÒÒòÇk׮õáfûöí®ý+++ñP[¶l©Ã[,äsN't®ŸCã3±	®Y³fÄøýû÷¿#mßinnþܾ}[ÅãqW<¨ ÖÚY´(¤|‘q…Î÷cNãÓB@]]6^Iù©YÚ^,F£+¤:ó
+W®t%@Ž©èƒKO¦N:‹‡ÝáÌùÓF*U«ð•UANœ8ÑĊL5wô¥òìïh;sæÌh!GUäܹs`å&W×꼐–LpŊ#ÆË)ÌfîàÏY–,YòY]™;w®+	


"ç{û¹	¦èæáÀ°|ùòãÛÛÛßaèšƪkÿý‚ æʕ+]è·gϞQC¢œ?Vݻw£RÄ"H4h”goõ7¶ßkãuá‘(á®þ’l†¿•耵***r%¡©©Iqü@'ë/xrîv—´=¯gèÊÑÅK2;++ë’²þ·($ÒBW3NÄüÁ €‡¥££ÆÏ0׵;€$²,½@ÎçžÀ89Ã?jH<|ø°Öýó¤þj›n‚I‚"qýúõ]Œٕ¦ñfèâ˜<ÖäçÊyýzÙäԨ!‘…!ñA*•±y$3œFxjƒ&º»»g¤¦Å.Ƈˆ(ãy	SÜW%Ü݄'Ož1:#P@F¨´:tè
ÌG›€83³I²cðCkît{ï=RŒó$÷o֛gMMڸq#ÜÝüuǰxWÇΝ;8¦ (Di$ëðsq‡ñ„yês½åy‰ߔŸAeãÿ££GþmΜ9õÒo	?mU‚¼ rÔàŽ\|¬ßEHR÷Œy­­­m‰ú-PBäîD"Ø_+ø:úðµ·ä¥}0kï4(JD<üjLoÌZ½zuüöç¯r݄&wK¯°èñ=&E‹¥› d ìñwxæŸA6½ ’éò|@¾&x™†?ÇöF,soI'¶ˆQä)VsªŒ*OŸEŽLÇg-PÌßи”ñE·HPÀϱ0<Ð8#ÉD†Î\\Ǫê‹{˜›¨‰ˆÓðtðkl,M^LݶIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MkIDATx^íÙ1
À @Qϑ;{fk·‚J—çŸÏ!SR¹7j²µü–æß^@ïD-ÏÖ+
©œ Ä°RÿÕʌ5<ˆk€Ö€“
ÀÃ3ü"ç IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M/IDATx^í×}¨–gÇñÏußÏ9í8§ÕY´E؆•Ô2FÖ‡ 7Xåp•4
Lƒة
涃­|	k‹¶^d:ÉQQsj­li#–8¦é*Šƒ
ÜÆÈô¨Íóò¼ÜW0.¸á¹9p{Eõ½ÿ8ÿë{ý~×Û¢/™ÿuÔ €ˆˆz"¢¡Q2AQúb
‰Ðk!r
óÝéQû=á»>ª_.Yz NAɽËcæ­´ßr£:âÌ/ 7àá|î—ý٘ӆ½—Ak5dB3*æÿ6W-s·…Ì5èqWð1/×0ó	dšJÐo³ÍÑÌxAf”UhÉf>T‚*äò™O€0å éd˜é
 ügÞábÄÿòëøÿH'D "ãÅÈ5ô™-ˆFE…Ò+áâ¼Óç]k³Ï]žÑ!ˆñâlÑwµyfiÆf\ï:owRGˆuo›¾õցÛm˜ç6i+D¢ĺA@ĩo¸RÉ
6ðVïp‹%æih:f§uþ©PÔJ 
–	.·HÇgeSP(™K|ÜÀ|¯ÃÙþã'ô>-DQ¬
¨¾þ\ã’cÂf÷«뻆Í>
xÉGì[â:Oië¤2J
d•=Ýg•–.̿à³æ_bȰµô[`¶÷Ã[,s·5ë“ËdB%}ŸÏÙ0Û}V
ØhµÍo´Ër“j2 (Éàk.÷ÚiÈ?t@„Œrþ[;×o­%²†+lóÓç²ØáA‹Yê	säBw駇›å¸V	ë|’«¬×Š~õ¸ÜNKÝì€å¼ÙJ}2j}²L	y‹tq¯·ºTÉ"²Å*Ý,ð
а>¨!„ª@î$Ïé¦ß6¯VåJݠ$x“6êæU^	2™ê.s›¨›×zÐô)ž‚crUø‰gvZ§Êr7š¯÷E«<		Õ
¢¨Ðt›3wڣÊ×]âü¹É7¼À8ˆÝm-Ϻ«SÜdD7op«ވ2êo
Q2Êùkkš´×ý'|ØÝ\¯79Á!E)PM`҄	[ìø‹µ]X~ûuJ2(´^VóU‡öZãÂòsÖÑQ¨&2hš0á¬Û=ÿM[]8F=ɈçËá«	D…–IãƼ`±!G\(~¡Ã~mmE5 *¤Œ;jݘ
†Gaö”	”E¤Æí°ﰟêÆý’ž–ª	¤í˜RøßÖ;ìvŽ=šÒ`jRaÒG‡ýQïl‡_k§§™Š
?恨GZvqÆﵧH ZCڒM?ó÷­á¤ÞØg”aIUՕ ­éœG^r_Ô?‚Ýݰ*PUh™ôCg¿FMŸ¦휶_;)Ԑ΄–S¶¶>ö²N±۸V*@½bRhÚêìý^4]]eõJh:åûcáK¦ǨÇxÎÓZI¡¶@,ׁ8¾5œæü'x\3
º婨tÎúè3EÓù³‰Âö4ÿ(Ö¨¾“v;'¿q˜½Ži¥[°¶@õ~\ïøºðQ}Z5µªýC£¦@®á¤[⦡yCΓß9(-@ÎW©„Læ¯>eµ«u‰F¬5©YYµb© xÖé7>j¤—ž¹šÚ
‘úÕGŠô·O.ԩ/ݩ-qºi.I )—êP¤s¤•æoÚ©†BG&j&ŠôïI€Hú7!}uˆé›bpøu=cP¶®„,IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¯IDATx^íÙkŒ”WÇñïÜﳷ™aöÊˊ°[V¶ ´KƒTӆvA[nj(	ZkS_5!ƘTIÖl”¨$
	¶oššµ-
ÛµA75¥7ʂ\Êì2?ÉÉÉ83q	'ÏDßx~¯çùæ9×çyÐÿ8Èæÿ|”R¡tÏď¹byûOû“
A˜9ʮBa"D"DÃÐm~‚„4yé+„	Àç
°×黸ëÏNü¹ðúø®Ó÷DZˆ)¦|„¸¤És#\"Üyñ!¢=\xSUmbäø‚†0% Dœ´$iòÔF‚ @x¤¯p@’.j·6k…úµRßÕIIÅk#÷µ„)Rd,yòýÍXÂü„ˆ]’Æõ¤b¢,aí–4ùÁc9C˜ JyIz¶Šp‡€0ɟöêU	訤SO‘$Œ*@ŒZ%	G‚í€iòc/JCB1­Ós҃–ð5I—_¦ž¨éØ)´€;Át!u´­VñŠ~ 1Éf™,–ôñ12$ÝÐaÎÛiòÌ>H¦¼µoòcÙ{°TÒø;L#EÿԀéàNð"A–Î6JÿxcÇ«/¾'ýÍÈm’Æ^¢™´	à3øžfºön`Ñ××^;#×!”Ш¤7¾íp'Ø{ÐH³»Ÿ”þ¨;
_”tíݖ9]àN°3!E–Žc;¤J
¡z½*iòÊsщ„'‚Ÿf2_="=jøYýURáüÎ/3‡;
nŸ]Κ'ÎJͰGÒÕ÷¶¬aÓɘßûÁàBPi5ÐMÉooKúþFæ3“i¤1ÿßà@°3Ìzú®É
ݬe¶¹ý1‚ø®»£4ЮŠ¶óKöö‡LyN„ÒUê;cÒ+ڦï骤׿I+vø
`qšö?$*PZ/ü¼]€p¸AâdÞÞ.í³à^I׏“'åPM؂%T~·N:lk%]>èá8|Ðt÷œÉKҰ´^§$<ëàB(kÚ<U¼!Û.éžKŽ$!G€;A`ÏEtý葏ö_9wøðg, ƒ&â„ð9Ü	²;"M´ÓÍ|ú襇äíè
p'ØÝ E†V:™ÅL:ÈSoþ¿p¸üø	%IYrdi"MÜò^	b$H’$N”-ïðF°§6ö™Ðàa,Øøñ™®ï„êæàààa›ªˆÀ;¡ö€Ïëö;_°ǯË>ÜáÜc„kxZÒ@a›¤ó“u²Š{XÎÝ&,e1ý, ›²¤ˆ¨	àIIÒóe€¤.Hڳ‡ûXÊBúX`3ŸyÌa&­djø†ŠR±¨	µ”vJ:sŽåô2›L·頝VòdÌúª`«)ÿ«_~ðOiG K7oå™MôÐNŽ&Ki Žq"5„_5å_Úźá_Kg.#ì—ôþQ撧ޱ²D‰²åñؤ¢¤W‡YɚàúËÒãe€û%nÎê³çÝ@Eü&>O€
š”thˆ%pk–ŽTLÆ’Žý‚6Òñ‰ê+ázSþ­aòÉ[égÅO$-)#l—4~Ùdˆâ¯)àSþè.ú覓étó)Vü»´¯b2^’´wÍ$	Ö
Ð!I’Þù¹)ßF–,­ô°|ø'EÝPsaHÒÙ:i Œ¿†é/»¹˔o"E’F:éO|á\¡z2U,#N €Ú$it7lù$"$Éó	V¼vH:]1+iôک#„Ï>d“>ÜÍ\ºly3HÒÈ,–<¸u\•“qƒ¤ÂõL7Dð{ø‰&;ö3³¤¶”Êûð$E+½¬<qZú“øu¿~£›’¤—7“%FÀ+ L‚údŽidi ‰ÙLJݓ¡›e;‡'$­ҷ4jJß,~8úãít“« H„iÒv-·å>BÔÓÁ]Í_<Smã7\´•ø4]d¼|&j×òÊoFâä˜˲߿V4;áðÞèYÍ2æÑF½÷1à+=P	T53#¤éômÜôæ+ŸfkYý,fö”'@å׾êH’£‹…|†ûøŸe1ó颕F¶ünûä?™ô˜³O3i!Cš˜}üªn5ø#M†<­4“£‘ÔÔÅk(}Y$Išdå™ç¿ 4HKÀà_̃J°%‹zÙIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¯IDATxÚíÙO(aðofͲF«´‹vKmÂJV{P\”)·­-®›h/ړr -i
má⢵’¶³»‹“‹¨­ÍC}m߈e>'ù¦çú]æ2Ãw& ŽJQ3õB8™Á…1(ðæCá¤^ÐL¥(öûÎü ¦ÚI
ø¢㮻Ï9Ì;3CSc†Ÿ¼ÁÇÊnæ"f9è¼(Ÿ"æfÎÊÂó‹û—\%±à*͞`ÓhƒfÏ	G(¨ksÇXA*t õ5g<îºF)¸ÁdÁÓãñöÒè“
Pšyle1FyAØ>8í¯Œ @€ @€ ðïštÛïú4ȸG‡x|¸‹EôÊÔvïð8~Že¤P)÷٘þÌcýåj‹ˆK+­àAÇãTûXh¿yZG	´ Ê€(.ùÜnÁ„/ù=ø`|¬-¥T·ýûhjX“PÝ~]^OÂ
þè„ÜòúU½×O¿¨ïOÕ{öúóúþ
X#îg¨’æ¾IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MUIDATx^½Ù_OiðV†°X” ¬„?Ò&¥½©-AaC‚÷
ßGoֽÞMŒÊzµ›¸üù<«1¡ÔbVw³êPµØÚÙ3=ÉäP§OÂ;¡s2!¡'y~í̼s&ó֧ðò»–~ìÞ/õTð·¯׀>	€×ø¥ñ+<£¯w÷0ôå¡/ۗ‡‚GŽ?ˆáÊ#߯Kù~å†1¨€KüŃÇAüºT@8xŒ‹Jp¸ÇCŠâx<%¸xüOÇxKxbÇx­µ®„øÏ	ñ<žñ”àpˆ§‰w"¸l¼l?û‹å…ï›Ï ƒÀ<>ºfC,ßm;Ü0àñÍZ¥X)îuP:(5;ÍãàÿÚô6k>ÿ,€û{ø\ƲԒÔ2V°zô¡pô«X	{–?—}ÿ>9,€Æßõs
¸‰䑓}·¾¾ï|}[XÔé¼rz:’¡6 úJ¢3HaNö򑀼éÈU_‚°øÁ,~8ì³ÈÖÞujï5€€Å+਄”D_B—q©H@J>¹,—„:*)€,ÀÆn„ñ0‡q‰ÿ^öq$#IÓ1g„ oúýè/`;€@ãÐjÔß6ޜüTãMýmë¤Ð:éèh(€@ãà¸*ÀÖ]%üè±7+}*².„€]:<pBø”ƒa®¥„ʆá)¡ª˜¯g„!I;=Üi>>EžÚÇ“ÿü®„Þ|ÿÿ$¤Êy.ÿ©„ó?	÷7‘z0$rÅm%œïe¸·ƒ’’¨‡@OBŒbJT…ÝC0€æqõ?[QÑéŽæ±˜øÝ–´Q=	ÃËc˜FBˆXŠ+¯ÛãƏX–}·#’ۦcµòÚlü‚¤ÌHZx†®`Æ,àÓ~{Ü( /û
,EÎK¸¡ÁÈòi_‘ñWìBÿ[¶%èD$ÑY7í6Øˆx¼™A’ö¸qã²_ë:\ÓéÌê@Âã
€bގ×H¼Bœ„Æ[%ÜsÉîküvt¼P‚>˜T_Ö^ԟ7þª?¯½¨¾l5:­Æé}0aßÞ¡¸çѬ¸Eâ
€ò{›àYNjö6‘'ñÀó¸^Ú
΅µ³ó$ÞaiBàñiL“x`„1!Ì#_ܦ;ûê±Ïc^ðc®ç]Æ.<ˆOàñ“Àã''¬Ÿ!þGwðÚx||8aÆÇp‰w8h||'ôN¹»…‰	à÷ˆ\ùYùr§×ü½¶Ã¦DZ*‰)„k~_\b˜”šÀh¬—p~u‹F¤äÕmüâ/¯1(åaÀ=þ¡Öъ7qØIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@ªiqÞcsClÁ0`M
IDATx^í[}LTÙßÁ)3ÀÈÇ2"ˆbT]Ñ-®µKYݏV³‹ÛݦJMëvuÝøUi¬¦MMì¶ÑhHmq7Q0.d5²Y?𢬶Dc4l¢È"à–ongrîd¼yÌ#½™¼IړüÂË}çžÇù½wι_óœâjÃÿ	b±1BLÀzã¿،0“ºR>|œž؁o)ÀÁ÷ì¬2®ÿWQP™ž000'
ú3ª%f޳ӵµµ3Ÿ>}úûÁÁÁó###mp¤tt´ghh¨	mŸѽ˗/ϖdø!”€É6چ?~ü\‡ú°k êÿà¸xñâ¬þþþ“ô¿s&]êÃDØL	ð>—F»»»W¡-5"ASTçå[»wïÞr¼å'220 ¾*ýX4ä­Ÿ/*_„>'ªg${ÚZËJ=:$èó”ú’
¶%_œ9Ü!ˆôe¶µµu
Ú"ŒHÐcçÃAúNòm•âlò4=¿ ¶ŠrÁ2B6ȖB‚)`"àV?¯æææuF$hìø’ßÒҲÎó"‡‡ōß¨ŽŠs³RÅç¹oŽ~¾ì-ºVï{úP_²A¶$	2ü0³j/XöìÙã—@Wd腕——§Ñ', ¾ÎWÿÞðžø¦¹Y¨Bmt¯B!A†Ceeå²-s‚¤$
\’÷ ټB@ZO–©oVÜýðˆ½¯ÚÚھ@ÒûZ¶=8W-N…{õɆԭ ۀC†‚ÏÓ|$	2ïD?~<lS2«Jˆå7oLÂððpÿþýûGVqqñúúúR{çùϼ}ªâcdb>zôè<_s’ôH0ûQíí퐖’b¯ÃÿzïWânÑߞ%áH‘—„C‡mGß×òòòV€„nj§pº÷Š	²MÏðý
̘®H×ÎI*Ÿê?äòOßñ:Ðóå—Ô4&	õ>|x3ú/<qâÄ鶴÷î]¯Þåw"HÈ6=ƒŸe× @“ãÏßÄaT×! ŸNLxj<‹)	EEE8ÎW1z�s3SHÇc‹„lÓ3—-ôI`8ù	È؞€­´yµÙY‚¤§§§b~<_Âýû÷멡vÉbN%ÀÕ`ž!“¡>ú$Hœ@4(	øÄù,„]ٷoßÎñÐÛÛÛ懀D~–S}Tb€©˜Ô<êÔéτ%7|ދ8°Ì	5È6=ˆÑ @‡s=zT;V¤Gٞ²¾	=Íͣj$ۚè“`·nÝú³Z©¤‘`Àӹjժw ÷
HØê‡Ã2H¶uB  $¨Ip÷îÝo VGԁ7’„.kw"<xpÛ$<;ê��m$Ô2¤"‹* 4½•ÑðöAÍ9!…J]GGG=ªC‹a‰d
²I¶uÊ`@HPBDú֭[³ãßȍ‚ÿýd}IÈÙ$Û:¡€ …¹NϨ®®þ­œ7~°‰bpu¨[šMð\«÷7½ï“-²I¶u†#ÀÛÝ@†õ½?É‘Öò“ã^‘3@êK6ÈÛt«“!
´HÈWHñ“d`nYYٯ=¼$FՁʚ\#Ð5µÑ=ґŸ}oiié²v&›L‡uÐ'agò£9Rȁüüü\¬êԌB„‰P!]êÃΧ°­h“MôI°û®1LB20xiíڵo_¹råpgggF†]pvˆ@×ÔF÷6lØð.érŸd¶£.‰YD€9	IB4‡C'±9À<`ð2Aàë|oë&qßh“EQ
OBÇm,‡Ät®å3ù
§1fs[*ë$pŸH“eqü×ÁíQìT;˜Le$r[é°n„º1(¢M@àIðÝã°p‘1Œhns±Ž²5ÆÎ[C€~‰ÔÙXô	°’›þö¸>֓ !V`=	Ö`=	ÁO€þʒÆ!¬'!ø	X²d‰Ð>Ÿ LhlAEöæÛm6›¸yó¦Ð>©òK
… #   @dffêlڴI<|øp8**jÚr€7€EÀ+>È~Èœù>“›IÀDeNo=۶mR°a¨ãr¹h]^CÐöcvô% U0HãIN2÷ÝAG-[¯SŒBhRL™2ÅP{ùr…¶›ßü÷€ïß!²$ÓØñxv>R™ÚZKÀƍ½Î;vì(Ne}Mº{÷î5ÔOMM¥½;víڵm/°“r÷¼bxv7QNt‚"	®_¿Þëü©S§þжŸ~L
X¡¡¡†$œ9sF ¬]CÛ, ÞgúfƒÉNˆ¥eKSÒyqá…B´e¹v»}å“'O†¨[X†dggˍʑ”””t&`¢¬ï~ Lx,"`õêմâ*Hêêêò’T&gô\´}AúW¯^³$޾}[\¿~ýC^Ј”ãu‘àʕ+½Î744rŸØ¼¾téÒ÷ñvIFF†!	›7o$ØÇÄIÐ-7+ƒ–€å˗{¿víÅ|:×ço“_ȹsçNogYqþX”””äór–°I‚…ÊIccãé<¾“‰œÕ!þ9‚60EBB‚!	ØÙœ0o2‰1r„|0nܸñ/=Kçc9¹HŸ™ñ†¬ƒf%$F1„ÎäRLøĆ`ijj"ç_Tœw†‹3úlàuW¯ã³yc–ijgÏJÛe<ˆâRg³š§ܞl5}Ä5;Õ×y¥t99lR€Œe˖mD’þJ"*Š,‰}n·{÷w!V žؘÔÕÕUä34b།açpHä!nÊ]»€Ô××{		ñŒNŸ>íJ©ªªZǹ$ŒìZM@(̢‘±ãx‹i‡…Ëw2b:n“…ûÊ䙓“#¶oßN¡$Xˆ:Êބó>›¹O\P ìÈD”±¸Ñ/Fl¿ÑüµÌCxŸA¡BcàҥKÿ\°`ÁFè-~Àá嶚õW¡êƃÉo†&0Iqœ3ÖÔÔ\¤l/g(‘%8àDµ?x“t€4Î-ÑPl»1f?ESO|ÅpÞH_³fÍZl[ŸÇßš0?r/ްšÀ`'f|¿´©'¾x¸ü*/€,^cÇçòýDÎþJxYF€Œº¼ Wyø:™+Š[ÝÂf²Í$˜	à’È{ûìd¼²…ý<0QÃñ &7’¨[Ú.“U "@jŒ·®­$à?
“!<…R/IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MIDATx^͘]h\E†Ÿ™³®Ò4ÊV1±^ÑÛ*‚ЪP(±6±*j+¶õ"*("*5â•B(
‰š´MŒJJj„–ñÂ"B£ բV±Á"Es‘ìž=û¿ã0v؅p‡3Îs±WËûð~ó±ÃJ…_$xå$ ÐXÄp	bi–YêEb\’@"Ó,>D
‰LFA6Å\FpåÄ|úÓ($Ü@@
®>x¡×*$' 	H\¿ÿ|"
­—P’€ sÔ*$y	€×Z‰Ä
$« ¡E
SÐJ²
ü*Hð« o‚¿
ü*Hð« o‚¿
ü*Hð« á?+ôY…$¬»ç¼%øUàWA‚_	~$øUàWA‚_	~$øUàWA‚s…^«à@ÀÁ{uÀÔ%ÙFჃ>ì9ÉY–8úÿ…ù-Hg#xžC¬…Å0ðÏq¸[Ü%ÖǬkE·¸MÜ*n"sÍ4ÂÑžå-àì™dŽU‰È’ӄä‰(R¢J
ål
û¥ê=,‡˜	àñÍDäȲh!KHD‰25êv±¡>š;•b7öS熍.3„¦ÛB¡тjSàIFêäЦéO>…¤!æ7Ž!/߳…
%Š,fe*¦…jCà	FœÚp˜Â³ÙsM»0tn[)©Q¥BÙB¥ßÎcÁ7ûîœ$Òf§ {Nð©åGî:NÕ,ªnhgÛ8@Àé‘;&ˆÈk¢þ™êBÝ-˸bGü4wû*ÞÊ$ߍ®#oˆ(ü”ýýHó2Ž“eY÷Ìj# \	(€	øþ@×ÛD†E4ÃSªÖCÆ.#ï붓"@8}§øq|õp#¼¤)SšûûË4OcÏ>Wõ¼r­é	€¢pn|ÕÞÆFW¨*”¿8;š–ñ⊧±´' 45øs|å›Dq|™ªY)£ðð×ᯙ¦e<d¶ߔvрÒè ùý7ØøxŸëÓY)Ø›oä3‚^ƏÖ#4¨QYñ2E
qù:^郊*»¦«ÝÜËsüÌq6AåâÌÇ=]_¹ÙêxŠñìu<@£ƒò¹¹£pŒAn¦pqöžû3/ný¥ÁÍtÍoÛÑz”FÞW5Ôü驗®{àö±£Å÷¤n$Œ@ÇLùÐ: Jƒ̾þê掝}Çs‹ä‰âa)
(ê1ª5^c†@aÍäg	ɚøxU©·'Ъ P€ˆß@¡&o/«ýŽÅå³Üޑ"òDM¿üX#P3-”æªÚð$b\Ó(C[ç_¤[ ™w/–HIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MµIDATx^í×?KëPð“hZ‚AÔBÄ"-Xÿ€‚[)]A\•Î*‚SÕAÁAo/¢xë¥Eºu·ˆ(*.íæÐIQ:8´¶tsRMNkèÈi‡—gz§óã$yÎ	CƒÓ€ @§Nån8@ç©NÔ‰¦à³!ùíØ|1¹`ͥ¼BjƴE¦f­9u @€„¾ñۑcý› ·XZ…G:gþð¥~V7
µb
ÁüÝ:àä&2Tô­µØožZ1
-㚶ɓÙéëèî%˜Š¶çxÂ1hº#—â¹D$kRày
}€­`öøþ3ˆïˆï€\ª½Ñû«ÓR
	÷RN¦ÏÇ^k„áehÌ4x
çŸÒØG»Øq5ñoë–rÁ4ª= ¿W’ˆc!ø ¸Ö
|aÛ7µpšpóð
)"/p8ñl7AÖ9!«b+™3þœÓpPèa('ùièÜ¡…nD¿@ç%)`G·†+bΪôwL€ ð
¨R.aQ–IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¶IDATx^íÙkp\uÇñ'÷ͽͥMLڦ÷@[Zjah‹€ãTñ‚0ÅQGp†‹8¨3T±
Î`gÐñE•¡‚µÙ={kÒdJQK	¥”n’†Ü6ÙK6»¹oö|=ýÏéxv§MO¢‚/Øß$³çÕó9ÿ˳ç"|Èù|ø b¥œã“e$[%çlÔQ–‘ù|ìÌÒ9’'ùR Ž{¼V׶êϵâ0R y’«(Yÿ€Y:WòëÛâOûSý`f2ùÎÄÑ;4ˆC1ì!ìÌ3ϓ‚_/ùqªT˜ LQ0Ã̔³{‡J¾
„}€*nœùgˢê1€nžf
d™Ê".å.ö1	ÀôëooU#‘£àÿ)À<wGۥÉcÛÈFΙ
î'ŒýâÚrÉ7WÄ<Öò…]7ë£pŠë¤„Ý$ɖ=uR`NÅ|fù¢¾ÛHÂó” ¶r5=Àôñ½ËÅa%ؤ•ïØÉìBì‡:ځ©<Tkæ°¾û2=#sL5§€±}R*j9ΐ+ŽË+§ކ½HF
¹‰çéBÆ9Â#lÊ$°ŠÐû=)–|sìÔùçKéÀ.8Eq ‡Û€Ìð*gnRÃϬ–"ɓì¹Ôì?А!cåWâ 9šèŠ
¶ŽÐg`Š;2ûÈsRfNƒm@–äH”õÿ´Œ™}HMÇN[[†šU†šƒ‡B¯OܟXŽ>þø)6ÇÀ6 WŠJ«¦߇miƒï’cá#¡æðp?ì{U|Æ÷ƒC-ñºΗÒ¯=»¤Ü{5ÿeþÐE–p:ûð‘ÈhoØu‡Ü
FÈñD|¨y´BTZ7“ǤRŠ$×&@M@¡,ì
ž²”/&Œ¼9ó&´¸+êr)CÆ÷˜6â��qxÌ(`ôGÖI©Ú6yR,ՉVØa|HÆϔÕƜ‰¦HSŸ	ès…㸖pGý±cП6n߷ÉqHŽ=€ڀR“Â2àE`¬#êKåǚ¢MýÎNMèÔúѦ„3nŒBğš„Ë-€§€îݖI°(òO.‡‰´39
¿1썻M±f­ݣ´{:´ AŠ;‡ÝßÄÜk|úƒT«`ЅßßCˆ%)t¢þ¨;êLjöŽvè<iì¯Éb)µ	PK°âgW@·
èzØrÍÔ½‰÷tžµ¾DR#ejÚܼbˆ%㤈
i³zÝAOütŠG2oè/R«ú¡m@¥£AŸÖ)²þNŠᣃî>­C{ËsØçly¹Mx¹ÍÙrØwÌp÷¸û½ã¡·Zïÿf®€
Y:~Š´߸'I1ÚsÐí:î>âsµìkUöµºZŽøÞötiÆø§f¦YdìÞܥ¶§Àa–÷ÝÀt’Épó«Ïթµ»[ý®fÀÕÜêowwj½ZÐ=˜GX~÷e©1[‘Í]°@êŽ<¯ –¸I1Ö5ÚN¿3 ½éiõ+­þ7=­×èŒі©dŠ/X@r¤j­,’û۰@ʤöŽ­úÌ$À&0'ƞ6Üÿîw°)⌻§â)ö§¡ú^•åR%ŪÙlÅ%†xeäPæÏë×ÐÑõ©“	§ê„ÚqO»÷¸§SësEœ£þä°N‹-€BBÀ¿!K¤B
%Ç. WФR–½ômf\ÿ€ =vöj]ZÀm,=-ä{wf¬Iß$NÈZ˰CªV4ƎÁn$-Ÿ#ŒN’‰ёÞPGðdøôHx2•Dg?iØzbwÉ
sØd›“°bϭz*ÉU„
%È4“Œ3Æ8“LqÏg@sp~Ù 
Reù%°yET(¥^Oüz¨G2’ËV¾Ë<ϸ•%ç¼=сèÑ!çå‹͋²,û¥ùR"ղ|ÁÆÈðÕȜs—"$^ڰÐr—dë²<W­ƒÉêk®Nà$+lr¸Æ$|Š›¸`ìÅM,÷Š6ÙêºÈèˆÒxãö‘w Æ-¶õ¸йÇÚJ&ÁޝQŽ9
Kå¢ÍW÷zö³aV@!÷©b s­
Â,“P ¥a™4ÊfÏÓqÐy/â8 ‘Ÿ0@w[ð(ìDf%Ød«•P¦Fa­l¼áúš™˜ÀËnîf'7ñMb/ {÷¹ʶ.܉ÌJ˜N(•*©“•²N6_á_FOè:df:ÞyàWw˕r…\yl/Ĺ꜄„…0ÀJ(bY(5²LÖÈzÙ,—úúßß߶çä+§µ_—«ýÏÏûVé'd‹l’
²^.)»ìý$äH¶ÍgDj9I™TI­X%e6-r™ÊµQÖÉZY!
s…4–Ü!ëÂë8”K¥,–:Udµ¬1J6«e¥,—%o‘TY|fÍ„¿Ÿ0úBU©ä+‚
ÀÙqÈ3ER*Fµ©‘Z•U¸BʤÄ@«±Zb¶œžeúï=۞mҟ•ŠÃ`23¥ªp¡ÁËSqH©"4žðU`ú””«Û5»a2T¡|#ê¿ùœ؈š.³,=!›ðÀ*Qc``…˜3æ±ùQÄÂÀÃëԕ²
€íØ%l’ƒ…õêÁÅÜó'ÜBÙl§xïi©›`þ„¿Œ Ҷôbu¿8Àü	jSÊ&ïccÝCGŸ]t‰4HõÜáü	õ²úLÿÌö¯“ͲNVJ­چ¹sنó'”H…Q°Á@4ÊE¥Á8Z(EçnDöcŸ¯Úx•ÔH‘©6ŽŠfiÅÿåd©6îPMºÜH™Á9ûNE>€X߶©X^m}0³‰gôNÉ|Èù\"·ÏÚçc‚IEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`MŠIDATx^í˜{pTÕÀç޻Ù]!<"
µ"iÇ vÂCªíŠSe:V
íT°
Å)´#µvZ§¶±P_VßÀ(
°J ¢ƒ”È#˜˜çnvï=_»×3sf§!܌Íø¿oÎÎ=»™|¿ùÎs®¾X¾`¾øRÀ#DØ^>(Óì ¶u±`S+T.nIŒ+,MnÒÁ]#’€2ᔻëGöŸåuN!DÚýý]©
ÛVO:B€Q¡Ë(éhlÑ]œ彯¹¹èûÎBҴ’¢Aæõ#^K€t.`ŠîLJ<1§÷|UyŽשæ##ڃaŒäR&²o}0ïœwŒÈçP(\Ü7Ï:ÿ/޹°–{X¦#úpó~ãýS—¬M ¹ø&½Wsåà?«Â}ÌáU:§ˆEÌţ}ÓÊko>Ne(¤Ã}&Õ~oÈãªð¯|ã¤顅ÛË!âßøê£ñ̊‰„Óqúý߸ïn®£…hlä"v;{Ú3w”…®
Øâ¯ýú©Ëp±˜®PËXöQðͅÍZçúî=ƬTE±„|’\ÍԠÚx‹ÅTO“h¤Çw݄g"GüðܲŸV,.7°„2ò—XÀ,0'џ>pÁOjÉ »2	Ãò/(í+ÌÉK_Êk,§¿µå@ýŽ£ێ¾Y·­aOêˆWðO~ˆžbNïëo³S1jñvʂµLÀҏCg›kÒÇ­ƒvœXѐD˜ϽXÎa¤–VÜQKÆÔ zzô½îÁâòÃðÛvdÆü\ij¹È=9éæš÷#K¹
Ën^F%§_¥VÀT॑±AX‡e6•èlã»*åŸ	¸AØÂ'/hÿ¸õ€b¥XVý¦˜‰H4³ù­„ç²h٧RŸ¥ô¦¤ùÍ}™‡e5)â×áâD¯€ƒƒ×óBX‡e
}ñ›ý:7Léh/puÌ47×rߴÖÀ
6íluùEÑÌ釛8va¹h¯S:""M†&×Ï}ëAƒn?…ó±ìJ‡íB¢p.IzÒÄr>B¦^Á­Ì~aPˆ µB2
‰²Q¼…ä ›>¢Ày½ ÁRŽà·!¥8!Ÿ¬	ڄAXê§¢	¨\HB
‹ƒƒ_èX2€S€2!ςí-PŒEӆV*ÐY%"Â'XzAчÔ-’íëAöPSHú_odðÉ*­°î¸Zy…ð>–¯©º®ž†’ÖéC±üˆ—ŠrpÅ!÷iÃôEá8nIÀkXÎê Q+ €4}<c$;0ð$·/‹ ݕ˜…'ŽòH–»îFŽaT¿‹ M@>¸uÀäKyo³žK¼¢ÓÚöHy(î߉Ä`ÅﰜÉéøMsw£‘0"V@£W¼qÞݓÜ>Ôc`.ÛHTMكŽP‚A”£µ£ÜøÏ[ÃX®Žm8ž1+ Ñ:ò˭}FßdWª™ɣ$‡Å¿ÆՎ`(IÄF¸=kù–$³€MÏâ£ÑHÔI(hüuÀ<а<Îmˆ*š¸À)QÿÅ!J9ž7$1Êëý!ã8ŠåGô¥eﴭø¡BÄ!ŒÀԍŸîpî"nÇòöò¥%ÎEÒ*
’&«ª§ÓV1z,å,ÖüÞ\È4D_>Y2U÷Îzt®ó"›°¼ÂPneý
U!a3¿æE,ಂbŽl¸z£)?]!È	ÜüÎûxTQŽêYÈ@.æîã,a:ƒcÒ[F1ˆ»ïðüS]Ì&õVìàQ@’¢޽ö?Üç¼jÆQGW™Í&c˳£fT§0ó ʝPÐá ´Úvռ–ýÃÙÄiDÅå[ü‘±\Ãš(š²õ¡ŠDçw‚|Ðá ¤Io¨›>«齡lçZ¢PÎjÖñcÖó43™&zLݼ¼"iN" ‚ ɒ!MÛóWΪ]WL¯0œÎHrï2ÅýŒÇÀæˆ
D”²(@m¯+ÿéë׌™=¹ç$^a«I“œÉṳ?ppK<9 ¢?ä)¬¢×Ô͌ž±#h@:°ËÑ(2®jâºßÞøµ+/_Nš-¼ÍG4¥œÉh3GßÿÛʙÿ¨YÅЩÂIDh|̲Ä_shÍÒËVÜ5ùì	½‡UªJòÉ6ڼæåÙÛTS-üŠj6u °‘1¡ 1tþ†ÄÁ
e<Œ
ð*Knqک¥eñ"×ó³-õÇþ½õ½¥{›3øN¯øîŃ&639OFçhy&Tðt´wD*§JÄÂÃÃ%<ødÑ.Ņտˆ  ‘“½¨eR„»#^..*Aç"Ѐ‹ß(ÃﬖA“V1¹ÁØ™q\òç‚lj0&qM8v9Yóï\¤‘á‹vªÁO 0m×ցː<“Ö\Áa³¿	\ Q¸k')Ìà)úÎa%A”
äK€6¥Ç4ÄFT…j¤c…gh¤øŒý–&@¢TÀJ€tø¶<ÿS0t¨`Vw,Ž‹ˆ,ÐAŽÐ8ø)Œ£ÿØ}¨ˆ¬0“§*y¨©J	yxЭ
ÁàoW±‡" ~Ëø‡îÈW¤Q†ÜùÆÎ¯ïõUH×í}ú²eÇÚÌ˅|n«‚ ÇVñ섒B÷ù㴓¦ŒYV ÛÄ\pb¯µ¡ðɆ
ÙV@ý¿Ì5ÂÒgÈ⣻³VAa®ú¸˜ç0Ìu½»@Ðf̺7}éÎU€Mg¿!%|±üiÞå2ÞàIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M¬IDATx^ÅÖkŒ]U‡ñßÞ{n½*†ÖRK¸¶É(ŠB‚Z41‚EDÃ-š)Xl´ÔÄÐhhE¹©$Rä¢I¥ÃU ´8,:#ˆM[¦Îíœ9ÊÎJV89ΜÂó~›ù°žõß��¼·•zyïHÆSo‘†zc­TTîžD*•ÉԅJ¥IyŸ'¾’$É×ät7ù«G­q¡÷çI’¼K3ä'ÊÌö¤Û-t‚c}ÑÕÚ|L®™ÐçL^I¢oðÍ_Öj›/ZRJ¦»ÃԼY¨4ɒ¼-µ
ÄN×;ØW,v²÷©Ïkžžìnóì¯Ña®KÎã`ghÔàp,բY½LP¨E „íPwÛâN7ø“nK4ht<-‘³áS´J‡[üÄ*mtj.‘HjÇ?b~s²܍–ØoŠ•–j2é"̂ƒüÚés’nu•“¤G¹ә²Ê
¤UܿÞ
^â~ä|×yÆþ\f–)ʘÇ9~žç|Ç9.ñ ¿iLüØdY­	dšœxˆ•Àá–ÑèT™J4q•'8‹išeÒZHe¦k˜+™ÍR•
#Â0C&­5>¥ÿŠp„ŒٕطÌlÕIkA=m
"Ma–LEÊGc+l—„ªa%ºúuŠp$¦©ÈTèפy%a'T)PBIID˜R‘ýD ›^ýêòª—ɂJùñFtð¬GAմ `+¯™æ{÷²
~fN˜‡¤zv#’jZðª“Ýç‚ú¹Ok˜ë›Ö;[]XLÒ*Žѫ§Ýp¹€j聙É~`›n;ýÒä?w´Lú΂@Qç€v‘}ÌD5	tƒÅ.·/&Yìœ+ü>T“@Q1ŒaUì[ž‰œG©«2A{…1¬:&Í"{ X@T(ê4²¡ffõ"OÀfáû±Úvùw»A‘9Õ¡Oˆ°ž©vˆS0dS
	ôàZ)zVXr•’PPŠï€
"8@eö٦٦ƒ.½y®H+|ÿ¥a]†—2ØT>†sªxݘêH‘V%žɏ/)‘Vøøœ­Å>oŠ:™  K1&ßpJ¼-`’k_Þ)QžRÒ»TƒÜæ«\ï]¾eª:)Júü«ÀH‹{}X„&m–JG€u[¯¨ˆ߾GxÔ‡¦W¸ٹg¸ÆF'
:ڌF£ÃD »l^ÑÅ&»Cb™©֘u©N߷ȯ¼d¡t¶Õîq´L¢“õÆÆIî5_d-ü]1(A
!þ3¶ÀJ
€™nñ¬OóYkÝìp/Ðfl|Î)¦”<'€44 SçD¾-GkµڜÔ|��ÆÈµôj+O@˜þ©œÄiÚÝæÐÔG˜n<¬÷OT#Hœ©¼ª©›ýÞ\4þ+ÄûÇ$ROs£ʐùªv§÷1b]8>¶¥¼îòÆծ´wSÔNvÚl	R”PR´ÓE¥í˝§`âáxØpܐ‚EÃڜ£çf_²ûÝX§· Ø#

Øâë6=hž×M,ƒZyÅKqŁ!ýöxÝùÖmtœ.ÉZ}<V~R ä
;]êÎnŸÔjâ¸'4 L€( ~ý†úìr•ëw”N´ÆÄ0â~vy2”'Š!…=¹Äo,:ËM&‚G¼Î:‚å”â(æ}ta±÷|?4~~‰ǗD…8}öxÊbÛ.·Ìø°†ùŽ’@xŽoSèÓe‘׮u™ñp—^Ò–*D‰¢áð"öØb±­+ýVí\«
+„U@hİPB·e†–ԼšZ=ÇÏ+(Ž> ¾‰\!ž·j‡‹ÔÆÕp«áÞY >ˠàÿ\ícçq÷ÓéaCq«7Cފ]¾kp‘vccÈp­¡8Õ
ˆÈ:­Øíþc,,×ÎCž4h(¨V |9õû£Û^ñ/«–_ø)[­0(4€1	ÄG®q×Ǻ݀Ñ)h·Ѕ¼éboÄû5ð¶½p¥ë·
Í$ɨU¯٭ôX¤݀ÁøÆ,‡1,¦UÎrŸç½8jmö˜•ÎÐaO.î_‹@P“Ý6»Â-ÎÞk-°ÀR·ۡO¿Ãñ#¤0	QaWÕ՗ß?ÎÍQa (ôêõæ(Õk—ÝùýÃñ㈿á{Áîü€JþÂŽǏO@ü^0h ¯þJþ7X¾ý*ó?ÄP°R)ªŽÔIEND®B`‚‰PNG


IHDR@@`¹UcsClÁ0`M@IDATx^íÙáTWÇñϹ3˲%ÄPjڠ­ZM)ñE«DŨ¤Mc‚ÚVcKB¢B"ÆB@Û465Òؔhզ‘j©¡"”Ä,‘•‚e»ؚ¡A
ڄ¢‰$twggî_ô$—L®Ûvˆ/ä{þ€ç{~Ï3çœÜ	Ñÿ–Ìÿ»À%KU‚7%€ˆ 
€€ˆ”„àüE¡51Fã#´ۂT>S5Ϸm3h—
–š¢GU÷[î?òcûºëTeBH ¤|EÕýî*T}Þ7Ýá ,S@ôCkäò Ʈ¤ò·[5ÇZ1Ӱ#~ê'sâ+,›k¥w™b²3þfm8¶Ân»ÐQA4ŽPµøo£ß|0Õ
n0պ™îf/)¸Ú”ÉDQS±|6ÈÞ43¸V·À{Ép=¼Ódð¨ýN:唃÷!i6:H	x•c­ÖLÒÂ[ ÏMv[Òû¾¹ÓçN»bÚä÷ø‚gÜ*)t>™ÌëäÚ$sï¤êF‹U@n§ÏVF¾£¹<±ý™N˜áÊOúœ
 â&72Ë;ôêѣª"“	ã%¤¥}¦ñ6Зû´…úüÅ{54EQlh)š%ßéSÂz׀Zâwîô9ˆYkÇUT]ë>Ûüڃ®W´Or®ù¸jÜÈGms™ŠYë̛å	Üm‘…–ù­{Tµ0Û|嘤»Ê$Ÿð¬[˜o‰™P¤C×ûÜ6'{Ô+NÙäªÌR7káJ´Ã­ôˆ;ÌÖ
SÌT=7«ªB•¢¼ë¯ôÝëzÁíú˜ýJXd‘a0Ï<˕ñVWÃU
¹fÈTL÷D¥o³o)*^n“ªr¸L»×T„¬è¾e޾ÆgÀu–›8Ó¼‡dÅ¥þûŠV¸Ï4á‹vø•‚à%€*¤¦2³4¾&­@!@îøÆÊTü™§•±Ln1ìOsNS2@Àfq•3Zá
ïÖ-ž“s@žcYñ ô’M¯”NA·€!¹¦fjA*Ÿkxȑ-s1ÙIÝ>¹¼H€(×P÷ºÕÎ}Í‹WᠳRdһMؚã֎XìÌÅÛ?¿—§Àù-3jÄvOðU‡íð¬†4ÎP7fԨuN<iP÷9g¯yY£5¤jFµŽïê>F٣QŒ`!Ó ŽU3èø€“ºM?<“öß2JFmÍmÔ]ê¶sڋI H UAݘ~#ë5u“½Î0¨&	Ð*@ÊùÍ	Ow¿»‹òåÅïa£øîõ3ì9ñ€fjÃQ/٭[üÁIžw.(ˆElà~ÝbìTא‹å-éXn3ä𠽺AÓVFìIñ/êƬïVûœdÈYI€rPØíðƒ&ÎÏa‡zûéfð=VŠ&ƨ§8[Ö2ÆÍàyCû=iblsš]†%Æ€”šu«6~ýêmÄóŸ(Gmü»U.œã8n¿$ËÊ3PSóˆ¿n°مò}M~a,ímÄâbª9ku<·ԀÎáeñO¿,oU(W1ePqÔ]êυòÿ6¦.c»Hs “ÙçN_6KÐ)u{lUSOû׶@Œá92²RL¦}R†F$Ú­£˜^Œ´J›Zˆbh?D䈢†šªLèH ]îÅþu$Ò4Td~7ŒI!ה‹bçD4“Bgå!&‰˜Êw.€(
.Œ¢R.ýw|Ià?ñÛyÈlNªIEND®B`‚‰PNG


IHDR22´6@:jIDATx^í—_h›eÅOÚüëŸ4©]׮Ý跑µ]ëæWél§•¶*¬xUôÊ!0±âUŠ"(ŽåƉ…Qo'nµNJÙ?l/4R”*N¢Ž^¸±tkeh¿.™íXº=>yyßôÅäM®„}‡@î~œç9çI>¦ÿx\šPXTP&]x)]E;qé*ÝÉýY*C9ÜðH¹QŽ2–«Tˆpò7ýƭ£9­Œœm„r•‘¼¨X¹»@ü$(N)"Öú's{ä˜â!҃ïÊãÙ_ˆ&h˜ ¢9to5ñüS,D ü_uÞ[uh@4P‚13KL‘ÊáCà·ì<ÀÒp»ɜF>”ÃU¤T%_$ŠH0܆C1‰'¢Ó]¨‚eE@„?‚«gœ<‚èÆO§¿?úÛ4I?CþúAø¥cˆU¨û{..!)Z[F?úÐ×ól63%Ñt÷æhXz1…ˆaU£áÖw››Iôb?«7q’Ȑ"Z>¦¼˜C¼¨AãÏո"Dtr6ì^þýR®11Š2*NÙElѼ˜C¾~U->D9—¯ŸÛH?qVBƀ(E>ÑãqЀðíë)IމdM­u%" ·çQ‡J¸M!®\€Qßֳ+XJ¢¹çطeæ®@-v c#ÏgI¹²l饜ÆC¨^ ù­`÷üq•%[xg	k¥<э€ðbxVܨDZ†MHzœ1ÙLrfòȱד3ú ³¨•A6¾]A4¡íÚy¢P¾÷çÆð1øýÇÄP½”¨A6»Âjù£C›+O±“Kïžysi–ÄØl½”!éÅ"îBhF»sّ^l1² Âî´A²ÔËR@Ôq©ǮOŠ/¡BÙ,%{1€H/µ9/‹d÷•ԘôA.ÊR@T«±»°/}5·èa
À>XjQ­”f²ÜK[<æȆ(­-ÿ09y„(*»¯—Ò¢eÌÂÞõ¥²)"ÊwίáIVÿÚrJ+%»A6€¨½ˆ¾´ÎŸÊg鋣âץ=ÓïˆRÊúíó¨Ï¢¼lÉu?›±d)חЅ½,{á"‘‡|v¢-f½û­×Ώ糔C:þür³+S´‘ƱCˆîÅzíà¿K™ÁVçó)†ÔãDßK›ôRèw…}¼õ4šŸvR cC2¿FïC، :õÂh'ߢ{نð3}+?Æ)B–t0̻ ÂØh©4ï‰—º­xäÄ+ù𓾺4»4ûó‡ƒý者­òo«9Dy'¦Ž1at¢Ýx=üُG±mhA‚ê¸9Dr5»نìF;:…öð÷hF=jP!N½«hˆz_A‚ì§MØ.ԄF„ïWˆâ!êÍË?ƒŒ
¡–?AÔ0دz!*
¢ƒ¼ðÁ/䃗ÁÀBéýuU—K %ëyùB
ÐLöc‚IEND®B`‚‰PNG


IHDR22´6@:šIDATx^í—Q‹‚@çÊÒH$£0D_¹(
‰ƒþÿêÄ?ï@\„ãÜy“…ÝutyÀ—L¨… |”ÌJæ5³’ê?Ò[R	¸x¬J<\8•h€D¥àÝ•H4$.¾H|\[’֘J@M50¬Y0³%q	EàڒÌñذɞ
s[’†H$†•]ÉQ$Ç$“DU±ÄgK,’˜->ËjŽ6­["jð1ìHE’²Ãà׳¤im”BmZ—DÕG¢Më–H£ú¡Më’H£ú Më–H£ú¡Më’H£z¡Mû]2xãU¢Ë5X¢˥OB΍EÓ/^’•_<)ÜÈIЍ×#́„9Ÿ5g®Ü)DRpçʹ™—s"á€a}1„ì‰8ÖĤd\Dr!#%næEì	1è˨YaMÀӰeGL&’Œ˜[Lƀµde„@ސú?ÿeœ$‘6ʦD›fý7UšÖn”
‰4­ըþiZ»Q6$­¦I£†Kì_L›Wì˜$½ø¿¤Œ1'XbúIEND®B`‚‰PNG


IHDR22´6@:çIDATx^í×ÍNQÆñ¿2JÚf S§Öb´°|„Tl ,Ýo‚—À
°4¬X»æØhÂçZݱ	&š@pìÉ“)/‡15qazžM“'é/§yçÑ?HùÃô‘>³®&ɍ€DD¾$Eê¬@Ê@ª“Fº8¤÷ýŸ‡¤qt»ûy¸ïÿîzA‘ÆÝ»9Ž"<pº‡¼(º9ÞÃ%-L2¢	oçñõIÔYäC
$¤AÎt×';ñ„ID4±]¾2„Aòâv!.ƒ䥽:Ý.+Ǝhⓠ£<ÂÃ	5ÝgÅ$ š)1¢J¦£Oб!AÊÈv!Y
”M‡•ш…„§øäpIKpÉáóT£!ÈúÂF}kümù]Iò¶¼5¾Q__ÄÂh¤›ø(„ 	ÁÊÄ+!9O÷1qD=E3qÄìÃÝ-i¢wf·„köG¼ÍàÇû(:‹žýò,:ë ?Þox8ÝHš,ù×—Šéøvøz‚<YÒh„°Õüz|›IXЏ8n5	ÑÃԚ­ó“8“Œtç'Í5†õÏ%SµH™©ÙW_NãŒY¬±B›åXڬ°fº8ñåtöS<¡(S;ŽÈ^2áS¡>ӎ1‚,³È³ÌH˜eŽE–M'fÚԩà3DÆì}3Êø¦B#ÆҤA*	Uj4h
#T䱠oÆûAT	ð)Hð	¨Ò0ÐR1Ï忤F@Y	9
ÔLg#,£^3æJëõŽ$>êÍuaA4Ól]„ð·Vhº‹£/5aG43¹4o¦€ýñ{y°4Ϥ&ìˆfBª«Óß?Øß?¬NS%ԄÑL‘1‚7Uۑ¨ÓŒQԄÑÌ Ì0b;ܙŽa5¡	šÁÅãa'™;©Óáá
Z
±¸`@¸­]2¢IÌçä.±c=4’ÿ᝱ô‘_m¥J¯ÇCIEND®B`‚‰PNG


IHDR22´6@:èIDATx^­–[hU‡¿3{Ñ
E¬XRSµ55Å ©Š¥Zú …¶V0‚`…ú`Ÿ¤Bƒ(^ÐW/4ÄËK¢ҒX£>¡ÕŸ*"˜ZŠ•ں;÷ãáðgÃÀìݏ}úÏì7¿=g{<¦â¥\ñ -”É=C£;S¼â÷çEÃÐ2´KhÌ…òV
ίE‰
D¡cê@û%f[H$øußü8€קÆ3´ ‚^ž¦ÚxÇâÂ:šÕ;oҖP¥Ц™'±Ë×ox롾4öŽ6TЦ±2‰ÜҼíñcÓ×Wj”<tŒ¢˜øÉhvїF$¹5‡2‰ķ’­FӺµZ#"ʲ¯ðŠÏõw-MEÁ+X5šœªZqÐ8$qÐ8&)×(åž'{w*P!qӸÿiUo
 ˑ+Dâ¨Ñdô ‚Ú'HԐQ£jLÝS`LšÉP.©¥ÉM˜ˆ€.þ)СK@DŒÑxPKs‹hX‰O—ˆK.ºøĤ’ÄIš”ÈjʓøD$d’ÄA³ŽšŒ„ˆ „P¾¬^!‰“&%!.!1X…HÜ5È.+%3h¸kúmhÜ5e- KèKò$ºÀy6‚i§æ
ÐøOI’Á,ÊÆr€ZX+I\$8ÊÍÄLgÕýj‹ºזÆ]j“ºݔÊ`ëîíËV¡$˜Dñœ> cÃ}ۮ$'ƒo‰IÉ\«^Zë8Ë1¼ö›ۥ§LmH;Å$dèÚQd‡ßXþåvÈà=`ø±թ-ĮÔFHDJm©!Åg¯íZüî</ƒãüÆëç6Kó†ö“ЫŸDG_yâ8~¯’Kw2
@Æû&ÝdôHóâHE¢û•hÀ*æ&§‹¿tñÌ<ì‘ñ4«·¼ÐdºgÉæµ$:ûòåñ9ºj†lk¸À,xOÔ?PˆDŠÎ(¾}éA£IðöÒò÷«x,ï×éÒSû8‚o	ÑÉØ#Ÿøgi¬ùhÜJ¨+ÑV’ž޻ùs+¿C´óëè¯!¶1À~£ØܰËæPJՓ`sÄ#³’ !5$$è×Oaš?x•õ¿Ÿ~ý…g]wÚn̈ÙýBBô֌NiöΝøpïՏŒLO]D;HdEd÷Ëޗ_Ä'çþ<üóIñÁŸ9‘øDÈÜiá
©%³
Y'b›&‡ßùx‰Žô•£Ö5“ˆ&ÿø•+E˜z:Ҿ6‰"§ï$+AԲRRŠ]QH%þ_§z-Y"BdKT(œ$²ü$ý֡*á_
¾ǔ˜t
IEND®B`‚‰PNG


IHDR22?ˆ±àIDATx^ݙ[LTW†…¹ãáR@¡c©5і҇ZMjÒ'Mišx+é[_L4Á¬%mcb¬ØÛ4áAMƤIû`ƒ¡ÓJQ¬ET*¡ˆƒ Ãeõ_ÉÚÉqÇáÀñ8¦]É2Ì9›ýÍÚkïu†Dô̘GÄ	ñёk¢DLEtQÃäÀ	\ $*äµKÞw()}¬؋ˆ€àP“omm-}ðàAÝäääoÓÓÓýàŸx}nttt/¿or¨1ž—ˆž÷Ž;Ò>|XÁ;nϞ=é|Ÿ–˜Š%œ áäɓÈ„˜ž™¦SWšéýSïÑÒ#Ŕþ¹Ÿòkþ=¿O|=ß'Ùq*™ç!â`‰
6¤G"‘„è
ߠ5«yòQá÷ù:¾ïG¬E”„x‡‡‡¿V%G–<&`£_§dø~G-³XŠÄK¡zNœ8ñòÌÌÌ$/—µo‰€¹àëÕ2›äqx<ʉˆqI䁁ƒ„hîlbS¾ƒÇáñ@B,EœÀÒÆÆƸ6hÓïZáû80Îï<ðÄJD-+/LMM
bé—EÚÄM±ÐÑâÀ9æñ€7v"²¬@ê#"“²$’u0@*x<K‘Dà98þ±##Èì0üQl]$ˆ–ã;jã´óxvˆÄͥs5:vwwµc×Â8_Í+#3ë\]À
¢| äîܹs-êdêiξ÷îݫÍjd®í·K–ÌGà¸ÀO`¨çÀ_ ü*AY9Nˆážyì|=Çõë׏C Èt×2„™ÄǀƒAÊÌÌdÓÇp»݌z=>ÌÎή¸wï^§È̩×R÷ï߿\PPð
òÔ9bUDÒ>ПœœL׮]#,@>ŸîܹÃˀwjnnV2œ¡6H÷uttDôîwÙÑRÞbywâ×\ª-¡‘‘‘®7ò’*‹ÕÉnEDec¡¬ù΄1xÒ,â÷û	¡/þ$ËTRReddСC‡¸£¥ق{³®®®ïËÊÊ^‡@	‚4³^k¶gj—o*ȧ¤¤,bü=gE	:N:{ö,ݺu‹®^½J§OŸ¦üü|ª««½téROЏ~úѣGwmmm
•••ë!°\$rA†ÖýšŠ軓lŸ0d&b”a‘@ ÀK„éöíۼR||¼^[ð)x¬e`	Š„oNÏ#za¿
ºõbž¯H^^óFCCCÔßßÏ
…OT[[K^¯WɼB dIq{çü„¨KH"üÉm۶šššhÿþý¼=Qäüùó´yófң¡¡ª««¹Žhbb‚ð®j‡xs ¾¾>ª©©Q™ùHaûGfÌDœ"‘Â<é3gΐ1êëë5$3ªf¸È9;,’,‡yP"µR‹išDœ€ÐE¢ïN[íڵ‹ôàÉTTT•`ÞÍXÅL,E(rκÙ2õš˜ëtzëý }ûöÑB˒5!%¥À6ËS`ÈêRóq:Ö`<55•z{{Ÿ8;[®ÚÅ.K}dHm8ŸF$e»¥òòríð²|© êãC’$sBXI‘b{´·}ÏTdë֭Jd‹zސ¹8¢ÌݴFÜRdé4៚ ¶··Ûo ›L–!զË\⭈¨í7I=IVjm߾ý™ˆ´´´¨lü
U›®
ݪˆž•B)ü»Üðñ~owTUU)‘jo8?œVEôCÑr¤iûÐáÇm)..f‰	°ä¨úPËʪˆ~0.’íp
ˆäæær›a›ÄŋU6ZA±á tÛ!§ï`’•;vÌ6tJdo”óâHô¬¼փ™ÂÂBn+ñԧ;žIԲzäèۮe=+Z­”ÊÎB°s·ú,‹Ëʽ‰ô²²Œy<ºyó¦]‡`•ù²².-+%àÀðŒÕ�§‡ŸßY¢,ӗ•]"ÑZûÙç_RKÌê´CP[VöˆèYI–u\–ƒzéV»,p|B (j’ZVv‹èYñÈÌE²$V€Uà5Pn†\·R>ˆRÉð"c6x.vˆèè­ËB‘Y,“(–	…ϐÔYÈÉt¢I6lÑÿC둃2]Nâl)֠r]¶ܗfpx{EÌe\ Q²ã)¿dÊ¿\š KÄBd¶-$΃¹ϥÅc—ˆ¥öXEaAä?ÊÿSä_nÓä/`¬IEND®B`‚‰PNG


IHDR22´6@:WIDATx^íֱ
 Aæ`ggF­˜€Íû%ÅQ£Ø@    ’Soy½È—x£n’UDÄêÍ ZD²bãlÊ~C@@@´‰¾~¸A@@@6£C¼Ðé•6wIEND®B`‚‰PNG


IHDR22´6@:çIDATx^í×ÍNQÆñ¿2JÚf S§Öb´°|„Tl ,Ýo‚—À
°4¬X»æØhÂçZݱ	&š@pìÉ“)/‡15qazžM“'é/§yçÑ?HùÃô‘>³®&ɍ€DD¾$Eê¬@Ê@ª“Fº8¤÷ýŸ‡¤qt»ûy¸ïÿîzA‘ÆÝ»9Ž"<pº‡¼(º9ÞÃ%-L2¢	oçñõIÔYäC
$¤AÎt×';ñ„ID4±]¾2„Aòâv!.ƒ䥽:Ý.+Ǝhⓠ£<ÂÃ	5ÝgÅ$ š)1¢J¦£Oб!AÊÈv!Y
”M‡•ш…„§øäpIKpÉáóT£!ÈúÂF}kümù]Iò¶¼5¾Q__ÄÂh¤›ø(„ 	ÁÊÄ+!9O÷1qD=E3qÄìÃÝ-i¢wf·„köG¼ÍàÇû(:‹žýò,:ë ?Þox8ÝHš,ù×—Šéøvøz‚<YÒh„°Õüz|›IXЏ8n5	ÑÃԚ­ó“8“Œtç'Í5†õÏ%SµH™©ÙW_NãŒY¬±B›åXڬ°fº8ñåtöS<¡(S;ŽÈ^2áS¡>ӎ1‚,³È³ÌH˜eŽE–M'fÚԩà3DÆì}3Êø¦B#ÆҤA*	Uj4h
#T䱠oÆûAT	ð)Hð	¨Ò0ÐR1Ï忤F@Y	9
ÔLg#,£^3æJëõŽ$>êÍuaA4Ól]„ð·Vhº‹£/5aG43¹4o¦€ýñ{y°4Ϥ&ìˆfBª«Óß?Øß?¬NS%ԄÑL‘1‚7Uۑ¨ÓŒQԄÑÌ Ì0b;ܙŽa5¡	šÁÅãa'™;©Óáá
Z
±¸`@¸­]2¢IÌçä.±c=4’ÿ᝱ô‘_m¥J¯ÇCIEND®B`‚‰PNG


IHDR22´6@:çIDATx^í×ÍNQÆñ¿2JÚf S§Öb´°|„Tl ,Ýo‚—À
°4¬X»æØhÂçZݱ	&š@pìÉ“)/‡15qazžM“'é/§yçÑ?HùÃô‘>³®&ɍ€DD¾$Eê¬@Ê@ª“Fº8¤÷ýŸ‡¤qt»ûy¸ïÿîzA‘ÆÝ»9Ž"<pº‡¼(º9ÞÃ%-L2¢	oçñõIÔYäC
$¤AÎt×';ñ„ID4±]¾2„Aòâv!.ƒ䥽:Ý.+Ǝhⓠ£<ÂÃ	5ÝgÅ$ š)1¢J¦£Oб!AÊÈv!Y
”M‡•ш…„§øäpIKpÉáóT£!ÈúÂF}kümù]Iò¶¼5¾Q__ÄÂh¤›ø(„ 	ÁÊÄ+!9O÷1qD=E3qÄìÃÝ-i¢wf·„köG¼ÍàÇû(:‹žýò,:ë ?Þox8ÝHš,ù×—Šéøvøz‚<YÒh„°Õüz|›IXЏ8n5	ÑÃԚ­ó“8“Œtç'Í5†õÏ%SµH™©ÙW_NãŒY¬±B›åXڬ°fº8ñåtöS<¡(S;ŽÈ^2áS¡>ӎ1‚,³È³ÌH˜eŽE–M'fÚԩà3DÆì}3Êø¦B#ÆҤA*	Uj4h
#T䱠oÆûAT	ð)Hð	¨Ò0ÐR1Ï忤F@Y	9
ÔLg#,£^3æJëõŽ$>êÍuaA4Ól]„ð·Vhº‹£/5aG43¹4o¦€ýñ{y°4Ϥ&ìˆfBª«Óß?Øß?¬NS%ԄÑL‘1‚7Uۑ¨ÓŒQԄÑÌ Ì0b;ܙŽa5¡	šÁÅãa'™;©Óáá
Z
±¸`@¸­]2¢IÌçä.±c=4’ÿ᝱ô‘_m¥J¯ÇCIEND®B`‚‰PNG


IHDR22´6@:®IDATx^íØ]ˆTeàç;çŒK™‹V^H)Dôƒ E ý\ÔEX›X`åE!Q‘AaáÕ–†?•áE$JþaŠ.†B©i¨%Ê*J‚æìÌì™ÌA†Ã,l7Ñ;{·ï÷~ç찡ðï'Ñ{þGd@ @Ï#ÝqB$(®}Š(*6©&R5/Úç¬S¾qŸT"„`\ɪ	©׼“š¡åܣxÈڊ‰>HÔ,í÷›ӆ­§ÏËjãï’T™šÉýnÏÀ-jR‰mrù2 ENa"‘Tè‚SÉD7I"p˜8$€¡'‰$Az¿a2ãKÉÔ(BùôO82Ó&Sµö™mrEh£ 
Ë*ÖH"›ÜèÞIhζÀ¾×î|
íP(ġèíI¤2™TڽÙg54l!x×V¿8l—ÅjÒr­h“‘¸ÛKf8îäf€0—ɂ+³ÜoŠÕr¹¶H£¬‹H]o•g<h±åñ¿×!sÈ8b¯˜ëœ/ÓÖF?® He-º=lsÞZ7ôyßÍâqS‡`¶„™žóºƒÅ^;IW»<=ǐGL÷¼ïL
2ñèÐv§}>ÕßgÐ,©„8B"3Ÿe¦æ[xÀjO`À<K,g’Ç:H´I(›¸ÀaÀ=6xÁ¸ôC&ë !Þ$Hìqá#»ð¡éªÃóÀOp¤j(üíͼ½ÐӼ­:|ê¶!wT"C
Úr{¬ö¤zËE¿rT−ÐÒ4èÇ–zË.m†´ÇÈ82ª¥¡î-'×Ym|Ù	{Kbˆ²‰†½ª¾Ì1½'·+ÊK†x“B[KӈºãG¬Ð{†œg¯‘RÄ(ƺ¨Ûäâ×.é5ßÂr£ÕÇU¶)wi¸jkݽfM»;Dü¸ˆÌ߰Qk¥¦^ò³ß9ä’Q¹6T#cÌ;N[¯—|Û;D=®“kiiú\±BCu(l¦i§V¹Hy,ÚqÂJÕaŸ?Øï¯xâ]ŒjjX¥þž?Ug
lëô¨Dâó7òñU‹ª«|Òf†íè ‚ˆï¢!³ÁÜýOSëԻ‰ ñ]š2©7œð€šxÈí·QSK^Ѥb—† øÄZYô[յÆuñ#:HPU«@Ê+҈/¢ANùÚû¢_Ïhكj$¾K‰ŒJ$q¤\¯䊊&•LùKB”€¢„ʟŒ¡()AU
ˆðßù×?<Ш³w+†#IEND®B`‚‰PNG


IHDR22´6@:’IDATx^Ö{lUÆñï̶…ò¢@y¹Z”DP „’j¹Db¹)	QD…T‚*‰Ѣ&(`‘Tl!€XR( µ ñ‚"‰wAŒÐjMKÛݝ'¿œd,óÇîìy’þ³Óùô9¿í™Ñ,M%©åøƒà÷’Zš/ û>OÍҼøa<àzo4t¡’,(×ë„ܤIBèȤº‡!÷:ñ]_ôdMÓ }e×úüžh~®¥èú´òž¥¹ËßD'M6²¶¦i‰i+ÀÙ{"ï•\øi­ÝÖݺ©wåü†ÈÛ½!}<D)Œž3©fOrŒK-z²s!ÿû‰÷ÙȾÄÉ켨ðóJu››„ÈHúÈѲþ	é1¾¼Ó숾‘AŒdÏRÄ8†ó¡Ae¤«.þ&pÆeæIÀh‚¤5îzVP‡·~e*Mtšôí}^ݫ/“\&}HBFºTÇsxÌJ˜Gø“2 {ª7[…¨.rIòÌû÷Ýð25œc«ØÅBd7€Œò-ëØD 1NÑ^«u`E/Ÿv,Èä'–.„’d7¶›ø'-
lã‡Ý/,ëÞ_§€| ù‚šˆ¯I0&ŽI¬xû’Y¯~P¼¦kö÷Là`,³n¬Á’¨֑±±01v]-½øֲÌÞ'™H#0š*2¨ߵ²NúzHpFšXH—Y}Ƈ™Í
`2Ÿҗ¦Sã7ÇÂÆQHʌL…xáôZ®¹TӕK5¹K/·#.W($5Æl\ªKh`™\<vç꺘‚€#HPÊÖ`¥n
€¦:3BCšXÞv¥Î O
rxÒÍÝ@º%€"<$uF-ZÙÀêî}01½
	ÄõTúæÂ*VPÌÃ@ÿ°±Ô7Ëñ ÌàŒtÉè	gøu—ۃãø›¤ÎD®A¹@ì*¾¥”p~:kÙÃ6Õ8’Ğ|âü»iöž¦'×jflÆNñ3¥.ؘwm|aæÉõ§6íx¼߲ۈcùT™GÞ쇆EŒhɹüм²E_ÁÀÄñ!©0ƒz£&QÚiuÓF˜¨ 6hPy87å:ÀŒ!K«6ÿ‹(aÚi£]5±4yH!ûùüA#}èS‡vfabqE½IÏä%r1vuµÚdm¢6NË×ò´±Ú(m¸6H¿­Sþ‚¿°ä 1%–""B£ñ´K±8aJg"„eçè¿Z=WÔQâµHŒá8ð™4p=㵩²ó­´pCM ¦& ’Ĉ"ì½ë›~ëÁÅnrfÝ'B;2dicÇò€dET¾2·öË*X¢cÔÓ)»ú^b2b³Ž/
ñ×Î>FdùÇfËhÆ`ó0j¾ì~œ˜&qïPOª‰ BTÏ<L;áÍu‡a±âË0¸e⻷¶cIl7î‚@ˆc´zzµì{˜ðŽ}ØsÈàoöƒ>í1ÿ[$‹8ظÄ'Ï!HdŦo2Y’­@ϼ.„Ð	ŽaaZ~aIčñõ>X¬îxšBY;§BPÄ$þË3÷P@T½s…Ǎkƒ˜B_^¤¹ÒC6,‚ôˆØOD"¯fÈAÑfœÿÊøƒud¹øKÉÒE¨Qo¶QԷ_ÅÄx}ŸcÞFšu峲¢n3F”íhÆ	Šx1eƒ¼CNýG”7^Ú{vû£Ӳ—/üÂc >Omð6q‰-„š1¢wÛTQG꼒kpœ€MãÝoRDå¬òž|1¤‰†—$›tŠV“"B»Du$Þ.£ºD%fB"8¢ï©ga%à_¬ã>™w€)ëIEND®B`‚‰PNG


IHDR22´6@:íIDATxcøO8-µ$èðÿ Òîÿuÿs¡Þ¯ÿÿcÿÇýÂjZö?ü˜õ?ú•-0X¾K])êüù?ª¸Gæ*Ëwˆ(-A@»uvëùT®K‰þó™~ƒ„˜~-ºœA³8ñX
XDí8A@‘ÿáS@ŒKi@KÄ
–00€Rˆ	J]@î¨%£–ŒZ2jɨ%£–ŒZ2jɨ%£–У™J¸Áí¹½ÁMӮÃÕtˆ%4êٯGæS»;÷CêJA7¨;WÐìÎý€ˆҭcJ».v$KF‡=F-
5Pj‡ØTIEND®B`‚‰PNG


IHDR22´6@:´IDATx^½ÔáJbQð{EoD+"—Ìe¥XZвlSÛêû~ÙÇé	z_ w±,ë
zòCZpwîzàÜú39,;ƒpa~pçœAü°GW̥’Ckψà“dÐ/ö‹’3Adϗß.Þ.Η‘E†„‰°½^Ư—½!1gåÉ Žïã;a&ƒ³21㫄¨H&ÌøÊ2¾×S’Ìx"LÜBa<•ÐD'tff„ÇM„ƒq#:áÇ0â&8W‰q DPÀ$Çøš¡qϊÜ£"|£’@‡ø‰ãŽ¥zˆn‚T†gÃÏÂ4ÛGK~mBÚÓ¦83Œ0a›�š„4¥ZǎêM³ˆJ¤Ž-|Gƒ†T·P·83Q	Ì:x×NS/Dßi Â/uÆ Ù^4$Ä*þÌäª!k&ƒáéÊK?Žâ¯ÿ‘.‚¼ôOW"˜"̣ðëÛó€ây𻆂tΤ”;ÑÐ2¾ƒ¯þ%Fãm”ÓH€yDXoþx¼5Œb‰ÇÛÖÖ!o?—(¢‚Z£c˜‚IžD­[b·ƒ*(bÁ~䰈¾`³޵ŒÝQ´»¨n‰f›ҩ„ÏÈ%y÷¥¸”fªé•Þ]\gbIˆwQgìŽÒv—©ë„]Ä4
3ãàU‚W=3³"*ñaf¯ýtCÏSyzO7{m&afƒÀ
¢2UBG¹iL˜q넎¨7­J„6n7âf܄q3UáB܌“p#nF%„™ݎ0f™3á‡0SkŒ†£aë5"¼fJ¨`­Ó8ÚƚœJiÂafED(KFrZ´„¡P™GA2/§œ!Aˆ“É"ļdˆ,^3	 #$:ò¡h·Í.ÝMIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×AkA‡áw»»Ùd7MÚM"I7¡ml¡U[­ ^¼ø��‡z1zñÐ""Þü ñ؃'R­‚ `z«JA
…´cücX’ŒèAòÿÝBàaf˜³¨ÿ	 ¤ÃIÌΑ@/ˆjB`aã$Õ!Il,4!¶.¨†ê:5ÄÄÆý|¹;CKq&¿¾ô“YVÄF›!}¤@ø¼¾·+L'$ ƒ£‡‘À#G‰‰ÕÛÂtBŠŒÄÔC,Rd	§öôŽ0ñHˆOJƔµø”˜dvõjN=)ë"“¦@åä·×Jm¨Ê!F”ˆ‘-sñÏîÿþ2"ô)̝s­šˆÎ¯^Ù^û(«Zˆˆjl'…‰Ñú•äJiçE;ñQɽéÂÁUJ56/’"!+â^1†,÷ظddíO—ðd=v'bó퓇roúD¤@š„0WHãâÅoԗ7sg8ñè®0} &I²?…a>\ïW∯ëó§9Âa/7™>.£IŠQвô_̻[ÛkqÄâ)f8À~jÌJ4‡±^Ÿ1AZŒŠ#ŽŸdŠ*!cT˜¤&¦(2Ú+
Òbâ‰TÈáS Ä8ÏëªA@–doH9BPõNÄ>²x¸¤ñ	(®/‘gXª¾_„ND†$6¶Tg–òdp±µ‘踙jXȆ)<†›qq°´‘ºÔÆê}f¨Ê΁44	œ轢‰ ÷fo÷ÙMBrxØB 1¢7™ÀúHë޼ºŽ+H4F[ÐF"æýUÒRm£$ DŒtÂè#¡ê2ÒÐ)äu$#Ò]]™Í$´©úUjbÅ(ã(óÌ1Í!¹ۦb#OªүÓíá SL2N‘|„´§;b`á mD‘r{¤u‹­ÑDd-Fðc3J6*„þ?x4aŒ^>݄èù[ ä‘òü	¬%OAIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×AkA‡áw»»Ùd7MÚM"I7¡ml¡U[­ ^¼ø��‡z1zñÐ""Þü ñ؃'R­‚ `z«JA
…´cücX’ŒèAòÿÝBàaf˜³¨ÿ	 ¤ÃIÌΑ@/ˆjB`aã$Õ!Il,4!¶.¨†ê:5ÄÄÆý|¹;CKq&¿¾ô“YVÄF›!}¤@ø¼¾·+L'$ ƒ£‡‘À#G‰‰ÕÛÂtBŠŒÄÔC,Rd	§öôŽ0ñHˆOJƔµø”˜dvõjN=)ë"“¦@åä·×Jm¨Ê!F”ˆ‘-sñÏîÿþ2"ô)̝s­šˆÎ¯^Ù^û(«Zˆˆjl'…‰Ñú•äJiçE;ñQɽéÂÁUJ56/’"!+â^1†,÷ظddíO—ðd=v'bó퓇roúD¤@š„0WHãâÅoԗ7sg8ñè®0} &I²?…a>\ïW∯ëó§9Âa/7™>.£IŠQвô_̻[ÛkqÄâ)f8À~jÌJ4‡±^Ÿ1AZŒŠ#ŽŸdŠ*!cT˜¤&¦(2Ú+
Òbâ‰TÈáS Ä8ÏëªA@–doH9BPõNÄ>²x¸¤ñ	(®/‘gXª¾_„ND†$6¶Tg–òdp±µ‘踙jXȆ)<†›qq°´‘ºÔÆê}f¨Ê΁44	œ轢‰ ÷fo÷ÙMBrxØB 1¢7™ÀúHë޼ºŽ+H4F[ÐF"æýUÒRm£$ DŒtÂè#¡ê2ÒÐ)äu$#Ò]]™Í$´©úUjbÅ(ã(óÌ1Í!¹ۦb#OªүÓíá SL2N‘|„´§;b`á mD‘r{¤u‹­ÑDd-Fðc3J6*„þ?x4aŒ^>݄èù[ ä‘òü	¬%OAIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^íÖÁNAð®."
ˆb-B¢(µÓ¨6ú¾/ WO>ƒñ	<“ZðÜ=«¨‰‡²ý`6Ùœ쬉‡¦ó]&3òËî3çòÏ"Àë,"^ ›ø½6Bàc\Í\ÍÀö#oG$1†Øi¾ßî·OóˆaL2úˆ$Ì㹗ŽÃöÒ>žƒ)}DöµãüfÇî,&,"‰"#}DI€‘Œ>¢&Œ¢"Œ&¢&<族ÑA”„šÑ@Ԅš	Šxÿz7Îg'=
Üx#œ½L0Ä@ìhžO!ÜÈ	2GóˆÁŠð93öY¿Ûïöz/ƒØO~Ä~rg5ƒZûì0>KP$
)°„*êøŠ¾c׏`—£-ÎÖYµÄê,Dƒ!‘’ÇGT°‚š	Äj¬¨°2?B"_âH ,
(beTÑHƒ£eÎY•euqñº”…‰	$‘"5Cꪩr´ÀÙ4«’¬6¯ÜÂdCœ”E,M¦"
‰4g-VÅYM"ø&B1&†²(	¤ÄÑg
ƭŽ0!/-2XÈ"G-oº´þ#ºo^xÃ[xÝ-l2‰̫[8CÆë4·0ã$Õ;w|͇ˆôÎORZ§0âû9ûB±/ösòXQãH핞/—Vف"åá¥õ|¹WB
㤋 °S{º’Œ$ìÔP!_—‰)äQÚÜè¶}Œ º?77PbõL½S8†	L£ˆåzë®ã1’¸ëÔ[XF‘Õîõ«õ!$rXÄêúöíµËHâöz}«¬Ê!©õ!¡fԄÎ)¬`ԄÎ٥b”„¢d\bmK®…>"™ê—-î´áŽZû†ªŸ‡Hf¥Ѽo߷M¬""™,Pi6š
TØËúˆPˆd&1Y™Yö&=""ã2ñá—XšI²"áï"3a1¦wA½
‘Œ1.@"<¢‚¼°é ï?ëÂ=´‹<”íIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^íÖÁNAð®."
ˆb-B¢(µÓ¨6ú¾/ WO>ƒñ	<“ZðÜ=«¨‰‡²ý`6Ùœ쬉‡¦ó]&3òËî3çòÏ"Àë,"^ ›ø½6Bàc\Í\ÍÀö#oG$1†Øi¾ßî·OóˆaL2úˆ$Ì㹗ŽÃöÒ>žƒ)}DöµãüfÇî,&,"‰"#}DI€‘Œ>¢&Œ¢"Œ&¢&<族ÑA”„šÑ@Ԅš	Šxÿz7Îg'=
Üx#œ½L0Ä@ìhžO!ÜÈ	2GóˆÁŠð93öY¿Ûïöz/ƒØO~Ä~rg5ƒZûì0>KP$
)°„*êøŠ¾c׏`—£-ÎÖYµÄê,Dƒ!‘’ÇGT°‚š	Äj¬¨°2?B"_âH ,
(beTÑHƒ£eÎY•euqñº”…‰	$‘"5Cꪩr´ÀÙ4«’¬6¯ÜÂdCœ”E,M¦"
‰4g-VÅYM"ø&B1&†²(	¤ÄÑg
ƭŽ0!/-2XÈ"G-oº´þ#ºo^xÃ[xÝ-l2‰̫[8CÆë4·0ã$Õ;w|͇ˆôÎORZ§0âû9ûB±/ösòXQãH핞/—Vف"åá¥õ|¹WB
㤋 °S{º’Œ$ìÔP!_—‰)äQÚÜè¶}Œ º?77PbõL½S8†	L£ˆåzë®ã1’¸ëÔ[XF‘Õîõ«õ!$rXÄêúöíµËHâöz}«¬Ê!©õ!¡fԄÎ)¬`ԄÎ٥b”„¢d\bmK®…>"™ê—-î´áŽZû†ªŸ‡Hf¥Ѽo߷M¬""™,Pi6š
TØËúˆPˆd&1Y™Yö&=""ã2ñá—XšI²"áï"3a1¦wA½
‘Œ1.@"<¢‚¼°é ï?ëÂ=´‹<”íIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×ÏkÓpÇñw›¦I›®ݲU
ÝҲÂƶê`þØüêŋ€†(êa^,ˆô0Aoþ!¼ì8^vÆ…y/Sˆ Tcú,ãKI41+¤ÏçÖˋäI>ý÷äÿBúH‘IyI{Ñþ´$å%l¢2è˜äƒ‰N¦›q‘D#Bx€=ííEa!
ÑÄNjäÑÑ rv 4ËBl,1ÂFRĠHE!Aâ珵ë8”“#&ƒT$Vo1Á(ÃXdI'CrØ8‚„+wh2N…92{AjA¤%û^}È“ŒbËuÈFzˆÔÝMù²~j:e
Šè¢˜¯/ÏMa“—[¥&¥’¹îֺ˜o/Zu,tµÝú~
i؈Z÷¦[ïb¾?¿;Љ¬]ÙíE·í—M|Ä'$Aæ~U¹²ä¶.¸m×%Ñaâ"ê¡}´õúwŒÔdëÃ%ퟚ�MlÄ'ßãäsŸ^…ß4,òÞ_‹_6é¸/£O–Yà0GæÏ|ÞcZuì·W:Ä]Aä%5Ñâ c;ÄÊmæh2Å4³ÇOyÒÞÜÜ!„*Cäâ CTýŽj2I1̜8dd„ð‘1ì8ˆI‰ŠÛ^k1Á8£”±¦Bé0F…81©úF6–p¥‚M<%ö…3­ Z<D'O‘ÊS’Խ˜Ã!òx±ÈI
¦åWŸaF=IuV1ȒA#µû+²-Ì>}àzÓJŽ£ÎV)…£c1ŒóìÆÏ²îĈ0*mÙë×ü÷bO
V‘¦ÍRxwU½DaIG	ÑsÄ_{Nš6bpö‚dåÿ"r¨2ˆ™ѤÊ8Lp€ƒÌs”cWaC4iP¡(UŸ¡Ê8“̰Ÿݑ®nøG%=	F¿l¨P•V®u‡ªßtRIU6%†°C3Ht"ä¯?Œˆ‰™8Ÿx‡»ž§ô‘_€½ü<0Þ5IEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×ÏkÓpÇñw›¦I›®ݲU
ÝҲÂƶê`þØüêŋ€†(êa^,ˆô0Aoþ!¼ì8^vÆ…y/Sˆ Tcú,ãKI41+¤ÏçÖˋäI>ý÷äÿBúH‘IyI{Ñþ´$å%l¢2è˜äƒ‰N¦›q‘D#Bx€=ííEa!
ÑÄNjäÑÑ rv 4ËBl,1ÂFRĠHE!Aâ珵ë8”“#&ƒT$Vo1Á(ÃXdI'CrØ8‚„+wh2N…92{AjA¤%û^}È“ŒbËuÈFzˆÔÝMù²~j:e
Šè¢˜¯/ÏMa“—[¥&¥’¹îֺ˜o/Zu,tµÝú~
i؈Z÷¦[ïb¾?¿;Љ¬]ÙíE·í—M|Ä'$Aæ~U¹²ä¶.¸m×%Ñaâ"ê¡}´õúwŒÔdëÃ%ퟚ�MlÄ'ßãäsŸ^…ß4,òÞ_‹_6é¸/£O–Yà0GæÏ|ÞcZuì·W:Ä]Aä%5Ñâ c;ÄÊmæh2Å4³ÇOyÒÞÜÜ!„*Cäâ CTýŽj2I1̜8dd„ð‘1ì8ˆI‰ŠÛ^k1Á8£”±¦Bé0F…81©úF6–p¥‚M<%ö…3­ Z<D'O‘ÊS’Խ˜Ã!òx±ÈI
¦åWŸaF=IuV1ȒA#µû+²-Ì>}àzÓJŽ£ÎV)…£c1ŒóìÆÏ²îĈ0*mÙë×ü÷bO
V‘¦ÍRxwU½DaIG	ÑsÄ_{Nš6bpö‚dåÿ"r¨2ˆ™ѤÊ8Lp€ƒÌs”cWaC4iP¡(UŸ¡Ê8“̰Ÿݑ®nøG%=	F¿l¨P•V®u‡ªßtRIU6%†°C3Ht"ä¯?Œˆ‰™8Ÿx‡»ž§ô‘_€½ü<0Þ5IEND®B`‚‰PNG


IHDR22?ˆ±dIDATx^ݙmH•gǧçxRóøî1Ï|›sÔtî…lsîÃƂƒ  ö­·ɾíKi
[ؚŒ1ˆ@–µ1èC'¶„¨­1êÃh†Sږ³Ü5Ò4³2ͷô¨çÚõ‡떛çôðxd»àÏáÑû¹½ÏõúŸ!¢%“a‹­‹E•¬	¶Dz‚h‡w°œ¬Ö
V¬’\ÇÈï
j¹AL8Ôᛚš֌×ÎÌÌü6777@DÓøäë+cccð{
ʡöX.Ó®ݻw§NLLÔ‘Ÿ7?Öí۷/
÷éމ4ˆá„NŸ>Ïø¹9êñùèʦMt.#ƒ¾gn|â?ÇïaXûÄ;N³ @lٲ%Íï÷_Äxw7]Z»‡*üë`¸÷Œ#Ò 
ÂÅJ9¦ Îy< óò¨ëرÀDOÍMOâ?ÖÍÃà~ì£Â,’ ђ¨ñ>Ÿïå@ 0ƒp¹TZ:‹‹iêþ}2mft”~ݸ0X¯Âlû`?ì=¤X‰ƒƒƒ_[ϩS ùù€0aˆ«ؽ;wî´(¬îƒaì‡}#	┧—:99‰ܘÊÝǏpø…`úûû¯2L3.fÁ}0Þçì‡}#"a%1홝ȹôt€ÐDoo×Á`¸ìÞÃ'r 糲Æ}fûaßȁHX±²8?üQ¹Ć-a@\.R†ý°o$AbYɬg¹Ü7<¢žü`0ñH@÷{vûaߠ6š	’Í#ǟFެ···…sâ÷`0È%=GxŸVìgHT8“«žèéììüʬZ¨J0T)T«…`̪…}žÆ#¸5¹ÆHcZDq,7+•³gϞõœ'³zw£›	£÷ܿÿþõ¡r$Üñ;FBæcÖUÖCÖ ëk«†u…õ«u‰UÁ*b¯à±ÒXW—Þ٩»¾9ƒÄÆg€¯zgÇzXww÷)x>dÕÒ,Ä',r8”M™™™ ÕE.—R×ÖG^¯·üѣGí֬¥ ?~|#??ÿUÈU}Ä*ˆêÒnÖ@bb"uɁNž<	r»Ýt÷î]„*544(x¨™¡ûÚÚÚüæôûƒ׋‹ê„käÄüô;::ڱuëÖw µJuv+ Ê+%æGá	Ýph€$''Lšž¤î)Š‹‹£t.ÁGŽÁDK‹f³ŽŽŽïJJJÞd€ÕR­RCÍZj“‚@򦰼¬þ¤¤$2
 úÏáèt:éòåË(·tóæM:{ö,åqÔÖ֎]¿~}˜«Ö4¯Ÿ{òäÉC¶¶æææúŠŠŠÍðŠ@ä°ÒÚ~53«“›õësV5k(ˆǃ¡ ܢŒRtt´™[~Ög¬·XëX%¬à	p‡õ>"f&ö{¬N3™Ÿ$77—¦¦¦ÐÐhhhˆ@EEEÄoTSSC			
æ}V«€•%á”ö¢	!^ðãÉíܹ“Μ9C‡B5Z¤¥¥…¶mÛF¦Õsy­ªªB˜Ñ4JìÄÄ|¯ª««•g>eåKb'³âÍwöp¾kr
Dk‡¾xñ"éVWW' á<£rIFP 5’‹©D”‚¢W§í,ڻw/™†Ô——“ª€8™©½½PÄI¯+DB¦™á~ûgŽÞ²èàC´€é^²¤ ”¸Ìb–UÌòÈÑ Âqhëk¬©””º}ûö‚±Ӹäª*vCò#]ÂÊiDúE¶”[*++3š—ýòù|*¬¾ÖƐ89ÌH’$ۋ¬Fñ·}K
²cDz]½oà,VA#.I2Lšo³`@lmmµ@Š& ÆXEjL—³D9{Xå7N½‰WªY´k׮%illTÞø‰U Æt•èVAL¯Hâ?Äzo·UVV**VžÖ?œVA潢q C۷,:zô¨í ………€˜f•Êߓü°²b6Æ)‡ï²ü9993lƒ¸víšòF«Pk„.;@¢Ì
&^9Ϣ'NØ‚ÉA@éA‚{å9ÖfV   c…`½»ãDÂêu„•Yv-ƒ˜^1reT:|ø°ÕêyïX¥‡• æ™ yek2>>žzzzìj‚•¡ÃÊ:H0¯ W¾`aX-ǷnÝÂû; XÅfXÙl´O—:ÿ’
1T«7A=¬ì1½’(q\ _
ÔɴÚaA³¾‘‘$[Õ8Vvƒ˜^‰—?˜%sX±týu¬7Xe¡$ëJåA¬gèÞÀYì1eŽ.+f•¢PT°P’u«åAä°<âéXÍKbþ‡6^eštb¯$kv(É:¯ܗª ÄãÑÑ`ä[ñŽ[ ’á©0”,ëݪ+LˆH€,ö¯…Øp%ë]àÐ!ì±ôÏËÒ÷Yù¯êÿ	ò/-nJ"~
Ü{IEND®B`‚‰PNG


IHDR22´6@:1IDATx^½ØÍKTaðǹÎÜùþrœg•QSS̔BKˆ„ZþA!´)‚"Bˆ¡…µiµ*pQQ‹ÒÂ((7͌苐,¢…˜9s:óö t3sñ<ÜÍ,ÎofÎÞ{´	Ù<DW…ŠUmpýрc1GQö#À@e~v:…J
²aÂ	7Qîåd&CÌ؍8
üÄõ{îNܚ±qG(ŠÏûn'®Y¾V_{‘0RÄ·`ì@<ˆ"C\°`ìBêbÁ؋X0v!õ
±dlF䌑3rDÎÈS"g䈜‘#rFŽlÌÌ™29#G䌑3rD̔„È9Rc/"8o„ÈA²*ueÂ(҈‹¾nÀLfÔdJCF)O͚¹ÀÀÛGÀôc7z±ÛюF¤N5~1ÂD¡.i¤r”ûµo›wc:с64£ÉRMäóDßɣ™	&§/£[åæuÈ …8¢ð«ÑKMän-Í
kd‘•…@2H †('Œ |L8åƒ×ÄÝóØ{ÿ"э8è3O‡™Ã/<ps\Š®°&îbzVíÐÌ#?Ÿ õpa¨è‡&Ù͝"œCo÷ü-¢qÄh…(w½‡åÜ3ñðºЊ&Nëé!Ê-ST37‰hñ*"pÃ(íЊ ]  ÍȠ)ÔcëÒÑ)ô1²ö­/
_aiåˆ!$imê¤ZÑ4ªf6‰ƉDo¨B!½gæõ1aÊL›9Š:Ô"‰(|ððE­¿}åÑ~JÒYZ B-?GXaBÄ	/‚ˆ¡U1k©àšf¯}¢տ™±#m¥"•0™	p|ð0a¨׼…u8ԟg!¿öùÙøqgšPƒP)H…bœ09.¹zÍD	d?ޘ»vøzЉ-È a‰å3ë~^ÓêKŒ …,ZÐʯAuP‰Ï̺@#L5þҜâLú™pŠþLЈEô¬|"Ì	o楏[»â¬ÜàÀ.D3ÿ˜dÈ?âª;GIrIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^íÖÁNAð®."
ˆb-B¢(µÓ¨6ú¾/ WO>ƒñ	<“ZðÜ=«¨‰‡²ý`6Ùœ쬉‡¦ó]&3òËî3çòÏ"Àë,"^ ›ø½6Bàc\Í\ÍÀö#oG$1†Øi¾ßî·OóˆaL2úˆ$Ì㹗ŽÃöÒ>žƒ)}DöµãüfÇî,&,"‰"#}DI€‘Œ>¢&Œ¢"Œ&¢&<族ÑA”„šÑ@Ԅš	Šxÿz7Îg'=
Üx#œ½L0Ä@ìhžO!ÜÈ	2GóˆÁŠð93öY¿Ûïöz/ƒØO~Ä~rg5ƒZûì0>KP$
)°„*êøŠ¾c׏`—£-ÎÖYµÄê,Dƒ!‘’ÇGT°‚š	Äj¬¨°2?B"_âH ,
(beTÑHƒ£eÎY•euqñº”…‰	$‘"5Cꪩr´ÀÙ4«’¬6¯ÜÂdCœ”E,M¦"
‰4g-VÅYM"ø&B1&†²(	¤ÄÑg
ƭŽ0!/-2XÈ"G-oº´þ#ºo^xÃ[xÝ-l2‰̫[8CÆë4·0ã$Õ;w|͇ˆôÎORZ§0âû9ûB±/ösòXQãH핞/—Vف"åá¥õ|¹WB
㤋 °S{º’Œ$ìÔP!_—‰)äQÚÜè¶}Œ º?77PbõL½S8†	L£ˆåzë®ã1’¸ëÔ[XF‘Õîõ«õ!$rXÄêúöíµËHâöz}«¬Ê!©õ!¡fԄÎ)¬`ԄÎ٥b”„¢d\bmK®…>"™ê—-î´áŽZû†ªŸ‡Hf¥Ѽo߷M¬""™,Pi6š
TØËúˆPˆd&1Y™Yö&=""ã2ñá—XšI²"áï"3a1¦wA½
‘Œ1.@"<¢‚¼°é ï?ëÂ=´‹<”íIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×ÏkÓpÇñw›¦I›®ݲU
ÝҲÂƶê`þØüêŋ€†(êa^,ˆô0Aoþ!¼ì8^vÆ…y/Sˆ Tcú,ãKI41+¤ÏçÖˋäI>ý÷äÿBúH‘IyI{Ñþ´$å%l¢2è˜äƒ‰N¦›q‘D#Bx€=ííEa!
ÑÄNjäÑÑ rv 4ËBl,1ÂFRĠHE!Aâ珵ë8”“#&ƒT$Vo1Á(ÃXdI'CrØ8‚„+wh2N…92{AjA¤%û^}È“ŒbËuÈFzˆÔÝMù²~j:e
Šè¢˜¯/ÏMa“—[¥&¥’¹îֺ˜o/Zu,tµÝú~
i؈Z÷¦[ïb¾?¿;Љ¬]ÙíE·í—M|Ä'$Aæ~U¹²ä¶.¸m×%Ñaâ"ê¡}´õúwŒÔdëÃ%ퟚ�MlÄ'ßãäsŸ^…ß4,òÞ_‹_6é¸/£O–Yà0GæÏ|ÞcZuì·W:Ä]Aä%5Ñâ c;ÄÊmæh2Å4³ÇOyÒÞÜÜ!„*Cäâ CTýŽj2I1̜8dd„ð‘1ì8ˆI‰ŠÛ^k1Á8£”±¦Bé0F…81©úF6–p¥‚M<%ö…3­ Z<D'O‘ÊS’Խ˜Ã!òx±ÈI
¦åWŸaF=IuV1ȒA#µû+²-Ì>}àzÓJŽ£ÎV)…£c1ŒóìÆÏ²îĈ0*mÙë×ü÷bO
V‘¦ÍRxwU½DaIG	ÑsÄ_{Nš6bpö‚dåÿ"r¨2ˆ™ѤÊ8Lp€ƒÌs”cWaC4iP¡(UŸ¡Ê8“̰Ÿݑ®nøG%=	F¿l¨P•V®u‡ªßtRIU6%†°C3Ht"ä¯?Œˆ‰™8Ÿx‡»ž§ô‘_€½ü<0Þ5IEND®B`‚‰PNG


IHDR22´6@:ïIDATx^íÖÁNAð®."
ˆb-B¢(µÓ¨6ú¾/ WO>ƒñ	<“ZðÜ=«¨‰‡²ý`6Ùœ쬉‡¦ó]&3òËî3çòÏ"Àë,"^ ›ø½6Bàc\Í\ÍÀö#oG$1†Øi¾ßî·OóˆaL2úˆ$Ì㹗ŽÃöÒ>žƒ)}DöµãüfÇî,&,"‰"#}DI€‘Œ>¢&Œ¢"Œ&¢&<族ÑA”„šÑ@Ԅš	Šxÿz7Îg'=
Üx#œ½L0Ä@ìhžO!ÜÈ	2GóˆÁŠð93öY¿Ûïöz/ƒØO~Ä~rg5ƒZûì0>KP$
)°„*êøŠ¾c׏`—£-ÎÖYµÄê,Dƒ!‘’ÇGT°‚š	Äj¬¨°2?B"_âH ,
(beTÑHƒ£eÎY•euqñº”…‰	$‘"5Cꪩr´ÀÙ4«’¬6¯ÜÂdCœ”E,M¦"
‰4g-VÅYM"ø&B1&†²(	¤ÄÑg
ƭŽ0!/-2XÈ"G-oº´þ#ºo^xÃ[xÝ-l2‰̫[8CÆë4·0ã$Õ;w|͇ˆôÎORZ§0âû9ûB±/ösòXQãH핞/—Vف"åá¥õ|¹WB
㤋 °S{º’Œ$ìÔP!_—‰)äQÚÜè¶}Œ º?77PbõL½S8†	L£ˆåzë®ã1’¸ëÔ[XF‘Õîõ«õ!$rXÄêúöíµËHâöz}«¬Ê!©õ!¡fԄÎ)¬`ԄÎ٥b”„¢d\bmK®…>"™ê—-î´áŽZû†ªŸ‡Hf¥Ѽo߷M¬""™,Pi6š
TØËúˆPˆd&1Y™Yö&=""ã2ñá—XšI²"áï"3a1¦wA½
‘Œ1.@"<¢‚¼°é ï?ëÂ=´‹<”íIEND®B`‚‰PNG


IHDR22´6@:ïIDATx^í×AkA‡áw»»Ùd7MÚM"I7¡ml¡U[­ ^¼ø��‡z1zñÐ""Þü ñ؃'R­‚ `z«JA
…´cücX’ŒèAòÿÝBàaf˜³¨ÿ	 ¤ÃIÌΑ@/ˆjB`aã$Õ!Il,4!¶.¨†ê:5ÄÄÆý|¹;CKq&¿¾ô“YVÄF›!}¤@ø¼¾·+L'$ ƒ£‡‘À#G‰‰ÕÛÂtBŠŒÄÔC,Rd	§öôŽ0ñHˆOJƔµø”˜dvõjN=)ë"“¦@åä·×Jm¨Ê!F”ˆ‘-sñÏîÿþ2"ô)̝s­šˆÎ¯^Ù^û(«Zˆˆjl'…‰Ñú•äJiçE;ñQɽéÂÁUJ56/’"!+â^1†,÷ظddíO—ðd=v'bó퓇roúD¤@š„0WHãâÅoԗ7sg8ñè®0} &I²?…a>\ïW∯ëó§9Âa/7™>.£IŠQвô_̻[ÛkqÄâ)f8À~jÌJ4‡±^Ÿ1AZŒŠ#ŽŸdŠ*!cT˜¤&¦(2Ú+
Òbâ‰TÈáS Ä8ÏëªA@–doH9BPõNÄ>²x¸¤ñ	(®/‘gXª¾_„ND†$6¶Tg–òdp±µ‘踙jXȆ)<†›qq°´‘ºÔÆê}f¨Ê΁44	œ轢‰ ÷fo÷ÙMBrxØB 1¢7™ÀúHë޼ºŽ+H4F[ÐF"æýUÒRm£$ DŒtÂè#¡ê2ÒÐ)äu$#Ò]]™Í$´©úUjbÅ(ã(óÌ1Í!¹ۦb#OªүÓíá SL2N‘|„´§;b`á mD‘r{¤u‹­ÑDd-Fðc3J6*„þ?x4aŒ^>݄èù[ ä‘òü	¬%OAIEND®B`‚‰PNG


IHDR22´6@:çIDATx^í×ÍNQÆñ¿2JÚf S§Öb´°|„Tl ,Ýo‚—À
°4¬X»æØhÂçZݱ	&š@pìÉ“)/‡15qazžM“'é/§yçÑ?HùÃô‘>³®&ɍ€DD¾$Eê¬@Ê@ª“Fº8¤÷ýŸ‡¤qt»ûy¸ïÿîzA‘ÆÝ»9Ž"<pº‡¼(º9ÞÃ%-L2¢	oçñõIÔYäC
$¤AÎt×';ñ„ID4±]¾2„Aòâv!.ƒ䥽:Ý.+Ǝhⓠ£<ÂÃ	5ÝgÅ$ š)1¢J¦£Oб!AÊÈv!Y
”M‡•ш…„§øäpIKpÉáóT£!ÈúÂF}kümù]Iò¶¼5¾Q__ÄÂh¤›ø(„ 	ÁÊÄ+!9O÷1qD=E3qÄìÃÝ-i¢wf·„köG¼ÍàÇû(:‹žýò,:ë ?Þox8ÝHš,ù×—Šéøvøz‚<YÒh„°Õüz|›IXЏ8n5	ÑÃԚ­ó“8“Œtç'Í5†õÏ%SµH™©ÙW_NãŒY¬±B›åXڬ°fº8ñåtöS<¡(S;ŽÈ^2áS¡>ӎ1‚,³È³ÌH˜eŽE–M'fÚԩà3DÆì}3Êø¦B#ÆҤA*	Uj4h
#T䱠oÆûAT	ð)Hð	¨Ò0ÐR1Ï忤F@Y	9
ÔLg#,£^3æJëõŽ$>êÍuaA4Ól]„ð·Vhº‹£/5aG43¹4o¦€ýñ{y°4Ϥ&ìˆfBª«Óß?Øß?¬NS%ԄÑL‘1‚7Uۑ¨ÓŒQԄÑÌ Ì0b;ܙŽa5¡	šÁÅãa'™;©Óáá
Z
±¸`@¸­]2¢IÌçä.±c=4’ÿ᝱ô‘_m¥J¯ÇCIEND®B`‚‰PNG


IHDR22´6@:7IDATxíÕ=NAÆñ7è	áp)%¡0 ˲%´OAô‹‰vrd¹
3ÕNñZ0?’™§xº痼Í?¿ƒxÄ#ñˆGn²ˆã³7tä:‹3bmèȄ‰)ÓΈµñ‹Ș±)ÓΈµ¡#ñÙAØΉ);eâí\ȈèH‹Qu'´Ÿ¹§õ*TwŒhéHáӐ;vVéŒáéIgUî(,RבƒÆZøZkt¤hó·oBŠ:R#Z,͹ÚÉûÑéIoۉ9×ý’ˆšŽ\Я¤ÂeBß=Í¡’ҧ©#]Âü^ØL	)‰ãD¸™
ù=!]éÑ3…iÇgoèH@`ʴ+bo|v®®)Ӯˆ½ŽdqG¬¨ÈUWÄÞøw¼G<âxÄ#+ÓÅåk€ùZIEND®B`‚‰PNG


IHDR22´6@:®IDATx^í˜[hUÆÿsÏ&ِ65ِ4iLҤ¦¨­õú`4ˆ´E(XÁE-‰M)��>‰ ø$hLšGÁeݤ¦U,±¡酴ݐæºIpgIö23Ÿ'v]—8C O9ߘùsöÇÿûŸ۬àè@¶!ې¬ÍCådÈCmÞ6‡¤ÃÔÏ?$¹’'R¨UÀ^.ßµeˆðçGZŒ³‰_¬ûˆÙÑä­ÄÏÆٱ6…R ­@ˆ`[cƒ0‘ÙÌØàÅV‚rS÷ʡ(t̎qà5ìF>¼håÓß¶:&E*[H
Qîƒ£	’¡&\›î“bqÑF1}¶‰SìbÄìé
CÓ\AT-ІÚmø¢UŒnœ¤ºQœÂ(ӆ÷Ñ4ÖÆDYU eýøNrж–Á^ŽŽ0.HGÐ2ÇeUÉ×ûaÆQ«ÂlXˆ‘ÙÈìºaÁ&ޣb~Äó«N)Q–9ƒè<ÊgÏý:ÞK„i.ޘ¾Ä¦/-Mš¦Ó:zÀì9)׹8„䲐•F8ª¢EˆÀÂâä½ѩQö15zotqÒB”¡Ž0RÉQ¹!Ê,¯T%çz}‘ˆ5ãîÈTðf}ÜNE,F„ªœ—*Ž¢aN!,ºTÛq @EO"‰•û#ø&ɈPùì„T«â;†ŠOü„ TCgBø&‘‰‹Ÿ£
Ý@*¤6±4«èˆa%r=8¸`WãëUHÝ*Þ ¹ µRá²:’*|ܙH‡ܙˆ`Eþ8€Õ_ÝCh×䧩)܃(ÂÉ[Wäjàöµp2Š>0ñ±¶Ë]áÏ<c[©Åø-þÆB‘Û3·gB‘%ö¾ы±ËþþÓR£VJŽ«),Msß:ƒw1‡e,P˘c/Gã°vïðw½¥þ½çÌ5 7mƒìÂÛx]idâeüñr³¶Ëãb[‘jiþá4l“?+Yå!Bð<>´Íl.¿U—Úòn²Cê¤}ìXÀP–C«…F%Хz
³>vªF
õqìt«—]Ò(=fˆ£G°y(Á¼Ža²A}ј€øogªSG‡–øhÙéx³{ú'ÛFF³“Ñ „ÆM0ŽŽ_© ¦QÚäÀ/]þbñÊú’´ëKócÁϏ¾²·+|-¦·JoúN/â£iuÒ,û¤S“ƒrˆ:(󙽎g—ÿú/fõ3V4_˜‹ã+kSÉ|ê¥IZ˜S;Õ&­J�ó©•ñṭÌ9ñ)Ë<..wR"åUå—ZÊ/5”_ênï|2ãÝؑwlÆ.¯©4Θ|RAù¤œòü°4H›Æà|øÒ¢¿ÓâR¡a[¼p«çb¢ªhäÞ‡‰ÑÍN¿ê²ù§•GPÙ¦õ‰ýñ°•Xýóüqf·S¼ÎìÚ\ºb
³SͿé¤öÉ#⧥ÅÿSx-ç˜RÚÏê4Q
âgϻ±R¶ù÷üó´‹ÚÉ,¼zÍËÖ ™Ó"_
	*¥¼4ªÀvâ£óÉ#*?ý3ÏÄ-(ÛëöŸÔ6äY‘¸ªȟIEND®B`‚‰PNG


IHDR22´6@:¯IDATx^íØ]H[wð'™£Fªv1¢Õfjý€*ÛêM÷ŒN£]ÙÖÁØÅ`;-…Þ
¶Áv±‹Á`W£æ´^öaSevc­CAº¢֏dÚøqRc¾γ—?2'ç ôÊóܜ“‹ü8Ï{Îÿœ|y$Èr€ìºÙ$öœØ${o{#٘úúǐ‡|8PhÄ!Gyò©PûF@¾~¢Q»’M/qG&g?kW&›¥ } Šȃ#д3Äs·ÔÎP I ¼c±©spΟշÈ8ù°€n6ÉÞ ã$umþ,œê|lV‘áZëgš¡ŸȉŸ×H2½Ö—ÁXCTQB,œ§žbñ?écŠÔÎ+FJ³„¨Y8‡[tü€0âb7{$ÝteUÚH+œj6æU•%šôñØÙË(i$*Gvƒ"©]C	ª2³ˆªªè›ãLÅY­›`”$µ‡Ë—)<m
ñ1N¦¾nG‘ªÌbœGéò‡ä€!_$e8ë3¡›á‰ðDèæƴŒŠ—•«$—?D©q.&‘<¸pH#Ï(ÂÉ-êŒL‡‚+Áðxx|%
F¦uFéTÈi’ÚE<“ˆ*ˍÊdˆ¬UHӌiKÁÅñ¥ˁåÀÒ
ÙƶÒìRH-Éd•p«ÂL"2txõ8éPH“ÜXÊ)X>I²G!$õ¼jø¦‘Bxà„Å’`$‘OÙH>xPh)Cu"L6(äeîpcëÞØÝÀìõ™љÑÙëw÷Æ6¶vح:’É0ªQfYŸÈ~QޟÊFîOE1Žäú¸uDêšù,s	÷r››ÉÅ;s£KæF—no&·ÙO¨“üë«u©Á_~^OgnÆAa4F6WV"›š ß7cÓ2öϡJÝ)vK—0ü+ߓƒ†mg0ÆmILözh7øInϝ찆7#jß1µM^ÌZ »xA°®¬²qR¢ýþjƒQ—Ͳ/~¸D=Å÷ˆ]c|‰sžäö­wj2K¾Éå¨AËä§L“û<´¥¨O)®^1±ɾ*c³K=£mƒ½©(çOóóYģ|“#bSò‘ÅĹìÍ0¦Zð£h{»{á']gΦ'£‹ä<ë÷`L=~Q&L=šÑñÖ+·¾üç×تžL'b«¡Éàg^;vjmj7æÝJcÑ7û"”Vƒ´¢Oá:%'ð´ìËQÛîü—YÿE(€Tfú•%8/jáG#šÑ"iF“JŽ·?¹Í<I2µªÌfáåE(¨R(ª%>TI|¨¸¥ý™ȟƭVd”C=Œ-¾¦Â7JàA™ăR‰GàÇQ‡fƒa'=üŠdô7©¸RØ>_¸վK¨JÔâXÇIaŒMOŒ¼nQ¢r“/P‰bšü3ñµtbý«çP‡
¸ÍֵwÔÄS¡®¿6´KZñ|(ƒËÜàÍ3Å(‡uðKê„(‡[Ý){ V’¹þ<–T nãžÇþÜˢ…KÜpÁabY±ÊµåUý3ÏbÚíë_’ä_ºlœøoêí>IEND®B`‚‰PNG


IHDR22´6@:¨IDATx^íØmˆ\W€ñ߹sw£1ټTš´¢…ֶAH
Š´Fˆ‚Ö´DQԨ¥Xƒ´”X•¶V),é
bã‡*HTT|‰¥*¥Ii%ÑÖVcJÚYJ´[ll^šnc­ÝÎ۽G¸\¸p`‡™~ŸÃý¸<óÌÿ¿g˜	ÑŸÌü_’ÑpB@õˆ ƨAÇ+	!d2¹ܔ‹] ג…,„‘JFzí™Ì3®ÔBۍîWˆ!ŠÔϸ’A†P+^g¿©
.òl<´¾ü•͎*•bý@MÒ(Z2ï·ÍåzÙ鳦nw#„½®™t‹SÞåϸ׌ŠÅzò!Š–nã<=óµÙY®lµM÷*V:ß܅ÏÙâmŽˆã¬p¦åµnYã!'œöUÎõδ¼W;©mÞXãz¹– Œ*	2¹+L^ë­hùº•R˜®TKMÃF2ãHZºLz£.L$	¹LF“´ÌqÀz)¹%€Àó&+Q«ê	#”Tç”ùFr©”ež†óýÐ~߳©é.‰"hϛ\&e
Àßá2›mô	÷ٖ®@f1¢R›ºÅ%R–7\iV×]Î	f\ %¥¤TzŒ?ÖY¡^ÕHp§KMú ϳĦJ2¼eu޲øT–5+¬ ”"‰J…ÓNөJl”ÂãòôÎdˆ
íÖüÕÅCK¢ã>Xðsž[l…ƒ %·Ö¼Ç*-³ÍTRÉJÀI]oüA?C*iþÇ_iÚßìs·'M[-x¼ù›·۫áZӀ§ñfÀýð°RÈ…	{lYk«ŽŸ,ßîcv9ÔH–û”†o5±Ökû)=¨l45ïµåMھé;žr³e«ÜjÞ…a\åà„#<á9E­iJ„J2áÝì´,w›í¾a��h+ù£B!"-‘›âÕÎó]ù¤ur£ñ[ø]¥Xäíʴ٣.ñ1…œu¸*‰i	À>§w¹>€ÕFã!ÿä÷:éDÈ@¬Î>ã™;|ØKÆy³u	©Di`à˜O›½Ë;œ2>w3p¨zZ"Š
='\çà#®0k<Ž™刳J%‹•tu,8k‡Ÿ?e“‡Ã/a¿z·R	D…¾Ž—-xÑNw<_¾Ó=FçG”î10H/r©Zš%Økþ¥¯]ïó¾7k–=kv@N¢‰õùµ÷f>ž?êõ†߆_èW‹JM-Ávýë†mîgÎ>NºO?]ßT"F1DÍáÇ6¸|Ɨ
ç‹ìÖÑO/”TR‹B	ÕùŠŸ޴ê"[†Žü7<égzê±KÈH5J…¾nµkÇÝTô?âNQ
”v»ŽŽ›-è©KZÒÔè‚ÌA7·o_z«åR8ãEzvxTW?íH%©¦ª©$Á¶Ú~fÙ%RXpÔ��«Wu.I5ƒz.Ѿd"ùözº::ºuÇð’x” Tè¥ÄúžèUŠjŒQ‚ˆ¢¹×ä²T¢¾½õ+E!Š£IRM²º#•D…2ùÀKBDYK‚@"©kÄú_QP’( 62Cøßù½ë?‘.Ø?içIEND®B`‚‰PNG


IHDR22´6@::IDATx^íØM¨eðß;sîѲ$uå*D!"	ڴpQB¹h¡‹6EYdT‹ÚDTØD„‹4%+‰°MÖ
?ˆL­0Ê@3ͬ0K”oçcæ^.ÌÂ{ffÓ&î3Ë9‡Ïûÿ/^&Dÿ}2Sf™F¦‘idé¨"¸$aÔQMb…ԽAdBŀX=ñ(Ô!T„\îA÷Y pÐ:KÜbžÂ/6Wˆ¡D$ִ
Q•"*“^ÌÍ7ð; ‹>Ñí>Q¦'*«V[
>Ȍyd¶œtÊ\é7==;^ö‘ï±ÇJcrYÈBh»]ÑÑ5k¶…àn促e°ØÒY¯Xàf›<ªkšáßdòDÌpþ< G\†ŽC.8ï<æ
«]#—֤	Iû$7ÓrOyÀL#2ÏõàZW»ßÓºWGž˜šíš·›l°Hmf(Ý`½Þ˜ñ×û£šTÄ
ã٢•Þ÷’®*_Z`£;T¹Ç«<O×r¹¬¾I&7ÇÆîظe`®gÜh+€‡Ta.˜
… ˆuM–¹êñDÀîӔU–€¯àû晤­âr¹4eBá¨L ~&™oôÖ9àVírÆaŽš€æþÃëgÝiÚe’J¥˜ž¤TÚâó/¬Ö>°öJH]“˜ˆ¡¾çüùšCڧ°“*$¦ê9mma­ö9à4{ýX‡P*ôõ|ìÌ{Îi›àS…aóqE¥„¸èÃ	[µÍú>KDÃq«.¶¬Ñ×&ßú‘¯3T(©kR1}}¿ÚuÒmò.ìLDšI3†©ÍÛâ«zšm§o·4‘fDudŽÚuÌMÙçû­z4"q²KšËZ¯øY}6ÃxêÑ
©º¤ó“õÝëVù¸휲ËäaiwïŠ1D…žŽ­ï¿mކ¼c¢šH+¤Ú1¹g³ԘQ)ì·Mß@ѾIÕe¨'Þô–Ž).;&›ГC$T¢¡±$­ˆž4‘ uDˆJƒ©.: J]T(Ñ©æ’C™l$R*P$²=R1	)„)	ˆ$Ž ¢D	¿2Šàÿó½ëj
‚sqûIEND®B`‚‰PNG


IHDR̰,­EIDATx^ìØÑ	€0†Áüâþ+DZÊÝ¡/ýI×sGÝ
@4ÑD
@4D
@4ÑD
ÑD
@4Ñ
@4ÑD
@4D
@4ÑD
ÑD
@4ÑD@4ÑD
@4D
@4ÑD
ÑD
@4ÑD@4ÑD
@4Ñ
@4ÑD
ÑD
@4ÑD@4ÑD
@4Ñ
@4ÑD
€³†‰çü®AZ4ÆG²6*6
‰@TZ4ޓ	d¤EC*„Ë=â]BZ4f‹ÏOeTl25¢‘%Ó›þtzï
¹Ȇ{	{wÐ"Wز°Kìaùÿ¿,Ç!$íá„)Daiܯ=”¡'¶ÚéãGÉÏ=ãÎ*§ChØ
TØ1”ˆ+á²ÿ¬ÂΆÃüTìT˜’ϧ¦‰÷¨ëo;pÒñ J|þ4„†½9–¬Õnè´Ãɺ‡æ°ê†~‹aN¡Eô)ñdՇÃw¢!4lÖ`ޤB|xƒß@‡ưÝG˜V>p#QÐè7NéèÃáB£<¬O†•¸à€Øémˆˆh¶^¢ÃklôÑÖƒsÁ÷¾ÿƒRtbÝèèÁáo‰†аœK6ì8(ˆ—ö:ÝهÃkh>[ޅ;:i(i8!€@v5Ù؏†а±§ѮØQ_õ˜Õí P„Æа``…75ç=[&œ‹|+¾
¡ÁÉ``÷
éã:”=Hª 8Ð÷8ÑœŒ
ÀM<{@‡¸ ¹‚'˜ààl4Ñ52
`”sÁæΡá0/g‹œ
¡ÑÖ"#ê4IT›¹ãyÑýlu¬ˆjlôÑœŒE0¬›:»½¡ýtáp6îCChp2«‘ræ¸ÁÑ͉daChlÖ"£1	)™Âú^2įóã͔	/ä%4„FŸŒ€	÷=ã"ˆòu/ÁÑg£†Ð蓑U ¥¼qgæP¾èg"ã6Úh
ž38Q‡š¥`X²Ÿä3҆RVYVÀDpäû¡u–5
hó<'Á y㝥
¥’18Jgc?Bƒ“AQ0ÂGÂÏÉYC9ƒ¦N…ST8ûÑÐKBHÖÈHWVmW zûs€û¸§{æšÃڧO±ë缺^ñÿ£5ø��’F!gP2,Y|ÀGTHJ1/œ\8ÎqI…¬± ŠÐØEFÌ×ð@>¢vÂmPÝ

Š5,bÏ66¢!4bmœŒxAªõVåîÊÁgTXcÀڀ†ÐXÎ8ç` ;HûX6D;ú„Ÿ	„ˆ„œRÖp„nñ%;š¤ŸÍ	cáÚùPh2,̘qDi-6Ïá¸góûãšÃñ'üûFCIƒ|Қ2âEÀH¸ m
5}h𦄷%$g$3޼Ċ´(Iƒ¢¤ÑÖ'ƒó•îÇݿ3TTوƔ"Dbpxk8›Rd4mXÔQmÙCíI~Y$#*/dw’4²&å¶6Elà
)ð‹aÓO¹°ñ:쪄¬UÙG…Ð0öî@GTkt ÷ßÙÐÝKÚN.2ÁÄKpq6Hšˆ]Bc{ÎÀB`YÃ:·8n½¯!,lªä­Iޘ\ÄÌ#gPFØz’;£J†\ @C¬—2GFbö`¨9ÉZX%IrÆÅGpq­36f:ö¡§'…ï•02ŠƧñ7T¯5|&ùíSµ'º:NïJä7=ÇxÊð?ë_ãûø	UŸwã,c_kÓӓÊÈÉà»mB…‘qíþw|_Æ×ñ[€¿Æãóø1¾HãåOÊx´1àÈ©F¬ÿgïlR-·¡ 쁆eÐûßSï ³z/ƒäB
.Šƒ$Û2áûÀ¿ë7SQWçGÇÇëhÿ¯ädµe|ÿ˜ÆÏãO³௏R~~ó½kȔuÒ^‘‹»LC!pñl†떡£?Ž?ޝÃ|}óãh‡Ü6\uömT0¦q¹ս¼®”tËè×ïǯc€_ÕèÙFH÷}°#LcŸ©ô¥ɖ¡ãÛp`)ßEÛèšÛo
˜FîÆtGïߜ}ÿt›&@;ä¶azSPf8;MŸƆàŖèäüá èæ܇ªÿöl¼¤"Bõ$”Ze—.3
€ZQʉÑÛLì>ɡIØ0^l€m„`8…(õK¼†Á44ý?ê—-`û÷s)§UÔü‡ª_ËJÇ4ÖqïöËêåí®´‰%P·
SV×]ºúÝí`*œ7„&ý:í5ÚL€ÐÕÓ÷¦5Óc©ÛëÀ4ê£æÝ9Ñìn€¨%לL¡…®×Á4T'>€ÇR¦­?ñ߉c߫v-5KoÚԕ2@¦ñ@÷§Ÿnµ˜óCXèÓpE5Wž«ô9“À4dwÅ>þk¶Ôs–	Ð\OÝ0ê½FP3¦ñàiWùÓþé¡Éeá	ž´ ²þY¼#ð0
7%»°>Ž!¼#YÇDó–0[Í#tÕÅ}F8…2@Ԑò^#t3?a˜Frî°<{`
8{âªëäq<"<¹5ùé÷©ëvͰ&qSšéPÃj~†ðä|F<û5gYM1¯ÁžýTo<ùŒN·‘QZ¡ª`¶/¹LCõóTfµ}ÆJF@YU®¾õbOŒÛɇ~²Ÿ¯™€+(kÎõyõhLCËÿ¯|ҵGŸËó4€y=·‘O¸j]á˜Æ%ä8Ñî쿮¬œWXԢ6•Zé͍ãqYó,r£øîBE1?5•Óº[°bÛ8	@ƒ]ÛÁ4T[³¥Ê%±A\CuB4¿×ÓØ}hMýÕO²–úeJ¼ÿ°¦QPs«L½e\·À6êP8·#ÖEZLãjî£Ä1ã´¨'GE˜ò áÉx`’gzMçs®-} ˜†¦rÙyñtÕ <qm•§¡j„iÜBÙ$£Üps2ŽJ©"Ì˒žFáÚ@©Õ>Gpե×|xM˜ÆÖêJž°qû°?`àŸ\}{z?1

=U1+ti‹PÍoñÏy=cë¨8ÙjAKi*¦п­ÊÅ`áç>b‘l€\À_®‚@k*”ɛÇbìhMá˜Æ:ʕ_~eŸЧá*40•r`mªæ*ÊZ"À4Ô†ùÑFþƢkoª_¶¡*oöî‚+‰ÐÚtÁyߧB…¯‚¡ìÿ‹K
 ú…ãf„ngj©úµ`Ã?_ƒihÒLâÌY\Qš4aûP±Z«Ši@ì4Þïü¾€þ¼ ÒP¿ÛÎÓÐxçFx¥#:U˜H¡[Lã1êQÃÅö°¬:WU§#¼ÂÙÝ\/:zjÞ¦¡±'i?] õ…ÚÓAmcʭu/è‚}(ô…Î#“Ag 1k¾OôÂB`Zìýƒ…ŸEW¤MvèˆÁÂû-A[–@»5id46h¸ØN®$®äjŠº«Ë[ãßo7¨æ®ü­M~IQºÄ4^Œ¶%C$¨Øi¼œ:^¼±ØôÖÊÓ?ìÝ1
€0EÁèýïü½ÀÂÄbÍLccùy4
gD˜µxOHÖ*:ŽEMŒ€h¢ˆ €h¢ €h¢ˆ ¢ˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ €hˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ €hˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ €hˆ €h¢ˆ ¢ˆ €h¢ €h¢ˆ €hˆ €h¢ˆ ¢ˆ €h¢ˆ€h¢ˆ €hˆ €h¢ˆ ¢ˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ ¢ˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ ¢ˆ €h¢ˆ€h¢ˆ €h¢ €h¢ˆ €hˆ €h¢ˆ€h¢ˆ €h¢ Y¢D#’€µˆ†ŽƒÅß?ìy¶ғÝ A»ž~yq<™]ìôÿ+ýĝƼ8¤øæ“P  )W‰hLu ¬M4v瑆¢DŠ$§Hä.¹ÿR¸ØÕßnU|4=òŒ°ûžá)¤ 
?¾)’£ÞyQõ¯AèÁÈՔè®QwÃ4Îul­ú[€M”'Lc=ZQÄøWu„iô[¥òÈڢ(Pü¬•WÿLcç ÿWÃ4´¤p%+d5°Bº–օiœ9 åë²DÑvV—Mq¶ÛÑ6¦±cIJP€ç©GwíƒBw–8eO&5à¨êdϢÔyê0
U«ž0&9Çu(ÓX®IG˜ÆN0…JéP›„\tOöD…ƒë)Q ª†1͇Ë*œ`mf«Ðîãd¦:ÈóÛÀU¤†J/Óè‡J‰u4HìBýŸ/LcϐÖs¡MêYÐ}³YLC¹‡»ÿ¯(k9­Rž¦QOeÈ×}÷‘à˜†Rµ•“§Áp—Û@>êûs]Ñ`ê'Q¡Ü\…wír‹†ÊÆë|פªfkC¹Â4®EUe®õòŒ²o"îÓØî`âaÌê“õِe¤{~IC®è¥`jí*äϢºÝ Ï2rõõõŒi¬çßNF|ç§	@¢£´‹²Eӕ‹…'y%ï£س€ìi=“²s2¦qAŠ˜�ÿ©_¨täʻærLC@zXì\©5s€mdÚ*f’+„iœo$¼¼IöYßU·¥A0FîóÿâՈ.#ӓc{bŒü™¨qpÚ-÷ ÚZ€BWɄPëªaaÇQ¹çI£P¼õÚ ×ÒüºkŸ/¬É֭צ˜FÙjÍÕÉk[Q¤ŒØ¬VZ}¾LCõˆ—ÇSFûŒPtPӒ)-éèUº>îõ"¸Yÿ†+0àå
s-&j]¦¡è¡2môìb®è0¦eXÖaÇàµ
ïÃ[®JŠHÊ
¤h˜½F€עû–…’b¾xËõŠÄÛ[Þóû÷ó;>¢ÀGü
åªrõ5Ôû\¨iäçD^:úõ_ñ÷ð_ñS¨ÊUèJ5½FʕÔ6†å·x‰ïøŒ·¨x‹ÏøŽ—¸ÅöÎnE’†Âr“ìÍB^)ïÿ(!°Ë&K¶SÌI¤G]ÕËñà²üCùfø8’Uîþo²Ë˗nŽƒA۰fµ÷1´¶ôêûßoö³ýjía³¥°fï|ÂZ+Y‹z*}7¬ÀrXTWîÅaÕûÃ~·O|ÄÊy¢KË'+–Ø.hüß "6ÁäÆþu{Ø'ûlóÚ8ۉ‹Ùα‰PN{öú¡âI|‹¯~d@¸sÄí|.z-W¼›€Ê0“ÒèWèHl}ç*JÂáÔÞãÇûúÙÎç¹Ëñ6æ^gÅÞÐO§‚‡8Ho00øñ£"»+4¼þύ6Xp!½„°֘0˜ë9‚ù§ʘp@#ß—P`Wş«2¤6XW.Ð20Œ`¾ÑJÃ|úƒã9 \Ðè*ìŒÀfÅaŒŽ÷
hÌ÷°8Áx¡#ç°eG´BÇÓBáhƒø…0,QÆ3ŒVÙgkrOž…àäˆðØaB‡ÏvôÅtBæì³”ÅꔠB	×ü8*ãîÉ£¸ú„	ÂÅì‘Îà1@…á&h<ÏQá@(”Ã
7[Ё‘ЇÙ{ßß8¢ÁAP´O‹jCc7唆q¹&åŗ
Ki4B‚A‘k
ƒ¢f_í°asØg"ÁÏvKÈ)0úƒ¡¡›ªÃÍBd|Ź&G®3 ‘Òà¨E 5@nÄ6V×ÖûeöV}AaÏi얜j‚v—àBèðÚá+#Œn|Aoµ8ë#ÒÔw)¶xñ"ö l¼ُöӊ“%žpcEWX‹R¹êf7§J¸à/hBÆۊ¼
•q•:U
EЈçÊÙpA€
ûlÙGû}7ŌÀqöœÝ3<osn¢3Ïܲ9å(øJÈÀ3@Å;+¼Á)¯Y‘
zØøÓÞNXÐߒÿ¹´FV–Fޏ
!#O#÷0¨d¡hÆŸ<Z\#hԒ·HkÀb…ã(œÐÅõ`hÚÈNNîRt‚ÂàpnƒJÈ`׆÷
t†?÷ªa¹'°ÍÁ•cטܒYm 1‚““fx¨x–N^Ѭ:p ›BÅP®Û4ÎUŒp1zÃu*(Ö0®ƒ…àQ·+>æ3†1:®<#Ñé	çz†0•‘i|”FJƒ[Ã`'ߛô£CÅ#t°sBà¨Ä7¸r4ƒ÷ðè·`ë³Dù˓©$¸°S²~ÇjSB  'æº娊0p°ÅÀÈñyBŠ.á¹
¹ÖpÔŽˆƢ4pä
8„!Pìð¸&²¡/OֶŽ-á0‹ëŒׅʸøFpu
h¢O•Hh—ãTÜ
ƒö‘äq%”{	nƒÃéb\çÄ".¥ѐJËSdcª´í±*´KÒø¢gÒ¨ßä’? äQ¶=S2°K0¹'í7t嫁Ì$ØX¾ku:j=íu¯A¬qìT’F`ڃ!(HÝÙ5©_[˜¹'¹ƒ{u"g‚\ŽÅ1©e}&Iã㥡âõÈF-[”ÂÈX­hÇÿæœÈ=é)y¦(ÔÆê@¬‡¬ë;l±HkP@#÷¤*^ÏØȏa
Œ‘wpI
¾‡|!t06œÏ4ঐCkAv`ëÒxäž0<êaQ†DŽŒxŒm¨ˆgé 6Ƥ3¥wőŒ9~#!–×ѝ°:#ý§)¦‰0®ËèHtÄV¼ŠíÊ1뱡âÕãׂ“Bڢ†Œ\gÀVL£Qk°‹’«
N-¯\]¼ìâäš04Æ%qpghTr7r(ud4è)ºÖ(¨
ة•\Ëîý]«ܔÈIa\PM­2Š:CJ£A{p©
<
‚÷dàއè:‹ŠW~ߕµG¬52x°M;SÛP¤4r­^–ÃAã›1´´æ"Í!läÁÐýlvq",:£_i„ˆBêW†Ã÷¼s~†ò5ØQÙÍ⨥oQÛ
A£
1,*:ƒavOP(gv¬5jðèCF‚F®5ˆ¨ÜUTÔßí Qñhdõ2d`4×ûÐ4XkT°‘Ç:`Q?ÔwWR¹ֈ³F³ØE
¬3š¡!hԱèˆ*õÀ'õûՆŠgsõÀh…@‹Ñ
A£Ž=(º#<öú:CZƒaQwW‚õedìCCÐȵねQ8”
5Æ÷¬2¤62½‘‡:y$FF®3¶¡!hìcm
ÆD°ËKª©
ôS]à1@fÝCF;4:6êàØÐ7ÒÒûz£Œ:2ö¡!hlc#×ÁÎ0Žq96T¼ߨ	’fcýÐ4rlX#?âåùÛe…
^¼u#×uÁsýÐ4êبcW_¼ ’}ÍQF{Ð4¶±–íYÔŸ=4
ßWÙ8ÛÈh€† ‘`#Ǿ¶à‘K•‡Šçóûº#FŽŒh5lÔq¥-¬—ÅÐá°vtGEdô@CШc#‡ÃØÐãö¸:|C{x“
2¡!h`°hsUQ†Z;LT¼ºº®>`w+ڡ!h`MõU——F„0âl×P¯âÙ>hûب;#ƒÅwœ‘¡ì|­Wœš}dûê}l0§„Qx۫+
9,¾,ÅÈ>0°j‚¦vÁQ@ïˆS¯¦Y|`¾A@A£>Ys'rPè|Dg+€xŸâ4öõü(¾ªŽŽ|üõoϐ¶ð=Çe^Û
AÐѐ¦u>T¼3%¬Xß
AKê/mp<ÆßíÛAÂ0EÁqÿ+ñmDÄÌډXз°Úó_,J3­´¢154ù’¾‹Ýz²ӏˆF18~ÒÆÂÖcó™Î̘h´ÃÛ矲‰È×Oçt2>*ýþ–Ëó@~ôÆlŽï{ŸÛe$OHÂ3s›h¬§£[y¸ávÑèeõñŽ=Æâ׈FSõÇß©fW2!Eÿe‰.#¢‚(Œ¾§ð:D
@4D
@4ÑD
ÑD
@4ÑD@4ÑD
@4D
@4ÑD
ÑD
@4ÑD@4ÑD
@4Ñ
@4ÑD
ÑD
@4ÑD@4ÑD
@4Ñ
@4ÑD
€KÒ.V+ìˆÇIEND®B`‚‰PNG


IHDRQgçPLTEÿÿÿ1üMtRNSJB@ErG9!%

	87<I D=$H10?>:"A4/6*,;o5KU3CF]jn#p(4õ±ÐqIDATx^ìÖ=k[1ÇÑNJë@éay[
mæLýþߠ[H·Rœ†cM…ÖÎUñÍ*
*èœõ~üQü{̺ÿ÷⺮ãàGñ6.gßâU.æÑÙÇÅçÝ¯ØÆÁ÷7Þ}z5f±¸yx>ò™åÅý¯¨=W#uîòöþh<ßßÔQêZFJ»8ŠÝcJ]ÛH]ˈz>ÅQLç5º¶‘ú–‘Ÿ¢§ܷ՜ÑÀ"å:è[#Õ\j3
µäšLcål>æó³r8Ôx«‘jÎes
ÜmJÎ5
ùÖ(u¹ºŽ®WËZÆ|kä(Ó~
¬÷S‰<d‘c{z
œœn#¹5b¹š®¢«iµŒ¨#®F©Óþ%šxÙOµ°
?ƒ?žfÔ4Ê&šؔaÓ(ۈu4°ŽؖӘýe“¤Y¿4@Hi 
¤4Ò@Hi€4Ò@Hi 
¤4Òi 
¤4Ò@Hi 
¤Ò@Hi 
¤4Ò@H¤4Ò@Hi 
¤4Òi 
¤4Ò@Hi 
¤Ò@Hi 
¤4Ò@H¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
¤Ò@Hi 
¤4Ò@H¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
Ò@Hi 
¤4Ò@ 
¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
Ò@Hi 
¤4Ò@ 
¤4Ò@Hã„4Ò@Hi 
¤4Òi 
¤4Ò@Hi 
¤Ò@Hi 
¤4Ò@H¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
¤Ò@Hi 
¤4Ò@H¤4Ò@Hãý<Žby9x_?ÅQÜ<šÆov쮵‰ 
Àð{&ýÒ:³ÛDZ*e¡ÞÖôÿ(Š‚½)V4´©˜„¤­i³;G—½ÌÈÅÌó¼G
ÓgYBß4áְêáÑñRIÿøhXƒ³¬Î«dÍú½//œÜÜO+7W[ªŸ
Ƀmÿuãù/}^}¦‘ü9ý
·½y‘¦aÅtäÛö“ÅéàõEM#¹xùAŠÙôYyÝ1µZa#٫üë)Ng	ƒûRÌüÃy¨ÍP¢ñ¥^ܭ	g‡xö+¡•TûÿËèM:UpÞÛ(o
o¬étnì¼ÜÓÍ|ÁoxD¿¬zÃõm·®íØKŒi`e$Y·º>¸Io’Àsu¹{p]éWg=+#¬†F[+MO¶.ßÊWF4’]žë»Ç7ú'äÕ8H@5²­¡vìòr±>Ý1߅D8;ܙvïš2¬‡ÏÐ`|&U^öƒœԔ4Îóù‰	µÏ+±^B¤//ñÙÄi­Ã~@h%3tµ6;C Â[ƒf“L'ìÓH˜V¼õB@A£K£mƒlB†„FbAðXO[F”i ´q,u‘êhÃ@‰4
0KÃ'@‰1å6
	Z ´ˆ�<wø×N òÿi}a‚„{O>/%(”w
IEND®B`‚‰PNG


IHDR&&4!%fIDATx^íÔÍJÝPGñß>7ý€Ԃ‚3};hßÀwö:¨/Phgmz-՚œÝI&á.ŽĕqëŸ
‰ôtÏGö"뀠sêāy[ß}Ó$èLyå£}_\ë}pä³ǶœØs¡·Lï‡çN|E¶€pêRo
½K§ZYžkk¹r ÑÊÅFo-ƒ¢ˆ¶,Ʋõ€±,ڙe'Y™›VѾӖ٩Ì\Ù.O8óùÿ‚^dir¾¬ê¬e£.ϼsh-Gî–diële[çÌV.}³[չãe¡αsÕ-€n¢ªzWö|òF1OõàƍAE¶2Rº÷ڭ{ iÐ{4ø+çʪjë­@0íWõzÿlUµ-ËQ÷à§÷ީʲÌ¿=¨RJíL÷~Ù(ŠZrÜ0êÒF©˜tµm©ŽO¶35RU §µ3A
‰0O"%SÙ¨‘m® IEND®B`‚‰PNG


IHDRö{`í
IDATx^íݍw”å™ÇñïÌ$3Éä…d†’I$!#!„„„*Z­®­V‘*.V±,²¼*K]±¢"*­U+Eʊµ¥ZA‹uQ¶X,V¤bä%‘¼“Ü{H޽ϙsvOI2ÏÜO¸~ןðûäyž™Ìs_¨ózd€2@FÈ #dÀy4@FÈ #d€Œ:`&8pàlŽó°æó@{å.ÜDà%†XzµO,Qxq†³çQºú0<Dã£/ýñ“E69í3ˆL"±íz ËNjd2ȣ*¦VÞxåÌëo¿ü–ÌïREE\È RéM\=øGù©ä0š‰?š»é…ž<Ñ֦þ‘†úϽñûûW¤^I	Ãð“D¬ý¯¸ˆ ކP2nÚ֗ŽW«ÿ'ÍÍûö,º—J
𓈗pœ¶ pFIdQ4þÆ]Û[ZÔ?•#‡—þ'eäÓÏÆ×€7±ô#?ªjÓ/Õ9åʧ3?>"ìE@èú{1€ÂÊéŸTH}Ýý+G‰Dډ€Ðõ§S4kAÝiÕɴ©­/…UMo"mô, pN,iÝ{_S“êRÞ}+l"Ù$à± ëÀè»ÒҬºœ]Û('‹xÜ8€ŽÉõǐÊÈkç46¨nÉýŠ҈%ÌpaÄПÂɷž<©º)m­sîfÉxõm@˜[
#&Þrâ¸êƜ<1äjrðéۀ0³þhR^1ãøת›³ã
JH%
§舙õ÷cxé««U·§µõÚY䓨¯ÀÄú/*¾±ú˜
JÞßÍ8Rõs€0¯þ‚Q7ûR)gÎL¼‰\|„	³ê"ùlý_UAÌo~Í(’ñà`\ý^÷÷/TPsìïTâׂ úó¾ÿÅç*è¹r&¹Äã`Rýæ~ïÈߔyz-ÃI"\€	õ»ðž­ð5û«²$»w0†d<̨ÿ†e^õ٧ʢ>Dˆ`FýCS¿{ø/ʲÔÖR‰¯€Ð×ß÷lý‡>QæÌ&3h¡¯??势ü²8qSÉ"F@ÈëO¸ìàÇÊò\ðБPÖßçlýþHYž¶V¹|›ÐÖ?õãURš‰d% Tõ'‘wéþ}*$9òe¤áªú‡x/þð*Dٷ‡±¤à`}ý‘õðž
Y~õ…ôÁ-ÀÚúíõçz§üñ]Â̜K>\BP¿kòÞwTS[ã™D&18X]ŽkҞ*¤yë5ÆЏ¬¬¿79aUEBœ½“|W°ªþˆöú'¾½M…8PN:Ñ8€…õSùæë*äYt/$Yö³pÐ^"ÙTn{U…<}@~bô'`Mýø
yš/¿…|z˫a:VÔ?˜Š­/+²î	ŠèüÀ®?ÁLøíe@ÞßE9™ô"܂û¿	‡Q¾e³2 ‡&L%‡DKκþM•©­u=ÃèìS‚€®ßGe7(R÷Íuw0œ~DYpt¬Ðõox¾̈́úOO›ÃHúcÁá0@×ÿì/Œ¨¿nú\F‘Jl°þ€® ãŸzڄúêgÌg4ˆµà¼`€w{ý¥ë֛PcÃ̅–Õ/týkÖÚfBý·/¢ˆ4bq³~ ë'“q«7¢þÆ9÷XU¿Ðõ—<ü˜	õ77Í]Béô
vý@ןAÉC´¶P󂥌	~ý@×w¶þ•«Μ1¡þÅ÷QŒ?øõ]¿Ÿ±ËVšPK˒åíõÇYP¿Ðõ/]aBýgÎ,]ÁXkêºþâ%Ë[ZL¨ÙJkêzŸ‡ŸâÅ÷57›PÿÊU”aEý@¯s³`©	õ·¶>ôH{ýñÔ/ô6Ÿ¹Kš›¨¿íáÇ(!3øõ½Ê-¢Ùw76šPÿêÇgQý@×û¢Æê_û3JˆςúÎo—9Í\hBýmjÝzËêºþóëëM¨ÿ©§ß^Â	]*£¦ϭ«3¡þgAY–Ô/p|[ÿõsêN›Pÿ†筪_èúG^;ûôie@6n°ª~ ë/¼zVm­2 ›6RÎ +–Á
½dzðŠÛkj”ٲٚú€®¿?…—ÝVsJW¶0Á$ôú€^ãzÉÌS'”Ùú2&тú€^ãZ5ãäqe@^ûd[Q¿\ãj@¶½J¥Eõ½Ƶì¦ãÕʀ¼ù:•äЛœÁÝú'׸··…M´¨~ ë×k\C›wÞ
«j¯?2¨õ€À5®ǎ*²g§k9$YP¿Xãj@ÞÝ�¡$ƒ‡pÂz̸pŒ#¤׸ý\]DÜÀxrI¥/I=fz“H>=ÄӋ¼íÈ5K®q5 o~⾋0™b
¹¨M#_CÈf iô#‰8¼¸qá°€^㚫׸†4Çê羱è×÷=óà«V?ühOšGyôáի&Þ:ꦛè?–.\ü£¹•Ó]S(gd“F±D†‡%¬_ã*	|›ª¹ùè‘Ýo?öhñ(c8Y$GäYÁ¸Æ5¤‘´µüèÉ5‰—2šA$wœq€#H׸~ú‰2"’šS/>Ÿr9…dˆ—0Á¸ÆՠHNxðAÊÉ#™Ü8ƒ@ןôƒ”q‘|´/ÿ†“ªO<è>º~½ÆÕÀÈuàÇ(¯ß}êõüßÊØHš›—¾úÞuúÑ/åŠû•ё´¶®YM1~}à}×t¬rËrµ=>øɷ÷-g4©úÔã®è8Ò='ñ’Oÿ¬l¹LŸÃE\€gW8§™”íݩlIõ±Ì+É!7Ž®pâ%…ÑO®Q¶ŠdïƓN®®pà&‘üÊéMÊV‘´©¹wS@<8:ÀI4é”}øž²]$_ñT1X\àÀMÎY¤lɪ‡Þq
è'Q¤Qv&_ýH¾øœJüDãì€0|ä];«MÙ5’;æ3”Â;ÀAɽúвm$;¶QL?"pœ;'Ñd0ñä	eÛH¾©uM&“œçÀE<C®¹MÙ:’g“‡׹'‰áÏ=¥lɆgAáçÀC2cv¿©lɻ;)¦žsI*ãíþË?ÉáC”1€ÈsàÅOå)›?Jjj¨ď÷ÜD‘ɤ¦&eëHš™D&Ñç šLV¶„Éì4€¶6eóH\S: Šªê땭#inbrçn^ҩ8^­lù.°³‘¤Rj÷W@$û+eè7ÉmMÙ:’÷v1¶s_…ћ‚‡~ªlÉæ(¤îsà¤Ù#®µ÷çɭÿN~çþäÀKev>BÒPç™ÂÀÎý;Üô¥ð٧•m#ٳƒ±¤‰£3\đ}¿–,¼—a$ÞÙ…zéOñöW•-#ùúXXUÇï:ÀA8>r˦Ùó Y÷…ôíìÏÂõ5`̖•í"9Qs	YôÂՕWÉgPŸ©_U6‹dÙ
FЗœ]{94‚>\wGs³²Q$û÷QŽŸX\]}=ÜE4©=¾¦MÙ%’š“#¯#Į¾®OÈ`üK›”M"g„̻›B’»v@„Ž7>SùáûÊøHÚԓk(&Øî8"F?	ô&'þ’ý(Ã#õo|žqdèsº@•—0Õìcâ䌰Ÿ¯£”øtýÝyPd“Š”Ô×-[ÎX2õªìà{¹kæo¦ÜÌH҉×õŸ'‡EK~ùŒ§Š¡¤t^/¯~¼ñû‘×QDIDŽó¼Y!9vtó†‚ïSL)āÇy¸2¦®åtS]c}CC}œFUwúàÇ/¿xãl*Iýñá%çyº4êÍÏÂʝLã
.ar›‹¹ô¢ëbŚÕϭrÍOWþۂaߧŠR
ÉÃÏÄw”ã<^÷ÎÏ,.§ˆ|1°GMƒÈ!Ÿap#l2I¥/>¢ñèaçõâÈ=ïG^ÍHüô&–è41ÄÒ	ô&‰Þ$à#–h"qãBW/«c÷¾ã™LnÏÛŒ'N\z‘ì?Y»,–‘õñÁH øÆêcfØA€M€áe7UWñ¡ðu*­" 4†WÌ8þµ2 Û^£’lÏÁ 	Јª'+ò‡ßQa 	ôgĔ™f-·õ7T08ø€&ÞN ð²ÛjN)òÛ-L`0	Vš@*…WÜn-›)g	x‚M@h±g	\=«¶VÍ/ZH@hŒ¼vö7ß(²qedá:Hàú9u§MXŸ¶á—
œ5}n]	ž{Ö:@Àè›çÕכ@àçO3Þ À̅
&X¿žñú…‰àÐÜĒFÑmw™@ µmíÏ(µ„€$0ûîÆF<þãÈ$>ø€&ЋtŠæ.in2ÀÏYH@hŒ™·´¹Ù­«¥„kMÀOñâûL pæÌʇ­" 4¸³–,o1‚2)ÁOœ%€&Àإ+Μ1ÀO`¬%@ e+M ÐҲd9Ŗš%<dææ{–µè|@ˆ'ƒ’‡im5¥Œ!Ý *խmhš·„"«M “q­1@Sãœ{("Í
@ð‘Iéڵ&hl˜µ¸@¬€&0Òuë۔	n½‹"Ÿ€Ð<íÆ?õ´	êgÌg´U€&EٳϘ@ ¾î‡ó,z6<oºÓí¬øD 	üêe@­û^@h	dQ¾i£2 --÷¯èx$<øïM`å/ýZææßE!ýˆÂ\@ˆ ÁLxe‹2âY`ÊÍ%Ɋ7
€&È`*¶¾lÄÂõCÞIdgÍm@hÙT¼ú[e@6½@)záŠ@YE r۫&|ýrñYw
Žo×ÒPùæTȳk;%¤êk€°@ØķßP!NKsáõäO˜ ¬ ÙN jç[*ÄÙú£I&‡”•’ÈqMzw§
iNž«"ƒœPVÈuMÚûŽ
i~4||ú& ,&àòÞn¼´‘‘ôÅ-e-W;!ދÿ´W…,ÞÏ8R‰€
Э«­©a"Dá¨Pð’D^Ì%û÷©%ó*+*}Ú×Õ~¨B’i·“CN€

½®v¿
Aæ,$ŸT(	ô=KààÇÊòÜsù! ×Õ~bùÆâù‹C
@®«=tPYš³É
Õ3€0`]mé
d+eaéWþԺ_0™L¢q”’6زuµŸ¦Œxe¨ŽÅG>Sdûï)"OÈ€ÀE•¹ßû‚uµ<$òß@¸®öè‘`‘òéG@`7|Ôuµ|—úãÅ!e~w]í¬%‘pƒjëj‹¦}¤uµŸ~ÂüDë€0‘ÀðÒc]m›ºs1$á6î ×ÕN¸©û×Õ~°‡2҉Ñ/ˆ
s	Œ¨˜q¢[×Õ֟.½<
þûëjOžè¾Ëÿý0’~F¿$×ÕNYsRuK¶¼H	~b	3þþ/4F\uëÉnxصr²ì²WHh)¤]}ð#եl-¬ÒNKç€&M2C/ݻ³óËd6½@™ÝÎý8è¥9”¯_ۙÅ4µ§æßK	YËæíu÷úU’2)ºô–:·¿ý¯çÿ#H#ÝꚀ½èO>åK~rø/ÿ\ùûöÜp%älçƒb€^XEoüP>sî[¯՞Rÿgª¿|eó”›)%ŸøðÚûƒŸÐ×71$á'Ÿ1®IÓ~üÂ3»ß>ôÉ񯿩m¨¯9UýÕOw¼¾î‰)7SÉ(r@"Q¸íé7Ñ$ЏL†0œ1Œ§‚‰TQÉJ)â"rð“ŒoÏ*_è+A8Dã#‰dRIÇO~ÒI%™$âˆÂCX,_h¸ÇC$^¢ÚÇK$nÂqêê@O™ž@FÈ #d€Œ2@FÈ #d€Œ2@FÈ #dþ°úF&‰®46IEND®B`‚‰PNG


IHDRö{`í7IDATx^íÝ{x”åÆñï2“LÎHȁ0@€$HHH b]´n­ŠJ…Z<©PKÑ+ ŠRu••"Zi­Zª(ˆˆxªU±
UQäÌ’g/æ‚}ÆÝëꖐyçy“ß}ÿåß÷g2ɼ?T—®%R R R RÐe*¤@*¤@*¤@*¤ 0]…	8ýuàPاÿoÀ?݉>"‰!ÖߢñŽN óN†’H!LrÈõwÙdЇ$M8nÍ@t–ñ]x‰&‰Tr8‡bʩκðüM™uLª+ϣŠ2ŠÈ'“ð¦û¿ò=D“Lƒ)K›¼䶗^ػ»±AýOÚڎÞñ޺'~2Ç]ÍHòH=@ؼ8qã#‰
©œ³ð7ZZÔ?ÉÑÃ/üaô”1ÞÄŽ‡°÷k?†^P¾ø?öîVÿRŽßúòØ+)&›d"qãv?œ2^1uÇ_Õ¥¹iݾы<8€ç ‰lFßv{CjG>ù¸j*E¤«	›Ô?7¸+Ÿ¦Mµ7õuWϣ˜tM@Øe~/‰pßöŠ:«47ßt3Åô%†0Àهx²©غQuŽ·,¼™‘¤iÀôùÝÄЗ²ßÿNuHš/™ÍpR‰Ö€±ʼn†Í^Ø֪:(GŽL˜I}ˆƍC˜þã?Ü9¬:0‡UNg½‰Ò€ÅI$©”½ú’êà:X5¡š€0õõŸDÁųZ[U‡ç1?d(½4`âû*£ßz]%_ï/½’!š€0¬¸‰'¯jê‰*HÙÿՈË)Ô€AŁ—Füñ)Ä|µoØI)Dj€Tíߧ‚š/¿8çRM@S\ēwÁô|ñYÞŚ€0¤„‘̐U+•ùüysŽŸ€‡0¢xI¡dÛfeIþñiÿïû	ø4ÒAå{v+‹²瓬ï1˜žš€iñ¬­U–eϮÔ¤	€–(ú1¡­UY˜Ý;ýzh d%šì´ÉÊâìú¨÷d
49*˳óÃÄïj! o*ùû~Ý5‚I&ãêTòá{‰çi $ÅG_*>߫B’÷߉›D>ɚ€°¸xéͨw¶©彷}ßa & ,.ºS´æ1²¼ûæ)š€°¬¸H ÿÇ׫æím¾‰äù	8qK‹“h²¼5ǎªfûk®	š€°°8§%›6¨æ-®r5`Y	#‘ý&ª¼¶É]M.Ý4`IqE:;w¨góF÷x?pMÀògáÉÎÿ¥
y^y‘*M@XT\D“Aù塚g㟩bI'	+t£àü57©gÃsTj֐/‡ö¡xåýʀ<ÿ*é¯	€ aĒEÅ[[•yv=ãèO¢& ¬x>H¹‰çíީÈú§© ‡D¼8€U"èÁàS¾9¦Ⱥµš€°êѰ‘ôbè¥×Ô£ÈÚ5”“M‚& ‚MÀM4©¿bv}
yÚԚ՚€°êÃ`©Œ¸êçõõ&xì?5`Aqú	¤1rúÜÆüöaÆÒOV(žycS£	ZÅ?N`
1ô¥xÖ|´¶­|P–˜}Ss“	îû
£É"^Á'K:Åsµ4›@àîå”iÀ:%ó·´@ õ®{(#SÖȠtm&8qbé2?8M@Ÿ@ÜI‹–?n[—2ŠM@XE`ÔÍwœ8aŷkÀJe·.5Àñ㋖Pª	kēIٝËL ÐҲà?}“DXEà®{Z[M 0o1%ú,°Š@ew/om3€@óœEú2‘°’Àèå÷›@ ©iöMø/i øèǘ•A qÖ|M@XJ`ժ6e¿8}œ
§°†€—²ûۇM ÐØ0}®& ¬$Pþøc&¨¯Ÿ:‡¤jÀ2kVA îòëOÀ!,%°v2 uu—\ÇpM@Xuh6‡ŠuO*rìØEWS¤		¬ZÚÚɳ(ҷJ€ÂI¤?ãþ´ÞG¿ûSŠè£	+$џÊçÿ¨ÈÑÃçÎÐçj€uPù—ç”9r¨Ú®V°
€¨ڸAC+§ësµ èÅá'Ѝ\ª^yÑʯÒ, ÜկnTä7ÎÕZ@Dà'ðÚ&e@¾>y®V°€H&×UóÆe@öïp®Ö8p~»¸pwš†á%šy'm{]/¿z™&
zô0¼øˆ&–xtI$‰n$wšö •<Ɔ_¾õ]e@¾ø<ÿš€åpàƒX’éE_ú1€è2˜B
҉ZD)¸Ìs㦏•Ñçj5à	›pbH¦/(¤„
×Ī©?™ó‹¿Z|Ãüi׏¸jüÌû–Ý{÷=÷Ü}ogê²ûî¼ÿ–Gç?5ç¥ý
ʀ|¶'/à\­%üãGG
Ù¥¼ô²å÷¾¾yßçÿû[¶Öü½dï·ÎÕŽS߭ïI#’&=°âï´µªF²gwꅚ@à
$2)ê}þÚյG•‘|òqà¹Ú 	‡hRHŝw=¬Šd×G©è[¥
@›>•¡ß×^7'’;’ÿMèXú;´Å×Î;bÜk_¢ÏÕj@Ï?jÉҖel$;þæ' ?vÿÃÖI§tÅ}­­Êì÷{OÖ;€7Q¤2rñ;üf/ٻkàEà?Qלøèɐ©³íòÃ_òÉߓÎ%—D¼8Ï€‰äf]p`¿²M$۷PN±„á8;.¢IgìöÍÊV‘<°‚‘ôƇól8ðҝÂ9۔½"inª™FIxp´€‹úy«¿ú\Ù.’ޥœt¢q¶€~ý]v—²e$³çsÉxp´€“h2¨Ú÷™²e$ýrú‰³}ÂHdÐ5s•M#iS—\M>	¸Ï€¾¼_úêFeÛH6<K1)„ã8sN¢ÉrMøæeÛHŽf<™Dá<s.ȿü:eëH¦^Ë@âq9€0’¶æ1eëHV?ÂP’	;s^zQúú«Ê֑¼¶‰zá=s¤Q¾g·²yä¯)'•ˆ3à#ƒªÚZeëHަŠ|g ’,jšš”­#ii¦†,"Ï@ý˜ l	èGTW ik?€,&47+[GÒØ@5™D¶óCà±cÊ֑:@%éøÚ ò|ªlùºcÚ÷k —^Œzs«²u$/o ˜<gÀCwŠÖ=¡lÉò{)¤aíûǠ‚™?Wvޤ­d
¹Äâlß?÷óNl¬W6Ž<<‚
Òñá8s"èèí[”m#yüŠ聧= Œ$߸HÙ4’ææÁ3€8\íÿ£Ð,wõÁýʮ‘ßJéƒgûÿ,¼'E= lyý½’<ÃÑþ/†Ē}îáƒÊv‘¬’’ӯÿöpN†Ýz»²Y$_Ùý<rˆ'ÇÙ}94†*Þ[Ù(’––ˮ£î„ã<û¯‡'‘?üÒÚ#Ê&‘´©߬ ˜T¢páèˆD¤0lÎB»<DòÌ:ƒ©Ÿp��¡/%¬hSæG򷷨¢?	x:â1úa™Œ^»Út’÷ߍ›DÝô»ÿÙ@ßÕøAß&‰;|ý€¨Žpúœr£nYÒP¯LŽ<(²{Ç?(å'@<éŸ8­«ý<*V?,:†ÞòV¯~¤±Qu¡ÈâO#’d²)~éK/47©.y\¼¾N½ȥ´ðO¯ٿOu•ÈÁýs	ô!—áT]yÝú'w~X_§þO›:cë›êšëw±“1º8N!ˆ§'äSĪÿàgó~½ô¯Zqßí·_3wÈ&ñ&t²žËd®àú°_¿²·‹Òpã%ŠzJÈg0…¡ÁKÙôëT͡€Î÷^ýÚG]ølܷàÂCQĐ@"ÝH¦‰$KÑDu¢ÆЍ†G\ôÆ[r8RWSÐÇb]þÿrtÂëÁyÞ	on•ӱ]¬r<úTå|üÖÍ]ñ|¼ÌŽ~3›y`镁ó[@æ§ê•ÍøÂwùU¥·ž_±þù“@ÕËŒ˜ÿ`åôÀù- óÿå9e@ŽªžÎ0z­ç^¿?•/<kÆ#ßΝA}ôü Øó'ҟqZ¯HíÑïþôÔüaz~¼ù½$’øõ¿7bþÚɳ("UÏ/¬˜¿âé'•9v좫ýóÇèù@pçO ›òµk”©«»ä:†ëù€Eó¯ù/e@êë¦Ìf„ž_X4ÿ㏵™0ýÔ9§çǩÖÌ?öÑGL˜¿¡aú\F’¦çkþÌØU«L˜¿©qÆ/çÖÌ?æGZÛL˜Ö|ŠéK=¿æüñd1ú7÷1ÓuçÍ÷ræoiž³ˆb҉Õó€`ϟIٲ{˜¿å†Ŕèù€Eó/½ûÄ	æ_p¥dèù@°ç#ƒ²%¿6aþã-‹–øçÓó€àÏ?êæ;L˜ÿĉŷ3JÏ/¬™¿ôW·?nÂü·.
œ_þؓóßtkK‹	óßqez~`Åüé”Ì[lÂü­­wÝC™Äëù€ó߰ȈùۖÝ8¿°bþ¾Ͼ©¹Ʉù—¯`4Yz~ìùcNÎ킦Fæ_¹’1d‘ çÌ?óFæoS­býôü øó§1òÇóL˜ÿ·3Ö?¿§BXôÞÿÃêM˜ÿ±G)'[Ï/,øärþú:æ_³:p~`ÙïýMMʀüî‰Àù@0{ú™çi/ÑÿÓ7¤Y·–
²IÔó€ ‘ô¢èÚ”yæ)*ÈÑó€àË/™A5WÕ×)òìzÆџDÂõü hÅAqdûjöîRäù?PI’ôü ¨ʼnÞ›q	ýÏ¢’z~`Åë?¼‘—™ðÙ㟩Òó«^ÿ©”m}Y…<¯ü…*rOsqKŠ›xr‹.;ޢBœÍ/¹ÇÎ/,(ÂIaäsϨgË&wµþ=¿zqM¦»úÈ!ÒlÛâª!—d=¿°¤¸H à'7¨fûk®òôü2â¡E¿_«B˜7_÷Mœ_XX"HeôŽ÷UÈò×í¾ï0Ð?¿KÏ/,)"É`|m­
QÞ{ëÛó[
@Гþ½q}'ú\òIƧç'qäN™¥B’ÞóŸqí®ç·€ˆ'ÿgóBrÆõýÀ3®ŠÐ	ܸPYžúçï¡ç0w²8ïè99pþPÏyӮU–f÷ÎÀ3®ŠP1ô/›¢,̧»üó÷Ôó€Qd1z¿ØóIzÀW…qñ‘Fùg{”%ÙûiÿïÎ/B^¼¤Püò–œqÝ{êŠo¤ž_„¸¸Iâœ;î°àŒëgyëCŽ
`ÎÇÞÿÖҬ‚š}Ÿº4p~`HqAÊÞަ‚˜¯öM	œ_TÂHbЬ¹*hÙÿeà_…0ª8‰"ƒqŸ|¤+¾û‹¯<ã*+<$S8ga[0®ø~=懁ó‹‹hÒ)÷Ž?ã:.ðŠ/ÀܟI䏹¼¡Nu`ªœÎ0=¿0ûÛA½~Û÷6päp͏¦ϸ
ó‘AÙú:Y{企g\€=îeS±uc¼úNžÉ0=¿°Ñ!xwÕËÔYeç}/¢Þz~`¯cðåëžhmUíÌö-I“D
Qz~`‹âðH$›²¹¿<v´=Ç\V­¤‚\ºãÓý€½x‰§/Ã
þýÕÏìç¿NúÅd‘¨¿æaWò¬àr)»üšwÞø×ìÝõ«[¨ €>ÄâÕßñvý¥ÐGi0fâ´?>uà«r¹ÿè¦
3Î8
ɠ‘úˆ«°÷[‡H’H#TMœöÐý¯¾¸óÃ_×mløæءƒ»?~}ó^q­«†
È ™h<úµ/:	¤A.C(f㨢šñT2–†2,z‘Hý¾/:7^"‰#™RI'ƒL2H'•’I špÂô+_tNNÂðH}Dà%—ž¾³èҕ¢l_©
©
©
©
©
©
©
©
©
©
ék~„¶sñ3eIEND®B`‚‰PNG


IHDRI%X?IDATÓcaðe€–ÿÁHœŸ{8ߐ8_‘9_9Ÿ‘9Ÿ9qr>'ó8Ó>átÎÜ^Eâüy„àÊ<´è!•ÏIEND®B`‚‰PNG


IHDRWÚëhIDATÓcùÏ(Æ ÏÀÁ,Œj%öuƼùJ%öS?!8XnƒsAŸ‘¸`/hŸÑ>¡|$(ðtH·åA§£{îÇ>FFd‡?´þr20"nýd`ÐE2«IÍÜà°IEND®B`‚‰PNG


IHDRWÚërIDATÓcaðe€ÿßbùãþÑt–‘åç˜;[¥jÏ–ïp¿Xn3p°|e@¿X¾0 –ÏèŸÐ>ø@ºŠ¤Ûò‰ Ó1<‡ìýÿÿ~²|‘Eð™¿3œaùó.ðýÏe†Ûï+ï[ÞQIEND®B`‚‰PNG


IHDR  Ùs²õIDATx^íԱjÂP‡Ñó¢讆¸8ƈS •F@‡,Üñý[ÈrÉi‡򛿳Ü?×÷/÷×À¥”‘¥JD³§Ç‘zx:ǀ/ÚÍ]䉻›Z£Ö.ŽNêŽ浓£‹õ8ÀBî ]®t[˜ÊúD?—™†D+‘hûy‰F3ȣ@HTªAB¢Pô򗀹½\ngoþ*°rUØé¦pµzH´*…\&“+TZ	q{OL‚»ˆÒþÙ§•Ɓ01`æ!a3|„yHøØvùŒpf±%°ìå!±Ŀû•ßÀ®·¢H³tIEND®B`‚‰PNG


IHDR  Ùs²áIDATxÚ핱jA@‡ãýÕ_PƒD;=ÄAP°H‘VT-ÕÂÆN°N@IaDð­Dñô76s·˜9ïnƒ.ÄaaÙñ=֝ÙØ/ã/	ø‡X‡KŸÛä.žýAÀBL3"Ë|6Wy6$p<¾¨ö¯
+^íÇV}% §”œ¥K½‹óB„g˜VïJ8+\´"L{ø„-|ÀR:5:\Ax£#`‰Ùm|޹¨ãZMy%x…	)Lø3%yØj:ïÀÍT¦͞=	HÂL¯Šo|Š«IOböŒ«*s;¢OW¬s^Ŭ0ã^e3pŸ Œü¬I!FG>Îë#(#)6¤ØË{n"cRŒ1|C¸P`W¤à	#Åq^ֻó‚?1P0bþԼp—€ðvÓ5‚<
¢1ȻFí&)Ä꺌qóŠ7æÅ]àl,nºS\Fª»þÛwêN5΂úB\FŽ×z–¶¡Š ¢Ö#…c+׻<Ë2·ÝYïR+Û.S¥øä¶m,݉׬Ò^çÇ7Ž«"ñ.¼ÎL+–u|eÂI±2ŲàAÁYXO
Ò®ڞ4UWÒ”‘+®8åHA¸¨‘‚,ŠÃíø¬»yövõÿ¿‘Á•‘¡mªóA»IEND®B`‚‰PNG


IHDR  Ùs²ËIDATx^íÔ1„ „ѽh#D.€¨¥çØû_eÖLCáÏd-
ú½>¸9®Á8TÌÝ`F…S
ßsT3¯|·aèŽùÑ#?Hx¨Ì',Á&«
$†¹Fž	%h6B<m€$
ŠÊ	hBæ4¡sšˆˆ"' ˆ€éÁÎ5PE‘@€˜B@ÐS¸¿ˆ÷·QçUü‡ÏÿÊÉÈm8é㜻Ç9ëãì°ÿu¡ìð½5Iè+mǨvÁcå푰Â?~­¿À">ÙA˜]IEND®B`‚‰PNG


IHDR  Ùs²üIDATx^íԱjÂP†áçƔ€h Á[rv(•‚w¦"(jÆ`TÑe…€’ íÐA¾ù}–ós|ÿr
¼0’R±ÔµÀØÕYB8‰³«qðé¢ppyìä pñU
¤2k[»€ˆìl­eÒj€®™…MIPæ6fºÔD¦OD™›Š¨ž‰½Xlÿ˜7´K¢P<ä
@Häò{®M3+«2ˆLÌï3½
ôd–%°”é½Ďr+sSSs+¹£¸¼{K+¸‹ y>m%!©Â<¼Τè‡yHèWaFÕÃ[Þ!œ΍R0¨ȡc€÷+¿8>
4y%·IEND®B`‚‰PNG


IHDR'€ՆLIDATx^Ó1 @Ÿîϵép	0ö@Oê¦U“½4é䁤65+jFڌ´™i3S0P2C3Óý0^Ùþ.¤ÍH›™®îú+|û懝B:…0IEND®B`‚‰PNG


IHDR  V%(˜IDATx^íÑM
Â0†ág¥16mñç@âB¼šº°âÎ&1…Oƒ0AÜw¶óÀð2ý˜Œàp3&§½®ðÕL88A¨ý&,j¢Y‡°*Xh‹°–*XX<WùÌÒ~Iy`"häNøET1c…jgˆQ|ïm¡~‹FwXM4ˆVÇV±U—ݿïÁa¶åïvFIEND®B`‚‰PNG


IHDRØqIDATx^íÔA
À@@ߜèÏmO¸(RèmÉ-0 "Z~Ì\ƒ¿±ö=t$ò ì{HÒÊÑC¡•M£
­l„J•ÍP)Ù’’í¡ú’‘.!YȆG¨L7<CeJ¨ì¤=ŒÂH7·z2ö€H¥ç§Ör?mIEND®B`‚‰PNG


IHDRØGIDATx^•ձŽ‚@à
!<–µá] ½(VD^acI#X,o€>hHVŽ5rÃýǐ;þnÂÅ
¢¬̓e\…:è‚.Ôq%¯™§,¼ï'²yhWÝïÚD*›—ETÀ%ª/‹	˜~l5ÌVgÀó& 0“ ;Ž`¾Ü<°Y?óå*‡¾MõA€õ¨VÎ&’˜¹ˆrõäÔCeQ
ãˆ{¥5GY"õ
a(0JêYCŠŒ"KW„"£Äwj"H‰aB-°ñHf¨¾¡â`¨†_5®8V@sàǑW†as°©Ï3ž¦>2žš‘³͐Ÿè`L½x¬
`Sõ¨QÎpÝõ²;^»?¯Ž­Ž7¥§òO3 yᨙcQ“»3yßN¡=¿	gž¼Ã_Àñ!o™7 Êv´6^IEND®B`‚‰PNG


IHDRØMIDATx^•ձŠÂ@à%HÈ&…‡i$Ú.˜‡H8¶»!²U°Ú4Álj>‘¤֜+zãý—	wù»!IœÙQŒ!ÆӉªâ:´At¡kuЉñð¾Ÿh”•Ë˸ûå%+͈»©là"›ݴê÷™E€™YÜ~tÛϘÏ߮ØL®ùüOßfnA€uÙÿ³’˜»ˆrõlƒƣÎ%vOñÒã	:ÂP`
UCŠŒ¢*ׄ"£Ä'Z"H‰aB+°ñHfh¾¡á`h†_5®9V@sàÇQ†as°:åOuJ#‡Œ§näFnÈ÷t0¦~x¬
`}uÙÿy£Érô²:6뿮Ž͚VǃÒSù§9н°l‡˜lóh`!/.}hÁ/dÂ:QÇÕùù°:«£NžˆòòºutUÔޣIEND®B`‚‰PNG


IHDR  Ùs²4IDATx^ݒ۪Â0EWN¤ñV±⩈¢­ˆwëÿÿÛÙT‚ir|uåq2+3dóÍü0"§`L1>²åÎÃ9;2þE—-–³'%BÊåÕ
=GêFqÏa¹7­¿t$L84’Iûð¯×-.`˜©Vcñáì~¥Ç;C-sÂðF_þ°bªjÞöþ
Ë%¨Ø=kç·Øèß ThRRFjéBDaT›ãkTlž•%¸‚åSPú;ˆ+$¨Br„¸‚ê)Xã0Vƒ¸‚“þˡãä<¤°ü9`"ŠR2ƒ™Ì3)¤*ð°WqRH“à!Uœk¦^ŵdïJDßÙÒjwß΄º‘\ذdI©S;† V×}çJF9gOsA¤ÌYQR±¦`€á[ù»•:¢ö”gÂIEND®B`‚‰PNG


IHDR  Ùs²_IDATx^ݓ?kÂ@@ŸŠ¨`·‚Z2èEAPì"­ÁÁEpQ±uQAmüƒ½p‡G’Kºún}¿w¹äÂ3“¦B—>rü‹ÎÜ֍%±xaÂ=d­°ˆ ÀþaàĊ®*q¦j?«ÑOòHÈRg­"ð‡߫|B’7¸P$íìGÞðS–‡ْÂǻÚݔhJ«¶ÿ‰Gcb)¼:¤åëû^	[æ-4*r$‰avÑhË‘‰±p‡h¸ò¦#1î¾P¿PÐ4>„¸‰¹pGh8B»’‘Ø	·‡FN^ :D$J2h_5ɈÄTxžßs¤ÔC“–K?ò_(›bý’!K^ç+ͧ5B¨*e‰M%¦j¼‡%3`À\|85N#E¶ÜC–G¤h±vÉ,º™±`D›$ÏÊ•ã’Íþõ¡_IEND®B`‚‰PNG


IHDR  Ùs²IDATx^ݒ±KrQ†šEÁÉþƒš«Á6ÁUÃE7'q°٥àÚàæîâ\Ї}`cîââ`“Xt«Í®Áápðpï=ÜVŸ³½ï¹Ï=?ø±Ë쑣F“uòÄù'ôX²Ù:k†Ä>wl|Έ$f8b¾õÁ'#™°Rɒs¤øVŸ^’@BŒcÙ8”ý?W§\m˜:kÑþÆmö7q“•ÃL‰àâTýݤ¨ȶŠ‹žœ=ūQ1݋{m–¢¸ŒŠŒì’hädœ³‚Ñ4Ш‰ð‰Qq#ò×rÓ h‹´FK„O`Pè‚"œ@Å‘tÑȋpE,€b&¸\ ˜Ká™÷‚Œ	›üÛ}¯ Íu0(l!hâs¨ÖdM
qމâAR®󊊧–‡">œãÈKC2„Pp̽ê,”ùQ]pK›6ÌTæ`ÂHš)ŸcS$ª¼¸4‰’4èÐg@‹3Âì*¿#ÀUÕl·IEND®B`‚‰PNG


IHDR  szzôõIDATx^í–1‚@EG
‰Èm8
¬ØÉ1äØa¥܄ã`Ep4D3
lvÇ!~ò(ÉËÿ“€‡ˆàÜfZ ªnȡ,¯Q]×0ƒ‰‘e'+|a¸o»îýÜ"ŽÃð4â¥$Á Œ‰¢‘à4€FPpD)E\D°à+N$	I0&@ˆ^BßÀø´¸œ½™8NHÂfNšæ>É'-ãЀ4=jADX¬¾ﵼÐúàл8Áh@6î'X'X'X'ø»``üÈ˜QöŠb#@ÁNÞ_qQ\$±k Ïϛ%иË0ò_/
þêIEND®B`‚‰PNG


IHDR@@ªiqÞÃIDATx^í™=nÂ@…ÇÆüœ.ؐ.Tœ!ƒÎ!e¸
)À/Ú(h"‚@oÙ	3Ò'Ñ}š7< @™Ž<ø˜pá¬VïÉrùV­×k9GYVa#0¾¡ÛM¥×Ëf»Ýg]H۶ÈqÆ㱗‡ˆ›¶/Z¤(¼„»äC—@èd	Ú$Ôu#7eYý#8¾¢â'Eñ-!I’Íp83üß"ä$ý§ívW‚¿Ÿ•ç…ôû½Ù	´D‚—Ð4ÛJÁ¤Ipqð¸˟—繗  18‘@ÀäúçŒF^‚‚#ÈÀK¨ë¦bl@Ð"´Ù|\ÅÏÌ(H&“ç› ³	ý~5‡ÃApnˆ
p7ˆâØÿ=FŽ rÄaPP…° m@äù÷ï‘"@ˤ°Ø´
EGЪ°E€õ1¨ê nìcЊ€¡o€ý(j7е
« DF¤X&!+Bj I€E@ö]À"À,BI’Ä·"išJ–eQâÞ@,B‹ÅBœÌ築&ì^„	0_Ý_H]8ŸIEND®B`‚‰PNG


IHDR€€ôà‘ùðPLTEœœÿÿÿ——˜˜˜™™™™™™ššš›››œœœœœœÖÖ×××ØØØØØØÙÙÙÙÙÙÚÚÚچ†‡††ˆ‡‡ˆˆˆ‰‰‰Š‰‰‹ŠŠ‹‹‹ŒŒŒŽŽŽŽŽ‘‘‘’’’“““””””””•••–––———˜˜˜™™™™™™ššš›››œœœœœœ£££ììíììîííîííïîîïîîðïïðïïñððñððòññòññóòòóóóóóóôôôôôôõõõõõõöööööö÷÷÷÷÷÷øøøøøøùùùùùùúúúúúúûûûûûûüüüüe7tRNS¿¿¿¿¿¿¿œR™6„IDATx홱JÄ@†'crÆÂG°liñý_Àg𮳱>BÆÁmÜÈ,;#ÿ–ÙofaewÈü*¼42K=cþÒÃP…3
ç†á’fßÖ&gƒªÀvS±ƒ"ùOÉ÷ïäü¾Ü÷h?…å仈Ök:éü˜œ
˜œ
˜ìÆð‡óe™6ß`Òx090yÔDO	·”˜&ƒ»@w/Œ:ƒS.LÎLΕ{LAÙÊwNSPf¼^7ˆŠß¬Ù@'`P";5P:6®ÅÀ2#¥8/$ÒÄÓˆüëGªývÌf.°³»]F…X
ˆ4P€@„D,¦@$Ð@„XDh ³wF28°Šƒ	HW”
!©1 À@æ@ Àû€1x À"B„h›˜‚8ÿ5C#pÀ] ÃqêʨÃù±+s´ßˆô>¨8@à‹J¡y”]ËIEND®B`‚‰PNG


IHDR66ŒEjÝ&IDATx^íԱjÂPÅñØÆvtÌfgߡkVw'w7ǂ £Kž@G³:¶ƒ>@ÁÉÅÑQ\ԂÅë>á4dð’›x„9¹ðG®?DDDO¦ù5ô¡LE$ßùy
a掄y‹êÀ?˜$²éä%ªg°„ÔD–*î
ףث¨”oìÞa¢v{\¨¨9¼&lßàWíû.‡-TØgŠ}]í.‡í$ê/)ö¶s9Ì\Ùx‡aK¾#c؀yœYÉ2,cIœeØÑbØÑÅ;eÿÌâ‡1Œaæ
ßpgµ(a?`”YQÂ`”1×ï˜ÄýÉóƒÿŠ…cöcÉ:˰®Űn–a%èÁöA[9³”>€ˆˆˆˆˆ¼š8בÃSIEND®B`‚‰PNG


IHDR66ŒEjÝ$IDATx^íÔ/‹QÅáuwt£ѦÙï`µڍb]lvA³à'£S»A?Éb4ŠÅ? ‚Ìõ„Wxƒ#x™;ãxã…rýàCDDôf~†¾
ÁTŒä3/­QuXy`õ´Euà&Šl:i‰jB¨–ЂªhÃRŅÐt=ª{åCþÎî&j·‡’Ëa5‡¯ˆmþվïrØB…Õbìj¿p9l'QgøŒ±/ª°ËaæÆÆwưè;2†
˜ÙșÅ$Ã0–I†,†\¼SöÏÌ~ÃÆ0lÊðy—³öF™e%ìF9ósýŽIÜQÞþ+f2ŒacØŒ%ë$úúI†å ÛmåÌÜDDDDD|®*:}ŽˆYúIEND®B`‚‰PNG


IHDR66ŒEjÝ%IDATx^íԭŠQÆq¿F›fïÁjµ˜Œb^›Ŵ°{^F§5è,˜,F£XüÄwŸð.¼awpÁÜŸòxàS|ˆˆˆ^Lëmƒ&aª†úY.®Q
؀üa¸EõàF7½¸DµánÖЁšêêg¢îÐö=ªG5‚ü/»"LÌîeŸÃ>MÔ²!Û|™ý‡Ïa+V`ß4û•ÏaºBæ}Ʉ|%.¾Ã0†…ߑ1ì@žd§g–¢@	¢»8»øx§ܟ™ü0†1ŒaØT`'}W’61I	;Wþb¾ß1;ë»ÊÅD†1Œaۂ8²2¬ï0¬eXÞaÿĠ½ž™þGŸo\…øF֗Ì6IEND®B`‚‰PNG


IHDR66ŒEjÝ$IDATx^íԱNAÄaAВ’k ¥§4ötô&ú<–ÒZjö$T6–”„0!$xãSP\&lvïœK¾lr÷¿M~¹ìù233ûg~>ª5êҐ^d¨{µ¢Fu苐GÏ:E‹êӎpˆfúE‰êQFOº¡k¹Õ=HF½ԣš´"È#Õsæ.é™ +j¦ö@w:?0{A‚ܧ6%Hûˆù.A¦)‡-µ¥êó
‚,Sƒ ä;sXþy¢9áDæڳ3lDd3l0l“ڙ
¿gùÃæ0‡i®E¯´ÖÚ*KØaϸ,akž­¿XêgLqßZ¯üW,e˜Ãæ°!Y̰A0A̰
ÝÑâ„AíYùC€™™™™™¯_Ÿì´<6wáÂIEND®B`‚‰PNG


IHDR66ŒEjÝ&IDATx^íԱNAFaQԒ’+Á ¥§4ötô&ú<–ÒRB¡…¥	•%%¡L‘ìõ·  ‚ÉNvfý7ù2ÉîÝIN6³GºDDDþ™ï·Ë*Zèaàz~¯šjTŸ°]üY3µ¨6°=6è¤ÕFs¸U»õ{æ2´cªcs8Ý1wŽg˜[ sØ̽âä—Ù3¼ÃÜ}Ìac˜»>`¾sã˜Ãæ0¬q|À|
ææ1‡™³ï(La{ÎȦ°œL}ÏZ‘a}X ý"ÃVÃV1ž©ð{–?La
S3
±ôµQ–°lËKY–°-k}±ÎØ_¾^è¯XÊ0…)LaX “"úúE†Up‡YŽA3߳ò‡]?jòãê{l’ÁIEND®B`‚‰PNG


IHDR66ŒEjÝ%IDATx^íԽjA…aÿ--mDë\B.ÀÖÞRìí¶è
xZjk©…¹€€•喋ԀÁÉ)>á+T¶p˜™ÍäìŒ9~ˆˆˆþ™ïe£ÃBŒå»R¨Qm؁y`íТðæÙB‰êÂUl¡o¢[w…®ïQu8ª¨	”ïìª0S»#Ô}©¨O(>ÙVàKí‡>‡mTØ{Š}Gí7>‡$ê…ûš
;øfnl¼Ã0†=¿#SH<H"gÖ\†ÍÁX2wv¶vöñN¹?3ü0†1ŒaØ4a	'y6³¶£¬³v£\ø‹pÇVð#Ïÿ3Æ0†1,cIì2,²¹ËÃì_´—3ó鈈ˆˆˆ(÷›ó»?RÓåIEND®B`‚‰PNG


IHDR66&L¢VIDATx^½Øoh•UÇñó<wmÞæ 3z¡Ž4X j&HٕE¯F*kZæÀj«"é´„‚1’ÞôG·m仈/ޠÈÒA ‚¦k•l«ý½!÷—ÆeÜ{îsîî½|_>÷Ã9ç¹çÞçâ•`#]¬ÂØ~#Ë?Œ2Äg¼ÌzLœŠ3Ûèc!Ú#lå4AX,I'çí"ýlɹr°•éåHl¦›déØJn"~çmÖ`Šö5bŒV‚R§ñvƝ$¶s!NÑ胵ñÆ?vs1Ë3ñ°Yš0%ÕÀ Bì*Ž%ø‘áÌ"zžo©-†–ša¦¹±÷-õ°¨¡…£|s»£´P㸋=…°Mˆ)ÕÌy”ÓyšTÈ/dÙYhd{iwP]ÜBºE—síčù0w­d-p–çX{»vÎZ.K«ƒD|ï‹-gÆR}Ü1Ï×ñ•åfXîø"\F´æbI†Ùçܻ߳ԏ$09Õò«åÞuŒmâ2ÉyŒ—#NlÄb›1j±؈8èŽ0B. ¶cM#2yvÉz‹Mcµð	k#ŒÇ:1ÙÜWÜEØqD¦X‚IÄCÇî$4lDüUpëéçŠÑ5ú©/H}A†u†upS ȣÎÏé4¸»á…Ý(ˆ½†è5^kUú)ÄÏÕÂV#Æ‡衮âX=âºA¨
#²XFføŽ´aq¶‚“Ìr’¾s`G4zaidûÁB4{a³–ñÇz¯V|dó:º{®Yš9Ҭô"íê^š+ü4üX_¤	ûËR¬ч±wÓAX1,ä"aœC쨶q0ÂèFœ!ȃ#ÆóbÏò/¹R¯ Úò`¼°˜¼-eI„Ùö!®Ґç¡=ÈD,h‚ƒñÞφ_bÊܖ|˜¡‘9ÄSe¥ö#>̓م YF*E†,»r±Jµ‰)ÄaŒ[Æ#‹¦eÑGàƒóûEíæ&b€DñC—#1ÈҒ±'Èr˜0ÞqÒÓ\G\¥À	¨‰€&Ÿƒ²ûù	!N³,&ò$#¼QÚ`À^þœùM8¡5ô0%„.ÌÕVGÀ[\â8le
j#èM."Û(ԹG¯4ZÐGö!b’c¤còÄl ›^N1ƬŎÍOá˜8ýª;VæîþÝIEND®B`‚‰PNG


IHDR66&L¢V´IDATx^½Ø}h•UÀñsž»6osý¡Ž4X j6²+‹þ©`¬i™­­6”¤h	b$ýӋnm´ÿ"¾P´ È'HÁ4›´hm¥ÛDoÈýõpxî¸õô¼ºg|¹pßàÃy¿ûrñʱ‘NV¡l?SâOFâ#^`=§hF³•^¦„63HES8åéà,b»ÀI6W¼r÷±…çèá¨4ÒE>=¶’¿ðkP‘}Ž0F:¦8¸‰mœANQŸkåuTŠ4»˜@˜å©x˜Ã;%P©ª£AØåø¡ȳ¨ô±Ÿ/©Ž´¥f؊LšbÏÙۖzˆU™fsÌ|áv̽WÝÁî lB‘*k2çŒTtÎ4…`?RbGÐÊöІ
Ä:ÍMKTvÓt†¬l?Âê£æ̏µ˜’FÌ3f­[›±\ɴ„ìY?Â7I±åfÆR½æ¶y¾Æ|f¹³<«ãW„–J,a/:{ËRߙœQU›Ÿ,÷f ¦؍¸`~ãy„áPlØb¾h¶Øp¦9ÐUÆÎ#lݳ«.U4Ž«µØÕÐ9kæ֖±G.á„bbSþ,&ñ‡úB7j1°ÓdŽݎ£؈ð;NVkNšI#1štßYˆ}B‘uŠuôq8pÎŒ$h @èˆê뉰ë؋=Q˜ØTŒ,ˆ~X,l5˜â0ÝÔdŽÕ"\S’ýÊÐb±¬WfûŠAÅÂ]‰°æk3ëÞV$ÀlŠq„úDؠ÷ì·ɱ!„¦Dج‡“c=3_٣¼ÄýŠN„÷“í™Ë͹äJ?õqu7
8ϙæ„õ‹ó	ҀýfY¬¡eî¤'3Ìá"B¡ŒE؞¶á<NëB8ƒƏIÐøÿbOóí•?R'Zñc‡a‡öl)K<̶á7ê|˜6o˜©XДûNïÿ™fáS–"*ÛìÃlõÌ!<ZÀö!|èüì#¿€T"%vú°ÚÄ„#¨plÝ2õ03½èp,áoöݵ‹}ä¢]Ž"ý,M=F‰#8񎓞䚝»Vt"DSå
IÊîå{á4ËbB3ÌËéŽ5{¸<ÿç7
­¡›Qa'f[Âjx•‹œ ƒ-¬¢¢ڃ^áb¥šè•E7ˆü§÷<ì]„iŽSð­)5–c]ôpŠ1f-v|þn ‡ŠÓ?IAe±–šyIEND®B`‚‰PNG


IHDR66&L¢VIDATx^½Øoh•UÀñsž»6o×AfôB8Ò`¨™ eW½©`ܦe¬6Û(+h	

¢$Wþì_ÑF¾‹Þ.(rB¶A ‚ÿÖS²Ít›è¹¿äp—î½ç>çñÞË÷åy¸Î9<Ï}ž£WŒu´SgGþ Ã5ÆâÞb
¦âŒf3½Ì -F²š&(§³ˆé"}lÌyŒ'ØěôpÌè [Îm„|ÈJTѾE˜ …ŽºŒo³-ì"±…Qá4õ>X3¡"¤ÙÁe„9^	‡GÈЀŠT-ÂöâXŒ/ҼŠ¯ó=ÕÅ0m¨Y6£J‘;l¨§@Mœà»{ ‰*7ÀCì,„­GH“tPœC²:G£ƒ
øÛ
Íl-ª»ÈÿºK»sï„ëÔçÃܥÈà¯±ê^-œ1\†”ƒ@øÑ[ʬ¡zy`¯áÃͲÔq#L!¤²±8ÃìF;°C†ú™*«j~7ÜAÇÜv"L_À؋0æÄÆ¶!g¤É`cL3‚Ða1Î#lA9º&ÈÁ»rÔÄg¬²Ï!üIàÄÄäqg±n„NT%°3O•{@±á˜ «Hˆ®ÒG¢ õiV+VÓÏTN"tþN›ÂÝ-/ìVAì]„åµWѯL"üZ)l„âԔK Ü4U`fAV™)~`P1ðˆ¶ŒSÌqŠe¾k ˜D¨÷ÂÓOþØB£6g±´?փðNÙgö<ûyRюð©çž
2Ï Ë=0û¸z”‚2ßgšÖTæ	Ҁùg©։Ћ2ÓJP6,àBÒbœEØZ6l+Ây‹с0Š΃M"MæÅ^å_Z³_R/#4çÁöyaûPy[Ì"‹™v#\¡6Ó`:4Ít¸ï3ÍÂר·13Õ3ðRI©=Ÿç`v#û‰—J’&Ãöl¬\­ç:ÂQ”[Â3÷M=Ë,B/ڍÅæ{î‹ÚÁm„~bÅ]Ž!,ŽŒ½@†£᎓^æ&šÑ^ˆ¦Ê
>eó‚0’PŒñ^´#@Í.þZøø9¡•t2nÏo̶ˆø€KtÓÆ&ê¨E£¨¶Ðû\DLã´Rify_r²ûÄb#ÌÐEÒ1'O,ÆZ:èá4öU®ka	×C…é?ªÑǀ=‡­IEND®B`‚‰PNG


IHDR66ŒEjÝ$IDATx^íԿjAÅaÿ§´´ÓÚGðl··éíì}Ÿ±µ4E’>`e³¥¥بÌ^Oq‹[èbÀaf7gácAŽ?d,ð!""úg~¿Jˆ`s5ÑÏ*YêBrCݬEõá’F7ý¬Dõ 1+x†¶zÑÏD%Ð=ª{5…ê•ݼ™Ý!‡MÔ'”S¶5ø6ûQÈaKֹc™ý2䰝F tǾnÂv!‡‰ßaÃÒïÈ+l@d£gÖ}†Í@™ù;:;†x§ܟ™ÿ0†1ŒaØ4a}7óöb|ä%ìbœø‹…~Ç4îGß-þ+æ2ŒacØđµϰðϰ"aû ­žYüCŸŸì´<T_p-IEND®B`‚‰PNG


IHDR66ŒEjÝ'IDATx^íԿjÂPÆaÿwtt‹C§^B/ÀÕÝQÜÝÜz^uuԡ:œ²dt—Ăˆ%§ïð	ß !ƒ‡s’¾ÂC@Þø’
DDDÿÌõë¹}˜ÃZÌå¿FQ£zQ´zE‹Ã/˜,²%j©
a/b¡ŠKaà{Tµ€æÝ,Õ.ŽÏa3õ	õŒm¾Õ~êsØN…½æØ÷Õ~çsX,Q¨åطUXìs˜¹±qÖý޼Ã̃ä̶˰KV.ÃÎÃÎ>¾SöÏ,ÃÆ0lØÀI®AY¶`”²„À(ÏÃøÄ‰û‘k—_ÅR†1Œaۃ±dï2lb1lâ2¬
op|`ÐQάæ """"¢ÊjòãêËCº¾IEND®B`‚‰PNG


IHDR66ŒEjÝ&IDATx^íÔ1jAÅq5kRZÚS{„ÀÖ~K±·³ôž )ÝÖÒzÁÊÆÒR„ D;¾â¾B…fv}?ä9ðGÆ""¢'ó;y 	C‹¡|d5ª+07¬ ‘µ¨üƒI"›NV¢BˆUÀZPmXª¸Bߣª°WQ_P¾²{ƒ‘Úí¡êsØ@EÍà%aû
sµïû¶PaŸwì›j¿ð9l'Q'(ݱ¯¨°ÏaæÂÆwưä;ò
0)Ùș—aK"—aG‹aGï”ý3óÆ0†1›Là ïZ^Â~À(Ӽ„À('þb¾ß1‰û“÷ÿsÆ0†1l
ƒµ˰®Ű®˰"ô`›bÐVÎ,>@DDDDÄç›ó»?e„IEND®B`‚‰PNG


IHDR	~6ze`¨IDATxÜÜËO\çÇqŸC:À_ÒEcCLºÅ梶Ë.+Ֆ%ªpÎàt—uª¶Q6U”sÁ^D•zé2jÕ$˜VÕM¥Z‰<À`pÌchU°Ãéwñ¸zt$b˜÷Î{¼øH]ÐÑùéyÞç}ÏŹP©T¢ԆÜDXÇ>‚þwìc(âmô 
D%œ«¾䚕\M<DZüïêïg}̵LbÝp,ˣ¹R¯QÉ5§r#À¬I-?Âu|¶çêÆòX»’é™d\Å]ܒ¿½,åâ²\kA­¯=bW².Ê߼-ÿŸ6[s‰‹’Kύ§’é¹Ôk]êU‚'¹\Kóè¹áI®™ÐÜd6®Kæ"Æðz
úðP®I® 47æ%—îäê‘\Ӹ‡*ãHåÒë+'¹lîCG®ÑCóº^jÿZWõòRR¯.Œ ^_¢‰‡˜EIæá÷і‚z
cRjR­¯}¬IæÉí_—C^®}Ur=Ã!¨¨y˜¦}ÙC	sx(¹Ž%W
˒«?û—«æF^fÞ&võ¾¬ú0œÔËMÙ9jUf{ ö°®ê5†ž”œ£Fð[©IuéÁoԜŸC	¾䲺^’ËGIի‰CÑÄ
>—yè§äÕ?tîÕ÷_{j}}„l
êåÈúÊb\z­"}>G-¤æ%ç
5çgCs>PëkA­¯7RP¯Kð1!k¨¢νǒkCÍ
Ïú>”çQê¾r^¯/õ ªö¯1\JA®7ñsuŽªJ–g'œçí߿d†ÎQª^GғéÑ	ø¸”’ûe½­‡ï¿B÷)ºRr>Ìéçêu„:*RËqdq9%ûrVöÜɵ§륟ۜç9*“9ÿ=ø˜”5´¢ÎQGÏC_çÓrŽÒϱ¿‘lu•k#’ë‚íû×Kž÷†ÏQc¦÷•<£“>Ïëçk¡碻ØĢü§χ–fs÷Ù#™‡ÿ?Ï/£†ÃМŸÃtø9€¥Ù\ÄŠXøäÞÆgò¬æ0ô>eFç£<Gŝk3XÃ>‚wžH®2æefK:çjÛ¸)õšÅC4ñ\4±Ž™ìDó×ò0êóFõê†'¹æ%CØ
½_öÂïa-ÌæÊ5搗\«’%À!ê¨bÓҳ]'ý&gSQիoáCÜŶñ_ÉÖĚԫ ¹.Ã=Åï'•ϕkô1ϥ^û’éHrU1£ú°+üƒMU.%©ךšž†Ö×.šôÉ9ôi›争%×.±Υû0Î|9¼.×zKêµ*õz¦æáÕúê†kã÷ª»Ô<×ëXí_sR¯QôDQ¯óz¯÷“ßì},3¢)™ô¾<+¹|=7¢U˜^”ðÁI¤h'yŒzáXP0( Žà4ÞûCm.”kKçJ0O¸^El#hÅO?xò7®q
åêGIի[˜Æ \Kr
È5íäj¨\V<tS}¸e«†¢E¹ü@ύmK½z-Ê5€¹60Ž>Kr¹Ò;ӆ¹v¤æýÕËx}I®i\…kI®~LaÛpnä1`[֫Ž‚Eõr¥^yÔ_¡\® „ša®iù-ǢõUĎa®[’˦>,Ökw0hQ®A°i˜ë¶Eû—‹>™ó
Ã>Ì[և}Æçy™õ¡#¹Æ#èÒ~låyCå귨¯¢€î¿ú-»O™2œó
ÐgÙÜ( aX¯)Ëî—#ٗ-=÷–××6¦lZ_åڴø9@Ýü~Yæ|ò~¹¸ÁýWy[桚ó·#è…çù;†¹vԾì&ý‘êÃ[¨G”˱äã¡+˜Æεž,ìËÓ:WÂÙ\\EuZé/_ÿýL÷_¹Dì¹ÂqðÕ)Þ]µ$—ƒ~äQCpZïÜiÜÕ}åy#šzÉú’\-ÚúÓÝGïGù>%‚zõ¡`˜kôFý.Ò0×86r5P \>ŠrÐûbÎ䪝üÞ<‘ŒŽ\KÑt}ÉoôZòᗃA©Wà ׎üÆ`Òß9¼˜‡*זA®:n[õý†<·)|òõ§¹¶Q´ì;¢^”Âïõޚ؝;c½
R/7É¿2ȢŠà4β‚,2	,egõޟ÷š/É5ŠL
؎a,#0Q^®ò¯!T®%xh7ÈeZ¯%QZüçú=©W¹¾ƒøAÄVð3¼fp}¦õzC®eäI Wg\}(õÊ&”«~L¹îK¶'”k+1Õk	äê0˜óÖæR}XŽ!W~B¹2ðQ‰qn´'4GPŽ)×p‚õÊÆ97êeå9
K’«3¡yèÅT¯2®'xŽʡòŠõa²1͍*ÆêÃθÎÒ~B¹2¸û1çGÌåÅԇK¬¯•˜ryÈ$8çÄ4ç³èxÅæa^‚ëkK6Ÿ
î+—¬\_æû×rLÏnD‘K^5—ó9ª3ª\ⴹr¨Z7Í땋ñ•Cæ¼?´‘{ˆk1Þ/{è8ï\èÄ(¾üǿ־JjƐ-#¹V¼ðÃ_Ô¸ÿŠ2[†ùÂî|ÚüO‹scDÏÃsÌ׎¬ÊõR×>ü÷ñúÐG&\ðQFЊ?Îն¾5—Á}ŠQ.µ¾ŒÈ½­Ì{Ku_9bºÌÖDìþß:$õ2ݗ[Y_C¸C®eäО_=7"V†‡Ž>üÊÄ؇à#“_¯a(¦z}‰	~¿1ú£_í/Ɛ+Éï7ÚÃï¾xP=`^E47†%Wߍ~Û}eþ¯Íf‹¹ªÈ!sž~9já_õ¶ú5óœ¸&¹®ã!‚V½ó?ö΅9ŠëÊã…p>‡-$ñE²늳Y{˶°Gš‘ڪ­ڭÚr™ÍÆyÄËb„c' i6ÞuŠâ=Ùˆ	=%!$!Íc=¤™Þû—zˆhߞ¹§§oÏé)ºêTْf¦sÎùßsï=Ü+sՁKŒ+@粷?^½gÇuGØv¹jÉqH°ùïû“k\XÈC®zód$C³a‘üEa^q!¿†=àB¬×ëÿ—¤rÝÐh£sÕ{Ä51ÅC®:¸ð¹rÕxȵÝ#®qó\£^äW‰Æá8‹_½!1|F]‰êaÈãüò¢ŽÂò8¿†=ʯ Ç\^ÖeqÕxÄÝØá±Ž{¤Û=ÖÃ1¸êJ0¿Æ<ÖÃàãz¾`® ÇóåQ¶þâ_Gy¬;ð™ìë
z#Ñ6ó«Ö.¾2³¶™`™_r.B½á	װ„KÛI=‡ÏܭF³Gº±Ý+.a!sO½Þ~ÿJ‘ë(7¹¾“Ì>ýbÜ5=$è†\s¯ÃÈgoŸ{®ú¸äöʻ)'ëóÛ=䪗Ä!Õ¯Úæ_Îýeê†Kö³S‰”Ëã.	gx&âÖþ{ô:x$ûËõÒÇvÒë(Õüõ„ËÜ_ÖÕø%áºãװ}¹^öµ\c÷9„²ël¿蘎häúÆã>‡vó¯;žr;¿öթìûӴÝÐÓøU)¬'Ìðð°q÷î]c~~Þxðq¼¼l¤Ói#“É+«†_Èc³iãêЪqºoÙøÙûƳyÜ#¬R£ö»”‹kddä!W*•zȕ½ðßøÙç£+ÆÉÞe㧍çöå劀Kc‚•‹¨ù+7~‡¿Áß>—ÈÇÕ)¬J#W…°n'qˆ±(ãÂk²¯¿90b|OrY‡¹ªT¹æææŒd2¹ưºº
¦où399™å’ºkŸy3qF3דÂ.ªúËʥâ/CNWi\-Çg8É/“ŒN¸. 4suæ㚚šÊ旝nˆCU.Œ-[5rU:ÕCY~üՅÏÖÈUÊtcbbB…1²E³¿:‹à/hU¥f®‹®¥¥%h…|ü¢šn=ŒA{5s!ƻÖQ…pukÖùʸp1‹Cú<Z·1¿$qˆ¿á¢óUàrXGê/:ÿb½ÝpÈÕÃÅ_’q™±šõ!¿\ŠÃnýºACꨈæ8Ü.ªnÐë(9—îy
µŽ’¯㰜«šþ+Ù_š¹*͗%þBŒ2ª£¶*ԽÐh©ŽbPo8ÕCZ%ñ—ÆF¢*’n؏_³©õF•†Æ/BÝK®£°ö­Âõ”®f›Bæ_A7Èu”..sí¿§Ñ|öÕð}j•Í/Sç©ël•¹ªÌ=c£mkIƒ·‡tÎ+»³\šØ*à/°ØÙßïMÝ_Äupå›ê¯Þ\\Ï5¦Ööê>{vX5¦£«²õy­õ†C®.®Ó&ם™4ö(±W‰+›_:םÆá…|\?ÿ`ëÿWof׹ÒT6ðß`Åï„n(suf¹4±mÉꆍaOÎx­mÁh,÷>fr­«ü£ûËï_^Æw°–“g¯̸]oPýÉç¯×O‚ë¯þJ\+ð׃ÌÚϮˆ=Õ+öÍ×ß5<²¿,þ?¹ôUÿPʒ_U¿¶
ëÎŅ{„ÂÝËF߭u®Ôâ:WÆâ/hËæß7ÿ®ˆýë_—klüBæ|ÜÜDLýäÔÂZŒ]\ȥ˜ðÑòªé/“¾Dâ;€öÍË56~A/庇gMÝò+«‡Ð°ESëºq¹ߌÃ÷-q(·‹žÒÙÐ÷—‘3".v÷€˜zýò:ÿh~-­ÆýüµÎÕֵî¯äçêÖÞç`©ç¿ìYyþHþÔ—¯˜\YáJ.~[óå¸<èsÈùHì÷»æ×î\ŸÞ^çJZt?ÃïÀõÆéEè¼J¿MyMóly.¶ðpü•άsßO#÷êÆ?ä÷rz‹®Ưja1ÌÐÐÐZŠ#'€ÿ,øæG‹8*×.&¬ZƒÃ^–°ãºwï¸PÜ:âBë{oæä
hH°añþ¢…#®•´é¯ÿ]4ž¶÷D¸VWm!©0¹wą×À×ønÚ/Íçâ
jâJåÉ/Ç\ð5bïµñ½ÿõ—s}šýU‡8̕_¸·B¸ðݘ\2‹C»4p½œåÒà/¼6r`›†ÅÞg…Íçó.‡\x|\u¸äº!ÓC:4ړ«VWR—B~+ «N…—&®tC×6]qˆËÌ/ýqH¬7Ì:J7WHS~Åtå¸â0¨ƒKÅ_¸4q¡֩×Àҙ_–:JfqMþ
‚KG½AÐCº:*¦S7ôë<½Þ—æñ+©©Ž‚Î'sqyP÷†4ÕqMº¡ÊUË_çéF.íó¯<:Өó±"æW\S=—Æüòv\&Ì+5×Qà
y_Giϯ$tCCã—9¯Ô_ÒužÞø¥}ž¤‡/»ÝlsþʘœËÛõíns™kÈñìºòÏOŦ¸ԇrÕKÊÖαWpõVTÿøeŸ_…ú+&ážöB°	‰½]\19WÁl!a	;®†ß,b¯{Yºt#®¤ót¾Ú\\{>\ƒ&—>Ýئ«Ú.‘_»‰q(¿ë6®²à/;.ä×Õ!g\h‚H$•ôTº‡htêí_ES
ùBs"¾“]â=žþ¯¤ñË?D¥qHà¢ðÕçÉ/4ؠ©Æñ¾ù›~€׎Ïvš{TÏi8Ѭچ{øØËG3bÊѾù§ù÷ÍãÖ~—«s_ЍkÃθðškÂ_{åäªÓÙÐpzºÏÊ9åBì^¹e‡¦%íúRt­÷ü8nü燅Å!4M{Ð
;.]ýz效Ãl¿MÞ8¬ÑÐGT£2O¡_à‚n ¿röA³^r³ñ«LX“Ðì쬱²²b¸uÍÆ3ƻX2ž±lVæ‚Ã6	ۗ‹Ýþn]sɼ\Â6Ñxè\333®úë~BÁ_îqí§ûK×~ġ\ȯf¯¸ð^xO¼wÏg“ÆßìúWü¥™qè6ÞSZØãÙî/·Ä~â"Wƒ°É_¸Ì{h ?²ˆ΅{Ї.Ø~·¸¼Ôyhëôô´\ÐÃf¹òù«÷ğ‹”_°}.-ã²ÇþÚãby/tƒ^òçò|\Ö‡›ñ^Œ¸ö»˜_ûqAÃ6Ó9¼¯£è\®_»ÉóJþùUÆl\ÞçÓqY…k3×úA½®FFùµWW½`î-ӯžú+ƒïØEßËLËüVÏã½<₦61«£6¹Ðøµ	\Œô°É	—„o“~'å×n—ӆ”2aÍb}ròúÃ3Æåä†\›Í5qc£aöʍÉbͿÊ\zô\³ÝÆ2Öұ·£Å_„úÐ!×>ö½ýÕh§ó¸öØ58û£é/>õ†+\G>1¹øÔóÇ!òëðù%ì1z‡-
ãWAºñ´\7جo8åB³EËÙEc:–quß|bjÎÍú0׸¼ßÎ_G?q7ñ^Ï-k6¨üðH*}kàöªû_5ËÈtù5ëžÎc̀Ù5€ep/o}4UæƣçÎöŽýT¼ϒœË}þ=¸´ï›C{ölŒñÁÛÆ?KýµÞH¸Ëa±ñ×:öÍô¥ìw«ÃËy%ôðóˆCõ¾”úˆ½âš7ý•£±mŸ…Kj*‹a!‡£]u]siã?:ìà:0*Àaà:nDžɭ®ëî|GzÚqµƒ‹Â#áj+†¿¦¢ãÇö\r=!¬Ã{.Ó_§l¹Â¾S ¿¤\x,€N.¼÷;¿`Çuƒs\'‹‘_àÂglüÌÐÁhŸÉu¬À8Ġük\û•0š¿:£®‹ÄFÝÁÐ_§H›–r=«\ú«•¡¿Ú\à:ΐ+ì×	Gã2®¶åj/bœ®‡ìë(pé¿Lg‡>ŽCœ̙«ŽÚ̾ޠssëd‘ü…Ö‡EÊ/ÔԹ¸Nêðƒz££Dë¨ö—OðÏ/võF±çËڸxΗå
R®cüçˤæ,×{’÷E-ÀE6G…³ë‘ÿønrf`MÝûD\Od¹¬†µó{ьV.ä°&.ø뤄{8Ø`3.;C‹aO{œtžÊÕ.å:¹€G
éç¢×…ú\ÅÒùã.pµɸ~–ǡG\­yÖ7T¸:ìt\Œ×méῇ°·í=}^I¿‡zókt:½¦M}ŸO¸¶ÎfifûU1òcþ$}ÿ|t.‚½FzS›¼î}ç·wûáҜ_Sà
Ûtaöˆ,Æ?˜Õ‡xï×ڴq}±̰ϡCÞçÀ]þÊїÒ&ï#â¿n3e£¦ÏrÙY¾N¶VY[,3¼ºÎ|ºl×eÙæ°\ábs}|mŎë¸ä<ü¹~wݖ«ÍÏ\ç—MWl¸®vÆþ2›õüɅÏÂg¾÷Iԭ8,ÃÆ .Yñ‹"Ñ	×f»üŠF£¸ÂfLù1ñ,g	—dÆUéþjÇ=– Wÿ8tÄu¼®Væ\e¹ژçW™_ã0Ûr9ÔÃÍÌu#ì²â;dÀenZ2ˆCãÿü:Aç²_´ñ˜µ¨†üb­ó¥Z¶‚«Dë
'\ex-k9׍ÌÇeþzÈ`þíõ‹ڜˆÕê‘Nì§Ø¸ñõp”;—Í6‡ÏŹÔQa‡\›d\ÏìIbm™ƒ¿ÌæJGþj—œ®„µen:OõW«Ì_g¯­p\¢ø넌ëã«+œë
ýZrª
öYËâù…=DVzHdW›Œùå‡úÒô…Z>¼²ld|T÷ªŒ_àú­wºZԵõ(pí<>»Y¦àò*ç6ìÃþ8œ˜4O´¦7Ù׽oŸ‹{ª™Ü}íÎ÷ÍåóJìµyŅØ@Œй|ÝçP搫×÷l¸œö1X·Aªq¿¬P###Æââ"éXÍk׮­­­Fss3ÿŸ‘Ž?˜L/4§dp
‡±ãº%¸^Ü/åj”ð¹FGG‹Â5x7mT˹špµpáBnk‘rµйäq¸°°Pɹ\ìò+šX¦Ç!1¿Šá/|—øìì} HĿÀ׸öráÂgš\²㗹é!Ý_òÇߐýʼn¹ms8ݠs59ââï¯}óËW\
%Êå$›˜ÔQøL»üzËW£„‹›¿šJNç×-\âPÊå\7öñÒ¿}Åõ¸Žj,Q/UÝhðÕüë1W½ñ˾Þ`T¶8hLif|O¢ÿÆÍѦuT…	&yœÖ\±öÊkü¢s°áâ‡M.økÉXSf©‡¤ü’pݚäÇEdk”Ä!7h;™{ký|ý國™š\D¶æoå×~y2Wtƒ¯øše\_gürc¾lî•íÙuj{g™\7‹ÏÜuZŒ1ƒÃ©Ï+‡EîŽͬzÎõÕ7iãyIÿFà­èë~îsørlն/Åï}Õîõ94qê·½ˆ÷ºMÿ„m¿Mµñk›êΝ;¤£Ënܸa¼úê«FMMÌð;ü
éȶšƒR¸—pãÂ{µ‡R²gÆn#$W
G®à!é£k\A	Žäæ/XˆÀàÆ5u…+(¼ÀUTÝ(˜«ZXÆÂUÌüÂgãP$â_D7èF€Àõ<¸Å!¸ìŠú «–[~á³q.þºáŒ+X Î=¿l¸êùûËW+Ä1%ºm£èa•ËÔyn\°ZJ}ÈÐ_␵n„øë¡v½è(¿ø×uuÞ
ݨ÷n@ãëaÀGãWM	re¨\’y%WݠçWéq…øëFÉׇ!£kYèAçÙj7®e½ònÊøjp‚kU­È«±¬ÑaMk®ëù «ÎG\u®…kþXKf[*r,\Ø{Ç:j»©áª\™\&ÿº—_ðò‹%W .èÆäO=$4G%ºÁÞ_
lµ!¿ü¸>ŸÓ_/½•ÂÞ7®Œ°œ̿>ˆÌDŸ޽΅Gq2ª£²\Քy
·º¹ï6?u£}ýC‹¸W?ϿîÙï›×òçrԿôó¼\6}D5„>¢mÜö͡Y6\ÕƯJa±BmΟ?oƒAä4ü
þ֩x˜V©à°*aqK‡İè\@%\Ia2	WÒâ/\(P%\	a[¸pqCpU(r%9汚¥qX¥‡	Žù.‰¿âžòs~ávÿ4˹¢ìâоøys¨Š~‘o3[É\üý.=¬$è®”"r0ê#.ĖJ~m‘ÔQÜãPE·úL7âð-¿øsⰒK=OÐùJE݈‘¹øû«‚±Êþ%sLQ7*}Xo8›Wò׍­Š\qŸù«R1¿b>—·Ðç•%So”3]ßÀw‹ïØq}è3®až÷Y}¨´nãÇù²B“CŎ·ç/Š5ƒ¤Ÿê^®rsÍÛÈÚóMæ&,ß:J…ëIaó–ÍelšsæڢÀU),!á⬕Š\qÖÆýž_ðiÌg\¨{óë†$±GÃo\–¯oØpgIË	fÜõ°\«Âg\ÒyŠŒK‡ظfœ_òúP‡qé|*_}.q¢(¸’8äÊ—“ùץë³ÐC¿¯Ï?Éuž‚˜ÁÉ_ï}57è†ßç)ӱL!ýôõyþ}œ×0ÖØpAëTt#ɑù%y‚`<˵Ñdϭì´<³’t|Ùå˗ÚÚڇ7¿sçN#‰ãããkÖÙىŸe¿ÅkH¥ÃóÈ-pÂ6åygÄʵ´´ĆÇÐIžÕyÀÅÒ_ýRu)pus昔rõúÇr¢óÝÂգÀu‰¿n8ʯ^Î\8j÷™7Éz»÷’}–û­۫¯Ÿíü.üåóü˜#yF}0_ë<îÅ!×Eru*puY¸pD5w®^®^r!wøë«‹¿nèãòaö”¨n€Ë×õ!¾cº¤ºñXùÆa§¹º	\¥¦=¾­7èãw=ìá¯ڸº|8¯ŒòËwz˜£É¿‹3žkLÞëùlÒ7\2W/¸LÚր¸s]RõWְ¦u{*Í]7º¸z¬þÂZ$÷ñK«ÛÊÕ?Q\]>̯n'ùu\þ™)é!öÐnMò×
®NêÆ%K½¡¤‡ð—ëyê<½î§2]؉½—]ÉUù낄…0ÿb[Ï÷ú}?%–\–ë}ž‚ïˆñþ2ÆØÄW©õ9tqïì›G¸Xï›ߞ²ç²oü’‹Ŕ?4¯¼òÊÛ>zô(žU)íh=tèÐÿÃkðZÕëÜõêtu>æ
åàª÷×Ç×V¨G!ÖøØ_õ9¸‚~àúÝ_ä\~óò8ܑƒk‡Ÿò‹ Õ~àÂ=õ}>aüðH*½«Ž óø<–\ÄGþ?{gúÕy¥ñÁTþ?æ£@N>Í	‘L'_♀‘XÆB‹dW&Sã؎0Kª’òbKjIŒƒ'vlcÇN°$$ƒ
ØØ& EÝÚ©—ÖÒR«»ïÜgJ¸ŽÞûÞMÁçU½åDªûósÎóžsޗ¾›-ziáڬkbbb±zmT¬×VR®MÙ|CqnԾ/ûèU@ª×åù…Ÿµ¾a\øo£%·e«£,õþ¼…´Þ(PÌUHZGmæ߿ˆêùìû×CŠ}¾Ó7ü_ݦ<¯õtv'œ־iuTöW#n5ç<ïœIjñùM‹yµÞÛàÒ‡³pš\Sãó‹xf¾±Q1WA®Mй¶g¹ µÅà™Œ߰sÙ}ã8¸ö_ö}ÙÔKgŸ"ýPW<ÿ?׽'¿Hã•ÒïS£×OIëù­¬ý²j.q og©¨‰Ÿºp)8É0ßø`ñ÷XïolV| Àïâםîê—PƒƒƒÎb¾Ž9òíÃîڵËI§ÓY?¦ñÉ'Ÿüöçñgóõøë—M°wÝik™»ú´pýò5W·»–[¸ð½nÅzõ¹k…W¯®'ì\v½Åá“ox¸ú³èգ+ã®Çy¸…o¨ô̏o½Ôúü¯Þôpõúä×
Eù…g3ß^0øpõ(æB¬ùíË݊¹ðìº}ޟk™v߰põ —õê…^D¾!õ²û¼¢úphhȢe†ÀàãйÀà‡ÝÊ}ïîíUÌ՗Å»ûFŸO~µG-Wö8ìc«7|£ÿ}ZkÓk™îy”Z——¹Ÿäð^…¨yÿ²pá{½rf€و²þk…W¿äÂì1£«ŽZfáZr®å®fþâUpéšGùèÕcêÅà‡Ê}£ß/M½ו_ƒóµ…M¯nɅپ½D=oɯnÅq(ç¢æþշÀ7ÞPç²î•ùխØûL.¿s½þ!.Úþ½KˆtÞۯ…ë妝¦/°õ1Ì{Ÿ°Ü 8‡µÝKéÍrϡ[ù½”e¶‹_åæG˜áæ٢þ#>þø·ÚÚÚz՟?wîܕŸǟ]œqÄ2¶W#–[+ÑąwBoØíá*³p™z!XnZ®¡¸U¯bízùp•RrÙã°Ô‡ªò«ܞ_ºôºF®2Ò8,чx¶+yû÷ÖàÔo^møÉþ‰m®šôJ&­å[¬Ý7¤^bÙòëa»^ª¸lûWW‘Í7Hó«Œ ¿JI¹Ô÷)>\Ö>… ¿¶qÄa‰ö}ÙG¯›^û2éþµƒ´Ž*×î~~HڧØý ý>µ'w"þêßâN{g—J?´p•˜Ÿö…^›\±´¶ü*²p•™¯È˨ó
W¹ùj=èE‡eK~›¯AÚýPß|Ãä*%ЫÈÂUfráÌBkŸ"¸vhÒËä’q(ÙNïÚZ^mÈۙ˜fÐK¬2‚z¾Œ´ÿªàŸ÷š«”à¶Dû`dÌÊU®=¿ ×÷-z™¿–tâK€E"g±_۷owðN&sõÍojjê[0üÙÅ~UþeÖïè¼Ã]\
.üïK\&—F½^ùÈÃÕFʽî0¸ڴq½ô¡‡ë’aòw˜~‡5æW©šqˆ¥Îû‡¢Nõ‡cÎ÷%’ó\"]/<£Qø‚spµ‚E¹^ð6“«
\¤qhî_í\í¤zµÞ*qÈÄE¨W»‹?GGG5r}Cêm–:ªÑ7Hö勽.’êES÷ŠW!B¯V½Ä!,/ȞºîÄÌMυ½ÈÖW
.0v.̰ôòr åªúX%WçÕâðù÷gY|£͈CF.̵rYâ_¯—?¤Ấ-Í:JÌmϾ,/~Í÷šÎחºg+;õŸ̨ݿn‘ùÆ%‚>¥ó*ýþÁ|ƒ†Ëvþծõö_ö$’ÔDZ¾èn1ó‹ä|¹Õrã"W;¸äů5‹¾ÍfùÂί÷gd‚MZoë­‚å›\©TJWþnW®àZ§•ˢ×ZU«‘+–È8²땧‘+ž°Æáz©×?	®õ:ãÐzË7O»^ѫûáwµúáú]|~ˆg´ü­V®<éD\÷®5¤z­eՋ”k×:Áu?<Pu_éÕ/÷/.#‰¸rY}ƒ”k-)—ŒÃ\Ò8\ËÄuå ö�5í)2.¬\Ùs¢ËÜì\؋®ƵNraf™T˕+¸ò‰¸Ö®õ.†üòÄáð˜Z®\ÉE¤—ŒõƧiæº_p呿×ZóSÌb	µ\ùr_&Òs6»^º¹òo¹hÿE5gË#ÃuDó(ŠsØ?œˆ;ۺüòk-Ñ}›uzYïÛȋ_µlxxî¦Ã׳œ1Áj…`õZ¹öþÉÃU#¸ª$×ÈȈ®}^®:ÁUG‡ÐK}~í1¸½Z¹vãô
3¿Ì84}C±J½žS‡G9ý±uå¹[ۃ³‡Oôï\Õʹäª\•æ40¹JŸ7¸4ë%ý°ƈCÍzI?¬2¸Xôª'ҫNrå—äª&âª\•DqXŸ¥Oa‰Ã‘^Õrÿ"Ò+À0߰pU‘úa5i~ÄAluîÎÄð¯ßµ|5¨=¿$W½ì9w›ÑÌUëřœæ8¬ôãÂLNs=/¸êfWªûe?®Ýo©֫^pŒ8ԬW•àª]ào©æ’ùUcèE³å—ô*Šüõ<¸
^Ûïþs–„«ίÿ‚¶$óÃ:‚>…]¯zҹh€íüˇ”sì:¢û6U¾ZÖäúßzþÊǘJ°©©)5`Ÿw¦L°°»5$¹¦§§Õp}òpºkéüG녵êuÎË5â®;„^*¹Î­zš…8ÔÊ%õÂ!á’ù…8fŠCá£Zõ:ç劸Åa"‘ÐεTp©ŒÃÉĴóީ°óÔ“ӹÏ$Ææ}¹µT³oàYÂ,ó¾aٗõrE	¸ð¬&X®øÆS
®Q£ùÒ^o`OòӋÌ#`"ô
é‡},z	.,³Ž"ˆCºüfà2óËÐ+L¶-Å"Ó+Lª×Èü뗰†eov¾+¥™kTpEfz-uWTrÓÍՃ½3o徱d>Ò³aíuÔ<׈äjiÕí‚kÔô
íõ†M¯s~hɯ3<¾1õ"‰Ãa3¿´ûƕ>å닡±Í‘©'^ƒÏÏiÖkDÌ7ˆæQ²ž²ô˂±8JÔ
#ÁEÓñÏEÅ9,Í\tq¨ý¼òŒ¸GäžW&6=7ö‘é’KñùòÎaq r·„
…B‹
‚8ÅÅÅx°ë±ð»ð;¯ù?n:ã8ìŸ2áîqYV™\™LF׏ëáº×eY©™k.í8?ÚçáºÏe¹K3W*m׋"½ùµÚeY­=¸ÏÊu—f?œ³ÇaŽ˒£ÝçâåZ­ÞSŽóƒ½V?\¥[/«ϯҮžÏl¿÷*¯£ðeãº\„z!Wr)Ç¥=ÿÑgÿ¢ЋÐ7V“ú†ؗ©ôú¸˜|CêÅèªö¯۾q/!×=¬uf7²wA/3—Vïó«Ð[J.Ì
Òõ~®ï,àÚ.
½rL½Rúãðn̹[«%fŒÉ×J3¿ —rߐzIŸ§ؿH}#‡p_¾×Ôëýq˜ã×WpÝMØWB«ՌslÒ9ÛݤýWi®&܅Ó~ òƒIçã3#xCQRÎmï۬Âů
	644t́ýÂ/\7 sáw_ë×So^6ÁqYеsýú°‡«ÌÔkppP×oŽ̘\¥à"ԫÜeyD}~Ùã°L;ׯ¼¾,×Îõ´÷õ2èõ´×7[„ù?,5¸8|ž ñÌFỾAÈõ()W9CZ>v¹šêõê(Ò8,%ŒÃb?,"ä’}%S²î_e¤uÔ#¤zíÀ"äªøy º}Ə?ëhï²øFzѷ`¶Cáè™z4Š:
³6Éõ4Wf7‚³n½JãžQF¨b°œP/p•r•zaÆÈâ¬ûׯz‹´ÿ*1_kFÒUÎÙ1õ"èS*Àu{¾¡@/îùFôbå"<‡-ö¼6_ó/,,,¼a`øÝ×úuäӤ	¦*B®—% ¹b±˜:®Ã^®Z—¥N»^‡}ôÒÎõj#'כ-.0Ujç:zŠÐ7ì~¡^ˆÁZB?¬eàŠÅâΙoú#
#CŒ|RT{Öe9 Ïl¾¿”+@à‡6.äV¡^•zá™M®hF¨×K¤¾Üz‘«±hp1äWi~ՒrTͣnëUìJ}¿awÂùàËY
½ЫÈÞ³®:Éu¨‰‚+`r¡÷$àzqHÈuÀeyIr½ÞL“_5‚³S†:
\B?¬bðy‹^3ž¢ñZBߨ:øá3¿¨‹|òHíäðC/L±ø|-é\´’u.J8S
•^üóÂù|‹q@‡”¾ñF³ç¶
¿Nšﯼñ¾¿ót{Ê;ÉÀõY‡‡«ÁeiÖÎu¦ÓÃÕÈÀ��ÉeiÑÎõi›‡Z}¢ëT›U¯„¾ñ‰釉D‚Á7š|ãlÐꇍ„~¦Êü"಼¿½>OÈeÖQðC®FÒ8l‚^„\'Iõ‚gü‘‹8¿N’î_M„\XŒ~Hêóͤ\-˜µ‰:=5E~aÖ&¸ÐËPø<zæzµSp!›õj0õ:͡×	ô̒ëSß8I˜_-Äùը³³ÞÀþeø¥~ÞÁÁE:gcíSšÌ9Àôô4kŸBᇤùEpρw>O0ë(âùF##ü÷|לóء„³çØxŸÎ~øDÿ!\üê’`ÉdRX_$mĆ\– !WA¯þ¨‡«‡8{	õWˆP¯.†8ìµûFˆ0»òk fի›0¿ºⰗt_Æ3…oô"ä
‘ru³êEš_AR½:ùõ¢âê"öÃnF.Òü
1è5;;kr™}%~†B/ô̢FÍO‘_èU¹ºL®þ(
—‡”ùÕˇ¤qdä"õÐÉÕËÃ2ô¢ôùž0‡^h˜ëyâ¹htÐM‡AF.Öyk~ëÕÃï4\A\üš”ßL§õRÓó 6ⲌiçJÌx¸À4NÊÕÎ5yÙÊŇãÄ\·‚o¤R)%\üù5~kí_”\¾OóLaå¾-L.©A~Ýæ"ðQä¡^qþ8äڿTqÝÖuo‚Q¯
»'¿ù^Éoþó¿©gŽL:—“®˜[ûFEŒ^†B/Ôô’+1CÃ5)¹â	N½&/Sp›zMppi”4¿(ãØM.Šº×‡õ¡é‡cSqåïS¸¸Hç¢ãüsº~9ÌïÜ\\1R®qÖ8üãø9u`s)Ç<ˆuYÒڹRi׃^ÇÕqY°e2
.½/—cՋ€‹Â}|C}~en½’.K†ßç¹öe?|ø•)gãóS™¼‰þÜg¸è0«ß72¦O¤Hô²qÍrÑÔQ&ƒZòkÆä$ñ$cŠ^™-±2¤z¥	õš%ݗÓn˜’5#°ü½ŠäšKQä´J›z1ÔQ`!ÔË1õJgX¸L½(|,3’‹dÿJ™zeš8Ìr¥ì¾A‘_s’+•樿ºŠŸ:ßÕöB¿Ó|~Å7’s[~‘ö_`J’õ)’q`êEá‡X„zÍÏ{R½2¬óyÆs"ÛÅ/Cœ#¼èæH°[ê‡êé³@¤¸Ëà³sÖ8L^%iÀ8/~¥½\)âýkޱa¦:8ç¿èÀ? k,I/~9¾Á‡Üzñ<¤°÷å¤YߧÒIΓ¤„V‚‹`_6¹R½æR4ù•"¼˜2C‡ŽЋúbe’çâò,oô•„ìö…ÉDէpåÿ…ҋ)³üї/¿H}>Íèÿ/¯zŒD"Î޽{m۶áŸøÿ7ú£Ì䫲´rÙ_mFÀ5eyÅ—핣1â8×Ř¡Ì/û«	¸b	—õUtù%ý?¿8¸&Í8$ؿ¢.K\»^Ђ±>ôÿHsºz~Œ”Ëôyhʢc_9I‡“ŒqHì‡QF®“çº/¼×Ü{áøg£©·NFœ™d†¯DL˜¯^"ಿ*‹ >dàºæWÑԽà"ͯ	É51MÁ'õQèE‡ã¬~hêKÐp…ÍW"’Խ·ç6ªôâç⚋Ž+˜pûÆíü
Ï٢„\ÊîÜ޿pñ«K~3™L^w°={ö,øÙ]»v]O0<³	¦ v®¾HÚ<ˆSv®þ¨‡+䲄õê¡^]¤z)HÊÕMš_AÒüê"äÂÞթk fͯ.Fß`ðùѱ”óÒûãÎOcÓuž~¿¥÷ü´îeä’û2—¾:ê6Wi~ñû!W7عPûʤ'œfàS·äê‹è㚝µqI½PóSø¡]/Šü
1s‰8¤ôÃ^½‚È/B®NR?”>Ïï‡\ì›8ñàïÆOïÿãÄtà£1gbjŽb_&­{{Hûå qÿÕKªWˆµ_&Ջ‘+Dš_¬óÃ^â}9Ș_¸øuR~sjj꺃á&›üق‚‚ë	†g6ÁÀԠ+6~Ùyÿtةú û÷—ãÿöûñ×\–Fí\g:Sæs³ËҬëT»‡«…ëlÐÊդëso~â²`éŽÃ6×I†8liµø†áóÓÓÓ,~ØH˜_MÈ/B®†ü:Ýnåj ä"ȯDÂóÊeÄ`a=ß@ڧ´À	¹I¹>!Í/05³Îõ"õÃFԾr¯þ¼#Eáóè™%×év
.hÕ(¸PSøzɅ$¿Nê…ÜjPî˜]˜\ˆI®SmzA«FÂüק’볟o ܿŒzãSŽübí¿HëùR.Ä`ãí~YM½Ñlô•˜12认~ØH:·i!Ï7“î_Œ\¤s¶\üª—ߌÇãÚn´á™M00ÕrU¹«V;×ÑSIó 6಴sùÔÃå‰ÃX,F ­^µ¾qØËUǠס&kV’úa-iÖðëEÃUEê‡ôB-aԇ,Һ׬£ôB¾¤]¯±±1WaÂ7ê¹jL.Ä*—u_&ક>ßÖrz‡'¸êЃɽú͖$Å<
³EZ‹"
½ÐS3Æ!jH½jL½ê(ä֋‹^ý°
ùEè‡/›\h¢È/xF©L½HêÄu/jÞW¹êHû”j°±ö_¤çæª9¿֒úa€t>_LJľQŨ.~="¿944tCÞa	¸­[·:øg8¾ž`xfLe„\Å\¿>|Ù<ˆ­pY*´sýêM^O1¹_Xl\e&×ðð0‡^ùõ›#®r—¥ÄЋÅËHõÚAÈUÆà‡Oy÷/0•r•3äWÓ7ΙoúÁ¦rº÷Q°‘r•(çžkr•‚P¯r,F.b½Êó«,p|p{Qe¬ñÁß'òw%°ÇQp¹{ó±O£6fˆÃ
Ôô’zpA«2Ʌޓa~ˆQr¡æ'à‚V„\º,E␃Z•úô*%ԫÄeyt^<ûף„qX!÷¯‡^˜r޶LQÔQ¤}J—ԋ|¾Yo)!˜*øÏͩ¸*}ƒX/ó–¢ÿbõ
“kppE¯bB½ÊpñëùÍP(tÝÁðu'žÙ»ËäÊd2Z¸ð¬6®UîºO³^àz£qÌùyý”“ûL"9ßtk¥f½RiÇùѾ)°Èu—˲Z³^iW‚ÿÖõ\šõšK[¹r\–B½î3õêêêbáºW³^s)—k¿‡~¸Js~A/‹æ@/Bß@nåhסÐj%!×Ýê÷/Qol؝ÝôÜXóëí‡VXluï}ÚõòéSrH¹¾6B®»Áf¯78ûJ®U„q¸
5‡ÜÓp÷¸TZ½^9¨9$öî9ý\÷¸,î\¿¥ÐZ­¶è¥=¿4Ê̯t† ¿,\ɔz½î3¸_ÐK}…^eGB¯ûzß@~åqȠ×jê
ýz­üºÈʗÿ<ÔüÙW]#Dýòjô*„s€•àR~^‰ٻm¾±ŠP¯{ÁEx¾¼ŠxΖC˜_«±ç9X„q˜Cêˆ{¨ôâ÷CÆùáJ\üZ⮰ùK`ö÷W†癖ºkT%—ýýËCó\w¸kD|?«R¯—‚‰ÀñOÝFLX£Z¹>ïL™‡ËCîR¯×!WÔ]È-¬0×â\Lq(ô[T+׹ ‡+2¯rl@+Ws«‡+.í¾q¦3k~ÅáˆÌ/"߈ˆ8Œ˜u]ÔQ>õ¼U¯D"¡¹ž‡FKe~I½sEÁ5¿¢¤}e”H¯>pÆáˆȯaùïÆ'Us‚	^½LîŸw¤´ë¦¥ØË$×Ù`Jµo½‚5²úü—©׹ j®¨ÐˌCÍ\Ã~ùÕܪš+2ϵÄ]}â0¤>—Îs…MŸWì‡QR߈HßP‡è©L®ÒzCö•ƒduï„çzÁ1¹HúåÒþ‹k	á<**ô%Ò+"|>J䣤ù%ý0Lº/š¬£ÌzƒF/¢8„FKqñ«ÖüX=-`###&X®pՈïãgupÙ?ֱ^pÕéU-õÒʵó˜çõ_uR/­q¸ç®ƒ‚«^«^Ïz¹(|c—7ëâpïŸ,\z=}4kÖ\šóKúa5W€Á-ùȞ_\µj��úF@«^çÚƝöŽõaiÝkîË,}ŠYJ.ÍzÕH."½*%ÛÀõEpUŸýºkøÅw£]¿2ïÔÌÓü
ÿG¯¦9%WµäÚ÷¶j½jì\ÐK5W•_2æA~U®ZEٕê:JpU.à:JÃ%}=f®ƒ‚«^p¡·fѫžÈ7ž\UW˜òv&œ7›§Uû|–s–s¢iÿu´_6çl,çzu¤çËϑúF-Q֒Î7¤â=ën?¬fҋÙ7®€­‘ÿ2:©TêfÃ3âYM°5B°\"®µ‚k-×:½žwÂùÁÞ±¹ڹ¢“çûςeÁÊ\ë5rż+WžF®ˆ«×÷¼zmЮW,!¸ìz­љ_V®\í>8Ì÷æW¾öüŠڹòô²øáZ©QÊzã~­û—Å7î\ë4ëõà隆'ÿ=í¾~c(çבֽëI¹òY¸âpnnÎƕµO_QʵîÊůbkܦæ}ƒ½\m~‰ƒØuà‘\½\¹‚+Or¡OèūW®ÉKèäâ×ËÎ5:·ëwÑèµFrmЇùö8„ϫæZï¹þYơ{ákÀíÍN}y±W{=Ÿ«}àÃu?)×zÙW’öËyD\y¤\r.ú]R®\Ò8\ÏÄEªW>©o¬çÏ/ªùüZÒz#W^üZ҉/ñ‘HäfÃ3šPÁyÉu‘€«ÃÂÕAÀÕfáj×Êu¡µ+ùԡpÆݓ-øhlÁu‡F½ª>ž5—ƒ\•ñpµ»ˌÃ6m\/}ȩ×+y¸:.¬oò«ÌCR½ÀÕJà­Wóp8L Áþ%¸´×Õ½&ßh#ð
x„5	êyB.ÙñëEÀÕy5®áèMÏ5::ê«×üåwµ	_Á^®6ÅA,þw‡àž§v&¡×%Éuà#N½^ÑÉuÉÔËÈ/ô¢”zÁ7òËäzî}r?$à"ôCÄaßçyêöŽÎVÒó”v®vþþK/fW?ÿ¢ȯ6â8”\X—¸.vßè4æó>/罚ýÐÔk	ÿþEWGÑԇ„zµ^á’f_nÞjK&“YqEEà†,üîl_x6Ëm¶
°«Ìþ·˜Uq•X¸ŠÕèåÿ·²Ë-\¥qX¢=‡âÖO)%à²}Š™-Ë	¸ŠµëÕMÛ>¨ÌÂUDš_vŸ×ÅUv­ùEÀUJÀUdáÚA‡ÅöüRæó{øöåá1èŷ/ã“4N=è_÷ò÷)Eõ¼M¯»^ý×ù¿wÅ÷΄óÃ}Sðm\ßîËâвÔüt…\åV±äúžàR”_¥®r“kxLW…Ádr¡·Q‡®RS¯X:.ä’ê8ôá*½š^ù»旝«Üôù½Êíù¥J¯"W‰ÁEᇦ^EUSN29§ž˧ÿR[ŠUBpžR|s½Š˜û/B®2®bÒ9À›^¤¾QAÀÅêÚï°Ö~ý—öù¼ËîóL¾!Áît׀üÁÁÁl¿üÝw߽a`øÝY¾ðl&Ô,‚-wW·b®>0X¸Vàß)æêƒ]/Õ\ýYôê—?;44tÓr}ÕŰBÂö¹˦×2w…´èõË×.K&¬^wÙõRäòpõ¸k™O~õh‰ÃDŽ^"ïôѫGƒ^wýסkæÂ÷ú•ç—î}ÙÎÕíãË4q=ù†5WhÎ/|=áå4ãPèի˜«ß'—«âzÝâþqثeÿ‚^xåÐÓoŽ|y!½JÝ2¹”õ_’‹½¯¼SQ~!–L®n½V¸ŸZüNî3‰Ä|"7µõ•wZ.~-ÇÞ&={ŸÂ~Y2aÝir=¡k¹…kzÉõ¸®8DÍmlzõ›\=\=ˆC×2åzõùèÖn%\ðyëüÐ'{û¸Vظ|ÞÏ7ç׀×rpq¨)¿º|ò±ٛ»3
ü%:ÒÑÔV"¿üû/ÝçÖ~Ù2Ÿg8w°Ï•Õ„çD=Yâ°[9—öù!rßZϳŸÚ¾AÅÅï‡=йòËêþzõÜs`«ûHën©—	÷ñÃÎøø¸ÿv&ã;vÌ)**ºn@ø]øøÝ~_&ÖC’ÅX›pá™l\…Y¸6)æښ…«PW<_¬^&bù¦ի½£ÓÙ{dôÔü!Pv½Þ;7‡R¹²Åa®ã_X¹¶içúð¼•ë§ڹŽNڸ
´ï_ǿ´êµYµúûF¡»ü¸¶jÐëÏg­\µ×ïÚõڞ…k£âý«Pµúû†ú:ê}c_v먱—Þú×,\?ÓTkS®m·B_ÙÖr·fn:®±±1—YGɋRf>"–•ÄáƒG®BÅ\…’ÉX›M®ãz¸6۹¬qˆ=P‹ol‘LÆÚbr¡fQ¢WÉ‡¨1•èµY²è‹CßȵÅâq¸ÕäzûLRW¶8ÜäÑëK5zmϵÑã‡z|ãg~\O¼~ð닡1…u/Á|޿>TÞ/C¯Åö_)Ö+[ÿµ‘àü‹-Uϱý¹
¡zn†8|Pñ<ª@û<*k¿l_[sm#õÅ̱q§€á^Ê‚zƒªî5ýÐûöδ9Žëºû@=þϋ„ĢâØYÇ)G	B*ÇU΋¼I9/NdZ"EÉÖbK\¤-²CQv@ʌE„Šŝ	AÀf@€LçþÉFeª}ûtÏé¾=§§8U§J%bºû7çœÿ=÷Ü[}˔q¾ÒluuՒòsh^a֯9{ÙÉuJ2×ÚښŽkÀנpq¹†$s=xð@Ç5Âà‚ïEûëìèø¯T#Ë«ÏɅßHÊçÖ\Vw”Ԑ®~É\7g7tG0¸Då×
=WÁ‹üº>ƒ£+Yq8CõsâP˜¿tG¨ž—2ŠkD²¿.ÝÑr
Òþ’_^¾㪇å\’¹®Mƒ‹å¯ÁêÆKåûk îzÝxõDÊÂ
¬ç‡EÖQô<ZçË_#£sß~#Ÿc̐Î5èƅ1Íۆòâ6¶\6O>נ“ëêô†ô>@?¸4L¤¿®LÉòƒ«\Y¿“c¼p®!pé™b_ð|BqqµwI¾¿†á¯B¸à¯³òõÐ× +åûkØy¤jLòˋë´d¡¦cúk`“	oÈí:½ˆkI—‡(.ù}6:¿ä÷yzX‚ë)üùWü×õ„sq׉NÇp½²¿Duc(æë•ð'a§Jt?À0Ñg“ZG)Ñu󾸏ËàbêÆHǯaƸŒü*…ú°?\´nèક%ó¿xëÖ-œYl&<žÅ	•´Ÿù)«T–vráœÎ"ð:®”²\۔-\Òü•.À_Ë1ŠCp=ãƒ왘qUúàúSÄlþwÇÇÇEp!ÆԳ¼v"™¿›Væ'·Jͯ酜µãåL>,㓫Z*×Ý%-üåGk¤êÆ\2¿*¥úkfÑÕ_~t£JYF"םûVm§–«ÚnîzåWZ*×7÷ýWRÙVe~ô0#Ý@~ù­£R|ÝËU.ázÈ—«¤êü¬Þ_Ë>¹þDÙ"Á%B7¾õzzþ³ÿ›³ç_Û|ÖQIg}(eþ…gáÎ+_ùp¶/ÿhDø1 ”+MÌ+ó.k”m2mr!g¥ÎS–ÁEðlZ5r1f\ÕL°J×̢X®”O®­:.Ì}D÷7h&Xµ&¿¤è†[nÓpèâ0é亻$:¿*}pÁ_©¸é†®g”e$Æ!‘_54“>¿žíȠ†Ëå;ùµÝæ\GùэmàRG#Νütf^J}Hø+£ŒÝgÞï­ñɕŽ|P峘‰W
ù%¿¿j7¶Æ}^é’_ìþ†`®ŒüuXþ¸\‚ëzˆ-¿ë)é8里þ¼t=¤¹„ÕQºú0…µc®nڒ¸zXS¢uTuuc›O®”|ݠÇ/7¸Ž/[·oߦáÌCáœP°z­Õ긌¹v5KîWCŒ¸K”+Áà҈¢ŒÁëµ_Íàí/«Ê
ñW²Í%bÓWNYm\õÒü…†sýâè/—€üWâ@FǕˆ3×̢+W2¿\;cÄÕ.˜¾FM~IÃ]6Wç‹î¯]¯dè#9½-#®&ùõ†q=l”Æ5µ°á6~5ƹž—Ó_¶'=sòìD-7¿Î^œ²þá+E]´D~]º>¥«{}ÕQ¶fÖ;ý½sƚœߐִ5úàqãB w%ÎShúè6äì]™\õ4yÔÆøKb#AsÑGÕí/>—K~Õûd‚%t\˜Û	ԍ]Óêtq8³(3¿h:Á%TiúÈdžWWÀCÑ:ooB”¨‰ò«ÖÉ��àÚr¸þjxe©öüÅñbÝ!þý^ù\…ôÙvËïcó¹è>€Üú°FÁýy§ÕñçË6×ݐº®W#Ýhà÷çås	Òy~½ÁçÚN¬ëIâÊz(±?Osñõ0ñd?@¬tC¾¿øûm„Ët›‚kv\»‹ñz=Ü÷ÖA5ÓÒÚ>A\ð¸ÚcÀÕÆàêÔbҸ:ã̅WK†˜_íÒuãÄÈÄ÷éÅJ­µHŠÃÓîY_ýã#[\íR¸¾˜Ծa	ÖÉàj–…£¶빚\Ròëڴ«¿ÚÀ‹㸌#\¶w¸û+Ï\ŋëîþj&˜Äs]™rͯýŒ8l–ä¯u£MÃUŒ×C7°×~Iã×7۵\íq—‡Gpqòë“sW¾ޒ^·ßā1²(º{?ÿ³Œõùå[ëœzì¶5;›KR=¿ßÓÚ5‹çÈaIó¯všGkm.h-ü%´@3þB"‡ãÎժãº|G(ÍDéâÚ$©ÏÖæàaqÕv"Eqí#™äs!Ãâڧ㦇®—\¨eþ0‘ÙÇ.€«c“çoZ3ëØD/­ÏÆðW\úØí!õEQ«Iâگ,®}6Ìe	Iæâ×%ÊÕÊ犿nÄp\ò×SãW‰æWƒ«CÇ%lüê(QíÍÅϯ—ù\¢ë¨פìP¶ŠÃøëݷÑV¦¬pži™L&£b½pOT7y'Íu¨D¹Žè¸R©Tܹº‹ì/ü†W9ƒ«BÙQ×ÒÒRÜýuX¸¿ÊÐdbøëIºq¬ÿޢý–/KY²
W¹„üúàüCëϝÙø\bòëãëÖ_îÕru+£ãPð¸|rTq½DsÁâÇåí¯|óÉu°Ø\ÿñٺõzu9¸ü痀:êÄ’«‚`¢¸ºø‹Ì/¦v»><Á×C±õaŽöױãW“«ëô¢õku/!zXÎÑù†&÷«£—ò¯‡.&××ö._ùüÒXÒΑ2ÆÆ/Äîaçï„{|<וÉ^=ïàqpuë¸ÞÿÝC+Wüz¾¹ÂØø…œìÕp!—%̿ôqH2\ȯߋàêÀuH0×apùg¢uzˆ±R×!äW<´nÈá:.ЉàêÒ醮^&ò«Gã¯HÇ/ÌÍ)ÝÐp±â½†ѱÕèûQ´n‡ªŽJb=£ž7ÍÕå§/ª.£ûQ²úØGíüâ×ór×*J°?߀ëˆ`Ùù%¿?ϯ7h‹ÙzåAñë_ü8Æõd½u”ñ«[øzey	ŽËïÑCÁuԑÝpœé¯òØïsï¯øÇ!£¥3Öâ9lzzÚä«ÍpmÜCļˆA,j.¼’à:âÍÅöî],uäzþ2ÍÅðW²ÿ€Búz±òkjjÊd~½Y¬üš™™1ÉõŽ$ÝØÓ;×o76·Ø
An~-ם©¼uC¿é+üÕ[.“ñýÞ`ÐÙQe¹zŠ¡‡w).GÂ\GŠÆuԕ밓Ë6ñõŽ×ù—W®ƒˆCšI&׬·¿*˜L$Æ“q8½à™_†ôÐ(âàê	ȵ…ÐC‡fýõOGH®§Ãâ:ùé̼:^×Åo‰{=ÚñGÇÈñ‹¥óy‹̿Ð]û‡êžb±’®q¸³3¹¿ÐúP³xþ¦îÚ?è5˅kOé!Þ;üßӚyŠ?®B6ÀûÈíÈê^bQ¹™è¨׭¹hç)1˜`ÈÍ^
bºQLm	Àu¹q!·‹Äuþ"˜X›Ú`¨ݐÛú6¼ÍDú8Dí.	ýCЁàêÖë¼Q=Ä[mз1ÆEè†q÷àÚÂæÒèü߿‘±®^£ë^ó:ÿfÐüÂ&z}¶·7¹¿`ðõQ·ùWdëD²ŒàBì›ö—×Ó|.².1õ!ƒ««Dû؇®u‡Àu°¹ ‡ù\b×+·H]×+ÑuØ^ùþbËO— ×;¦âcKóë­¸zÖQ½!ìs詇ÁëÃ#ëÃc|Q\òë
¿›SÚu7ÀN³ùùy+›͆„kᚸ¶T§nç!sÇ^› ®}šzÜ`ìÄÕ’¿ʅqu„‡-B¸rÊ~Œg
‰«Սë޽{asášÝ`Æ!ÁOÐ_-/¿?[ÎY„ÕèFG±âphtjãË{ÒYÇ1Rap•S\sss¡ú×:tfMÿö—p¹ʢ—ï/ç¬7ÿ“äêtrxãrTº±ÎY¯ÿ֓«,+”k/á¯Pã\?ý„äÚ.>Íe2ö›5û˜[­µ˜‹Có\„¿Zã¨ipyÆaE(㗆ëÚõÖwÞÊàð‡Ê塇!Ž_íç/ŽϨññžómo(íZH‡Ëå‘_º͢Ì7dµêî.hò|ˆþ‚ïß:µæöv@؋º7Î1ߐµυ1ª¿À忾њ¾ûŕ›é¼ye9‡G³xÞNù+ÌüZT¿Ñáþ5•¿ãԼ²ŒÁã´r7}å'i땏™\üyeüÅgò•_ÈqÄaÔýŠ¸à¯N4\ó©H¹Z¸›ô4\-Êr:®óµ&£ÏÆÞtCèaäùÕ
Ýà0iüÕFä4,ºþ†Fç™\en:ÿõ–Œ55»PŒ~oEHþÚäJ_˜¸[äþa›39lö5^ÔÝCgãד>vô\!­;ì+Áþ<®Ñ*,¿Ââjĵ7Äu‡}õQGEÆu¿_çc­‡¡pEØ?Db-ÌÊßPW³²Ÿ+žë•û«5D=Ü•`½ÑQ¢ûm⯹ãr!€ە%Ýggg­••6¾‹k@Iûž
Ù¦¸r¹ܣï޽{—âJ+ÛiˆkٍϔÉdðŒ<.o¥”í2Àը,íå/.W:Ænh/5òWšòW.øÚG>k€«qœ‹_)Č®&e"ñ››ԍeä±qƒk»Mé>×wΟQϟRVo€+áå/ä~zøӏ“º…åee†¸–Méᅱuë¥÷Wݎᄥ•5€#d¶ZS\ê+£ãYk/͕Q¶[ψ¯NYÒ+¿p)e­—Þ#¹‡;Bf‚%Lqe7,ë¿nd­æV©
)Ѝ]â°^YÊD‚볛Yäµ!%©,aDç	=<6¼býîzÖZßàÅáïozæüÕ`€«1_7ÞþÍýÙüã}Z>\ÅoŽgdù\-Ðz¶Î㻉ýKÛº{"vCŸ©ÜÏ2üµž}̵çßU~ý„ÔæBóK]>ßtßÕsÙþBΟ¿Á÷×yZ7´ùe?kЍRˆ´Þ_¿X\øb±ì‡M¯.öٚÌÞÈFp-»øq­fÅáC‡Мæ¼ü:ܷ¨›§ԳxhKP\{ÁŌChèÅ[Y¯ùò2´‹ÏDpùõâ{«È}ø‹õñ9¯¬7ÀÕàÆõÕ<ݗÉùWÈL°]ÊRn\{¡ófý•D<\«W–¦tÞÎ/Sý(píâ31õPåW*ý ø|™ŽÄ.¾¿:>JEÙ?\0ä¯āgû¼úQøòW†Ê/Ÿukþeûˤnlgr1úlüùC7&ûØDÕ
C}Ñe©à}v±²»XëD†×SpAcSÆu#úüÚ¼Èä¢ë
}ÆøŏÃeü¶¸êÃ^×cp%éá²ÉõÊ"q%|¬ë™Ôù´!¯c¬W†]6Ò
Jç£ȯZ\Û&÷9øðW"j=Ä{½ÒÔ~›4]Š[¯¤uüîôˆCQó”B᪔
áFn666ö((á„G¯$ÛØØÀÃÃðßøø7ü
þßÁw)²ïý”!«V6àŅÞÉe´\ããã^\g”UäzFÙ0Ã_N.þ¿
æª™+…kЋ¯ø[XXpr!¿°#ÿƒþ¦üª6™_Ýprqt£OÙVƒ\۔ò˅XË×úÑo˜«Ư¿cˆ50ÀGàrÓ
/®+×nöýÕÞå*ïÅe¶UÌ/_ºñùå[kêH®•¼¦ù ²ƒ\Uˆ	Fzêá÷zl½«†Øà¯ÓlÝpÔÇÏ>´þõøëmŠ	vF™‡´ЍAn…ÏR&gݾ·ñhð—çZ/ürÕúې¸êaA:ŸÊd­ÔJîÑæ,f¦äpdӣ
ï*ýHùËW¿²­¡21êÞ÷Îe=30qTÞÊÚf‘ÿ\ø7Äáﮪ7óxr
(ÛÆgâս£—&¬¯Ø€ðŒ8~\ˆ5–œ¶¬þ{rqÙ\Þþ‚n×ùÏ/-©·dÝ×=žZÐ=øÐúôZ֚P‹éÇqøPÙBúq~SÿvdqèK7†Mpå]±0äz›Zp܎CøfÓ_`ƒn€õÜլÕ;¬¸”o¿ÖìɅ{Vk¹‚oü‚áÚÃ$—‡à‚O&l.lª±u9gÇ!¸|éƐN78¿®~/!gðÌ؀-*!‘b);¿ðoÇýçW¿+üXóæôòòëxž¦WAô8Á.ø²gè¡õoŠ믛3ºÍ.‹¸|s™3ÿbl¨ñòžñ»]iÂy;¿ øäûÿ¶9.oêüÈÅij^Yeˆ	V./Áð×&X4™_›zøÉèZ!óÊJƒ\ÈÝA?z_ ¦Øäجåp|=¯¤ç_|&š«ßO~yì/Kº¶žÓֽºù‡Ûø<žVéG70ÖN̦´u¯ÍÅñWŸ‰¯‡ßz=SpÿsOYâƒk@Y.¾¿¾¬6·~1¾Hõl.ô‚ú뤲ÿoŠšę/;úQœþáᯠ¿`Ф!WÀþü°²ê\~úQ#>¹ˆ~ƒ‹ÔÃPú6ÃaõEé~/¿Þ`r
èGùÑÃjÃýÞàþ’·þµÕCQ;˜Y×3Ÿ_§CøŸ\ƒp	Ò?dr6œ_•Eҍ~ÃëzÕAû½Bõ°
÷ðÐ
Խ¤¿ãt£Fˆ²׉4vÊp‚«¯€8³Žª1<.Â\¯ÔÆ!Öùu”=TÏKØç@ë†H=×®nȯBãû*ºç•ÝÁM
Û܋óª9†•Ù;'#ຍ{±^yÈ÷×툸êÀ¡¿¢ˆCÄDC„\Ï*»a~EŅ{MDÀ5®lw„\¸׭ˆò÷*P7¦#àšØôgq™uCÙU“LÿøóûX¸¹­ì9eQp!ÂÖùcýó͂ƴ.Xx:œ«þ€ç‚9üÕää",(W²©B9Î^œ¢9¸\&‚Ë׸üöo—|1\uÊÊ#ŠÃÝàâǗo›T–ˆP7šòóë‡Ý÷ÏgÐڄ²ÝQqý ë^­ºÞ
:Ò
˲ÜLwSƒ²©¸î({ÞO~á9}˜×QLϳ¸øºQÆe!xtþªÃ=#âjTVN°„µQ\Ï!§Msýó¡ù˜ó/îQgM&üõ±¥qǘ1ř§8­1áuW¯yÍSꕕGÃÅϯ¿»Ìé۔`ÒéaC!\ï
͛êÛ0xøþ›ͮ\k^Ù.ƒk·²É|–¿¾?n¨ð\„\õª–ú(Š>€†ËÄF"X¹­½·ãÐg£Çpíü+
®)Vžï/Ük*
®ˆû½ÏE´î€OcÄýù‰ˆú¢MrÕGµþeª-@7ê"äjzÂ0¿¢׍iùã²Ü8ŒxÝ|wD:?1Wcdùýzåxõ|„ù«‹h\¾¬ìوëɈô°Q~½_/—˜ÎOrýðKʾ­ì¦ ›öµ¿‘`üowg÷ÓFv†qÍ8"Îҋ%$€¶wëð‘ô®—{™®iaHúѿ ª´m¥VZ){l’ÛJ­ԋ®*µ‹Ph·jÕnˆZƒ
&vRb°©ԘúTz*½…5“3‡sÌÅOZm„w~<ïyçÌ{fIð@Yƒ×ð
y%d¦J`$
xg^%
^+`ÒP^çÀ
^¾|¦
¯"óê1Ô7Æ5åµÌßÙCyÝKgq}iê‡KþV¹yRû‹6!X#qÕáÿ¾5×ø†e0q"/÷}Y%¯©ìîz„Y~/×ú‹’ן—žòº;±F¯žÓt"ɓxýü·¯øÍx‘(²/¨ÃóoÛ~õu¥ÎkS¡D¯ó¦úÆJ©\ýIì/ß,ƒÉSô’Ÿw\gÍÅL‰^Ê}ã^.J”4x­?ÂúŠóE©àXÕàU‡óÒüâ—ôšeMu_ü’^šòz̗)z€BˆŒ\_+qùàÛëè¯{Jûy:)ÐC¯e—?~õìù1s€	C^I0µþèÁëý>ùôRpRªÃvrùüËú^å¼Ô}Â}ƒy	>üÕëç1</{ ç4Èyàs}íÿei­óó²ǼNՋ¿Ëïǚæ½a/õ‰ԟ—U)³oÄæÁ/ÉzQS^7
æåk:w(ÏÈ\”^šê°ȵ{ÎÄüPó¹Äy¨ξᙘ‹Š~X<cçD=\_kš¼Ƙ×YZ_ËÏS’¬ÃòëI®%M}Þ3x®çk:×{n¼/{:ÏÍ
žWNjêó+`ÊÔ{ë°Ì:4µò4y•LÃÊó/÷¯¤Õ÷eûø¾A%f@SA¦ÉÏH‰7zMâ€+ 6¼¶@\³Èk¤V‚WààXàå‚Ñòj°G,ñr„WCÁk“Ÿ1bYfA]=/kêÐáµäúÆU‹¼†ÁPSÌ+K/֡q¾
>U¬ÃóJEªëì‡C¬ÃM•¾qýÓí_à:SÀ5ì&ûF&ª׏gyqÀTip8Q½ˆŽ¼‚N}þ˿W¾éŜ
£—kØIze޶ßøð—;'ýv©&¸®ÙR‡b}mÜþÝÆ"¯3*uæ5“Nâ›F®€i°هðg0"½”֙ÂËRô&‚×&ȂÑu¨ëå"é5£èU™wôŠË%ì•Å:l°Ï/ýÙtÎ+§âŬs\_n.ÒGÁ+«X‡ÏÀæåDpÑòò½†•½¸ßøÍ|-¥¶Ÿ§“:½Pêóɯëóâ9%Ë{¡k—+¼š<ðWË?9n¾!æ6ŽI'âp­ß;.¯ß?¬>9áœ-ÃÀ5è#óÁÿûáÇwZó
ó¨aà˜t"ÎØt+Å9[]qn“µln3Ä93¼FéeÓüpSqn“ÓèÅ{]$¯aÖa#†yTʲ¼2 ¦X‡3ü,çŒÕá0jټ7[Š^wÁ‹¼†cÈkƒŸ1dQ^÷A3†¾1dQ߸Ó9Q`‰—<'º§ºß`^#Õáq̱ANî{- Ãý«γ‹÷-ð‘ë+«¸ߨq9lÑù×59Ç~G^€œ…ç•÷饾Ÿ·§oŒ¨ö
ÖpÎ/öyæÕP¬ÃqkK1ì{Ó`Ô澡°?LÅá·d‚7 [¼ÈEðìòâ۠Vùg9p‹?“Ѐzx—ǍUTÀKzЫ
æØ§ø36{¹àð¹Xéµ#
®Åôš5<¯÷˜Á4ȃ5ºìÑk¬Ó9#ò²Ù+ú¹fðÙȼvèµzõ[î岦<ö„yzµÀ½^óß-Šõ5]T‡³Ìæßtڧã:È3/ôuI?ô™Å^…úFEæÕ%ux™ךyK?lƒ&ï_sÌÔãÏ8–{
‚I‘W•=ðˆ¼d†Q‡ƒÀUzaC?u8'ûiÑköþžÂo]	/¢3¯>p¤ÙVéÒþúk/ñßÞE°î‚	z96:ôr}`á»?{õ'¾œñìƒXs `^}Àæ:t˜k\â7=d™É
¨Óëˆ^50r`ôÓË
§ce{é•f&Oér@¯—ôzD÷)pIÅKӋ_’×ʯù!¨‚]pDvÀ:³̈¾¡î¥ïå"‚Iz:Èë?<\_³à3öÞSòQy顗Ü㵯ѫ
öøÏþYš¿ƒ‹À՝.kjÜyæµÃ<ý°À~è3cWÕEƒ\_ýÌ+Ã5T^mÖa̳Ç:ܿL½ø%qC}cýp[ô¨Ò+<p9œ—‘¤:÷CäxíUº2¯óúLÿ h~Ä=ŠÜ÷Úèõ>ø>{BžuØbÏ8úÎOwóÿ œ§WÂF'áÕÆAW.üuý1÷ò{âù+ÒÜs]®…>²Ï÷Ÿÿë#>[}ÁlZt:s¶y󨄥Nò¹ÒÏ)Uº‘m>»,ˆçeëçl¼Æ1ð(0¯-Ðó¨
½2|¦ég^¶?/û ókPÎÙòà6ӝ—Ø÷ªx]äšI³çUÄú’óùYpuØ+ú¼­ô‚	Öá,¶À9ͱ»c.Êyë04ïÝeßxH¯›¢ÚìÕO¯,xjáózͱV}fìvÜM̱««ÍC͒èó~—ÌEûÄÜfNôÃ}®±(Ó+蒾á€~����Ê~˜g?¼	úºàœh@ä5+ò:¯/¹ßè’û²º/o·’}¾KΗ§™É*h‚¶˜ÏWÄy¥ϟq»¨Ï/ÒAî{_1CÙm?OI€>Q‡yÙéµ+¼ö÷¬÷
åŵô:|_Vxþ2]‡Á1û¨±
-.yN¹,¼C^rß+ï_»à¼r@œW˜ìò¹ò6¸¾eûúy…ç²ÏÓ+­ë|ù¿/àQKÃ9!IEND®B`‚‰PNG


IHDR66ŒEjÝIDATx^íÕ/«ÂPÆq¢q6áÍF_ÄêŠÌ“Í`|{F­7Þ«á‚,6bñˆ Ÿð»p¸è@Üaœ㳇'ƒ/²™ãADDôaš‹FBˆà[DòYÞ֨V žXA`[T®ä
][¢êpÓÖЁšhÃR‹»A˖¸D͠ô ¾c-îe[âúð•_€_-nèÒ[3ÔÂæ.…ùZØ޵ÿ:õ‡a{ïÁTJ¶rO?˰	(C&Y†
†z>ô¸cÆð
üÀQÎWÂbPš©+aGPš1ž±Nr®ò­èdÃư
(C6Y†õ†õ²ó`»ƒvrOï…"""""w;B ‡IEND®B`‚‰PNG


IHDR66ŒEjÝIDATx^íԡjÃPÆñÊ&[7˜Hõä"¶~j”™ª¸ˆ¹BŸ o0¹ÚÉUÔNªjâb¶B!äöGÑJ½ýü¸qáO8×ãݘIòڇ1,àK,ä[ß֨b0'ÄØB%M*m‰z†Z$0…'ñ;WË-q3‰úá‘ø{øTqð`KÜ;<6ÄßÁFÅÍ]z5Ç*lëRØ@…ýz.
3cØe;ò˜+ÉäÎA—aK0-YvV¶V:µ:îÆÃÆ0†!܇o(äô]	[Q֮„`”=ÿ˜;¶‚9G|cÖ‚iIÚeXÔbXÔeXf_1(—;{gq{ŸQêKٴWIEND®B`‚‰PNG


IHDR66ŒEjÝIDATx^íÕ/‹AÆñ[X¼¸×ƒ—/ú"¶yv³å’Í`|¾£V£Äf.YlÅâXq|ÂOdĆŸ…û[¾,³ûKˆˆèÍüN«!Ԡ#ѓ{¡«Q1,Ae‘YìZTΠ‘gš®DUࢬà~DÚüuWâ:5ƒ¯Œù'´¸=]‰kCé|s-®ëÓW³¦…ýûia;ßþuê†a{íŒôa*'Ù3²6eÈÐfXj0,õê|èqoÆ0†1ó2Œá kٗ°”fâKØá.ìÄ7æÀKà(ë7¿Š^†1Œa[ƒ2dm3¬e0¬e3,€lsÚʞÁDDDDD¼®Tvôd¿©ŠIEND®B`‚‰PNG


IHDR$$ᘘ4IDATxíØAŠÂ0€áb՝÷³›Û(ºpQð."â	,Vðƒ0ǐžd†6õºyó/ºNšš&2øv]üÔÐä½׿_?Ÿc,‘£€£¡PàˆFˆlØ<<Å7HK5vH\­¡ •H]Å8CÉw
Šñ
q삸KÐғ“mÐҳ´mÐÊCP‰¤MÐb)jˆ¥­)hŒ›Ǡ#]Ðâ-˜ë‚òA™.¨tÕ©A•.è èþÊA¯ÿ“ϴ›ú è Zš™ŽŽÚãRšםǠM›Ó>A	éÙ/&æ  õ´²½Âæ=Æd]/ùˆc_<3¿™‹A1Eùä^¹¥l-¿S
LºÒf#̑áŠ
÷F…+˜aèàφÞAfó÷æÒ66`«IEND®B`‚‰PNG


IHDR&$åõH¥ÉIDATx^í˜1kAFÏ>Xˆ„T!6A‹üA4>$•D	66¦°H%Xi´ð'<¬lK+е¥ØHФT+M²s?araÖÙÙADsaÞLqçî7¶’ÄßXàŸ;;‚–‡—`‘ñê0º÷ðî3dHbbæÊA+×oÝX<=wÆw$@H)ùm ±µ¹}áɣ§ȬCv°ƀsSSÇøöõ3‘
$”¨9uü(Àù‰™Eªªû7/^‹ã[Xºz«kƭ/ß3fm£ÕÇÏsÆV–ïÜ^8qò¸™h‹Ö…ˆÆlßêÜü`Hò3	ä{•	0,ì²ýéÃpmí@ìÒÌì,„ ]‡ ‚ˆ¤„Ì ʌ*‚`æpf Ãâªz‡éÉÀ|W*€jdµ›qˆ”€(‘á0†,ÚÚß÷UõÏt!f	HËRlâpU„s‡lö}mïY(§Ò
tYrU„“Àï 3±•ÁHFd‰±’%!ìHÈ!({e0\qْ9@jɁ2°ÌÊ`Ð6栢j5VáR'l³guÌGb!c©4?ÏÁz±ŒE€œ¥rÒÔk&5D¸~ÆB„ò夥ç©%9¤'×{Á̚§²PHÚx#m'×íö徱µä@ý¯ZV彤~`•–IZ7l_K¾FÐ2˜#Œs-dƮ8‡·>£Œn|d=“V´”û7)‚yRòvҤ•-9PbÌû¼cWHZ™¥PYc’z¾cÍJI˂È
–ð3¨×(ƒ_Idz¤¬1HF	E0#ìv Þd4¥é}ä–B
ږ eIõ^dúÀÞnm~NON ½ï :6´äÂ
nÉ‹@ÜRjEQ–HkëK
ð¦l´¾ޜù³õ‘©ÿö3Ô!Ø!Ø/·†aqZ¥eŒIEND®B`‚‰PNG


IHDR&$åõH¥<IDATx^í˜1‹A€¿÷&*X*æ@üb}ۈ¥¿@=ÁÂ"…µ"xZyÈAÁß`og
ÁRá¼DÐCÅdž›daqÙÝS3Í7o2_ޛ	33ã_lJ†¶ˁõ½W› Ѝ‚–��¼{ëÁ0
ö×^Ã÷o?m3‹PbNeë¯$0X»z¾X9ѯJ‹ sÖ􅭷[œG.Æ_=•ëWÎڵë—}Á$¢ؔ¤1bÑG`c}“›ŸKSÆ|‘ß*˻7¯ÿè‹yY]¬ƒ‹ÎÇOž‚ÐóôÏh*(óØTAÔç«ô¬I"SàsS( œ>w	Døð~»xxçMbÅÑѸ·á`åÃE•Éâ@€*VRQ—ÑDñy/­‹c‹²ƒàØJ hÃÆ_‰?¾!i‡[’±˜$\ÎãDœ.írÖ$§ 6G£Xœ€ŒqFJZI«ÆõÄc³ê¸–XíÓ.†EbŒyå蒱‰g,«\«˜Ëd–£UÌSŸ[®SÆòËѡ”qÉ/Gç=–_®],«œ³UÌ7cN¹®³ÌrÖéTºP&9§uý³l™“)÷QʬrÝK3ÊÑ1c
°l™ëž1ðóʽÖ=6þND ææR_‘°¸­úm¶Ê%M­¹	 6nm¯ö|ù€¨TރÕw"PRƒVß!̩‰³ùQõ1U
‡ØÙý0j>{¹°JÞ6†ÿíßPK±¥ØOù¼N9@¶!IEND®B`‚‰PNG


IHDR  Ùs²ßIDATxÚí”1AQ†”$ÿ@e1(ƒ_ôìFØL&¦»˜øƒ,”é¨K§¯®NǵéöN§Îót¾÷«£ô‰ÿ'4!)VhŽ”Â	’,Ñ~¿$ðÐ&k» F1€/¾!cô¹Ñxœ™7dítýkWê|Gξ…Ž¹z¡æ3øž<ÊU 9Se(Î
/Ü>BO ‰Ëjí%Ёœ(£\1óp9Œr˜êdn¹ûÉ¿Ò@¹¤bŽæNN H0¥ý	'ú#A O‚~Ä›«IEND®B`‚‰PNG


IHDR¸_•TIDATxc¨ê¯bªb@@†ªÿUk«8Q€ðX•’ުR@áë*¨~«
‚ àߪ|tT-h†Z"z»JÙÚãU¢xœ>¡ŠÙsQäm,‚ã uIEND®B`‚‰PNG


IHDR
BÆ*+IDATxڅÊ1¡ns
Àà±RÓ>¦²Yhš…f¡=…F¡Yl–…£zb§‡h5IEND®B`‚‰PNG


IHDRµú7ê—IDATx^eϱ	A…á	ׁ\d
`t` ‚¡©}˜Zƒ‘‘ù¯؁ Êʀ0î[&›ÿKž#vtÈnÌ¡ÈG
':ËW
û%.ˆå‹‰ë$–$ŒÔ9@MÎÜ2“ IfbûËæùµaí"Ïo'¾{ƪ&ž…Xþ“&;—*;9ˆ)ž™+r§A"·· G_¦;
‡Ç3IEND®B`‚‰PNG


IHDR  szzôÎIDATx^í–ËJÃPEc+âÈ߲MÚ$jšæÕWúÒTQ|WŠŠ¢B"ˆ8qàÄorêøº­·ѦÉà'l¸d²Öeç$G`Œýkb&ÙùLd¤LVȋR9q<OV€ç”¼|VÔ
ÌΞDÒ®Êò•U4˜[­ù1q†Ä.$àð[Ë0X£æ²åfËOKlÑpxZ••þ0|¥ÕöâŸÝJ•éš֡àð{Û0ƒð Àè+|zAVÇÁQÁ!*P­€”göán=Þ)^BWÔ۴Bá¨ãÜâpº1|ð×ø5àÞTå‡ð¹EE}sÆÃï,#§À͟ËbÍpxӐÂTp8•€œ˥Ðé:çà üðtœ¦‚ŠSzçó´MV¶.êáð$ʎ³&P²l†±<ITÀÐõ4fû&dæ*â?Zï
Gߗ1%è0^‰‹ôèؗD€D/Z‚~#
HvC‚V` ®G1$(‚æ—ÄA”D"‰”Ø%áBB×
«TQÛ#V²5}‰v#
—ЋžDgh)ÝÀ3ê(Z·^G6q¦ڈ’ÏDà}ï’Ô֏îIEND®B`‚‰PNG


IHDR  Ùs²=IDATx^ÍÔÍJÃ@†áÓFĕ·’I2tÚÚÄxKâUÿb¥¨(Š t!‚ˆn¼&·®­ã”æÄÅݔoý>00ânîÿ×)
a¡Èÿ ÑyÂ	G…™ëkÃéx†£}ùáŒsÎ-±SPžÙ|m¼œ{œô1Àåm›;`¯ÆԂ~*çé±!õ‹ȇ†"°yüZγ‹I®0 XŠßD~cš,Çï"¿w9?wÊù¨ݴ9„Mó™ÙØæmÏæ  iå#Ÿ«ÜÄ6ǁîá,Ða}Z©奷?„ûÿ…ÂEšL#»ª(à;â²B€€#(VpDzV!Àф8‘âH ˆƒY"YGIìNOÚúIô¿êV‹`@½ÍÞ6p‘€Í!ð0Ûf«5Ø?íIEND®B`‚‰PNG


IHDR  Ùs²IDATx^ÕÕ=KÄ@…ᛍˆ•urÈ]gýâQ¿âʢ¢(‚°…"66þ&[ë1†ƒn.sµQNý>0ÃÀHüåþP|³r\6ŏ'U¬"7ÀüBch§;~ ÃõG¾ܮ#6}@Ž)sUírÜ2ç¶çs¸7ùççñ¨q4›OT’æOÃ~~ª‚d`Ï&¿ÔR$‹x1ùM—§x0ùTmž
”}ëåwš3O K¯_ù(ÇÌÀ^ˆ8r¥h®ðý£q…@4ç–p$Î,‘0±„ ql	@âЀľ%‰ÝY¢Zq$¶>ÕÔ#X¢îòuÏ%Zb-lèÿøý{ç¨Iyåþù¥IEND®B`‚‰PNG


IHDR  Ùs²ÜIDATx^íս
ƒ0…Q&1ˆ¥Œ…á.¼°Hˆ7p
É8‘¨È{øGtQô•ÈGn|ÉÜÉ~	>=&ܱÀà†=ÊÝw/ 0ÀÂ}e1@Ä5ÜAuh±ÂyZÑú€9ÎÕ Èåù\Ɂl‹ŠrØhÀ"§€„KHR`Lf
höú[ÐX’€'’h
LIÀL™H
°Üa±(¸=Pр:÷˜ȏö :󜷺à t¡Ik¼“ÖčªbGU‘Q
κÆë“Æä›õÿ¿ñ
‘~«ê}†IEND®B`‚‰PNG


IHDR  Ùs²ÜIDATx^íս
ƒ0…Q&1ˆYîƀÂ,¼°Hˆ7p
É8‘¨È{øGtQô•ÈGn|ÉÜÉ~	>=&ܱÀà†=ÊÝw/ 0ÀÂ}e1@Ä5ÜAuh±ÂyZÑú€9ÎÕ Èåù\Ɂl‹ŠrØhÀ"§€„KHR`Lf
höú[ÐX’€'’h
LIÀL™H
°Üa±(¸=Pр:÷˜ȏö :󜷺à t¡Ik¼“ÖčªbGU‘Q
κÆë“Æä›õÿ¿ñ
ŸåœK+áIEND®B`‚‰PNG


IHDR  Ùs²ÙIDATx^íÕÁ
‚0Fq&ò–e!í
Â"`7¨5)õÀP)m¸󎤿ôҏÂï엖AÏ'–WzX|%~Že
pÄâW²·€–	i¢y\4k@‰Å'd)ÃÀY(æ¡C@…K•>#%k0Jë“€‘À3xQ`²#!% ²%:Dµ
t2 ÷=¦ÕÚ4{žó\·9(Ý֤¢“vJUU-FusÖ
oÞ†جÿÿ&™5iÕWIEND®B`‚‰PNG


IHDR  szzô’IDATx^íÔË
@…áy;·Üv¤Ȇ¼ÿ³’’F͡©YüÛñ%1ó¯]Ȓô±"˩.+nëÆ$¹õ §¡ëy'“äÖ+!&9°-«E‚ðÀù
â®Ï~Cywúü ‹§ O@Ž@´‹[BíâÅš@‹§´xúƒãQüZvÐùŠ&”IEND®B`‚‰PNG


IHDR  Ùs²lIDATxÚݕ±	À@µÿáxtã.:m0ô„@b®¿FB=äS‚ãƂ•X!*‚	Y§@Ù؝Þœ÷z}D ×Gúts½¾í{}¿)Q®o\Ÿ<Ï8×@ǨhIFqûIEND®B`‚‰PNG


IHDR  Ùs²hIDATx^ݕ1
Àó£RÄÉeÿÿ’E„H)´rû-9â!‰J ÑN`@áqøbÀà‰ùŒÐ'èy_0ª¯Ðõ5~º­‚Z߰ÄZßoJÖWÖWa§Û,Xp®7> ¿âÍù‘{IEND®B`‚‰PNG


IHDR  Ùs²`IDATx^ݕA
€}F"ôÿ?Ú9aa$‚’¹ÏÁÐê!Ÿ7¼Bà•€Ђ¬«a٘ÎءÍû^Ÿàú„€O·Z–4cã%âú”קn@§Û,Xð\/$…ÒYmEªIEND®B`‚‰PNG


IHDRØ”IDATxÚíÔ;€ PîEäFo2‡µÐhc#ÖXã§ѝ¸*&vf+&¼@–‰/ë‡O!rh‘ÁPeKê‘ë°G\*À	æ¶|Ða…¸Sb-QwH¬y¢£‘Ñ!Qɮ QÁn!Óie	×ûd«̦§Í!–rV°„PKF´֡Œ©×a‰Ýé³ê0¢ø?«¯á
ú‚úú\IEND®B`‚‰PNG


IHDRØCIDATx^Õ1nÂ@…á1t¸š4  œK8©q
¸Áà*‰8Ä4„˜X¢•+§ˆõd{ÍB¢×Î'Ïڳc£™€˜%	99	+b‚f]u˜“R¸!eNçq ðä(
¾p¦ð‡3q¾’ø’óV…S¾n崄tu¶
CÆì°c̀ÎÚý…s<`!ÛÛbCÕ-0# |ÂD›ÌxL	Œg
%!lP1B
åÙX:m‰Š¹í/O!‡ºLÙ™ˆC]¦dFNá¥=±jòÛ0l‡ÿnÕ÷rzþ—³ºÆüŸÃ1ÿÔGnRg
:KéÆBpPeԇÜèòUÂwúŒZ¯Ո>%;–×
#âò‡‹UWÇìîÕ1Óê½Üñ´&¨D½ìHä[ȧVtò,dá˜5{ý��”5›6ÙìnâIEND®B`‚‰PNG


IHDRØBIDATx^Õ1nÂ@†Ñ1t¸š4FA8—0©q
ø.\%g€˜†psKt¡ÚjSFìʻN¢¿'ÏڳcÁOBR’ƒ¡¦dEAâ׹¨Ü
ېŠ9Ì8`#95ÁgÎؖœ)|ø‚Q‹áõNøRЖ“ìêÙ6±ó;FØèY»?p®BÊÖa[Ra¨uDH¨>!J}&<*¬H„)VS’zT)%V3–n[Uæ·ÏRøhYvB
Ñ ³ԂÁFi¯YL;Lð¿­Æ^N/þrV!ÿ¡èµ
€;rc—yt¬¬¢#…‡ùtà¹Ðåó
ßè“5^«Œ>ïWv¼]+!ç򇋜߯ŽٯWÇLW‡Òö§^®́BÎ1ʎ䱅|jD§ÈBV\°f¯¿€=k
EšorùÅW˓IEND®B`‚‰PNG


IHDRØ”IDATxÚíÔ;€ PîEäFo2‡µÐhc#ÖXã§ѝ¸*&vf+&¼@–‰/ë‡O!rh‘ÁPeKê‘ë°G\*À	æ¶|Ða…¸Sb-QwH¬y¢£‘Ñ!Qɮ QÁn!Óie	×ûd«̦§Í!–rV°„PKF´֡Œ©×a‰Ýé³ê0¢ø?«¯á
ú‚úú\IEND®B`‚‰PNG


IHDRØCIDATx^Õ1nÂ@…á1t¸š4  œK8©q
¸Áà*‰8Ä4„˜X¢•+§ˆõd{ÍB¢×Î'Ïڳc£™€˜%	99	+b‚f]u˜“R¸!eNçq ðä(
¾p¦ð‡3q¾’ø’óV…S¾n崄tu¶
CÆì°c̀ÎÚý…s<`!ÛÛbCÕ-0# |ÂD›ÌxL	Œg
%!lP1B
åÙX:m‰Š¹í/O!‡ºLÙ™ˆC]¦dFNá¥=±jòÛ0l‡ÿnÕ÷rzþ—³ºÆüŸÃ1ÿÔGnRg
:KéÆBpPeԇÜèòUÂwúŒZ¯Ո>%;–×
#âò‡‹UWÇìîÕ1Óê½Üñ´&¨D½ìHä[ȧVtò,dá˜5{ý��”5›6ÙìnâIEND®B`‚‰PNG


IHDRØBIDATx^Õ1nÂ@†Ñ1t¸š4FA8—0©q
ø.\%g€˜†psKt¡ÚjSFìʻN¢¿'ÏڳcÁOBR’ƒ¡¦dEAâ׹¨Ü
ېŠ9Ì8`#95ÁgÎؖœ)|ø‚Q‹áõNøRЖ“ìêÙ6±ó;FØèY»?p®BÊÖa[Ra¨uDH¨>!J}&<*¬H„)VS’zT)%V3–n[Uæ·ÏRøhYvB
Ñ ³ԂÁFi¯YL;Lð¿­Æ^N/þrV!ÿ¡èµ
€;rc—yt¬¬¢#…‡ùtà¹Ðåó
ßè“5^«Œ>ïWv¼]+!ç򇋜߯ŽٯWÇLW‡Òö§^®́BÎ1ʎ䱅|jD§ÈBV\°f¯¿€=k
EšorùÅW˓IEND®B`‚‰PNG


IHDR  szzôøIDATx^Ŗ;oÔ@…‘h+ @‚‰‰ŸØõzý^gŸïG‰††¥¦æPPÒ
„.%TTHxW );œ#1XÆöØÅюfÖ÷;º¾÷Ž5!ĩ*·ËEÄ™T-W®A·ôre3—<¨Õôj`ÕÌ/Ðg¬mìe‚ת†ïÚö±ç¸Ï>Ëc€p­îù‹n»#º­¶¨»ÞG{ipÓ0ü/ÿìwºbØë‹f°+r€s­×îœìM¦‚¢	ì¥Âwõ|FìOgFòe1lmÐë/f{‚ÂZ`O	>_¶m,žKx‡s¤ü
‚­¥ñ`(χ³øÏv|
x§ÙÚ!3‹ÝÀw\ÛY6‚€©³ñDH\sÏw½{¸—Ïb€-³…j}ҨbÐí1uF°³¨æjðt„k¶i=n7šL3AFá<›£¢àé˜vV»ƒB“á(
Îÿ&Á_IxfèësèÙ÷£Á0¼ZÑ%üø7\ÖÇ	Úô*™
pª9¦¥£×(7œbö°Wɀ¡ëÚê …à‹s¤b€5¼û·H_!8%'¥’ǜÿ„€QøýÜM‚Ÿ™”¦u>«¶ž†ÁòÐÂpŠkÙ
L8¸(\P|FMë´Zûèߕ:¼¸Þ÷울Œ¬
/n€s—Áü•pG^ÌÀ#TåŽ@®l1쭬6¥¢p)fÍsÜ…‡G§!
ù;Š{†¸;Èì…$n€G'(³@ÌÄm¾Ž3ÿ…y!ℸ˜B	ñ}ƈƒÓ=¯ÔC<XÂHÕðUô/1†’¢báF‡¸LJ¾ëòk˜º˜$U©p£æ8gÅ1ýõ'œ­òà仸þ*.G4¯é0ɢ:#îñ,¦õ&.Ÿ¿ᯣpʄÐ
ÔÄ"ZéÜãYÞ`=„¯è٧qpŠfÐF¼)¯øf—Ђkîå-Âÿª_+sHÀĹðIEND®B`‚‰PNG


IHDR  Ùs²IDATx^¥ԽkAÇñ'‰˜J-m…¹yÙٽÛ×ۙ³±JTüDÁÆƳ¶ö°°´ÑTi4v)­;­,¬ïœw»{7ŒçÌN@ù՟ï¾0 tþiÈr¬{Ømþ•a{ÄÁÙ-q"é	0ˆÆ¦}¢Þý•c1z²™BY%¸ƒ¨ªe¾7O8ÀE/_ś-r
£·żô1zÏ“M›'[ŽYc÷Ť‡9J¬3Œ²¿ù'à
þ¼Æ%*4SX# NíàY‚ýkÞö€uðŽÎ÷c,Oã¯5·ôL÷CëÓOŠ&,géå†ÛÁõÌϫ•Ø}Ðp;@!zÚ÷ó&Ð;fîƒøôpN‘»²ÏJóGK~Cs³ƒ³Î@ùGµä±ÅÍ
k-ìXù¸	´}BzWN½Ü`Az±çãþVaVó}÷L„ØÜl¸ëMÀpO ¼Gì€Å[Wbüƒß![äœýö¼ÜÜc8æT,þ}0jŸªVŽŠQ2â&`¸ByTlçpúbЁ^¥Û!çWÀßãË+Íâhµà§@³`J¡co`—ºÓÞëø°@³ø·ÄÕlÁßh^’]9Öÿ]Ž“]_ò'ê[ùBózBÈv䁚¨±<ÈvBð|Âÿí7 Gµ¯%ԛ‹IEND®B`‚‰PNG


IHDR  szzô/IDATx^ŗËKTQǯ)®ªEPÛ ¦q|ŽãÌh¦ŽŽ©m´¤?!
ڴÉ֭ûz˜ÙCÀ¦A¥=­ÔÒ^šA‹VA£zúüÄ7Ñã=נÅ.çÜ9Ÿïý=î”ò¬SŁ5I3Z#m(y&H÷e€:ç£Áý—ã9ßÐW®YódàB4ØÜUš½^–«.År:}èÜ(ϛz\VaÅõçs%;Œp1x1l¾½+ÿ÷³šb5”Œ¨»•ʗžÚyRžoˆ©õ±¬­
ï>TQüNô´&ì/¥!çE²xzrO\‰¸V¬y†lˆ«±ºhϽÊÂL+Î&rØBȇk#óÿ„^í.Q7ËóFÙ;Î=™«ÁßïOe	؃ҾV–;Ý[Q $‡ïê£_Ð{®	§êޙw”úpÃ÷™à"/OA~Û<˜Ð)ɽ~z$‡KQµ‡bô÷làj<Ôz¿ªP½&̀4Ô
—´ôU8´•sàÞp`…¢ƀsÈZàw4ܳB¹Žžá Køì"\×ÇÜÃDÑÖ.ºÄÊ@Gi¨^—|û†‹F‰ëGx ;ÔI jÒ'\KŠ–î§;ìûZÍ7\K"(oJÌÚà=ÿÅ} u ðcKà{Mp‘~S’ÒõVڀ†3<¬àZ2x(Â4+Š~1 á¬ù‚kÖ]0(:ø¶.:£áÈ\è´4 Mlv­ÙÂ×n`	¼ÉnoÀOºàö2<`”¦ÛÃÍ&j|òdà_ÃõېþI`TgŽ6h†	Þh€[	ó1!‘˜¿ϙ×Ïpf”ò#¦iŠ¡–b¬§(âԃª”fázž3zÉc6¯T繺Àçc¢—yž-ûT²h£Iܳ‚ðE¸¨@þ~ñqª–{3m†?(+`Vo¹Už?c‚ëYî~‰Irù—dMö¸ÇÞ¡Ëeø¸á}îV{,èP@Ajbji¥˚ìq½$Er‚JýNÏv,×) dRn؅Ùi4%ײ&{~Rð_õÙ9IƒÌäÇIEND®B`‚‰PNG


IHDR  szzôâIDATx^µ—ËNqÅÇF‚n@ƒ;!¾ٸ{¿L/ô2-¥-_D7&j¢‘ð
PòÞ¬ð	LØ`LÜCÒ0ž_ʹ3Óΐtñ%í¾ïœ3ß|ó?ÿ1lÛ‰X<’I¥/s™¬í­õum.ö<jˆ!^h"Z®•+övck$j•ªM§WãÑÈç̧­­¦ý¢»;¬ræF"›­€b¾Ðm7·]X+å»z³J$”K¥£N«íÀZ¥´ÙSÎҍ¨}+ºƒz<›[_L'“o
fþ²aYöngÇ%€5®)çJ¹o©q‚	6񨏀l:sX0MÛÌdÿêN^©àQ*žX3³Ùóêfy0lÝvÇÞÛ麰Æ5rȥ†Z0„õL°áКKÓý¤Z._Ь7 E3ßß,w½Ój{{
!—jÁL°ÅÁ+»>" ßҝj’‚0Xíְå!‚jÁŠ'Z„ΡµŪWkaˆû£ü¯Š/ü#.8‡Ԫ(
ðK¹ji¤Q³‚߬	ü,\âü9 ×ç¡Úõ-3=Ñ<ܡFCÅ܃ߥBÑеyr¦͊¸¾Ã92„j˜Þå>ŐÿVÎ"¹Dܱãñ;Oš|pÈõ»	8àòõ©û D×@mYõ¶#ÏÓ`x½òٜA®j\äÂ~/1d^þ^P¯YcŨîk¼?EÁni(÷5ã7!ì}Èñ_Rx̆2f4äÀã0jœ`
»—N¦&{U©öHv¶NSX‘Kgj¨u
öq&€€}}Þ!à5¦
P›Þx<[mm‡xmj<Á;¿GÀ`Üր¼õÚ±Z
Öo
ØÂ4äK×\N¼>KjÛgŒ‚ýÛç5´õŠ(wÞOהó‰\Ÿ×І.8‡d?¬jÕF��;Àfϴé<S«#޶GXã9äN؈lq3²[¨j³Úv93ü‘­~!ôû‚µ ¶
—8ëN3º%ƒ8
êf˜	þ.#"øÍZ`7…Îq/X÷¸V\ùtBbÒS{í1Œëž^ ÃÂ!`Šjåk)}¬v­©èœâ0A
µ`€&Øâ8ҁÄÛ4¡+:65ÕһŽulvQ ïp5˜r©Q›9Æ:’`‚
~£c¹–äG¥=r ĚS²hR§äÁJÙ%Y-Àٍî„cùžŽåâx.“‚˜uױ<D`µO'|˜l`dzþ4[žði¶J{gýq‘Ñ\z|œöõq:öãô?ì²\IS—¸IEND®B`‚‰PNG


IHDR  Ùs²ÊIDATx^•ÕÏJã@ð±Xº^¬ÂRo.E<›I2ù×$ó'ڧP
î>ÉîEPaÅWÐzX_@w×=ôä>A¡—Šཅà·CL§‰Iå#È÷ýf&É7ƒ`FàŠ1"ðFŒ«;¨ c&`l¶€¦ÑsK[°8…Ý4(Xí…ûˆ)€ý/èÝk®nWoÌ´&>Ðjé}]?±GÀë§Zý
Ðj2»©eóÊò¬ßt‹<   R@$	
nɌ¯äÙó
O£å½ReŠ;rl>-Î pFvìA˜p†ŸxÉîQˆ’qX¶¸a ’\v/%€¹ïƒ(/xŠ~E÷ÑS&Às?œVVüµÃJ€VX;z,œ¿	ànðßï§*nƒ€2d䠠&nß/ÿq7җèWùyö±èûõ䃾}4„%⯊~îmœûÕ\/ð‘zv wT`d¡°3Íàß[ÍeH»ë
P¡#wÇêǺ HË­›	@‡€Š€†,D‡ Õ5$šºb²€< ÂDá0š7EàB±¹^
¬…±.‹	˜v§t	
j	g9@[&§>ˆióöõÕÂK\uû\>Sm9püó€Cæ3‚u‹kY׬Ÿa&ƒƒæn$yðUyf„G¼§U’ÉWðyT3T„ÌIå}^è:8@žŒ{ãžrûƒZêA8K¬WֺBd„ÀJ[œõœ¥I/øjz¯»ã,’D†•O_Õ2ýL/°+™ø"ŽÙ6·¢ÁÌ
eÀ-¶-Ž£—ص2€פ‡áJÚu~Åc~Ôd#…+ôÐkó¶uÚ׹MµK"HGX^YÈDxþÁå¶õ/¶,ÔTcayió—ç–¶¾ðѶ™;ڶð¢€U¡£	@c«ªÍþ¼ “1R|IEND®B`‚‰PNG


IHDR  Ùs²dIDATx^ÕÍJ[AðIPR7F¡ÄùžsR|…lê¦ó
BÀöIڍ B‹â+ø±¨/ mí"+ûlÁ}O/×Éuƹ·òßæÌ/0Ìÿ£šð¦œHòÉø"gi(O- ­!çcI¾›P€º>@ª?7 wC@œoÍ–’9ù6oùßm±¯&ŽBšŠÞö@+ŸÆ§Šäƒø話!¿="©±èåŸåƒ"yò½yrÏ#™ÿ;AôDe9_pr⡇àG€ z{²¤‡¢QrËÖmºÇxݽ¯Æ,ɭÐ7P5ðú®i™e®	}¼M	 ý»ÌüLüK÷†˜ôÑ̵ð2~™5ˆv¢í#Û.úà#˜bvGÑ̑]Œº߂ÓøBQÌ
°à«a2î‚=Á™Õ̬`Và±|Ýs1஬tÅà.¸گ{>\
 ™+{‘Ç%ÉÕJ`Åe%p’f_Ú?¨Ô^Úy|AX—å‘XNqٌ0¼…|Á¼#¯A\ÞKފ€–ú–Ȑ¼âP76)¯%u+6y³šbSÝVÎø«¼ÕÕ%y/¯óÜiªª8Ù.݀auuÙ<®¦â0ԍY6Jÿ©;™xk¾úTÖy#èœæÀ#îÁ:ôp\ûACÖq¯ûØ%8Óaº·ôŒ¹6v§	0ÅC×ÖL3ÃܒÛ1”)ëàYà¹ë¦˜ðåV,)SBìFŸõOЉù^&ó!L_Ìý´Ùèiûǵ	“ÈTíóþ¤ú:
m—IEND®B`‚‰PNG


IHDR¾s«¦÷#‚IDATxìÝ_h–e‡ñߦÌþ”iPivP †•!EýI(h:Ä<àQD˜„˜R'ihA…¥ÕÁ"²Œ,¡“YÕ:È s$Tk[ÍJ—»»¬ØAås¿{öÜןƒû=¹¿lïó¾‘RR’$©…¿L’$94$I’’$ɡ!I’’$I
I’äА$I*¦å›F.Æ
X‡GðÞøÇÆ
`hÂÏGð	ÞÅ+x`5–aN˜™™Ù_5hpùÏÇjlÅûø)£~¼…M¸sÃÌÌ̡јaqVa'Ž"M±1|‰m¸³ÂÌÌ̡1íþ²ðR`:ffæШï¸è@ÞÁi¤ihÛqm˜™™94j10.Ãf 5È!¬ÁÌ03³I[¶§ë#Udm˜CcÂÀXŠÝEj°o°affÿŸ!U¤;̡1>0z
ӏnÌ33sh84*W`/RáúpS˜™™CáQÉÍø	€^Â03+%‡†C#ÃÈX…ãHšÔ0֣-ÌÌ•Cá‘ÿÓ;{��KÃ̬i94FF‘ôŸâ®03kB
‡F†q.^@Òي™1]33sh842ŒŒEèCª„⒨ff
‡Fö‘щ_*¥c¸:ꟙ™Cá‘md<ˆ1$e1ŒۣΙ™94ÆìBRv§°&ꘙ™Cá‘ad̚®þŒ/°/ãilÄã<…xñmͿ’þ֨[ff
‡F†'K>@ª‘ï°÷c9.:ƒóÍÄ"ta#àÒۍQ×Ì̍
FÆ95£؏{±027>>nēø
Ž33‡†CM‡°NñǪ/Á82Ì̍jÞø¹i
œÄ.,©á×Ýw`-;2ÌÌÿ?‡ÆóH-ö¶a^d(ÃèX^¤ŠlG{˜™59‡†CƒËîQ¤ÃN̏ÌemèÂÑ
FF[˜™59‡†CƒËn%Rõ⺘æq†³ðN:2Ì̍É/Ëk0‚Ô'pڣAqžÅøؑafæÐphüý‚<_#µ'¸2Úø£±O`Ž23sh84^BjgÑÄ9oà#ÃÌ̡QôÐàÂ[עïî¸'
‹3_Ž>G†™™C£ȡE·CH
cyg?ûff‡ÆÛHý„%QxãôÕíÈ03sh34¸ôîFÊè8‡™™™C£¬¡Á˜ïýK†™™94,ÇÐ؂”ɯ¸>ÌÌÌå

FÀBŒ"epaffæÐ(vh¼Š”ÉCaffæÐ(sh0–b)ƒ7Ñfffb‡FOÆ'L憙™™C£̡Á¸
)“›ÃÌÌ̡QôÐx)ƒaffæÐ(wh0æáRÅ~033sh=4Fʠ;ÌÌÌå
Æ@;ú‘*víaffæÐ(zh¬@Ê`…/½™™949ÞÚfff²‡ƒàl#UìN_v33sh84V"UìÚìýÉÞ}‡iYÝùw
(Qd¤€E,XjQÉB°hе`WuѰ,(‰þŒ],±Ç,‹Ž‹."ÆQ,«¬€‘Aed`˜af>¿÷¹`/ð)ó=÷sŸç>÷u½®ýcÿàøä|¿ç3w9gùQ´Eº`[”¡EøeÜ_맷h…2tJ)C«ð˸½è¯eè€.(Ö!hnРŸµCº£í}†Œ]l8öp… Q‚½q®ÃSxߠڌÕXˆø.DZØ6«„0ÑÇãJ<‚·ðj¡ͨż…¿aŽǎáÍ8LtÀÏ1Ã;ø
Ð&Ôà<‹ëp2ÊCÐð#hЗºâLÀT¼o°ڄF,Ç<	8å±
LÂ"TA†êС™ã
W{c4^ÂjÈا¸' ]øÅ7
q¦¢
2ö
Ãyè~ñ¾þûnh‚ü®Çþ!hÄîNìIx_B†`"ŽBI¾ƒÆ~±©9Ž1\!\ì†kñ)¡:<‹Ø*¡áb;\‚Yh‚"4è˜Ѐ±+nÄȱq!Ze0®rL°‚ƿz\1ŽÅ㨅"P…°s¾‚Fdì„,Æ®.Jq^ƒb`nÅ.		ý0õPž­Çc8$!c^‚ò 
£Ðò'Æ×²��{Qϡ<i#èuÐx
2´áE°peRx-p.B1Ԅ)èU c0fB15ƒ4`ôÇ,(>ǰ4œõ¹Vø¾Yo{ݢ
+ CÓ2K¸BÈ8 4áAt)€±^<ñ(€±žbèa”… aÚçNÆPL­Áåhá,hð?~wÈØ%iÆ®ðÆtÈC«qJ=
e¸Mgšp/:x0Jq9ÖA1¶{‡ Ñì>×
ÏAžx=]¡1&i¸µÉ .Ã:Èss°§g!c¾†<·?÷,dì‚Bž¨ƀ4šuã{È358ÝEÐo=AÃ&]áÚDá•㨀¬ÃŒ–¸*0waKBƉøòÌZA#ëwÎî€<wŠ-ƒƣ¡éÿçßW‡aT &c«ï…ñ6T æ [LF®…<VƒÛBÐȨÏmƒנñ$Z[Y¡[6ø÷ÂBÆ騃
ÜltŒYÈØK¡W…¾1-1
ü»y~˜hm4–C†ÎJý[á
!ã2(Abǘ„Œ¨†b
ŽŽIÈhBаyés!„°!	'¶ÊØáü;á
!c”@K°kBF”0õBFTBРÖ;c!Tà^DI®A£d¬»ç߸Ǥ:İø®€l	ºå)d‰µPBÕc@—¼¾4¨ñ­ñ>”wç4��x4&@	4høFB˃ÿAYÄ!ãßP
%ÜjôÉ˟CAÃæ$é硄¹4— 12´Òۄ‚ÆãÅwê¡Ä^AiD!£¾‚€īÂö+¡ÄAã(֣_¶Ac8dhAÞz×à­ëo #-ð´‘`ZFÐ3† 	*|!hPӃ <©›˜†J¼Š¹o¶²	¿„ÍAÃ[+šyñu(bqÎÃ膲Ԙ¶ÂvØÇa,^D
±aŽƒÆ¡ˆ­À\ŠÁè‰2”¦”¡'áRLÁ2(b7:î]°ŠÐwxŒž(C	Zb[ôÂpŒÃÔAÍ‚µÜ_G,îÄpl›fl;âDüßA=’MÐ		AÃ[åX|ã"WaçfìÜ÷ïx,ÂÇ<ߢÜQÈè&(ßá.„¢ÆZ„q'VB9Úá{¯@Xƒ¿âç0ֶ8¯C9AcÿƱ(iFŸ;ï@ŽÏWИ‚†׺ä0¡÷BäØ\Œ@±ñ§iQ9��Ñ Ǫ0m
ÇÞ¨‚ûmôŠ!Çjp¶3w?ÌA#ë~q8äØèkØãŠ0Ë c_£M&AãLÈH¸£´s˜Äo@}PìpϏxrl¨gLp3Ú9|ìÓ7¢rè&ã>±ª!‡žÂ{ÝIX‚FÆB΅Y…Óö¸Žx2öÇ|¼úA^ûY–“÷ÔnvŠp“±Xíø±OK£zǛr-Bß?ÍíãøîL=v3ì“ GV㤈ú]GÌA#££äțèA+Á#¡:ôH4~ú:
¯õÏbҶÄbȑkP’‡M{âcȑ
£…y
äÈ4”åa³±­ñ4äÈSF=¢š æ£WÄ=¯î	Ac³=¡ÔáîŸcËû[‰ƒ»·“ҍC!Cµ!hxmhö"ȁF\˜çíÓ;âŸß"oe°1WäÀ$”äqûô<9ÒǠG<9ð!:æ±÷Ý‚Æfïtʁ»Q”‡þ¶5>‡Œ4`·Ÿ
{@ƶAÃ[óHø_BŒŒÉY-í0rà×Í\Œ…ø3Šbp \îƒx¼™ý¡/äÀØ6ÇÚßm$ِ±ûQ”Çþ6Ìú¿秂FGÈؾ!h|Ð8r`\̆۟AÆ>CIŽ‹pw4@Æ^@iŒŽ¸/Áß!cعýa
d¬
ÝcÒÿZàµ4þÕú:ú²¤Ež{[±qo[‡í74ŠP‚†·g8I_‡Œ=ÓSh÷Æ:Èؐà«!c‹L¾,±mñ)dì†flÎÕjÀÁ1끝°‚Æ]¡oPžçÇ¿Ã琱1›©I��߅ á­þLÔÝ!c_a›y?
2ötŽå/…­ǁqýíÛ~¨‡-C‹zÃø¸fèâÓפԦW+!C#òÔÃÅÎ÷<úśÏC†
AÃ[}3˜°WCƎóœ`|Eød¨í³\t‚Œ]÷šdŒ×@ÆçÐA†ÞGiŒ{ᴄ¡"î[mqæA¸¹ qdèã4¼µ{“w>dèyæãìFÈÐY.¸÷@†ªÐ΃ ÑK¬_|ÁK bÞ÷ES‚ƒƟ C}"êU½p'~€"öäæ‚Æù±mBÐðÒöi&𮐱½|™Œu²}Qfõ%ÆRÈÐE¾üöŒõÈÐrgÑ®‡=ïI?œ’࠱2òŒãÞÔ¿ÄL(֣|SAã@ÈØÏ=bžGj 
(J3™/†Móin0Þ} C«PšáB»¯ƒ…¶•GA£%ª CûeÑæA†ú{Òû%1hP—Ý}x<œ:±új,ƒbbü¦‚F+4B†nÛ"\Q5‚ª&��¾ýތy:dèÀÚK C¿÷í·gÌã!C£3¬±rÈÐ\ÏzÌ܍‘e(1~gl *ÑÅÈ2\¼aÐØp"́͏¤BÈh‰†¨NÞMíj)#KQìaÐ82ti†‹ìTÈPOƒÆNùؒœÚ82t©g}抍[ #2ê=pB13'ÿ¸?Èæ‚ÆDÈØ!
D򲖌LI3ɻB†nöñ7gÜí?{8ÃEvdä]_ç<cŸ
YœaÝiBgÏúLύ‘›ÙsÄ$ÔB1²
·£×Ožuâ,±ãW@§BF®M3ُ…íëïnüød^†WÉÐՍ񐡲êl:däíD<¢õ?h,ƒŒt̡ǴÆ٘ÅÌ{8m~o¦A£Ãã¿.ãO“ÏH3ñi@ƒÆUÆûi¥Y\÷‡ãqÐèê—AUAFnñ´×<œ” ‘ÚBF–fÙ[vÃD|ÅÈ:LÂA›}š ‘šH¯CÆqÀiñ¿Ù/MÜyÇçߝñêœfq=2҄¶Öh€Œœ’¦ÆÚB†Nð´׌JPÐØ2òF†‡TéPÌ,ÀoÑáÇñ67hŒŒMqÀYá·5¼ՀViŠ¡2òçA£d¨_šÅõ2Èȗ¾Ï}ã÷UƤ©³½ C==í74EÑëøÿuÆUXÅHžÆ1Þmµ
{@Æê±CˆN
x”ŸÛ1áނŒ\åyÐ(2~1khš…��4^„Œܘ¦Ύ†Œ4¢…§ýf§‘‰›èGâ	¬‡bd)& ë†c6
ö·â¸9K!¿@Fîxëñ³}ÿýùoø2rfš…õ>ÈÈä÷BFLSg¿„Œ,ñ¸ߔ&(hŒ²üß2\jÒ7콂Òoh4.‡ŒÕ`»
L‹¾ÄøçLŠïÈÈñ4ލj/
ÃI‘‰4n…Œ<ž¦ÖFBFæyÞw~HHШ€ŒTâ~¬bä;LDÚó­\®h€Œ]âiÁ„õȠø–CF@И	©H³°>¹¶‚ÆÈHešZ»2ò–ç}gyB‚ÆB꜅ÖéyGA#5™*!cµØ1D³‚2²0Åõ{ÈÈQ!hd4*ó¶õx‘™ž÷/4ÆCd-D_³É`4AL	dطG=d$µ=n¤N†@ИaÐxÜaи22Çó޳*<:ñÊ|TÀþ4uƒ QŒñ»eޱ˜áº2rz #ç¦YXÿ¹¿‚Ɲ‘I¾£ñ±ç½g]B‚ÆŐ§Öã	Hóij~ƒFjB9ð9rß,(„Œ2¬‚ŒTcËÖw #£ h¬Œê,Û #Ï@Ðx2rGššûdd¥ǽ§]‚¾:ùÈ3_áª4›ÿÅ.h´Dä@|þ¢
w3þšÅÂú"däÏCÆ6¡þiֱ‘ù4>€ŒŒOSs‡B†¶ñõǍP'^ÆpËOS#©‰õȑã²y=°6MRÅ÷dd†çAã ÈЮiÖ3 #u(õ8dc
däì4u·#d¨¯§ýç	
{C1önNÓ7¼	­ðäÀ*d÷#… ñdh)J²X\ÇAFV£Äã q	d¤	-Ó,®‡C†úz4zC†d°gÍzÈÈ(OûÏ4ÚA14gb«Çê}ÐHM®s!G>D»ŒFBÆ)±ßg¹¸žêëqÐx2òY‹k'ÈÐo=¿†uˠþ>Iú×wŒûå„ÿ5kp?ú¤²×A£AŽ<Ÿö¯ê2zb5d¨]²\\÷„ñ4d”bd¤2Ãv9d䏃Ƴ‘UÖàTÈHŠ=ëA[bu‚ÆCyô1.F{ëTƒSûL<€M†BF¼û[Žl
dd®§Ac0dèªؗ #ëÑÁÐÑu‘W2¬Ã+ C<ëCÇB	×C«ÇÔt/‡dÐHM´)C·„X±É/^‚è“ã"û
d¨—‡Acdh`†‹앐¡<ç@†®ɰÝëY/z Ac8‘ŇrßjÒ:htÁ*ȡÛîl¤^@sî¦5c‘½
2t—g!c{Ôo®Ó6ÃEvdè#y4æA†fú×@Fj°'½hk¬N`Ðèˆ&ȑ&¼€a/Æû4ìwÈKã”$<dl‰Jȁ&ìߌ…¶d¨Ûy4®ÍÌb‘m‰Ր¡!…Œc Ck±UuùwÈÐOúÑÅP҂FªÞ߃Œ}‹°ó&þÉ4R“î9ȱÐ6¡!£f@Ž<Ü̅¶Ë!C·zt7£2tE–‹m%dè{2Š024-ËÚ<2´e<¾ý2ÁAãjÈÐdnCÐ(Ç7caׄ…Œî˜9²=Ü{ C뱧AãÈØ.Y.¸# cçx4N‡Œže}vÀú¼›f·i£ÿAcÈØ)žüQuŠò4R“o U81!!ã,ƒk4	„Œ½†’Þáh‚ÍÊaÁm‹5¡(qÈØË CëÐ>‡:}2T>1íIåø.ÉA#UûŸB†–`ë÷º¼áetÏKÐHMÂÿEä>´-à—>Ǣ!‚;D-Œ&bBÆÆÅø\“¯ cçæ¸ð>{	E1}dòdì¡ëu8dì´Šaoª„„ 12vwŒƒÆh?`Šò4Jð‘Å\€q½9րƒŒ'ãhÈXÅ0Ý?«F»߃ ~àñ_‡æX³¥X›Œ¢õ¦Qø ±ê!c¿ˆaÈ8Ð&¼Šœ4G–
Eè)ìäyÀØ
ã°ŠÀ9˜eX
û½cTx÷AÜØÌø
ȁ³
ú½àm“÷ìMˆIêõ!hlÔ‚ŒUcõºXý„ü
EöA#ý_å+ ­ÃDlïYÀ(ƩøŠÈL”8š˜7@¬@Ÿ<]n‡¨E×f.Âà qFBƩ¨‡ÞÌ:n‹o!Æä¹G„jh#!hô†ø]c2ú£ÊЫØÅ>h¤Ÿœk¡ˆÕàVôˆyÀ(Å)øŠÐbtr89·C
ä@5ŽÈSÑm‰‡ G&-Ƴ!G*ò2.A#äÀ\ÔôhȑëP”‡>uª¡46Ù*!¢{CƉXei-*PIÐHMÒ!¨‡ò Ob Šc0:c,–@[‹ý"}qÈ^®@Q„E·#ކ©F'£ùHȡGÑ6€Ñ“!‡Õv+|9ò¶‰°W‘öQn½Ð9°E}8¤Ñ„¯£g$A#5Y‡¡ʣŸ£8á¢ÎÁËh„ò Ã#𬭰rh:z:þï(ÆX94Úxq~rhŽŽ d‰ÿ…zƸÖOŽ —
uܯÊ0	BÐp¹‡Puâúö^˜
ù×Ý
çA#5qOD=Ë1gcwG…ºþ×ãm4AyfÿŒ=ÿ‡­ÃõØÎÁøÂ,ȱÐÂxîŽ ÇC/cO<9Vó—È#úòî)ôrð8÷,,…2‚F,‡šƒC>î¾
õob·A#u¥޵PÌ|×p*0}±¶ÞÌíÑ艃1—`"¦a	3åé9ß(5¸½›9ÞÖ8
³¡4 ¯£»¿‚"ЄÇ1%Ío1ŽÁch‚"Páp7ßՐcMxƒPÜÌ;£°BÐȲwœ
EàU‡ý¹îB-äØ[æA#ÍN—ÕPàyÈÈ<é/"ônÀ`l›ÁóÈ=p>¦b5¡ñŽ7µzŠÐ׸#Ð-ƒ1vÃɸK ½Œ"‡½îL(BKp/NB×ö;ÚçãI¬…€4šÑïƒ"²“q&vGIã+ÇP܈ùPDÖØßÑH_€ûàK(plÓÝåɷ˜é¨ij˜‰ù¨‡òäU”D°M÷×PžÔ`^Eeʫ˜‡(O–a‡ÞÍzʓðf Ï`&>Bd.øʃzÌÇë¨ÜÀKxßCyrjšw4œ¾9
œ¨Ç)1Úô¥|‰Ž}µqê  ñêqXD/·ÆPàAаéu ïf÷_¤ß	ó~ÈTP£c¸í½Ðò ½#ރâ4(ˆ~—Sj±–AOAÃà}à”
“BiöŒ0Xˆ^1>ýï(ÁêqLž6¼
%Üø<흳x7-9A#ÕïÆA	ö´6ØGô{a.äì%óÍ|ìÃFK¼œà1,Ï[x_%Ôuyިo@rþ 
A#Õïn‚èŸho³3¨}!¶ÀÑe,hÀØ(7"3ø„ôY(AÖbhL%»J˜?äá§a#"\%È,´·?ëľÀ{PÖg跅g±&A	ð=ŽˆÙ1ë£Ð¸F\³3Žúa%x4lúÝx(*ÑÚí¡jö;ԍÞì¦7A#&¢Í_Lʱh‚
ԧ°Ù}Ö>l‹j¨@­ÆИ¨¸;@z1Œ{ÝéX¨[QÝ1ñöŸÁ޿Ñã”à]Ø´“¿°q,¾…
̓ÞBŒiØè‰÷¡ó!öˆùéÍÛàÈS— wYúº¸Ÿ–þ¿Þ>h¸(Ê}Q	%Ø2œæ]_ÃF×zI´ٟ.ë,l´ÂD¨@܉V>üöÔr1þë!ŒN?Ü6õz*ï!õ•£eÐÈaöI`àøcÐÖûD‘þũÝï`ç��Ÿ”êÒåãoŸ:[é#(æÖ!õ×k{m¬€<T«ӟ·b4¢.Ì=p/j¡µ—{0¬°þŒ&Ïvú´߉5ú°±%Æb5䉌ÃV>ÿö©¯îÆb
C‹p@j¸!hØôºmq7 OÌ@Ώ%%ð©8·ÅoðT þ_¢t‹_Læ}Q	ÅX.Gþ9û3R&¢Š©Z܎òBúí©û.x
P4áOh—¢‹ QëUаïuûxÐëæbȏc¶þèxK!Ï,°‹÷Ҿ{㯨ƒbb~4ïx8v5øЉ•¸ÎþP´X~™ò ê¡<y}“à±Êˠaßëþ
“Q³>‡[½sf4òû‚ÕÏpSŒït4b®Â>!NdT„Ûc4>‚ò Ã1ðî…\ƒFOÃt4AkÂœÖIúíéq%Cyý3ÜDVä4¦bž‘a1êuåøæCy°wc¿
Ç‚ÆOCWœ‰ûð1š ˆÕbnÃqè¢C³
qOŒÛŽŸo~ƒ‡q2xW&\,ôå¸ÓP9²Ïá"t6¼ÿ@Ž»ð%dl®AÏ,ÆÔ2°0TÖO>Vù=ÞF“ã÷ÌîÇÐ4/y† ‘aq´ÇÏ0
÷`:a½Ñ'¨ïâ	üÿ>N߷…؃p%*±P–ª1÷á<ì•öva-Ñ¿Á#˜‡uP–êð>ÁoqZ†_8íñbÞG}Áb*~=sÃÏ!ïn®L?‚kðw|‘cøøoâvœÝ‡‚Fš¢)Agìƒ#qF¦\Œ
œ‘)ÇáHôAwħ1†‚,Ŏ8Ã0ç¡c$F` zÃîSE(ÇÁ‚Óp*RÎÂi‚ƒ±B ³é_=pŽÇHü
8§b öB+£ó,È[„«9UîŒÃ0üÿôºó1Ça0öD»|Ž÷ÿ·w7!VW
ǏÏ<½4Y‘i‚¶HªMuіE®

„’"$Š`$+¢µDd Q a«DPl1›hWP£DL¬͜ÓoÑ"f1ܙ9ÿû2÷ó…ϬÏÙý`î=w!CC’dÜì‹ÚÀeô“¡Ñ8I24Fm`‘¡!Iš“¡q*jO’$ÍùLH«WL·’$Íù¡ËÚÈÚ"CC’ÔíÃ\#vޗ£6ðk‘¡!Id\\;ãD\޵#töãQ8VdhHRÓŒ»bœúoÈù74|aùµ"CC’Ôä	ñG㋸:ÏO¬»¼µ‘Gʢ“¡!IÆmñRüµù}Vƹ¨
\Ž˂“¡!IÆÃq(.E] '‡ø^{£6òUé9’d\LÆÓ1u	ÎÅú!¼ߺ¸µ‘çKOÉА$#ã@\ˆÚÈ防;ÚÈlï_镡!I†Æ{Qû4&–ݿL"Ž’Ôs†Ʀ¨8¾Ûã1µ¡]eAÉА$cãHÔ|“ºӎø+jCçãú² dhH’¡qOüµӱ±wY{ãjÔƦŠ
IZTÆÆ;Q;r1žßáî8µ3qG‘¡!I‹Êи9ÎDíÐéØÖÁÙWÇT\Šڑ·Š–”¡!IÆÆcQûàdìŒÉ%œu"¶ÄX‰ڡßbUђ34$ÉØx?jŸÌÄgñBlŽÕóŒŠõ±5öđ8µOv5ÉА$Cã¦ø>ê€ü?ǏÿºW¢È71QÔ,CC’Œû⏨cn&î-jž¡!IÆÆQÇÜ3E24:K’±±'ê˜ú°H††$u>6¦¢Ž™q]‘
IêËØx#ê˜ø6VÉА¤¾Ž}c22ÖÉА¤Œ]q9ê2t2n-’¡!I›㗨ËÈḡH††$
Åظ=ŽFq—â¹"’4tccEìŽߣŽ 鸿H††$
õàXG¢Žˆñbü¿H#34$ÉàØ_ùsâïƚ"ìА$ƒc[‹٨Cà\LŝEZ6CC’Žñ怾¡r%¾Œ^øÔò’dpü/6ǁø.jG~ŠC±3n)’¡!Ic9<VÅöx5>‰é8µ³q&NÅGñJl5E24$Ió•±!6ѱ-ŠbC¬‹kŠ4衑?M€¡†`h†€¡À?7Gã`ÔwBIEND®B`‚‰PNG


IHDR¾DuVŽPLTEÿÿÿ# # ººº# # # # # # ywwèèèäää# ¯®®ËÊÊ# # œš›# # # # ååå# ÚÚÚØØØÔÔÔæææâââÂÂÂàààÑÑÑ|z{áááÝÝÝãããØØØâââÝÝÝÅÅÅÖÖÖÏÏÏçççÚÚÚÜÜÜàààäääéééßßßÞÞÞçççßÞÞØ××ÓÓӾ½½íííëëëìììêêêîîîéééM´v9tRNSO
#ðÄ@l
1â	§ŠŠâÓ]¶{!ħӘĶ]Š{ð˜§ÄÓð§Óⶶ{OwB÷NÜIDATx^ìÁ‚ úÚNv•-'ŽCVi��=,’…Iß	[¼ÿcÍ\
LH;å9ÿØUúê٨Q^á8}B$>&	!¹ãxú™AÂÍ	ÔnÇó^ïŸêش×뽎·”bLbÇãè‰aŸ¥³ñôRúÃTu譶ԗý¡@? ˆ»1Kóé^ÿYÕtµYßå¨I`ørL Nsûxöj°ø¼2XE~2ÌÐõŒ_úRwÝÊ1£«@é«:Ì#Ÿ|×ìË.e¸$LKݠÃ|Æbn*Á]IW•nš
6)qÑí2\FïK]KUӇñ–[Œ_{Æg‹Y5§òVp€Wž¡ó-ŒäNáýßЉ	Ãt±º´yÊûÛÀ2	k0T°šaòÁÿ,î9}.Öû›Æ2xî¿Uµ0ñË/ƒÊeº”p?³2¢Þ1]+ð;’áÉèÅ|—Mš]\Ôq¼¡Ôۿù9GŸñ>ù-¬k½ÆŒt§Œ‰1ñûÞu·³àYè+AghÌ
ÔA"y
Œ=ð˜’ì«W؁ÒçS»4æ¨I@CQ¯îrd¬ƒM¾þ"C6y×ôþ$›Ù¸yzgÜ6Kçºu®•>[º¨Q°Pp×Çø”dèº
¶Ù߈ SÈ8̻4GW—·ke
ž<ŸÊPËfǘ‡ë4„©S#&P³\ÿQÙ.hd¬&CŠæÞب´[ÐàIMFÂÛ—DöÉ—e0ގ9lµ ‘D¥>iÇD[èm–4bó«uí‹ÖÐ[,hCã¯ö{‹Ljí•4< O*£¸EôÖÊœí”’·HÃZ@ƒL”>éÅ÷ÚDo« 1+}’ŠòVÑ[*hdˁAò^òViX*h!£jù ±2€†k®ýFZFo¥ ÁÙÚ©×2
+e
'Rß<4•2€Fæ¿2ö©‡  â‰6º—(óC†šÁüg‡ƔqúÐЛA@åmT†‚€gƒú>AÐ@îLÛ'ÐHæÚHÑA@#K+mtÀA@#_h³‡ý½	Ïq!ÿWBHî¢'üKޙ.7®#Yx‚àî›HŠ%ْl-¶¼÷½Ý\¬÷¬±]u”a‚aÄäß*ëˆЇD2‘H86Í>>ûTËeÐ@qBȟ(
Zò®6 ¸ÏÆI…™gDKõýlçû^ûfÏï÷(,BPgü
;N4}1{ðÿ|6ßþÒìïò%Z͖¾ø}År¶ÒÝ ¶'ì?IkPe¨1)Mßïøu›Ãn¯q>f+KÜhýÜ
uò¾tíïYP¬ØW»C3p½@ä2›³•¸ž´îøzÍۅ-ýŎ•F6§‚i'éj!RhØÉQqìoăE– èic[H¨¡¯ÜF×s7žŒ@?;ºO$@† ødõʛ»C}Õ4ŸŒ
ŒšÛá1'#SxÿìêU‚)4ìàö”'óæF	A«^©ïFùƒCÛÎ]jŽHÁ	n2$ѰôçdX5Չù‰é=
ÎèX°!­/Ö{ýóÝ`dp8êø½W›þGïfo¶|nȐ@ƒºGmԪƒÿ𮿼/ÔxUX«ÁڛõÍf•1u>̦D[ÝÅÑܸt
V½ô•Ô ô͊
'óÁÿÇþ
dˆ£a}zt刮‘ì]Ÿé
\öå2.PPI£Rá¡}m×z@­ãȟ¤pÜëāBÞï½úr׻)hRvb®n܀ü6[:jóº·^Dýwo+ƒ5\•é¶ãEþêMèê:$9
8$}Âg¬ïëÿ\Áv/;0ªË43?¯c÷œ›
ÄÐÀG«ú\~ŽJãîå]§…¢^ë*ßAá÷
|aö4σ;ÀZөU@2~8ݨÈ<4„¸Äf¿_]ðWF¨׎#­‡^çþÃá3zlÀ«R@2^o1rºŽzðãȡ\rñÁÎmt6V4â¨�ÿºq)þaþ©V°®zdlYol q)…’‘XÜ/ÙYӝ/–ãC[GïFþ
ø+¥
¦q§‡OecNdѰŽÉ0yÍvúöòÏ$â

$g'š=èñS¥ö*C€ÈÆ%F¸:•CcÒï¡ódL83 ßΨÑÈúßøÞͅþ¢³ê®P¯€#ަ_ü8yŠÄݻ–ɶb¶ÏA†aIÑû8Ã8Ca񬸫óO­._“/‰»ÅüÆc"ƒFv[÷Ø͸Mµv„hXWý‘ݒ“Ìàæ•1ÿ”+Äýå¤â܂•ÜgŸ†Ó?¿<å5‹··1F4Ìä÷RBƐ€Ý$Šp&4ާ¢ç¾6̳Ñè\E6w†
¨',4šP]6”ïbçñÉUø,·T­žݑŽ•âÄ=
ª7bçS1¦¨SÐPž(çÏÍÃég¦qœO¯&JpùžÑSΕâz/Žž7Ûr"
ƛÈ<¸ö®赛0àT*Еśº:u„ÑÀ:Mh…ÆEÀBcœ+´RoÎnæ0'zîD±B°‰&î6¶±0è4.‚SéyLÐà¸@õMÅ<¡ÃRvZ3&µB+lD7+ã- ñ£·ÖÈjë
V>oÎ'€'pRÜTl)öU‚kƤV¨­„SW§Q4Ðc­ÊJG?y¬v¹0â	,4H¬z§1ŵM6Ȕ*$;ñT@²a”Ú	¢‘‡ÀZ6{ÿß+ÑۄDtE§öÅKudAGU
¦vG£Œ«º ñ<ÓlòùtJ}u•h°óª<±þâ!‰¼ŽT àè•8·ÅUý4Œf;Œõ‘fåm;‡ÑÕk E¥*pѕó_÷€l¬…
å
¢ý³Vÿ4œ°9	œ¸«)ÃaÀYƒQDÁPý I4ÓxJ²‡s²DÙs‚hà¯ÙƒlÓ@_>;Œ 4?󣿎)5.dÏѕÃß+P€荛ò‚e¦¼dwŒ=A¡¼øì0šM¤Åÿ+©?
)@CÞß?dêˆV–Hk%ÑÀCªè5L„ޱ¿{ÁaÀWÁ!%ºb,¸’þþ9Q§tnI ï	&Q40Ô@ºœ؍6Ÿ†‹ždÁÙxÁ©P9æ'§Äk€M
;bÓe–ƒƒš¼_c$Í!µƒìV2•î¨SÁ<…·½ü
±ÐpbíÓQÊf¹DAðq?’ٰít3,pˆ€†h(c
€¯"û¬ØRb‰¼þiü²õª£u­”Oæ‹×![eÒdüëô~†Õ9Dy4Šõ`”¨@±Bï34d²¡Äxo¶âύ_šé
3‡¶1’qe4äBŸ(P€ßG¤Ÿ¢é¶Ò{(É3@i'é†Ás@94)WF4tKHaŠP ^]¨ŒLkew^q-{ÐËãløtå`Žc)‰:2À!
¦±ùï㞦@¼E¥•@û¨Ž÷ÛúÔÁò.
ȀðŽW#^¶Ôj
˜ÁÛu ŽÆ6“EtRpgUD‘Ô˖©K
`<±Г¾"ʣ!î0pÓQWCP/–¥3
%Àê̎_`ô¥ÐÀÉxBˆ“ùÆžkõòeª��…7˶¬
A~ɣQ_/Œؒ¨‘@[žå6̂0Lcäã
ᓘ"@4(ÀžÈ)(:§!èð
KMÑÚÔþé;9 ÁØIŒžZMŒ§ˆÛHvg^ÙçÐîÐaˆ  =?ŒF¥;€Æϼ[^*ºñ¬Ðm^Æëç³%²¡Eö÷]Øìþ$œ¾”ÚÌa÷Öö‰
¬Yï¬
sþôÄþNâhàr)eÅã+ã%ÅTp	PÛV¢†Ÿ³,)t']pçáË%%èÑä…öy˜=|Wz
K@ð¸Z4vŒ‚\i4fT‰ž묚''̪oc±č}<¶)_⏇ÀU¢AgŒÊi4"[…Bgy¯_þâhV¯ÛZ%ç`®K€Ï;’…ѓ4`EZ}Y4šÐR¢ÐY1¯з‡,6Ìä¦O†y.“´H©Hº6,ՠÁ^ØV¥<ž¦J¡[Rž^Ùl` 
ÈEƒٙ-¢ßå60zR€þPí$‡ƒ(PÀ%Ù(L°‚_¯/@†X°¶Dѩñ]
±¿©4ØQâÁ5¥ÑXQ
Øb¬Å6è&uo:ŸqÆrÁÚJzÃ͆À	º*@£;Ã%—µ!>JølTO)qŽN’Ñ}÷—.•@ÌÑcÒ]ÜÈ…ù=IåÑàËB6!u¨P@66¯hícdWïšMÜޭ$Í/#G%ñãÐè6$ãE˽gõ*A£{4¬Ÿ“Lco3
höû¥hõf¯»ڛé«e°6‚.óg6QÀxÑü¶–Œ؈[øhâ16¾Ãթ¥B͂{T:ޭúôú£,Ýz…ßqX°—.~t¢
¶¿ßr[æׁR¼•›ôw»X#߯­Žb%hƶxŒqz٪МÁ;֘©Ry·;¸‘õûT¯Ùß\¸¡ýßÅOM
Sšèk‡Æ6ù¦´Òvp3LbIK<Ð߉™D³\°ÊnNÖTUª0ØÒb±¾hQ³ÙòHÎ,ËÂô.š§ÇJÐÀ
m¼k†_ÐSZ©šiǁ«¯fkÿ·ýÍ*+–G#O[N}¶ áÅLoSò“º\TV À5Ó)iL>Lûüˆzþ}ßü’Ýñ°SÍF2Q€Æð¤~
DJ]¡I‚Lï¡Ö5%Ñà»
ùÅôn/[g)@ÃÚÎiNO×;i
…w
dNw´šôòóÚòlÄl6ª'·ü14°F¼¨ã°j^(S?û†3y40¯w˳6
óÑÀ:,²æOéö(ÉoªVà[âó³±rw¯5,6òŸc£ù£a—gíã]'^š+P؛ÃĈ<˜×î_ ~rr\˜j“C/¸„79Fû3¦†L:þÞ¬JÒhðóÚÞmbe•ioR¡㸢淢–éµ+9
ìý¨SO˜É'ÊÑhÈJ°57.ûêü~ÉXÉݫ›Š
Ç4
ìoEDlðÃ(Ëx‚\‚\¦äD
3yygÀԆö¢Óû”=óšÍFu­ö¢a&ÛJ ĆÚá«Sà[üðŠVß–8P\•ÈhÕ4b„”Aºõ^_BÊ9¢߿²­¹^@¯0i4ðِ
G‚•
ü;_PúÊæW`•Ï0Jyó4Èà)ϒtµ©¹[íԽ9rJȞ[¸Ó栁l4C™ VA C¹OØó7al
¶ñ|$ŠYVoV¡F2êü±’‰¦ï7õIEVrÛwhÞzaŒÞ
€£»XsÐ6†¢©N†Մ„›¾{†¬¾R4¼Wí%J&bëP­MÀ˚ƒÿð_ýE³åsû‡¥È@£î¶ýŽê7Él‹ÍWN‹ÀÕ÷;x—4pM»õP²޺1Â1ÉÜyۃV‡ Nß&ÝH³ÓF–ë
ÑtgŒڎ5X~䃝]€a‘[£Ô>?,Rô·s²œßF)%ÄÐÂÅl	¥
€òôr|oîÆÇ˜ÇîÜë/
ÙQª72lE“RÖÕ%cvú³H5ƒJ­c¯ˆäómžøhy O+.hõÁ_ÎVzßö³ÙÎ÷Ú/j5žº1ÂÊۆFAósJ´ÅÚ;šHJ*Và[q×0c
“KZÓzþuš˜ŸɇšvŽ5³Í6ºK4¾Óo¥¨áú~Y
þõr¯Øb¶󪣜N
c«Zo&xšOn­"ùw/"dܟ”-íߤ¡_×ߋÅr…=9Ìééä7×zZD§¤14M×ÿê0à°Î%Ì,ÒǓ»öѥ¢í	’Xh„ž§IO†£Tœ2¾YeF´÷*%ÿwۂ$ÞÎ#ÍI`b³ ‰u΃ÅÆby£¢jŸ¢Ð ÔÿéøOWy!€1‡-Œ|¯=m ž®,	2°¦=}äþtí ÈYn´öšó|ÅÁ_¯t-‰më,í2xOÓ}ý­Á£P˜؅îwìãUùZÆ_-×:2X5íÑW»Áþåâtá~wcnŸ—³E¨%q)Õ[YFƒ%ûµ·ÛëäÞF¡`ÚæөlÝFdÀÞHâFëçvh…߭ ƒ){¦o\=øŽolۋÚTK
šƒðy«uü^¬ýi۾ø»ÙþMd9p1'Ö`²‚IBu_ñ?wѾًïû³~Ræ”ñ{DÍ|ÿ‘ÎÞhø›Eºîj)héLdŰd¿ $ÐÞ, „PêX#U°É`ìÞzþr6[èì©bœBué‡3!cÖJBèØ4#„h=ȇµžëÿ™偾l!q¼^é®FÈÇ}¤ÜzeBÅÿ²wwÝiA†çÀò±`€ED(Z[£I›´¹«Býÿ?«Ǟ¶Ø1tƒëEç¹Íí!,Ì0í	C=Z„©*ŸãÄ]*¢b˜;	Ÿ\ÛuTÇíJn¶š­­D0/J>£ãº6žÙgCËl
”0ü+ð2U¦iȠ‹
Ú@SqvþM³~ãÔzžL=ŒP«&Dóž6*ÄÁT²CŸ¹ð&nš¼¼äð¦vh™‘Ù¥«H`2~Ñu.ô³óá0/,4uD¿»z!–nNª¦³Qù0|¬üV›îWx?çچÁc8ÔxìçDÚAc¸Ә”gÍ×
Wh9…A€õ¬(Ã߿¯S8‹}Kl4ÞëWMFŒÒh0k¡š»3"5,(˜ ‚Küüì-"†£Ý棁Ö76³ח|ú±ÃÆү—@zPά¦#Gn6‹¨áÑxR£Að5/
óӏ<AÏÍhàÑ0ǯÐU‰~âeþ^§½&u=aöMGɢ/7ܣX 	|„‚s}ýɤÍď•/ôÍjT TàÀ1/®ÏKvu籛qÅÌ8X¶,Ðd
›ÌLzëmm¡½…P2pd>ª­5q	405Ӭ×r§ɮͺÙ@Ë^í$îޞ?õÒd‡¶¼Àpæ/ØÐó—GU§/Ž0t‰4³Py !#±BYQ˜.@0šSéþ3q Øn¨M“YææCb٥׵Ä\Ü5ǹzW&㢳=°ÿYûP~»n×
e:KÜÏëã)JRÈa2|¯‰$>
Z¿Äâ°íýï6JO] ˆÉ%Ngj~«Oÿt¿,&æE}rg¸ÈÛPÅÜÉxSŸ5EI Œ‘Ày\½z•8¾Ä1Ù7r¹¿QéM·ðÚÿI5ö’p*áZ0O9ñ=ªÚÍYþ2ƒ«ÂòIâүf]·Í|]-Ƒ’\!–å۱ĢªînþXWգ–cûy׉µOÄ}e·|ßø¿ýhh‚MÿÒ
ˆà'méGq¶åAIEND®B`‚‰PNG


IHDR  Ùs²EIDATxíÌÁ	 ÀÀÎé4Ý\@  ›ü/ºµ6œ`BˆfHID˜Ð
`B÷h€øpׁFÈ	×ÄÂ×IEND®B`‚‰PNG


IHDRC„EIDATx^픱	AX5`à±ׂ©m؁½ˆÙtñ#ë0±]#n5Äÿ̎‰'xOˆ#SdŒ‰DO
Г„Qƒ˜Èaé*jœ¯Ò$mÐk†_ҝ՛²äæ	qañR朽!N4ÑpŒ„80{²Ö۱ýGòI5÷‘Ç҅/¬"a—P0z†Åƒ¨ãžFIEND®B`‚‰PNG


IHDRC„EIDATx^픱	AX5`à±ׂ©m؁½ˆ•üD&°{0ðØ5áV#AAüÿÀì˜x’÷„h12ÕAÆh‘HôÔ=I5ˆ‰–®¢Æù*MÒ}°fø%ÝY½)Knž/eÎÙâDƒ
ÇHˆ³'ûh½Û$Ÿ¤Qsy,]øÂ:!Fq	#¡ð”P»§ãIEND®B`‚‰PNG


IHDRC„EIDATx^픱	AX5`à±ׂ©mXÁ؋XÉOŒ¬ÃÄ<vD¸ÕHPÿ?0;&ždà=!ZŒLu1Z$=5@OF
b"‡¥«¨q¾J“´A¬~IwVoʒ›'ąÅK™sö†8Ñ DÃ1âÀìÉ>ZoÇöÉ'iÔÜGK¾°Nˆ„Q\BÁHèhŠ ¥BýIEND®B`‚‰PNG


IHDRJÅ'ÃcsClÁ0`M!IDATxcˆû‘@ÈàùŸþü0Ð8@i¬¾€ý=IEND®B`‚‰PNG


IHDRJÅ'ÃcsClÁ0`MIDAT•cˆüù?
þ¸@iÒ8Ý D•5sÙIEND®B`‚‰PNG


IHDRJÅ'ÃcsClÁ0`MIDATxcpùÿ_ë?‚8rÈNd.áô'LU‘IEND®B`‚‰PNG


IHDRJÅ'ÃcsClÁ0`MIDATxcø‡.ÿ±s\X0dB@ ñ&ù4K€IEND®B`‚‰PNG


IHDR¼ÒcsClÁ0`MIDATxcX‚þ£‚·Ã[à-ÉZ0B*Z"<¾éƒIEND®B`‚‰PNG


IHDRt`8ÅcsClÁ0`MIDATxcXBçj-Š%[$IEND®B`‚‰PNG


IHDRt`8ÅcsClÁ0`MIDATxcXBçj-Š%[$IEND®B`‚‰PNG


IHDR˜csClÁ0`MIDAT(‘cXB"`¨›¾’$4ªaTè$
KHgq‰§IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxc¸hƒT
!úBx@IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxc¨4K›vIEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDRŒšb
IDATxcøh–´X©×IEND®B`‚‰PNG


IHDR+ynIDATxc‘"¬d	týIEND®B`‚‰PNG


IHDR©ñž~IDATxc‘üŒ±
<Cðâç0…;ÍÓ
[IEND®B`‚‰PNG


IHDR©ñž~IDATxc‘üŒ	
<GxÄ^F—<îIEND®B`‚‰PNG


IHDRýԚsIDATxc‘"(2)‘ŸIEND®B`‚‰PNG


IHDRðÊê4IDATxc‘„#Z	dºJ¥IEND®B`‚‰PNG


IHDRðÊê4IDATxc‘„#Z	dºJ¥IEND®B`‚‰PNG


IHDR+ynIDATxc‘"¬d	týIEND®B`‚‰PNG


IHDR©ñž~IDAT•c‘ôâg@ü„90ÿxZ?M>UIEND®B`‚‰PNG


IHDR©ñž~IDATxc‘üÅπØ*€Dø!dWˆ†DIEND®B`‚‰PNG


IHDRWÝRøIDATxcøÿˆúý|ÇÀ%IEND®B`‚‰PNG


IHDRøVõ&IDATxÚq°ہ‚ý;êßGÇ‘ÄŔX(#šÝö>ÇRþD€yŠIEND®B`‚‰PNG


IHDRøVõ(IDATx^ÀÁ à·Btˆö':·O—ø·ø1P1쀫dz4ùȷúp©E
IEND®B`‚‰PNG


IHDRWÝRøIDATxcøÿˆúý|ÇÀ%IEND®B`‚‰PNG


IHDRWÝRøIDATxcøÿˆúý|ÇÀ%IEND®B`‚‰PNG


IHDRWÝRøIDATxcøÿˆúý|ÇÀ%IEND®B`‚‰PNG


IHDRøVõ%IDATÁ10°zàÂÿ‡€ÙىŒD”±Q>ÄàéX´Âü÷{!QIEND®B`‚‰PNG


IHDRøVõ%IDATÁ10°zàÂÿ‡€ÙىŒÄ%_E{˜ˆÆÃ4ü¦¯¼]IEND®B`‚‰PNG


IHDR©ñž~IDATxcBÆDA2$Û1io àIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚± &RÉ•¾‘dIEND®B`‚‰PNG


IHDR©ñž~IDAT•c‚a†ÂPŽ•ÝßIEND®B`‚‰PNG


IHDR©ñž~IDATxcBÆd,s	™΄øIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚± &CC1ÉCÉEIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚a†21²  IEND®B`‚‰PNG


IHDR©ñž~IDATxc‚,""„Œ	û\1ùú*àIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚"DDĂ`˜°ç¦•QÄCIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚,""ÃÄ	îö•ã¨ÝIEND®B`‚‰PNG


IHDR©ñž~IDATxc³EÆD/2úÌùZëícIEND®B`‚‰PNG


IHDR©ñž~IDATxc_1[&Rào»
œ>IEND®B`‚‰PNG


IHDR©ñž~IDAT•c³…a_ÂPŽæ€ovyv}IEND®B`‚‰PNG


IHDR©ñž~IDATxc³EÆd˱R­FIEND®B`‚‰PNG


IHDR©ñž~IDATxc_1[&Cä(ùZ=œIEND®B`‚‰PNG


IHDR©ñž~IDATxc³…a_2ìÈùüŠŸIEND®B`‚‰PNG


IHDR©ñž~IDATxc_,""f‹Œ	Ö$ùœ^ÏþIEND®B`‚‰PNG


IHDR©ñž~IDATxc_"DDÄla˜°Ċo8‡ëIEND®B`‚‰PNG


IHDR©ñž~IDATxc_,""fÃÄ	ËoŠ“ʇIEND®B`‚‰PNG


IHDR©ñž~IDATxc+FÆDA2h7
M;™’IEND®B`‚‰PNG


IHDR©ñž~IDATxc‚±b&RKÌ	º@¤"âIEND®B`‚‰PNG


IHDR©ñž~IDAT•c+†a†ÂPŽR°	ºt˜z/IEND®B`‚‰PNG


IHDR©ñž~IDATxc+FÆdo{¾ŠØIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚±b&CP
Mè‡dIEND®B`‚‰PNG


IHDR©ñž~IDATxc+†a†2YI
M!HIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚,""VŒŒ	A+
M²44pIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚"DDĊa˜°.ƒ	º@ÄOIEND®B`‚‰PNG


IHDR©ñž~IDATxc‚,""VÃÄ	5g	º¶Å{IEND®B`‚‰PNG


IHDR0:ö™ÚáŸIDATx^ݚMNÂPEÀʈ2îF\:s cE†8qà
JWƒ+€8`Ú5Ø6$þÄçý’gÒ
½ô]gáChéûÙۿ)™\Ì1ØòÎ`FÐåÙdy~YžA–çGåùdy~YžA–çGåùdy~YžA–çGåùdy~Mž±>`\ ÿÐo˜Kÿ¯	X攬hpbn­ß.œñO1x0Çø»€8ү‘•	˜k§p
œ£jÀL0`öƒwÁsîYÀ1p¢œX@&YÀT8`j÷Âð(PX3p|€üOHý"Îåo£òdòòsʏÓwÕù`Ày5 £8¥TžÔOvrYÅ\É/-Š/îê/¯ïþG•Õ7üÍ6Ýä;hèšX‚ú¶Y°ØòÝ&©{£»
®J(¾òc´™g%b‚²FñL@o›Çm"0ó
æsÿQÓGκàdàä ¯žäþµ̿·[ÇØ@þ+ͧØaIEND®B`‚‰PNG


IHDR00Wù‡{IDATx^ÕÙ=NA‡ñ)„¸ˆ¶˜è1<j%…5	˜`¡•Ðmà*ÂÜJ	WPY$j6;>…oc²
ìÆý¿~žd?ޙq'÷«<Ôp#¼à
ŸðEÚ&`=<#…ÏPº€=<`ovÐGlõJML¬Z-àïðŠ$ðŠ]«Th!Q
8B¯PÁ^5 ¯Ð@¬0€W
°V¸‚Wˆ”jH•ÚðÊ¡zÀH=`®°Tðºô¾Ô¡Wõ—x®þ}Rÿ‘…ê£ĥ# .:̥h(Óœò†æNuK¹F`f(0´u+«ÄhX€âÁÖ
\V@“LPÉ
0͒^h,qøw½*Çë	Zp©\pt³ÖYö+¦¸MÌÙ?½1Îᐩ¬׬SÃå`ª¸źàáU¸¼Ì>±Ê1à¢L€"¤ÎózàLqÙêh#Ä3,ðýkÆÑFn[?ÁôÆâ“IEND®B`‚‰PNG


IHDR00Wù‡qIDATx^ÕÚ?NÂ`‡ñ.å6’TWLô€à$‰Î$l`‚ƒN^ÀÊU„;Ð £„+(‰‰š¦úü†&]¥ |‡Ïžáýÿ:Ç7ӯ5{ÇžÐA€SìÂÉ+
؄=4±£õ†;øª©-¸ª©G)˜å£¦ª«Ä(+˜‡ÊfW9À\ªDð•L[=`O9À4Ôzê	|ås¦¨<¨ŒÔ&ÚPø°€‰p3ŒÔqG}
Ô²ªp9‘(oæL(ÂI‚Ù3Õ#eª­z¨Oùˆ¯U²ZŠ[Y.ú[Ї;/ðº…ÀY`ʈU®×RWyا†x۟˜©lhLD8“7þyvüå™õ·
¸ÂlÍ[„kà¬: µ‡[LWüÕàûË|5X–‡&B$KîçC4áåùì±
ET ‹!Æø„cˆ.TQ„“×7fîô߯őŽIEND®B`‚‰PNG


IHDR€ jû§&øIDATx^íqh\Ùyö‚@@ ƒAT²Ê*ë­So¼Qc‚…íî÷mët§NÝ8qªT­6JÕ(Q£T tò)Ÿ©6Ûhëv[ïnš֩o•¨U£֩[5NܪÕVE ˜>òïÍÙså¹3÷¾gÁ珇¦²´¿yßóž3÷}ï{ÎÉýÌ/.7«ç¡]¨mBÐ<tjƒrJꄦ [МðódxÒ@
öu@çäYwÌ?CKò¬ ÏÜgù£Ђä·¡:tmCSçí’[ÌAëòªò¶Ä'sÐ錸mä‹ý7„Y7ù•iþ%þ7„WÝŸÌÉï2ŠÿqÚ(üGì/Aãñ)ڶ(¶î
»*ìWdnŒfƒ§Åþo
³"öoÓ~áA
ãoÇ}²qüÙþí‘oü¯¼þP÷Ä'ùנËÂ߲æ¶œ4þ›uư€ãt(¦[!Øpð+²ÉPR?t7bÿ<ÔC†'õAí‰AAAAAAAAA}’t]‡.xx¹×#IOÙzÆ]P´¿døU¡
öW,®K—<ó¦SäwK.u€(Ép!¥ñ_‚Ê	øe‰ÏÞøEá&委ÿuI\ÝKÀ߅¦RÊÿz˽$㟢ÿiÿ|Âñ?5£/~¯Yú:Åüûédó_êâÿµž0þ{²*]$豏ÿUýÿQÿà—öëgçþµþþ¹©ÿÜÔzý=ýÓúÏ<óeóAf2¬ˆÑÁõŸý¿+õSW¾SÿïܩÿÜoüÍðÙùU򕾴¯›x÷¯üí7ü+ʅ˜NS7ö+ퟌ�‚‚‚‚‚Ò긘”äãŒ'þ¬éòˆhF‘?å>û•ú{~õώžuýÕ?¯ё1î§ù¥ú£¯×OzãèYô÷þóè™{øŸ<§c	¹Å+È1¾{”oœýÜëüýÿ©~ñ¿ð¿ÿ~¹¼#m~å>ÿ™?`nÁvÿËÑgø…/ý÷Ñg8û»;ôÉѿ
äZ%…gî<t%šø2§ Ÿö?ñِI¶ɿ(;ÿÚl!÷i‹ó?m¤­ä‘O=9—>¡ýG¿ó³ÿçÿ‘_k!ÿÈ[þgü3þh#ù`þ(Âÿёý§§ÿŽ¿cøUhšü⏢mˆÿïÑVæ¾d3ŽØg^Øæܠýd·ʧÿ/X…Æ֑ýOÌÞþIü-¾Iûÿ´Ÿ|®
ôU4ÿlKÁ~{üíø£O›Ñø«A³-äÿS6Ÿ¶Ùþ§FvÉwø¿å¢ðàƒÖê_øwú„ö3þLý¡’bý£h֠SŸ¼I>ý?ÿßü[;þéÃö´@#|x`·dQæ‡y×s_­K—NwFmYe:Þæsbp1:¿jø}dd¨¡ó/֟üüýœ¨°ÿÿ“¿eª
Z6;ôËȀÑæµKðmB×Tãý)((((((¨Ã#»ڶ
/ç•ù[Ñç(&]g>óõÇ.߸+E†,UŒt¶ó’I’½½è3n
ÉFG†]?ÛQû™Xßàáwèk™ñÅ~“ì§ùSŸøë´ø	ø¶*_ùN[k]?QþW™K±àÖ(Ÿù“a&‚'[?Ž?kÿ†Äße2ü®_ºJÖZ˜ÿÌáȧM‰ù’ÿ݆z›å³ÁqÅ$¿a>‹,ÔJþ·ßmE⏶°ȑhüÅÿ†ß×äúGû¹þ%Æ*×ÆNbûEç„OÌú“Èÿ¿åÿס®ºê#—¾‘dþ›ú‡ñÿf
ùwª ȕ$þÅþøñoú=vù[Ï´×ÈyüS·XÛc€Œ4O‚S⾜ÈgEr7ã"Ä\|Tì¾ÍBÌ=Ó*›±npÂJuÞØOþžñ¿’f¬8òO’áA…c}Ô­G¾³G”ùƒ䚎‹G?ö“v™ÜV⟌ðñìô†éò0º穬ϐÜ7|°ßÖ:?rèŠÈÔ~vtߥ}è2”{ï¯3-þ	h7Öþx]‡
èŒIÝÿ’ø%Ñ,þ&ÿ5ëÿ{ÒqÀÜÁ$¾͈y@O‚e¿ñ?þÎòr!FMþ1˜0þhBÿ»ó?$ÿ9‘týûÓâŸL'ÿYpniü%ÿäX’?Ø`®tWìOiüßàXî'Ìn@,¢µêïZÉ?ûyþëµ&ùŒ]úв¿9¡˜yŒZbû»´%µÐ#~9U€¡qh
:t8‚íQ¬dï¦Ý	Çæ0A:À8­“Ãg52Ó"Ú¯€UµÙÒ"Êjàž¹@çQyŒãツ6t>iü>«ñû¦©¨§"m¤;ïÐN¤      ahÔ»'z¸¦l#ØñÀç³
·5D“‰õ÷~ü/5:oߴØGµ
 Ë;Kþ¾ézpt¶W UhÊePê%_º>Œÿm]“gýPÎ;4øeÉ1¦ sP/Ôµ™ρbaþ'ŸþãOHÎÓmòùÙ%è,”c¨‰N±n‰?æJÇñDŽÙaå_%+ÿšrïþÐKIãŸñǿ*¶~›ð'¡—â^ÆÿüÌ?´8ÿ
z:õ@}âó‹Çð¹]‡sz»þþ1ütMì?)1×±-&A§-äӶÞãϵþT…oƿêmÀ~òÓûd4/ÙëŸ=þãÂÏC&þÄ7åcìßKÐ	sÛ]mþ!´b­?†ÿÔ1þG÷æ?±“i¯™üÝ?ä݄ýí«1|æ4¿¥úºù¸®ô
ی>²þ\}ÀøïÙù7MgåЖFDÕ	-@UG[ÏÇÙHûL¼%¢c¿ÍC5ŸÛFVgám‰á¯Úl³O­²–ýéoA®¸ø+ú;k¾è*+Ÿ6_F²/Y­ó§±–¾¯ƒaù_MdZ­ˆAAAAAAíҪ^mBÊüm²¹•­ææ;/ûòJü-òñƕ\»ðqI\–ü6y6à3Šͧ–%ÙæóU–þç3š½ݧÍA]䋸¼™	_ì·ùP/¹Qásæp&EZüMˆÏiÌ\öw’'tà3Ij–Ÿ·üŸˆo]Íؿ.þ··U%§)4À.Hq¤ßüÛ@’øŸó?©ÿíüoÎʿ^‡r˜×ÍÆ_Uø…ä|;ÿøZþA||Î8~wü.hA˜®üç¸ü릋/ZJ`ÿ|Œý´mëù×(s%¹íñŸM0þK>çý«ÑüK,¨ރv éíªÆø+iþ‡ùÀb;¨Z&?ÆþMò[ØyÅÏÒLüKýãō(ß4_™âäÆáC9TzsØÿFGŒ@{ŽÁêvêé±–oˆðàb1íÆ¦RdÛA›Cە±ÿÀ„X/“‘‘èòG¡CG’¯qaªž»>+‘™Úoœ5òk¯±ÏÇñŸ6Åϱ¹6ñi2´ä,€å¡3·)OCu
Ýæ ËÚ|$‹vòwߙ>ù{ÒaÀg»,ùSÒù`ó aò)ø&‡AüË·‹»Ð٦³äçûïs85mþ¬t>ØüÓÕb„nî£g}$3|Ú?ô–ý{G9:ËsèàÜjÅn›Öùñþ¶øxéüêQ΃\æ~þßñ"‚ÛÆtþØñﲟãO&óžhþ…³RLþu¤Û§­øµÿ}¿õ÷´Õðé{±ÿ5Äæ–yß!:Ò%Äy“pþ»ígüsËáðGþø¨¸…|‚>grå;òÏÛè„xß5þ†Ïä›ñOûMg:KŒý“ BûŽü“1þtLº房ý¨ÿ™[’/ãO6ç@£öÓ6Žñ¥ã
áȗnFø;Žñg¬Éø—Œýü}Ãß!(&ÿ¥ý
å_8ðš̨Žbû}ӛÑõç>Ÿ;êÿA螃OûgÎMòPøÿç[¦ýf›'c›1ÁØ4ü!ò]ãO~‹ÇސmƟc`ÖŽ
Çßð÷\öc¾Ì[ tÅÁDÖ>°c;VŽËl+þ:¢È	ìàW±heÊg È ”µí—B”©Fî:ÚÁjàg}(4ƒñ„küQ*ÿg¬6'ocBØþد¢W̞ZV÷1?ª`_]'îŸJÔ	݁ê¢WW‘ȲU=ú=9…K“oo{ؗg>dfÉï¾½í`ê•“œLùHdím/ûÑä[ë™lgµõ­ãÿ“’x²ã‡ɎæøÓÿEáó™žÉG–ãϘ·ù}™Û/|ĸmÿTTàwËø³óÎÿ^Iü™Ó4üGعäeMüoÛߟÔ~úˆ¾Šv*`]k6þzÄ~òi[>}÷M±e:³–õØ|ÛÿÂgoáüWb÷ÍĜµ"Cüúó鍆íg¬ˆý»Žã@ŽͿðò»ӲͲ]Ɵ]mŽ??+ùý>oäZÛÐQ ,¨¢.Ǘ8K)ÉøsÌzbì¯f˜ÿ± Éï
ò‹>çX¦|±ßö¿ÿ3)Ùç¡â4âj‡BezŒŒùk|c3ìj‡Â„ùìù/³Eö´Ë~´Ífm?'2+¦ƒ1þ_ʘω@ÿÅؿœ5_ŠqÎñÇb²@†’6YÙ7m˜˜<U~ÉC’±#	Nš ãáSPP’wb¦ɽ,‡Žò°á£-`)óùd·ÝàP
þbâ›Oüªðùi¶d¥99pԶD¶9ñY2K~	â3‘Í–®#>KfHðlÿ‰ý,¾ùàû³ÿyÏ÷ÿZÖñϜȶD)þK2ÿRµŸÅkvê°3	SëO+ösÌì#Jb¶‘ž³ù¢³-tý1ÿâÜá£bÏ+<ÿÛ6ÐGýÈ
nûÔ×Êú#ö;ó/VbóOŽ×|ñ‹/Íð9f´?.ÿÊ:ÿ#Ÿţ˜ü÷
->ý_sð—4ø¬¿¸ø(ٟS(0·ƒUÐnסPàžuœŽ]?¯1°uÖaÿ!ù
þwڏ…¦‚V²¬ùlÓãø»ì/+Œ?3.ú.û˰_ø™kêÌÛvüEü¯¢— ºì±g²S~t]’¢t]’‘6åëÎ+¼9íÝ÷×g´™ŸSÜzVÁ÷´}ÛÉ<ĭ.çä•üY“|à߲ö?¿|&_ø·¬í?tðçÅ~&YÛÏgaû¶Ÿ%ÃGA2kûqþç3´Ïñ׈¿²ƒ?'ÅûÑYÂñwşFüW`#s‚û_ô±þ̙ñÇÜhi»Ì³·s´qÛ{(Úñ—†ÿa—iXƒ^N·5[ÔȥRXh?}èʿ®Áæãò&nÁâ6ËV^1vâòo®9™ç_°‘üŸs>ï±þÀ5¯5_ü?çÈ9çȼ¦ÚN8ýéïMêð׺˜ð;ª`£
|N¤ܓý,BÑÿå·ó7ƕø.>Úä&üŽÿwGµÞnãËÇåÍ.œ-&¨æ›\of$þÔÔ+…¨mhþ¡?‹$((è,T§X„á”`h®Kdñ»Ⱦí¤ ]YkÂo@ÝHȲ.>Pç >‹Øöw’¯àƒÉ>Ÿ™4ø£¯;·ýÏg>»êØ?ýwŸþ'M7þõý?îŠákÙÏ\ fü×|Å?s&ýøӷÿ´Øïä+­Á,tŒÉ-Oû¦ø¥ÒùÆÿ†¹¤ˆ’y›°³K‰ll•J£øIç’}ÍsðyÎcþÅ9¯•ÿÒþCOù'ù\Ë]ùߤRý%Öÿ¨ÉvÉqGþ²-WWUÐEþŠÍÇö¬’_ûß\Rä—þ_ò<þ‹Z|´—ûô?u‡—Ùö/+òóÑ+†EWÈ𦠠 vhڔVüNe~	bKºé€`22#[4´ÌëέsâJ“
þ"º1mþª\i­Á_@э¾·íçw¦/ÿ¯(òi?ŸÅ,ûÕü¿ä°MÎüPáÃ~¯þ÷<þŒ?;þWå–5ýñ׏¿’cü¯*Úß~Íòÿ¢"ßtŠ˜Ë{D鯻ix@1vð“©)ÚÂó`®CëÐys˜»çüsZkÅsþ窱(ñ9—\ü’
\&·¾d©uEþ$Ü‹øoÚü
MÿÃ~o||ɍï{üVÿS“Ö›Ԧ"ÀÜòÁBZ]ف·E†²Ơ%h4$ÿAAˋVQöº2oHíui7ªhñ×rù\«ù­ÄÕæóYŽjð7Pèrð÷ø¥ÁßôíœÕáà¿Iû}Åߤ"Ã{ü_¼|ßþ÷ºþ菿¾ýR™Œ\–ó:TÐä‹x³oyâ¶+…⣪8—xM´ÀÅó™4óÿSŽü笢ýc¨?øÌÿ\ùï–çüs]õ*l«͐ÚWä÷áV*Ÿü~œ+à•ï°OÓÿžǿûfÿ÷{¶ÿßtc?ª:߾ê7¢i2<+(h:òÀÞåí'ÜÃ`؊ģ Èßw|/ô㍝ßÚ~BñYEŸÛü“¸ETîl›ßû}úŸÏJZü»°ßóøoØüèðɧÿ}Æù^ãóϧÿûãþ֠nä
ªÝ7آ’·ÊQéoO
âö²3ŸùÇnš˽÷ã©ÎGL]-veè¤É/bMñš9òßÏù÷æ•þª&•nŸüN¿¦Éwø¿¢Èï@…Ý'¿ðPûßüpž…OÿSûPqȇ.¼ù-“¡¬h@AAÏYEÉKÊüš]€ÀCb§&ßљةØTµ®^¦ø¬â“ߥh
×Âúô?>ý_yŽA5þç¼Ú_sØï{þw=DëÏ)Œÿ}ø´د&òØõ$WÆ+ti+hø#ÌñJ“߆ü³ìqDQÿÖ<×_jª œ:íµƒµ¼òQ}˜ù‡ÿË^ãϿÿ+¿70x]WýV=$ûd֡[P¯0ü+¨êòÀ݁ê,Žâ­\Iå[°jVWUP|¯¢åÞæwa­òÉçw…O~·Üü¤¡šƒÏï
Ÿü‚æø?ùù»Æߧýü®ôðÿÃÏñW¶øU¨
¹ŠW~ÿ æÓÐiˆÝ8fû©ªÐ!®ºíK_A]¾Á-vGÅ>œû§ÜµúTäJô
tF‘Ÿ÷ÿaMñZêCU×ëß|,n¾ù^[àpÍßQä1þ³ÿO8ìßUæ{ÝՑløjÁì‚*PWþ2ác•¯
j‡®AuQI™¿½øјäÈýš|ëú_Šk•OþIM¾uý/ÅgŸ|ÚÿЌ?™–Šªþ_|ó6þ'<ói¿ïøóêE~Éâ¯@ì€QíÌ`RN®ÒáÓú

zæË,<õ ÆÏA]&¿‡Ûù—ïú‡¦Æ`]‘?éHÀ7”ù>í÷lÿ˜Âø+ðüÿðÄÿæôþ@u&û&áÃ5Ÿ·”oa+Ij†(lÁb‡"cŒ³Šü­'çdßÎ0®xֆ#›TL@Ö	×
5û|®>ù“xïsüéŸüqßñ§Èßôìÿ-WüãeOûÇí_wGÇ?¤t
Ì[ДÇx0YU?$xäÒ7o¨ÒWPÐȯ½Æ7:y5¿v‡ۢµÎL+ò'ùז¦JޤeEþUG–oþÒCÄ_öëòW}òW<ûű«¤È_ߧÿKžÇ0“{_üY¨Ñ”†ouH7Tچ†Ùs<W¢r<Ì5äªë‚c×
-þ’ƒ¿ªÈ_vñ·@•üÒCdÿÂ;0þ®b­öéÿ5ÿãÿ5¯ëgû—ùs¿ujùŸâÏ`ÞWv`ñÐqÜ|©¾Ýϙí(>=Çõ
:iò/;òϒ¼:t]÷¨˜`º®;T´¿ìàOhòá¯|‚åuü=òä{ô?ùñß•½ñý¯?]¾ýO>oaãM,BñàÝG>üò Jº݂֠cÞ*NíAZYÖ,ªŒ«ÉÕøŽC«ZüQÇ!°œ«]ZöãT¯|—ýðÁ#ŸkE·<†¯eÿDŒÿ;=ÆíWããl¿ËóúSðhÿ6¯äVâ0þ¯÷š€rønT=ûgæÐÌÿËÿ_«¬   ÞnçëìáG?öª½ΞQÝþ`]CV:4ß~[×`û旡¼Îe¿"†|\·ióJüi¿¬>þӛÿûãkۏ«U-ÿ«ÿ¼sýño§&ÿñO½åóðIÛÿSÐt3å-b—ɏh×ê>ºÉóÁè´Ã×Ï~îßê<ÿõ%­â ®@·o‡àZ1£Äï<¬Ø|ülV‰ŸǍx6Ÿc¡Å]ü9­ñǺ`ó¹VhÙ_ˆ±^küq
÷á;,þø¬¢éÿ²ÍÇ5ìjëçøÏǬ?Sçÿ~F†Š°þ3k‡dkÈ^8Œ8(((‹. ^8氾©_Åê“7Ÿbqڇ.B9ÕóOF¿ø_ÑE~Ò`Ÿ„jH0l~I‰?Ua?“›(N‰?
ՅïÃþ!¨æà/+ñ ªŒ¿7>öXÛü%%þi÷·yÿy%þ0Tõ¸þûmÿ/<€ߕÚúcóÝ��4h ­ø‡ê¸‚ç1¹ª£Å~(Â^ÄSQßÔGv鳡øÝÒu´• Ç´Â5b¬ZüÌDþŠÅg¬Vµøïùè+‹ží_Žá{ò?ù\3µø¥·ó߬á S*ü‹×|گ4þ¯.9üÏøôoz?áx²ŸëÏυQâ_°^̜ÆKÕóoxõ8¸<™ñ¨ÀUSPPPº×Þv
¿<Eþvôö#¨Ké¦EÇÛï*TTà÷@»1ü^$7·~æö÷¿eÿ­(¿¦äÿÞûü+߱»/züß籿OÁþ!¨ì1þÉßóÿ½Ð>ù,0Øã¯`±‰ù?nþڄNfÄ/Zü«æš|JüÄgÿ™[Äø·=i¬xûåóêñ®H«{¼ª„ 3€cw"
~DK¶
H´86ŸkíïO¡wìv§¹8øo߫°¡üšƒϹ[̞ÿ•¢Ã~~gí*ð9þÅû÷ÉWH@ÝöO­Óÿ'ƿˆ„ßwüùâ‹ÿ÷â֟“žâñ¿F»‚ÿ]ëÏmnG"CaþçÀïsê†rØèãí¼"O_AAAál×Yè~ìò·rZ`¾eêÀÂþ,tꂸNƒ½€ëÖM3_˒Û&	·3ԭ›¦ ¶žfÉ?c’_¼á%3ª9ûÉûmÿOClƒ˺øpâ•۶ÿ/+ðG¡'_â	n–üãÜì`ógì‡*Ǎ?•â*ßnÿ¿þ §¡Yèd“ü]§ýÂÇÖ×M]‡PÝtíI
·d¿ÍwÛ-©vc÷^“@öü³ã~‰®}Fßц¡Vøè¤`×Ï=â֞Ç
7‹™þ~“üaè6ù¢KÇـ-ó6Ÿ>þ…½éÓÇø8c>×"×øsîîj
Î-Oÿ“OûG‚uÆ®h&ÿ”Âø;í—ñ̞¿1wÀcüIP=þ„ÿò
ö_´^œË2T„îИævžŒo£




Ò<è•§Þ_äÑ⯵϶ˆä¢Ý_µñªŌošè‡ê8q¼Ž·ÝämAíä¿뗮fÅ>E6ëÖ-·¡|†ü4c¶}ðäqÚoûÉEVþï„æ ù°ÑæoCíì~ÀØdÁï†æ#WK;ù´ÿ–U×Ñ*ْüÛ[¯¶dü3õ”¹þ¶ñO' 1¨³Aþ¼‰?0ìøßh`üÐ]¨.ªɘ“Æ|ìˆÿØù_$‡U›¿á™,`sLä¡•cø·ÉwŒ;ÎÝض“þ-üD_NA
Îÿiñ?ÿÖÉgüG×ø‰>¹mñ9vÜ.VŸv&ZÜü5Gá•cXÜpØÏ5ŒüE¨ÐàøÏBµÈ`ªvÌøq-pÚO>c˜ö7èÿnñÿMèõF‹7`pLìñçÜeїËPYˆãïÿUkü3áçaÿ†+þÄþòµí§ÿ%þç¡þ,í+&þjӅ¬ø`䏉úÿJÜן—n’‘5ß(Âjt¦ðYöùT„ø¼e¨||÷å°V*1ƒ‚‚‚BH­Õó½—þ‚‡iÌÛÝ^é<š4‡½¡½?û›wžùrպá`ê!?ÓöZé|¾ð'vò»3ì>:íGŸXþãéÛV¶±”£ü|áߣüñ?ÄJ³à5(Ý"×[:¯\ö÷¥äö@Ÿ”"AUø|{èâ÷Bà¿Ñóœ$—ÂìˆØ?A¾ñ¿2ØEbÇ_‚ño³|z­AãÂ,Dìƒ^‚­â“ÍïnÀÿäñܤ‘KßàVS„¡6 ÂÌGøŽø³‹{Pñ~
å;ÖYECv"]_”xï‰t»Œ¿v¼ýn¾¼…퓉ò9‡ØÅcü_‚&ÅæNJì
*EýϿáßÚó?&þ¸&]|Ú@[¤£ìj$þòþ˜ÄJÅæÛñóf›>éÙþ7ü²ÄØX$þÛÈÿ—¢ãÏ1CuŸê=rü÷ԺÓ~򹖋oW §mÿËÏ^ŠŽ¿¨Üà6>ÎÉXÿÓ‰­Ոÿۭø'3A±ÒúÏQˆúÿªÅϓ/jåPwÆdÇßmÿËÎõ§iž;þŠ1|v‘Oѿ—R;#̶ÿøùW–B\>^¢ù/ëÏeÃPäsþU®¥§ÿû­ø/iÞHÅ-àQ,ñªäfAAAAA¡ä_üòfdz¿Åî‹À3{»ï@'ÉÇV„¬÷WñÀH¦|ʛ¬®šÜ5‰3’){ÛÇíÏÈÿ+äF·Î ™`µ«øÀ=iø¿
Z2	¯‘Ùr‚dÎåÿø=Ð-r\’®#Þ"ââ›økfü_:Žéð¿‹ߟpüÏ
ƒ] u\
˱m„OÿÛñw/òÿcøÉÏÿ8ڎÏ1e7@c|‰?·ýÂw¯Uv,â˜6Äçï`KÍߧý2ÿ]|þŒ±9èâӗ<Eüòé;èÿØõ'žÿÓ>m¡O{ý±ãÛÁ\¾gLrlX ½ë⣓”¶54þHælÿ߁
ùH"™Ä~Šö7ä®?ô?ÏqÂá¦,ÞL8™îñgüí»ÆÛD¸¶шî$,OÿsŽì69þ‡Ð麔Ɉ‹¼H"ßŜ‡Ú\Œí—õçÅhW⥔»´ùÝ;ÿÓÿ×2ì_>ùíÝTXÉçß
̥¬¸öøÀ;
A¹ÈVY‘Å[jdÒQPPPPP(eØbÌÎ#Þ8 vضÕö˜ďBG€Ùz’¥V¬Ηm¨Wn9Èê˽â›JÓubó‹ñßê¸ùS^koy¢6-ÕiùÿÙhÂÉv‹œyáûäÙڊø¿խ_7¢\Ø¤ðˆØf‘€ɊËÿ}Âofë_¿aâ­ “K°^%“lc?~¼ÿ%þ“Ø?ޤü§|Êî$ðì."“lc?Dàoñw\üná7ÒbÞ[nç’4Þh%ö—È7öÇÅß&T”­¯ÇÆ?ìeŒr¬î¸Ø[úokïÓíBŸÏdÍbÿq|Ž
c„¿{Ûŧoy>c63!¦h?˜ã¿ÿ7µþÐ7ÂßpðÙQF#ñW"ߌ?c…¿cóïß@üÑ~úˆ±²íæï1ÆȺÿ3òéÚÏ߉]ÿäm~#öoÇøŸÅ=®5¶ÿù3ƿ=þŒǓ֚×ÓÁglñ–ÿ‘´FãŸ|n[4Åʡ&¶pŽñ?Æßæ—È7ãq‡ŒfE?qüÝñç^ žOéeùE_Dÿ²›LŠQ©MûíùoûŸ…¸|ÞÞ2/yüoZ»Yñ¹þ®H!ô¨ë®ÒËÊÿ҉“Í9AAAAAAÁ	
‡Û񼋟î氕DƒËý엥…øy(/ÉgÖo“nZ[^ªÐÔ.É_ö@LŠȳU3|+ùKC‹HüxSˆðºíÿ#Qo•»ˤŸ×i»™nû…߬ÿû &w£!þl„ÏÜ$Ü9î‘ѤÊд‰E¶	~»ø®Ö4_üŸÐ~Æ}eøÕùóP>ÁüãA~ªö'X8F䷁q¥Eû«Æþ$ñÏ)º¿hÿ%¨ܢýsä›õ‰s£öóofSðÿóP’«Œ•¼Œ]¥YßÃÞnØÛL̵º™øãZ\iñY{þU`²;çjZ]­b?ãڊ»ÇBй˜vü=hýÙG¡µ-Ë.‰ÿ¹ÿ„_Œ,ì—"Œè‰Ïþ@óZrn¿ÊìY-(((((HĎ;ñS¸U"úÃÖ~&6YŸñÔ-oÎ6¡¨/ÂϪó¨
Iåº#ñ_¾Ùö—6çY‘åÒ=貹íN¶]¥åÿ%<Œº¹ñöÓÿ­¿¿W$b‰ƒþVý®
úp9a"~-AÝ~¢Ã%™Ìñ¡_ΌZLÈ7þï1|tE$²Ÿc…šü"ùMÚ_l6þø»ܪ%1´œ°pOŠ7]ͮ?äs̄_Jh*Eì§/ñ+ǚ!áWšÿÞ&×?ÚO¾åÿÄö›ùŸ¸ðK>cVlX‚Ú®…í+ôUÔþÅö¯b¬òÜã/ñ×Ýàúóücÿ«T;Q„ßÍÇð NlM‡ëžÿEhÉð%ÆP|ʪ“ڎÿ4µË:ªv 1Ÿ¡X4?óÂvË]ÃAAAAAA¡¤²ŸœíÒl!æƒ)Z¶U¸Ü+/I‡9L‡[fù°Èmy9ä{š€:…Ïø¼:÷Y9Xú´&‰ʹŒíoG'9��6¥Û`êHÛ~$Ͳ¬-Jw„/öÛü7ÈoúàxvîH0J†°¶¬-NëòÙÎBmÂçÙ_<ܶ©ø§Ïè;Ú 6Š7\öÿ\Zþ>cˆü‚øv^X;þ]hCøã6Ý	iÙ?!Éð+boUøûâÿ%ñQ.
ûY„ùNû-ÿÓ·Èû‘ùגýè°`þ„06ÈtŒI|Tˆڏ-3Mñù7œ;âÿ<4&ükÿ×ȖŸ-¹Æ_
MòoñZfÃÿ¯CwcâʋﭢkKñ×)¾]qÄÿ–ð§ÉÆçMí;T쏮?óÖúsºµakZ«L;þ¹vEã,ס(›ÃzÝëÏ í”nÂÌÏQdüqî/̺b‚‚‚‚‚‚‚þ~ó¿pßú¿†IEND®B`‚‰PNG


IHDR22?ˆ±œIDATxÚåZTUU>¼
ä‚NkeÖhi-³\=F)S›Y-W&
"¶LC³–	ltÆÖô -_ùŘXBáqF	ð…"	‚—‡©¼y?.¸/Ξï;‹C(÷
T³ڬoÝã~üÿÿí³÷¿ÿý¥¾–””·«!ôµüv‰œ={öÿ“HPPxKeeeöMMMN­­­wšL&³Ù<Àb±¸¶··kdYv#ðì†:
Ú\Ñgú:766:;Ø$´bÅ
â—!’——çÞÐÐðHKKËX£Ñø2Œ£çÀø·@â ϋQ÷&Ú^GŸéèûb}}ýÈüüüAq{ˆDEEI‘‘‘…YUrùòeûØØX§«W¯z€Ä3z½Þß`0,Çlo€Á@Œ?ç€4<ŸA]<p}ÂÑ÷ãææ怚ššçsss8zô¨æðáÃNsçΕ\¸ز‰¿}"¢´ú&*++Áð§&ãÜvKûJ!‹0ô9œҁ| ¨ê€z ¸9ÀYŒ;,[äÝ ¶¦­­í¯:ª*Ï8Þ4qªM}"¢2·úFðÜðÆAñ2Ìî´`íV ¶™9¦£®
²r±ovCv€V«ò“ÞÈԩS%ooo>v#P^^æÖÒÚ2Æh0¾a6™×B}|ÇLƒÅ ®7_y5y"¥쬈¿/åLjor¾{/~E(Ï1ù1hûV¤”že_ŽQÆv#ÞN.äGaÿbÿ<Ÿ“›s÷Ío…6Ò֞‰X+˜©'±I7b³žǚ¯à,2 JKEbA‚ؒ"‚¾}GøFOãw?/Fo{Bx†<B(Ï/ Žmìþñ]вë #{h'–ð+¦¨DúæÃsórÝêêêž0´‚°ÎÁtƒ s›(n(IÅIrxf˜¼âØßeÿý~òŸv“Þ4T¸­ ¤%!ý³xfÛ؇}9†c!ƒ²™,Ð!c©eãͼWQQñlhÅξ©­«ý#öÃg³å;nÜE¢¨¡P„žß*fð—½ÂÇɏ…<*Ûø <ä³Áòݟº§íiü
`Û؇}9†c!ƒ²(“²ÕÒh6[ҡ;gÔØ‰ Âjƒ¯¯¯cFFÆýͺæ…ð*ir»ÜJé:ƒNäTiŗY{`ÀLyø¦abà'áü/GÅPÍJ#…WøXñҞ‰bbċŸYÇ6öa_ŽQÆReQ&eSt±Ì2Z[ZßÊÉÉdÅ)¶‰¼ÿþû<­ƒ+œO…3 J°ȲB⣓ŠIäG?.߻ÆC1Æ}•«p¶®+Ŵ¯§ŠØK‡Dve¶8WöÁgֱ}ؗc”±”AY”	ÙÔA]*™*¼•ÕÕÕSËËËoˆÍáT[[;~}ÅdÉç&äú-Â:æ¬Q! AwÁ.ÕwuYrt±2«7ֱM%Â1K¬£LʦŽ¢öŒÑbnO…-ëáÉ&œ8qÂQêmٲeË@¬Ë@,)’0،ÅbÖñküñ&FÈTÌ%BCîùt ÑId񑅢¡­¡ֱM%¢Ž£Êb=eSuQgGiÁËD$°h۶mn=˜<y²~ì†Çø®°Óɟ.N‚‚Y؉ŽåÜ8«
âºWŒyû?D…îZ7"¬cû°/Ǩã)K]fÔA]ÔÙe¸±­µmݱcǔååééi›HzzºéS§îÃéýg“ÁôO]Xðõ%"<#Lñ0T¨oâg#¢¾U>uQ'u-F—ÍFó—Ž?~ïùóçlÁfº£¤¤d46ÖBq\V<}pRÿ#q¹ì	w	Oõ¬*ï±ë»nã)“²©ƒº¨“ºimMÿ…mo"ôE[mÁfrÆ&Ÿˆ{Ažæ¼ê\±ùÜ&áí+Ýð€̙äúVÁ4LzçÅ’˜óº(o*ïF„ulcöå޵&“ºü¢}äÍç6Š\Ø@[`S2l†ãqH;Û$‚ˆv6”7öÇÔ–ä’3b	6èذgå!ëï“ÕMi
4†̏
׺¿ֱ}Øצê .ê¤nÚ@[žö¡°ñUÚj“âWøì×SEcÐUþöJ|ÿ«œ!q÷'î<ÐxЍÒq©t‚³MC¿¸°ª¾ֱ}طëXʢLʦîþú|ãÍ@S%r¶EÁNÚj“ܭ€«;ÂXƒcòŠvy©§1Ogl<èN¹î;eÃY§VvK7"¬cû°oױ”E™”ýtÜ]Üô"ƳN%R‚ì0ì{ÐØ$‚NnÀ"œäIT´3ü:ª3^b¨ÁSº7¥]npá„ò܋ÙYŠé#I8KâٝO‰}¹ъ8 ²y…lA£;ð.:gbPó.Á0\`71äèM!®èM¡lê .î£Q¡#Å×ÚH•H5p²n=Ypʛû#È9,&‘[--w¬½¥øMg­,-mTZZ•˜äSÀBÀ6x7`16ü²çà~´ÙIä:&ú8ì{°½G²kà§çÃÓߕsð¯í~§+î7®“l;߆­¶‰àÔtÅÝÜ!s$}¶r –ö›ëT”¶#̴ÀVÛD®]»æRZZú\¨Ö" Hë/!
mà¤Ê&‘۾@œå[mŸìÈ'ݑ™™9ÑïBS›I	+ûAÐH8©†C2lÎÎΏì¤íXëСC;vì`ˆ<¡­¥m=(Bè_=Œ7µ•¥¥kÔÅàk€ÿ޽{aºVꩄ……ݯo֯Û4õ—‹l1ÖT×lݴiӓ0Ñu̘1ö=™2eŠ’Ëá²Õ<VIc׫îðÛxÕ®^u©³3υh·÷÷üýýK½-۷ow¸téÒ$ܬ×é3)Š7EæödEÜöäuPu²4ëô%(1.\˜5iÒ$w«F/]ºTÅ
¹.¬Ň°©|jkjCëÍgr‘S“StЩަƒ²ÔtŸ{ÒViՐÆÝ%¸F_¼xñÜןvqqq²I„sø۵̞=Ûwx™ŒŒJˆÉhJ§k65+d8k³öÛHÐmxP<×=AÇ:´ÙNÐQ&IèŒ:Á…HîÑ0gÿþýÃfΜÉ'vR…o¤+W®ÜPwýúõUU•¾¸Ål²|„™…³UÜX$¶¥+{Fxí'~H™Þǔ)B‡n)S†lãaǾž?¤Le5e*ãŀãï
²&Q5µ5Keô”úPH‚dnN©ÚW×Tß[VZö
°³¾®þ"€E˜q̖қ	$¢…šÄ)yøæaX÷nX>< 	%TfŸmì3sßåœËØ)3^ÜX¬î‰Vä™S‘4ÿ“ç$öУG8ßdS¯ø0	¡üκ¸¸¸ÁÉÉɳA6aÂe¾Õ3–6ÝøYÁoŸ˜„åô쎧Ä[GŠQ[ÿ žÁóD€3Ј>!©Ÿó åuCÀ¹-ú–ÐíüwÖ:TAO…ºùàÙKJJšv:ét˜6[›­oÔ×R¹o§ÖP#.×/Ε'Äáïc•ð;JIàùe³'ÄãcPŠȯÍ•úJal7ª.¶2Îe\ÿËø62xßÁh»^éûwo~J^¾|¹¾oçî.LR4rïp«ŸÜzö3«‡܌¢¢¢5øð
’„÷ܬßÇǧ?ªð­]˴iӤµk׾"3ø¨ðja¤6K{±¤ ¤HߠÇbev* h"øª50¿̠7\jªkJi¬oܧkҭÅ[X€ÏÜ/ Iý F£±ï#‘¾¿‘9sæH˖-³C€©¦ö]ƒƒƒ}W¯^½=::ú`VVV,Öv\v".i§q“K.à"twˆtÔ'Ãè8Lž´´´'$$x#ì2bĈ;׭[ç`K?	LŸ>]O*ҠAƒø©A:pà€Õ>^^^ҢE‹¤ÐÐÐÙøïsçc-@ à]úŒ Ü%–ÀÍÇD̈Ÿ°~ýú¡¶úI#GŽ”üqé§’ ™[ñóóS÷kjjª¡k@Ä
$wqw\ˆܰ‘5XFNž<é¼{÷nǞˆ·­¬ZµJÁÏ]æ͛§8”_¬¬\¹ò¶!~³å÷—Ëæh?œIEND®B`‚‰PNG


IHDR22´6@:´IDATx^½ÔáJbQð{EoD+"—Ìe¥XZвlSÛêû~ÙÇé	z_ w±,ë
zòCZpwîzàÜú39,;ƒpa~pçœAü°GW̥’Ckψà“dÐ/ö‹’3Adϗß.Þ.Η‘E†„‰°½^Ư—½!1gåÉ Žïã;a&ƒ³21㫄¨H&ÌøÊ2¾×S’Ìx"LÜBa<•ÐD'tff„ÇM„ƒq#:áÇ0â&8W‰q DPÀ$Çøš¡qϊÜ£"|£’@‡ø‰ãŽ¥zˆn‚T†gÃÏÂ4ÛGK~mBÚÓ¦83Œ0a›�š„4¥ZǎêM³ˆJ¤Ž-|Gƒ†T·P·83Q	Ì:x×NS/Dßi Â/uÆ Ù^4$Ä*þÌäª!k&ƒáéÊK?Žâ¯ÿ‘.‚¼ôOW"˜"̣ðëÛó€ây𻆂tΤ”;ÑÐ2¾ƒ¯þ%Fãm”ÓH€yDXoþx¼5Œb‰ÇÛÖÖ!o?—(¢‚Z£c˜‚IžD­[b·ƒ*(bÁ~䰈¾`³޵ŒÝQ´»¨n‰f›ҩ„ÏÈ%y÷¥¸”fªé•Þ]\gbIˆwQgìŽÒv—©ë„]Ä4
3ãàU‚W=3³"*ñaf¯ýtCÏSyzO7{m&afƒÀ
¢2UBG¹iL˜q넎¨7­J„6n7âf܄q3UáB܌“p#nF%„™ݎ0f™3á‡0SkŒ†£aë5"¼fJ¨`­Ó8ÚƚœJiÂafED(KFrZ´„¡P™GA2/§œ!Aˆ“É"ļdˆ,^3	 #$:ò¡h·Í.ÝMIEND®B`‚‰PNG


IHDR22´6@:jIDATx^í—_h›eÅOÚüëŸ4©]׮Ý跑µ]ëæWél§•¶*¬xUôÊ!0±âUŠ"(ŽåƉ…Qo'nµNJÙ?l/4R”*N¢Ž^¸±tkeh¿.™íXº=>yyßôÅäM®„}‡@î~œç9çI>¦ÿx\šPXTP&]x)]E;qé*ÝÉýY*C9ÜðH¹QŽ2–«Tˆpò7ýƭ£9­Œœm„r•‘¼¨X¹»@ü$(N)"Öú's{ä˜â!҃ïÊãÙ_ˆ&h˜ ¢9to5ñüS,D ü_uÞ[uh@4P‚13KL‘ÊáCà·ì<ÀÒp»ɜF>”ÃU¤T%_$ŠH0܆C1‰'¢Ó]¨‚eE@„?‚«gœ<‚èÆO§¿?úÛ4I?CþúAø¥cˆU¨û{..!)Z[F?úÐ×ól63%Ñt÷æhXz1…ˆaU£áÖw››Iôb?«7q’Ȑ"Z>¦¼˜C¼¨AãÏո"Dtr6ì^þýR®11Š2*NÙElѼ˜C¾~U->D9—¯ŸÛH?qVBƀ(E>ÑãqЀðíë)IމdM­u%" ·çQ‡J¸M!®\€Qßֳ+XJ¢¹çطeæ®@-v c#ÏgI¹²l饜ÆC¨^ ù­`÷üq•%[xg	k¥<э€ðbxVܨDZ†MHzœ1ÙLrfòȱד3ú ³¨•A6¾]A4¡íÚy¢P¾÷çÆð1øýÇÄP½”¨A6»Âjù£C›+O±“Kïžysi–ÄØl½”!éÅ"îBhF»sّ^l1² Âî´A²ÔËR@Ôq©ǮOŠ/¡BÙ,%{1€H/µ9/‹d÷•ԘôA.ÊR@T«±»°/}5·èa
À>XjQ­”f²ÜK[<æȆ(­-ÿ09y„(*»¯—Ò¢eÌÂÞõ¥²)"ÊwίáIVÿÚrJ+%»A6€¨½ˆ¾´ÎŸÊg鋣âץ=ÓïˆRÊúíó¨Ï¢¼lÉu?›±d)חЅ½,{á"‘‡|v¢-f½û­×Ώ糔C:þür³+S´‘ƱCˆîÅzíà¿K™ÁVçó)†ÔãDßK›ôRèw…}¼õ4šŸvR cC2¿FïC، :õÂh'ߢ{نð3}+?Æ)B–t0̻ ÂØh©4ï‰—º­xäÄ+ù𓾺4»4ûó‡ƒý者­òo«9Dy'¦Ž1at¢Ýx=üُG±mhA‚ê¸9Dr5»نìF;:…öð÷hF=jP!N½«hˆz_A‚ì§MØ.ԄF„ïWˆâ!êÍË?ƒŒ
¡–?AÔ0دz!*
¢ƒ¼ðÁ/䃗ÁÀBéýuU—K %ëyùB
ÐLöc‚IEND®B`‚‰PNG


IHDR22?ˆ±ÌIDATx^íY	pUÕK ˜°„ÆZP*ZÁ(`±µÕV§EÑS¶©-£àR íh­F*"ˆ¸%R!{ØB“	$… „l/dݗ·æ½wN¿ïôÞéã5—LjéL§=3ޝûî=çÿòÿÿ÷ç<Ÿþ)¥²›5¾þúkeýÿu@þdåʕ4C‘‘‘êêê|»ºº†Ùl6ÿžžžáN§s¤Ëå%„è@\vww¶¶¶655‚5GG‡_CCÃà%K–ôy¼ïóæ›oÒn>ÀÀÀÁ&“iBggç“V«õyù=€¼ q»ÝïÌV<ûÐ?Ùíöå‹åÙöööŸVVVŽ€›$**Ê'::Z™ÑHHHðMLL^RR2¡¥¥å×f³y#LSqV ]á¤ñš÷`¥“ƒèíA”Þƻ!—.]‡¹ü.\¸0È •é‹î׿¤×( 5îîb,–å‡c¼Üï–2ÏVÀZ`6i<ø]ì2ÞÉʘ§s£Ýf{ÙÜÝý³¶¶¶;{BýB†©ªªº¹ý+¤Ñv¤K!€Úa愹5¦†×=>ãÒÞœsåcÎÍHÑ9¨¡ÑßÈܹs}æ̙£®½#QYQ1éóc¤Ï+ŽžžðâX%½²ۥµ¶Vv˦ãÇe]R’4ÅÄÈÊ]»dÅçŸÓxÍ{üŽÏðYõŽïjÃd¹˜;Q^ŒÍhkm
ðD£Ÿ4£qÐË3âl‘[¦F²RÖ%'˲6ɳK—ÊìY³dúԩòðøñòàm·ÑxÍ{üŽÏðY¾£Þõ=Bˆz¬q
`ÞGªMî'ãQTX8¡žnµÙ^w"ün•øcµJsy¹l8rD–}ô‘È_¾\d?õ”H
–ûFŒ1˜îK±K™ºæ=õžá³ê¾Ë98çäÀV—۝è,EßUUY9´?ûÒÜÜü#0Ì6€ÈR¶Kmt_½*K·l‘9Ï<#¿š<Yüö·E¢ŸŸŒ€hØ^
ˆf¼æ=~Çgø¬z‡ïbÎÅ9=ª$²)¶TÜÞè,Y³Ÿ9sæ4ºe ËsH'»Š}g§l/,”‘‘t@=ZÆþý¿-ân½U Dê}÷‰´ï_¦OŸ®Œ׸§Rì@PŒ0@FiQÚ?j”Ì		œ“ss
'֬Bš%‚ªç_½zux/ìJ34ìtccc˜$= Ijƒ Š^]f<ô€Ct^Æ
$÷-Žüð‡"wñbqqÝ:Q¹s§¨=xP6¤§+ã5îI|'s_xA¦=ðßSŠ%˜À@‘1c†(zã
µ†>¦µ¹¾ü„Œi¤w۰aÃPÔE(¢±«ÇåºHštÙlÌc2 :¥9‘€”JþÞ÷ęE‹D՞=¢-?_؛š„p»¥>x{²íÜ9Y%óÃÃeæ#ÈCcNJ„!CÔ|4‚ad¸×Äp ×Aóü#zÌŽ?®7;mãƍ£:ÚÛW!¥.êìd®¨ÐkBE"JËù6LÕɅwÞ]¥¥ÂÝÓ#8¼{‰p¹¤ic­®–mgÏʚøxɂgÆûúˆŠӬtëVµ¦6:b'Q+KvìØqKŸ–-[6CÒÓӃ»Íæ„V´†ÌL‘*|ë[é¤ׅŒ4H$úû‹Ôûï—֬‘"D‡Ç *šÞinátÊú”™»hëGEFK3ɵ¸¦'5ÛŽ��¾Ó'¢¢"_ø=WË˟µ:û¸8›¹ž4I†:/ÉP‰ˆAÄÃ.žõøã²øí·eCF©ԓ\`=‹Íáhí¶Zkºíöj ê"B{Cƒ¬F&éöÛE´e®U¶}»àÚôA!q»#ËËËDw8qâÄ@C µµµ~5553QXën÷)ֆ
ݷîða.¤è‹©DÊ=÷(`d"‚ @¦GòÝw˂U«عYzÁ:Q°&Hþ¬‘ÛÕÝ]#´°125		ò裏2ڪö¸Áqm*â@cP»sf<÷`C (&ìžCЇ*g
tœ?//½÷ž<þ䓂EMŠÍ|øa‘&J֮L§¬Ç#:@&"£Éâի[õ´«ÖCHv4Õfì?
!ÝsøI0¸ßI¬í ٌԌµÄñ'ž\›>P§â¿ñ
ÀLƒŸC@K
;„£¨Îà¥V.Д•¥èPuhä-]*À<¢ëÊ7Ӊ‘P ‹
*“ñü¹ßýN‚d>ЭííWñß<0و̤Y#Oj-ô"Σ¢ε›Ž“šÀ<ßÞ›>?ý ü#Ñ|þŒ¢b‹uÀT/86s&kA±
›ÝÅõëٸÜd'k‚éÄH#ÆÇF¨¢FGzÚÚTd s›	†©¯¯Ïï¶ÙLÄ6#5³Ïp
µ־€f‚šAAƒ}
?	3f/PÜ(Pî»ølÔ딊5]9F£[²Kå_{K‹ІtZ,¬	¦#AŒɀÚKä½ø¢l9uJêž‘aš¡O™ì ²©™}†M“u§S{ƃ’¦u åû	ðïy|úAçþz>Í:-“!+4½D©Á(yö	½á±&˜N*¡w�L%ï¾+†‘у£ƒlFvÔçÀܪNö µh)'J4YMØ5,›ÿ–Âð° >Ë=;¹’Ẃ¥“õéé½mœXت&˜NŒ„Þko¹E#£ç;Í
N˜Ësžú´4™>m×»aIãÆId€¤ˆÌ+°á7J­Ñë
ˆR²B6ònv.˜¾CTÎÒi:OCPGKÐ^CÐDג»aÞ@ «O ÈÙ@€لôê-µ*¶öÐ!vn}uô°"M:™.¼Çôa1† ¢µšaD™~LC¦’Ǡ6×H-¦•¤y¥V-2¦ÏÔâÞ#l°ßä]ìÑÿ(vj{s³ÒN,T${
·†ÌBÖeM02*«±	Ä@‚ Q!hs*ÕÌç
Š²þü[3‚®;
½d
(¸’¼Ý+ýÞu—ýÊö‚éìêR򃲃”Zj-Ŷ#Ã4c:1ú„Mª&e“ºAá4Eé¤vR¼ý–wô’…Ø^³ÕHš½†ËüN¯†ÈѬò/–Œ”ÕdR TãÝ܊ŠŠ|žfŸÐ"ÃA ›1
D¬¦ØDÙLÙTÙ\ÙdÙlÙtù›°GCdž‡oðqԇq†	@·
ƒÖJ¶a"/‰"â$˂•+%d….?º(7ÐàtùQÄ4Ã}•f,lÖӉ‘ ˆ(M›QÞPæ0j”=”?”A”C(ÒC¢8{¤<ßÖÁǟS¹xñâ°âââl+?DÇ-`8muu׉F:€…(ð(ô”àパË4£@¤P¤`Ô{k‚éÄH„.ÙYw ˆ)YŽkI]4Ú4Ñhq:¿‚oËóóó§ãTÒXk¥¤¤øÆÆÆN>yòdX[ggŠrÀáP2ž’š‹ÅhDÉMpÜO8 Å9JtÖ%»Öìt*ga³&˜N”ü
·Ü
¨-E)��§¢Ólށ|‰ˆˆo¬~§OŸNï¿yóæiMMŸðÌÖ{c¥Kvn‚(W¸)=2n-—iná½C‚E͚PéÄÍAÀy½רhcó潱⻜­m߶mϺü&Mš4'¯1o޼ “iØá,f2_·Õ
	!­å8Á02¤HÖU,ٌÔìÝì8D©æl‹an“uǴå6šÛi¬Å5õH»&¥ ’7ÂÂÂôb߶zõj_ÔËcÕÕÕëº-–“JÛlêܩ<"‚§zŠ©Èð	ÜO˜¢£e;XJõá­O€¶ÝÕ{÷RžX°¨c	B›å8|àZ\“Qí2›¯½ØÁÎ

ív_}õUe«V­ºî>N+n/((xª¥µu3NË/cBnÄÕQ
l†‘ѝ Qì充QгiRR;ÑÄ5MÜSGEyK–¨£#!ñ=¦#A<jX]98±vUsK˗ ¡¥دO6lX¯µA½¡;v,t÷(ǗçÕviC0ŒLÎìق‡kŒŽ¾9ÄýSŽÀ(iJvà›{)V±£¦bʪHpn§v@çp:˱Š‡bì‚|½î•yŽk55wÌs ÖÏ91€ÎQivG6'BCÉ0’tÉ>£™Rbˆ=G¦{®?2å³ÒãÈThG¦Œ„þ»C­Åf‹G/GmLìÏÙ/µ–2Ïá°Zµ471ÕÔ,¨2™¢›ZZª@«Š-UU²ñèQYöñÇ2Å
©±ï½Wî9RÄj`vÓ4 ˆ¿“x†§ò$	R,±
[¯	‰Ht¢¡A_Z„žôݬÌLß~;v,M¡…¾uFFƝøµuEYYY¬Ùb¹L"㚰p½àO¥ÚÏ
9O?- ƒ§B¹†O‚¥L˜:’ÙøNÿYÍÎûgÔD-Ò)!뚃½§?^™á3fŒ!¿îØᇚ¹¯ °ð8÷ZÞÔÚú!PPÕâhSPt•”Ȗœـ¾r
]ìÄx”UCŠ“¢	¸9;[v^¸ ñ#«S¬
/'$µuuK ufø÷ˆ±?^™Ç8uêԠ¸ØØGQ;kœ
BJVt{ž"˜Ë܌€FÍ‹Ù\ç7çææÎ۹sçmÞ~ ÐuÓoõøûŸîÿáµׂêjkƾ`!óÂ-.׆»=©Ýf+3»Ýõ,V¨ƒÕkŸ&Xî_÷ÅÐM§ÛÍæô֎ŽôÖÚk×V@?ÍLKKcÎôŠÄ7Bã9‚ƒƒ}RSSÕøyzÐ쐐¡Ÿ~öÙ8h´<iq2;»Æ#`¸£°N¶X­û@åÑ ”Hˆ¿
øï‡'%%Í^»víDüvîkTÄ0þ|eßhlٲEٍF\\ܤӧO/,--}'/Bý¾„Z{@^¨Å(âߢˆ&šÀO@¤Îx뭷î+ƒ~=›<y²ϔ)S|þmBRٍÆáÇ}óòòüÁlÃáp€ÄpX€ GùcSä}Ë-@~™™™C 	b€‚ ˜›6֭[§ìß=vïÞí³}ûvŸÿØX¿~=í¦ùŸÄtŒ·QøØIEND®B`‚