Login
    
Login

25 June 2009 ~ 23 Comments

ตอนที่6: การติดตั้ง Wireless Interface (VDO Tutorial)

ห่างหายไปนานกับบทความ VDO สอนการใช้งาน วันนี้ขอนำเสนอ การติดตั้ง Wireless Interface เพิ่มจาก pfSense Box เพื่อแยก Subnet ออกจาก LAN Subnet พร้อมทั้งระบบ FreeRADIUS Authentication พูดง่ายๆ ก็คือการทำ WiFi Hotspot นั่นเอง

สามารถนำไปประยุกต์ใช้งานกับองค์กร และ Internet Apartment ได้สบายบรือออ..

wifi_hotspot_s

หัวข้อการบรรยาย

- Introduction
- การติดตั้ง Wireless Interface
- กำหนด Firewall Rules
- กำหนด DHCP Server สำหรับ Wireless Interface
- ติดตั้ง Captive Portal
- freeRADIUS Configuration

.

ปรับปรุงเพิ่มเติม

การเชื่อมต่อ Wireless ที่ LAN Subnet และใช้บริการ Squid + Captive Portal ปัญหาที่พบก็คือ Client สามารถ Bypass Captive Portal Authentication ได้ง่ายๆ ด้วยการกำหนด Proxy Setting ที่ IE หรือ Firefox

การเชื่อมต่อตามวิธีดังที่กล่าวมานี้ (ตามวีดีโอสอน) สามารถแก้ไขปัญหา Bypass Captive Portal Authentication ได้ เนื่องจาก Squid Proxy นั้นอยู่ต่าง Subnet กัน

ตัวอย่างตาม Diagram จะพบว่า LAN Subnet 192.168.10.0/24, ส่วน WiFi Subnet 192.168.3.0/24

เพื่อทำให้ Firewall มีประสิทธภาพมากขึ้น ควรแก้ไข WiFi Rules เพิ่มเติมดังนี้

WiFi Rule Summary

wifi-1

WiFi Rule Details

wifi-2

คำอธิบาย : อนุญาตให้ WiFi Subnet สามารถ Trffice ไปยัง Internet ได้ ยกเว้น LAN Subnet

โหลดไฟล์คุณภาพสูง หรือดูวีดีโออื่นๆ คลิกที่นี่

บทความที่เกี่ยวข้อง

 

23 Responses to “ตอนที่6: การติดตั้ง Wireless Interface (VDO Tutorial)”

  1. noktualek 25 June 2009 at 10:35 am Permalink

    ขอบคุณครับ

    ขอถามหน่อยนะครับ
    Authentication แบบ Local กับ Freradius หากเราไม่มี Radius ตัวอื่น มันมีผลแตกต่างกันป่าวครับ

    ดูเหมือนว่า Authen แบบ Local จะใช้ของ Squid ดังนั้นจะทำ Transparent ไมไ่ด้เราต้องไปกำหนด proxy server ip ที่เครื่องลูกข่ายเอาเอง

    แต่หากเป็น Freeradius ทำ tranparent proxy ได้และสามารถใช้ Free radius กับ Server อื่นได้อีกเช่นกัน

    ดังนั้นใช้ Free radius จึงลดความยุ่งยากในการใช้งานของเครื่องลูกข่าย

    ไม่ทราบว่าผมเข้าใจถูกต้องหรือเปล่าครับ

    ยังไงก็ขอขอบคุณสำหรับบทความดีๆ อีกครั้งนะครับ
    ปล. มีบทความสำหรับทำ logrotate ของ squid ให้ได้ 90 วันตรงตามพรบ บ้างป่าวครับ
    noktualek@gmail.com

  2. laontalk 25 June 2009 at 11:27 am Permalink

    Local user ในที่นี้เป็นของ Captive Portal ครับ ฉะนั้นจึงสามารถใช้ Transparent proxy ได้

    การใช้ Free RADIUS หรือ RADIUS Server อื่นๆ เช่น Active Directory ของ Windows Server ก็เพื่อเพิ่มความยืดหยุ่นในการใช้งาน และระดับความปลอภัยผ่าน radius protocol นั่นเอง

    ส่วนการเก็บ Logs 90 วันตาม พรบ. คอมพิวเตอร์ลองสำรวจในบทความ Squid Proxy + Light Squid ดูนะครับ

  3. noktualek 25 June 2009 at 8:37 pm Permalink

    มีเรื่องสอบถามนะครับ ปกติแล้วเนตเวิร์คที่มี Radius ตามที่พักอาศัยต่างๆ สัญญาณ SSID ของ Access Poin ก็จะไม่มีการเข้ารหัสไว้ เพื่อไม่มีความซ้ำซ้อนในการกรอกรหัสผ่าน

    หาก authentication ผ่าน radius เรียบร้อยแล้ว package ต่างๆ ที่วิ่งกันระหว่างเครื่องลูกข่ายกับ อุปกรณ์ Access point ตรงนี้มีความปลอดภัยมากน้อยเพียงใดครับ

    เพราะเข้าใจว่าเมื่อก่อนเราใช้ Wep key ก็จะถูกเข้ารหัสไว้ทำให้ต้องเสียเวลาในการแกะข้อมูล
    แต่พอมี Radius เข้ามา radius เข้ามาขั้นตอนการใส่ user name password ตรงนั้นคงปลอดภัยไม่มีใครสามารถแกะดู password ได้ง่ายๆ เพราะคุยกันระหว่าง Client—Access Point— Radius แต่เมื่อ Authentication ผ่านแล้ว Client ++++++++Access Point—–Client/Server

    ช่วงเครื่องหมาย ++++++++ จะมีใครเห็นข้อมูลมั๊ยครับ Radius จะเข้ามาช่วยอีกหรือเปล่า

    แต่ที่แน่ๆ Authentication บน Squid ผมว่าน่าจะปลอดภัยน้อยกว่า Radius

    ถามเพื่อให้เกิดความรู้นะครับ ใครเคยเห็นบทความดีๆ เอามาแปะให้อ่านบ้างนะครับ

    ขอขอบคุณเจ้าของเวปที่เผยแพร่ผลงานโดยไม่ได้หวังผลตอบแทน

  4. laontalk 25 June 2009 at 9:27 pm Permalink

    ขอคุณสำหรับข้อมูลที่มีประโยชน์นะครับ ที่อธิบายมาทั้งหมดถูกต้องครับ การแกะรอย WEP / WPA / WPA2 (ที่เรียกว่า มาตรฐาน Wireless Security) ทำได้ง่ายกว่าแกะรอย RADIUS Authentication ซะอีก

    ผู้ชำนาญการสามารถทำได้ภายใน 3-5 นาที (อันนี้อ่านมาครับ ทำไม่เป็นนะ) ยิ่ง package มากยิ่งง่ายสบายอุรา

    เมื่อ login ผ่านแล้ว ทั้งแบบ WEP – WAP etc. หรือ RADIUS Authentication ก็ตามที (ช่วงเครื่องหมาย ++++++++ นั่นแหละครับ) หลังจากนั้นก็ตัวใครตัวมันล่ะทีนี้

    ดังนั้นความรับผิดชอบจึงตกไปอยู่กับ Firewall & System Logs อย่างน้อยก็รู้ และสามารถใช้เป็นข้อมูลในการติดตามผู้กระทำผิดครับ

    จึงได้มี พรบ. คอมพิวเตอร์ 2550 ดังนี้แล

    ศึกษาเพิ่มเติม Wireless Security
    http://thaicert.nectec.or.th/paper/wireless.php

  5. noktualek 28 June 2009 at 1:05 am Permalink

    มาเสนอเกี่ยวกับพรบ นะครับ ตอนนี้เราสามารถหาหลักฐานการกระทำผิดของการเข้าเยี่ยมชมเวไปไซต์ได้จาก

    var/squid/log/access.log อันนี้จะชี้ว่า ip ไหนออกเวปอะไร ต้องดัดแปลงนิดหนึ่งเพื่อแสดงวันที่ของ unix เป็น วันที่ธรรมดามีวิธีสอนในเนตครับ

    /var/log/radius.log ตรงนี้สามารถเช็คได้ว่า วันที่เกิดเหตุ ip ที่เกิดขึ้นจาก access.log มีชื่อ user อะไรเป็นคนใช้ และ MAC อะไร

    ถือว่าเยี่ยมเลยครับ สามารถระบุตัวตนผู้กระทำผิดได้

    ตอนนี้หาคำสั่งเพื่อ rotatelog ให้ครบ 90 วันครับว่าจะสั่งให้ rotate access.log กับ radius.log ได้อย่างไร

    ใครมีคำแนะนำแนะนำด้วยนะครับ

    noktualek@gmail.com

    ปล. ไปเช็คใน squid light ไม่ได้ละเอียดแบบนี้นะครับ

  6. noktualek 28 June 2009 at 1:08 pm Permalink

    เกิดปัญหาแล้วครับ… !!

    หากความต้องการของระบบเราคือ
    1. Authentication ด้วย Hot spot และใช้ Free radius
    2. ใช้ Squid proxy และใช้งานแบบ Transparent (ที่ใช้แบบนี้เพราะไม่ต้องยุ่งยากในการไปเซทที่เครื่องลูกข่าย

    เกิดข้อดีคือ
    1. ใช้ง่ายครับจะใช้เนตทุกอย่างทุก Authentication ก่อน จะ ping ออกไปข้างนอกก็ไม่ได้ ออกเนตไม่ไ้ด้ครับ

    –แต่เจอจุดบกพร่องตัวใหญ่—
    ลองใส่ proxy ip ใน IE Firefox MSN ดูครับ เท่านั้นแหระออกเนตได้โดยไม่ต้องมี username password เลย

    ผมไม่แน่ใจการทำงานจะเป็นแบบนี้หรือเปล่า

    All service จะออกไปข้างนอก จะ default ไปยัง IP hot sport : Port จึงโดนถาม User name กับ Password หากใ่ช่ก็ออกไปใช้งานได้

    แต่เจอวิธีนี้

    All service ออกไปข้างนอก บังคับไป Ip proxy : port ซึ่งเรา set เป็น transparent ไม่มีถาม password ให้ซ้ำซ่อน จึงวิ่งออกไปข้างนอกสบาย ปร๋อ…

    แก้กันไงดีครับ
    ปล.
    หาก Authen ด้วย squid อีกทีแล้วจะทำ hotspot ไว้ทำไม (จริงหรือเปล่าครับ)
    อ่านเจอในกระทู้ทำ iptables ให้ drop port ของ proxy ดังนั้นจะแอบใช้ proxy ออกเนตไม่ได้ สงสัยว่าทำแบบนั้น service proxy คงต้องปิดตัวเพราะใช้ไม่ได้ อันนี้ผมเข้าใจถูกหรือผิดอะครับ

    ืnoktualek@gmail.com

  7. chatri 28 June 2009 at 8:48 pm Permalink

    pfsense กำหมด Captive Portal กำหมด user name ได้
    Transparant ได้เลย
    Report ใช้ Lightsquid
    มี LDAP ด้วย
    ผมว่าขาดอย่างเดียวแหละ ยังเปลียน IP เป็นชื่อ user ที่ให้ใน Captive Protal -> user name ไม่ได้

    ผมถือว่าตัวนี้สุดยอดแหละ
    ขอแนะนำด้วยครับ
    ขอแน่ะนำเรื่อง block web ต่าง ๆ ด้วยนะครับ

  8. laontalk 29 June 2009 at 11:15 am Permalink

    จุดบกพร่องที่ว่านี้ วิธีแก้ก็คงต้อง drop และ return port ที่ iptable ล่ะครับ เพื่อป้องกันการ bypass โดยที่ไม่ต้อง Authentication

    หลักการก็คือ เมื่อ user กำหนด proxy เอง และออกเน็ตได้เลยโดยผ่าน port 80 ดังนั้นเราจะต้องทำการ dport 80 และ redirect to port 3128 เพื่อให้มีการ Authen ก่อนแล้วค่อยเล่นเน็ตได้

    วิธีการดังกล่าวไม่น่าส่งผลกับ Proxy Service แต่อย่างใด เพราะ Linux ค่ายอื่นๆ ก็ทำแบบเดียวกันนี้

    สำหรับ FreeBSD + pfSense อาจมีข้อแตกต่างอยู่บ้าง เบื้องต้นยังหา firewall iptable ไม่เจอเลย ไม่รู้เก็บอยู่ที่ไหน

    ระหว่างนี้ก็ใช้วิธีแบบละอ่อนไปก่อน นั่นก็คือเปลี่ยน proxy port เป็นหมายเลขอื่นที่ยากต่อการคาดเดา

    ช่วยกันนะครับ ปัญหาจะได้รับการแก้ไข

  9. laontalk 29 June 2009 at 11:25 am Permalink

    .
    #IPTABLE SCRIPT for Squid proxy

    $IPTABLES -t nat -F
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp --dport 3128 --syn -j DROP
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 192.168.10.0/24 --dport 80 -j RETURN
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
    $IPTABLES -t nat -A PREROUTING -i tun0 -p udp --dport 80 -j REDIRECT --to-ports 3128

  10. laontalk 30 June 2009 at 10:02 am Permalink

    K.Chatri การ Block อย่างง่ายลองใช้ Squid Proxy ดูครับ ถ้าต้องการให้ได้ประสิทธิภาพสูงต้องติดตั้ง Package Squid Gard เพิ่มละครับ

    วิธีการติดตั้งและใช้งาน
    http://files.pfsense.org/tutorials/squidguard/squidGuardQuick.htm

  11. noktualek 30 June 2009 at 3:32 pm Permalink

    ผมแปลกใจทำไมเครื่องผมไม่มีคำสั่ง iptables นะครับ
    จะลอง iptables -L ก็ไม่ได้

    ส่วนที่บอกว่าให้ใช้ port อื่นที่เดายาก ผมมองว่า user บางท่านไปเอาโปรแกรม scan port มาใช้ ก็จะหาเจออีกนะครับว่าเปิด port ไหนไว้บ้าง

    ขอถามหน่อยครับคำสั่ง
    #IPTABLE SCRIPT for Squid proxy

    $IPTABLES -t nat -F
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp –dport 3128 –syn -j DROP
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp -m tcp -d 192.168.10.0/24 –dport 80 -j RETURN
    $IPTABLES -t nat -A PREROUTING -i tun0 -p tcp –dport 80 -j REDIRECT –to-ports 3128
    $IPTABLES -t nat -A PREROUTING -i tun0 -p udp –dport 80 -j REDIRECT –to-ports 3128

    สามารถทำงานได้กับ pfsense version ไหนครับ
    แล้วพอจะทราบความหมายแต่ละบรรทัดหรือไม่ เพราะจะได้ช่วยกันเขียนคำสั่งให้ครอบคลุมมากขึ้น

    เช่น user เอาไปใส่ใน msn ซึ่ง วิ่ง port อื่นจะทำอย่างไร รวมถึงพวกโปรแกรม free proxy อะไรทำนองนี้นะครับ

    noktualek@gmail.com

  12. laontalk 30 June 2009 at 9:25 pm Permalink

    พอดีพึ่งไปเจอกระทู้นี้มา อันนี้น่าจะใกล้เคียงความเป็นจริวงกว่า เพราะมีคนถามประเด็นนี้เหมือนกัน

    http://forum.pfsense.org/index.php/topic,13490.0.html

  13. noktualek 2 July 2009 at 5:18 pm Permalink

    ใช่ครับมีคนเจอปัญหาเหมือนกัน แต่ยังไม่มีวิธีแก้ไข ใช่ป่าวครับ

  14. atom007 3 July 2009 at 1:11 pm Permalink

    สวัสดี ทีมงานละอ่อน ครับ ผมมีข้อสงสัยเกี่ยวกับการทำ WiFi HotSpots ครับ
    1.การ Authen ต้องผ่านทางการ์ดแลน ที่เป็น Opt1..เท่านั้นเหรอครับ(หากเอาไปวางไว้่ที่ Internal Network ได้หรือเปล่าครับ)
    2.หากต้องการติดตั้ง Ap 10 ตัว เพื่อให้สัญญาณไปได้ทั่วทิศ ต้องต่อจาก Ap ตัวที่1 เท่านั้นเหรอครับ ที่ Internal Network ได้หรือเปล่าครับ
    3.หากต้องการทำเป็น Load Balancer ต้องกำหนดอะไรเพิ่มเติืมบ้างครับ
    ขอบคุณเพื่อนๆทุกท่านครับ

  15. laontalk 3 July 2009 at 11:02 pm Permalink

    ตามปกติแล้วจะต่อ Wireless ไว้ที่ LAN Subnet ก็ไม่ผิดแต่อย่างใด แต่ที่ต้องทำแบบนี้ก็เพื่อระบบความปลอดภัยขององค์กรที่ต้องการแชร์ให้ลูกค้าใช้ Internet ผ่าน Internet Gateway ของเรา แต่ป้องกันไม่ให้อยู่ใน LAN Subnet เดียวกันเท่านั้นเอง (คำอธิบายตาม VDO)

    ตาม Diagram จะเห็นว่ามี Wireless ต่ออยู่ทั้ง 2 Subnet

    ถ้าต้องการเพิ่ม Wireless ก็นำ Switch มาติดตั้งเพิ่มแค่นั้นเองครับ, หรือถ้า Wireless ตัวที่ 1 มี LAN 2 ports จะต่อจากตรงนี้ เพื่อขยายไปยังตัวอื่นๆ อีกก็ย่อมได้, หรือจะทำ Roaming + Repeating ขึ้นอยู่กับสถานที่ครับ

    การทำ loadbalance ถ้าออกแบบตาม Diagram นี้ก็ต้องเพิ่ม LAN Card อีก 1 ใบสำหรับ WAN2, หรือยกเลิก WiFi (OPT1) เพื่อทำเป็น WAN2 แล้วนำ Wireless มาเชื่อมต่อกับ LAN Subnet แทน (ปัญหาของการต่อ Wirless ที่ LAN Subnet ตามรายละเอียดด้านบน)

    ขึ้นอยู่กับการออกแบบครับ ว่าต้องการนำไปใช้งานลักษณะไหน

  16. noktualek 9 July 2009 at 11:49 pm Permalink

    pfsense ใช้โปรแกรมอะไรทำ Firewall ครับ เพราะลอง IPTABLES ไม่สามารถใช้งานได้

  17. laontalk 10 July 2009 at 2:54 am Permalink

    อันนี้ก็ไม่ทราบเหมือนกันคับ ลองดูในกระทู้ pfsense เองมีการแก้ไข code แปลกๆ ไม่คุ้นเหมือนกัน เล่นเอางงไปเลย

    ตอนนี้ถ้าจะใช้ Wireless ก็คงต้องใช้วิธีตามที่ผมได้แก้ไขเพิ่มเติมไว้ด้านบนนั่นแหละครับ ป้องกันการ bypass proxy setting ได้แน่นอน, แต่ถ้า Wireless อยู่ที่ LAN Subnet ก็ยังคงมีปัญหาอย่างที่ K.noktualek ว่ามานั่นแหละ

    กระทู้ pfsense ที่ผมไปถามไว้ก็ตอบไว้สั่นมากๆ ไม่มี Guide line สักนิดเลย

  18. noktualek 16 July 2009 at 3:02 pm Permalink

    pfsense ใช้ base on FreebSD

    ดังนั้น program firewall ที่ใช้จะใช้ในอีกตละกูลหนึ่งครับไม่ใช่ iptables บน linux

    ชื่อโปรแกรมน่าจะเป็น ipfw

    การทำงานนั้นเคยได้ยินจากผู้รู้ว่า ทำงานสูลี ไล่เลี่ยกันกับ iptables หรืออาจจะดีกว่าในบางแง่ ใครมีเอกสารดีๆ ให้อ่านก็ post แนะนำกันได้นะครับ

  19. Tajang007 17 July 2009 at 11:49 pm Permalink

    สวัสดีครับ
    เราสามารถ Set pFsense + freeRadius ดังรูปด้านล่างได้หรือเปล่าครับ ถ้าไม่ได้มีวิธีไหนบ้างครับ สอบถามผู้รู้หน่อยครับ เราสามารถ Set pFsense + freeRadius ดังรูปด้านล่างได้หรือเปล่าครับ ถ้าไม่ได้มีวิธีไหนบ้างครับ

    Network Diagram

  20. noktualek 19 July 2009 at 11:18 pm Permalink

    Tajang007

    Pfsense โดยปกติแล้วมันตอ้งติดตั้ง Lan card 2 ใบครับ และตัวมันเองก็เป็น Firewall อยู่แล้ว

    แต่ตั้งการ์ด lan 1 ใบ ยังไม่เคยลอง

    แต่หากมองดูภาพที่ทำลักษณะนี้คือให้ตรวจสอบการเข้าเชื่อมต่อกับ network โดยต้องไป เซตค่า ที่ Access Pont ให้ไปตรวจสอบตัวตนก่อน แทนระบบเดิมที่ใช้ WEP WPA ใช่หรือเปล่าครับ ทำแบบนี้ดูแล้วค่อนข้างจะปลอดภัยดี

    หากผมมีเวลาก็อยากจะทดลองเช่นกันครับ
    รอท่านผู้เชียวชาญ ตอบหละกันนะครับ ^_^

  21. laontalk 20 July 2009 at 12:46 am Permalink

    ดูตาม Diagram แล้ว ตามหลักการมีความเป็นไปได้ครับ, สมมติว่า Firewall ทำหน้าที่เป็น User Authentication แล้วกำหนดให้ Authen ผ่าน RADIUS นั่นก็คือชี้ไปยัง IP Address ของ Radius Server (pfsense + radius)

    วิธีที่สอง (นิยมทำกัน) ติดตั้ง Linux หรือ Windows Server xxxx เพื่อทำหน้าที่เป็น RADIUS Server แทนเครื่อง pfSense + RADIUS

  22. PPP 6 October 2009 at 10:56 am Permalink

    เทคนิคการ Hacker ทำอย่างไร

  23. laontalk 6 October 2009 at 11:58 am Permalink

    เทคนิคการ Hacker ทำอย่างไร? คำถามค่อนข้างกว้างมากนะครับ ที่นี่คงไม่ได้สอนวิธีการ Hacker แต่เห็นมีหนังสือขายเยอะแยะเลยนะครับ ทั้งภาษาไทยและอังกฤษ เบื้องต้นน่าจะศึกษาจากสื่อเหล่านั้นก่อนละกัน


Leave a Reply

คุณสามารถแทรกลิงค์รูปภาพประกอบ ความกว้างไม่เกิน 550px คลิกที่นี่.

PHVsPjxsaT48c3Ryb25nPndvb19hYm91dDwvc3Ryb25nPiAtIOKAneC4l+C4teC5iOC5g+C4q+C5ieC4m+C4tOC4lOC4l+C4reC4h+C4q+C4peC4seC4h+C4nuC4o+C4sOC4geC5h+C5gOC4nuC4t+C5iOC4reC5gOC4leC4t+C4reC4meC4leC4seC4p+C5gOC4reC4h+C4p+C5iOC4siDguIHguLLguKPguJfguLPguITguKfguLLguKHguJTguLXguYTguKHguYjguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguK3guKfguJTguYPguITguKMg4Lir4Lij4Li34Lit4Lib4Lij4Liw4LiB4Liy4Lio4LmD4Lir4LmJ4LmD4LiE4Lij4Lij4Li54LmJIOC5g+C4q+C5ieC4l+C4s+C4q+C4meC5ieC4suC4l+C4teC5iOC5gOC4nuC4t+C5iOC4reC4q+C4meC5ieC4suC4l+C4teC5iCDguYHguKXguLDguJbguLfguK3guKfguYjguLLguITguKfguLLguKHguKrguLPguYDguKPguYfguIjguYPguJnguIHguLLguKPguJfguLPguKvguJnguYnguLLguJfguLXguYjguYDguJvguYfguJnguJrguLPguYDguKvguJnguYfguIjguKPguLLguIfguKfguLHguKXguJfguLXguYjguKrguKHguJrguLnguKPguJPguYzguYHguKXguYnguKfigJ0gKOC4nuC4o+C4sOC4o+C4suC4iuC4lOC4s+C4o+C4seC4qiDguJ7guKPguLDguJrguLLguJfguKrguKHguYDguJTguYfguIjguJ7guKPguLDguYDguIjguYnguLLguK3guKLguLnguYjguKvguLHguKfguK8pPC9saT48bGk+PHN0cm9uZz53b29fYWRzX3JvdGF0ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19hZF8yNTBfYWRzZW5zZTwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwhLS0NCmdvb2dsZV9hZF9jbGllbnQgPSBcInB1Yi0yNjgyOTg0NzI2MTMzMDMwXCI7DQovKiAyNTB4MjUwLCDguJbguLnguIHguKrguKPguYnguLLguIfguILguLbguYnguJnguYHguKXguYnguKcgMTIvMjkvMDggKi8NCmdvb2dsZV9hZF9zbG90ID0gXCIyOTAxNjYyODE4XCI7DQpnb29nbGVfYWRfd2lkdGggPSAyNTA7DQpnb29nbGVfYWRfaGVpZ2h0ID0gMjUwOw0KLy8tLT4NCjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCINCnNyYz1cImh0dHA6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19hZHMuanNcIj4NCjwvc2NyaXB0PjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzI1MF9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTI1MHgyNTAuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2NvbnRlbnRfYWRzZW5zZTwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwhLS0NCmdvb2dsZV9hZF9jbGllbnQgPSBcInB1Yi0yNjgyOTg0NzI2MTMzMDMwXCI7DQovKiA0Njh4NjAsIOC4luC4ueC4geC4quC4o+C5ieC4suC4h+C4guC4tuC5ieC4meC5geC4peC5ieC4pyAxMi8yOS8wOCAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSBcIjMwOTk2ODMzOTJcIjsNCmdvb2dsZV9hZF93aWR0aCA9IDQ2ODsNCmdvb2dsZV9hZF9oZWlnaHQgPSA2MDsNCi8vLS0+DQo8L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiDQpzcmM9XCJodHRwOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfYWRzLmpzXCI+DQo8L3NjcmlwdD48L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF91cmw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8xPC9zdHJvbmc+IC0gaHR0cDovL2ltZy5ibHVlaG9zdC5jb20vMTI1eDEyNS8zLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzI8L3N0cm9uZz4gLSBodHRwOi8vaW1nLmhvc3Rtb25zdGVyLmNvbS8xMjV4MTI1LzEuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cubHVuYXJwYWdlcy5jb20vYmFubmVycy9pbWFnZXMvYmFubmVyX2Fkc18xMjV4MTI1XzAyLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3B3ZWJob3N0LmNvbS9hZmZpbGlhdGUvYmFubmVycy93cGJhbm5lcjEyNXgxMjUtMTNrLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzU8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9wYWdlPC9zdHJvbmc+IC0gU2VsZWN0IGEgcGFnZTo8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3A8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8xPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5ibHVlaG9zdC5jb20vdHJhY2svYWlzaG9wL2Jsb2cwMTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5ob3N0bW9uc3Rlci5jb20vdHJhY2sveGlyYml0L2Jsb2cwMTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8zPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5sdW5hcnBhZ2VzLmNvbS9pZC9zZWF0ZWNoPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3B3ZWJob3N0LmNvbS9hZmZpbGlhdGUvaWRldmFmZmlsaWF0ZS5waHA/aWQ9Mjk3XzBfMV8xOTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF81PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGRlZmF1bHQuY3NzPC9saT48bGk+PHN0cm9uZz53b29fYXJjaGl2ZXNfcGFnZTwvc3Ryb25nPiAtIEFyY2hpdmVzPC9saT48bGk+PHN0cm9uZz53b29fYXNpZGVzX2NhdGVnb3J5PC9zdHJvbmc+IC0gRmVhdHVyZWQ8L2xpPjxsaT48c3Ryb25nPndvb19hc2lkZXNfZW50cmllczwvc3Ryb25nPiAtIDE8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYmdyPC9zdHJvbmc+IC0gZGVmYXVsdC5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19jYXRfZXg8L3N0cm9uZz4gLSAxNTwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9tZW51PC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRlbnRfYXJjaGl2ZXM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRlbnRfaG9tZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY3VzdG9tX2Nzczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9mYXZpY29uPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZmFjZWJvb2s8L3N0cm9uZz4gLSBtYXNlLnRiPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfY2F0ZWdvcnk8L3N0cm9uZz4gLSBGZWF0dXJlZDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlYXR1cmVkX2VudHJpZXM8L3N0cm9uZz4gLSAzPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfcG9zdHM8L3N0cm9uZz4gLSAxPC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl9pZDwvc3Ryb25nPiAtIDI3OTUzNDA8L2xpPjxsaT48c3Ryb25nPndvb19mZWVkYnVybmVyX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS9MYW9udGFsazwvbGk+PGxpPjxzdHJvbmc+d29vX2ZsaWNrcl9lbnRyaWVzPC9zdHJvbmc+IC0gNjwvbGk+PGxpPjxzdHJvbmc+d29vX2ZsaWNrcl9pZDwvc3Ryb25nPiAtIDM1MzY4MTM0QE4wNjwvbGk+PGxpPjxzdHJvbmc+d29vX2Zvb3RfY2F0X21lbnU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2Zvb3RfbmF2X2V4Y2x1ZGU8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19nb29nbGVfYW5hbHl0aWNzPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ3JhdmF0YXI8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9saW5rX2Rlc2M8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2xpbmtfdGV4dDwvc3Ryb25nPiAtIEhvbWU8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9oZWlnaHQ8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV93aWR0aDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2xheW91dDwvc3Ryb25nPiAtIGRlZmF1bHQucGhwPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cubGFvbnRhbGsuY29tL2ltYWdlcy9sYW9udGFsa19sb2dvLnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX21hbnVhbDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9zdXBwb3J0L3RoZW1lLWRvY3VtZW50YXRpb24vbWFpbnN0cmVhbTwvbGk+PGxpPjxzdHJvbmc+d29vX25hdl9leGNsdWRlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fb3RoZXJfZW50cmllczwvc3Ryb25nPiAtIDQ8L2xpPjxsaT48c3Ryb25nPndvb19vdGhlcl9oZWFkbGluZXM8L3N0cm9uZz4gLSA0PC9saT48bGk+PHN0cm9uZz53b29fcHJvZmlsZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3Jlc2l6ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb19zaG93X2Fkc19ib3R0b208L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2hvd19hZHNfdG9wPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3dfZmVhdHVyZWQ8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2hvd192aWRlbzwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zaW5nbGVfaGVpZ2h0PC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fc2luZ2xlX3dpZHRoPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fdGhlbWVuYW1lPC9zdHJvbmc+IC0gTWFpbnN0cmVhbTwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDEwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29fdHdpdHRlcjwvc3Ryb25nPiAtIGxhb250YWxrPC9saT48bGk+PHN0cm9uZz53b29fdXBsb2Fkczwvc3Ryb25nPiAtIGE6Mjp7aTowO3M6NjU6Imh0dHA6Ly93d3cubGFvbnRhbGsuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNC1pYW1fbGFvbnRhbGsuanBnIjtpOjE7czo2NToiaHR0cDovL3d3dy5sYW9udGFsay5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy8zLWlhbV9sYW9udGFsay5qcGciO308L2xpPjxsaT48c3Ryb25nPndvb192aWRlb19jYXRlZ29yeTwvc3Ryb25nPiAtIFZpZGVvczwvbGk+PC91bD4=