-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
3 lines (2 loc) · 266 KB
/
index.html
1
2
3
<!-- saved from url=(0057)https://builditbreakit.org/static/doc/fall2016/index.html -->
<html class="gr__builditbreakit_org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">@import url('https://themes.googleusercontent.com/fonts/css?kit=fpjTOVmNbO4Lz34iLyptLROjXfSpIU_1TsQlCJ7q4WkfnUSgpG7o6Yx3LgtCQhIzcgkv6_KOpC-vO9QMy-VQCA');ul.lst-kix_qtbrqaqp4pt2-0{list-style-type:none}ul.lst-kix_qtbrqaqp4pt2-2{list-style-type:none}ul.lst-kix_qtbrqaqp4pt2-1{list-style-type:none}.lst-kix_li3lbcqn7du5-7>li:before{content:"- "}ul.lst-kix_qtbrqaqp4pt2-4{list-style-type:none}ul.lst-kix_qtbrqaqp4pt2-3{list-style-type:none}.lst-kix_2rlrxa67j61v-0>li:before{content:"\0025cf "}.lst-kix_li3lbcqn7du5-1>li:before{content:"- "}.lst-kix_8zlxzr94snw4-2>li:before{content:"- "}.lst-kix_li3lbcqn7du5-5>li:before{content:"- "}.lst-kix_li3lbcqn7du5-3>li:before{content:"- "}.lst-kix_8zlxzr94snw4-0>li:before{content:"- "}.lst-kix_8zlxzr94snw4-6>li:before{content:"- "}.lst-kix_2rlrxa67j61v-6>li:before{content:"\0025cf "}.lst-kix_m3v9kovg6rqv-2>li:before{content:"- "}.lst-kix_8zlxzr94snw4-4>li:before{content:"- "}.lst-kix_2rlrxa67j61v-8>li:before{content:"\0025a0 "}.lst-kix_2rlrxa67j61v-2>li:before{content:"\0025a0 "}.lst-kix_m3v9kovg6rqv-0>li:before{content:"- "}.lst-kix_8zlxzr94snw4-8>li:before{content:"- "}.lst-kix_2rlrxa67j61v-4>li:before{content:"\0025cb "}ul.lst-kix_cpvyu8stzxxy-6{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-7{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-8{list-style-type:none}.lst-kix_prhpzba1wavz-3>li:before{content:"- "}ul.lst-kix_cpvyu8stzxxy-0{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-1{list-style-type:none}.lst-kix_y5utuser2lo-6>li:before{content:"- "}ul.lst-kix_smm1ba7pvg7z-8{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-2{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-7{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-3{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-4{list-style-type:none}ul.lst-kix_cpvyu8stzxxy-5{list-style-type:none}.lst-kix_prhpzba1wavz-5>li:before{content:"- "}.lst-kix_y5utuser2lo-4>li:before{content:"- "}ul.lst-kix_smm1ba7pvg7z-4{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-3{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-6{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-5{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-0{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-2{list-style-type:none}ul.lst-kix_smm1ba7pvg7z-1{list-style-type:none}.lst-kix_prhpzba1wavz-7>li:before{content:"- "}.lst-kix_y5utuser2lo-0>li:before{content:"- "}.lst-kix_y5utuser2lo-2>li:before{content:"- "}ul.lst-kix_ci3dfawmgd7i-8{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-7{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-6{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-5{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-4{list-style-type:none}.lst-kix_jv3t8x1s04kk-0>li:before{content:"\0025cf "}ul.lst-kix_ci3dfawmgd7i-3{list-style-type:none}.lst-kix_fqoz0c1i23si-2>li:before{content:"- "}ul.lst-kix_ci3dfawmgd7i-2{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-1{list-style-type:none}ul.lst-kix_ci3dfawmgd7i-0{list-style-type:none}.lst-kix_jv3t8x1s04kk-2>li:before{content:"\0025a0 "}.lst-kix_fqoz0c1i23si-0>li:before{content:"- "}.lst-kix_fqoz0c1i23si-8>li:before{content:"- "}ul.lst-kix_qtbrqaqp4pt2-6{list-style-type:none}.lst-kix_jv3t8x1s04kk-6>li:before{content:"\0025cf "}ul.lst-kix_qtbrqaqp4pt2-5{list-style-type:none}ul.lst-kix_qtbrqaqp4pt2-8{list-style-type:none}ul.lst-kix_qtbrqaqp4pt2-7{list-style-type:none}.lst-kix_jv3t8x1s04kk-8>li:before{content:"\0025a0 "}.lst-kix_jv3t8x1s04kk-4>li:before{content:"\0025cb "}.lst-kix_fqoz0c1i23si-6>li:before{content:"- "}.lst-kix_y5utuser2lo-8>li:before{content:"- "}.lst-kix_7fjemue0ct45-1>li:before{content:"- "}.lst-kix_fqoz0c1i23si-4>li:before{content:"- "}.lst-kix_prhpzba1wavz-1>li:before{content:"- "}.lst-kix_50rzeclw4mgy-5>li:before{content:"- "}.lst-kix_7fjemue0ct45-3>li:before{content:"- "}.lst-kix_yst6zvdstrpa-1>li:before{content:"- "}ul.lst-kix_8zlxzr94snw4-5{list-style-type:none}ul.lst-kix_8zlxzr94snw4-4{list-style-type:none}ul.lst-kix_8zlxzr94snw4-7{list-style-type:none}ul.lst-kix_8zlxzr94snw4-6{list-style-type:none}ul.lst-kix_8zlxzr94snw4-1{list-style-type:none}ul.lst-kix_8zlxzr94snw4-0{list-style-type:none}.lst-kix_fvo5wmmg6fyo-2>li:before{content:"- "}ul.lst-kix_8zlxzr94snw4-3{list-style-type:none}.lst-kix_fvo5wmmg6fyo-6>li:before{content:"- "}.lst-kix_yst6zvdstrpa-3>li:before{content:"- "}ul.lst-kix_8zlxzr94snw4-2{list-style-type:none}.lst-kix_50rzeclw4mgy-1>li:before{content:"- "}.lst-kix_7fjemue0ct45-7>li:before{content:"- "}.lst-kix_pl9pypjbye3v-1>li:before{content:"\0025cb "}.lst-kix_pl9pypjbye3v-3>li:before{content:"\0025cf "}.lst-kix_50rzeclw4mgy-3>li:before{content:"- "}.lst-kix_7fjemue0ct45-5>li:before{content:"- "}.lst-kix_fvo5wmmg6fyo-0>li:before{content:"- "}.lst-kix_fvo5wmmg6fyo-8>li:before{content:"- "}.lst-kix_pl9pypjbye3v-5>li:before{content:"\0025a0 "}.lst-kix_pl9pypjbye3v-7>li:before{content:"\0025cb "}.lst-kix_yst6zvdstrpa-7>li:before{content:"- "}.lst-kix_50rzeclw4mgy-7>li:before{content:"- "}.lst-kix_yst6zvdstrpa-5>li:before{content:"- "}.lst-kix_bhc7ck6t2jgf-4>li:before{content:"\0025cb "}.lst-kix_bhc7ck6t2jgf-2>li:before{content:"\0025a0 "}.lst-kix_bhc7ck6t2jgf-8>li:before{content:"\0025a0 "}.lst-kix_bhc7ck6t2jgf-6>li:before{content:"\0025cf "}.lst-kix_fvo5wmmg6fyo-4>li:before{content:"- "}.lst-kix_tftn79eu5169-5>li{counter-increment:lst-ctn-kix_tftn79eu5169-5}.lst-kix_bhc7ck6t2jgf-0>li:before{content:"\0025cf "}ol.lst-kix_vfbyyaij8aah-8.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-8 0}ul.lst-kix_u05q3fjgh3s5-5{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-6{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-7{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-8{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-0{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-1{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-2{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-3{list-style-type:none}ul.lst-kix_u05q3fjgh3s5-4{list-style-type:none}.lst-kix_x87v5nqljbag-6>li:before{content:"\0025cf "}.lst-kix_2fzlx3v3ax3x-7>li:before{content:"- "}.lst-kix_2fzlx3v3ax3x-3>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-6>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-6}.lst-kix_9hxy9el3gvo4-5>li:before{content:"- "}ul.lst-kix_2hcqi35168fy-0{list-style-type:none}.lst-kix_l894ipqttw8-0>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-0,decimal) ". "}ul.lst-kix_m10u6c8e7h49-8{list-style-type:none}ul.lst-kix_2hcqi35168fy-1{list-style-type:none}.lst-kix_vn0q36mkrlld-3>li:before{content:"\0025cf "}ol.lst-kix_9uc7rfmtrze6-8.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-8 0}ol.lst-kix_vfbyyaij8aah-3.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-3 0}.lst-kix_41kqbn393r7s-1>li:before{content:"- "}.lst-kix_4tbw4vbvib8m-2>li:before{content:"\0025a0 "}ul.lst-kix_2hcqi35168fy-8{list-style-type:none}ul.lst-kix_2hcqi35168fy-6{list-style-type:none}ul.lst-kix_2hcqi35168fy-7{list-style-type:none}ul.lst-kix_2hcqi35168fy-4{list-style-type:none}ul.lst-kix_2hcqi35168fy-5{list-style-type:none}ul.lst-kix_2hcqi35168fy-2{list-style-type:none}ul.lst-kix_2hcqi35168fy-3{list-style-type:none}.lst-kix_l894ipqttw8-1>li{counter-increment:lst-ctn-kix_l894ipqttw8-1}.lst-kix_41kqbn393r7s-5>li:before{content:"- "}.lst-kix_vn0q36mkrlld-7>li:before{content:"\0025cb "}.lst-kix_4tbw4vbvib8m-6>li:before{content:"\0025cf "}.lst-kix_x87v5nqljbag-2>li:before{content:"\0025a0 "}.lst-kix_rl5efr44le4n-8>li:before{content:"\0025a0 "}ol.lst-kix_l894ipqttw8-5.start{counter-reset:lst-ctn-kix_l894ipqttw8-5 0}.lst-kix_9hxy9el3gvo4-1>li:before{content:"- "}.lst-kix_jh5ozkc156c0-6>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-3>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-3,decimal) ". "}.lst-kix_vfbyyaij8aah-2>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-2,lower-roman) ". "}.lst-kix_q5f4ujvd57vs-5>li:before{content:"\0025a0 "}ul.lst-kix_jflz1hbg2var-1{list-style-type:none}.lst-kix_m10u6c8e7h49-6>li:before{content:"- "}.lst-kix_jh5ozkc156c0-2>li:before{content:"- "}ul.lst-kix_jflz1hbg2var-0{list-style-type:none}ul.lst-kix_jflz1hbg2var-3{list-style-type:none}.lst-kix_1gns5yqacl5a-2>li:before{content:"- "}.lst-kix_1gns5yqacl5a-6>li:before{content:"- "}ul.lst-kix_jflz1hbg2var-2{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-3.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-3 0}ul.lst-kix_jflz1hbg2var-5{list-style-type:none}ul.lst-kix_jflz1hbg2var-4{list-style-type:none}.lst-kix_m10u6c8e7h49-2>li:before{content:"- "}ol.lst-kix_tftn79eu5169-3.start{counter-reset:lst-ctn-kix_tftn79eu5169-3 0}.lst-kix_v0kjcrdpo5y8-7>li:before{content:"- "}.lst-kix_l894ipqttw8-8>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-8,lower-roman) ". "}.lst-kix_l894ipqttw8-6>li{counter-increment:lst-ctn-kix_l894ipqttw8-6}.lst-kix_v0kjcrdpo5y8-3>li:before{content:"- "}.lst-kix_nxwesaehoprg-3>li:before{content:"\0025cf "}.lst-kix_wnidkq2q4br-5>li:before{content:"- "}.lst-kix_vvte7xrdhkfu-6>li:before{content:"- "}.lst-kix_tftn79eu5169-7>li{counter-increment:lst-ctn-kix_tftn79eu5169-7}.lst-kix_2guvfj7t4hls-3>li:before{content:"- "}.lst-kix_2guvfj7t4hls-7>li:before{content:"- "}.lst-kix_l894ipqttw8-4>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-4,lower-latin) ". "}.lst-kix_wnidkq2q4br-1>li:before{content:"- "}.lst-kix_vvte7xrdhkfu-2>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-7>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-7,lower-latin) ". "}ul.lst-kix_1gns5yqacl5a-3{list-style-type:none}.lst-kix_qh78q3eb8wns-0>li:before{content:"- "}ul.lst-kix_1gns5yqacl5a-4{list-style-type:none}ul.lst-kix_1gns5yqacl5a-1{list-style-type:none}ul.lst-kix_1gns5yqacl5a-2{list-style-type:none}ul.lst-kix_1gns5yqacl5a-0{list-style-type:none}.lst-kix_7afqendiuk8d-8>li:before{content:"- "}ul.lst-kix_1gns5yqacl5a-7{list-style-type:none}.lst-kix_kkqzfjachi11-3>li:before{content:"- "}ul.lst-kix_1gns5yqacl5a-8{list-style-type:none}.lst-kix_s9gy267mt5i6-7>li:before{content:"- "}ul.lst-kix_1gns5yqacl5a-5{list-style-type:none}ul.lst-kix_1gns5yqacl5a-6{list-style-type:none}.lst-kix_7afqendiuk8d-4>li:before{content:"- "}.lst-kix_qh78q3eb8wns-4>li:before{content:"- "}.lst-kix_zamnyctd2de5-8>li:before{content:"- "}.lst-kix_kkqzfjachi11-7>li:before{content:"- "}.lst-kix_myze4pt7323s-3>li:before{content:"\0025cf "}.lst-kix_nxwesaehoprg-7>li:before{content:"\0025cb "}.lst-kix_s9gy267mt5i6-3>li:before{content:"- "}ul.lst-kix_q5f4ujvd57vs-0{list-style-type:none}.lst-kix_2hcqi35168fy-7>li:before{content:"- "}ul.lst-kix_fqoz0c1i23si-0{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-3{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-4{list-style-type:none}.lst-kix_c7f83m9fm0z-3>li:before{content:"\0025cf "}.lst-kix_c7f83m9fm0z-7>li:before{content:"\0025cb "}ul.lst-kix_q5f4ujvd57vs-1{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-2{list-style-type:none}ul.lst-kix_fqoz0c1i23si-4{list-style-type:none}ul.lst-kix_jflz1hbg2var-7{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-7{list-style-type:none}ul.lst-kix_fqoz0c1i23si-3{list-style-type:none}ul.lst-kix_jflz1hbg2var-6{list-style-type:none}ul.lst-kix_a5wkod64biep-8{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-8{list-style-type:none}.lst-kix_7afqendiuk8d-0>li:before{content:"- "}ul.lst-kix_fqoz0c1i23si-2{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-5{list-style-type:none}ul.lst-kix_fqoz0c1i23si-1{list-style-type:none}ul.lst-kix_jflz1hbg2var-8{list-style-type:none}ul.lst-kix_q5f4ujvd57vs-6{list-style-type:none}ul.lst-kix_fqoz0c1i23si-8{list-style-type:none}ul.lst-kix_a5wkod64biep-5{list-style-type:none}ul.lst-kix_fqoz0c1i23si-7{list-style-type:none}.lst-kix_myze4pt7323s-7>li:before{content:"\0025cb "}ul.lst-kix_a5wkod64biep-4{list-style-type:none}ul.lst-kix_fqoz0c1i23si-6{list-style-type:none}ul.lst-kix_a5wkod64biep-7{list-style-type:none}ul.lst-kix_fqoz0c1i23si-5{list-style-type:none}ul.lst-kix_a5wkod64biep-6{list-style-type:none}ul.lst-kix_a5wkod64biep-1{list-style-type:none}ul.lst-kix_a5wkod64biep-0{list-style-type:none}.lst-kix_a1pym3titlrs-6>li:before{content:"\0025cf "}ul.lst-kix_a5wkod64biep-3{list-style-type:none}ul.lst-kix_a5wkod64biep-2{list-style-type:none}.lst-kix_cpvyu8stzxxy-3>li:before{content:"\0025cf "}.lst-kix_cpvyu8stzxxy-7>li:before{content:"\0025cb "}.lst-kix_srkrc1u8ht8r-1>li:before{content:"- "}.lst-kix_2hcqi35168fy-3>li:before{content:"- "}.lst-kix_1akhgirqnq32-5>li:before{content:"- "}ul.lst-kix_burqudjey0lg-2{list-style-type:none}ul.lst-kix_burqudjey0lg-1{list-style-type:none}ul.lst-kix_burqudjey0lg-0{list-style-type:none}.lst-kix_smm1ba7pvg7z-2>li:before{content:"- "}.lst-kix_l894ipqttw8-8>li{counter-increment:lst-ctn-kix_l894ipqttw8-8}.lst-kix_m3v9kovg6rqv-4>li:before{content:"- "}ul.lst-kix_burqudjey0lg-8{list-style-type:none}.lst-kix_srkrc1u8ht8r-5>li:before{content:"- "}ul.lst-kix_burqudjey0lg-7{list-style-type:none}ul.lst-kix_burqudjey0lg-6{list-style-type:none}ul.lst-kix_burqudjey0lg-5{list-style-type:none}ul.lst-kix_burqudjey0lg-4{list-style-type:none}ul.lst-kix_burqudjey0lg-3{list-style-type:none}.lst-kix_m3v9kovg6rqv-8>li:before{content:"- "}.lst-kix_a1pym3titlrs-2>li:before{content:"\0025a0 "}.lst-kix_n193x2857tme-6>li:before{content:"\0025cf "}.lst-kix_q2ajzi2aarbx-1>li:before{content:"- "}.lst-kix_hstwkpty94a-7>li:before{content:"- "}ul.lst-kix_m10u6c8e7h49-0{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-2{list-style-type:none}ul.lst-kix_m10u6c8e7h49-1{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-3{list-style-type:none}ul.lst-kix_m10u6c8e7h49-2{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-4{list-style-type:none}ul.lst-kix_m10u6c8e7h49-3{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-5{list-style-type:none}.lst-kix_n193x2857tme-2>li:before{content:"\0025a0 "}.lst-kix_zamnyctd2de5-4>li:before{content:"- "}ul.lst-kix_m10u6c8e7h49-4{list-style-type:none}ul.lst-kix_m10u6c8e7h49-5{list-style-type:none}ul.lst-kix_m10u6c8e7h49-6{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-0{list-style-type:none}ul.lst-kix_m10u6c8e7h49-7{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-1{list-style-type:none}.lst-kix_qh78q3eb8wns-8>li:before{content:"- "}.lst-kix_q9arux8ft5wh-7>li:before{content:"- "}.lst-kix_zamnyctd2de5-0>li:before{content:"- "}ul.lst-kix_9mcin3jkhrjk-6{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-7{list-style-type:none}ul.lst-kix_9mcin3jkhrjk-8{list-style-type:none}.lst-kix_hstwkpty94a-3>li:before{content:"- "}.lst-kix_1akhgirqnq32-1>li:before{content:"- "}.lst-kix_smm1ba7pvg7z-6>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-7>li:before{content:"- "}.lst-kix_q9arux8ft5wh-5>li:before{content:"- "}.lst-kix_kibflrpfavrf-3>li:before{content:"- "}.lst-kix_oshcc4bufuuj-5>li:before{content:"- "}.lst-kix_lt953f1u6b8p-7>li:before{content:"- "}.lst-kix_s75uo3xiq39v-6>li:before{content:"- "}.lst-kix_kibflrpfavrf-1>li:before{content:"- "}.lst-kix_pcc45dcmut3q-4>li:before{content:"- "}.lst-kix_s75uo3xiq39v-4>li:before{content:"- "}.lst-kix_oshcc4bufuuj-3>li:before{content:"- "}.lst-kix_pcc45dcmut3q-2>li:before{content:"- "}.lst-kix_9mcin3jkhrjk-5>li:before{content:"- "}.lst-kix_bwp5usd4tvni-2>li:before{content:"- "}.lst-kix_lt953f1u6b8p-1>li:before{content:"- "}.lst-kix_bwp5usd4tvni-4>li:before{content:"- "}.lst-kix_q2ajzi2aarbx-7>li:before{content:"- "}.lst-kix_bicgd61rc0xi-5>li:before{content:"\0025a0 "}.lst-kix_uv9sd9wefqn3-1>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-1>li:before{content:"- "}ol.lst-kix_l894ipqttw8-8.start{counter-reset:lst-ctn-kix_l894ipqttw8-8 0}.lst-kix_q2ajzi2aarbx-5>li:before{content:"- "}.lst-kix_bicgd61rc0xi-7>li:before{content:"\0025cb "}.lst-kix_ym9o0nem12uh-6>li:before{content:"- "}.lst-kix_ym9o0nem12uh-4>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-3>li:before{content:"- "}.lst-kix_wygi73u4y8tw-4>li:before{content:"- "}.lst-kix_jflz1hbg2var-5>li:before{content:"- "}.lst-kix_jflz1hbg2var-7>li:before{content:"- "}.lst-kix_paj4ag26vnuh-2>li:before{content:"- "}.lst-kix_paj4ag26vnuh-4>li:before{content:"- "}.lst-kix_wygi73u4y8tw-6>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-3>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-5>li:before{content:"- "}.lst-kix_uv9sd9wefqn3-7>li:before{content:"- "}.lst-kix_9mcin3jkhrjk-3>li:before{content:"- "}ul.lst-kix_a2xq9qx5glak-1{list-style-type:none}ul.lst-kix_a2xq9qx5glak-2{list-style-type:none}.lst-kix_rqgiuuoe0nx7-5>li:before{content:"- "}.lst-kix_a2xq9qx5glak-2>li:before{content:"- "}.lst-kix_qtbrqaqp4pt2-2>li:before{content:"\0025a0 "}ul.lst-kix_a2xq9qx5glak-0{list-style-type:none}ol.lst-kix_vfbyyaij8aah-5.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-5 0}ul.lst-kix_a2xq9qx5glak-5{list-style-type:none}ul.lst-kix_a2xq9qx5glak-6{list-style-type:none}ul.lst-kix_a2xq9qx5glak-3{list-style-type:none}ul.lst-kix_a2xq9qx5glak-4{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-1{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-0{list-style-type:none}.lst-kix_javo7o9nyfgh-2>li:before{content:"- "}ul.lst-kix_a2xq9qx5glak-7{list-style-type:none}.lst-kix_qtbrqaqp4pt2-4>li:before{content:"\0025cb "}ul.lst-kix_a2xq9qx5glak-8{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-5{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-4{list-style-type:none}.lst-kix_javo7o9nyfgh-0>li:before{content:"- "}ul.lst-kix_bhc7ck6t2jgf-3{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-2{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-8{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-7{list-style-type:none}ul.lst-kix_bhc7ck6t2jgf-6{list-style-type:none}ul.lst-kix_kkqzfjachi11-0{list-style-type:none}.lst-kix_bz28urxlslt-7>li:before{content:"- "}.lst-kix_zgo8zkd6sx7-8>li:before{content:"- "}.lst-kix_bz28urxlslt-5>li:before{content:"- "}.lst-kix_a2xq9qx5glak-0>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-1>li:before{content:"\0025cb "}ul.lst-kix_kkqzfjachi11-2{list-style-type:none}ul.lst-kix_kkqzfjachi11-1{list-style-type:none}.lst-kix_javo7o9nyfgh-8>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-3>li:before{content:"- "}ul.lst-kix_kkqzfjachi11-4{list-style-type:none}ul.lst-kix_kkqzfjachi11-3{list-style-type:none}ul.lst-kix_kkqzfjachi11-6{list-style-type:none}ul.lst-kix_kkqzfjachi11-5{list-style-type:none}.lst-kix_kmbpxss6evs9-5>li:before{content:"- "}ul.lst-kix_kkqzfjachi11-8{list-style-type:none}ul.lst-kix_kkqzfjachi11-7{list-style-type:none}.lst-kix_vfbyyaij8aah-8>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-8,lower-roman) ". "}.lst-kix_zgo8zkd6sx7-0>li:before{content:"- "}.lst-kix_zgo8zkd6sx7-2>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-1>li:before{content:"- "}.lst-kix_8pnkhajaycfj-3>li:before{content:"- "}.lst-kix_vfbyyaij8aah-6>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-6,decimal) ". "}.lst-kix_8pnkhajaycfj-5>li:before{content:"- "}.lst-kix_9tqshqp1vk04-8>li:before{content:"- "}.lst-kix_9tqshqp1vk04-6>li:before{content:"- "}.lst-kix_rl5efr44le4n-4>li:before{content:"\0025cb "}.lst-kix_tftn79eu5169-0>li{counter-increment:lst-ctn-kix_tftn79eu5169-0}.lst-kix_rl5efr44le4n-2>li:before{content:"\0025a0 "}.lst-kix_9tqshqp1vk04-0>li:before{content:"- "}.lst-kix_x9vsod9g0g5w-8>li:before{content:"\0025a0 "}ul.lst-kix_li3lbcqn7du5-6{list-style-type:none}ul.lst-kix_li3lbcqn7du5-7{list-style-type:none}ul.lst-kix_li3lbcqn7du5-4{list-style-type:none}ul.lst-kix_li3lbcqn7du5-5{list-style-type:none}ul.lst-kix_li3lbcqn7du5-2{list-style-type:none}ul.lst-kix_li3lbcqn7du5-3{list-style-type:none}.lst-kix_kmbpxss6evs9-3>li:before{content:"- "}ul.lst-kix_li3lbcqn7du5-0{list-style-type:none}ul.lst-kix_li3lbcqn7du5-1{list-style-type:none}ul.lst-kix_7fjemue0ct45-6{list-style-type:none}ul.lst-kix_7fjemue0ct45-7{list-style-type:none}ul.lst-kix_7fjemue0ct45-8{list-style-type:none}ul.lst-kix_7fjemue0ct45-2{list-style-type:none}ul.lst-kix_7fjemue0ct45-3{list-style-type:none}.lst-kix_wfvzecrqglas-6>li:before{content:"- "}ul.lst-kix_7fjemue0ct45-4{list-style-type:none}ul.lst-kix_li3lbcqn7du5-8{list-style-type:none}ul.lst-kix_7fjemue0ct45-5{list-style-type:none}ol.lst-kix_l894ipqttw8-3.start{counter-reset:lst-ctn-kix_l894ipqttw8-3 0}.lst-kix_wfvzecrqglas-4>li:before{content:"- "}.lst-kix_7mseajt53c5t-1>li:before{content:"\0025cb "}ul.lst-kix_7fjemue0ct45-0{list-style-type:none}ul.lst-kix_7fjemue0ct45-1{list-style-type:none}.lst-kix_x9vsod9g0g5w-2>li:before{content:"\0025a0 "}.lst-kix_x9vsod9g0g5w-0>li:before{content:"\0025cf "}.lst-kix_7mseajt53c5t-3>li:before{content:"\0025cf "}.lst-kix_l9kc2sz2zal1-7>li:before{content:"\0025cb "}.lst-kix_vfbyyaij8aah-4>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-4}.lst-kix_x87v5nqljbag-4>li:before{content:"\0025cb "}.lst-kix_9hxy9el3gvo4-7>li:before{content:"- "}.lst-kix_vvte7xrdhkfu-8>li:before{content:"- "}.lst-kix_6u8mzk29n5rn-2>li:before{content:"\0025a0 "}.lst-kix_tftn79eu5169-3>li{counter-increment:lst-ctn-kix_tftn79eu5169-3}.lst-kix_vn0q36mkrlld-1>li:before{content:"\0025cb "}.lst-kix_ql108maoyew0-2>li:before{content:"- "}.lst-kix_glunaeu7tbyx-7>li:before{content:"\0025cb "}.lst-kix_a5wkod64biep-5>li:before{content:"- "}.lst-kix_4tbw4vbvib8m-0>li:before{content:"\0025cf "}.lst-kix_4tbw4vbvib8m-8>li:before{content:"\0025a0 "}ul.lst-kix_srkrc1u8ht8r-2{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-3{list-style-type:none}.lst-kix_41kqbn393r7s-7>li:before{content:"- "}ul.lst-kix_srkrc1u8ht8r-0{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-1{list-style-type:none}.lst-kix_2fzlx3v3ax3x-1>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-4>li:before{content:"\0025cb "}.lst-kix_9uc7rfmtrze6-1>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-1,lower-latin) ". "}.lst-kix_q5f4ujvd57vs-3>li:before{content:"\0025cf "}.lst-kix_1gns5yqacl5a-8>li:before{content:"- "}.lst-kix_vfbyyaij8aah-0>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-0,decimal) ". "}.lst-kix_yimhgjig100r-8>li:before{content:"- "}.lst-kix_jh5ozkc156c0-4>li:before{content:"- "}.lst-kix_m10u6c8e7h49-4>li:before{content:"- "}ul.lst-kix_3le1d9lrur7b-5{list-style-type:none}ul.lst-kix_3le1d9lrur7b-6{list-style-type:none}ul.lst-kix_3le1d9lrur7b-7{list-style-type:none}ul.lst-kix_3le1d9lrur7b-8{list-style-type:none}ul.lst-kix_3le1d9lrur7b-1{list-style-type:none}.lst-kix_v0kjcrdpo5y8-5>li:before{content:"- "}ul.lst-kix_3le1d9lrur7b-2{list-style-type:none}ul.lst-kix_3le1d9lrur7b-3{list-style-type:none}ul.lst-kix_3le1d9lrur7b-4{list-style-type:none}ul.lst-kix_paj4ag26vnuh-2{list-style-type:none}ul.lst-kix_paj4ag26vnuh-1{list-style-type:none}.lst-kix_1gns5yqacl5a-0>li:before{content:"- "}.lst-kix_2guvfj7t4hls-1>li:before{content:"- "}ul.lst-kix_paj4ag26vnuh-4{list-style-type:none}ul.lst-kix_paj4ag26vnuh-3{list-style-type:none}ul.lst-kix_3le1d9lrur7b-0{list-style-type:none}ul.lst-kix_paj4ag26vnuh-6{list-style-type:none}.lst-kix_wnidkq2q4br-7>li:before{content:"- "}ul.lst-kix_paj4ag26vnuh-5{list-style-type:none}.lst-kix_vvte7xrdhkfu-0>li:before{content:"- "}ul.lst-kix_paj4ag26vnuh-8{list-style-type:none}ul.lst-kix_paj4ag26vnuh-7{list-style-type:none}.lst-kix_wiil91xf2zv-3>li:before{content:"- "}ol.lst-kix_l894ipqttw8-0.start{counter-reset:lst-ctn-kix_l894ipqttw8-0 0}.lst-kix_vfdsxoqugx35-1>li:before{content:"- "}.lst-kix_l894ipqttw8-2>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-2,lower-roman) ". "}ul.lst-kix_paj4ag26vnuh-0{list-style-type:none}.lst-kix_tftn79eu5169-6>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-6,decimal) ". "}.lst-kix_vfbyyaij8aah-0>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-0}.lst-kix_2pru6vwc63rd-3>li:before{content:"\0025cf "}ul.lst-kix_8zlxzr94snw4-8{list-style-type:none}.lst-kix_gja9a1vqtcl8-8>li:before{content:"- "}.lst-kix_a2xq9qx5glak-8>li:before{content:"- "}.lst-kix_7afqendiuk8d-6>li:before{content:"- "}.lst-kix_fcnvapqljo74-2>li:before{content:"- "}.lst-kix_qh78q3eb8wns-6>li:before{content:"- "}ul.lst-kix_mvgocwwwcjd5-6{list-style-type:none}.lst-kix_kkqzfjachi11-5>li:before{content:"- "}.lst-kix_myze4pt7323s-5>li:before{content:"\0025a0 "}ul.lst-kix_mvgocwwwcjd5-7{list-style-type:none}.lst-kix_nxwesaehoprg-5>li:before{content:"\0025a0 "}ul.lst-kix_zgo8zkd6sx7-8{list-style-type:none}ul.lst-kix_mvgocwwwcjd5-4{list-style-type:none}ul.lst-kix_mvgocwwwcjd5-5{list-style-type:none}.lst-kix_gja9a1vqtcl8-0>li:before{content:"- "}ul.lst-kix_mvgocwwwcjd5-8{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-2{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-3{list-style-type:none}.lst-kix_s9gy267mt5i6-1>li:before{content:"- "}ul.lst-kix_zgo8zkd6sx7-0{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-1{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-6{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-7{list-style-type:none}ul.lst-kix_zgo8zkd6sx7-4{list-style-type:none}.lst-kix_7yks2wb0pddg-7>li:before{content:"- "}ul.lst-kix_zgo8zkd6sx7-5{list-style-type:none}.lst-kix_jgl333sta81j-1>li:before{content:"\0025cb "}.lst-kix_a1pym3titlrs-4>li:before{content:"\0025cb "}.lst-kix_srkrc1u8ht8r-3>li:before{content:"- "}.lst-kix_c7f83m9fm0z-5>li:before{content:"\0025a0 "}.lst-kix_cpvyu8stzxxy-5>li:before{content:"\0025a0 "}.lst-kix_2hcqi35168fy-1>li:before{content:"- "}.lst-kix_burqudjey0lg-2>li:before{content:"- "}.lst-kix_smm1ba7pvg7z-8>li:before{content:"- "}.lst-kix_vfbyyaij8aah-7>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-7}ol.lst-kix_vfbyyaij8aah-0{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-8{list-style-type:none}ol.lst-kix_vfbyyaij8aah-1{list-style-type:none}ol.lst-kix_vfbyyaij8aah-2{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-6{list-style-type:none}ol.lst-kix_vfbyyaij8aah-3{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-7{list-style-type:none}ol.lst-kix_vfbyyaij8aah-4{list-style-type:none}ul.lst-kix_rl5efr44le4n-8{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-4{list-style-type:none}ol.lst-kix_vfbyyaij8aah-5{list-style-type:none}ul.lst-kix_srkrc1u8ht8r-5{list-style-type:none}ol.lst-kix_vfbyyaij8aah-6{list-style-type:none}ul.lst-kix_rl5efr44le4n-6{list-style-type:none}ul.lst-kix_rl5efr44le4n-7{list-style-type:none}.lst-kix_smm1ba7pvg7z-0>li:before{content:"- "}ul.lst-kix_rl5efr44le4n-4{list-style-type:none}ul.lst-kix_rl5efr44le4n-5{list-style-type:none}ul.lst-kix_x87v5nqljbag-8{list-style-type:none}ul.lst-kix_rl5efr44le4n-2{list-style-type:none}.lst-kix_o80cgtlbucd0-1>li:before{content:"- "}.lst-kix_sjhl6hkllosw-7>li:before{content:"- "}ul.lst-kix_rl5efr44le4n-3{list-style-type:none}ul.lst-kix_rl5efr44le4n-0{list-style-type:none}ul.lst-kix_rl5efr44le4n-1{list-style-type:none}ul.lst-kix_x87v5nqljbag-3{list-style-type:none}ul.lst-kix_x87v5nqljbag-2{list-style-type:none}ul.lst-kix_x87v5nqljbag-1{list-style-type:none}ul.lst-kix_x87v5nqljbag-0{list-style-type:none}ul.lst-kix_x87v5nqljbag-7{list-style-type:none}ul.lst-kix_x87v5nqljbag-6{list-style-type:none}.lst-kix_qcqqascexby4-7>li:before{content:"- "}ul.lst-kix_x87v5nqljbag-5{list-style-type:none}ul.lst-kix_x87v5nqljbag-4{list-style-type:none}.lst-kix_n193x2857tme-4>li:before{content:"\0025cb "}.lst-kix_zamnyctd2de5-6>li:before{content:"- "}.lst-kix_p0qtw416moo3-8>li:before{content:"\0025a0 "}.lst-kix_ci3dfawmgd7i-7>li:before{content:"\0025cb "}ul.lst-kix_mvgocwwwcjd5-2{list-style-type:none}.lst-kix_nzzulhihegbc-3>li:before{content:"- "}ul.lst-kix_mvgocwwwcjd5-3{list-style-type:none}ul.lst-kix_mvgocwwwcjd5-0{list-style-type:none}ul.lst-kix_mvgocwwwcjd5-1{list-style-type:none}ol.lst-kix_vfbyyaij8aah-7{list-style-type:none}.lst-kix_lok0bp4zwj7j-5>li:before{content:"\0025a0 "}ol.lst-kix_vfbyyaij8aah-8{list-style-type:none}.lst-kix_fmqv0hhq489j-2>li:before{content:"- "}.lst-kix_1akhgirqnq32-3>li:before{content:"- "}.lst-kix_mvgocwwwcjd5-7>li:before{content:"- "}.lst-kix_hstwkpty94a-1>li:before{content:"- "}.lst-kix_e8cg55g9v52c-3>li:before{content:"- "}.lst-kix_e8cg55g9v52c-2>li:before{content:"- "}ol.lst-kix_l894ipqttw8-2.start{counter-reset:lst-ctn-kix_l894ipqttw8-2 0}.lst-kix_e8cg55g9v52c-0>li:before{content:"- "}.lst-kix_3dv221pwxcjb-0>li:before{content:"\0025cf "}ul.lst-kix_q9arux8ft5wh-5{list-style-type:none}ul.lst-kix_q9arux8ft5wh-6{list-style-type:none}ul.lst-kix_q9arux8ft5wh-7{list-style-type:none}.lst-kix_3dv221pwxcjb-6>li:before{content:"\0025cf "}ul.lst-kix_q9arux8ft5wh-8{list-style-type:none}.lst-kix_e8cg55g9v52c-6>li:before{content:"- "}.lst-kix_3dv221pwxcjb-2>li:before{content:"\0025a0 "}.lst-kix_dtuwn3k6sqxd-6>li:before{content:"- "}.lst-kix_e8cg55g9v52c-5>li:before{content:"- "}.lst-kix_p0qtw416moo3-7>li:before{content:"\0025cb "}.lst-kix_vfbyyaij8aah-5>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-5}.lst-kix_3dv221pwxcjb-3>li:before{content:"\0025cf "}.lst-kix_dtuwn3k6sqxd-7>li:before{content:"- "}ul.lst-kix_y5utuser2lo-5{list-style-type:none}.lst-kix_2uk97xxtwjg-1>li:before{content:"- "}ul.lst-kix_y5utuser2lo-4{list-style-type:none}ul.lst-kix_y5utuser2lo-3{list-style-type:none}ul.lst-kix_y5utuser2lo-2{list-style-type:none}.lst-kix_2uk97xxtwjg-3>li:before{content:"- "}ul.lst-kix_y5utuser2lo-8{list-style-type:none}ul.lst-kix_y5utuser2lo-7{list-style-type:none}ul.lst-kix_y5utuser2lo-6{list-style-type:none}.lst-kix_p0qtw416moo3-4>li:before{content:"\0025cb "}ul.lst-kix_q9arux8ft5wh-0{list-style-type:none}ul.lst-kix_y5utuser2lo-1{list-style-type:none}ul.lst-kix_q9arux8ft5wh-1{list-style-type:none}ul.lst-kix_y5utuser2lo-0{list-style-type:none}ul.lst-kix_q9arux8ft5wh-2{list-style-type:none}ul.lst-kix_q9arux8ft5wh-3{list-style-type:none}.lst-kix_2uk97xxtwjg-4>li:before{content:"- "}ul.lst-kix_q9arux8ft5wh-4{list-style-type:none}.lst-kix_dtuwn3k6sqxd-3>li:before{content:"- "}ol.lst-kix_vfbyyaij8aah-6.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-6 0}.lst-kix_p0qtw416moo3-1>li:before{content:"\0025cb "}.lst-kix_dtuwn3k6sqxd-0>li:before{content:"- "}.lst-kix_2uk97xxtwjg-0>li:before{content:"- "}.lst-kix_w4mstql6zew4-0>li:before{content:"- "}.lst-kix_w4mstql6zew4-4>li:before{content:"- "}.lst-kix_26k24f7v4fnh-7>li:before{content:"- "}ol.lst-kix_l894ipqttw8-7.start{counter-reset:lst-ctn-kix_l894ipqttw8-7 0}.lst-kix_26k24f7v4fnh-6>li:before{content:"- "}.lst-kix_w4mstql6zew4-3>li:before{content:"- "}.lst-kix_8kh4jd12jiew-2>li:before{content:"- "}ol.lst-kix_tftn79eu5169-0{list-style-type:none}.lst-kix_mql1z83bfuha-8>li:before{content:"- "}ol.lst-kix_tftn79eu5169-1{list-style-type:none}.lst-kix_26k24f7v4fnh-3>li:before{content:"- "}.lst-kix_26k24f7v4fnh-4>li:before{content:"- "}.lst-kix_mql1z83bfuha-6>li:before{content:"- "}.lst-kix_2uk97xxtwjg-7>li:before{content:"- "}.lst-kix_vol3xqviu5ei-0>li:before{content:"- "}.lst-kix_2zgtxnlclbc3-7>li:before{content:"- "}ol.lst-kix_tftn79eu5169-8{list-style-type:none}.lst-kix_vol3xqviu5ei-1>li:before{content:"- "}.lst-kix_26k24f7v4fnh-0>li:before{content:"- "}ol.lst-kix_tftn79eu5169-6{list-style-type:none}ol.lst-kix_tftn79eu5169-7{list-style-type:none}.lst-kix_2zgtxnlclbc3-6>li:before{content:"- "}.lst-kix_w4mstql6zew4-6>li:before{content:"- "}ol.lst-kix_tftn79eu5169-4{list-style-type:none}.lst-kix_vol3xqviu5ei-3>li:before{content:"- "}ol.lst-kix_tftn79eu5169-5{list-style-type:none}.lst-kix_26k24f7v4fnh-1>li:before{content:"- "}.lst-kix_w4mstql6zew4-7>li:before{content:"- "}ol.lst-kix_tftn79eu5169-2{list-style-type:none}ol.lst-kix_tftn79eu5169-3{list-style-type:none}ul.lst-kix_p0qtw416moo3-0{list-style-type:none}ul.lst-kix_p0qtw416moo3-1{list-style-type:none}.lst-kix_2zgtxnlclbc3-4>li:before{content:"- "}ul.lst-kix_p0qtw416moo3-2{list-style-type:none}.lst-kix_mql1z83bfuha-2>li:before{content:"- "}ul.lst-kix_p0qtw416moo3-3{list-style-type:none}ul.lst-kix_p0qtw416moo3-4{list-style-type:none}ul.lst-kix_p0qtw416moo3-5{list-style-type:none}.lst-kix_2zgtxnlclbc3-3>li:before{content:"- "}.lst-kix_2zgtxnlclbc3-0>li:before{content:"- "}.lst-kix_mql1z83bfuha-5>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-0>li:before{content:"\0025cf "}ul.lst-kix_p0qtw416moo3-6{list-style-type:none}ul.lst-kix_p0qtw416moo3-7{list-style-type:none}ul.lst-kix_p0qtw416moo3-8{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-6{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-5{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-4{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-3{list-style-type:none}ul.lst-kix_8kh4jd12jiew-8{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-2{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-1{list-style-type:none}ul.lst-kix_8kh4jd12jiew-6{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-0{list-style-type:none}.lst-kix_p5avvlkymcn6-6>li:before{content:"- "}ul.lst-kix_8kh4jd12jiew-7{list-style-type:none}.lst-kix_ilrfzq9zqvls-3>li:before{content:"\0025cf "}.lst-kix_p5avvlkymcn6-0>li:before{content:"- "}ul.lst-kix_lok0bp4zwj7j-8{list-style-type:none}ul.lst-kix_lok0bp4zwj7j-7{list-style-type:none}.lst-kix_ci3dfawmgd7i-4>li:before{content:"\0025cb "}.lst-kix_wiil91xf2zv-2>li:before{content:"- "}.lst-kix_3le1d9lrur7b-4>li:before{content:"- "}ul.lst-kix_8kh4jd12jiew-4{list-style-type:none}ul.lst-kix_8kh4jd12jiew-5{list-style-type:none}.lst-kix_3le1d9lrur7b-2>li:before{content:"- "}ul.lst-kix_8kh4jd12jiew-2{list-style-type:none}.lst-kix_ci3dfawmgd7i-2>li:before{content:"\0025a0 "}ul.lst-kix_8kh4jd12jiew-3{list-style-type:none}ul.lst-kix_8kh4jd12jiew-0{list-style-type:none}ul.lst-kix_8kh4jd12jiew-1{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-1{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-2{list-style-type:none}ul.lst-kix_s9gy267mt5i6-0{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-0{list-style-type:none}.lst-kix_vol3xqviu5ei-4>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-1.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-1 0}.lst-kix_61wdk9msboc5-1>li:before{content:"- "}.lst-kix_qcqqascexby4-4>li:before{content:"- "}.lst-kix_qcqqascexby4-2>li:before{content:"- "}.lst-kix_vol3xqviu5ei-6>li:before{content:"- "}.lst-kix_61wdk9msboc5-7>li:before{content:"- "}ol.lst-kix_tftn79eu5169-5.start{counter-reset:lst-ctn-kix_tftn79eu5169-5 0}ul.lst-kix_kwpjd2ybbfk8-7{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-8{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-5{list-style-type:none}.lst-kix_l894ipqttw8-4>li{counter-increment:lst-ctn-kix_l894ipqttw8-4}ul.lst-kix_kwpjd2ybbfk8-6{list-style-type:none}ul.lst-kix_kwpjd2ybbfk8-3{list-style-type:none}.lst-kix_61wdk9msboc5-3>li:before{content:"- "}ul.lst-kix_kwpjd2ybbfk8-4{list-style-type:none}ul.lst-kix_mql1z83bfuha-6{list-style-type:none}ul.lst-kix_mql1z83bfuha-5{list-style-type:none}.lst-kix_yimhgjig100r-0>li:before{content:"- "}ul.lst-kix_mql1z83bfuha-4{list-style-type:none}ul.lst-kix_mql1z83bfuha-3{list-style-type:none}ul.lst-kix_mql1z83bfuha-8{list-style-type:none}.lst-kix_sjhl6hkllosw-0>li:before{content:"- "}.lst-kix_8kh4jd12jiew-8>li:before{content:"- "}ul.lst-kix_mql1z83bfuha-7{list-style-type:none}.lst-kix_mvgocwwwcjd5-4>li:before{content:"- "}.lst-kix_grze1ounqob7-3>li:before{content:"- "}.lst-kix_5cuzwv627bv5-0>li:before{content:"- "}.lst-kix_mvgocwwwcjd5-2>li:before{content:"- "}ul.lst-kix_s9gy267mt5i6-6{list-style-type:none}ul.lst-kix_s9gy267mt5i6-5{list-style-type:none}.lst-kix_t2rlxykrkesl-2>li:before{content:"- "}ul.lst-kix_s9gy267mt5i6-8{list-style-type:none}ul.lst-kix_s9gy267mt5i6-7{list-style-type:none}ul.lst-kix_s9gy267mt5i6-2{list-style-type:none}ul.lst-kix_s9gy267mt5i6-1{list-style-type:none}ul.lst-kix_s9gy267mt5i6-4{list-style-type:none}.lst-kix_sjhl6hkllosw-6>li:before{content:"- "}ul.lst-kix_s9gy267mt5i6-3{list-style-type:none}.lst-kix_qcqqascexby4-8>li:before{content:"- "}.lst-kix_t2rlxykrkesl-6>li:before{content:"- "}.lst-kix_o80cgtlbucd0-8>li:before{content:"- "}.lst-kix_loqeb32vhmp5-2>li:before{content:"- "}.lst-kix_ci3dfawmgd7i-8>li:before{content:"\0025a0 "}.lst-kix_o80cgtlbucd0-2>li:before{content:"- "}.lst-kix_5cuzwv627bv5-2>li:before{content:"- "}.lst-kix_loqeb32vhmp5-8>li:before{content:"- "}.lst-kix_3le1d9lrur7b-8>li:before{content:"- "}.lst-kix_t2rlxykrkesl-8>li:before{content:"- "}.lst-kix_5cuzwv627bv5-6>li:before{content:"- "}ul.lst-kix_mql1z83bfuha-2{list-style-type:none}ul.lst-kix_mql1z83bfuha-1{list-style-type:none}ul.lst-kix_mql1z83bfuha-0{list-style-type:none}.lst-kix_mvgocwwwcjd5-8>li:before{content:"- "}ul.lst-kix_m3v9kovg6rqv-5{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-4{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-3{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-2{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-8{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-7{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-8{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-6{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-7{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-5{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-6{list-style-type:none}.lst-kix_kwpjd2ybbfk8-6>li:before{content:"\0025cf "}ul.lst-kix_xdtvugvb0m4x-4{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-2.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-2 0}.lst-kix_ql108maoyew0-0>li:before{content:"- "}ul.lst-kix_x9vsod9g0g5w-6{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-3{list-style-type:none}.lst-kix_glunaeu7tbyx-1>li:before{content:"\0025cb "}ul.lst-kix_x9vsod9g0g5w-5{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-2{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-4{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-1{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-3{list-style-type:none}ul.lst-kix_xdtvugvb0m4x-0{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-2{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-1{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-0{list-style-type:none}.lst-kix_glunaeu7tbyx-4>li:before{content:"\0025cb "}.lst-kix_glunaeu7tbyx-5>li:before{content:"\0025a0 "}ul.lst-kix_x9vsod9g0g5w-8{list-style-type:none}ul.lst-kix_x9vsod9g0g5w-7{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-8{list-style-type:none}.lst-kix_a5wkod64biep-7>li:before{content:"- "}ul.lst-kix_c7f83m9fm0z-8{list-style-type:none}ul.lst-kix_c7f83m9fm0z-7{list-style-type:none}.lst-kix_6u8mzk29n5rn-0>li:before{content:"\0025cf "}ul.lst-kix_c7f83m9fm0z-2{list-style-type:none}.lst-kix_glunaeu7tbyx-8>li:before{content:"\0025a0 "}ul.lst-kix_c7f83m9fm0z-1{list-style-type:none}ul.lst-kix_c7f83m9fm0z-0{list-style-type:none}ul.lst-kix_c7f83m9fm0z-6{list-style-type:none}.lst-kix_yimhgjig100r-2>li:before{content:"- "}ul.lst-kix_c7f83m9fm0z-5{list-style-type:none}ul.lst-kix_c7f83m9fm0z-4{list-style-type:none}ul.lst-kix_c7f83m9fm0z-3{list-style-type:none}ul.lst-kix_glunaeu7tbyx-8{list-style-type:none}.lst-kix_yimhgjig100r-3>li:before{content:"- "}ul.lst-kix_glunaeu7tbyx-4{list-style-type:none}ul.lst-kix_glunaeu7tbyx-5{list-style-type:none}ul.lst-kix_glunaeu7tbyx-6{list-style-type:none}ul.lst-kix_glunaeu7tbyx-7{list-style-type:none}ul.lst-kix_glunaeu7tbyx-0{list-style-type:none}ul.lst-kix_glunaeu7tbyx-1{list-style-type:none}.lst-kix_jgl333sta81j-7>li:before{content:"\0025cb "}.lst-kix_yimhgjig100r-6>li:before{content:"- "}ul.lst-kix_glunaeu7tbyx-2{list-style-type:none}ul.lst-kix_glunaeu7tbyx-3{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-6{list-style-type:none}ul.lst-kix_ym9o0nem12uh-2{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-7{list-style-type:none}ul.lst-kix_ym9o0nem12uh-1{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-4{list-style-type:none}ul.lst-kix_ym9o0nem12uh-4{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-5{list-style-type:none}ul.lst-kix_ym9o0nem12uh-3{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-2{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-3{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-0{list-style-type:none}ul.lst-kix_ym9o0nem12uh-0{list-style-type:none}ul.lst-kix_lwcjl9ef5q9v-1{list-style-type:none}ol.lst-kix_tftn79eu5169-4.start{counter-reset:lst-ctn-kix_tftn79eu5169-4 0}ul.lst-kix_ym9o0nem12uh-6{list-style-type:none}ul.lst-kix_ym9o0nem12uh-5{list-style-type:none}ul.lst-kix_ym9o0nem12uh-8{list-style-type:none}ul.lst-kix_ym9o0nem12uh-7{list-style-type:none}ul.lst-kix_kibflrpfavrf-0{list-style-type:none}ul.lst-kix_kibflrpfavrf-1{list-style-type:none}.lst-kix_2pru6vwc63rd-5>li:before{content:"\0025a0 "}ul.lst-kix_kibflrpfavrf-2{list-style-type:none}ul.lst-kix_kibflrpfavrf-3{list-style-type:none}ul.lst-kix_kibflrpfavrf-4{list-style-type:none}ul.lst-kix_kibflrpfavrf-5{list-style-type:none}ul.lst-kix_kibflrpfavrf-6{list-style-type:none}.lst-kix_l894ipqttw8-3>li{counter-increment:lst-ctn-kix_l894ipqttw8-3}ul.lst-kix_kibflrpfavrf-7{list-style-type:none}.lst-kix_2pru6vwc63rd-6>li:before{content:"\0025cf "}ul.lst-kix_kibflrpfavrf-8{list-style-type:none}.lst-kix_vfdsxoqugx35-2>li:before{content:"- "}.lst-kix_tftn79eu5169-5>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-5,lower-roman) ". "}.lst-kix_wiil91xf2zv-5>li:before{content:"- "}.lst-kix_wiil91xf2zv-8>li:before{content:"- "}ul.lst-kix_m3v9kovg6rqv-1{list-style-type:none}ul.lst-kix_m3v9kovg6rqv-0{list-style-type:none}.lst-kix_tftn79eu5169-8>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-8,lower-roman) ". "}.lst-kix_2pru6vwc63rd-2>li:before{content:"\0025a0 "}ul.lst-kix_2fzlx3v3ax3x-3{list-style-type:none}.lst-kix_gja9a1vqtcl8-6>li:before{content:"- "}ul.lst-kix_2fzlx3v3ax3x-4{list-style-type:none}ul.lst-kix_2fzlx3v3ax3x-5{list-style-type:none}ul.lst-kix_2fzlx3v3ax3x-6{list-style-type:none}ol.lst-kix_vfbyyaij8aah-2.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-2 0}ul.lst-kix_2fzlx3v3ax3x-0{list-style-type:none}ul.lst-kix_2fzlx3v3ax3x-1{list-style-type:none}ul.lst-kix_2fzlx3v3ax3x-2{list-style-type:none}.lst-kix_fcnvapqljo74-0>li:before{content:"- "}.lst-kix_fmqv0hhq489j-0>li:before{content:"- "}.lst-kix_burqudjey0lg-8>li:before{content:"- "}ul.lst-kix_lt953f1u6b8p-7{list-style-type:none}.lst-kix_ci3dfawmgd7i-5>li:before{content:"\0025a0 "}ul.lst-kix_lt953f1u6b8p-6{list-style-type:none}.lst-kix_3le1d9lrur7b-5>li:before{content:"- "}ul.lst-kix_lt953f1u6b8p-8{list-style-type:none}ul.lst-kix_lt953f1u6b8p-3{list-style-type:none}ul.lst-kix_lt953f1u6b8p-2{list-style-type:none}ul.lst-kix_lt953f1u6b8p-5{list-style-type:none}ul.lst-kix_lt953f1u6b8p-4{list-style-type:none}.lst-kix_gja9a1vqtcl8-2>li:before{content:"- "}.lst-kix_ci3dfawmgd7i-1>li:before{content:"\0025cb "}.lst-kix_3le1d9lrur7b-1>li:before{content:"- "}.lst-kix_61wdk9msboc5-0>li:before{content:"- "}ul.lst-kix_lt953f1u6b8p-1{list-style-type:none}ul.lst-kix_lt953f1u6b8p-0{list-style-type:none}.lst-kix_vol3xqviu5ei-7>li:before{content:"- "}.lst-kix_qcqqascexby4-1>li:before{content:"- "}.lst-kix_zgo8zkd6sx7-3>li:before{content:"- "}.lst-kix_61wdk9msboc5-4>li:before{content:"- "}ul.lst-kix_2fzlx3v3ax3x-7{list-style-type:none}ul.lst-kix_2fzlx3v3ax3x-8{list-style-type:none}.lst-kix_jgl333sta81j-3>li:before{content:"\0025cf "}.lst-kix_burqudjey0lg-4>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-7.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-7 0}.lst-kix_9tqshqp1vk04-5>li:before{content:"- "}ul.lst-kix_8pnkhajaycfj-7{list-style-type:none}ul.lst-kix_8pnkhajaycfj-6{list-style-type:none}ul.lst-kix_8pnkhajaycfj-8{list-style-type:none}ul.lst-kix_8pnkhajaycfj-3{list-style-type:none}ul.lst-kix_8pnkhajaycfj-2{list-style-type:none}ul.lst-kix_8pnkhajaycfj-5{list-style-type:none}ul.lst-kix_8pnkhajaycfj-4{list-style-type:none}ul.lst-kix_8pnkhajaycfj-1{list-style-type:none}ul.lst-kix_8pnkhajaycfj-0{list-style-type:none}.lst-kix_qcqqascexby4-5>li:before{content:"- "}.lst-kix_mvgocwwwcjd5-1>li:before{content:"- "}.lst-kix_t2rlxykrkesl-5>li:before{content:"- "}.lst-kix_nzzulhihegbc-5>li:before{content:"- "}.lst-kix_7mseajt53c5t-8>li:before{content:"\0025a0 "}.lst-kix_5cuzwv627bv5-3>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-6.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-6 0}ol.lst-kix_vfbyyaij8aah-1.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-1 0}.lst-kix_wfvzecrqglas-7>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-8>li:before{content:"- "}.lst-kix_grze1ounqob7-0>li:before{content:"- "}ol.lst-kix_tftn79eu5169-0.start{counter-reset:lst-ctn-kix_tftn79eu5169-0 0}.lst-kix_mvgocwwwcjd5-5>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-7>li:before{content:"\0025cb "}.lst-kix_wfvzecrqglas-3>li:before{content:"- "}.lst-kix_s75uo3xiq39v-0>li:before{content:"- "}.lst-kix_q9arux8ft5wh-1>li:before{content:"- "}.lst-kix_kibflrpfavrf-5>li:before{content:"- "}.lst-kix_q9arux8ft5wh-4>li:before{content:"- "}.lst-kix_kibflrpfavrf-2>li:before{content:"- "}ul.lst-kix_2pru6vwc63rd-6{list-style-type:none}ul.lst-kix_2pru6vwc63rd-5{list-style-type:none}ul.lst-kix_2pru6vwc63rd-8{list-style-type:none}ol.lst-kix_tftn79eu5169-6.start{counter-reset:lst-ctn-kix_tftn79eu5169-6 0}ul.lst-kix_2pru6vwc63rd-7{list-style-type:none}.lst-kix_lt953f1u6b8p-6>li:before{content:"- "}.lst-kix_bwp5usd4tvni-8>li:before{content:"- "}.lst-kix_pcc45dcmut3q-5>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-5.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-5 0}.lst-kix_s75uo3xiq39v-3>li:before{content:"- "}.lst-kix_uv9sd9wefqn3-3>li:before{content:"- "}.lst-kix_bwp5usd4tvni-5>li:before{content:"- "}.lst-kix_oshcc4bufuuj-2>li:before{content:"- "}.lst-kix_lt953f1u6b8p-0>li:before{content:"- "}.lst-kix_bicgd61rc0xi-1>li:before{content:"\0025cb "}.lst-kix_9uc7rfmtrze6-5>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-5}.lst-kix_bicgd61rc0xi-4>li:before{content:"\0025cb "}.lst-kix_9mcin3jkhrjk-7>li:before{content:"- "}ul.lst-kix_fvo5wmmg6fyo-4{list-style-type:none}ul.lst-kix_fvo5wmmg6fyo-3{list-style-type:none}ul.lst-kix_fvo5wmmg6fyo-2{list-style-type:none}.lst-kix_lt953f1u6b8p-3>li:before{content:"- "}ul.lst-kix_fvo5wmmg6fyo-1{list-style-type:none}ol.lst-kix_tftn79eu5169-1.start{counter-reset:lst-ctn-kix_tftn79eu5169-1 0}ul.lst-kix_fvo5wmmg6fyo-0{list-style-type:none}.lst-kix_uv9sd9wefqn3-0>li:before{content:"- "}.lst-kix_ym9o0nem12uh-8>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-0>li:before{content:"- "}ul.lst-kix_2pru6vwc63rd-2{list-style-type:none}ul.lst-kix_o80cgtlbucd0-5{list-style-type:none}ul.lst-kix_2pru6vwc63rd-1{list-style-type:none}.lst-kix_ym9o0nem12uh-5>li:before{content:"- "}ul.lst-kix_o80cgtlbucd0-4{list-style-type:none}ul.lst-kix_2pru6vwc63rd-4{list-style-type:none}ul.lst-kix_o80cgtlbucd0-7{list-style-type:none}.lst-kix_u05q3fjgh3s5-3>li:before{content:"- "}ul.lst-kix_2pru6vwc63rd-3{list-style-type:none}ul.lst-kix_o80cgtlbucd0-6{list-style-type:none}ol.lst-kix_vfbyyaij8aah-0.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-0 0}ul.lst-kix_fvo5wmmg6fyo-8{list-style-type:none}ul.lst-kix_o80cgtlbucd0-1{list-style-type:none}ul.lst-kix_fvo5wmmg6fyo-7{list-style-type:none}ul.lst-kix_o80cgtlbucd0-0{list-style-type:none}ul.lst-kix_fvo5wmmg6fyo-6{list-style-type:none}ul.lst-kix_2pru6vwc63rd-0{list-style-type:none}ul.lst-kix_o80cgtlbucd0-3{list-style-type:none}.lst-kix_q2ajzi2aarbx-8>li:before{content:"- "}.lst-kix_pcc45dcmut3q-8>li:before{content:"- "}ul.lst-kix_fvo5wmmg6fyo-5{list-style-type:none}ul.lst-kix_o80cgtlbucd0-2{list-style-type:none}.lst-kix_jflz1hbg2var-3>li:before{content:"- "}.lst-kix_paj4ag26vnuh-0>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-2>li:before{content:"- "}.lst-kix_wygi73u4y8tw-3>li:before{content:"- "}.lst-kix_jflz1hbg2var-6>li:before{content:"- "}ul.lst-kix_o80cgtlbucd0-8{list-style-type:none}.lst-kix_paj4ag26vnuh-3>li:before{content:"- "}.lst-kix_paj4ag26vnuh-6>li:before{content:"- "}.lst-kix_wygi73u4y8tw-0>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-2>li:before{content:"- "}.lst-kix_uv9sd9wefqn3-6>li:before{content:"- "}.lst-kix_9mcin3jkhrjk-4>li:before{content:"- "}.lst-kix_qtbrqaqp4pt2-8>li:before{content:"\0025a0 "}.lst-kix_9mcin3jkhrjk-1>li:before{content:"- "}ul.lst-kix_wnidkq2q4br-5{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-0{list-style-type:none}ul.lst-kix_wnidkq2q4br-4{list-style-type:none}.lst-kix_javo7o9nyfgh-4>li:before{content:"- "}ul.lst-kix_jv3t8x1s04kk-1{list-style-type:none}ul.lst-kix_wnidkq2q4br-7{list-style-type:none}ul.lst-kix_wnidkq2q4br-6{list-style-type:none}ul.lst-kix_oshcc4bufuuj-0{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-4{list-style-type:none}ul.lst-kix_oshcc4bufuuj-1{list-style-type:none}ul.lst-kix_wnidkq2q4br-8{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-5{list-style-type:none}.lst-kix_a2xq9qx5glak-4>li:before{content:"- "}ul.lst-kix_jv3t8x1s04kk-2{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-3{list-style-type:none}.lst-kix_a2xq9qx5glak-7>li:before{content:"- "}.lst-kix_qtbrqaqp4pt2-5>li:before{content:"\0025a0 "}ul.lst-kix_oshcc4bufuuj-4{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-8{list-style-type:none}ul.lst-kix_oshcc4bufuuj-5{list-style-type:none}.lst-kix_javo7o9nyfgh-1>li:before{content:"- "}.lst-kix_tftn79eu5169-4>li{counter-increment:lst-ctn-kix_tftn79eu5169-4}ul.lst-kix_oshcc4bufuuj-2{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-6{list-style-type:none}ul.lst-kix_oshcc4bufuuj-3{list-style-type:none}ul.lst-kix_jv3t8x1s04kk-7{list-style-type:none}ul.lst-kix_oshcc4bufuuj-8{list-style-type:none}ul.lst-kix_wnidkq2q4br-1{list-style-type:none}ul.lst-kix_wnidkq2q4br-0{list-style-type:none}ul.lst-kix_oshcc4bufuuj-6{list-style-type:none}ul.lst-kix_wnidkq2q4br-3{list-style-type:none}ul.lst-kix_oshcc4bufuuj-7{list-style-type:none}ul.lst-kix_wnidkq2q4br-2{list-style-type:none}.lst-kix_7yks2wb0pddg-0>li:before{content:"- "}.lst-kix_wfvzecrqglas-0>li:before{content:"- "}.lst-kix_burqudjey0lg-1>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-3>li:before{content:"\0025cf "}ul.lst-kix_loqeb32vhmp5-5{list-style-type:none}ul.lst-kix_26k24f7v4fnh-5{list-style-type:none}ul.lst-kix_loqeb32vhmp5-6{list-style-type:none}ul.lst-kix_26k24f7v4fnh-6{list-style-type:none}ul.lst-kix_loqeb32vhmp5-3{list-style-type:none}ul.lst-kix_26k24f7v4fnh-7{list-style-type:none}ul.lst-kix_loqeb32vhmp5-4{list-style-type:none}ul.lst-kix_26k24f7v4fnh-8{list-style-type:none}ul.lst-kix_26k24f7v4fnh-1{list-style-type:none}.lst-kix_myze4pt7323s-6>li:before{content:"\0025cf "}.lst-kix_s9gy267mt5i6-0>li:before{content:"- "}ul.lst-kix_26k24f7v4fnh-2{list-style-type:none}.lst-kix_fcnvapqljo74-3>li:before{content:"- "}ul.lst-kix_loqeb32vhmp5-7{list-style-type:none}ul.lst-kix_26k24f7v4fnh-3{list-style-type:none}ul.lst-kix_loqeb32vhmp5-8{list-style-type:none}ul.lst-kix_26k24f7v4fnh-4{list-style-type:none}.lst-kix_7yks2wb0pddg-6>li:before{content:"- "}ul.lst-kix_v0kjcrdpo5y8-8{list-style-type:none}ul.lst-kix_26k24f7v4fnh-0{list-style-type:none}ul.lst-kix_loqeb32vhmp5-1{list-style-type:none}.lst-kix_xdtvugvb0m4x-5>li:before{content:"- "}ul.lst-kix_loqeb32vhmp5-2{list-style-type:none}.lst-kix_bz28urxlslt-1>li:before{content:"- "}ul.lst-kix_loqeb32vhmp5-0{list-style-type:none}.lst-kix_9uc7rfmtrze6-2>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-2}.lst-kix_c7f83m9fm0z-6>li:before{content:"\0025cf "}.lst-kix_a1pym3titlrs-3>li:before{content:"\0025cf "}.lst-kix_jgl333sta81j-0>li:before{content:"\0025cf "}.lst-kix_8pnkhajaycfj-1>li:before{content:"- "}.lst-kix_vfbyyaij8aah-4>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-4,lower-latin) ". "}.lst-kix_zgo8zkd6sx7-6>li:before{content:"- "}.lst-kix_cpvyu8stzxxy-6>li:before{content:"\0025cf "}.lst-kix_8pnkhajaycfj-7>li:before{content:"- "}ol.lst-kix_tftn79eu5169-8.start{counter-reset:lst-ctn-kix_tftn79eu5169-8 0}.lst-kix_1akhgirqnq32-4>li:before{content:"- "}.lst-kix_rl5efr44le4n-6>li:before{content:"\0025cf "}.lst-kix_rl5efr44le4n-0>li:before{content:"\0025cf "}.lst-kix_hstwkpty94a-8>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-8>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-8}ol.lst-kix_9uc7rfmtrze6-0.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-0 0}.lst-kix_9tqshqp1vk04-2>li:before{content:"- "}ul.lst-kix_v0kjcrdpo5y8-2{list-style-type:none}ul.lst-kix_v0kjcrdpo5y8-3{list-style-type:none}ul.lst-kix_v0kjcrdpo5y8-0{list-style-type:none}ul.lst-kix_wygi73u4y8tw-8{list-style-type:none}ul.lst-kix_v0kjcrdpo5y8-1{list-style-type:none}ul.lst-kix_v0kjcrdpo5y8-6{list-style-type:none}ul.lst-kix_v0kjcrdpo5y8-7{list-style-type:none}.lst-kix_n193x2857tme-3>li:before{content:"\0025cf "}ul.lst-kix_v0kjcrdpo5y8-4{list-style-type:none}.lst-kix_nzzulhihegbc-2>li:before{content:"- "}ul.lst-kix_v0kjcrdpo5y8-5{list-style-type:none}ul.lst-kix_wygi73u4y8tw-2{list-style-type:none}ul.lst-kix_wygi73u4y8tw-3{list-style-type:none}ul.lst-kix_wygi73u4y8tw-0{list-style-type:none}ul.lst-kix_wygi73u4y8tw-1{list-style-type:none}ul.lst-kix_wygi73u4y8tw-6{list-style-type:none}ul.lst-kix_wygi73u4y8tw-7{list-style-type:none}ul.lst-kix_wygi73u4y8tw-4{list-style-type:none}ul.lst-kix_wygi73u4y8tw-5{list-style-type:none}.lst-kix_fmqv0hhq489j-3>li:before{content:"- "}.lst-kix_x9vsod9g0g5w-4>li:before{content:"\0025cb "}.lst-kix_hstwkpty94a-2>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-4>li:before{content:"\0025cb "}.lst-kix_7mseajt53c5t-5>li:before{content:"\0025a0 "}.lst-kix_x87v5nqljbag-5>li:before{content:"\0025a0 "}.lst-kix_x87v5nqljbag-8>li:before{content:"\0025a0 "}.lst-kix_2fzlx3v3ax3x-5>li:before{content:"- "}.lst-kix_2fzlx3v3ax3x-2>li:before{content:"- "}.lst-kix_ql108maoyew0-6>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-0>li:before{content:"\0025cf "}.lst-kix_6u8mzk29n5rn-3>li:before{content:"\0025cf "}.lst-kix_ql108maoyew0-3>li:before{content:"- "}.lst-kix_vn0q36mkrlld-2>li:before{content:"\0025a0 "}.lst-kix_6u8mzk29n5rn-6>li:before{content:"\0025cf "}.lst-kix_a5wkod64biep-4>li:before{content:"- "}.lst-kix_vfdsxoqugx35-8>li:before{content:"- "}.lst-kix_41kqbn393r7s-3>li:before{content:"- "}.lst-kix_vn0q36mkrlld-5>li:before{content:"\0025a0 "}.lst-kix_41kqbn393r7s-6>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-3>li:before{content:"\0025cf "}ul.lst-kix_jgl333sta81j-8{list-style-type:none}ul.lst-kix_jgl333sta81j-7{list-style-type:none}ul.lst-kix_jgl333sta81j-6{list-style-type:none}ul.lst-kix_jgl333sta81j-5{list-style-type:none}ul.lst-kix_jgl333sta81j-4{list-style-type:none}ul.lst-kix_jgl333sta81j-3{list-style-type:none}ul.lst-kix_jgl333sta81j-2{list-style-type:none}.lst-kix_jh5ozkc156c0-8>li:before{content:"- "}ul.lst-kix_jgl333sta81j-1{list-style-type:none}ul.lst-kix_jgl333sta81j-0{list-style-type:none}.lst-kix_1gns5yqacl5a-4>li:before{content:"- "}.lst-kix_m10u6c8e7h49-5>li:before{content:"- "}.lst-kix_1gns5yqacl5a-1>li:before{content:"- "}.lst-kix_tftn79eu5169-2>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-2,lower-roman) ". "}.lst-kix_vfdsxoqugx35-5>li:before{content:"- "}ul.lst-kix_qcqqascexby4-2{list-style-type:none}ul.lst-kix_qcqqascexby4-3{list-style-type:none}ul.lst-kix_qcqqascexby4-4{list-style-type:none}ul.lst-kix_qcqqascexby4-5{list-style-type:none}.lst-kix_l894ipqttw8-6>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-6,decimal) ". "}ul.lst-kix_qcqqascexby4-0{list-style-type:none}ul.lst-kix_qcqqascexby4-1{list-style-type:none}.lst-kix_nxwesaehoprg-1>li:before{content:"\0025cb "}.lst-kix_vvte7xrdhkfu-1>li:before{content:"- "}.lst-kix_wnidkq2q4br-8>li:before{content:"- "}.lst-kix_m10u6c8e7h49-8>li:before{content:"- "}.lst-kix_l894ipqttw8-3>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-3,decimal) ". "}.lst-kix_tftn79eu5169-1>li{counter-increment:lst-ctn-kix_tftn79eu5169-1}ul.lst-kix_qcqqascexby4-6{list-style-type:none}ul.lst-kix_qcqqascexby4-7{list-style-type:none}.lst-kix_vvte7xrdhkfu-4>li:before{content:"- "}ul.lst-kix_qcqqascexby4-8{list-style-type:none}.lst-kix_50rzeclw4mgy-6>li:before{content:"- "}.lst-kix_yst6zvdstrpa-0>li:before{content:"- "}ul.lst-kix_sjhl6hkllosw-0{list-style-type:none}.lst-kix_p5avvlkymcn6-3>li:before{content:"- "}ul.lst-kix_sjhl6hkllosw-1{list-style-type:none}ul.lst-kix_sjhl6hkllosw-2{list-style-type:none}ul.lst-kix_sjhl6hkllosw-3{list-style-type:none}ul.lst-kix_sjhl6hkllosw-4{list-style-type:none}ul.lst-kix_sjhl6hkllosw-5{list-style-type:none}ul.lst-kix_sjhl6hkllosw-6{list-style-type:none}ul.lst-kix_sjhl6hkllosw-7{list-style-type:none}ul.lst-kix_sjhl6hkllosw-8{list-style-type:none}.lst-kix_7yks2wb0pddg-3>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-0>li:before{content:"\0025cf "}.lst-kix_a2xq9qx5glak-1>li:before{content:"- "}.lst-kix_pl9pypjbye3v-4>li:before{content:"\0025cb "}.lst-kix_fcnvapqljo74-6>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-6>li:before{content:"\0025cf "}.lst-kix_xdtvugvb0m4x-2>li:before{content:"- "}.lst-kix_8pnkhajaycfj-4>li:before{content:"- "}.lst-kix_vfbyyaij8aah-7>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-7,lower-latin) ". "}.lst-kix_8kh4jd12jiew-5>li:before{content:"- "}.lst-kix_sjhl6hkllosw-3>li:before{content:"- "}.lst-kix_grze1ounqob7-6>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-1>li:before{content:"\0025cb "}.lst-kix_ym9o0nem12uh-2>li:before{content:"- "}.lst-kix_1akhgirqnq32-7>li:before{content:"- "}ul.lst-kix_41kqbn393r7s-0{list-style-type:none}ul.lst-kix_41kqbn393r7s-2{list-style-type:none}ul.lst-kix_41kqbn393r7s-1{list-style-type:none}ul.lst-kix_41kqbn393r7s-4{list-style-type:none}ul.lst-kix_41kqbn393r7s-3{list-style-type:none}ul.lst-kix_41kqbn393r7s-6{list-style-type:none}ul.lst-kix_41kqbn393r7s-5{list-style-type:none}ul.lst-kix_41kqbn393r7s-8{list-style-type:none}.lst-kix_rl5efr44le4n-3>li:before{content:"\0025cf "}ul.lst-kix_41kqbn393r7s-7{list-style-type:none}.lst-kix_vfbyyaij8aah-2>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-2}.lst-kix_m3v9kovg6rqv-6>li:before{content:"- "}.lst-kix_a1pym3titlrs-0>li:before{content:"\0025cf "}.lst-kix_o80cgtlbucd0-5>li:before{content:"- "}.lst-kix_a5wkod64biep-1>li:before{content:"- "}.lst-kix_n193x2857tme-0>li:before{content:"\0025cf "}.lst-kix_hstwkpty94a-5>li:before{content:"- "}.lst-kix_7mseajt53c5t-2>li:before{content:"\0025a0 "}.lst-kix_fmqv0hhq489j-6>li:before{content:"- "}.lst-kix_loqeb32vhmp5-5>li:before{content:"- "}.lst-kix_x9vsod9g0g5w-1>li:before{content:"\0025cb "}.lst-kix_li3lbcqn7du5-8>li:before{content:"- "}.lst-kix_li3lbcqn7du5-6>li:before{content:"- "}.lst-kix_8zlxzr94snw4-1>li:before{content:"- "}.lst-kix_li3lbcqn7du5-0>li:before{content:"- "}.lst-kix_li3lbcqn7du5-2>li:before{content:"- "}ul.lst-kix_5cuzwv627bv5-0{list-style-type:none}ul.lst-kix_5cuzwv627bv5-1{list-style-type:none}ul.lst-kix_5cuzwv627bv5-2{list-style-type:none}.lst-kix_li3lbcqn7du5-4>li:before{content:"- "}ul.lst-kix_5cuzwv627bv5-3{list-style-type:none}ul.lst-kix_5cuzwv627bv5-4{list-style-type:none}ul.lst-kix_5cuzwv627bv5-5{list-style-type:none}ul.lst-kix_5cuzwv627bv5-6{list-style-type:none}ul.lst-kix_5cuzwv627bv5-7{list-style-type:none}ul.lst-kix_5cuzwv627bv5-8{list-style-type:none}ul.lst-kix_javo7o9nyfgh-8{list-style-type:none}ul.lst-kix_javo7o9nyfgh-7{list-style-type:none}ul.lst-kix_javo7o9nyfgh-6{list-style-type:none}.lst-kix_8zlxzr94snw4-5>li:before{content:"- "}.lst-kix_m3v9kovg6rqv-1>li:before{content:"- "}.lst-kix_2rlrxa67j61v-7>li:before{content:"\0025cb "}.lst-kix_8zlxzr94snw4-3>li:before{content:"- "}.lst-kix_m3v9kovg6rqv-3>li:before{content:"- "}ul.lst-kix_kmbpxss6evs9-8{list-style-type:none}.lst-kix_2rlrxa67j61v-1>li:before{content:"\0025cb "}.lst-kix_2rlrxa67j61v-3>li:before{content:"\0025cf "}ul.lst-kix_kmbpxss6evs9-4{list-style-type:none}ul.lst-kix_kmbpxss6evs9-5{list-style-type:none}.lst-kix_9uc7rfmtrze6-7>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-7}ul.lst-kix_kmbpxss6evs9-6{list-style-type:none}ul.lst-kix_kmbpxss6evs9-7{list-style-type:none}ul.lst-kix_kmbpxss6evs9-0{list-style-type:none}ul.lst-kix_javo7o9nyfgh-1{list-style-type:none}ul.lst-kix_kmbpxss6evs9-1{list-style-type:none}ul.lst-kix_javo7o9nyfgh-0{list-style-type:none}ul.lst-kix_kmbpxss6evs9-2{list-style-type:none}ul.lst-kix_kmbpxss6evs9-3{list-style-type:none}.lst-kix_2rlrxa67j61v-5>li:before{content:"\0025a0 "}.lst-kix_8zlxzr94snw4-7>li:before{content:"- "}ul.lst-kix_javo7o9nyfgh-5{list-style-type:none}ul.lst-kix_javo7o9nyfgh-4{list-style-type:none}ul.lst-kix_javo7o9nyfgh-3{list-style-type:none}ul.lst-kix_javo7o9nyfgh-2{list-style-type:none}.lst-kix_prhpzba1wavz-2>li:before{content:"- "}.lst-kix_prhpzba1wavz-4>li:before{content:"- "}.lst-kix_prhpzba1wavz-6>li:before{content:"- "}.lst-kix_y5utuser2lo-5>li:before{content:"- "}ul.lst-kix_7yks2wb0pddg-3{list-style-type:none}ul.lst-kix_7yks2wb0pddg-4{list-style-type:none}ul.lst-kix_7yks2wb0pddg-1{list-style-type:none}ul.lst-kix_7yks2wb0pddg-2{list-style-type:none}ul.lst-kix_7yks2wb0pddg-0{list-style-type:none}.lst-kix_y5utuser2lo-3>li:before{content:"- "}.lst-kix_prhpzba1wavz-8>li:before{content:"- "}ul.lst-kix_7yks2wb0pddg-7{list-style-type:none}ul.lst-kix_7yks2wb0pddg-8{list-style-type:none}.lst-kix_y5utuser2lo-1>li:before{content:"- "}ul.lst-kix_7yks2wb0pddg-5{list-style-type:none}ul.lst-kix_7yks2wb0pddg-6{list-style-type:none}.lst-kix_fqoz0c1i23si-1>li:before{content:"- "}.lst-kix_jv3t8x1s04kk-3>li:before{content:"\0025cf "}.lst-kix_l894ipqttw8-0>li{counter-increment:lst-ctn-kix_l894ipqttw8-0}.lst-kix_jv3t8x1s04kk-1>li:before{content:"\0025cb "}.lst-kix_fqoz0c1i23si-7>li:before{content:"- "}.lst-kix_y5utuser2lo-7>li:before{content:"- "}.lst-kix_jv3t8x1s04kk-7>li:before{content:"\0025cb "}ul.lst-kix_61wdk9msboc5-5{list-style-type:none}ul.lst-kix_61wdk9msboc5-4{list-style-type:none}ul.lst-kix_61wdk9msboc5-3{list-style-type:none}.lst-kix_fqoz0c1i23si-3>li:before{content:"- "}.lst-kix_fqoz0c1i23si-5>li:before{content:"- "}ul.lst-kix_61wdk9msboc5-2{list-style-type:none}.lst-kix_prhpzba1wavz-0>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-0>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-0}ul.lst-kix_61wdk9msboc5-1{list-style-type:none}ul.lst-kix_61wdk9msboc5-0{list-style-type:none}.lst-kix_7fjemue0ct45-2>li:before{content:"- "}.lst-kix_jv3t8x1s04kk-5>li:before{content:"\0025a0 "}.lst-kix_qh78q3eb8wns-1>li:before{content:"- "}.lst-kix_kkqzfjachi11-0>li:before{content:"- "}ul.lst-kix_61wdk9msboc5-8{list-style-type:none}.lst-kix_7fjemue0ct45-0>li:before{content:"- "}ul.lst-kix_61wdk9msboc5-7{list-style-type:none}ul.lst-kix_61wdk9msboc5-6{list-style-type:none}.lst-kix_7afqendiuk8d-7>li:before{content:"- "}ul.lst-kix_n193x2857tme-5{list-style-type:none}.lst-kix_qh78q3eb8wns-5>li:before{content:"- "}ul.lst-kix_n193x2857tme-4{list-style-type:none}.lst-kix_kkqzfjachi11-2>li:before{content:"- "}ul.lst-kix_n193x2857tme-7{list-style-type:none}ul.lst-kix_n193x2857tme-6{list-style-type:none}ul.lst-kix_n193x2857tme-1{list-style-type:none}.lst-kix_qh78q3eb8wns-7>li:before{content:"- "}ul.lst-kix_n193x2857tme-0{list-style-type:none}ul.lst-kix_n193x2857tme-3{list-style-type:none}ul.lst-kix_n193x2857tme-2{list-style-type:none}.lst-kix_7afqendiuk8d-3>li:before{content:"- "}.lst-kix_kkqzfjachi11-6>li:before{content:"- "}.lst-kix_nxwesaehoprg-4>li:before{content:"\0025cb "}.lst-kix_7afqendiuk8d-1>li:before{content:"- "}.lst-kix_7afqendiuk8d-5>li:before{content:"- "}ul.lst-kix_n193x2857tme-8{list-style-type:none}.lst-kix_kkqzfjachi11-4>li:before{content:"- "}.lst-kix_kkqzfjachi11-8>li:before{content:"- "}.lst-kix_nxwesaehoprg-8>li:before{content:"\0025a0 "}.lst-kix_qh78q3eb8wns-3>li:before{content:"- "}.lst-kix_nxwesaehoprg-6>li:before{content:"\0025cf "}.lst-kix_2hcqi35168fy-6>li:before{content:"- "}ul.lst-kix_vol3xqviu5ei-0{list-style-type:none}.lst-kix_srkrc1u8ht8r-4>li:before{content:"- "}.lst-kix_2hcqi35168fy-0>li:before{content:"- "}.lst-kix_2hcqi35168fy-8>li:before{content:"- "}ul.lst-kix_pcc45dcmut3q-0{list-style-type:none}ul.lst-kix_pcc45dcmut3q-2{list-style-type:none}ul.lst-kix_pcc45dcmut3q-1{list-style-type:none}ul.lst-kix_pcc45dcmut3q-4{list-style-type:none}ul.lst-kix_pcc45dcmut3q-3{list-style-type:none}ul.lst-kix_pcc45dcmut3q-6{list-style-type:none}.lst-kix_srkrc1u8ht8r-2>li:before{content:"- "}.lst-kix_2hcqi35168fy-2>li:before{content:"- "}ul.lst-kix_pcc45dcmut3q-5{list-style-type:none}ul.lst-kix_vol3xqviu5ei-1{list-style-type:none}ul.lst-kix_vol3xqviu5ei-2{list-style-type:none}ul.lst-kix_vol3xqviu5ei-3{list-style-type:none}ul.lst-kix_vol3xqviu5ei-4{list-style-type:none}ul.lst-kix_e8cg55g9v52c-8{list-style-type:none}ul.lst-kix_vol3xqviu5ei-5{list-style-type:none}ul.lst-kix_vol3xqviu5ei-6{list-style-type:none}ul.lst-kix_vol3xqviu5ei-7{list-style-type:none}.lst-kix_srkrc1u8ht8r-0>li:before{content:"- "}.lst-kix_2hcqi35168fy-4>li:before{content:"- "}ul.lst-kix_vol3xqviu5ei-8{list-style-type:none}ul.lst-kix_myze4pt7323s-7{list-style-type:none}ul.lst-kix_e8cg55g9v52c-3{list-style-type:none}.lst-kix_smm1ba7pvg7z-7>li:before{content:"- "}ul.lst-kix_myze4pt7323s-6{list-style-type:none}ul.lst-kix_e8cg55g9v52c-2{list-style-type:none}ul.lst-kix_myze4pt7323s-5{list-style-type:none}ul.lst-kix_e8cg55g9v52c-1{list-style-type:none}ul.lst-kix_myze4pt7323s-4{list-style-type:none}ul.lst-kix_e8cg55g9v52c-0{list-style-type:none}ul.lst-kix_e8cg55g9v52c-7{list-style-type:none}.lst-kix_smm1ba7pvg7z-5>li:before{content:"- "}ul.lst-kix_e8cg55g9v52c-6{list-style-type:none}ul.lst-kix_e8cg55g9v52c-5{list-style-type:none}ol.lst-kix_l894ipqttw8-4.start{counter-reset:lst-ctn-kix_l894ipqttw8-4 0}ul.lst-kix_myze4pt7323s-8{list-style-type:none}ul.lst-kix_e8cg55g9v52c-4{list-style-type:none}ul.lst-kix_pcc45dcmut3q-8{list-style-type:none}.lst-kix_smm1ba7pvg7z-3>li:before{content:"- "}ul.lst-kix_pcc45dcmut3q-7{list-style-type:none}ul.lst-kix_myze4pt7323s-3{list-style-type:none}ul.lst-kix_myze4pt7323s-2{list-style-type:none}ul.lst-kix_myze4pt7323s-1{list-style-type:none}ul.lst-kix_myze4pt7323s-0{list-style-type:none}.lst-kix_m3v9kovg6rqv-5>li:before{content:"- "}ul.lst-kix_4tbw4vbvib8m-8{list-style-type:none}ol.lst-kix_tftn79eu5169-7.start{counter-reset:lst-ctn-kix_tftn79eu5169-7 0}.lst-kix_smm1ba7pvg7z-1>li:before{content:"- "}.lst-kix_srkrc1u8ht8r-6>li:before{content:"- "}.lst-kix_tftn79eu5169-6>li{counter-increment:lst-ctn-kix_tftn79eu5169-6}.lst-kix_m3v9kovg6rqv-7>li:before{content:"- "}.lst-kix_srkrc1u8ht8r-8>li:before{content:"- "}.lst-kix_zamnyctd2de5-3>li:before{content:"- "}.lst-kix_zamnyctd2de5-7>li:before{content:"- "}ul.lst-kix_4tbw4vbvib8m-2{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-3{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-0{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-1{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-6{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-7{list-style-type:none}.lst-kix_zamnyctd2de5-5>li:before{content:"- "}ul.lst-kix_4tbw4vbvib8m-4{list-style-type:none}ul.lst-kix_4tbw4vbvib8m-5{list-style-type:none}.lst-kix_zamnyctd2de5-1>li:before{content:"- "}.lst-kix_2fzlx3v3ax3x-8>li:before{content:"- "}.lst-kix_x87v5nqljbag-7>li:before{content:"\0025cb "}.lst-kix_9hxy9el3gvo4-8>li:before{content:"- "}.lst-kix_2fzlx3v3ax3x-4>li:before{content:"- "}.lst-kix_vvte7xrdhkfu-7>li:before{content:"- "}.lst-kix_vn0q36mkrlld-0>li:before{content:"\0025cf "}.lst-kix_41kqbn393r7s-0>li:before{content:"- "}.lst-kix_4tbw4vbvib8m-1>li:before{content:"\0025cb "}.lst-kix_41kqbn393r7s-4>li:before{content:"- "}.lst-kix_vn0q36mkrlld-4>li:before{content:"\0025cb "}ul.lst-kix_fmqv0hhq489j-5{list-style-type:none}.lst-kix_2fzlx3v3ax3x-0>li:before{content:"- "}ul.lst-kix_fmqv0hhq489j-6{list-style-type:none}.lst-kix_41kqbn393r7s-8>li:before{content:"- "}ul.lst-kix_fmqv0hhq489j-3{list-style-type:none}ul.lst-kix_fmqv0hhq489j-4{list-style-type:none}ul.lst-kix_fmqv0hhq489j-1{list-style-type:none}.lst-kix_9hxy9el3gvo4-0>li:before{content:"- "}.lst-kix_9hxy9el3gvo4-4>li:before{content:"- "}ul.lst-kix_fmqv0hhq489j-2{list-style-type:none}ul.lst-kix_fmqv0hhq489j-0{list-style-type:none}.lst-kix_x87v5nqljbag-3>li:before{content:"\0025cf "}.lst-kix_4tbw4vbvib8m-5>li:before{content:"\0025a0 "}.lst-kix_vn0q36mkrlld-8>li:before{content:"\0025a0 "}ul.lst-kix_fmqv0hhq489j-7{list-style-type:none}ul.lst-kix_fmqv0hhq489j-8{list-style-type:none}.lst-kix_q5f4ujvd57vs-6>li:before{content:"\0025cf "}.lst-kix_9uc7rfmtrze6-0>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-0,decimal) ". "}.lst-kix_9uc7rfmtrze6-4>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-4,lower-latin) ". "}ol.lst-kix_vfbyyaij8aah-4.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-4 0}.lst-kix_1gns5yqacl5a-7>li:before{content:"- "}.lst-kix_vfbyyaij8aah-1>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-1,lower-latin) ". "}.lst-kix_1gns5yqacl5a-3>li:before{content:"- "}.lst-kix_jh5ozkc156c0-1>li:before{content:"- "}.lst-kix_jh5ozkc156c0-5>li:before{content:"- "}.lst-kix_m10u6c8e7h49-3>li:before{content:"- "}.lst-kix_v0kjcrdpo5y8-6>li:before{content:"- "}ul.lst-kix_yimhgjig100r-8{list-style-type:none}ul.lst-kix_yimhgjig100r-7{list-style-type:none}ul.lst-kix_yimhgjig100r-6{list-style-type:none}.lst-kix_2guvfj7t4hls-0>li:before{content:"- "}ul.lst-kix_yimhgjig100r-5{list-style-type:none}ul.lst-kix_yimhgjig100r-4{list-style-type:none}.lst-kix_v0kjcrdpo5y8-2>li:before{content:"- "}.lst-kix_l894ipqttw8-1>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-1,lower-latin) ". "}.lst-kix_m10u6c8e7h49-7>li:before{content:"- "}.lst-kix_wnidkq2q4br-6>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-8>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-8,lower-roman) ". "}.lst-kix_2guvfj7t4hls-4>li:before{content:"- "}.lst-kix_2guvfj7t4hls-8>li:before{content:"- "}ul.lst-kix_yimhgjig100r-3{list-style-type:none}ul.lst-kix_yimhgjig100r-2{list-style-type:none}.lst-kix_nxwesaehoprg-0>li:before{content:"\0025cf "}ul.lst-kix_yimhgjig100r-1{list-style-type:none}.lst-kix_wnidkq2q4br-2>li:before{content:"- "}ul.lst-kix_yimhgjig100r-0{list-style-type:none}.lst-kix_l894ipqttw8-5>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-5,lower-roman) ". "}.lst-kix_vvte7xrdhkfu-3>li:before{content:"- "}.lst-kix_50rzeclw4mgy-4>li:before{content:"- "}.lst-kix_yst6zvdstrpa-2>li:before{content:"- "}.lst-kix_bz28urxlslt-8>li:before{content:"- "}.lst-kix_fvo5wmmg6fyo-3>li:before{content:"- "}.lst-kix_7fjemue0ct45-4>li:before{content:"- "}.lst-kix_pl9pypjbye3v-2>li:before{content:"\0025a0 "}ol.lst-kix_tftn79eu5169-2.start{counter-reset:lst-ctn-kix_tftn79eu5169-2 0}.lst-kix_fvo5wmmg6fyo-7>li:before{content:"- "}.lst-kix_bz28urxlslt-4>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-2>li:before{content:"\0025a0 "}.lst-kix_pl9pypjbye3v-6>li:before{content:"\0025cf "}.lst-kix_bz28urxlslt-0>li:before{content:"- "}.lst-kix_javo7o9nyfgh-7>li:before{content:"- "}.lst-kix_7fjemue0ct45-8>li:before{content:"- "}.lst-kix_50rzeclw4mgy-8>li:before{content:"- "}.lst-kix_yst6zvdstrpa-6>li:before{content:"- "}.lst-kix_kmbpxss6evs9-6>li:before{content:"- "}ul.lst-kix_bwp5usd4tvni-8{list-style-type:none}ul.lst-kix_bwp5usd4tvni-5{list-style-type:none}ul.lst-kix_bwp5usd4tvni-4{list-style-type:none}ul.lst-kix_bwp5usd4tvni-7{list-style-type:none}ul.lst-kix_bwp5usd4tvni-6{list-style-type:none}ul.lst-kix_bwp5usd4tvni-1{list-style-type:none}ul.lst-kix_bwp5usd4tvni-0{list-style-type:none}ul.lst-kix_bwp5usd4tvni-3{list-style-type:none}ul.lst-kix_bwp5usd4tvni-2{list-style-type:none}.lst-kix_bhc7ck6t2jgf-3>li:before{content:"\0025cf "}ul.lst-kix_jh5ozkc156c0-4{list-style-type:none}ul.lst-kix_2rlrxa67j61v-7{list-style-type:none}ul.lst-kix_jh5ozkc156c0-5{list-style-type:none}ul.lst-kix_2rlrxa67j61v-6{list-style-type:none}ul.lst-kix_jh5ozkc156c0-6{list-style-type:none}ul.lst-kix_2rlrxa67j61v-5{list-style-type:none}ul.lst-kix_jh5ozkc156c0-7{list-style-type:none}ul.lst-kix_2rlrxa67j61v-4{list-style-type:none}ul.lst-kix_jh5ozkc156c0-8{list-style-type:none}ul.lst-kix_2rlrxa67j61v-3{list-style-type:none}ul.lst-kix_2rlrxa67j61v-2{list-style-type:none}ul.lst-kix_2rlrxa67j61v-1{list-style-type:none}ul.lst-kix_2rlrxa67j61v-0{list-style-type:none}.lst-kix_50rzeclw4mgy-0>li:before{content:"- "}.lst-kix_bhc7ck6t2jgf-7>li:before{content:"\0025cb "}.lst-kix_q5f4ujvd57vs-2>li:before{content:"\0025a0 "}ul.lst-kix_jh5ozkc156c0-0{list-style-type:none}ul.lst-kix_jh5ozkc156c0-1{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-4.start{counter-reset:lst-ctn-kix_9uc7rfmtrze6-4 0}.lst-kix_vfbyyaij8aah-5>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-5,lower-roman) ". "}ul.lst-kix_jh5ozkc156c0-2{list-style-type:none}ul.lst-kix_jh5ozkc156c0-3{list-style-type:none}ul.lst-kix_2rlrxa67j61v-8{list-style-type:none}ul.lst-kix_a1pym3titlrs-2{list-style-type:none}ul.lst-kix_a1pym3titlrs-3{list-style-type:none}ul.lst-kix_a1pym3titlrs-0{list-style-type:none}ul.lst-kix_a1pym3titlrs-1{list-style-type:none}.lst-kix_rl5efr44le4n-5>li:before{content:"\0025a0 "}.lst-kix_vfbyyaij8aah-1>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-1}ul.lst-kix_a1pym3titlrs-8{list-style-type:none}ul.lst-kix_a1pym3titlrs-6{list-style-type:none}ul.lst-kix_a1pym3titlrs-7{list-style-type:none}ul.lst-kix_a1pym3titlrs-4{list-style-type:none}ul.lst-kix_a1pym3titlrs-5{list-style-type:none}.lst-kix_vfbyyaij8aah-8>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-8}.lst-kix_x9vsod9g0g5w-7>li:before{content:"\0025cb "}.lst-kix_rl5efr44le4n-1>li:before{content:"\0025cb "}.lst-kix_kmbpxss6evs9-2>li:before{content:"- "}.lst-kix_x9vsod9g0g5w-3>li:before{content:"\0025cf "}.lst-kix_l9kc2sz2zal1-6>li:before{content:"\0025cf "}.lst-kix_kibflrpfavrf-8>li:before{content:"- "}.lst-kix_kibflrpfavrf-6>li:before{content:"- "}.lst-kix_s75uo3xiq39v-1>li:before{content:"- "}.lst-kix_pcc45dcmut3q-1>li:before{content:"- "}ul.lst-kix_bicgd61rc0xi-8{list-style-type:none}ul.lst-kix_bicgd61rc0xi-7{list-style-type:none}ul.lst-kix_bicgd61rc0xi-6{list-style-type:none}.lst-kix_q9arux8ft5wh-0>li:before{content:"- "}ul.lst-kix_bicgd61rc0xi-5{list-style-type:none}.lst-kix_oshcc4bufuuj-8>li:before{content:"- "}.lst-kix_oshcc4bufuuj-6>li:before{content:"- "}.lst-kix_s75uo3xiq39v-7>li:before{content:"- "}.lst-kix_bicgd61rc0xi-8>li:before{content:"\0025a0 "}.lst-kix_uv9sd9wefqn3-2>li:before{content:"- "}.lst-kix_bwp5usd4tvni-7>li:before{content:"- "}.lst-kix_uv9sd9wefqn3-4>li:before{content:"- "}.lst-kix_kibflrpfavrf-0>li:before{content:"- "}.lst-kix_q9arux8ft5wh-2>li:before{content:"- "}ul.lst-kix_pl9pypjbye3v-4{list-style-type:none}ul.lst-kix_pl9pypjbye3v-5{list-style-type:none}ul.lst-kix_pl9pypjbye3v-6{list-style-type:none}.lst-kix_bwp5usd4tvni-1>li:before{content:"- "}ul.lst-kix_pl9pypjbye3v-7{list-style-type:none}ul.lst-kix_pl9pypjbye3v-0{list-style-type:none}.lst-kix_lt953f1u6b8p-2>li:before{content:"- "}ul.lst-kix_pl9pypjbye3v-1{list-style-type:none}ul.lst-kix_pl9pypjbye3v-2{list-style-type:none}.lst-kix_q2ajzi2aarbx-4>li:before{content:"- "}.lst-kix_bicgd61rc0xi-0>li:before{content:"\0025cf "}ul.lst-kix_pl9pypjbye3v-3{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-2{list-style-type:none}.lst-kix_lt953f1u6b8p-4>li:before{content:"- "}ul.lst-kix_l9kc2sz2zal1-1{list-style-type:none}.lst-kix_oshcc4bufuuj-0>li:before{content:"- "}ul.lst-kix_l9kc2sz2zal1-0{list-style-type:none}.lst-kix_9mcin3jkhrjk-8>li:before{content:"- "}ul.lst-kix_pl9pypjbye3v-8{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-6{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-5{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-4{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-3{list-style-type:none}.lst-kix_pcc45dcmut3q-7>li:before{content:"- "}ul.lst-kix_l9kc2sz2zal1-8{list-style-type:none}ul.lst-kix_l9kc2sz2zal1-7{list-style-type:none}.lst-kix_ym9o0nem12uh-3>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-6>li:before{content:"- "}ul.lst-kix_bicgd61rc0xi-4{list-style-type:none}ul.lst-kix_bicgd61rc0xi-3{list-style-type:none}ul.lst-kix_bicgd61rc0xi-2{list-style-type:none}ul.lst-kix_bicgd61rc0xi-1{list-style-type:none}ul.lst-kix_bicgd61rc0xi-0{list-style-type:none}.lst-kix_bicgd61rc0xi-2>li:before{content:"\0025a0 "}.lst-kix_u05q3fjgh3s5-4>li:before{content:"- "}ul.lst-kix_wfvzecrqglas-0{list-style-type:none}ul.lst-kix_bz28urxlslt-0{list-style-type:none}ul.lst-kix_wfvzecrqglas-1{list-style-type:none}.lst-kix_jflz1hbg2var-2>li:before{content:"- "}ul.lst-kix_1akhgirqnq32-0{list-style-type:none}ul.lst-kix_bz28urxlslt-3{list-style-type:none}ul.lst-kix_bz28urxlslt-4{list-style-type:none}ul.lst-kix_bz28urxlslt-1{list-style-type:none}ul.lst-kix_bz28urxlslt-2{list-style-type:none}.lst-kix_wygi73u4y8tw-7>li:before{content:"- "}ul.lst-kix_bz28urxlslt-7{list-style-type:none}ul.lst-kix_wfvzecrqglas-8{list-style-type:none}ul.lst-kix_bz28urxlslt-8{list-style-type:none}ul.lst-kix_bz28urxlslt-5{list-style-type:none}ul.lst-kix_wfvzecrqglas-6{list-style-type:none}ul.lst-kix_bz28urxlslt-6{list-style-type:none}ul.lst-kix_wfvzecrqglas-7{list-style-type:none}ul.lst-kix_wfvzecrqglas-4{list-style-type:none}ul.lst-kix_wfvzecrqglas-5{list-style-type:none}.lst-kix_jflz1hbg2var-0>li:before{content:"- "}.lst-kix_jflz1hbg2var-8>li:before{content:"- "}ul.lst-kix_wfvzecrqglas-2{list-style-type:none}.lst-kix_lwcjl9ef5q9v-0>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-8>li:before{content:"- "}ul.lst-kix_wfvzecrqglas-3{list-style-type:none}.lst-kix_qtbrqaqp4pt2-1>li:before{content:"\0025cb "}ul.lst-kix_p5avvlkymcn6-6{list-style-type:none}.lst-kix_rqgiuuoe0nx7-0>li:before{content:"- "}ul.lst-kix_p5avvlkymcn6-5{list-style-type:none}ul.lst-kix_p5avvlkymcn6-8{list-style-type:none}ul.lst-kix_p5avvlkymcn6-7{list-style-type:none}.lst-kix_paj4ag26vnuh-5>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-6>li:before{content:"- "}ul.lst-kix_1akhgirqnq32-4{list-style-type:none}ul.lst-kix_1akhgirqnq32-3{list-style-type:none}ul.lst-kix_1akhgirqnq32-2{list-style-type:none}ul.lst-kix_1akhgirqnq32-1{list-style-type:none}ul.lst-kix_1akhgirqnq32-8{list-style-type:none}.lst-kix_c7f83m9fm0z-8>li:before{content:"\0025a0 "}ul.lst-kix_1akhgirqnq32-7{list-style-type:none}ol.lst-kix_l894ipqttw8-1.start{counter-reset:lst-ctn-kix_l894ipqttw8-1 0}ul.lst-kix_1akhgirqnq32-6{list-style-type:none}.lst-kix_paj4ag26vnuh-7>li:before{content:"- "}ul.lst-kix_1akhgirqnq32-5{list-style-type:none}.lst-kix_wygi73u4y8tw-1>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-8>li:before{content:"- "}ul.lst-kix_p5avvlkymcn6-0{list-style-type:none}.lst-kix_9mcin3jkhrjk-0>li:before{content:"- "}.lst-kix_9mcin3jkhrjk-2>li:before{content:"- "}ul.lst-kix_p5avvlkymcn6-2{list-style-type:none}.lst-kix_rqgiuuoe0nx7-6>li:before{content:"- "}ul.lst-kix_p5avvlkymcn6-1{list-style-type:none}ul.lst-kix_p5avvlkymcn6-4{list-style-type:none}ul.lst-kix_p5avvlkymcn6-3{list-style-type:none}.lst-kix_a2xq9qx5glak-3>li:before{content:"- "}ul.lst-kix_s75uo3xiq39v-1{list-style-type:none}ul.lst-kix_s75uo3xiq39v-2{list-style-type:none}ul.lst-kix_s75uo3xiq39v-3{list-style-type:none}ul.lst-kix_s75uo3xiq39v-4{list-style-type:none}.lst-kix_a2xq9qx5glak-5>li:before{content:"- "}ul.lst-kix_s75uo3xiq39v-5{list-style-type:none}ul.lst-kix_s75uo3xiq39v-6{list-style-type:none}ul.lst-kix_s75uo3xiq39v-7{list-style-type:none}ul.lst-kix_s75uo3xiq39v-8{list-style-type:none}.lst-kix_vfbyyaij8aah-3>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-3}.lst-kix_qtbrqaqp4pt2-7>li:before{content:"\0025cb "}ul.lst-kix_s75uo3xiq39v-0{list-style-type:none}ul.lst-kix_t2rlxykrkesl-1{list-style-type:none}.lst-kix_7yks2wb0pddg-2>li:before{content:"- "}ul.lst-kix_t2rlxykrkesl-0{list-style-type:none}.lst-kix_s9gy267mt5i6-6>li:before{content:"- "}.lst-kix_gja9a1vqtcl8-5>li:before{content:"- "}.lst-kix_burqudjey0lg-5>li:before{content:"- "}.lst-kix_burqudjey0lg-7>li:before{content:"- "}ul.lst-kix_t2rlxykrkesl-5{list-style-type:none}.lst-kix_7yks2wb0pddg-4>li:before{content:"- "}ul.lst-kix_t2rlxykrkesl-4{list-style-type:none}.lst-kix_s9gy267mt5i6-4>li:before{content:"- "}ul.lst-kix_t2rlxykrkesl-3{list-style-type:none}ul.lst-kix_t2rlxykrkesl-2{list-style-type:none}ul.lst-kix_t2rlxykrkesl-8{list-style-type:none}.lst-kix_myze4pt7323s-0>li:before{content:"\0025cf "}.lst-kix_cpvyu8stzxxy-8>li:before{content:"\0025a0 "}ul.lst-kix_t2rlxykrkesl-7{list-style-type:none}ul.lst-kix_t2rlxykrkesl-6{list-style-type:none}ol.lst-kix_l894ipqttw8-6.start{counter-reset:lst-ctn-kix_l894ipqttw8-6 0}.lst-kix_myze4pt7323s-2>li:before{content:"\0025a0 "}.lst-kix_fcnvapqljo74-7>li:before{content:"- "}.lst-kix_gja9a1vqtcl8-3>li:before{content:"- "}.lst-kix_fcnvapqljo74-5>li:before{content:"- "}.lst-kix_n193x2857tme-7>li:before{content:"\0025cb "}.lst-kix_myze4pt7323s-8>li:before{content:"\0025a0 "}.lst-kix_cpvyu8stzxxy-0>li:before{content:"\0025cf "}.lst-kix_a1pym3titlrs-7>li:before{content:"\0025cb "}.lst-kix_jgl333sta81j-4>li:before{content:"\0025cb "}.lst-kix_jgl333sta81j-6>li:before{content:"\0025cf "}.lst-kix_cpvyu8stzxxy-2>li:before{content:"\0025a0 "}.lst-kix_c7f83m9fm0z-2>li:before{content:"\0025a0 "}.lst-kix_c7f83m9fm0z-0>li:before{content:"\0025cf "}ul.lst-kix_gja9a1vqtcl8-7{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-3{list-style-type:none}ul.lst-kix_gja9a1vqtcl8-6{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-4{list-style-type:none}ul.lst-kix_gja9a1vqtcl8-5{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-1{list-style-type:none}ul.lst-kix_gja9a1vqtcl8-4{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-2{list-style-type:none}ul.lst-kix_gja9a1vqtcl8-3{list-style-type:none}ul.lst-kix_gja9a1vqtcl8-2{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-0{list-style-type:none}.lst-kix_lok0bp4zwj7j-0>li:before{content:"\0025cf "}ul.lst-kix_gja9a1vqtcl8-1{list-style-type:none}.lst-kix_1akhgirqnq32-8>li:before{content:"- "}ul.lst-kix_gja9a1vqtcl8-0{list-style-type:none}.lst-kix_lok0bp4zwj7j-2>li:before{content:"\0025a0 "}.lst-kix_ym9o0nem12uh-1>li:before{content:"- "}.lst-kix_1akhgirqnq32-6>li:before{content:"- "}ul.lst-kix_gja9a1vqtcl8-8{list-style-type:none}ol.lst-kix_l894ipqttw8-8{list-style-type:none}ol.lst-kix_l894ipqttw8-7{list-style-type:none}ul.lst-kix_7afqendiuk8d-1{list-style-type:none}ul.lst-kix_7afqendiuk8d-0{list-style-type:none}ul.lst-kix_7afqendiuk8d-3{list-style-type:none}ul.lst-kix_7afqendiuk8d-2{list-style-type:none}ul.lst-kix_7afqendiuk8d-5{list-style-type:none}ol.lst-kix_l894ipqttw8-2{list-style-type:none}ul.lst-kix_7afqendiuk8d-4{list-style-type:none}ol.lst-kix_l894ipqttw8-1{list-style-type:none}ul.lst-kix_7afqendiuk8d-7{list-style-type:none}ol.lst-kix_l894ipqttw8-0{list-style-type:none}ul.lst-kix_7afqendiuk8d-6{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-7{list-style-type:none}ol.lst-kix_l894ipqttw8-6{list-style-type:none}.lst-kix_a1pym3titlrs-1>li:before{content:"\0025cb "}ul.lst-kix_7afqendiuk8d-8{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-8{list-style-type:none}ol.lst-kix_l894ipqttw8-5{list-style-type:none}ul.lst-kix_dtuwn3k6sqxd-5{list-style-type:none}ol.lst-kix_l894ipqttw8-4{list-style-type:none}.lst-kix_nzzulhihegbc-8>li:before{content:"- "}.lst-kix_q2ajzi2aarbx-2>li:before{content:"- "}ol.lst-kix_vfbyyaij8aah-7.start{counter-reset:lst-ctn-kix_vfbyyaij8aah-7 0}ul.lst-kix_dtuwn3k6sqxd-6{list-style-type:none}ol.lst-kix_l894ipqttw8-3{list-style-type:none}.lst-kix_a5wkod64biep-2>li:before{content:"- "}.lst-kix_nzzulhihegbc-6>li:before{content:"- "}.lst-kix_fmqv0hhq489j-7>li:before{content:"- "}.lst-kix_a5wkod64biep-0>li:before{content:"- "}.lst-kix_hstwkpty94a-6>li:before{content:"- "}.lst-kix_n193x2857tme-1>li:before{content:"\0025cb "}.lst-kix_hstwkpty94a-4>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-8>li:before{content:"\0025a0 "}.lst-kix_1akhgirqnq32-0>li:before{content:"- "}.lst-kix_q9arux8ft5wh-8>li:before{content:"- "}.lst-kix_fmqv0hhq489j-5>li:before{content:"- "}.lst-kix_nzzulhihegbc-0>li:before{content:"- "}ul.lst-kix_2uk97xxtwjg-3{list-style-type:none}.lst-kix_ql108maoyew0-7>li:before{content:"- "}ul.lst-kix_2uk97xxtwjg-4{list-style-type:none}ul.lst-kix_2uk97xxtwjg-5{list-style-type:none}.lst-kix_kwpjd2ybbfk8-7>li:before{content:"\0025cb "}ul.lst-kix_2uk97xxtwjg-6{list-style-type:none}ul.lst-kix_2uk97xxtwjg-7{list-style-type:none}ul.lst-kix_2uk97xxtwjg-8{list-style-type:none}ul.lst-kix_qh78q3eb8wns-7{list-style-type:none}ul.lst-kix_qh78q3eb8wns-6{list-style-type:none}ul.lst-kix_qh78q3eb8wns-8{list-style-type:none}.lst-kix_6u8mzk29n5rn-7>li:before{content:"\0025cb "}.lst-kix_glunaeu7tbyx-2>li:before{content:"\0025a0 "}.lst-kix_2fzlx3v3ax3x-6>li:before{content:"- "}ul.lst-kix_2uk97xxtwjg-0{list-style-type:none}ul.lst-kix_2uk97xxtwjg-1{list-style-type:none}ul.lst-kix_2uk97xxtwjg-2{list-style-type:none}.lst-kix_4tbw4vbvib8m-3>li:before{content:"\0025cf "}.lst-kix_41kqbn393r7s-2>li:before{content:"- "}.lst-kix_a5wkod64biep-8>li:before{content:"- "}ul.lst-kix_hstwkpty94a-8{list-style-type:none}.lst-kix_9hxy9el3gvo4-2>li:before{content:"- "}ul.lst-kix_hstwkpty94a-7{list-style-type:none}.lst-kix_vn0q36mkrlld-6>li:before{content:"\0025cf "}ul.lst-kix_qh78q3eb8wns-1{list-style-type:none}ul.lst-kix_qh78q3eb8wns-0{list-style-type:none}ul.lst-kix_qh78q3eb8wns-3{list-style-type:none}ul.lst-kix_hstwkpty94a-4{list-style-type:none}ul.lst-kix_qh78q3eb8wns-2{list-style-type:none}ul.lst-kix_hstwkpty94a-3{list-style-type:none}ul.lst-kix_qh78q3eb8wns-5{list-style-type:none}ul.lst-kix_hstwkpty94a-6{list-style-type:none}ul.lst-kix_qh78q3eb8wns-4{list-style-type:none}ul.lst-kix_hstwkpty94a-5{list-style-type:none}.lst-kix_rl5efr44le4n-7>li:before{content:"\0025cb "}ul.lst-kix_hstwkpty94a-0{list-style-type:none}.lst-kix_x87v5nqljbag-1>li:before{content:"\0025cb "}ul.lst-kix_hstwkpty94a-2{list-style-type:none}ul.lst-kix_hstwkpty94a-1{list-style-type:none}.lst-kix_q5f4ujvd57vs-8>li:before{content:"\0025a0 "}.lst-kix_m10u6c8e7h49-1>li:before{content:"- "}.lst-kix_jh5ozkc156c0-7>li:before{content:"- "}.lst-kix_yimhgjig100r-5>li:before{content:"- "}.lst-kix_tftn79eu5169-3>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-3,decimal) ". "}.lst-kix_v0kjcrdpo5y8-0>li:before{content:"- "}.lst-kix_1gns5yqacl5a-5>li:before{content:"- "}.lst-kix_2pru6vwc63rd-8>li:before{content:"\0025a0 "}.lst-kix_vfdsxoqugx35-4>li:before{content:"- "}.lst-kix_l894ipqttw8-7>li:before{content:"" counter(lst-ctn-kix_l894ipqttw8-7,lower-latin) ". "}.lst-kix_v0kjcrdpo5y8-8>li:before{content:"- "}.lst-kix_2pru6vwc63rd-0>li:before{content:"\0025cf "}.lst-kix_nxwesaehoprg-2>li:before{content:"\0025a0 "}.lst-kix_2guvfj7t4hls-6>li:before{content:"- "}.lst-kix_vvte7xrdhkfu-5>li:before{content:"- "}.lst-kix_wnidkq2q4br-4>li:before{content:"- "}.lst-kix_9uc7rfmtrze6-6>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-6,decimal) ". "}.lst-kix_wiil91xf2zv-6>li:before{content:"- "}.lst-kix_pl9pypjbye3v-0>li:before{content:"\0025cf "}.lst-kix_p5avvlkymcn6-7>li:before{content:"- "}.lst-kix_fvo5wmmg6fyo-1>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-4>li:before{content:"\0025cb "}.lst-kix_50rzeclw4mgy-2>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-2>li:before{content:"\0025a0 "}.lst-kix_3le1d9lrur7b-7>li:before{content:"- "}.lst-kix_kmbpxss6evs9-8>li:before{content:"- "}.lst-kix_javo7o9nyfgh-5>li:before{content:"- "}.lst-kix_bz28urxlslt-2>li:before{content:"- "}.lst-kix_pl9pypjbye3v-8>li:before{content:"\0025a0 "}.lst-kix_yst6zvdstrpa-4>li:before{content:"- "}.lst-kix_8pnkhajaycfj-0>li:before{content:"- "}.lst-kix_bhc7ck6t2jgf-1>li:before{content:"\0025cb "}.lst-kix_61wdk9msboc5-6>li:before{content:"- "}.lst-kix_zgo8zkd6sx7-5>li:before{content:"- "}.lst-kix_vfbyyaij8aah-3>li:before{content:"" counter(lst-ctn-kix_vfbyyaij8aah-3,decimal) ". "}.lst-kix_q5f4ujvd57vs-0>li:before{content:"\0025cf "}.lst-kix_8pnkhajaycfj-8>li:before{content:"- "}.lst-kix_l894ipqttw8-7>li{counter-increment:lst-ctn-kix_l894ipqttw8-7}ul.lst-kix_2guvfj7t4hls-8{list-style-type:none}ul.lst-kix_2guvfj7t4hls-7{list-style-type:none}.lst-kix_9tqshqp1vk04-3>li:before{content:"- "}ul.lst-kix_2guvfj7t4hls-0{list-style-type:none}ul.lst-kix_2guvfj7t4hls-2{list-style-type:none}ul.lst-kix_2guvfj7t4hls-1{list-style-type:none}ul.lst-kix_2guvfj7t4hls-4{list-style-type:none}.lst-kix_x9vsod9g0g5w-5>li:before{content:"\0025a0 "}ul.lst-kix_2guvfj7t4hls-3{list-style-type:none}ul.lst-kix_2guvfj7t4hls-6{list-style-type:none}ul.lst-kix_2guvfj7t4hls-5{list-style-type:none}.lst-kix_grze1ounqob7-2>li:before{content:"- "}.lst-kix_kmbpxss6evs9-0>li:before{content:"- "}.lst-kix_loqeb32vhmp5-1>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-6>li:before{content:"- "}.lst-kix_5cuzwv627bv5-5>li:before{content:"- "}.lst-kix_t2rlxykrkesl-3>li:before{content:"- "}.lst-kix_7mseajt53c5t-6>li:before{content:"\0025cf "}.lst-kix_wfvzecrqglas-1>li:before{content:"- "}.lst-kix_tftn79eu5169-2>li{counter-increment:lst-ctn-kix_tftn79eu5169-2}.lst-kix_e8cg55g9v52c-4>li:before{content:"- "}.lst-kix_e8cg55g9v52c-7>li:before{content:"- "}.lst-kix_e8cg55g9v52c-8>li:before{content:"- "}.lst-kix_e8cg55g9v52c-1>li:before{content:"- "}.lst-kix_dtuwn3k6sqxd-4>li:before{content:"- "}.lst-kix_3dv221pwxcjb-4>li:before{content:"\0025cb "}.lst-kix_3dv221pwxcjb-1>li:before{content:"\0025cb "}.lst-kix_3dv221pwxcjb-5>li:before{content:"\0025a0 "}.lst-kix_dtuwn3k6sqxd-5>li:before{content:"- "}.lst-kix_p0qtw416moo3-5>li:before{content:"\0025a0 "}.lst-kix_dtuwn3k6sqxd-8>li:before{content:"- "}.lst-kix_p0qtw416moo3-6>li:before{content:"\0025cf "}.lst-kix_2uk97xxtwjg-2>li:before{content:"- "}.lst-kix_2uk97xxtwjg-5>li:before{content:"- "}.lst-kix_p0qtw416moo3-2>li:before{content:"\0025a0 "}.lst-kix_p0qtw416moo3-3>li:before{content:"\0025cf "}ul.lst-kix_yst6zvdstrpa-2{list-style-type:none}.lst-kix_p0qtw416moo3-0>li:before{content:"\0025cf "}ul.lst-kix_yst6zvdstrpa-1{list-style-type:none}ul.lst-kix_yst6zvdstrpa-0{list-style-type:none}.lst-kix_dtuwn3k6sqxd-2>li:before{content:"- "}.lst-kix_dtuwn3k6sqxd-1>li:before{content:"- "}ul.lst-kix_yst6zvdstrpa-8{list-style-type:none}ul.lst-kix_yst6zvdstrpa-7{list-style-type:none}ul.lst-kix_yst6zvdstrpa-6{list-style-type:none}ul.lst-kix_yst6zvdstrpa-5{list-style-type:none}ul.lst-kix_yst6zvdstrpa-4{list-style-type:none}ul.lst-kix_yst6zvdstrpa-3{list-style-type:none}.lst-kix_w4mstql6zew4-1>li:before{content:"- "}.lst-kix_8kh4jd12jiew-4>li:before{content:"- "}.lst-kix_8kh4jd12jiew-3>li:before{content:"- "}.lst-kix_w4mstql6zew4-2>li:before{content:"- "}.lst-kix_26k24f7v4fnh-5>li:before{content:"- "}.lst-kix_w4mstql6zew4-8>li:before{content:"- "}.lst-kix_8kh4jd12jiew-1>li:before{content:"- "}.lst-kix_w4mstql6zew4-5>li:before{content:"- "}.lst-kix_mql1z83bfuha-7>li:before{content:"- "}.lst-kix_2uk97xxtwjg-6>li:before{content:"- "}.lst-kix_8kh4jd12jiew-0>li:before{content:"- "}.lst-kix_26k24f7v4fnh-2>li:before{content:"- "}.lst-kix_vol3xqviu5ei-2>li:before{content:"- "}.lst-kix_2uk97xxtwjg-8>li:before{content:"- "}.lst-kix_2zgtxnlclbc3-5>li:before{content:"- "}.lst-kix_mql1z83bfuha-0>li:before{content:"- "}ul.lst-kix_nzzulhihegbc-7{list-style-type:none}ul.lst-kix_nzzulhihegbc-6{list-style-type:none}ul.lst-kix_nzzulhihegbc-5{list-style-type:none}ul.lst-kix_nzzulhihegbc-4{list-style-type:none}.lst-kix_2zgtxnlclbc3-2>li:before{content:"- "}.lst-kix_mql1z83bfuha-3>li:before{content:"- "}ul.lst-kix_nzzulhihegbc-8{list-style-type:none}.lst-kix_mql1z83bfuha-4>li:before{content:"- "}.lst-kix_3dv221pwxcjb-8>li:before{content:"\0025a0 "}ul.lst-kix_nzzulhihegbc-3{list-style-type:none}ul.lst-kix_nzzulhihegbc-2{list-style-type:none}ul.lst-kix_nzzulhihegbc-1{list-style-type:none}.lst-kix_3dv221pwxcjb-7>li:before{content:"\0025cb "}ul.lst-kix_nzzulhihegbc-0{list-style-type:none}.lst-kix_2zgtxnlclbc3-1>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-1>li:before{content:"\0025cb "}.lst-kix_9uc7rfmtrze6-3>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-3}.lst-kix_26k24f7v4fnh-8>li:before{content:"- "}.lst-kix_mql1z83bfuha-1>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-7>li:before{content:"\0025cb "}.lst-kix_p5avvlkymcn6-2>li:before{content:"- "}.lst-kix_ci3dfawmgd7i-0>li:before{content:"\0025cf "}.lst-kix_p5avvlkymcn6-8>li:before{content:"- "}.lst-kix_3le1d9lrur7b-6>li:before{content:"- "}.lst-kix_ci3dfawmgd7i-6>li:before{content:"\0025cf "}.lst-kix_ilrfzq9zqvls-5>li:before{content:"\0025a0 "}.lst-kix_wiil91xf2zv-0>li:before{content:"- "}.lst-kix_p5avvlkymcn6-4>li:before{content:"- "}.lst-kix_3le1d9lrur7b-0>li:before{content:"- "}.lst-kix_vol3xqviu5ei-8>li:before{content:"- "}.lst-kix_61wdk9msboc5-5>li:before{content:"- "}.lst-kix_qcqqascexby4-0>li:before{content:"- "}.lst-kix_8kh4jd12jiew-6>li:before{content:"- "}.lst-kix_grze1ounqob7-7>li:before{content:"- "}.lst-kix_sjhl6hkllosw-4>li:before{content:"- "}.lst-kix_sjhl6hkllosw-2>li:before{content:"- "}.lst-kix_grze1ounqob7-1>li:before{content:"- "}ul.lst-kix_3dv221pwxcjb-8{list-style-type:none}.lst-kix_o80cgtlbucd0-0>li:before{content:"- "}ul.lst-kix_3dv221pwxcjb-7{list-style-type:none}ul.lst-kix_3dv221pwxcjb-6{list-style-type:none}ul.lst-kix_3dv221pwxcjb-5{list-style-type:none}ul.lst-kix_3dv221pwxcjb-4{list-style-type:none}.lst-kix_sjhl6hkllosw-8>li:before{content:"- "}ul.lst-kix_3dv221pwxcjb-3{list-style-type:none}ul.lst-kix_3dv221pwxcjb-2{list-style-type:none}.lst-kix_grze1ounqob7-5>li:before{content:"- "}ul.lst-kix_3dv221pwxcjb-1{list-style-type:none}ul.lst-kix_3dv221pwxcjb-0{list-style-type:none}.lst-kix_t2rlxykrkesl-0>li:before{content:"- "}.lst-kix_qcqqascexby4-6>li:before{content:"- "}.lst-kix_mvgocwwwcjd5-0>li:before{content:"- "}.lst-kix_5cuzwv627bv5-4>li:before{content:"- "}.lst-kix_t2rlxykrkesl-4>li:before{content:"- "}.lst-kix_o80cgtlbucd0-6>li:before{content:"- "}.lst-kix_loqeb32vhmp5-0>li:before{content:"- "}ul.lst-kix_nxwesaehoprg-0{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-7{list-style-type:none}ul.lst-kix_nxwesaehoprg-1{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-8{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-5{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-6{list-style-type:none}.lst-kix_5cuzwv627bv5-8>li:before{content:"- "}ul.lst-kix_rqgiuuoe0nx7-3{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-4{list-style-type:none}.lst-kix_o80cgtlbucd0-4>li:before{content:"- "}ul.lst-kix_rqgiuuoe0nx7-1{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-2{list-style-type:none}ul.lst-kix_rqgiuuoe0nx7-0{list-style-type:none}ul.lst-kix_fcnvapqljo74-8{list-style-type:none}.lst-kix_mvgocwwwcjd5-6>li:before{content:"- "}ul.lst-kix_fcnvapqljo74-3{list-style-type:none}ul.lst-kix_fcnvapqljo74-2{list-style-type:none}ul.lst-kix_fcnvapqljo74-1{list-style-type:none}.lst-kix_loqeb32vhmp5-4>li:before{content:"- "}.lst-kix_loqeb32vhmp5-6>li:before{content:"- "}ul.lst-kix_fcnvapqljo74-0{list-style-type:none}ul.lst-kix_fcnvapqljo74-7{list-style-type:none}ul.lst-kix_fcnvapqljo74-6{list-style-type:none}ul.lst-kix_fcnvapqljo74-5{list-style-type:none}ul.lst-kix_fcnvapqljo74-4{list-style-type:none}.lst-kix_ql108maoyew0-8>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-5>li:before{content:"\0025a0 "}.lst-kix_ql108maoyew0-5>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-1>li:before{content:"\0025cb "}.lst-kix_6u8mzk29n5rn-1>li:before{content:"\0025cb "}.lst-kix_ql108maoyew0-1>li:before{content:"- "}.lst-kix_6u8mzk29n5rn-4>li:before{content:"\0025cb "}.lst-kix_glunaeu7tbyx-0>li:before{content:"\0025cf "}.lst-kix_ql108maoyew0-4>li:before{content:"- "}.lst-kix_6u8mzk29n5rn-5>li:before{content:"\0025a0 "}.lst-kix_a5wkod64biep-3>li:before{content:"- "}.lst-kix_a5wkod64biep-6>li:before{content:"- "}.lst-kix_kwpjd2ybbfk8-2>li:before{content:"\0025a0 "}.lst-kix_tftn79eu5169-4>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-4,lower-latin) ". "}.lst-kix_vfdsxoqugx35-3>li:before{content:"- "}.lst-kix_yimhgjig100r-7>li:before{content:"- "}.lst-kix_tftn79eu5169-1>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-1,lower-latin) ". "}.lst-kix_vfdsxoqugx35-7>li:before{content:"- "}.lst-kix_tftn79eu5169-0>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-0,decimal) ". "}.lst-kix_vfdsxoqugx35-6>li:before{content:"- "}.lst-kix_2pru6vwc63rd-1>li:before{content:"\0025cb "}ul.lst-kix_uv9sd9wefqn3-7{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-8{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-3{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-4{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-5{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-6{list-style-type:none}.lst-kix_fcnvapqljo74-8>li:before{content:"- "}.lst-kix_vfbyyaij8aah-6>li{counter-increment:lst-ctn-kix_vfbyyaij8aah-6}.lst-kix_wiil91xf2zv-4>li:before{content:"- "}ul.lst-kix_uv9sd9wefqn3-0{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-1{list-style-type:none}ul.lst-kix_uv9sd9wefqn3-2{list-style-type:none}.lst-kix_p5avvlkymcn6-5>li:before{content:"- "}.lst-kix_7yks2wb0pddg-1>li:before{content:"- "}.lst-kix_7yks2wb0pddg-5>li:before{content:"- "}.lst-kix_ilrfzq9zqvls-4>li:before{content:"\0025cb "}.lst-kix_ilrfzq9zqvls-8>li:before{content:"\0025a0 "}.lst-kix_p5avvlkymcn6-1>li:before{content:"- "}.lst-kix_burqudjey0lg-0>li:before{content:"- "}.lst-kix_fcnvapqljo74-4>li:before{content:"- "}.lst-kix_wiil91xf2zv-1>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-4>li:before{content:"- "}.lst-kix_8pnkhajaycfj-2>li:before{content:"- "}.lst-kix_xdtvugvb0m4x-0>li:before{content:"- "}.lst-kix_8pnkhajaycfj-6>li:before{content:"- "}.lst-kix_zgo8zkd6sx7-7>li:before{content:"- "}ul.lst-kix_6u8mzk29n5rn-6{list-style-type:none}.lst-kix_sjhl6hkllosw-1>li:before{content:"- "}ul.lst-kix_6u8mzk29n5rn-7{list-style-type:none}ul.lst-kix_6u8mzk29n5rn-8{list-style-type:none}ul.lst-kix_9tqshqp1vk04-0{list-style-type:none}.lst-kix_8kh4jd12jiew-7>li:before{content:"- "}ul.lst-kix_6u8mzk29n5rn-2{list-style-type:none}ul.lst-kix_6u8mzk29n5rn-3{list-style-type:none}ul.lst-kix_6u8mzk29n5rn-4{list-style-type:none}ul.lst-kix_6u8mzk29n5rn-5{list-style-type:none}.lst-kix_9uc7rfmtrze6-4>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-4}.lst-kix_ym9o0nem12uh-0>li:before{content:"- "}.lst-kix_grze1ounqob7-8>li:before{content:"- "}.lst-kix_61wdk9msboc5-8>li:before{content:"- "}.lst-kix_t2rlxykrkesl-1>li:before{content:"- "}.lst-kix_sjhl6hkllosw-5>li:before{content:"- "}ul.lst-kix_6u8mzk29n5rn-0{list-style-type:none}ul.lst-kix_6u8mzk29n5rn-1{list-style-type:none}.lst-kix_9tqshqp1vk04-1>li:before{content:"- "}.lst-kix_grze1ounqob7-4>li:before{content:"- "}ul.lst-kix_w4mstql6zew4-6{list-style-type:none}.lst-kix_o80cgtlbucd0-7>li:before{content:"- "}ul.lst-kix_w4mstql6zew4-5{list-style-type:none}ul.lst-kix_w4mstql6zew4-4{list-style-type:none}ul.lst-kix_w4mstql6zew4-3{list-style-type:none}ul.lst-kix_w4mstql6zew4-2{list-style-type:none}.lst-kix_loqeb32vhmp5-3>li:before{content:"- "}ul.lst-kix_w4mstql6zew4-1{list-style-type:none}ul.lst-kix_w4mstql6zew4-0{list-style-type:none}.lst-kix_6u8mzk29n5rn-8>li:before{content:"\0025a0 "}.lst-kix_o80cgtlbucd0-3>li:before{content:"- "}ul.lst-kix_vfdsxoqugx35-8{list-style-type:none}ul.lst-kix_vfdsxoqugx35-5{list-style-type:none}ul.lst-kix_vfdsxoqugx35-4{list-style-type:none}ul.lst-kix_w4mstql6zew4-8{list-style-type:none}.lst-kix_fmqv0hhq489j-8>li:before{content:"- "}ul.lst-kix_vfdsxoqugx35-7{list-style-type:none}ul.lst-kix_w4mstql6zew4-7{list-style-type:none}ul.lst-kix_vfdsxoqugx35-6{list-style-type:none}ul.lst-kix_vfdsxoqugx35-1{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-1{list-style-type:none}ul.lst-kix_vfdsxoqugx35-0{list-style-type:none}.lst-kix_7mseajt53c5t-0>li:before{content:"\0025cf "}ul.lst-kix_2zgtxnlclbc3-2{list-style-type:none}ul.lst-kix_vfdsxoqugx35-3{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-3{list-style-type:none}ul.lst-kix_vfdsxoqugx35-2{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-4{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-5{list-style-type:none}.lst-kix_loqeb32vhmp5-7>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-3>li:before{content:"\0025cf "}ul.lst-kix_2zgtxnlclbc3-6{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-7{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-8{list-style-type:none}ul.lst-kix_9tqshqp1vk04-6{list-style-type:none}.lst-kix_nzzulhihegbc-1>li:before{content:"- "}.lst-kix_7mseajt53c5t-4>li:before{content:"\0025cb "}ul.lst-kix_9tqshqp1vk04-5{list-style-type:none}.lst-kix_5cuzwv627bv5-7>li:before{content:"- "}ul.lst-kix_9tqshqp1vk04-8{list-style-type:none}ul.lst-kix_9tqshqp1vk04-7{list-style-type:none}ul.lst-kix_9tqshqp1vk04-2{list-style-type:none}ul.lst-kix_9tqshqp1vk04-1{list-style-type:none}.lst-kix_fmqv0hhq489j-4>li:before{content:"- "}ul.lst-kix_9tqshqp1vk04-4{list-style-type:none}ul.lst-kix_9tqshqp1vk04-3{list-style-type:none}ul.lst-kix_2zgtxnlclbc3-0{list-style-type:none}.lst-kix_s75uo3xiq39v-2>li:before{content:"- "}.lst-kix_pcc45dcmut3q-0>li:before{content:"- "}.lst-kix_kibflrpfavrf-4>li:before{content:"- "}.lst-kix_oshcc4bufuuj-7>li:before{content:"- "}.lst-kix_pcc45dcmut3q-6>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-8>li:before{content:"- "}.lst-kix_q9arux8ft5wh-6>li:before{content:"- "}.lst-kix_lt953f1u6b8p-8>li:before{content:"- "}.lst-kix_oshcc4bufuuj-4>li:before{content:"- "}.lst-kix_s75uo3xiq39v-5>li:before{content:"- "}.lst-kix_bwp5usd4tvni-6>li:before{content:"- "}.lst-kix_pcc45dcmut3q-3>li:before{content:"- "}.lst-kix_oshcc4bufuuj-1>li:before{content:"- "}.lst-kix_q9arux8ft5wh-3>li:before{content:"- "}.lst-kix_q2ajzi2aarbx-3>li:before{content:"- "}.lst-kix_bwp5usd4tvni-3>li:before{content:"- "}.lst-kix_9mcin3jkhrjk-6>li:before{content:"- "}.lst-kix_bwp5usd4tvni-0>li:before{content:"- "}.lst-kix_lt953f1u6b8p-5>li:before{content:"- "}.lst-kix_q2ajzi2aarbx-6>li:before{content:"- "}.lst-kix_bicgd61rc0xi-6>li:before{content:"\0025cf "}.lst-kix_s75uo3xiq39v-8>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-5>li:before{content:"- "}.lst-kix_ym9o0nem12uh-7>li:before{content:"- "}.lst-kix_u05q3fjgh3s5-2>li:before{content:"- "}.lst-kix_bicgd61rc0xi-3>li:before{content:"\0025cf "}.lst-kix_lwcjl9ef5q9v-1>li:before{content:"- "}.lst-kix_wygi73u4y8tw-2>li:before{content:"- "}.lst-kix_jflz1hbg2var-1>li:before{content:"- "}.lst-kix_paj4ag26vnuh-1>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-7>li:before{content:"- "}ul.lst-kix_q2ajzi2aarbx-0{list-style-type:none}ul.lst-kix_q2ajzi2aarbx-1{list-style-type:none}.lst-kix_wygi73u4y8tw-5>li:before{content:"- "}ul.lst-kix_q2ajzi2aarbx-4{list-style-type:none}ul.lst-kix_q2ajzi2aarbx-5{list-style-type:none}ul.lst-kix_q2ajzi2aarbx-2{list-style-type:none}.lst-kix_paj4ag26vnuh-8>li:before{content:"- "}ul.lst-kix_q2ajzi2aarbx-3{list-style-type:none}ul.lst-kix_q2ajzi2aarbx-8{list-style-type:none}.lst-kix_qtbrqaqp4pt2-0>li:before{content:"\0025cf "}ul.lst-kix_q2ajzi2aarbx-6{list-style-type:none}ul.lst-kix_q2ajzi2aarbx-7{list-style-type:none}.lst-kix_jflz1hbg2var-4>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-1>li:before{content:"- "}.lst-kix_lwcjl9ef5q9v-4>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-7>li:before{content:"- "}.lst-kix_uv9sd9wefqn3-5>li:before{content:"- "}.lst-kix_rqgiuuoe0nx7-4>li:before{content:"- "}.lst-kix_qtbrqaqp4pt2-3>li:before{content:"\0025cf "}.lst-kix_uv9sd9wefqn3-8>li:before{content:"- "}.lst-kix_javo7o9nyfgh-3>li:before{content:"- "}.lst-kix_wygi73u4y8tw-8>li:before{content:"- "}.lst-kix_a2xq9qx5glak-6>li:before{content:"- "}.lst-kix_qtbrqaqp4pt2-6>li:before{content:"\0025cf "}.lst-kix_gja9a1vqtcl8-7>li:before{content:"- "}.lst-kix_s9gy267mt5i6-8>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-5>li:before{content:"\0025a0 "}.lst-kix_l894ipqttw8-5>li{counter-increment:lst-ctn-kix_l894ipqttw8-5}.lst-kix_9uc7rfmtrze6-1>li{counter-increment:lst-ctn-kix_9uc7rfmtrze6-1}.lst-kix_fmqv0hhq489j-1>li:before{content:"- "}ul.lst-kix_ilrfzq9zqvls-8{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-7{list-style-type:none}.lst-kix_fcnvapqljo74-1>li:before{content:"- "}ul.lst-kix_ilrfzq9zqvls-6{list-style-type:none}.lst-kix_myze4pt7323s-4>li:before{content:"\0025cb "}.lst-kix_7yks2wb0pddg-8>li:before{content:"- "}.lst-kix_javo7o9nyfgh-6>li:before{content:"- "}.lst-kix_kmbpxss6evs9-7>li:before{content:"- "}.lst-kix_bz28urxlslt-3>li:before{content:"- "}.lst-kix_s9gy267mt5i6-2>li:before{content:"- "}.lst-kix_gja9a1vqtcl8-1>li:before{content:"- "}ul.lst-kix_wiil91xf2zv-1{list-style-type:none}ul.lst-kix_wiil91xf2zv-0{list-style-type:none}.lst-kix_a1pym3titlrs-5>li:before{content:"\0025a0 "}ul.lst-kix_wiil91xf2zv-3{list-style-type:none}.lst-kix_c7f83m9fm0z-4>li:before{content:"\0025cb "}ul.lst-kix_wiil91xf2zv-2{list-style-type:none}ul.lst-kix_wiil91xf2zv-5{list-style-type:none}ul.lst-kix_wiil91xf2zv-4{list-style-type:none}ul.lst-kix_9hxy9el3gvo4-0{list-style-type:none}.lst-kix_cpvyu8stzxxy-4>li:before{content:"\0025cb "}ul.lst-kix_9hxy9el3gvo4-1{list-style-type:none}.lst-kix_zgo8zkd6sx7-4>li:before{content:"- "}.lst-kix_jgl333sta81j-2>li:before{content:"\0025a0 "}ul.lst-kix_9hxy9el3gvo4-8{list-style-type:none}ul.lst-kix_9hxy9el3gvo4-6{list-style-type:none}.lst-kix_burqudjey0lg-3>li:before{content:"- "}ul.lst-kix_9hxy9el3gvo4-7{list-style-type:none}ul.lst-kix_9hxy9el3gvo4-4{list-style-type:none}ul.lst-kix_9hxy9el3gvo4-5{list-style-type:none}ul.lst-kix_9hxy9el3gvo4-2{list-style-type:none}.lst-kix_q5f4ujvd57vs-1>li:before{content:"\0025cb "}ul.lst-kix_9hxy9el3gvo4-3{list-style-type:none}.lst-kix_9tqshqp1vk04-4>li:before{content:"- "}ul.lst-kix_wiil91xf2zv-7{list-style-type:none}ul.lst-kix_wiil91xf2zv-6{list-style-type:none}ul.lst-kix_wiil91xf2zv-8{list-style-type:none}.lst-kix_x9vsod9g0g5w-6>li:before{content:"\0025cf "}.lst-kix_n193x2857tme-5>li:before{content:"\0025a0 "}.lst-kix_xdtvugvb0m4x-7>li:before{content:"- "}.lst-kix_q2ajzi2aarbx-0>li:before{content:"- "}.lst-kix_wfvzecrqglas-8>li:before{content:"- "}.lst-kix_7mseajt53c5t-7>li:before{content:"\0025cb "}.lst-kix_kmbpxss6evs9-1>li:before{content:"- "}.lst-kix_nzzulhihegbc-4>li:before{content:"- "}.lst-kix_lok0bp4zwj7j-6>li:before{content:"\0025cf "}.lst-kix_hstwkpty94a-0>li:before{content:"- "}.lst-kix_wfvzecrqglas-2>li:before{content:"- "}.lst-kix_1akhgirqnq32-2>li:before{content:"- "}.lst-kix_kibflrpfavrf-7>li:before{content:"- "}ul.lst-kix_ql108maoyew0-8{list-style-type:none}ul.lst-kix_ql108maoyew0-7{list-style-type:none}ul.lst-kix_ql108maoyew0-0{list-style-type:none}.lst-kix_9hxy9el3gvo4-6>li:before{content:"- "}ul.lst-kix_ql108maoyew0-2{list-style-type:none}ul.lst-kix_ql108maoyew0-1{list-style-type:none}ul.lst-kix_ql108maoyew0-4{list-style-type:none}ul.lst-kix_ql108maoyew0-3{list-style-type:none}ul.lst-kix_ql108maoyew0-6{list-style-type:none}ul.lst-kix_ql108maoyew0-5{list-style-type:none}.lst-kix_kwpjd2ybbfk8-8>li:before{content:"\0025a0 "}ul.lst-kix_nxwesaehoprg-4{list-style-type:none}ul.lst-kix_nxwesaehoprg-5{list-style-type:none}ul.lst-kix_nxwesaehoprg-2{list-style-type:none}ul.lst-kix_nxwesaehoprg-3{list-style-type:none}ul.lst-kix_nxwesaehoprg-8{list-style-type:none}ul.lst-kix_nxwesaehoprg-6{list-style-type:none}ul.lst-kix_nxwesaehoprg-7{list-style-type:none}.lst-kix_glunaeu7tbyx-3>li:before{content:"\0025cf "}.lst-kix_4tbw4vbvib8m-7>li:before{content:"\0025cb "}.lst-kix_glunaeu7tbyx-6>li:before{content:"\0025cf "}.lst-kix_x87v5nqljbag-0>li:before{content:"\0025cf "}.lst-kix_9hxy9el3gvo4-3>li:before{content:"- "}.lst-kix_4tbw4vbvib8m-4>li:before{content:"\0025cb "}ul.lst-kix_grze1ounqob7-8{list-style-type:none}ul.lst-kix_7mseajt53c5t-8{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-1{list-style-type:none}ul.lst-kix_grze1ounqob7-7{list-style-type:none}.lst-kix_9uc7rfmtrze6-2>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-2,lower-roman) ". "}ul.lst-kix_vvte7xrdhkfu-2{list-style-type:none}ul.lst-kix_grze1ounqob7-6{list-style-type:none}.lst-kix_m10u6c8e7h49-0>li:before{content:"- "}ul.lst-kix_grze1ounqob7-5{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-0{list-style-type:none}ul.lst-kix_grze1ounqob7-4{list-style-type:none}ul.lst-kix_grze1ounqob7-3{list-style-type:none}ul.lst-kix_grze1ounqob7-2{list-style-type:none}ul.lst-kix_grze1ounqob7-1{list-style-type:none}.lst-kix_q5f4ujvd57vs-7>li:before{content:"\0025cb "}ul.lst-kix_7mseajt53c5t-0{list-style-type:none}.lst-kix_jgl333sta81j-8>li:before{content:"\0025a0 "}ul.lst-kix_7mseajt53c5t-1{list-style-type:none}.lst-kix_yimhgjig100r-4>li:before{content:"- "}ul.lst-kix_7mseajt53c5t-2{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-7{list-style-type:none}ul.lst-kix_7mseajt53c5t-3{list-style-type:none}.lst-kix_q5f4ujvd57vs-4>li:before{content:"\0025cb "}ul.lst-kix_vvte7xrdhkfu-8{list-style-type:none}ul.lst-kix_7mseajt53c5t-4{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-5{list-style-type:none}ul.lst-kix_7mseajt53c5t-5{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-6{list-style-type:none}ul.lst-kix_7mseajt53c5t-6{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-3{list-style-type:none}ul.lst-kix_7mseajt53c5t-7{list-style-type:none}ul.lst-kix_vvte7xrdhkfu-4{list-style-type:none}.lst-kix_v0kjcrdpo5y8-1>li:before{content:"- "}.lst-kix_jh5ozkc156c0-3>li:before{content:"- "}.lst-kix_v0kjcrdpo5y8-4>li:before{content:"- "}.lst-kix_2pru6vwc63rd-4>li:before{content:"\0025cb "}.lst-kix_2guvfj7t4hls-2>li:before{content:"- "}.lst-kix_jh5ozkc156c0-0>li:before{content:"- "}.lst-kix_2pru6vwc63rd-7>li:before{content:"\0025cb "}ol.lst-kix_9uc7rfmtrze6-0{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-2{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-1{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-5{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-4{list-style-type:none}.lst-kix_2guvfj7t4hls-5>li:before{content:"- "}ul.lst-kix_ilrfzq9zqvls-3{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-2{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-1{list-style-type:none}ul.lst-kix_ilrfzq9zqvls-0{list-style-type:none}.lst-kix_vfdsxoqugx35-0>li:before{content:"- "}ul.lst-kix_grze1ounqob7-0{list-style-type:none}.lst-kix_9uc7rfmtrze6-5>li:before{content:"" counter(lst-ctn-kix_9uc7rfmtrze6-5,lower-roman) ". "}.lst-kix_tftn79eu5169-7>li:before{content:"" counter(lst-ctn-kix_tftn79eu5169-7,lower-latin) ". "}.lst-kix_wnidkq2q4br-3>li:before{content:"- "}.lst-kix_wiil91xf2zv-7>li:before{content:"- "}.lst-kix_fvo5wmmg6fyo-5>li:before{content:"- "}.lst-kix_l9kc2sz2zal1-8>li:before{content:"\0025a0 "}.lst-kix_tftn79eu5169-8>li{counter-increment:lst-ctn-kix_tftn79eu5169-8}.lst-kix_s9gy267mt5i6-5>li:before{content:"- "}.lst-kix_gja9a1vqtcl8-4>li:before{content:"- "}.lst-kix_burqudjey0lg-6>li:before{content:"- "}.lst-kix_kkqzfjachi11-1>li:before{content:"- "}.lst-kix_myze4pt7323s-1>li:before{content:"\0025cb "}.lst-kix_wnidkq2q4br-0>li:before{content:"- "}.lst-kix_bz28urxlslt-6>li:before{content:"- "}.lst-kix_7fjemue0ct45-6>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-4{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-3{list-style-type:none}.lst-kix_7afqendiuk8d-2>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-6{list-style-type:none}.lst-kix_yst6zvdstrpa-8>li:before{content:"- "}ol.lst-kix_9uc7rfmtrze6-5{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-8{list-style-type:none}ol.lst-kix_9uc7rfmtrze6-7{list-style-type:none}.lst-kix_kmbpxss6evs9-4>li:before{content:"- "}.lst-kix_ci3dfawmgd7i-3>li:before{content:"\0025cf "}.lst-kix_qh78q3eb8wns-2>li:before{content:"- "}.lst-kix_3le1d9lrur7b-3>li:before{content:"- "}ul.lst-kix_50rzeclw4mgy-0{list-style-type:none}.lst-kix_vol3xqviu5ei-5>li:before{content:"- "}ul.lst-kix_zamnyctd2de5-4{list-style-type:none}ul.lst-kix_50rzeclw4mgy-1{list-style-type:none}.lst-kix_bhc7ck6t2jgf-5>li:before{content:"\0025a0 "}ul.lst-kix_zamnyctd2de5-3{list-style-type:none}ul.lst-kix_zamnyctd2de5-2{list-style-type:none}ul.lst-kix_zamnyctd2de5-1{list-style-type:none}.lst-kix_61wdk9msboc5-2>li:before{content:"- "}ul.lst-kix_zamnyctd2de5-0{list-style-type:none}ul.lst-kix_50rzeclw4mgy-8{list-style-type:none}.lst-kix_n193x2857tme-8>li:before{content:"\0025a0 "}.lst-kix_zgo8zkd6sx7-1>li:before{content:"- "}.lst-kix_cpvyu8stzxxy-1>li:before{content:"\0025cb "}ul.lst-kix_50rzeclw4mgy-6{list-style-type:none}ul.lst-kix_50rzeclw4mgy-7{list-style-type:none}.lst-kix_2zgtxnlclbc3-8>li:before{content:"- "}ul.lst-kix_50rzeclw4mgy-4{list-style-type:none}ul.lst-kix_zamnyctd2de5-8{list-style-type:none}ul.lst-kix_50rzeclw4mgy-5{list-style-type:none}ul.lst-kix_zamnyctd2de5-7{list-style-type:none}.lst-kix_qcqqascexby4-3>li:before{content:"- "}ul.lst-kix_50rzeclw4mgy-2{list-style-type:none}ul.lst-kix_zamnyctd2de5-6{list-style-type:none}ul.lst-kix_50rzeclw4mgy-3{list-style-type:none}ul.lst-kix_zamnyctd2de5-5{list-style-type:none}.lst-kix_jgl333sta81j-5>li:before{content:"\0025a0 "}.lst-kix_a1pym3titlrs-8>li:before{content:"\0025a0 "}.lst-kix_2hcqi35168fy-5>li:before{content:"- "}.lst-kix_c7f83m9fm0z-1>li:before{content:"\0025cb "}ul.lst-kix_prhpzba1wavz-0{list-style-type:none}.lst-kix_yimhgjig100r-1>li:before{content:"- "}.lst-kix_smm1ba7pvg7z-4>li:before{content:"- "}.lst-kix_mvgocwwwcjd5-3>li:before{content:"- "}.lst-kix_9tqshqp1vk04-7>li:before{content:"- "}.lst-kix_srkrc1u8ht8r-7>li:before{content:"- "}ul.lst-kix_prhpzba1wavz-8{list-style-type:none}.lst-kix_l894ipqttw8-2>li{counter-increment:lst-ctn-kix_l894ipqttw8-2}ul.lst-kix_prhpzba1wavz-7{list-style-type:none}ul.lst-kix_prhpzba1wavz-6{list-style-type:none}ul.lst-kix_prhpzba1wavz-5{list-style-type:none}.lst-kix_nzzulhihegbc-7>li:before{content:"- "}ul.lst-kix_prhpzba1wavz-4{list-style-type:none}ul.lst-kix_prhpzba1wavz-3{list-style-type:none}ul.lst-kix_prhpzba1wavz-2{list-style-type:none}ul.lst-kix_prhpzba1wavz-1{list-style-type:none}.lst-kix_t2rlxykrkesl-7>li:before{content:"- "}ul.lst-kix_vn0q36mkrlld-0{list-style-type:none}.lst-kix_5cuzwv627bv5-1>li:before{content:"- "}ul.lst-kix_vn0q36mkrlld-3{list-style-type:none}ul.lst-kix_vn0q36mkrlld-4{list-style-type:none}ul.lst-kix_vn0q36mkrlld-1{list-style-type:none}ul.lst-kix_vn0q36mkrlld-2{list-style-type:none}ul.lst-kix_vn0q36mkrlld-7{list-style-type:none}.lst-kix_wfvzecrqglas-5>li:before{content:"- "}ul.lst-kix_vn0q36mkrlld-8{list-style-type:none}ul.lst-kix_vn0q36mkrlld-5{list-style-type:none}ul.lst-kix_vn0q36mkrlld-6{list-style-type:none}.lst-kix_zamnyctd2de5-2>li:before{content:"- "}ol{margin:0;padding:0}table td,table th{padding:0}.c11{padding-top:10pt;padding-bottom:0pt;orphans:2;widows:2}.c1{margin-left:36pt;orphans:2;widows:2;padding-left:0pt}.c39{padding-top:0pt;padding-bottom:0pt;line-height:1.15;text-align:left}.c0{background-color:#ffffff;font-family:"Consolas";color:#000088;font-weight:700}.c6{orphans:2;widows:2;height:11pt}.c31{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}.c4{background-color:#ffffff;font-family:"Calibri";font-style:italic}.c8{padding:0;margin:0}.c32{width:33%;height:1px}.c7{background-color:#ffffff;font-family:"Calibri"}.c17{color:inherit;text-decoration:inherit}.c20{color:#1155cc;text-decoration:underline}.c37{font-size:13pt;font-family:"Trebuchet MS"}.c19{orphans:2;widows:2}.c3{background-color:#ffffff;font-family:"Consolas"}.c10{font-family:"Consolas";color:#000088}.c34{margin-left:108pt;padding-left:0pt}.c5{color:#9900ff;font-family:"Calibri"}.c25{margin-left:72pt;padding-left:0pt}.c12{font-family:"Consolas"}.c38{font-size:11pt}.c24{height:20pt}.c22{font-style:italic}.c35{height:16pt}.c41{height:11pt}.c14{background-color:#d9d9d9}.c23{color:#000088}.c16{color:#9900ff}.c29{text-decoration:underline}.c40{text-indent:36pt}.c33{margin-left:54pt}.c28{background-color:#ffff00}.c13{page-break-after:avoid}.c15{color:#666600}.c30{color:#008800}.c42{line-height:1.0}.c36{padding-top:10pt}.c26{margin-left:18pt}.c27{font-size:12pt}.c9{font-weight:700}.c18{font-family:"Calibri"}.c2{font-size:10pt}.c21{margin-left:36pt}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:"Arial"}p{margin:0;color:#000000;font-size:11pt;font-family:"Arial"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style></head><body class="c31" data-gr-c-s-loaded="true"><div><p class="c6"><span></span></p></div><p class="c11 c13 title" id="h.2zj19x93tfbg"><span>Secure data server</span></p><p class="c19"><span class="c7 c27">The goal of this project is to implement a security-conscious data server. </span></p><p class="c19"><span class="c7 c27">(Think: </span><span class="c7 c20 c27"><a class="c17" href="https://www.google.com/url?q=http://redis.io/&sa=D&ust=1475459225985000&usg=AFQjCNFgZ9TO3QGiINJ7vkBd-QIjXsqq_Q">Redis</a></span><span class="c7 c27"> with security.)</span></p><p class="c19"><span class="c7 c20 c27 c9"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.uclkuxawfuqk">Updates</a></span><span class="c7 c20 c27"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.uclkuxawfuqk"> to this spec are summarized below.</a></span></p><h2 class="c19 c13" id="h.xd19h0d5dn39"><span>Table of Contents</span></h2><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.a27vo69tfhqm">Overview</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.l5p09q7tybum">Running and returning from the server</a></span></p><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.yl90lhtf352z">Command language</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.21lxa31hxyc7">Overview</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.p5blxbo8gc5j">Grammar</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.oku65831hqaj">Whitespace</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.gb3fipedkh2u">Comments</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.m9zx5nh74wb2">Reserved keywords</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5c2bh7ekzo5n">Command Language Detailed Description</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.npu16vriso3b">Programs (<prog>)</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.pawfvhuor951">Commands (<cmd>)</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.4k0eyckp0we0">Expressions and variables (<expr>, <value>, and <fieldvals>)</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.iugyafcagh1a">Primitive commands (<prim_cmd>)</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">Enforcing Command Permissions</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5x77kjymrwpw">Details on Formats and Error Conditions</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.fhz7d9j7fpnt">Command line arguments</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.13wtk5be69yn">Server startup and shutdown</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.vjy3qzr2znwf">Input</a></span></p><p class="c19 c33"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v62nh9n8zhh8">Output</a></span></p><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.y80p8aqa23pq">Optional features</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.ns8nor2eiuu">String functions</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.blwp5my80cf0">Filtering lists</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.phwwuj18bpr">Recursive expressions</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.ka1k0qw7f6nm">Timeout handling</a></span></p><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v6wip58x5cx1">Oracle</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.cbs3gupb5by4">Timeouts</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.wxelcof27gou">Reporting bugs in the oracle</a></span></p><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.lpmruw94a78m">Implementation Goals</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.544alwakpndn">Performance goal</a></span></p><p class="c19 c21"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.rl1z1vho24y0">Security goals and threat model</a></span></p><p class="c19 c26"><span class="c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.96msbg7n2zq0">Build-it Round Submission</a></span></p><h1 class="c19 c13" id="h.uclkuxawfuqk"><span>Updates</span></h1><ul class="c8 lst-kix_q5f4ujvd57vs-0 start"><li class="c1"><span class="c18">9/23/16 - Added instructions on how to use the </span><span class="c3">%PORT%</span><span class="c7 c2"> </span><span class="c18">variable in oracle queries.</span></li><li class="c1"><span class="c18">9/23/16 - We clarified the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.p5blxbo8gc5j">grammar</a></span><span class="c18"> for</span><span> </span><span class="c10 c9">set delegation</span><span> </span><span class="c18">and</span><span> </span><span class="c10 c9">delete delegation</span><span>.</span></li><li class="c1"><span class="c18">9/23/16 - </span><span class="c9 c18">Added </span><span class="c23 c9 c18">***</span><span class="c18"> </span><span class="c9 c18">to terminate programs</span><span class="c18"> </span></li></ul><ul class="c8 lst-kix_q5f4ujvd57vs-1 start"><li class="c19 c25"><span class="c18">See </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.p5blxbo8gc5j">grammar</a></span><span class="c18"> and examples (e.g., in the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.21lxa31hxyc7">overview</a></span><span class="c18">) for where this is used</span></li><li class="c19 c25"><span class="c18">See the discussion about how </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.vjy3qzr2znwf">input</a></span><span class="c18"> should be handled</span></li><li class="c19 c25"><span class="c18">See the discussion of how the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v6wip58x5cx1">oracle</a></span><span class="c18"> now behaves</span></li></ul><ul class="c8 lst-kix_q5f4ujvd57vs-0"><li class="c1"><span class="c18">9/24/16 - Clarified (when discussing </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5c2bh7ekzo5n">command</a></span><span class="c18"> semantics) that if you have a security violation and a parse error in your program you should return </span><span class="c12">FAILED</span><span class="c18">, not </span><span class="c12">DENIED</span></li><li class="c1"><span class="c18">9/25/16 - Clarified that (as is consistent with all tests and examples herein) record fields may only contain strings, not other records or lists; see discussion of </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.4k0eyckp0we0">expressions</a></span><span class="c18">.</span></li><li class="c1"><span class="c18">9/25/16 - Clarified wording about </span><span class="c10 c9">set delegation</span><span class="c18"> and </span><span class="c10 c9">delete delegation</span><span class="c18"> when discussing </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">command permissions</a></span><span class="c18"> to be consistent with </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.pawfvhuor951">command descriptions</a></span><span class="c18"> (which were correct).</span></li><li class="c1"><span class="c18">9/25/16 - Clarified that status code </span><span class="c12">TIMEOUT</span><span class="c18"> (described </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.ka1k0qw7f6nm">here</a></span><span class="c18">) is an optional feature for which you can get points.</span></li><li class="c1"><span class="c18">9/26/16 - Fixed typo in </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.blwp5my80cf0">description of </a></span><span class="c20 c12 c9"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.blwp5my80cf0">notequal</a></span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.blwp5my80cf0"> optional function</a></span></li><li class="c1"><span class="c18">9/28/16 - Clarified (when discussing </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5c2bh7ekzo5n">command</a></span><span class="c18"> semantics) that </span><span class="c10 c9">set delegation</span><span class="c18"> and </span><span class="c10 c9">delete delegation</span><span class="c18"> should fail for variables x that do not exist, or that are local variables.</span></li><li class="c1"><span class="c18">9/30/16 - </span><span class="c9 c18">Added more precise discussion about when expressions and commands should return status code </span><span class="c12 c9">FAILED</span><span class="c9 c18"> as opposed to </span><span class="c12 c9">DENIED</span><span class="c18">. See the introductory part of command semantics for the basic principle (which states that you should follow the order of checks listed with each command). Details</span></li></ul><ul class="c8 lst-kix_q5f4ujvd57vs-1 start"><li class="c19 c25"><span class="c18">This change resulted in updates to the description of the behavior herein for record </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.4k0eyckp0we0">expressions</a></span><span class="c18"> </span><span class="c22 c18">x.y</span><span class="c18"> and </span><span class="c12 c9">{</span><span class="c18"> </span><span class="c22 c18">x1</span><span class="c18"> = <value>, …, </span><span class="c22 c18">xn</span><span class="c18"> = <value> </span><span class="c12 c9">}</span><span class="c18">; primitive commands </span><span class="c10 c9">append</span><span class="c18">, </span><span class="c10 c9">local</span><span class="c18">, and </span><span class="c10 c9">foreach</span><span class="c18">; all </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.y80p8aqa23pq">optional features</a></span><span class="c18">. </span></li><li class="c19 c25"><span class="c18">This change also resulted in a few changes to the oracle, in particular for primitive commands </span><span class="c10 c9">create principal</span><span class="c18">, </span><span class="c10 c9">change password</span><span class="c18">, </span><span class="c10 c9">foreach</span><span class="c18"> and </span><span class="c10 c9">filtereach</span><span class="c18">, </span><span class="c10 c9">append</span><span class="c18">, </span><span class="c10 c9">set</span><span class="c12 c9"> </span><span class="c10 c9">delegation</span><span class="c9 c18"> </span><span class="c18">and </span><span class="c10 c9">delete</span><span class="c12 c9"> </span><span class="c10 c9">delegation</span><span class="c18"> on </span><span class="c10 c9">all</span><span class="c18">, and </span><span class="c10 c9">default</span><span class="c12 c9"> </span><span class="c10 c9">delegator</span><span class="c18">. In all cases, just the order of failure and security checks was changed. </span></li></ul><ul class="c8 lst-kix_q5f4ujvd57vs-0"><li class="c1"><span class="c18">9/30/16 - slight rewording of </span><span class="c10 c9">set</span><span class="c18">/</span><span class="c10 c9">delete</span><span class="c18"> </span><span class="c10 c9">delegation</span><span class="c18"> description in </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">command permissions</a></span><span class="c18"> (to match </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.iugyafcagh1a">command descriptions</a></span><span class="c18">). Also </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.ns8nor2eiuu">clarified</a></span><span class="c18"> what should happen when functions receive the wrong number of arguments (fail immediately). </span></li></ul><p class="c6"><span></span></p><hr style="page-break-before:always;display:none;"><h1 class="c19 c24 c13" id="h.4uvjsd5sj7hl"><span></span></h1><h1 class="c19 c13" id="h.a27vo69tfhqm"><span>Overview</span></h1><p class="c19"><span class="c7">Clients can connect to the server via TCP and send a textual program, which is a list of commands whose grammar is given below. The server executes the program, sends textual output back to the client, and disconnects. Executing a program may cause data to be stored on the server, which can be accessed later by other programs. The server accepts </span><span class="c7">one connection</span><span class="c7"> at a time (so programs never execute concurrently).</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Let’s jump right in with an example of the kinds of programs your data server will execute:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">create</span><span class="c3 c23 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> alice </span><span class="c3 c30 c2">"alices_password"</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> msg </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"Hi Alice. Good luck in Build-it, Break-it, Fix-it!"</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> msg admin </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">-></span><span class="c3 c2"> alice</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> </span><span class="c3 c30 c2">"success"</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Running this program successfully will result in the following output being sent back to the client:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"CREATE_PRINCIPAL"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET_DELEGATION"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":"success"}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">There are a few concepts that this program captures: </span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Principals: </span><span class="c7">Each program is run as a different user, referred to as a </span><span class="c4">principal</span><span class="c7">. Whichever principal runs the program determines what data the program can access. The program in this example is being run by a principal called </span><span class="c3">admin</span><span class="c7">, which is the superuser of the system; we will return to </span><span class="c3">admin</span><span class="c7">’s abilities later. </span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Creating principals:</span><span class="c7"> </span><span class="c7">The first thing that </span><span class="c3">admin</span><span class="c7"> does here is create a new principal named </span><span class="c3">alice</span><span class="c7"> and sets </span><span class="c3">alice</span><span class="c7">’s password, using the </span><span class="c0 c2">create principal</span><span class="c7 c2">...</span><span class="c7"> command.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Creating data</span><span class="c7">: Principals can create and manipulate data. With the </span><span class="c0 c2">set</span><span class="c3 c23 c2"> </span><span class="c0 c2">msg</span><span class="c7">... command, </span><span class="c3">admin</span><span class="c7"> creates some data—a string message for </span><span class="c3">alice</span><span class="c7">—and stores it as a variable named </span><span class="c3">msg</span><span class="c7">.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Delegating access to data</span><span class="c7">: Principals can choose how to share data with others. </span><span class="c3">admin</span><span class="c7"> shares with </span><span class="c3">alice</span><span class="c7"> their ability to read the variable </span><span class="c3">msg</span><span class="c7"> with the </span><span class="c0 c2">set delegation</span><span class="c7">… command.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Returning</span><span class="c7">: Programs can </span><span class="c0 c2">return</span><span class="c7"> computed values back to the client; in the example, the value of the </span><span class="c3">msg</span><span class="c7"> (</span><span class="c3 c30 c2">"success"</span><span class="c7">) is returned.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Output per command, in JSON format</span><span class="c7">: Each successfully executed command results in a </span><span class="c4">status code</span><span class="c7"> being sent back to the client, expressed as the </span><span class="c3">status</span><span class="c7"> field of a JSON record. Each command has a different status code. For example, for the </span><span class="c0 c2">create</span><span class="c3 c23 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> alice </span><span class="c3 c30 c2">"alices_password"</span><span class="c7"> </span><span class="c7">command in the example, the status code was CREATE_PRINCIPAL. For the </span><span class="c3 c9">return</span><span class="c7"> command, there is also an </span><span class="c3">output</span><span class="c7"> field for a representation of the returned value.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">After running the above program, user </span><span class="c3">alice</span><span class="c7"> could view </span><span class="c3">admin</span><span class="c7">’s </span><span class="c3">msg</span><span class="c7"> variable by running the following:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c9 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> alice </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"alices_password"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> msg</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Because </span><span class="c3">alice</span><span class="c7"> has been delegated read access to </span><span class="c3">msg</span><span class="c7">, this program will successfully return the message created by </span><span class="c3">admin</span><span class="c7">. Any other user who tries to access that data would be denied access. The rest of the document explains the programming language in more detail.</span></p><h2 class="c11 c13" id="h.l5p09q7tybum"><span>Running and returning from the server</span></h2><p class="c19"><span class="c7">Here is how the server is executed:</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c15 c2">./</span><span class="c3 c2">server </span><span class="c3 c22 c2">PORT</span><span class="c3 c2"> </span><span class="c3 c22 c15 c2">[</span><span class="c3 c22 c2">PASSWORD</span><span class="c3 c22 c2">]</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">This starts up a fresh server, listening for connections on TCP port </span><span class="c4">PORT</span><span class="c7"> (a positive integer between 1024 and 65535)</span><span class="c7">. The administrator password is an optional argument (it is </span><span class="c3 c30 c2">"admin"</span><span class="c7"> if the argument is missing</span><sup class="c7"><a href="https://builditbreakit.org/static/doc/fall2016/index.html#ftnt1" id="ftnt_ref1">[1]</a></sup><span class="c7">). Argument formatting requirements, return codes, and other details are given in a </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5x77kjymrwpw">later section</a></span><span class="c7">. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">There are four possible outcomes from running a </span><span class="c7">program</span><span class="c7">:</span></p><ul class="c8 lst-kix_paj4ag26vnuh-0 start"><li class="c1"><span class="c7 c9">The program succeeds</span><span class="c7">. In this case, the client will receive outputs from running the program, and the server state is updated appropriately.</span></li><li class="c1"><span class="c7 c9">The program fails</span><span class="c7">. This happens when the </span><span class="c7">program</span><span class="c7"> is malformed in some way. In this case, the </span><span class="c4">only</span><span class="c7"> status code sent back to the client is </span><span class="c3">FAILED</span><span class="c7">. </span><span class="c4">A</span><span class="c4">ny effects from executing this program’s commands so far are rolled back.</span></li><li class="c1"><span class="c7 c9">The program results in a security violation</span><span class="c7">. This happens when the program attempts to do something it is not authorized to do. The </span><span class="c4">only</span><span class="c7"> status code sent back to the client is </span><span class="c3">DENIED</span><span class="c7">. </span><span class="c4">A</span><span class="c4">ny effects from executing this program’s commands so far are rolled back.</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c4">We are not concerned about server-side faults. </span><span class="c7">That is, we assume that the data stored at the server is only needed while the server is running. The server should only halt if it is specifically directed to exit by the administrator. The server implementor should avoid coding errors that lead to unexpected termination (e.g., crashes); we assume that the operating system, hardware, etc. are fault-free.</span></p><h1 class="c19 c13" id="h.yl90lhtf352z"><span>Command language</span></h1><h2 class="c19 c13" id="h.21lxa31hxyc7"><span>Overview</span></h2><p class="c19"><span class="c7">The first line of a valid program indicates a principal and her password. Each subsequent line contains a primitive command executed on the principal’s behalf. </span><span class="c7">The server outputs a status code to the client’s connection for each primitive command executed (assuming the whole program completes successfully).</span><span class="c7"> A program concludes by either computing and returning some expression or instructing the server to exit. Primitive commands may define, add, or change entities stored at the server, and these entities are visible to subsequent, properly authorized programs.</span></p><p class="c6"><span class="c7 c29"></span></p><p class="c19"><span class="c7">Here is a slightly more complicated version of the first example program:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c9 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c2"> </span><span class="c0 c2">create principal</span><span class="c3 c2"> bob </span><span class="c3 c30 c2">"B0BPWxxd"</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"my string"</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> y </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">{</span><span class="c3 c2"> f1 </span><span class="c3 c15 c2">=</span><span class="c3 c2"> x</span><span class="c3 c15 c2">,</span><span class="c3 c2"> f2 </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"field2"</span><span class="c3 c2"> </span><span class="c3 c9 c2">}</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2"> set</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x admin </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">-></span><span class="c3 c2"> bob</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> y</span><span class="c3 c15 c2">.</span><span class="c3 c2">f1</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7 c9"></span></p><p class="c19"><span class="c7">The first line indicates that this program is running on behalf of principal </span><span class="c3">admin</span><span class="c7">, whose password is </span><span class="c3 c30 c2">"admin"</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Each subsequent line is a </span><span class="c4">primitive command</span><span class="c7">; each primitive command is executed in order with </span><span class="c3">admin</span><span class="c7">’s authority. This program:</span></p><ul class="c8 lst-kix_dtuwn3k6sqxd-0 start"><li class="c1"><span class="c7">creates a principal </span><span class="c3">bob</span><span class="c7"> (and sets </span><span class="c3">bob</span><span class="c7">’s password);</span></li><li class="c1"><span class="c7">creates a new global variable </span><span class="c3">x</span><span class="c7 c9"> </span><span class="c7">and initializes it to </span><span class="c3 c30 c2">"my string"</span><span class="c7">;</span></li><li class="c1"><span class="c7">creates another global variable </span><span class="c3">y</span><span class="c7"> and initializes it to a record with two fields, where the first field, named </span><span class="c3">f1</span><span class="c7">, is initialized to </span><span class="c3">x</span><span class="c7">’s value (</span><span class="c3 c30 c2">"my string"</span><span class="c7">), and the second field, named </span><span class="c3">f2</span><span class="c7">, is initialized to the string </span><span class="c3 c30 c2">"field2"</span><span class="c7">;</span></li><li class="c1"><span class="c7">specifies that </span><span class="c3">bob</span><span class="c7"> may read </span><span class="c3">x</span><span class="c7">’s contents (by delegating </span><span class="c3">admin</span><span class="c7">’s </span><span class="c3">read</span><span class="c7"> authority on </span><span class="c3">x</span><span class="c7"> to </span><span class="c3">bob</span><span class="c7">); and</span></li><li class="c1"><span class="c7">returns the value of </span><span class="c3">y</span><span class="c7">’s </span><span class="c3">f1</span><span class="c7"> field</span><span class="c7">. </span></li><li class="c1"><span class="c7">finally, the sequence </span><span class="c7 c23 c9">***</span><span class="c7"> signals the definitive end of the program</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">The output of running this program is sent back to the client. This output is a sequence of </span><span class="c4">status codes</span><span class="c7"> in </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=http://www.json.org/&sa=D&ust=1475459226129000&usg=AFQjCNGOxOpk7nVSc86ipg-VM9FY2t6LPg">JSON format</a></span><span class="c7">, one per command:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"CREATE_PRINCIPAL"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET_DELEGATION"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":"my string"}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Notice that the </span><span class="c3">RETURNING</span><span class="c7"> status code is coupled with an </span><span class="c3">output</span><span class="c7"> field, which has a JSON representation of the returned value (all other status codes have no additional output). </span></p><p class="c19"><span class="c7">The created principal (</span><span class="c3">bob</span><span class="c7">) and global variables (</span><span class="c3">x</span><span class="c7 c9"> </span><span class="c7">and </span><span class="c3">y</span><span class="c7">) </span><span class="c4">persist</span><span class="c7"> and so are available to subsequent programs run on the server, assuming those programs’ running principal is authorized to access the variables. For example, suppose we were to then run the following program:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> bob </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"B0BPWxxd"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> x</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Because principal </span><span class="c3">bob</span><span class="c7"> was granted access to read </span><span class="c3">x</span><span class="c7">, the client should get the following output:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":"my string"}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">The following program would result in a security violation because </span><span class="c3">bob</span><span class="c7"> does not have permission to </span><span class="c4">write</span><span class="c7"> </span><span class="c3">x</span><span class="c7">, only </span><span class="c4">read</span><span class="c7"> it:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> bob </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"B0BPWxxd"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> z </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"bobs string"</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"another string"</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> x</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">The output of this program would be:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"DENIED"}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">(We would have gotten the same output had </span><span class="c3">bob</span><span class="c7"> tried to access variable </span><span class="c3">y</span><span class="c7">, since he was not delegated any access to it.)</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">What about variable </span><span class="c3">z</span><span class="c7">? Programs are </span><span class="c4">transactional</span><span class="c7">, which means that either the entire program succeeds or none of it succeeds. Thus, as a result of the security violation, the creation of variable </span><span class="c3">z</span><span class="c7"> is</span><span class="c7"> </span><span class="c4">rolled back</span><span class="c7"> so it is as if </span><span class="c3">z</span><span class="c7"> was never created and thus subsequent programs will not see it.</span></p><hr style="page-break-before:always;display:none;"><p class="c6"><span class="c7"></span></p><h2 class="c11 c13" id="h.p5blxbo8gc5j"><span>Grammar</span></h2><p class="c19"><span class="c7">Below we give a </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=https://en.wikipedia.org/wiki/Context-free_grammar&sa=D&ust=1475459226158000&usg=AFQjCNEjekRyu6C7SnhMNVTFL7GYIO1XDg">context-free grammar</a></span><span class="c7"> for the command language </span><span class="c7">in </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=https://en.wikipedia.org/wiki/Backus%25E2%2580%2593Naur_Form&sa=D&ust=1475459226159000&usg=AFQjCNFjYNmjbZqb34ao7EbrJtL0xtQYfg">Backus-Naur form</a></span><span class="c7">. </span><span class="c18">This grammar represents the required features of the language. Later on, we discuss </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.y80p8aqa23pq">optional features</a></span><span class="c18">, which you can implement for more points,</span><span class="c7"> as well as a detailed description of the required </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5x77kjymrwpw">output format</a></span><span class="c7">. The next section gives</span><span class="c7"> a </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5c2bh7ekzo5n">description of each command’s semantics</a></span><span class="c7"> (i.e., its meaning). </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">All programs consist of at most </span><span class="c7">1,000,000</span><span class="c7"> ASCII (8-byte) characters (not a wide character set, like unicode); non-compliant programs result in failure. </span><span class="c7">Any program that fails to parse (i.e., is not correct according to the grammar) results in failure</span><span class="c7">.</span><span class="c4"> Such failures take precedence over security violations in the program itself</span><span class="c7">; see the </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5c2bh7ekzo5n">next section</a></span><span class="c7"> for more detail.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">In the grammar, elements in </span><span class="c3 c9 c2">bold</span><span class="c7 c9 c2"> </span><span class="c3 c9 c2">typewriter</span><span class="c7 c9 c2"> </span><span class="c3 c9 c2">font</span><span class="c7"> (i.e., keywords and concrete punctuation) are </span><span class="c4">terminals</span><span class="c7">; elements surrounded by < > (like <cmd>) are </span><span class="c4">non-terminals</span><span class="c7">; elements in </span><span class="c4">italics</span><span class="c7"> are </span><span class="c4">tokens</span><span class="c7"> whose format is as follows: </span></p><ul class="c8 lst-kix_fvo5wmmg6fyo-0 start"><li class="c1"><span class="c4">s</span><span class="c7"> indicates a </span><span class="c4">string constant</span><span class="c7"> having no more than </span><span class="c7">65,535 characters</span><span class="c7"> surrounded by a pair of double quotes. Strings may contain alphanumeric characters, </span><span class="c7">spaces (but no tabs or newlines)</span><span class="c7">, and </span><span class="c7">punctuation</span><span class="c4">—</span><span class="c7">specifically commas, semi-colons, periods, question marks, exclamation marks, hyphens, and underscores. Strings match the </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=http://rubular.com/&sa=D&ust=1475459226171000&usg=AFQjCNGDO8-EY_6gdtf5m6kOvNpeCNzs8A">r</a></span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=http://rubular.com/&sa=D&ust=1475459226171000&usg=AFQjCNGDO8-EY_6gdtf5m6kOvNpeCNzs8A">egular expression</a></span><span class="c7"> </span><span class="c4">"</span><span class="c4">[</span><span class="c4">A-Za-z0-9_</span><span class="c4"> ,;\.?!-]*</span><span class="c4">"</span></li><li class="c1"><span class="c4">x</span><span class="c7">, </span><span class="c4">p</span><span class="c7">, </span><span class="c4">q</span><span class="c7">, </span><span class="c4">r, y</span><span class="c7"> </span><span class="c7">indicate an </span><span class="c4">identifier</span><span class="c4"> </span><span class="c7">having no more than 255 characters. Identifiers</span><span class="c7"> must be distinct from keywords (collected below), must start with an alphabetic character, and then may contain alphanumeric characters as well as underscore. Identifiers match regular expression </span><span class="c4">[A-Za-z]</span><span class="c4">[A-Za-z0-9_]</span><span class="c4">*</span></li><li class="c1"><span class="c4">\n</span><span class="c7"> refers to the newline character (character code 10)</span><span class="c7">. (Note: \r is </span><span class="c4">not</span><span class="c7"> supported.)</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Here are the rules for the grammar:</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7"><prog></span><span class="c7"> ::=</span><span class="c3"> </span><span class="c0">as principal</span><span class="c3 c9"> </span><span class="c4">p</span><span class="c3 c9"> </span><span class="c0">password</span><span class="c3 c9"> </span><span class="c4">s</span><span class="c3 c9"> </span><span class="c0">do</span><span class="c3 c9"> </span><span class="c4">\n</span><span class="c3 c22"> </span><span class="c7"><cmd></span><span class="c3 c9"> </span><span class="c0">***</span></p><p class="c19 c21"><span class="c7"><cmd> ::=</span><span class="c3"> </span><span class="c0">exit</span><span class="c3 c9"> </span><span class="c4">\n</span><span class="c3"> | </span><span class="c0">return</span><span class="c3"> </span><span class="c7"><expr> </span><span class="c4">\n</span><span class="c3"> | </span><span class="c7"><prim_cmd></span><span class="c7 c9"> </span><span class="c4">\n</span><span class="c7"> </span><span class="c7"><cmd></span></p><p class="c19 c21"><span class="c7"><expr> ::= </span><span class="c4 c9"> </span><span class="c7"><value></span><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c3 c9">[]</span><span class="c3"> | </span><span class="c3 c9">{</span><span class="c7"> <fieldvals> </span><span class="c3 c9">}</span></p><p class="c19 c21"><span class="c7"><fieldvals> ::= </span><span class="c4">x</span><span class="c3 c9"> =</span><span class="c3"> </span><span class="c7"><value> </span><span class="c3">| </span><span class="c4">x</span><span class="c3 c9"> =</span><span class="c3"> </span><span class="c7"><value></span><span class="c3"> </span><span class="c3 c9">,</span><span class="c3"> </span><span class="c7"><fieldvals></span></p><p class="c19 c21"><span class="c7"><value> ::= </span><span class="c4">x</span><span class="c3"> | </span><span class="c4">x</span><span class="c3 c22 c9"> </span><span class="c3 c9">. </span><span class="c4">y</span><span class="c3"> | </span><span class="c4">s</span></p><p class="c19 c21"><span class="c7"><prim_cmd> ::= </span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3"> </span><span class="c0">create </span><span class="c0">principal</span><span class="c3 c9"> </span><span class="c4">p</span><span class="c3 c22"> </span><span class="c4">s</span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">change password</span><span class="c3"> </span><span class="c4">p</span><span class="c3 c22"> </span><span class="c4">s</span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">set</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c22 c9"> = </span><span class="c7"><expr></span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">append</span><span class="c3 c9"> </span><span class="c0">to </span><span class="c3 c22">x</span><span class="c0"> with</span><span class="c3"> </span><span class="c7"><expr></span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">|</span><span class="c3"> </span><span class="c0">local</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c9"> = </span><span class="c7"><expr></span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">foreach</span><span class="c3 c9"> </span><span class="c4">y</span><span class="c3 c9"> </span><span class="c0">in</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c9"> </span><span class="c0">replacewith</span><span class="c3 c9"> </span><span class="c7"><expr></span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">set delegation</span><span class="c3"> </span><span class="c7"><tgt></span><span class="c3"> </span><span class="c4">q</span><span class="c3"> </span><span class="c7"><right></span><span class="c3"> </span><span class="c3 c9">-> </span><span class="c4">p</span></p><p class="c19 c21"><span class="c3 c22 c9"> </span><span class="c3">| </span><span class="c0">delete</span><span class="c0"> delegation</span><span class="c3 c9"> </span><span class="c7"><tgt></span><span class="c3"> </span><span class="c4">q</span><span class="c3"> </span><span class="c7"><right></span><span class="c3"> </span><span class="c3 c9">-> </span><span class="c4">p</span></p><p class="c19 c21"><span class="c3"> | </span><span class="c0">default delegator</span><span class="c3"> </span><span class="c3 c9">=</span><span class="c3"> </span><span class="c4">p</span></p><p class="c19 c21"><span class="c7"><tgt> ::= </span><span class="c0">all</span><span class="c7"> | </span><span class="c4">x</span></p><p class="c19 c21"><span class="c7"><right> ::=</span><span class="c3"> </span><span class="c0">read</span><span class="c3"> | </span><span class="c0">write</span><span class="c3"> | </span><span class="c0">append</span><span class="c3"> | </span><span class="c0">delegate</span></p><p class="c6"><span class="c7"></span></p><h3 class="c11 c13" id="h.oku65831hqaj"><span>Whitespace</span></h3><p class="c19"><span class="c7">Space between terminals, non-terminals, and tokens in the rules above corresponds to whitespace in the parsed program. </span><span class="c4">Whitespace</span><span class="c4"> may include</span><span class="c4"> spaces (character code 32) but not tabs or </span><span class="c4">newlines</span><span class="c7">. </span><span class="c7">For example, here is a legally reformatted version of our example program:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as principal </span><span class="c3 c2">admin</span><span class="c0 c2"> password </span><span class="c3 c30 c2">"admin"</span><span class="c0 c2"> do </span></p><p class="c19 c21"><span class="c0 c2">create principal </span><span class="c3 c2">bob</span><span class="c0 c2"> </span><span class="c3 c30 c2">"B0BPWxxd"</span></p><p class="c19 c21"><span class="c0 c2"> set </span><span class="c3 c2">x</span><span class="c0 c2"> </span><span class="c3 c9 c2">=</span><span class="c0 c2"> </span><span class="c3 c30 c2">"my string"</span><span class="c3 c23 c2"> </span><span class="c0 c2"> </span></p><p class="c19 c21"><span class="c0 c2"> set </span><span class="c3 c2">y</span><span class="c0 c2"> </span><span class="c3 c9 c2">=</span><span class="c3 c2">{f1=x,f2=</span><span class="c3 c30 c2">"field2"</span><span class="c3 c2">}</span></p><p class="c19 c21"><span class="c0 c2"> set delegation </span><span class="c3 c2">x</span><span class="c0 c2"> </span><span class="c3 c2">admin</span><span class="c0 c2"> read</span><span class="c3 c9 c2">-> </span><span class="c3 c2">bob</span></p><p class="c19 c21"><span class="c0 c2"> return </span><span class="c3 c2">y</span><span class="c3 c9 c2"> . </span><span class="c3 c2">f1</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7 c9"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Notice that there are spaces between words, and at the start and end of lines, and that space need not be around punctuation (such as equals or dot). On the other hand, each command must be on a single line; it is not acceptable to break commands across lines.</span></p><h3 class="c11 c13" id="h.gb3fipedkh2u"><span>Comments</span></h3><p class="c19"><span class="c7">Programs support line-ending comments</span><span class="c7">. In particular, a</span><span class="c7">ny line in the input program may end with </span><span class="c3 c9">//</span><span class="c7"> followed by </span><span class="c7">text</span><span class="c7"> up until the end of the line. </span><span class="c7">I</span><span class="c7">t is also permitted for a comment to be on a line by itself, as long the line begins with </span><span class="c3 c9">//</span><span class="c7"> </span><span class="c4">without any preceding whitespace</span><span class="c7">. Comments must conform to the Ruby regular expression</span><span class="c4"> </span><span class="c4">[\/][\/][</span><span class="c4">A-Za-z0-9_</span><span class="c4"> ,;\.?!-]*$</span></p><h3 class="c11 c13" id="h.m9zx5nh74wb2"><span>Reserved keywords</span></h3><p class="c19"><span class="c7">The following are </span><span class="c4">keywords</span><span class="c7"> that cannot be used for program-defined variables, record fields, or principals: </span><span class="c0">all</span><span class="c7">, </span><span class="c0">append</span><span class="c7">, </span><span class="c0">as</span><span class="c7">, </span><span class="c0">change</span><span class="c7">, </span><span class="c0">create</span><span class="c7">, </span><span class="c0">default</span><span class="c7">, </span><span class="c0">delegate</span><span class="c7">, </span><span class="c0">delegation</span><span class="c7">, </span><span class="c0">delegator</span><span class="c7">, </span><span class="c0">delete</span><span class="c7">, </span><span class="c0">do</span><span class="c7">, </span><span class="c0">exit</span><span class="c7">, </span><span class="c0">foreach</span><span class="c7">, </span><span class="c0">in</span><span class="c7">, </span><span class="c0">local</span><span class="c7">, </span><span class="c0">password</span><span class="c7">, </span><span class="c0">principal</span><span class="c7">, </span><span class="c0">read</span><span class="c7">, </span><span class="c0">replacewith</span><span class="c7">, </span><span class="c0">return</span><span class="c7">, </span><span class="c0">set</span><span class="c7">, </span><span class="c0">to</span><span class="c7">, </span><span class="c0">write</span><span class="c7">, </span><span class="c0">***</span><span class="c7">. Note that </span><span class="c3">admin</span><span class="c7"> and </span><span class="c3">anyone</span><span class="c7"> are not keywords, they are predefined principals. Keywords for optional features (whether or not you implement those features) should also be excluded; these include </span><span class="c0">split</span><span class="c7">, </span><span class="c0">concat</span><span class="c7">, </span><span class="c0">tolower</span><span class="c7">, </span><span class="c0">notequal</span><span class="c7">, </span><span class="c0">equal</span><span class="c7">, </span><span class="c0">filtereach</span><span class="c7">, </span><span class="c0">with</span><span class="c7 c9">, </span><span class="c0">let</span><span class="c7">.</span></p><hr style="page-break-before:always;display:none;"><h2 class="c11 c35 c13" id="h.v3zc1bnorgzw"><span class="c37 c9"></span></h2><h2 class="c19 c13" id="h.5c2bh7ekzo5n"><span>Command Language </span><span>Detailed Description </span></h2><p class="c11"><span class="c18">In what follows, we describe the semantics of various program constructs. In some cases we point out that the current principal must have a certain permission on a variable </span><span class="c12">x</span><span class="c18"> or else there is a security violation; we discuss how to compute permissions in a </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">later section</a></span><span class="c18">. </span></p><p class="c11"><span class="c18">In the descriptions below, the failure conditions are checked in the order listed. This is important, because the order determines whether to emit a security violation or a failure. For example, for the expression </span><span class="c22 c18">x</span><span class="c9 c18">.</span><span class="c22 c18">y</span><span class="c18"> where </span><span class="c22 c18">x</span><span class="c18"> is a string (when it should be a record) that the current principal is not permitted to read, the program status code will be </span><span class="c12">DENIED</span><span class="c18"> rather than </span><span class="c12">FAILED</span><span class="c18">. On the other hand, if variable x does not exist, then status code is </span><span class="c12">FAILED</span><span class="c18">, not </span><span class="c12">DENIED</span><span class="c18">.</span></p><p class="c11"><span class="c18">A parse error (i.e., a failure according to the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.p5blxbo8gc5j">grammar</a></span><span class="c18"> above) </span><span class="c22 c18">anywhere in the program</span><span class="c18"> takes precedence over any security violation. In particular, if you implement the server by reading and processing one command at a time then if you hit a security violation but a subsequent command has a parse error, you must issue </span><span class="c12">FAILED</span><span class="c18"> rather than </span><span class="c12">DENIED</span><span class="c18">.</span></p><h3 class="c11 c13" id="h.npu16vriso3b"><span>Programs (<prog>)</span></h3><p class="c19"><span class="c7">In words, a program <prog> begins with the line </span><span class="c0">as principal</span><span class="c3"> </span><span class="c4">p</span><span class="c3"> </span><span class="c0">password</span><span class="c3"> </span><span class="c4">s</span><span class="c3"> </span><span class="c0">do</span><span class="c7"> and is followed by <cmd> on the next line. A <cmd> itself may consist of multiple <prim_cmd>s separated by newlines, finally concluding with either </span><span class="c0">exit</span><span class="c7"> or </span><span class="c0">return</span><span class="c7"> <expr>. A program completes with sequence </span><span class="c0">***</span><span class="c7">.</span></p><p class="c6"><span class="c4"></span></p><p class="c19"><span class="c7">The </span><span class="c4">security state</span><span class="c7"> of the system consists of a set of </span><span class="c4">delegation assertions</span><span class="c7"> made by programs that have called the </span><span class="c10 c9">set delegation</span><span class="c7"> command. This state is used to determine whether a particular principal has one or more of four possible permissions for a given variable </span><span class="c4">x</span><span class="c7">; these permissions are </span><span class="c0">read</span><span class="c7">, </span><span class="c0">write</span><span class="c7">, </span><span class="c0">append</span><span class="c7">, or </span><span class="c0">delegate</span><span class="c7 c9"> </span><span class="c7">(in the grammar above, they referred to as <right>). Such permissions are required for various commands, as described below; how the security state is used to determine permissions is discussed </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">later in this document</a></span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">A program </span><span class="c10 c14 c9">as principal</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">p</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">password</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">s</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">do</span><span class="c12 c9 c14"> </span><span class="c12 c22 c14">\n </span><span class="c14 c18"><cmd></span><span class="c12 c14"> </span><span class="c10 c14 c9">***</span><span class="c14 c18"> </span><span class="c7 c9"> </span></p><ul class="c8 lst-kix_2zgtxnlclbc3-0 start"><li class="c1"><span class="c7">Fails if principal </span><span class="c4">p</span><span class="c7"> does not </span><span class="c7">exist.</span></li><li class="c1"><span class="c7">Security</span><span class="c7"> violation if the password </span><span class="c4">s</span><span class="c7"> is not </span><span class="c4">p</span><span class="c7">’s password.</span></li><li class="c1"><span class="c7">Otherwise, the server terminates the connection after running <cmd> under the authority of principal </span><span class="c4">p</span><span class="c7">. </span></li></ul><p class="c6"><span class="c7"></span></p><h3 class="c11 c13" id="h.pawfvhuor951"><span>Commands (<cmd>)</span></h3><p class="c19"><span class="c7">A <cmd> is zero or more primitive commands (described below), each ending with a newline, concluding with either </span><span class="c10 c9">exit</span><span class="c7"> or </span><span class="c10 c9">return</span><span class="c12"> </span><span class="c18"><expr></span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">If the command is </span><span class="c10 c9">exit</span><span class="c7">, then the server outputs the</span><span class="c7"> status code is </span><span class="c3">EXITING</span><span class="c7">,</span><span class="c7"> terminates the client connection, and halts with return code 0 (and thus does not accept any more connections). This command is only allowed</span><span class="c7"> if the current principal is </span><span class="c3">admin</span><span class="c7">; otherwise it is a </span><span class="c7">security violation</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">If the command is</span><span class="c18"> </span><span class="c10 c9">return</span><span class="c12"> </span><span class="c18"><expr></span><span class="c7"> then the server executes the expression and outputs status code </span><span class="c3">RETURNING</span><span class="c7"> and the JSON representation of the result for the key </span><span class="c3 c2">"</span><span class="c7">output</span><span class="c3 c2">"</span><span class="c7">; the output format is given </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v62nh9n8zhh8">at the end of this document</a></span><span class="c7">.</span><span class="c7"> </span></p><p class="c6"><span class="c7"></span></p><h3 class="c11 c13" id="h.4k0eyckp0we0"><span>Expressions and variables (<expr>, <value>, and <fieldvals>)</span></h3><p class="c19"><span class="c7">This programming language has <value>s that can be variables, records, or strings:</span></p><ul class="c8 lst-kix_rqgiuuoe0nx7-0 start"><li class="c1"><span class="c4">x</span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-1 start"><li class="c19 c25"><span class="c7">R</span><span class="c7">eturns the current value of variable </span><span class="c4">x</span><span class="c7">. </span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> does not exist</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal does not have </span><span class="c0">read</span><span class="c7"> permission on </span><span class="c4">x</span><span class="c7">.</span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-0"><li class="c1"><span class="c4">x</span><span class="c7 c9"> . </span><span class="c4">y</span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-1 start"><li class="c19 c25"><span class="c7">If</span><span class="c7"> </span><span class="c4">x</span><span class="c7"> is a record with field </span><span class="c4">y</span><span class="c7">,</span><span class="c7"> returns the value stored in that field. </span></li><li class="c19 c25"><span class="c7">Fails if x does not exist.</span></li><li class="c19 c25"><span class="c7">Security</span><span class="c7"> violation if the current principal does not have </span><span class="c0">read</span><span class="c7"> permission on </span><span class="c4">x</span><span class="c7">.</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not a record or does not have a </span><span class="c4">y</span><span class="c7"> field. </span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-0"><li class="c1"><span class="c4">s</span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-1 start"><li class="c19 c25"><span class="c7">T</span><span class="c7">his</span><span class="c7"> is a string constant, which evaluates to itself</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Expressions can be <value>s, </span><span class="c7">as well as two types of containers</span><span class="c7">:</span></p><ul class="c8 lst-kix_rqgiuuoe0nx7-0"><li class="c1"><span class="c3 c9">[]</span><span class="c7"> </span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-1 start"><li class="c19 c25"><span class="c7">this is an empty </span><span class="c4">list</span><span class="c7">, and evaluates to itself.</span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-0"><li class="c1"><span class="c7 c9">{ </span><span class="c4">x1</span><span class="c7 c9"> =</span><span class="c7"> <value></span><span class="c7 c9">, </span><span class="c4">x2</span><span class="c7 c9"> =</span><span class="c7"> <value></span><span class="c7 c9">,</span><span class="c7"> ... </span><span class="c7 c9">, </span><span class="c4">xn</span><span class="c7"> </span><span class="c7 c9">=</span><span class="c7"> <value> </span><span class="c7 c9">}</span><span class="c7"> </span></li></ul><ul class="c8 lst-kix_rqgiuuoe0nx7-1 start"><li class="c19 c25"><span class="c7">this is a </span><span class="c4">record</span><span class="c7">, which comprises </span><span class="c4">field labels</span><span class="c7"> (</span><span class="c4">x1</span><span class="c7">, </span><span class="c4">x2</span><span class="c7">, …, </span><span class="c4">xn</span><span class="c7">) which are here initialized to their corresponding <value>s.</span></li><li class="c19 c25"><span class="c4">Record fields may only contain strings, when evaluated, not lists or nested records</span><span class="c7">. As such, if </span><span class="c3">x</span><span class="c7"> was a variable containing a record, then the expression </span><span class="c3">{ f=x, g=</span><span class="c3 c30 c2">"ok"</span><span class="c3"> }</span><span class="c7"> would result in </span><span class="c3">FAILED</span><span class="c7"> because field </span><span class="c3">f</span><span class="c7"> cannot be initialized to a non-string value.</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x1</span><span class="c7">, …, </span><span class="c4">xn</span><span class="c7"> are not unique.</span></li><li class="c19 c25"><span class="c7 c9">Important</span><span class="c7">: </span><span class="c4"><value> field initializers are evaluated left to right.</span><span class="c7"> As such, what kind of failure occurs for a record expression may depend on which field initializer failed. For example, suppose we have expression </span><span class="c3">{ f=x, f=</span><span class="c3 c30 c2">"ok"</span><span class="c3"> }</span><span class="c7"> and the current principal is not allowed to read variable </span><span class="c3">x</span><span class="c7">. Then the expression returns status code </span><span class="c3">DENIED</span><span class="c7">. On the other hand, if the current principal </span><span class="c4">can</span><span class="c7"> read </span><span class="c3">x</span><span class="c7">, then the expression returns status code </span><span class="c3">FAILED</span><span class="c7"> because when we get to the second field we see that it is a duplicate of the first field. We would be in a similar situation with expression </span><span class="c3">{ f=x, g=y.f }</span><span class="c7"> where </span><span class="c3">y</span><span class="c7"> is a variable the current principal can access, but it’s not a record: it would result in </span><span class="c3">FAILED</span><span class="c7"> if </span><span class="c3">x</span><span class="c7"> is a non-existent variable; </span><span class="c3">DENIED</span><span class="c7"> if </span><span class="c3">x</span><span class="c7"> exists but is unreadable; </span><span class="c3">FAILED</span><span class="c7"> if </span><span class="c3">x</span><span class="c7"> exists and is readable, but </span><span class="c3">y</span><span class="c7"> does not exist; etc.</span></li></ul><h2 class="c11 c35 c13" id="h.f8xw4wwnryz1"><span class="c37 c9"></span></h2><h3 class="c11 c13" id="h.iugyafcagh1a"><span>Primitive commands (<prim_cmd>)</span></h3><p class="c19"><span class="c7">Other</span><span class="c7"> than </span><span class="c10 c9">return</span><span class="c7"> and </span><span class="c10 c9">exit</span><span class="c7">, a <cmd> is an ordered list of </span><span class="c4">primitive commands</span><span class="c7"> separated by newlines; we detail each primitive command below. Note that commands may include expressions; these are executed as discussed </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.4k0eyckp0we0">above</a></span><span class="c7">.</span><span class="c7"> If an expression fails or issues a security violation, then the command that invokes it does.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">create </span><span class="c10 c14 c9">principal</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">p</span><span class="c12 c22 c14 c9"> </span><span class="c22 c14 c18">s</span><span class="c3"> </span></p><p class="c19"><span class="c7">Creates a principal </span><span class="c4">p</span><span class="c7"> having password </span><span class="c4">s</span><span class="c7">.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19"><span class="c7">The system is preconfigured with principal </span><span class="c3">admin</span><span class="c7"> whose password is given by the second command-line argument; or </span><span class="c3 c30 c2">"admin"</span><span class="c7"> if that password is not given. There is also a preconfigured principal </span><span class="c3">anyone</span><span class="c7"> whose initial password is unspecified, and which has no inherent authority. (See also the description of </span><span class="c0">default delegator</span><span class="c7">, below, for more about this command, and see the </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">permissions discussion</a></span><span class="c7"> for more on how principal </span><span class="c3">anyone</span><span class="c7"> is used.)</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions:</span></p><ul class="c8 lst-kix_srkrc1u8ht8r-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">p</span><span class="c7"> already exists as a principal.</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal is not </span><span class="c3">admin</span><span class="c7">. </span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">CREATE_PRINCIPAL</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">change password</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">p</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">s</span></p><p class="c19"><span class="c7">Changes the principal </span><span class="c4">p</span><span class="c7">’s password to </span><span class="c4">s</span><span class="c7">.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions:</span></p><ul class="c8 lst-kix_javo7o9nyfgh-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">p</span><span class="c7"> does not exist</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal is neither </span><span class="c3">admin</span><span class="c7"> nor </span><span class="c4">p</span><span class="c7"> itself.</span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code: </span><span class="c3">CHANGE_</span><span class="c3">PASSWORD</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">set</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">x</span><span class="c12 c22 c14 c9"> = </span><span class="c14 c18"><expr></span></p><p class="c19"><span class="c7">Sets </span><span class="c4">x</span><span class="c7">’s value to the result of evaluating <expr>, where </span><span class="c4">x</span><span class="c7"> is a global variable. If </span><span class="c4">x</span><span class="c7"> does not exist this command creates it. If </span><span class="c4">x</span><span class="c7"> is created by this command, and the current principal is not </span><span class="c3">admin</span><span class="c7">, then the current principal is delegated </span><span class="c0">read</span><span class="c7">, </span><span class="c0">write</span><span class="c7">, </span><span class="c0">append</span><span class="c7">, and </span><span class="c0">delegate</span><span class="c7"> rights </span><span class="c7">from the </span><span class="c3">admin</span><span class="c7"> on </span><span class="c4">x</span><span class="c7"> (equivalent to executing </span><span class="c0">set delegation</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c9"> </span><span class="c3">admin</span><span class="c3 c9"> </span><span class="c0">read</span><span class="c3 c9"> -> </span><span class="c4">p</span><span class="c7"> and</span><span class="c7"> </span><span class="c0">set delegation</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c9"> </span><span class="c3">admin</span><span class="c3 c9"> </span><span class="c0">write</span><span class="c3 c9"> -> </span><span class="c4">p</span><span class="c7">, etc. where </span><span class="c4">p</span><span class="c7"> is the current principal).</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Setting a variable results in a “deep copy.” For example, consider the following program:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c40"><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"hello"</span></p><p class="c19 c40"><span class="c0 c2">set</span><span class="c3 c2"> y </span><span class="c3 c2 c15">=</span><span class="c3 c2"> x</span></p><p class="c19 c40"><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"there"</span></p><hr><p class="c6"><span class="c3 c2"></span></p><p class="c19"><span class="c7">At this point, </span><span class="c3">y</span><span class="c7"> is still </span><span class="c3 c30 c2">"hello"</span><span class="c7"> even though we have re-set </span><span class="c3">x</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions:</span></p><ul class="c8 lst-kix_8zlxzr94snw4-0 start"><li class="c19 c25"><span class="c7">May fail or have a security violation due to evaluating <expr></span></li><li class="c19 c25"><span class="c7">Security violation if the current principal does not have </span><span class="c0">write</span><span class="c7 c9"> </span><span class="c7">permission on </span><span class="c4">x</span><span class="c7">.</span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">SET</span></p><p class="c6"><span class="c7 c9"></span></p><p class="c6"><span class="c7 c9"></span></p><p class="c19"><span class="c10 c14 c9">append</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">to</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">x</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">with </span><span class="c14 c18"><expr></span><span class="c12 c14"> </span></p><p class="c19"><span class="c7">Adds the <expr>’s result to the end of </span><span class="c4">x</span><span class="c7">. If <expr> evaluates to a record or a string, it is added to the end of x; if <expr> evaluates to a list, then </span><span class="c7">it is </span><span class="c7">concatenated to (the end of) </span><span class="c4">x</span><span class="c7">.</span></p><p class="c6 c21"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions:</span></p><ul class="c8 lst-kix_bwp5usd4tvni-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not defined</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal does not have either </span><span class="c0">write</span><span class="c7"> or </span><span class="c0">append</span><span class="c7"> permission on </span><span class="c4">x </span><span class="c7">(</span><span class="c0">read</span><span class="c7"> permission is not necessary)</span><span class="c7">.</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not a list</span></li><li class="c19 c25"><span class="c7">May fail or have a security violation due to evaluating <expr></span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">APPEND</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">local</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">x</span><span class="c12 c14 c9"> = </span><span class="c14 c18"><expr> </span></p><p class="c19"><span class="c7">Creates a</span><span class="c7"> </span><span class="c7">local </span><span class="c7">variable </span><span class="c4">x</span><span class="c7"> and initializes it to the value of executing <expr>. Subsequent updates to </span><span class="c4">x</span><span class="c7"> can be made as you would to a global variable, e.g., using </span><span class="c0">set</span><span class="c3 c23"> </span><span class="c4">x</span><span class="c7">, </span><span class="c0">append</span><span class="c7">...</span><span class="c0">to</span><span class="c7"> </span><span class="c4">x</span><span class="c7">, </span><span class="c0">foreach</span><span class="c7">, etc. as described elsewhere in this section. Different from a global variable, </span><span class="c4">local variables are destroyed when the program ends—they do not persist across connections.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions: </span></p><ul class="c8 lst-kix_prhpzba1wavz-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is already defined as a local or global variable. </span></li><li class="c19 c25"><span class="c7">May fail or have a security violation due to evaluating <expr></span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">LOCAL</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">foreach</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">y</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">in</span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">x</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">replacewith</span><span class="c12 c14 c9"> </span><span class="c14 c18"><expr></span></p><p class="c19"><span class="c7">For each element </span><span class="c4">y</span><span class="c7"> in list </span><span class="c4">x</span><span class="c7">, replace the contents of </span><span class="c4">y</span><span class="c7"> with the result of executing <expr>. This expression is called for each element in </span><span class="c4">x</span><span class="c7">, in order, and </span><span class="c4">y</span><span class="c7"> is bound to the current element. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">As an example, consider the following program:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> records </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c15 c2">[]</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">a</span><span class="c0 c2">ppend</span><span class="c3 c2"> </span><span class="c0 c2">to</span><span class="c3 c2"> records </span><span class="c0 c2">with</span><span class="c3 c2"> </span><span class="c3 c15 c2">{</span><span class="c3 c2"> name </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"mike"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> date </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"1-1-90"</span><span class="c3 c2"> </span><span class="c3 c15 c2">}</span><span class="c3 c2"> </span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">a</span><span class="c0 c2">ppend</span><span class="c3 c2"> </span><span class="c0 c2">to</span><span class="c3 c2"> records </span><span class="c0 c2">with</span><span class="c3 c2"> </span><span class="c3 c15 c2">{</span><span class="c3 c2"> name </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"dave"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> date </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"1-1-85"</span><span class="c3 c2"> </span><span class="c3 c15 c2">}</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">local</span><span class="c3 c2"> names </span><span class="c3 c15 c2">=</span><span class="c3 c2"> records</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">foreach</span><span class="c3 c2"> rec </span><span class="c0 c2">in</span><span class="c3 c2"> names </span><span class="c0 c2">replacewith</span><span class="c3 c2"> rec</span><span class="c3 c15 c2">.</span><span class="c3 c2">name</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> names</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">This program creates a list of two records, each with fields </span><span class="c3">name</span><span class="c7"> and </span><span class="c3">date</span><span class="c7">. Then it makes a copy of this list in </span><span class="c3">names</span><span class="c7">, and updates the contents of </span><span class="c3">names</span><span class="c7"> using </span><span class="c0">foreach</span><span class="c7">. This </span><span class="c0">foreach</span><span class="c7"> iterates over the list and replaces each record with the first element of that record. So the final, returned variable </span><span class="c3">names</span><span class="c7"> is </span><span class="c3 c9">[</span><span class="c3 c30">"mike"</span><span class="c3 c9">,</span><span class="c3 c30">"dave"</span><span class="c3 c9">]</span><span class="c7">. (The original list </span><span class="c3">records</span><span class="c7"> is not changed by the </span><span class="c0">foreach</span><span class="c7 c9"> </span><span class="c7">here.)</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions: </span></p><ul class="c8 lst-kix_2fzlx3v3ax3x-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not defined</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal does not have</span><span class="c7"> </span><span class="c0">read</span><span class="c7"> and </span><span class="c0">write</span><span class="c7"> </span><span class="c7">permission on </span><span class="c4">x</span><span class="c7">.</span></li></ul><ul class="c8 lst-kix_2fzlx3v3ax3x-1 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">y</span><span class="c7"> is already defined as a local or global variable.</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not a list.</span></li></ul><ul class="c8 lst-kix_2fzlx3v3ax3x-0"><li class="c19 c25"><span class="c7">If any execution of <expr> fails or has a security violation, then entire </span><span class="c0">foreach</span><span class="c7"> does. <expr> is from the front of the list to the back</span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">FOREACH</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">set</span><span class="c12 c14 c9"> </span><span class="c10 c14 c9">delegation</span><span class="c12 c14"> </span><span class="c14 c18"><tgt></span><span class="c12 c22 c14"> </span><span class="c22 c14 c18">q</span><span class="c12 c14"> </span><span class="c14 c18"><</span><span class="c14 c18">right</span><span class="c14 c18">></span><span class="c12 c14"> </span><span class="c12 c14 c9">-> </span><span class="c22 c14 c18">p</span><span class="c12 c14 c9"> </span></p><p class="c19"><span class="c7">When <tgt> is a variable </span><span class="c4">x</span><span class="c7">, Indicates that </span><span class="c4">q</span><span class="c7"> delegates <right></span><span class="c7"> to </span><span class="c4">p</span><span class="c7"> </span><span class="c7">on </span><span class="c4">x</span><span class="c7">, so that </span><span class="c4">p</span><span class="c7"> is given <right> whenever </span><span class="c4">q</span><span class="c7"> is. If </span><span class="c4">p</span><span class="c7"> is </span><span class="c3">anyone</span><span class="c7">, then effectively all principals are given <right> on </span><span class="c4">x</span><span class="c7"> (for more detail, see </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">here</a></span><span class="c7">). When</span><span class="c7"> <tgt> is the keyword </span><span class="c0">all</span><span class="c7"> then </span><span class="c4">q</span><span class="c7"> delegates <right> to </span><span class="c4">p</span><span class="c7"> for </span><span class="c4">all</span><span class="c7"> variables </span><span class="c7">on which </span><span class="c4">q</span><span class="c7"> (currently) has </span><span class="c0">delegate</span><span class="c7"> permission</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions:</span></p><ul class="c8 lst-kix_a5wkod64biep-0 start"><li class="c19 c25"><span class="c7">Fails if either </span><span class="c4">p</span><span class="c7"> or </span><span class="c4">q</span><span class="c7"> does not exist</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c3 c22">x</span><span class="c7"> does not exist or if it is a local variable, if <right> is a variable </span><span class="c3 c22">x</span><span class="c7">.</span></li><li class="c19 c25"><span class="c7">Security violation unless the current principal is </span><span class="c3">admin</span><span class="c7"> or </span><span class="c4">q</span><span class="c4 c9">;</span><span class="c7"> if the principal is </span><span class="c4">q</span><span class="c7"> and <tgt> is the variable x, then q must have </span><span class="c0">delegate</span><span class="c7"> permission on </span><span class="c4">x</span><span class="c7">.</span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">SET_</span><span class="c3">DELEGAT</span><span class="c3">ION</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">delete delegation</span><span class="c12 c14 c9"> </span><span class="c14 c18"><tgt></span><span class="c12 c14 c9"> </span><span class="c22 c14 c18">q</span><span class="c12 c14"> </span><span class="c14 c18"><right></span><span class="c12 c14"> </span><span class="c12 c14 c9">-> </span><span class="c22 c14 c18">p</span><span class="c12 c14 c9"> </span></p><p class="c19"><span class="c7">When <tgt> is a variable </span><span class="c4">x</span><span class="c7">, indicates that </span><span class="c4">q</span><span class="c7"> revokes a delegation assertion of <right> to </span><span class="c4">p</span><span class="c7"> on </span><span class="c4">x</span><span class="c7">. In effect, this command revokes a previous command </span><span class="c0">set delegation</span><span class="c7"> </span><span class="c4">x</span><span class="c7"> </span><span class="c4">q</span><span class="c7"> <right> </span><span class="c3">-></span><span class="c7"> </span><span class="c4">p</span><span class="c7">; see </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.15xb3o428agz">below</a></span><span class="c7"> for the precise semantics of what this means. </span><span class="c7">If <tgt> is the keyword </span><span class="c0">all</span><span class="c7"> then </span><span class="c4">q</span><span class="c7"> revokes delegation of <right> to </span><span class="c4">p</span><span class="c7"> for </span><span class="c4">all</span><span class="c7"> variables on which </span><span class="c4">q</span><span class="c7"> has </span><span class="c0">delegate</span><span class="c7"> permission.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions</span><span class="c7 c9">:</span></p><ul class="c8 lst-kix_nzzulhihegbc-0 start"><li class="c19 c25"><span class="c7">Fails if either </span><span class="c4">p</span><span class="c7"> or </span><span class="c4">q</span><span class="c7"> does not exist</span></li><li class="c19 c25"><span class="c7">Fails if </span><span class="c3 c22">x</span><span class="c7"> does not exist or if it is a local variable, if <right> is a variable </span><span class="c3 c22">x</span><span class="c7">.</span></li></ul><ul class="c8 lst-kix_u05q3fjgh3s5-0 start"><li class="c19 c25 c39"><span class="c7">S</span><span class="c7">ecurity violation unless the current principal is </span><span class="c3">admin</span><span class="c7">, </span><span class="c4">p</span><span class="c4 c9">, </span><span class="c7">or</span><span class="c4"> q</span><span class="c7">; if the principal is </span><span class="c4">q</span><span class="c7"> </span><span class="c7">and <tgt> is a variable </span><span class="c4">x</span><span class="c7">, then it must have </span><span class="c0">delegate</span><span class="c7"> permission on </span><span class="c4">x. </span><span class="c7">(No special permission is needed if the current principal is </span><span class="c4">p</span><span class="c7">: any non-</span><span class="c3">admin</span><span class="c7"> principal can always deny himself rights)</span><span class="c7">.</span></li></ul><p class="c19 c40"><span class="c7 c9">Successful status code: </span><span class="c3">DELETE_DELEGAT</span><span class="c3">ION</span></p><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c10 c14 c9">default delegator</span><span class="c12 c14 c9"> = </span><span class="c22 c14 c18">p</span><span class="c12 c14 c9"> </span></p><p class="c19"><span class="c7">Sets the “default delegator” to </span><span class="c4">p</span><span class="c7">. This means </span><span class="c7">that</span><span class="c7"> </span><span class="c7">when a principal </span><span class="c4">q</span><span class="c7"> is created, the system automatically delegates </span><span class="c0">all</span><span class="c7"> from </span><span class="c4">p</span><span class="c7"> to </span><span class="c4">q</span><span class="c7">. Changing the default delegator does not affect the permissions of existing principals. The initial default delegator is </span><span class="c3">anyone</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7 c9">Failure conditions: </span></p><ul class="c8 lst-kix_o80cgtlbucd0-0 start"><li class="c19 c25"><span class="c7">Fails if </span><span class="c4">p</span><span class="c7"> does not exist</span></li><li class="c19 c25"><span class="c7">Security violation if the current principal is not </span><span class="c3">admin</span><span class="c7">.</span></li></ul><p class="c19 c21"><span class="c7 c9">Successful status code:</span><span class="c7"> </span><span class="c3">DEFAULT_DELEGATOR</span></p><h2 class="c11 c13 c35" id="h.nxvu06fknols"><span></span></h2><hr style="page-break-before:always;display:none;"><h2 class="c11 c35 c13" id="h.l6l00g773xvb"><span></span></h2><h2 class="c11 c13" id="h.15xb3o428agz"><span>Enforcing Command Permissions</span></h2><p class="c19"><span class="c7">In the </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.iugyafcagh1a">command descriptions</a></span><span class="c7">, we indicate that security violations can occur if a particular principal does not have a particular permission on a variable </span><span class="c4">x</span><span class="c7">. </span><span class="c7">Whether or not a principal </span><span class="c4">p</span><span class="c7"> has a permission <right> (</span><span class="c0">read</span><span class="c7">, </span><span class="c0">write</span><span class="c7">, </span><span class="c0">append</span><span class="c7">, or </span><span class="c0">delegate</span><span class="c7">) on variable </span><span class="c4">x</span><span class="c7"> is determined by the current </span><span class="c4">security state </span><span class="c7">(call it </span><span class="c4 c9">S</span><span class="c7">), which is the set of active </span><span class="c4 c16">delegation assertions</span><span class="c7"> made by</span><span class="c7"> </span><span class="c0">set delegation</span><span class="c3"> </span><span class="c7">x</span><span class="c7"> </span><span class="c4">q</span><span class="c3"> </span><span class="c7"><right> </span><span class="c3 c9">-></span><span class="c3"> </span><span class="c4">p</span><span class="c7"> </span><span class="c7">statements, and the following three </span><span class="c7">rules</span><span class="c7">:</span></p><p class="c6"><span class="c7"></span></p><ol class="c8 lst-kix_l894ipqttw8-0 start" start="1"><li class="c1"><span class="c3">admin</span><span class="c7"> has <right> on </span><span class="c4">x</span><span class="c7 c9"> </span><span class="c7">(for all rights <right> and variables </span><span class="c4">x</span><span class="c7">)</span></li><li class="c1"><span class="c7">A principal </span><span class="c4">p</span><span class="c7"> has <right> on </span><span class="c4">x</span><span class="c7"> if principal </span><span class="c3">anyone</span><span class="c7"> has <right> on </span><span class="c4">x</span><span class="c7">.</span></li><li class="c1"><span class="c7">A principal </span><span class="c4">p</span><span class="c7"> has <right> on </span><span class="c4">x</span><span class="c7"> if there exists some </span><span class="c4">q</span><span class="c7"> that has <right> on </span><span class="c4">x</span><span class="c7"> </span><span class="c4">and</span><span class="c7"> </span><span class="c4 c9">S</span><span class="c7"> includes a delegation assertion </span><span class="c7 c16">x</span><span class="c7 c16"> </span><span class="c4 c16">q</span><span class="c7 c16"> <right> </span><span class="c3 c16 c9">-></span><span class="c7 c16"> </span><span class="c4 c16">p</span></li></ol><p class="c6"><span class="c4 c9"></span></p><p class="c19"><span class="c7">The third rule essentially combines uses of all three rules to establish rights transitively. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c4 c29">Example</span><span class="c4 c29">.</span><span class="c7"> Consider our very our first example, which included the statement</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">set</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x admin </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c2">-></span><span class="c3 c2"> bob</span></p><hr><p class="c6"><span class="c4 c9"></span></p><p class="c19"><span class="c7">Prior to running this statement, </span><span class="c4 c9">S</span><span class="c7"> is empty. </span><span class="c7">This statement adds delegation assertion </span><span class="c3 c16">x</span><span class="c3 c16 c9"> </span><span class="c3 c16">admin</span><span class="c3 c16 c9"> read -> </span><span class="c3 c16">bob</span><span class="c7"> to </span><span class="c4 c9">S</span><span class="c7">. We can establish that principal </span><span class="c3">bob</span><span class="c7"> has </span><span class="c0">read</span><span class="c7"> permission on variable </span><span class="c3">x</span><span class="c7"> by applying rules 3 and 1 together. From rule 3, we establish that bob (playing the role of principal </span><span class="c4">p</span><span class="c7">) has </span><span class="c0">read</span><span class="c7"> permission (a <right>) on </span><span class="c3">x</span><span class="c7"> as long as there exists some </span><span class="c4">q</span><span class="c7"> such that </span><span class="c4">q</span><span class="c7"> has </span><span class="c0">read</span><span class="c7"> permission on </span><span class="c3">x</span><span class="c7"> and </span><span class="c4 c9">S</span><span class="c7"> contains delegation assertion </span><span class="c3 c16">x </span><span class="c4 c16">q</span><span class="c3 c16"> </span><span class="c3 c16 c9">read</span><span class="c3 c16"> </span><span class="c3 c16 c9">-></span><span class="c3 c16"> bob</span><span class="c7">. In this case, that </span><span class="c4">q</span><span class="c7"> is </span><span class="c3">admin</span><span class="c7">: by rule 1, </span><span class="c3">admin</span><span class="c7"> has right </span><span class="c0">read</span><span class="c7"> on </span><span class="c3">x</span><span class="c7">, and by the </span><span class="c0">set delegation</span><span class="c7"> statement above, </span><span class="c3 c16">x admin </span><span class="c3 c16 c9">read</span><span class="c3 c16"> </span><span class="c3 c16 c9">-></span><span class="c3 c16"> bob</span><span class="c7"> is in </span><span class="c4 c9">S</span><span class="c7">.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Continuing the example, suppose we subsequently executed the following statements successfully:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">set</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x bob </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c2">-></span><span class="c3 c2"> alice</span></p><p class="c19 c21"><span class="c0 c2">set</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x admin </span><span class="c0 c2">append</span><span class="c3 c2"> </span><span class="c3 c15 c2">-></span><span class="c3 c2"> anyone</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Doing so adds two more delegation assertions to </span><span class="c4 c9">S</span><span class="c7">, which then consists of three assertions: </span><span class="c3 c16">x admin </span><span class="c3 c16 c9">read</span><span class="c3 c16"> </span><span class="c3 c16 c9">-></span><span class="c3 c16"> bob</span><span class="c7">, </span><span class="c3 c16">x bob </span><span class="c3 c16 c9">read</span><span class="c3 c16"> -> alice</span><span class="c7 c2">, </span><span class="c7">and </span><span class="c3 c16">x admin </span><span class="c3 c16 c9">append</span><span class="c3 c16"> -> anyone</span><span class="c7">. With these, we could now establish:</span></p><ul class="c8 lst-kix_2hcqi35168fy-0 start"><li class="c1"><span class="c3">alice</span><span class="c7"> has </span><span class="c0">read</span><span class="c7"> permission on </span><span class="c3">x</span><span class="c7">. This is because </span><span class="c3">admin</span><span class="c7"> has </span><span class="c0">read</span><span class="c7"> permission on </span><span class="c3">x</span><span class="c7"> (rule 1), </span><span class="c3">admin</span><span class="c7"> delegates that permission to </span><span class="c3">bob</span><span class="c7"> (rule 3, and first assertion in </span><span class="c4 c9">S</span><span class="c7">), and </span><span class="c3">bob</span><span class="c7"> delegates that permission to </span><span class="c3">alice</span><span class="c7"> (rule 3, and second assertion in </span><span class="c4 c9">S</span><span class="c7">).</span></li><li class="c1"><span class="c3">alice</span><span class="c7"> has </span><span class="c0">append</span><span class="c7"> permission on </span><span class="c3">x</span><span class="c7">. This is because </span><span class="c3">admin</span><span class="c7"> has </span><span class="c0">append</span><span class="c7"> permission on </span><span class="c3">x</span><span class="c7 c9"> </span><span class="c7">(rule 1), </span><span class="c3">admin</span><span class="c7"> delegates this permission to </span><span class="c3">anyone</span><span class="c7"> (rule 3, and third assertion in </span><span class="c4 c9">S</span><span class="c7">), and since </span><span class="c3">anyone</span><span class="c7"> has this permission then </span><span class="c3">alice</span><span class="c7"> does (rule 2). (</span><span class="c3">bob</span><span class="c7"> has </span><span class="c7 c23 c9">append</span><span class="c7"> permission by the same reasoning.)</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c4 c29">Maintaining the security state</span><span class="c7">. As mentioned in the description of the commands, above, executing </span><span class="c10 c9">set delegation</span><span class="c18"> and </span><span class="c10 c9">delete delegation</span><span class="c18"> requires certain permissions. To recap:</span></p><ul class="c8 lst-kix_s9gy267mt5i6-0 start"><li class="c1"><span class="c10 c9">set delegation</span><span class="c12"> </span><span class="c22 c18">x</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c18"> requires that the current principal be either </span><span class="c12">admin</span><span class="c18"> or </span><span class="c22 c18">p</span><span class="c18">. If the latter and </span><span class="c22 c18">x</span><span class="c18"> is a normal variable,</span><span class="c18"> </span><span class="c22 c18">p</span><span class="c18"> must have </span><span class="c10 c9">delegate</span><span class="c18"> permission on </span><span class="c22 c18">x</span><span class="c18">. (If </span><span class="c22 c18">x</span><span class="c18"> is the keyword </span><span class="c10 c9">all</span><span class="c18">, </span><span class="c22 c18">p</span><span class="c18"> needs no special permissions.)</span></li><li class="c1"><span class="c10 c9">delete delegation</span><span class="c12"> </span><span class="c22 c18">x</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c18"> requires that the current principal be either </span><span class="c12">admin</span><span class="c18">, </span><span class="c22 c18">q</span><span class="c18">, or </span><span class="c22 c18">p</span><span class="c18">.</span><span class="c18"> If it is </span><span class="c22 c18">p</span><span class="c18"> and </span><span class="c22 c18">x</span><span class="c18"> is a normal variable, </span><span class="c22 c18">p</span><span class="c18"> must have </span><span class="c10 c9">delegate</span><span class="c18"> permission on </span><span class="c22 c18">x</span><span class="c18">. (If </span><span class="c22 c18">x</span><span class="c18"> is the keyword </span><span class="c10 c9">all</span><span class="c18">, </span><span class="c22 c18">p</span><span class="c18"> needs no special permissions.)</span></li></ul><p class="c6"><span class="c18"></span></p><p class="c19"><span class="c18">For normal variables </span><span class="c22 c18">x</span><span class="c18">, successfully executing </span><span class="c10 c9">set delegation</span><span class="c12"> </span><span class="c22 c18">x</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c22 c9 c18"> </span><span class="c18">adds the delegation assertion </span><span class="c5 c22">x</span><span class="c12 c16"> </span><span class="c5 c22">p</span><span class="c12 c16"> </span><span class="c5"><right></span><span class="c12 c16"> </span><span class="c12 c16 c9">-> </span><span class="c5 c22">q</span><span class="c22 c18"> </span><span class="c18">to </span><span class="c22 c9 c18">S</span><span class="c18">, while executing </span><span class="c9 c10">delete delegation</span><span class="c12"> </span><span class="c22 c18">x</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c18"> </span><span class="c7">revokes assertion </span><span class="c5 c22">x</span><span class="c12 c16"> </span><span class="c5 c22">p</span><span class="c12 c16"> </span><span class="c5"><right></span><span class="c12 c16"> </span><span class="c12 c16 c9">-> </span><span class="c5 c22">q</span><span class="c7"> </span><span class="c4">if it is explicitly present in </span><span class="c4 c9">S</span><span class="c7">; otherwise the command does nothing. </span><span class="c7">Consider our second example above, after which </span><span class="c4 c9">S</span><span class="c7"> has three assertions. If we were to execute</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">delete</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x admin </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c2">-></span><span class="c3 c2"> alice</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Then this statement has </span><span class="c7">no effect</span><span class="c7">: Because this assertion is not directly present in </span><span class="c4 c9">S</span><span class="c7">, nothing is removed. On the other hand, executing </span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">delete</span><span class="c3 c9 c2"> </span><span class="c0 c2">delegation</span><span class="c3 c2"> x bob </span><span class="c0 c2">read</span><span class="c3 c2"> </span><span class="c3 c15 c2">-></span><span class="c3 c2"> alice</span></p><hr><p class="c19"><span class="c7">s</span><span class="c18">erves to remove the assertion from </span><span class="c22 c9 c18">S</span><span class="c18"> that </span><span class="c12">x</span><span class="c12 c9"> </span><span class="c12">bob</span><span class="c12 c9"> </span><span class="c10 c9">read</span><span class="c12 c9"> -> </span><span class="c12">alice</span><span class="c18">.</span></p><p class="c6"><span></span></p><p class="c19"><span class="c7">Executing </span><span class="c10 c9">set delegation</span><span class="c12"> </span><span class="c10 c9">all</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c22 c9 c18"> </span><span class="c18">adds (zero or more) assertions of the form </span><span class="c5 c22">x</span><span class="c5"> </span><span class="c5 c22">p</span><span class="c12 c16"> </span><span class="c5"><right></span><span class="c12 c16"> </span><span class="c12 c16 c9">-> </span><span class="c5 c22">q</span><span class="c7 c16"> </span><span class="c7">f</span><span class="c7">or all variables </span><span class="c4">x</span><span class="c7"> on which </span><span class="c4">p</span><span class="c7"> has </span><span class="c7 c23 c9">delegate</span><span class="c7"> permission. Conversely, </span><span class="c10 c9">delete</span><span class="c10 c9"> delegation</span><span class="c12"> </span><span class="c10 c9">all</span><span class="c12"> </span><span class="c22 c18">p</span><span class="c12"> </span><span class="c18"><right></span><span class="c12"> </span><span class="c12 c9">-> </span><span class="c22 c18">q</span><span class="c22 c9 c18"> </span><span class="c22 c18">revokes</span><span class="c18"> (zero or more) assertions of the form </span><span class="c5 c22">x</span><span class="c5"> </span><span class="c5 c22">p</span><span class="c12 c16"> </span><span class="c5"><right></span><span class="c12 c16"> </span><span class="c12 c16 c9">-> </span><span class="c5 c22">q</span><span class="c7 c16"> </span><span class="c7">for those variables </span><span class="c4">x</span><span class="c7"> on which </span><span class="c4">p</span><span class="c7"> has </span><span class="c7 c23 c9">delegate</span><span class="c7"> permission.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">The security state, consisting of the set of active delegations due to </span><span class="c10 c9">set delegation</span><span class="c18"> and </span><span class="c10 c9">delete delegation</span><span class="c7"> commands, is also </span><span class="c4">transactional</span><span>—</span><span class="c7">any changes to the security state made by a program are rolled back if that program fails or issues a security violation</span></p><p class="c6"><span></span></p><h2 class="c19 c35 c13" id="h.cqhjymv68pms"><span></span></h2><hr style="page-break-before:always;display:none;"><h2 class="c19 c35 c13" id="h.kb9x46hivbdx"><span></span></h2><h2 class="c19 c13" id="h.5x77kjymrwpw"><span>Details on Formats and Error Conditions</span></h2><h3 class="c19 c13" id="h.fhz7d9j7fpnt"><span>Command line arguments</span></h3><p class="c19"><span class="c7">Any command-line input that is not valid according to the rules below should cause the program to exit with a return code of 255. When the server cleanly terminates, it should exit with return code 0. </span></p><ul class="c8 lst-kix_c7f83m9fm0z-0 start"><li class="c1"><span class="c7">Command line arguments cannot exceed 4096 characters each</span></li><li class="c1"><span class="c7">The port argument must be a number between 1,024 and 65,535 (inclusive). It should be provided in decimal without any leading 0's. Thus 10</span><span class="c7">42 is a valid input number</span><span class="c7"> but the</span><span class="c7"> octal 052 or hexadecimal 0x2a are not.</span></li><li class="c1"><span class="c7">The password argument, if present, must be a legal string </span><span class="c4 c9">s</span><span class="c7">, per the rules for strings given </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.p5blxbo8gc5j">above</a></span><span class="c7">, </span><span class="c7">but without the surrounding quotation marks</span><span class="c7">.</span></li></ul><h3 class="c19 c13" id="h.13wtk5be69yn"><span>Server startup and shutdown</span></h3><p class="c19"><span class="c7">If when starting up the server the port specified by the first argument is taken, the server should exit with code 63. The server should exit with return code 0 when it receives the SIGTERM signal. </span></p><h3 class="c19 c13" id="h.vjy3qzr2znwf"><span>Input</span></h3><p class="c19"><span class="c18">Your server should read (and potentially process) the input program until the </span><span class="c10 c9">***</span><span class="c18"> terminator is read. At this point, </span><span class="c22 c18">all further input should be ignored</span><span class="c18"> (i.e., it does not constitute a parsing error). If the server receives an incomplete program (e.g., without the </span><span class="c10 c9">***</span><span class="c18"> terminator) your program can act in any of the following ways:</span></p><ul class="c8 lst-kix_mvgocwwwcjd5-0 start"><li class="c1"><span class="c18">It could return </span><span class="c12">FAILED</span><span class="c18"> because some input that was read is malformed, or a read-in command tries to execute an illegal action. </span></li><li class="c1"><span class="c18">It could hang while waiting for additional input, most notably the </span><span class="c10 c9">***</span><span class="c18"> terminator, to complete the program (even if the input read to that point is malformed)</span></li><li class="c1"><span class="c18">It could issue the </span><span class="c12">TIMEOUT</span><span class="c18"> status if input is not received within 30 seconds (which is what the oracle does; see </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v6wip58x5cx1">below</a></span><span class="c18">).</span></li><li class="c1"><span class="c22 c18">The program will never output non-error status for incomplete programs</span></li></ul><h3 class="c19 c13" id="h.v62nh9n8zhh8"><span>Output</span></h3><p class="c19"><span class="c18">All output from the server to the client will be in </span><span class="c20 c18"><a class="c17" href="https://www.google.com/url?q=http://www.json.org/&sa=D&ust=1475459226566000&usg=AFQjCNGNBpNxC7ZI14ODvG3P_ovXO6yGoQ">JSON format</a></span><span class="c18">, defined as follows.</span></p><ul class="c8 lst-kix_x87v5nqljbag-0 start"><li class="c1"><span class="c18">Each command’s JSON output is printed on a single line and is followed by a newline ('\n', the ASCII character with code decimal 10).</span></li><li class="c1"><span class="c18">Each command’s JSON output includes the key </span><span class="c3 c2">"status"</span><span class="c18"> which indicates the status code of each <prim_cmd>, </span><span class="c10 c9">return</span><span class="c18">, or </span><span class="c10 c9">exit</span><span class="c18">. The value of </span><span class="c3 c2">"status"</span><span class="c18"> is a string constant dependent on the result of executing the command. For example, if there is a security violation, the </span><span class="c3 c2">"status"</span><span class="c18"> is </span><span class="c3 c2">"DENIED"</span><span class="c18">; if there is a failure, the status is </span><span class="c3 c2">"FAILED".</span><span class="c18"> The legal </span><span class="c3 c2">"status"</span><span class="c18"> codes are given with the description of each command.</span></li><li class="c1"><span class="c18">The output of a return <expr> command results in a </span><span class="c3 c2">"status"</span><span class="c18"> value </span><span class="c3 c2">"RETURNING"</span><span class="c18">. The output JSON record also contains an </span><span class="c3 c2">"output"</span><span class="c7"> field, </span><span class="c7">whose value is a JSON representation of the <expr></span><span class="c7">. In particular,</span></li></ul><ul class="c8 lst-kix_x87v5nqljbag-1 start"><li class="c19 c25"><span class="c7">If the <expr> is a string, then the value is a JSON string</span></li><li class="c19 c25"><span class="c7">If the <expr> is a record, the the value is a JSON record</span></li><li class="c19 c25"><span class="c7">If the <expr> is a list, the the value is a JSON array (whose contents are formatted as JSON strings or records, as needed)</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Here is an example output where an expression is returning the string </span><span class="c3 c30 c2">"example"</span><span class="c7">: </span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":"example"}</span></p><hr><p class="c6"><span class="c37 c9"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Here is an example output where an expression is returning a list of strings and records: </span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":["example","test",{"f":"val","g":"val2"}]}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Here is an example output where an expression is returning a record:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":{"key1":"elem1","key2":"string"}}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><hr style="page-break-before:always;display:none;"><p class="c6"><span></span></p><h1 class="c19 c13" id="h.y80p8aqa23pq"><span>Optional features</span></h1><p class="c19"><span class="c7">Here we detail three features you may optionally implement for extra points: </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.ns8nor2eiuu">string functions</a></span><span class="c7">, </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.blwp5my80cf0">filtering lists</a></span><span class="c7">,</span><span class="c7"> and </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.5y7hjuye7i2h">recursive expressions</a></span><span class="c7">. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">To get full points for an optional feature you must implement all the features that precede it. In particular, to get points for filtering lists, you must also implement string functions; to get points for recursive expressions, you must implement string functions and filtering lists, too.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Note that implementing an optional feature exposes you to more possible attacks. If you don’t implement string functions, break-it teams cannot find bugs in string functions.</span></p><h2 class="c19 c13" id="h.ns8nor2eiuu"><span>String functions</span></h2><p class="c19"><span class="c7">We extend expressions to include calls to functions on strings.</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7"><expr> ::=</span><span class="c3"> </span><span class="c3 c22 c9"> </span><span class="c3">… | </span><span class="c7"><func></span><span class="c3"> </span><span class="c3 c9">(</span><span class="c3"> </span><span class="c7"><args></span><span class="c3"> </span><span class="c3 c9">)</span></p><p class="c19 c21"><span class="c7"><func> ::=</span><span class="c3"> split | concat</span><span class="c3 c9"> </span><span class="c3">| tolower</span></p><p class="c19 c21"><span class="c7"><args> ::=</span><span class="c3"> </span><span class="c7"><value></span><span class="c3"> | </span><span class="c7"><value></span><span class="c3"> </span><span class="c3 c9">,</span><span class="c3"> </span><span class="c7"><args></span></p><p class="c6"><span class="c7 c9"></span></p><p class="c19"><span class="c18">In short, we extend allowable expressions to include calls to functions </span><span class="c12">split</span><span class="c9 c18">, </span><span class="c12">concat</span><span class="c18">, and </span><span class="c12">tolower</span><span class="c18">, which take <value> arguments expected to evaluate to strings </span><span class="c22 c9 c18">s</span><span class="c18">. </span></p><p class="c6"><span class="c18"></span></p><p class="c19"><span class="c22 c18">Error handling</span><span class="c18">: </span><span class="c18">If the function receives the wrong number of arguments, or if the function name is invalid, then the function call fails immediately, without evaluating any of its arguments. Otherwise, </span><span class="c18"><args> are evaluated from left to right; as such, if evaluating an argument fails, or produces a value of the wrong type (e.g., a list or record rather than a string), or results in a security violation, then the entire expression fails in the same way. </span></p><p class="c6"><span class="c18"></span></p><p class="c19"><span class="c18">Here’s what the particular functions do:</span></p><ul class="c8 lst-kix_burqudjey0lg-0 start"><li class="c1"><span class="c12">split</span><span class="c12 c9">(</span><span class="c22 c18">s1</span><span class="c12 c9">,</span><span class="c22 c18">s2</span><span class="c12 c9">)</span><span class="c18"> </span></li></ul><ul class="c8 lst-kix_burqudjey0lg-1 start"><li class="c19 c25"><span class="c18">returns a record</span><span class="c12"> </span><span class="c12 c9">{ </span><span class="c12">fst</span><span class="c12 c9"> = </span><span class="c22 c18">s11</span><span class="c12 c9">, </span><span class="c12">snd</span><span class="c12 c9"> = </span><span class="c22 c18">s12</span><span class="c12 c9"> }</span><span class="c9 c18"> </span><span class="c18">where </span><span class="c22 c18">s11</span><span class="c18"> and </span><span class="c22 c18">s12</span><span class="c18"> are the result of splitting string </span><span class="c22 c18">s1</span><span class="c18">. String </span><span class="c22 c18">s11</span><span class="c18"> is the first </span><span class="c22 c18">N</span><span class="c18"> characters of </span><span class="c22 c18">s1</span><span class="c18"> where </span><span class="c22 c18">N</span><span class="c18"> is the length of </span><span class="c22 c18">s2</span><span class="c18">, and string </span><span class="c22 c18">s12</span><span class="c18"> is the remainder of </span><span class="c22 c18">s1</span><span class="c18">. If </span><span class="c22 c18">N</span><span class="c18"> is greater than the length of </span><span class="c22 c18">s1</span><span class="c18"> then </span><span class="c12">fst = </span><span class="c22 c18">s1</span><span class="c18"> and </span><span class="c12">snd = </span><span class="c3 c30 c2">""</span><span class="c18">. </span></li></ul><p class="c39 c19 c21"><span class="c12">concat</span><span class="c12 c9">(</span><span class="c22 c18">s1</span><span class="c12 c9">,</span><span class="c22 c18">s2</span><span class="c12 c9">)</span><span class="c18"> </span></p><ul class="c8 lst-kix_burqudjey0lg-1"><li class="c19 c25"><span class="c18">returns a new string that is the concatenation of </span><span class="c22 c18">s1</span><span class="c18"> and </span><span class="c22 c18">s2</span><span class="c18">. The concatenated string is truncated to 65535 characters (if it would exceed that length).</span></li></ul><ul class="c8 lst-kix_burqudjey0lg-0"><li class="c1"><span class="c12">tolower</span><span class="c12 c9">(</span><span class="c22 c18">s</span><span class="c12 c9">)</span><span class="c18"> </span></li></ul><ul class="c8 lst-kix_burqudjey0lg-1 start"><li class="c19 c25"><span class="c18">returns a new string that converts all uppercase characters in </span><span class="c22 c18">s</span><span class="c18"> to lowercase. </span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7 c29">Example</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c23 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"hello"</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> y </span><span class="c3 c15 c2">=</span><span class="c3 c2"> split</span><span class="c3 c15 c2">(</span><span class="c3 c2">x</span><span class="c3 c15 c2">,</span><span class="c3 c30 c2">"--")</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> z </span><span class="c3 c15 c2">=</span><span class="c3 c2"> concat</span><span class="c3 c15 c2">(</span><span class="c3 c2">x</span><span class="c3 c15 c2">,</span><span class="c3 c2">y</span><span class="c3 c15 c2">.</span><span class="c3 c2">fst)</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> </span><span class="c3 c15 c2">{</span><span class="c3 c2"> x</span><span class="c3 c15 c2">=</span><span class="c3 c2">x</span><span class="c3 c15 c2">,</span><span class="c3 c2"> y</span><span class="c3 c15 c2">=</span><span class="c3 c2">y</span><span class="c3 c15 c2">.</span><span class="c3 c2">snd</span><span class="c3 c15 c2">,</span><span class="c3 c2"> z</span><span class="c3 c15 c2">=</span><span class="c3 c2">z }</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Produces output</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":{"z":"hellohe","x":"hello","y":"llo"}}</span></p><hr><p class="c6"><span class="c7 c9"></span></p><h2 class="c11 c13" id="h.blwp5my80cf0"><span>Filtering lists</span></h2><p class="c19"><span class="c7">We add a new command and two new functions in support of it.</span></p><p class="c6"><span class="c7 c9"></span></p><p class="c19 c21"><span class="c7"><prim_cmd> ::=</span><span class="c3"> … | </span><span class="c0">filtereach</span><span class="c3 c9"> </span><span class="c4">y</span><span class="c3 c9"> </span><span class="c0">in</span><span class="c3 c9"> </span><span class="c4">x</span><span class="c3 c9"> </span><span class="c0">with</span><span class="c3 c9"> </span><span class="c7"><expr></span></p><p class="c19 c21"><span class="c7"><func> ::=</span><span class="c3"> … | </span><span class="c3">equal</span><span class="c3 c9"> </span><span class="c3">| notequal</span></p><p class="c6"><span class="c7 c9"></span></p><p class="c19"><span class="c7">In short, we extend commands with one additional command, and functions with two new functions:</span></p><ul class="c8 lst-kix_8kh4jd12jiew-0 start"><li class="c1"><span class="c10 c9">filtereach</span><span class="c12 c9"> </span><span class="c22 c18">y</span><span class="c12 c9"> </span><span class="c10 c9">in</span><span class="c12 c9"> </span><span class="c22 c18">x</span><span class="c12 c9"> </span><span class="c10 c9">with</span><span class="c12 c9"> </span><span class="c18"><expr> </span></li></ul><ul class="c8 lst-kix_8kh4jd12jiew-1 start"><li class="c19 c25"><span class="c18">for every element in </span><span class="c22 c18">x</span><span class="c18">, execute <expr> where occurrences of </span><span class="c22 c18">y</span><span class="c18"> are bound to the record’s value. If the <expr> evaluates to the empty string </span><span class="c3 c30 c2">""</span><span class="c18">, then that element is retained; otherwise it is removed. </span></li><li class="c19 c25"><span class="c18">Failure behavior is the same as </span><span class="c10 c9">foreach</span><span class="c18">:</span></li></ul><ul class="c8 lst-kix_8kh4jd12jiew-2 start"><li class="c19 c34"><span class="c7">Fails if </span><span class="c4">x</span><span class="c7"> is not defined</span></li><li class="c19 c34"><span class="c7">Security violation if the current principal does not have</span><span class="c7"> </span><span class="c0">read</span><span class="c7"> and </span><span class="c0">write</span><span class="c7"> </span><span class="c7">permission on </span><span class="c4">x</span><span class="c7">.</span></li><li class="c19 c34"><span class="c7">Fails if </span><span class="c4">y</span><span class="c7"> is already defined as a local or global variable.</span></li><li class="c19 c34"><span class="c7">If any execution of <expr> fails or has a security violation, then entire </span><span class="c0">filtereach</span><span class="c7"> does. <expr> is applied from the front of the list to the back</span></li><li class="c6 c34"><span class="c7"></span></li></ul><p class="c19"><span class="c18">As with string functions, if functions receive the wrong number of arguments, they fail immediately. Otherwise, arguments are evaluated left to right.</span></p><ul class="c8 lst-kix_8kh4jd12jiew-0"><li class="c1"><span class="c12">equal</span><span class="c12 c9">(</span><span class="c18"><value></span><span class="c12 c9">,</span><span class="c18"><value></span><span class="c12 c9">)</span><span class="c9 c18"> </span></li></ul><ul class="c8 lst-kix_8kh4jd12jiew-1 start"><li class="c19 c25"><span class="c18">takes two arguments and returns </span><span class="c3 c30 c2">""</span><span class="c18"> if they are equal, and </span><span class="c3 c30 c2">"0"</span><span class="c18"> if they are not. </span></li><li class="c19 c25"><span class="c18">(as with string functions, arguments are evaluated left to right)</span></li><li class="c19 c25"><span class="c18">Arguments are permitted to be strings or records; fails otherwise.</span></li></ul><ul class="c8 lst-kix_8kh4jd12jiew-0"><li class="c1"><span class="c12">notequal</span><span class="c12 c9">(</span><span class="c18"><value></span><span class="c12 c9">,</span><span class="c18"><value></span><span class="c12 c9">)</span><span class="c9 c18"> </span></li></ul><ul class="c8 lst-kix_8kh4jd12jiew-1 start"><li class="c19 c25"><span class="c18">takes tw</span><span class="c7">o arguments and returns </span><span class="c3 c30 c2">""</span><span class="c7"> if they are not equal, and </span><span class="c3 c30 c2">"0"</span><span class="c7"> if they are. </span></li><li class="c19 c25"><span class="c18">(as with string functions, arguments are evaluated left to right)</span></li><li class="c19 c25"><span class="c7">Arguments are permitted to be strings or records; fails otherwise.</span></li></ul><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7 c29">Example</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c9 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> records </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">[]</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">append</span><span class="c3 c9 c2"> </span><span class="c0 c2">to</span><span class="c3 c9 c2"> </span><span class="c3 c2">records</span><span class="c0 c2"> with</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">{</span><span class="c3 c2"> name </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"mike"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> date </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"1-1-90"</span><span class="c3 c2"> </span><span class="c3 c15 c2">}</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">append</span><span class="c3 c9 c2"> </span><span class="c0 c2">to</span><span class="c3 c9 c2"> </span><span class="c3 c2">records</span><span class="c0 c2"> with</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">{</span><span class="c3 c2"> name </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"sandy"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> date </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"1-1-90"</span><span class="c3 c2"> </span><span class="c3 c15 c2">}</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">append to</span><span class="c3 c9 c2"> </span><span class="c3 c2">records </span><span class="c0 c2">with</span><span class="c3 c2"> </span><span class="c3 c15 c9 c2">{</span><span class="c3 c2"> name </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"dave"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> date </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c2 c30">"1-1-85"</span><span class="c3 c2"> </span><span class="c3 c15 c2">}</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">filtereach</span><span class="c3 c2"> rec </span><span class="c0 c2">in</span><span class="c3 c2"> records </span><span class="c0 c2">with</span><span class="c3 c2"> equal</span><span class="c3 c15 c2">(</span><span class="c3 c2">rec</span><span class="c3 c15 c2">.</span><span class="c3 c2">date</span><span class="c3 c15 c2">,</span><span class="c3 c30 c2">"1-1-90")</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">return</span><span class="c3 c2"> records</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Produces output</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"APPEND"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"APPEND"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"APPEND"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"FILTEREACH"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":[{"date":"1-1-90","name":"mike"},{"date":"1-1-90","name":"sandy"}]}</span></p><hr><h1 class="c11 c24 c13" id="h.yw5spfu4fdef"><span class="c7 c38"></span></h1><h2 class="c11 c13" id="h.phwwuj18bpr"><span>Recursive expressions</span></h2><p class="c19"><span class="c7">We extend the grammar for expressions to allow locally-defined variables within an expression:</span></p><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c7"><expr> ::=</span><span class="c3"> … | </span><span class="c0">let</span><span class="c3"> </span><span class="c4">x</span><span class="c3"> </span><span class="c3 c9">=</span><span class="c3"> </span><span class="c7"><expr></span><span class="c3"> </span><span class="c0">in</span><span class="c3"> </span><span class="c7"><expr></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">When this expression form is executed we create a local variable </span><span class="c4">x</span><span class="c7"> and assign the result of execution the first <expr> part to it and then execute the second <expr> part. Fails if </span><span class="c4">x</span><span class="c7"> is already defined (as a local or global variable) -- check this before evaluating the first <expr>. When the second <expr> completes, we delete the local variable </span><span class="c4">x</span><span class="c7">. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7 c29">Example</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c0 c2">as</span><span class="c3 c2"> </span><span class="c0 c2">principal</span><span class="c3 c2"> admin </span><span class="c0 c2">password</span><span class="c3 c2"> </span><span class="c3 c30 c2">"admin"</span><span class="c3 c2"> </span><span class="c0 c2">do</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> x </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c15 c2">{</span><span class="c3 c2"> f1 </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"hello"</span><span class="c3 c15 c2">,</span><span class="c3 c2"> f2 </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c3 c30 c2">"there"</span><span class="c3 c2"> }</span></p><p class="c19 c21"><span class="c3 c23 c2"> </span><span class="c0 c2">set</span><span class="c3 c2"> y </span><span class="c3 c15 c2">=</span><span class="c3 c2"> </span><span class="c0 c2">let</span><span class="c3 c2"> z </span><span class="c3 c15 c2">=</span><span class="c3 c2"> concat</span><span class="c3 c15 c2">(</span><span class="c3 c2">x</span><span class="c3 c15 c2">.</span><span class="c3 c2">f1</span><span class="c3 c15 c2">,</span><span class="c3 c2"> </span><span class="c3 c30 c2">" "</span><span class="c3 c15 c2">)</span><span class="c3 c2"> </span><span class="c0 c2">in</span><span class="c3 c2"> concat</span><span class="c3 c15 c2">(</span><span class="c3 c2">z</span><span class="c3 c15 c2">,</span><span class="c3 c2"> x</span><span class="c3 c15 c2">.</span><span class="c3 c2">f2)</span></p><p class="c19 c21"><span class="c3 c2 c23"> </span><span class="c0 c2">return</span><span class="c3 c2"> y</span></p><p class="c19 c21"><span class="c0 c2">***</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Produces output</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"SET"}</span></p><p class="c19 c21"><span class="c3 c2">{"status":"RETURNING","output":"hello there"}</span></p><hr><p class="c6"><span class="c3"></span></p><h2 class="c11 c13" id="h.ka1k0qw7f6nm"><span>Timeout handling </span></h2><p class="c11"><span class="c18">As mentioned </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.cbs3gupb5by4">below</a></span><span class="c18">, you can implement a timeout in your program that rejects inputs that do not include a terminator within 30 seconds.</span></p><p class="c11 c41"><span></span></p><hr style="page-break-before:always;display:none;"><h1 class="c11 c24 c13" id="h.an8dmqpqoh75"><span></span></h1><h1 class="c11 c13" id="h.v6wip58x5cx1"><span>Oracle</span></h1><p class="c19"><span class="c7">We have written an </span><span class="c4">oracle</span><span class="c7">, or reference implementation, to adjudicate tests submitted during the Break-it round. The behavior of a targeted build-it submission on a test will be compared against the behavior of the oracle, where the oracle is configured to implement the same set of features the target does (in the case the target does not implement all optional features). Differences</span><span class="c7"> in behavior indicate a bug.</span><span class="c7"> When a test constitutes evidence of a </span><span class="c4">correctness</span><span class="c7"> or </span><span class="c4">security</span><span class="c7"> bug is discussed </span><span class="c7 c20"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.rl1z1vho24y0">below</a></span><span class="c7">.</span></p><p class="c6"><span class="c18"></span></p><p class="c19"><span class="c7">Contestants may query the oracle during the build-it round to clarify the expected behavior of the server program. Queries are specified as command line arguments and a sequence of input programs. They may be submitted via the</span><span class="c7"> "Oracle submissions" link </span><span class="c7">on the team participation page of the contest site. Here is an example query:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{</span></p><p class="c19 c21"><span class="c3 c2"> "arguments":["%PORT%","password"],</span></p><p class="c19 c21"><span class="c3 c2"> "programs":[</span></p><p class="c19 c21"><span class="c3 c2"> "as principal admin password \"password\" do\nset x = \"x\"\nreturn x\n***",</span></p><p class="c19 c21"><span class="c3 c2"> "as principal admin password \"password\" do\nreturn x\n***"</span></p><p class="c19 c21"><span class="c3 c2"> ]</span></p><p class="c19 c21"><span class="c3 c2">}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7 c9"></span></p><p class="c19"><span class="c7">The oracle will provide outputs from the server and the return code. Here is output for the above query:</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c19 c21"><span class="c3 c2">{</span></p><p class="c19 c21"><span class="c3 c2"> "return_code":0,</span></p><p class="c19 c21"><span class="c3 c2"> "output":[</span></p><p class="c19 c21"><span class="c3 c2"> [{"status":"SET"},{"status":"RETURNING","output":"x"}],</span></p><p class="c19 c21"><span class="c3 c2"> [{"status":"RETURNING","output":"x"}]</span></p><p class="c19 c21"><span class="c3 c2"> ]</span></p><p class="c19 c21"><span class="c3 c2">}</span></p><hr><p class="c6"><span class="c7"></span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">The infrastructure will automatically assign a port for the oracle server to run on. You can specify this assigned port by using the </span><span class="c3 c2">%PORT% </span><span class="c7">variable, which will be replaced with the assigned port in the command line arguments. </span></p><h2 class="c19 c13" id="h.cbs3gupb5by4"><span>Timeouts</span></h2><p class="c19"><span class="c18">It is possible that a client may not send a complete program (which includes the </span><span class="c23 c18">***</span><span class="c18"> terminator) to your server within a reasonable time. To handle this situation, the oracle will output a </span><span class="c3">TIMEOUT</span><span class="c18"> status if it does not receive the </span><span class="c23 c18">***</span><span class="c18"> terminator within 30 seconds. This behavior is </span><span class="c9 c18">optional</span><span class="c18"> in your implementation; see the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.vjy3qzr2znwf">input handling</a></span><span class="c18"> section for possible actions. If you do implement it, there is a test for it that will net you extra points.</span></p><h2 class="c19 c13" id="h.wxelcof27gou"><span>Reporting bugs in the oracle</span></h2><p class="c19"><span class="c7">While we have striven to make the oracle and this specification consistent, we may have made some mistakes. </span><span class="c7 c38">Breaker teams will receive </span><span class="c7 c20 c38"><a class="c17" href="https://www.google.com/url?q=https://builditbreakit.org/details%23scoring&sa=D&ust=1475459226712000&usg=AFQjCNFGKSPBEUZM4H0RpR8YPxcPgj5ezQ">25 points</a></span><span class="c7 c38"> for identifying bugs in the oracle implementation (or problems with the specification, if the oracle is right but the spec is wrong). Points will only be awarded to the first breaker team that reports a particular bug. To report a bug in the oracle, email </span><span class="c7 c20 c38"><a class="c17" href="mailto:[email protected]">[email protected]</a></span><span class="c7 c38"> with a description of the bug, links to relevant oracle submissions on the contest website, your team name, and team </span><span class="c7">ID</span><span class="c7 c38">.</span></p><h1 class="c11 c24 c13" id="h.8rq8pywes0xr"><span></span></h1><h1 class="c11 c24 c13" id="h.r56qzfbqe2jm"><span></span></h1><hr style="page-break-before:always;display:none;"><h1 class="c11 c13 c24" id="h.ewuaayfy43zm"><span></span></h1><h1 class="c11 c13" id="h.lpmruw94a78m"><span>Implementation Goals</span></h1><h2 class="c19 c13" id="h.544alwakpndn"><span>Performance goal</span></h2><p class="c19"><span class="c7">The main performance goal of the server is minimizing </span><span class="c7 c9">elapsed time</span><span class="c7">. That is, we want the server to execute each program it receives as quickly as possible. We will measure performance for </span></p><ul class="c8 lst-kix_7afqendiuk8d-0 start"><li class="c1"><span class="c7">single, short programs</span></li><li class="c1"><span class="c7">single, large programs (that involve many operations in the same program); and </span></li><li class="c1"><span class="c7">sequences of programs (large and short), </span></li></ul><p class="c19"><span class="c7">We are not concerned about </span><span class="c7">the memory the program uses (but keep in mind that the reference platform may not be able to execute a program that hogs space too much).</span></p><h2 class="c19 c13" id="h.rl1z1vho24y0"><span>Security goals and threat model</span></h2><p class="c19"><span class="c7">Our security goals are </span><span class="c7 c9">privacy,</span><span class="c7"> </span><span class="c7 c9">integrity</span><span class="c7">, and </span><span class="c7 c9">availability</span><span class="c7">. We say that privacy is violated if an attacker is able to read stored data for which it is not </span><span class="c7">granted access</span><span class="c7">. We say that integrity is violated if an attacker is able to modify stored data for which it should not have access. We say that availability is violated if a principal is denied the ability to access data despite it having the authority to do so. We are interested in the security of normal data (lists, strings, and records) and the security state</span><span class="c4">—</span><span class="c7">e.g., it is a security violation if </span><span class="c4">p</span><span class="c7"> is not permitted to delegate access to data when the rules say that it should.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">While attempting to violate the above security properties, the attacker is assumed to be able to communicate directly with the server, but cannot view (or corrupt) others’ communications with the server. As such, as evidence of a defect, break-it teams will provide a sequence of programs—a test—that when executed on the target server will behave incorrectly or insecurely. In particular: </span></p><p class="c19 c36"><span class="c18">We consider it a </span><span class="c9 c18">security bug</span><span class="c18"> in a targeted submission when running some program</span></p><p class="c19"><span class="c18">- the </span><span class="c20 c18"><a class="c17" href="https://builditbreakit.org/static/doc/fall2016/index.html#h.v6wip58x5cx1">oracle</a></span><span class="c18"> says </span><span class="c12">DENIED</span><span class="c18"> but the target doesn't (integrity or privacy)</span></p><p class="c19"><span class="c18">- the oracle returns correctly (</span><span class="c12">EXITING</span><span class="c18"> or </span><span class="c12">RETURNING</span><span class="c18"> status), but the target says DENIED (availability)</span></p><p class="c19"><span class="c18">- the oracle returns any status within 30 seconds but the target fails to return within a much longer window (availability)</span><span class="c18">. </span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c18">On the other hand, we consider it a </span><span class="c9 c18">correctness bug</span><span class="c18"> in a targeted submission when</span></p><p class="c19"><span class="c18">- the oracle returns </span><span class="c12">FAILED</span><span class="c18">, but the target returns some other status</span></p><p class="c19"><span class="c18">- both the oracle and target return correctly, but the output differs (different status, returned value, etc.)</span></p><p class="c6"><span class="c18"></span></p><p class="c19"><span class="c7">Any test for which the oracle returns </span><span class="c3">TIMEOUT</span><span class="c7"> cannot be used to claim a bug in a submission.</span></p><hr style="page-break-before:always;display:none;"><h1 class="c11 c24 c13" id="h.e9doh867118o"><span></span></h1><h1 class="c11 c13" id="h.96msbg7n2zq0"><span>Build-it Round Submission</span></h1><p class="c19"><span class="c7">Each build-it team should initialize a git repository on either </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=https://github.com/&sa=D&ust=1475459226732000&usg=AFQjCNEWtDlL-ac8ch51sTr1dycqBFx5KA">github</a></span><span class="c7"> or </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=https://bitbucket.org/&sa=D&ust=1475459226733000&usg=AFQjCNFsI0XNr9-5D6-8Ax7FdJOtFdJ-ig">bitbucket</a></span><span class="c7"> or </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=https://gitlab.com&sa=D&ust=1475459226734000&usg=AFQjCNFOqrcDwBRh4glAsqPdudb1BASDIA">gitlab</a></span><span class="c7"> and share it</span></p><p class="c19"><span class="c7">with the </span><span class="c3">bibifi</span><span class="c7"> user on those services. Create a directory named </span><span class="c3">build</span><span class="c7"> in the top-level directory of this repository and commit your code into that folder. Your submission will be scored after every push to the repository. (Beware making your repository public, or other contestants might be able to see it!)</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">To score a submission, an automated system will first invoke </span><span class="c3">make</span><span class="c7"> in the </span><span class="c3">build</span><span class="c7"> directory of your submission. The only requirement on </span><span class="c3">make</span><span class="c7"> is that it must function without internet connectivity, and that it must return within ten minutes. Moreover, it must be the case that your software is actually built, through initiation of </span><span class="c3">make</span><span class="c7">, from source (not including libraries you might use). Submitting binaries (only) is not acceptable.</span></p><p class="c6"><span class="c7"></span></p><p class="c19"><span class="c7">Once make finishes, </span><span class="c3">server</span><span class="c7"> should be an executable file within the </span><span class="c3">build</span><span class="c7"> directory. An automated system will invoke them with a variety of options and measure their responses. The executables must be able to be run from any working directory. If your executables are bash scripts, you may find the following </span><span class="c7 c20"><a class="c17" href="https://www.google.com/url?q=http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in&sa=D&ust=1475459226741000&usg=AFQjCNHCxZ9_S9XTb6KMbBo-cx0IFVkqdQ">resource</a></span><span class="c7"> helpful.</span></p><div><p class="c6"><span></span></p></div><hr class="c32"><div><p class="c19 c42"><a href="https://builditbreakit.org/static/doc/fall2016/index.html#ftnt_ref1" id="ftnt1">[1]</a><span class="c2"> </span><span class="c18 c2">Default passwords are, in general, a bad idea. For this contest we thought a default would simplify testing for participants, but in retrospect we could have done this another way.</span></p></div></body></html>