版权声明:本套课程材料开源,使用和分享必须遵守「创作共用许可协议 CC BY-NC-SA」(来源引用-非商业用途使用-以相同方式共享)。


正则表达式基础

info = "
导演: 饺子
编剧: 饺子
主演: 吕艳婷 / 囧森瑟夫 / 瀚墨 / 陈浩 / 绿绮 / 张珈铭 / ...
类型: 剧情 / 喜剧 / 动画 / 奇幻
制片国家/地区: 中国大陆
语言: 汉语普通话
上映日期: 2025-01-29(中国大陆)
片长: 144分钟
又名: 哪吒2 / 哪吒2之魔童闹海 / Ne Zha 2
IMDb: tt34956443
"
info
[1] "\n导演: 饺子\n编剧: 饺子\n主演: 吕艳婷 / 囧森瑟夫 / 瀚墨 / 陈浩 / 绿绮 / 张珈铭 / ...\n类型: 剧情 / 喜剧 / 动画 / 奇幻\n制片国家/地区: 中国大陆\n语言: 汉语普通话\n上映日期: 2025-01-29(中国大陆)\n片长: 144分钟\n又名: 哪吒2 / 哪吒2之魔童闹海 / Ne Zha 2\nIMDb: tt34956443\n"
cat(info)

导演: 饺子
编剧: 饺子
主演: 吕艳婷 / 囧森瑟夫 / 瀚墨 / 陈浩 / 绿绮 / 张珈铭 / ...
类型: 剧情 / 喜剧 / 动画 / 奇幻
制片国家/地区: 中国大陆
语言: 汉语普通话
上映日期: 2025-01-29(中国大陆)
片长: 144分钟
又名: 哪吒2 / 哪吒2之魔童闹海 / Ne Zha 2
IMDb: tt34956443

【探索发现】如何提取电影变量?

  • 如何从原始文本数据中提取:
    • 导演:“饺子”
    • 类型:“剧情 / 喜剧 / 动画 / 奇幻”
    • 片长:“144”
    • 上映日期:“2025-01-29”
str_extract(info, "(?<=导演: ).*(?=\\n)")
[1] "饺子"
str_extract(info, "(?<=类型: ).*(?=\\n)")
[1] "剧情 / 喜剧 / 动画 / 奇幻"
str_extract(info, "(?<=类型: ).*(?=\\n)") %>%
  str_split(" / ")
[[1]]
[1] "剧情" "喜剧" "动画" "奇幻"
str_extract(info, "(?<=片长: ).*(?=分钟\\n)")
[1] "144"
str_extract(info, "(?<=上映日期: ).*(?=\\n)")
[1] "2025-01-29(中国大陆)"
str_extract(info, "(?<=上映日期: ).*(?=\\n)") %>%
  str_extract("\\d{4}-\\d{2}-\\d{2}")
[1] "2025-01-29"
str_extract(info, "(?<=上映日期: ).*(?=\\n)") %>%
  str_extract("\\d{4}-\\d{2}-\\d{2}") %>%
  str_remove_all("-")
[1] "20250129"

【探索发现】如何统计《心理学报》历届编委会成员频次?

《心理学报》编委会:https://journal.psych.ac.cn/xlxb/CN/column/column3.shtml

url = "https://journal.psych.ac.cn/xlxb/CN/column/column3.shtml"
xml = read_html(url)
text = xml %>% html_element(".content_nr li") %>% html_text()
text %>% str_split("\\s{3,}") %>% unlist()
  [1] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  [2] "主编:"                                                                                                                                                                                                                                                                                                                                                                                                                                            
  [3] "傅小兰(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
  [4] "副主编:"                                                                                                                                                                                                                                                                                                                                                                                                                                          
  [5] "蔡华俭(美国俄克拉荷马大学心理学系)"                                                                                                                                                                                                                                                                                                                                                                                                              
  [6] "丁锦红(首都师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
  [7] "甘怡群(北京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
  [8] "郭秀艳(复旦大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
  [9] "刘  勋(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [10] "龙立荣(华中科技大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [11] "王穗苹(华南师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [12] "谢晓非(北京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [13] "编委:"                                                                                                                                                                                                                                                                                                                                                                                                                                            
 [14] "陈楚侨(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [15] "陈传升(University of California, Irvine, USA)"                                                                                                                                                                                                                                                                                                                                                                                                   
 [16] "陈  红(西南大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [17] "陈庆荣(南京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [18] "戴先炽(香港中文大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [19] "杜  峰(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [20] "杜  忆(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [21] "方晓义(北京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [22] "付秋芳(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [23] "龚平原(西北大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [24] "管  健(南开大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [25] "韩布新(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [26] "贺  伟(南京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [27] "胡晓晴(香港大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [28] "蒋  毅(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [29] "蒯曙光(华东师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [30] "李超平(中国人民大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [31] "李  健(北京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [32] "李  康(University of Toronto, Canada)"                                                                                                                                                                                                                                                                                                                                                                                                           
 [33] "李寿欣(山东师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [34] "李文东(香港中文大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [35] "李兴珊(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [36] "李永娟(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [37] "连  榕(福建师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [38] "刘  超(北京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [39] "刘  力(北京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [40] "刘  文(辽宁师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [41] "陆佳芳(香港教育大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [42] "栾胜华(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [43] "苗丹民(空军军医大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [44] "穆  妍(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [45] "秦绍正(北京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [46] "邱炳武(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [47] "任志洪(华中师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [48] "苏彦捷(北京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [49] "涂艳苹(香港理工大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [50] "王  力(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [51] "王玮文(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [52] "王晓田(香港中文大学〔深圳〕)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [53] "王振宏(陕西师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [54] "温忠麟(华南师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [55] "吴艳红(北京大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [56] "辛  涛(北京师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [57] "辛自强(中国人民大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [58] "徐  岚(武汉大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [59] "阎书昌(河北师范大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [60] "喻  丰(武汉大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [61] "张  丹(清华大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [62] "张  雷(澳门大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [63] "张力为(北京体育大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [64] "张清芳(中国人民大学)"                                                                                                                                                                                                                                                                                                                                                                                                                            
 [65] "张向阳(中国科学院心理研究所)"                                                                                                                                                                                                                                                                                                                                                                                                                    
 [66] "郑晓明(清华大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [67] "郑晓莹(中山大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [68] "周国梅(中山大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [69] "周欣悦(浙江大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [70] "周永迪(深圳大学)"                                                                                                                                                                                                                                                                                                                                                                                                                                
 [71] "编辑部:李金珍  曾敏  邱炳武"                                                                                                                                                                                                                                                                                                                                                                                                                      
 [72] "第十一届编委会(2018-2021)"                                                                                                                                                                                                                                                                                                                                                                                                                       
 [73] "主编:李纾"                                                                                                                                                                                                                                                                                                                                                                                                                                        
 [74] "副主编:白学军、蔡华俭、郭秀艳、刘勋、龙立荣、沈模卫、谢晓非、许燕"                                                                                                                                                                                                                                                                                                                                                                                
 [75] "编委:陈传升、陈红、陈欣银、丁锦红、杜峰、杜忆、傅世敏、甘怡群、韩布新、韩在柱、胡晓晴、蒋毅、李东进、李健、李康、李文东、李永娟、连榕、刘嘉、栾胜华、罗跃嘉、苗丹民、邱炳武、任志洪、隋南、涂艳苹、王辉、王力、王穗苹、王晓田、王益文、温忠麟、翁旭初、吴艳红、辛涛、徐岚、薛贵、阎书昌、杨百寅、叶铮、游旭群、张积家、张力为、张向阳、周晓林、周欣悦、周永迪、朱莉琪、邹泓"                                                                      
 [76] "第十届编委会(2014-2017)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [77] "主编:张侃"                                                                                                                                                                                                                                                                                                                                                                                                                                        
 [78] "副主编:冯海岚、侯杰泰、李纾、舒华、苏彦捷、游旭群、张建新"                                                                                                                                                                                                                                                                                                                                                                                        
 [79] "编委:白学军、蔡华俭、陈欣银、符国群、傅世敏、郭本禹、郭春彦、郭秀艳、韩布新、韩在柱、江光荣、蒋毅、康萤仪、乐国安、李兴珊、连榕、刘嘉、刘勋、龙立荣、罗劲、罗跃嘉、苗丹民、区永东、钱铭怡、邱炳武、沈模卫、隋南、王辉、王穗苹、王晓田、翁旭初、吴艳红、谢晓非、辛涛、许燕、严进、阎书昌、杨百寅、余嘉元、张积家、张结海、张雷、张庆林、张志学、周晓林、周永迪、朱莉琪、邹泓"                                                                      
 [80] "第九届编委会(2010-2013)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [81] "主编:林文娟"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [82] "副主编:张妙清、韩世辉、舒华、叶浩生、张建新"                                                                                                                                                                                                                                                                                                                                                                                                      
 [83] "编委:白学军、陈钧承、张雷、陈瑞燕、陈晓萍、陈欣银、赵志裕、董奇、傅世敏、傅小兰、郭春彦、韩在柱、侯杰泰、何生、江光荣、梁觉、李兴珊、李纾、罗劲、罗跃嘉、Lars-Goran\r\nNILLSON、Richard E. NISBETT、Kurt PAWLIK、彭凯平、钱铭怡、邱炳武、沈模卫、申继亮、Henderikus\r\nJ. STAM、苏彦捷、隋南、Anne TREISMAN, 王登峰、王辉、翁旭初、谢晓非、许燕、严进、杨治良、游旭群、余嘉元、乐国安、张积家、张结海、张侃、张庆林、张志学、周晓林、朱莉琪、邹泓"
 [84] "第八届编委会(2006-2009)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [85] "主编:杨玉芳"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [86] "副主编:张妙清、韩世辉、林崇德、叶浩生、张侃"                                                                                                                                                                                                                                                                                                                                                                                                      
 [87] "编委:张雷、陈烜之、陈欣银、陈永明、方富熹、葛小佳、郭春彦、侯杰泰、何生、黄希庭、梁永亮、李纾、林文娟、凌文辁、罗劲、莫雷、Lars-Goran Nillson、Richard E. Nisbett、Kurt Pawlik、钱铭怡、邱炳武、沈德立、申继亮、舒华、Henderikus J. Stam、苏彦捷、Anne Treisman、王登峰、王重鸣、杨治良、余嘉元、乐国安、张建新、张志学"                                                                                                                          
 [88] "第七届编委会(2002-2005)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [89] "主编:陈永明"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [90] "副主编:王甦、朱滢、张侃、陈烜之、林崇德"                                                                                                                                                                                                                                                                                                                                                                                                          
 [91] "编委:王甦、王重鸣、车文博、方富熹、申继亮、叶浩生、朱滢、杨玉芳、张妙清、张侃、乐国安、沈政、沈德立、陈永明、陈烜之、邱炳武、林仲贤、林崇德、凌文辁、莫雷、梁永亮、黄希庭、舒华、钱铭怡、韩世辉、管林初"                                                                                                                                                                                                                                          
 [92] "第六届编委会(1998-2001)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [93] "主编:林仲贤"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [94] "副主编:王甦、陈永明、陈烜之、林崇德、管林初"                                                                                                                                                                                                                                                                                                                                                                                                      
 [95] "编委:王甦、王重鸣、车文博、方富熹、朱滢、汤盛钦、杨玉芳、杨鑫辉、张必隐、张妙清、沈政、沈德立、陈永明、陈烜之、林仲贤、林崇德、凌文辁、莫雷、黄希庭、梁觉、梁展鹏、彭聃龄、管林初、魏明庠"                                                                                                                                                                                                                                                        
 [96] "第五届编委会(1994-1997)"                                                                                                                                                                                                                                                                                                                                                                                                                         
 [97] "主编:匡培梓"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [98] "副主编:林仲贤、朱滢、彭聃龄"                                                                                                                                                                                                                                                                                                                                                                                                                      
 [99] "编委:王甦、车文博、方富熹、朱滢、朱祖祥、匡培梓、许尚侠、汤盛钦、李心天、沈德立、沈德灿、陈永明、林仲贤、林崇德、凌文辁、章志光、黄希庭、魏明庠"                                                                                                                                                                                                                                                                                                  
[100] "第四届编委会(1990-1993)"                                                                                                                                                                                                                                                                                                                                                                                                                         
[101] "主编:徐联仓"                                                                                                                                                                                                                                                                                                                                                                                                                                      
[102] "副主编:王甦、张厚粲、林仲贤"                                                                                                                                                                                                                                                                                                                                                                                                                      
[103] "编委:王甦、车文博、许政援、匡培梓、李心天、朱祖祥、陈永明、张厚粲、杨治良、沈德灿、林崇德、林仲贤、徐联仓、章志光、黄希庭、赖昌贵、魏明庠"                                                                                                                                                                                                                                                                                                        
[104] "第三届编委会(1985-1989)"                                                                                                                                                                                                                                                                                                                                                                                                                         
[105] "主编:徐联仓"                                                                                                                                                                                                                                                                                                                                                                                                                                      
[106] "副主编:孙晔、张厚粲、孟昭兰"                                                                                                                                                                                                                                                                                                                                                                                                                      
[107] "编委:车文博、左梦兰、李心天、朱祖祥、邵郊、沈德灿、林传鼎、荆其诚、章志光、黄希庭、赖昌贵、缪小春"                                                                                                                                                                                                                                                                                                                                                
[108] "第二届编委会(1979-1984)"                                                                                                                                                                                                                                                                                                                                                                                                                         
[109] "主编:潘菽"                                                                                                                                                                                                                                                                                                                                                                                                                                        
[110] "编委:潘菽、刘兆吉、刘范、孙晔、朱智贤、李心天、何玉琨、陈元晖、陈立、林传鼎、邵郊、张述祖、张厚粲、荆其诚、胡寄南、徐联仓、郭占基、高觉敷、彭祖智"                                                                                                                                                                                                                                                                                                
[111] "第一届编委会(1956-1966)"                                                                                                                                                                                                                                                                                                                                                                                                                         
[112] "主编:曹日昌"                                                                                                                                                                                                                                                                                                                                                                                                                                      
[113] "副主编:陈元晖"                                                                                                                                                                                                                                                                                                                                                                                                                                    
[114] "编委:曹日昌、陈元晖、朱智贤、吴江霖、唐钺"                                                                                                                                                                                                                                                                                                                                                                                                        
[115] ""                                                                                                                                                                                                                                                                                                                                                                                                                                                  
text %>%
  str_split("\\s{3,}") %>%
  unlist() %>%
  str_extract("(?<=主编:|副主编:|编委:).*|.*(?=()") %>%
  str_split("、") %>%
  unlist() %>%
  na.omit() %>%
  str_remove_all("\\s") %>%
  str_subset("编委会|[a-z]|^$", negate=TRUE) %>%
  Freq(sort="-")
Frequency Statistics:
─────────────
        N   %
─────────────
陈永明  7 1.8
林崇德  7 1.8
林仲贤  7 1.8
王甦    7 1.8
黄希庭  6 1.5
车文博  5 1.3
陈烜之  5 1.3
邱炳武  5 1.3
朱滢    5 1.3
陈欣银  4 1.0
方富熹  4 1.0
李纾    4 1.0
李心天  4 1.0
凌文辁  4 1.0
沈德立  4 1.0
舒华    4 1.0
徐联仓  4 1.0
张厚粲  4 1.0
张侃    4 1.0
张雷    4 1.0
张妙清  4 1.0
白学军  3 0.8
蔡华俭  3 0.8
陈元晖  3 0.8
傅世敏  3 0.8
管林初  3 0.8
郭春彦  3 0.8
郭秀艳  3 0.8
韩布新  3 0.8
韩世辉  3 0.8
韩在柱  3 0.8
侯杰泰  3 0.8
蒋毅    3 0.8
匡培梓  3 0.8
乐国安  3 0.8
李兴珊  3 0.8
连榕    3 0.8
刘勋    3 0.8
龙立荣  3 0.8
罗劲    3 0.8
罗跃嘉  3 0.8
苗丹民  3 0.8
莫雷    3 0.8
钱铭怡  3 0.8
沈德灿  3 0.8
苏彦捷  3 0.8
王穗苹  3 0.8
王晓田  3 0.8
王重鸣  3 0.8
魏明庠  3 0.8
吴艳红  3 0.8
谢晓非  3 0.8
辛涛    3 0.8
阎书昌  3 0.8
杨玉芳  3 0.8
叶浩生  3 0.8
张建新  3 0.8
章志光  3 0.8
周永迪  3 0.8
朱祖祥  3 0.8
曹日昌  2 0.5
陈传升  2 0.5
陈红    2 0.5
丁锦红  2 0.5
杜峰    2 0.5
杜忆    2 0.5
傅小兰  2 0.5
甘怡群  2 0.5
何生    2 0.5
胡晓晴  2 0.5
江光荣  2 0.5
荆其诚  2 0.5
赖昌贵  2 0.5
李健    2 0.5
李康    2 0.5
李文东  2 0.5
李永娟  2 0.5
梁觉    2 0.5
梁永亮  2 0.5
林传鼎  2 0.5
林文娟  2 0.5
刘嘉    2 0.5
栾胜华  2 0.5
潘菽    2 0.5
彭聃龄  2 0.5
任志洪  2 0.5
邵郊    2 0.5
申继亮  2 0.5
沈模卫  2 0.5
沈政    2 0.5
隋南    2 0.5
孙晔    2 0.5
汤盛钦  2 0.5
涂艳苹  2 0.5
王辉    2 0.5
王力    2 0.5
温忠麟  2 0.5
翁旭初  2 0.5
徐岚    2 0.5
许燕    2 0.5
杨百寅  2 0.5
杨治良  2 0.5
游旭群  2 0.5
余嘉元  2 0.5
张积家  2 0.5
张力为  2 0.5
张向阳  2 0.5
张志学  2 0.5
周晓林  2 0.5
周欣悦  2 0.5
朱莉琪  2 0.5
朱智贤  2 0.5
邹泓    2 0.5
陈楚侨  1 0.3
陈钧承  1 0.3
陈立    1 0.3
陈庆荣  1 0.3
陈瑞燕  1 0.3
陈晓萍  1 0.3
戴先炽  1 0.3
董奇    1 0.3
方晓义  1 0.3
冯海岚  1 0.3
符国群  1 0.3
付秋芳  1 0.3
高觉敷  1 0.3
葛小佳  1 0.3
龚平原  1 0.3
管健    1 0.3
郭本禹  1 0.3
郭占基  1 0.3
何玉琨  1 0.3
贺伟    1 0.3
胡寄南  1 0.3
康萤仪  1 0.3
蒯曙光  1 0.3
李超平  1 0.3
李东进  1 0.3
李寿欣  1 0.3
梁展鹏  1 0.3
刘超    1 0.3
刘范    1 0.3
刘力    1 0.3
刘文    1 0.3
刘兆吉  1 0.3
陆佳芳  1 0.3
孟昭兰  1 0.3
缪小春  1 0.3
穆妍    1 0.3
彭祖智  1 0.3
秦绍正  1 0.3
区永东  1 0.3
唐钺    1 0.3
王登峰  1 0.3
王玮文  1 0.3
王益文  1 0.3
王振宏  1 0.3
吴江霖  1 0.3
辛自强  1 0.3
许尚侠  1 0.3
许政援  1 0.3
薛贵    1 0.3
严进    1 0.3
杨鑫辉  1 0.3
叶铮    1 0.3
喻丰    1 0.3
张必隐  1 0.3
张丹    1 0.3
张结海  1 0.3
张清芳  1 0.3
张庆林  1 0.3
张述祖  1 0.3
赵志裕  1 0.3
郑晓明  1 0.3
郑晓莹  1 0.3
周国梅  1 0.3
左梦兰  1 0.3
─────────────
Total N = 389

正则表达式在社会科学研究中有什么用?

现在的社会科学研究越来越依赖大数据和文本分析,经常要和海量文本打交道:10万条微博、5万份问卷、几百年的历史档案……正则表达式就是处理文本数据的“神兵利器”。

  1. 清洗和整理数据(数据“洗澡”)

从网上爬下来的数据经常很“脏”:夹杂着广告代码、乱码、多余的空格。正则表达式可以一键把这些垃圾清理掉,留下干净的文字。原本需要手动清理几万条数据,可能需要一个团队干一周;现在用几行正则表达式代码,几秒钟就能完成,而且准确率极高。

  1. 提取文本中信息(信息“采矿”)

比如你想研究“幸福感”这个词在社交媒体上的用法。正则表达式可以帮你找出所有包含“幸福”的句子,并且自动把“幸福”前面是谁在说(比如“我觉得幸福”“他感到幸福”)提取出来,又快又准。

  1. 内容分析与编码(将文字变数据)

社会科学研究经常需要对文本进行分类和编码。比如,你想分析新闻报道对某个社会事件的态度是“正面”、“负面”还是“中立”。可以先设定好规则,比如包含“赞赏”、“支持”、“成功”等词的归为“正面”,包含“反对”、“批评”、“问题”等词的归为“负面”。然后,正则表达式就能自动扫描所有文章,并根据这些关键词的出现情况,给每一篇文章贴上“态度”标签。几秒钟就能把几万条帖子分类完毕,这不仅比人工阅读编码快无数倍,而且标准完全统一,避免了因为研究者疲劳或个人主观判断带来的误差。它让定性研究可以拥有定量分析的规模。

正则表达式图解(图片源自网络)
正则表达式图解(图片源自网络)

【知识点】正则表达式

正则表达式 / 规律表达式(regular/pattern expression,RegEx)

简单来说,正则表达式就是一套用来描述文本规则的“密码”。它用一些特殊符号(比如*+?[])组合成“指令”,让电脑按照这些规则去文本的海洋里精准地找到你想要的内容(比如一定要是“蓝色”之后紧跟的“汽车”,而不是“红色汽车”)。

  • 含义:描述字符串规律(模式)的表达式
  • 用途:根据模式,匹配字符(自动处理文本)
    • “大海捞针”(词频统计):从海量的文本数据里,快速找到符合特定模式的字词、句子或段落
    • “点石成金”(数据清洗):找到之后,可以对这些内容进行批量的修改、删除、替换或提取,整理成数据分析所需要的格式
    • “去伪存真”(条件判断):还可以用来检查信息格式是否正确,比如手机号码是不是11位、邮箱地址里有没有“@”符号等
  • 正则表达式的“密码”其实很有逻辑,也很好理解,比如:
    • \d:代表“任何一个数字”(0-9),就像在说“给我找一个数字”
    • [a-z]:代表“任何一个英文小写字母”,就像在说“给我找一个小写字母”
    • *:代表“前面的东西可以出现零次或多次”,就像在说“这个模式可以重复无数次”
    • +:代表“前面的东西至少出现一次”,就像在说“这个模式至少要出现一次”
    • .:代表“任何一个字符”(除了换行符),就像一张万能牌,可以代替任何一个字符

一旦学会,你就拥有了一种神奇的能力:别人还在一条条复制粘贴、肉眼搜索的时候,你已经可以喝着咖啡,轻松看着电脑帮你把几万条甚至几百万条文本数据在几秒之内自动整理好。这就是正则表达式的魅力——把繁琐的手工劳动,变成自动化的“魔法”。

(1)字符匹配

【实践1】字符匹配

text = "笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。"
cat(text)
笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。
str_extract_all(text, "SPSS")  # 完整字符串
[[1]]
[1] "SPSS"
str_extract_all(text, "SPSS|Spss")  # "|"表示或者
[[1]]
[1] "SPSS" "Spss"
str_extract_all(text, "[SPSS|spss]")  # 思考:为什么?
[[1]]
 [1] "S" "P" "S" "S" "S" "p" "S" "S" "S" "p" "s" "s" "S" "p" "s" "S"
str_extract_all(text, "[SsPp]")
[[1]]
 [1] "S" "P" "S" "S" "S" "p" "S" "S" "S" "p" "s" "s" "S" "p" "s" "S"
str_extract_all(text, "[Ss][Pp][Ss][Ss]")
[[1]]
[1] "SPSS" "SpSS" "Spss" "SpsS"
str_extract_all(text, "\\d")
[[1]]
[1] "2" "2" "2" "0" "6" "4" "3" "2"
str_extract_all(text, "\\d\\d")
[[1]]
[1] "22" "20" "64" "32"
str_extract_all(text, "\\d\\d位")
[[1]]
[1] "64位" "32位"

(2)条件匹配

【实践2】条件匹配

text = "笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。"
cat(text)
笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。
str_extract_all(text, "\\d{2}位")
[[1]]
[1] "64位" "32位"
str_extract_all(text, "[SsPp]{4}")
[[1]]
[1] "SPSS" "SpSS" "Spss" "SpsS"
str_extract_all(text, "[SP]{4}")
[[1]]
[1] "SPSS"
str_extract_all(text, "[Sps]+")
[[1]]
[1] "S"    "SS"   "SpSS" "Spss" "SpsS"
str_extract_all(text, "(Sps)+")
[[1]]
[1] "Sps" "Sps"
str_extract_all(text, "Sps+")
[[1]]
[1] "Spss" "Sps" 

(3)预查匹配

【实践3】预查匹配

text = "笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。"
cat(text)
笔记本上安装SPSS22或20,授权码复制不上,导致安装失败。已经试了多次了,都安装不上SpSS,请问有遇到这种情况的吗?电脑是64位的,Spss是32位的,是这个原因吗?之前SpsS在其他笔记本和台式电脑上都安装成功了。
str_extract_all(text, "\\d{2}位")
[[1]]
[1] "64位" "32位"
str_extract_all(text, "\\d{2}(?=位)")  # 后向肯定预查
[[1]]
[1] "64" "32"
str_extract_all(text, "\\d{2}(?!位)")  # 后向否定预查
[[1]]
[1] "22" "20"
str_extract_all(text, "(?<=SPSS)\\d{2}")  # 前向肯定预查
[[1]]
[1] "22"
str_extract_all(text, "(?<!SPSS)\\d{2}")  # 前向否定预查
[[1]]
[1] "20" "64" "32"

字符串处理实战

stringr

  • 共同参数
    • string:字符串输入
    • pattern:正则表达式
  • 常用函数
    • 判断:str_detect()
    • 计数:str_count()
    • 提取:str_extract()str_extract_all()
    • 替换:str_replace()str_replace_all()
    • 删除:str_remove()str_remove_all()
    • 分割:str_split()
    • 向量取匹配子集:str_subset()

【实践4】字符串综合处理

## 数据采集
## 已加载rvest包:library(rvest)
url = "https://psy.ecnu.edu.cn/17437/list.htm"  # 学院师资队伍页面
xml = url %>% read_html()  # 读取网页所有信息
xml
{html_document}
<html class="webplus-list">
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 ...
[2] <body class="wp-column-page">\r\n<!--头部开始-->\r\n<header class="wp-wrapper ...
[3] <script type="text/javascript" src="/_upload/tpl/0b/a5/2981/template2981/ ...
[4] <script type="text/javascript">\r\n$(function(){\r\n\t// 初始化SDAPP\r\n\tne ...
## 字符串处理(1):院系名称
menu = xml %>% html_elements(".column-item-link .column-name") %>% html_text2()
menu
 [1] "各级人才工程"               "认知与神经科学系"          
 [3] "毕生发展与学习科学系"       "社会与管理心理学系"        
 [5] "健康与临床心理学系"         "人工智能与人因工程系(筹)"
 [7] "实验员/专任助理研究员"      "党政管理"                  
 [9] "兼职教师"                   "全职博士后"                
[11] "荣休教师"                   "永远怀念教师名录"          
str_subset(menu, "系")
[1] "认知与神经科学系"           "毕生发展与学习科学系"      
[3] "社会与管理心理学系"         "健康与临床心理学系"        
[5] "人工智能与人因工程系(筹)"
str_subset(menu, "系$")
[1] "认知与神经科学系"     "毕生发展与学习科学系" "社会与管理心理学系"  
[4] "健康与临床心理学系"  
str_subset(menu, ".*系$")
[1] "认知与神经科学系"     "毕生发展与学习科学系" "社会与管理心理学系"  
[4] "健康与临床心理学系"  
str_subset(menu, ".*(?=系$)")  # 只是取子集,并不能预查提取
[1] "认知与神经科学系"     "毕生发展与学习科学系" "社会与管理心理学系"  
[4] "健康与临床心理学系"  
str_extract(menu, ".*(?=系$)")  # 真正的预查提取
 [1] NA                   "认知与神经科学"     "毕生发展与学习科学"
 [4] "社会与管理心理学"   "健康与临床心理学"   NA                  
 [7] NA                   NA                   NA                  
[10] NA                   NA                   NA                  
str_extract(menu, ".*(?=系$)") %>% na.omit()  # 移除缺失值NA
[1] "认知与神经科学"     "毕生发展与学习科学" "社会与管理心理学"  
[4] "健康与临床心理学"  
attr(,"na.action")
[1]  1  6  7  8  9 10 11 12
attr(,"class")
[1] "omit"
## 字符串处理(2):人才计划
title = xml %>% html_elements(".subcolumn-name") %>% html_text2()
title
 [1] "华东师范大学特聘教授"     "国家级人才项目"          
 [3] "国家级青年人才项目"       "中国科协托举人才"        
 [5] "教育部新世纪人才"         "上海市曙光学者"          
 [7] "上海市浦江学者"           "上海市青年科技启明星项目"
 [9] "上海市晨光计划"           "上海市扬帆计划"          
str_subset(title, "人才")
[1] "国家级人才项目"     "国家级青年人才项目" "中国科协托举人才"  
[4] "教育部新世纪人才"  
str_subset(title, "人才$")
[1] "中国科协托举人才" "教育部新世纪人才"
str_subset(title, "上海市.*")
[1] "上海市曙光学者"           "上海市浦江学者"          
[3] "上海市青年科技启明星项目" "上海市晨光计划"          
[5] "上海市扬帆计划"          
str_subset(title, "^上海市")
[1] "上海市曙光学者"           "上海市浦江学者"          
[3] "上海市青年科技启明星项目" "上海市晨光计划"          
[5] "上海市扬帆计划"          
str_extract(title, "(?<=^上海市).*(?=学者$|计划$)") %>% na.omit()
[1] "曙光" "浦江" "晨光" "扬帆"
attr(,"na.action")
[1] 1 2 3 4 5 8
attr(,"class")
[1] "omit"
## 字符串处理(3):教师姓名
name = xml %>% html_elements(".column-news-title") %>% html_text2()
name
 [1] "周晓林 博士"   "蒯曙光 博士"   "周晓林 博士"   "蔡清 博士"    
 [5] "郝宁 博士"     "蒯曙光 博士"   "高晓雪 博士"   "罗艺 博士"    
 [9] "崔丽娟 博士"   "刘永芳 博士"   "庞维国 博士"   "郝宁 博士"    
[13] "刘俊升 博士"   "陆静怡 博士"   "蔡清 博士"     "包寒吴霜 博士"
[17] "李先春 博士"   "刘俊升 博士"   "孟慧 博士"     "庞维国 博士"  
[21] "宋永宁博士"    "王弘毅 博士"   "王青 博士"     "席居哲 博士"  
[25] "谢鑫宇博士"    "周宁宁 博士"   "张琪 博士"     "包寒吴霜 博士"
[29] "梁一鸣 博士"   "陆静怡 博士"   "王青 博士"     "杨莹 博士"    
[33] "周晗昱 博士"   "陈 曦 博士"    "梁一鸣 博士"   "李世佳 博士"  
[37] "杨莹 博士"     "周晗昱 博士"  
table(name)
name
包寒吴霜 博士     蔡清 博士    陈 曦 博士   崔丽娟 博士   高晓雪 博士 
            2             2             1             1             1 
    郝宁 博士   蒯曙光 博士   李世佳 博士   李先春 博士   梁一鸣 博士 
            2             2             1             1             2 
  刘俊升 博士   刘永芳 博士   陆静怡 博士     罗艺 博士     孟慧 博士 
            2             1             2             1             1 
  庞维国 博士    宋永宁博士   王弘毅 博士     王青 博士   席居哲 博士 
            2             1             1             2             1 
   谢鑫宇博士     杨莹 博士     张琪 博士   周晗昱 博士   周宁宁 博士 
            1             2             1             2             1 
  周晓林 博士 
            2 
unique(name)
 [1] "周晓林 博士"   "蒯曙光 博士"   "蔡清 博士"     "郝宁 博士"    
 [5] "高晓雪 博士"   "罗艺 博士"     "崔丽娟 博士"   "刘永芳 博士"  
 [9] "庞维国 博士"   "刘俊升 博士"   "陆静怡 博士"   "包寒吴霜 博士"
[13] "李先春 博士"   "孟慧 博士"     "宋永宁博士"    "王弘毅 博士"  
[17] "王青 博士"     "席居哲 博士"   "谢鑫宇博士"    "周宁宁 博士"  
[21] "张琪 博士"     "梁一鸣 博士"   "杨莹 博士"     "周晗昱 博士"  
[25] "陈 曦 博士"    "李世佳 博士"  
name %>% unique() %>% sort()
 [1] "包寒吴霜 博士" "蔡清 博士"     "陈 曦 博士"    "崔丽娟 博士"  
 [5] "高晓雪 博士"   "郝宁 博士"     "蒯曙光 博士"   "李世佳 博士"  
 [9] "李先春 博士"   "梁一鸣 博士"   "刘俊升 博士"   "刘永芳 博士"  
[13] "陆静怡 博士"   "罗艺 博士"     "孟慧 博士"     "庞维国 博士"  
[17] "宋永宁博士"    "王弘毅 博士"   "王青 博士"     "席居哲 博士"  
[21] "谢鑫宇博士"    "杨莹 博士"     "张琪 博士"     "周晗昱 博士"  
[25] "周宁宁 博士"   "周晓林 博士"  
name %>% unique() %>% sort() %>% str_remove_all("博士|\\s")
 [1] "包寒吴霜" "蔡清"     "陈曦"     "崔丽娟"   "高晓雪"   "郝宁"    
 [7] "蒯曙光"   "李世佳"   "李先春"   "梁一鸣"   "刘俊升"   "刘永芳"  
[13] "陆静怡"   "罗艺"     "孟慧"     "庞维国"   "宋永宁"   "王弘毅"  
[19] "王青"     "席居哲"   "谢鑫宇"   "杨莹"     "张琪"     "周晗昱"  
[25] "周宁宁"   "周晓林"  
name %>%
  unique() %>%
  sort() %>%
  str_remove_all("博士|\\s") %>%
  str_subset("宁")
[1] "郝宁"   "宋永宁" "周宁宁"
name %>%
  unique() %>%
  sort() %>%
  str_remove_all("博士|\\s") %>%
  str_subset("^赵|^钱|^孙|^李")  # 赵钱孙李,周吴郑王
[1] "李世佳" "李先春"
name %>%
  unique() %>%
  sort() %>%
  str_remove_all("博士|\\s") %>%
  str_subset("^[周吴郑王]")  # 赵钱孙李,周吴郑王
[1] "王弘毅" "王青"   "周晗昱" "周宁宁" "周晓林"
## 补充:字符向量 vs. 固定位置字符提取
"Psychology"[1]  # 长度为1的字符向量,[1]仍然是字符串,而不是第1个字母
[1] "Psychology"
str_sub("Psychology", 1, 1)  # 提取第1个字母
[1] "P"
str_sub("Psychology", 1, 5)  # 提取第1~5个字母
[1] "Psych"
## 导入在线数据(douban_movies.RData)
data = import("https://psychbruce.github.io/RCourse/data/douban_movies.RData")
dt = as.data.table(data)

课堂实战练习(问题解决导向的学习):

  • 从电影标题变量(title)提取电影的上映年份
  • 选取带有0~9数字的电影标题
  • 选取带有年份数字的电影标题
  • 选取模式为“高考1977”的电影标题
  • ……

【探索发现】stringr包的函数功能

  • 检测匹配

  • 子集提取

  • 长度控制

  • 替换修改

  • 拼接分割

【作业5】字符向量处理

作业要求:

  • 围绕stringr包提供的字符串示例数据fruit(80个水果名称),运用str_detect()str_subset()str_extract_all()str_replace_all()stringr包函数中的至少2个,任意完成至少2种字符串处理任务,并对代码和结果进行简单的注释和解读
  • 使用R Markdown完成,运行渲染得到本地HTML网页文件

平台提交:

  • 运行得到HTML网页文件的关键部分截图(只需上传截图)
## 附:作业需要用到的数据集(字符向量)
stringr::fruit
 [1] "apple"             "apricot"           "avocado"          
 [4] "banana"            "bell pepper"       "bilberry"         
 [7] "blackberry"        "blackcurrant"      "blood orange"     
[10] "blueberry"         "boysenberry"       "breadfruit"       
[13] "canary melon"      "cantaloupe"        "cherimoya"        
[16] "cherry"            "chili pepper"      "clementine"       
[19] "cloudberry"        "coconut"           "cranberry"        
[22] "cucumber"          "currant"           "damson"           
[25] "date"              "dragonfruit"       "durian"           
[28] "eggplant"          "elderberry"        "feijoa"           
[31] "fig"               "goji berry"        "gooseberry"       
[34] "grape"             "grapefruit"        "guava"            
[37] "honeydew"          "huckleberry"       "jackfruit"        
[40] "jambul"            "jujube"            "kiwi fruit"       
[43] "kumquat"           "lemon"             "lime"             
[46] "loquat"            "lychee"            "mandarine"        
[49] "mango"             "mulberry"          "nectarine"        
[52] "nut"               "olive"             "orange"           
[55] "pamelo"            "papaya"            "passionfruit"     
[58] "peach"             "pear"              "persimmon"        
[61] "physalis"          "pineapple"         "plum"             
[64] "pomegranate"       "pomelo"            "purple mangosteen"
[67] "quince"            "raisin"            "rambutan"         
[70] "raspberry"         "redcurrant"        "rock melon"       
[73] "salal berry"       "satsuma"           "star fruit"       
[76] "strawberry"        "tamarillo"         "tangerine"        
[79] "ugli fruit"        "watermelon"       

返回课程主页

© 包寒吴霜

LS0tDQp0aXRsZTogIuOAilLor63oqIDjgIvnrKw056ug77ya5a2X56ym5aSE55CGIg0Kc3VidGl0bGU6IDxhIGhyZWY9Imh0dHBzOi8vcHN5Y2hicnVjZS5naXRodWIuaW8vUkNvdXJzZS8iPui/lOWbnuivvueoi+S4u+mhtTwvYT4NCmF1dGhvcjogIuaOiOivvuaVmeW4iO+8muWMheWvkuWQtOmcnCINCiMgZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogMw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogZmFsc2UNCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGFuY2hvcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCiAgICBjc3M6IFJtZENTUy5jc3MNCi0tLQ0KDQpgYGB7PWh0bWx9DQo8cCBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij7niYjmnYPlo7DmmI7vvJrmnKzlpZfor77nqIvmnZDmlpnlvIDmupDvvIzkvb/nlKjlkozliIbkuqvlv4XpobvpgbXlrojjgIzliJvkvZzlhbHnlKjorrjlj6/ljY/orq4gQ0MgQlktTkMtU0HjgI3vvIjmnaXmupDlvJXnlKgt6Z2e5ZWG5Lia55So6YCU5L2/55SoLeS7peebuOWQjOaWueW8j+WFseS6q++8ieOAgjxpbWcgc3JjPSJpbWcvQ0MtQlktTkMtU0EuanBnIiB3aWR0aD0iMTIwcHgiIGhlaWdodD0iNDJweCIgc3R5bGU9ImZsb2F0OiByaWdodCIgLz48L3A+DQpgYGANCg0KYGBge3IgQ29uZmlnLCBpbmNsdWRlPUZBTFNFfQ0Kb3B0aW9ucygNCiAga25pdHIua2FibGUuTkEgPSAiIiwNCiAgZGlnaXRzID0gNA0KKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBjb21tZW50ID0gIiIsDQogIGZpZy53aWR0aCA9IDYsDQogIGZpZy5oZWlnaHQgPSA0LA0KICBkcGkgPSAzMDANCikNCmBgYA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBDaGFwMDTvvJrlrZfnrKblpITnkIYNCg0KIyMjIyDlvoDmnJ/opoHngrnlm57pob4NCg0KLSAgIFtDaGFwMDMgXCMg5pWw5o2u5qGG77yIZGF0YSBmcmFtZe+8iV0oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9SQ291cnNlL0NoYXAwMyMlRTYlOTUlQjAlRTYlOEQlQUUlRTYlQTElODZkYXRhLWZyYW1lKXsudXJpfQ0KLSAgIFtDaGFwMDMgXCMg4oCc5LiA56uZ5byP4oCd5pWw5o2u5a+85YWl5a+85Ye6XShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL1JDb3Vyc2UvQ2hhcDAzIyVFNSVBNCU5NiVFOSU4MyVBOCVFNiU5NSVCMCVFNiU4RCVBRSVFNSVBRiVCQyVFNSU4NSVBNSVFNSVBRiVCQyVFNSU4NyVCQSl7LnVyaX0NCg0KIyMjIyDmnKznq6DopoHngrnnm67lvZUNCg0KLSAgIFvjgJDmjqLntKLlj5HnjrDjgJHlpoLkvZXmj5Dlj5bnlLXlvbHlj5jph4/vvJ9dKCPmjqLntKLlj5HnjrDlpoLkvZXmj5Dlj5bnlLXlvbHlj5jph48pDQotICAgW+OAkOaOoue0ouWPkeeOsOOAkeWmguS9lee7n+iuoeOAiuW/g+eQhuWtpuaKpeOAi+WOhuWxiue8luWnlOS8muaIkOWRmOmikeasoe+8n10oI+aOoue0ouWPkeeOsOWmguS9lee7n+iuoeW/g+eQhuWtpuaKpeWOhuWxiue8luWnlOS8muaIkOWRmOmikeasoSkNCi0gICBb44CQ55+l6K+G54K544CR5q2j5YiZ6KGo6L6+5byPXSgj55+l6K+G54K55q2j5YiZ6KGo6L6+5byPKe+8iOmHjeeCue+8iQ0KLSAgIFvjgJDlrp7ot7Ux44CR5a2X56ym5Yy56YWNXSgj5a6e6Le1MeWtl+espuWMuemFjSkNCi0gICBb44CQ5a6e6Le1MuOAkeadoeS7tuWMuemFjV0oI+Wunui3tTLmnaHku7bljLnphY0pDQotICAgW+OAkOWunui3tTPjgJHpooTmn6XljLnphY1dKCPlrp7ot7Uz6aKE5p+l5Yy56YWNKQ0KLSAgIFvjgJDlrp7ot7U044CR5a2X56ym5Liy57u85ZCI5aSE55CGXSgj5a6e6Le1NOWtl+espuS4sue7vOWQiOWkhOeQhinvvIjph43ngrnvvIkNCi0gICBb44CQ5o6i57Si5Y+R546w44CRc3RyaW5ncuWMheeahOWHveaVsOWKn+iDvV0oI+aOoue0ouWPkeeOsHN0cmluZ3LljIXnmoTlh73mlbDlip/og70pDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyMg5pys56ug5omA6ZyAUuWMhQ0KbGlicmFyeShicnVjZVIpDQpsaWJyYXJ5KHN0cmluZ3IpICAjIOWtl+espuS4suWkhOeQhu+8iOWKoOi9vWJydWNlUuaXtuW3sum7mOiupOWKoOi9vXN0cmluZ3LvvIkNCmxpYnJhcnkocnZlc3QpICAjIOe9kee7nOeIrOiZqw0KYGBgDQoNCiMg5q2j5YiZ6KGo6L6+5byP5Z+656GADQoNCiFbPGh0dHBzOi8vbW92aWUuZG91YmFuLmNvbS9zdWJqZWN0LzM0NzgwOTkxLz5dKGltYWdlcy9jbGlwYm9hcmQtMTM4OTc3NDk0LnBuZykNCg0KYGBge3J9DQppbmZvID0gIg0K5a+85ryUOiDppbrlrZANCue8luWJpzog6aW65a2QDQrkuLvmvJQ6IOWQleiJs+WptyAvIOWbp+ajrueRn+WkqyAvIOeAmuWiqCAvIOmZiOa1qSAvIOe7v+e7riAvIOW8oOePiOmTrSAvIC4uLg0K57G75Z6LOiDliafmg4UgLyDllpzliacgLyDliqjnlLsgLyDlpYflubsNCuWItueJh+WbveWuti/lnLDljLo6IOS4reWbveWkp+mZhg0K6K+t6KiAOiDmsYnor63mma7pgJror50NCuS4iuaYoOaXpeacnzogMjAyNS0wMS0yOSjkuK3lm73lpKfpmYYpDQrniYfplb86IDE0NOWIhumSnw0K5Y+I5ZCNOiDlk6rlkJIyIC8g5ZOq5ZCSMuS5i+mtlOerpemXuea1tyAvIE5lIFpoYSAyDQpJTURiOiB0dDM0OTU2NDQzDQoiDQppbmZvDQpjYXQoaW5mbykNCmBgYA0KDQojIyMjIOOAkOaOoue0ouWPkeeOsOOAkeWmguS9leaPkOWPlueUteW9seWPmOmHj++8nyB7I+aOoue0ouWPkeeOsOWmguS9leaPkOWPlueUteW9seWPmOmHj30NCg0KLSAgIOWmguS9leS7juWOn+Wni+aWh+acrOaVsOaNruS4reaPkOWPlu+8mg0KICAgIC0gICDlr7zmvJTvvJrigJzppbrlrZDigJ0NCiAgICAtICAg57G75Z6L77ya4oCc5Ymn5oOFIC8g5Zac5YmnIC8g5Yqo55S7IC8g5aWH5bm74oCdDQogICAgLSAgIOeJh+mVv++8muKAnDE0NOKAnQ0KICAgIC0gICDkuIrmmKDml6XmnJ/vvJrigJwyMDI1LTAxLTI54oCdDQoNCmBgYHtyfQ0Kc3RyX2V4dHJhY3QoaW5mbywgIig/PD3lr7zmvJQ6ICkuKig/PVxcbikiKQ0KDQpzdHJfZXh0cmFjdChpbmZvLCAiKD88Peexu+WeizogKS4qKD89XFxuKSIpDQpzdHJfZXh0cmFjdChpbmZvLCAiKD88Peexu+WeizogKS4qKD89XFxuKSIpICU+JQ0KICBzdHJfc3BsaXQoIiAvICIpDQoNCnN0cl9leHRyYWN0KGluZm8sICIoPzw954mH6ZW/OiApLiooPz3liIbpkp9cXG4pIikNCg0Kc3RyX2V4dHJhY3QoaW5mbywgIig/PD3kuIrmmKDml6XmnJ86ICkuKig/PVxcbikiKQ0Kc3RyX2V4dHJhY3QoaW5mbywgIig/PD3kuIrmmKDml6XmnJ86ICkuKig/PVxcbikiKSAlPiUNCiAgc3RyX2V4dHJhY3QoIlxcZHs0fS1cXGR7Mn0tXFxkezJ9IikNCnN0cl9leHRyYWN0KGluZm8sICIoPzw95LiK5pig5pel5pyfOiApLiooPz1cXG4pIikgJT4lDQogIHN0cl9leHRyYWN0KCJcXGR7NH0tXFxkezJ9LVxcZHsyfSIpICU+JQ0KICBzdHJfcmVtb3ZlX2FsbCgiLSIpDQpgYGANCg0KIyMjIyDjgJDmjqLntKLlj5HnjrDjgJHlpoLkvZXnu5/orqHjgIrlv4PnkIblrabmiqXjgIvljoblsYrnvJblp5TkvJrmiJDlkZjpopHmrKHvvJ8geyPmjqLntKLlj5HnjrDlpoLkvZXnu5/orqHlv4PnkIblrabmiqXljoblsYrnvJblp5TkvJrmiJDlkZjpopHmrKF9DQoNCuOAiuW/g+eQhuWtpuaKpeOAi+e8luWnlOS8mu+8mjxodHRwczovL2pvdXJuYWwucHN5Y2guYWMuY24veGx4Yi9DTi9jb2x1bW4vY29sdW1uMy5zaHRtbD4NCg0KYGBge3J9DQp1cmwgPSAiaHR0cHM6Ly9qb3VybmFsLnBzeWNoLmFjLmNuL3hseGIvQ04vY29sdW1uL2NvbHVtbjMuc2h0bWwiDQp4bWwgPSByZWFkX2h0bWwodXJsKQ0KdGV4dCA9IHhtbCAlPiUgaHRtbF9lbGVtZW50KCIuY29udGVudF9uciBsaSIpICU+JSBodG1sX3RleHQoKQ0KdGV4dCAlPiUgc3RyX3NwbGl0KCJcXHN7Myx9IikgJT4lIHVubGlzdCgpDQp0ZXh0ICU+JQ0KICBzdHJfc3BsaXQoIlxcc3szLH0iKSAlPiUNCiAgdW5saXN0KCkgJT4lDQogIHN0cl9leHRyYWN0KCIoPzw95Li757yW77yafOWJr+S4u+e8lu+8mnznvJblp5TvvJopLip8LiooPz3vvIgpIikgJT4lDQogIHN0cl9zcGxpdCgi44CBIikgJT4lDQogIHVubGlzdCgpICU+JQ0KICBuYS5vbWl0KCkgJT4lDQogIHN0cl9yZW1vdmVfYWxsKCJcXHMiKSAlPiUNCiAgc3RyX3N1YnNldCgi57yW5aeU5LyafFthLXpdfF4kIiwgbmVnYXRlPVRSVUUpICU+JQ0KICBGcmVxKHNvcnQ9Ii0iKQ0KYGBgDQoNCiMjIyMg5q2j5YiZ6KGo6L6+5byP5Zyo56S+5Lya56eR5a2m56CU56m25Lit5pyJ5LuA5LmI55So77yfDQoNCueOsOWcqOeahOekvuS8muenkeWtpueglOeptui2iuadpei2iuS+nei1luWkp+aVsOaNruWSjOaWh+acrOWIhuaekO+8jOe7j+W4uOimgeWSjOa1t+mHj+aWh+acrOaJk+S6pOmBk++8mjEw5LiH5p2h5b6u5Y2a44CBNeS4h+S7vemXruWNt+OAgeWHoOeZvuW5tOeahOWOhuWPsuaho+ahiOKApuKApuato+WImeihqOi+vuW8j+WwseaYr+WkhOeQhuaWh+acrOaVsOaNrueahOKAnOelnuWFteWIqeWZqOKAneOAgg0KDQoxLiAgKirmuIXmtJflkozmlbTnkIbmlbDmja7vvIjmlbDmja7igJzmtJfmvqHigJ3vvIkqKg0KDQrku47nvZHkuIrniKzkuIvmnaXnmoTmlbDmja7nu4/luLjlvojigJzohI/igJ3vvJrlpLnmnYLnnYDlub/lkYrku6PnoIHjgIHkubHnoIHjgIHlpJrkvZnnmoTnqbrmoLzjgILmraPliJnooajovr7lvI/lj6/ku6XkuIDplK7miorov5nkupvlnoPlnL7muIXnkIbmjonvvIznlZnkuIvlubLlh4DnmoTmloflrZfjgILljp/mnKzpnIDopoHmiYvliqjmuIXnkIblh6DkuIfmnaHmlbDmja7vvIzlj6/og73pnIDopoHkuIDkuKrlm6LpmJ/lubLkuIDlkajvvJvnjrDlnKjnlKjlh6DooYzmraPliJnooajovr7lvI/ku6PnoIHvvIzlh6Dnp5Lpkp/lsLHog73lrozmiJDvvIzogIzkuJTlh4bnoa7njofmnoHpq5jjgIINCg0KMi4gICoq5o+Q5Y+W5paH5pys5Lit5L+h5oGv77yI5L+h5oGv4oCc6YeH55+/4oCd77yJKioNCg0K5q+U5aaC5L2g5oOz56CU56m24oCc5bm456aP5oSf4oCd6L+Z5Liq6K+N5Zyo56S+5Lqk5aqS5L2T5LiK55qE55So5rOV44CC5q2j5YiZ6KGo6L6+5byP5Y+v5Lul5biu5L2g5om+5Ye65omA5pyJ5YyF5ZCr4oCc5bm456aP4oCd55qE5Y+l5a2Q77yM5bm25LiU6Ieq5Yqo5oqK4oCc5bm456aP4oCd5YmN6Z2i5piv6LCB5Zyo6K+077yI5q+U5aaC4oCc5oiR6KeJ5b6X5bm456aP4oCd4oCc5LuW5oSf5Yiw5bm456aP4oCd77yJ5o+Q5Y+W5Ye65p2l77yM5Y+I5b+r5Y+I5YeG44CCDQoNCjMuICAqKuWGheWuueWIhuaekOS4jue8luegge+8iOWwhuaWh+Wtl+WPmOaVsOaNru+8iSoqDQoNCuekvuS8muenkeWtpueglOeptue7j+W4uOmcgOimgeWvueaWh+acrOi/m+ihjOWIhuexu+WSjOe8lueggeOAguavlOWmgu+8jOS9oOaDs+WIhuaekOaWsOmXu+aKpemBk+WvueafkOS4quekvuS8muS6i+S7tueahOaAgeW6puaYr+KAnOato+mdouKAneOAgeKAnOi0n+mdouKAnei/mOaYr+KAnOS4reeri+KAneOAguWPr+S7peWFiOiuvuWumuWlveinhOWIme+8jOavlOWmguWMheWQq+KAnOi1nui1j+KAneOAgeKAnOaUr+aMgeKAneOAgeKAnOaIkOWKn+KAneetieivjeeahOW9kuS4uuKAnOato+mdouKAne+8jOWMheWQq+KAnOWPjeWvueKAneOAgeKAnOaJueivhOKAneOAgeKAnOmXrumimOKAneetieivjeeahOW9kuS4uuKAnOi0n+mdouKAneOAgueEtuWQju+8jOato+WImeihqOi+vuW8j+WwseiDveiHquWKqOaJq+aPj+aJgOacieaWh+eroO+8jOW5tuagueaNrui/meS6m+WFs+mUruivjeeahOWHuueOsOaDheWGte+8jOe7meavj+S4gOevh+aWh+eroOi0tOS4iuKAnOaAgeW6puKAneagh+etvuOAguWHoOenkumSn+WwseiDveaKiuWHoOS4h+adoeW4luWtkOWIhuexu+WujOavle+8jOi/meS4jeS7heavlOS6uuW3pemYheivu+e8lueggeW/q+aXoOaVsOWAje+8jOiAjOS4lOagh+WHhuWujOWFqOe7n+S4gO+8jOmBv+WFjeS6huWboOS4uueglOeptuiAheeWsuWKs+aIluS4quS6uuS4u+inguWIpOaWreW4puadpeeahOivr+W3ruOAguWug+iuqeWumuaAp+eglOeptuWPr+S7peaLpeacieWumumHj+WIhuaekOeahOinhOaooeOAgg0KDQohW+ato+WImeihqOi+vuW8j+Wbvuino++8iOWbvueJh+a6kOiHque9kee7nO+8iV0oaW1hZ2VzL2NsaXBib2FyZC0yNjIwNDE5NzE4LmpwZWcpDQoNCiMjIyMg44CQ55+l6K+G54K544CR5q2j5YiZ6KGo6L6+5byPIHsj55+l6K+G54K55q2j5YiZ6KGo6L6+5byPfQ0KDQojIyMjIyDmraPliJnooajovr7lvI8gLyDop4Tlvovooajovr7lvI/vvIhyZWd1bGFyL3BhdHRlcm4gZXhwcmVzc2lvbu+8jFJlZ0V477yJDQoNCueugOWNleadpeivtO+8jOato+WImeihqOi+vuW8j+WwseaYr+S4gOWll+eUqOadpSoq5o+P6L+w5paH5pys6KeE5YiZ55qE4oCc5a+G56CB4oCdKirjgILlroPnlKjkuIDkupvnibnmrornrKblj7fvvIjmr5TlpoJgKmDjgIFgK2DjgIFgP2DjgIFgW11g77yJ57uE5ZCI5oiQ4oCc5oyH5Luk4oCd77yM6K6p55S16ISR5oyJ54Wn6L+Z5Lqb6KeE5YiZ5Y675paH5pys55qE5rW35rSL6YeM57K+5YeG5Zyw5om+5Yiw5L2g5oOz6KaB55qE5YaF5a6577yI5q+U5aaC5LiA5a6a6KaB5piv4oCc6JOd6Imy4oCd5LmL5ZCO57Sn6Lef55qE4oCc5rG96L2m4oCd77yM6ICM5LiN5piv4oCc57qi6Imy5rG96L2m4oCd77yJ44CCDQoNCi0gICAqKuWQq+S5ie+8muaPj+i/sOWtl+espuS4suinhOW+i++8iOaooeW8j++8ieeahOihqOi+vuW8jyoqDQotICAgKirnlKjpgJTvvJrmoLnmja7mqKHlvI/vvIzljLnphY3lrZfnrKbvvIjoh6rliqjlpITnkIbmlofmnKzvvIkqKg0KICAgIC0gICAqKuKAnOWkp+a1t+aNnumSiOKAne+8iOivjemikee7n+iuoe+8iSoq77ya5LuO5rW36YeP55qE5paH5pys5pWw5o2u6YeM77yM5b+r6YCf5om+5Yiw56ym5ZCI54m55a6a5qih5byP55qE5a2X6K+N44CB5Y+l5a2Q5oiW5q616JC9DQogICAgLSAgICoq4oCc54K555+z5oiQ6YeR4oCd77yI5pWw5o2u5riF5rSX77yJKirvvJrmib7liLDkuYvlkI7vvIzlj6/ku6Xlr7nov5nkupvlhoXlrrnov5vooYzmibnph4/nmoTkv67mlLnjgIHliKDpmaTjgIHmm7/mjaLmiJbmj5Dlj5bvvIzmlbTnkIbmiJDmlbDmja7liIbmnpDmiYDpnIDopoHnmoTmoLzlvI8NCiAgICAtICAgKirigJzljrvkvKrlrZjnnJ/igJ3vvIjmnaHku7bliKTmlq3vvIkqKu+8mui/mOWPr+S7peeUqOadpeajgOafpeS/oeaBr+agvOW8j+aYr+WQpuato+ehru+8jOavlOWmguaJi+acuuWPt+eggeaYr+S4jeaYrzEx5L2N44CB6YKu566x5Zyw5Z2A6YeM5pyJ5rKh5pyJ4oCcXEDigJ3nrKblj7fnrYkNCi0gICDmraPliJnooajovr7lvI/nmoTigJzlr4bnoIHigJ3lhbblrp7lvojmnInpgLvovpHvvIzkuZ/lvojlpb3nkIbop6PvvIzmr5TlpoLvvJoNCiAgICAtICAgYFxkYO+8muS7o+ihqOKAnOS7u+S9leS4gOS4quaVsOWtl+KAne+8iDAtOe+8ie+8jOWwseWDj+WcqOivtOKAnOe7meaIkeaJvuS4gOS4quaVsOWtl+KAnQ0KICAgIC0gICBgW2Etel1g77ya5Luj6KGo4oCc5Lu75L2V5LiA5Liq6Iux5paH5bCP5YaZ5a2X5q+N4oCd77yM5bCx5YOP5Zyo6K+04oCc57uZ5oiR5om+5LiA5Liq5bCP5YaZ5a2X5q+N4oCdDQogICAgLSAgIGAqYO+8muS7o+ihqOKAnOWJjemdoueahOS4nOilv+WPr+S7peWHuueOsOmbtuasoeaIluWkmuasoeKAne+8jOWwseWDj+WcqOivtOKAnOi/meS4quaooeW8j+WPr+S7pemHjeWkjeaXoOaVsOasoeKAnQ0KICAgIC0gICBgK2DvvJrku6PooajigJzliY3pnaLnmoTkuJzopb/oh7PlsJHlh7rnjrDkuIDmrKHigJ3vvIzlsLHlg4/lnKjor7TigJzov5nkuKrmqKHlvI/oh7PlsJHopoHlh7rnjrDkuIDmrKHigJ0NCiAgICAtICAgYC5g77ya5Luj6KGo4oCc5Lu75L2V5LiA5Liq5a2X56ym4oCd77yI6Zmk5LqG5o2i6KGM56ym77yJ77yM5bCx5YOP5LiA5byg5LiH6IO954mM77yM5Y+v5Lul5Luj5pu/5Lu75L2V5LiA5Liq5a2X56ymDQoNCj4g5LiA5pem5a2m5Lya77yM5L2g5bCx5oul5pyJ5LqG5LiA56eN56We5aWH55qE6IO95Yqb77ya5Yir5Lq66L+Y5Zyo5LiA5p2h5p2h5aSN5Yi257KY6LS044CB6IKJ55y85pCc57Si55qE5pe25YCZ77yM5L2g5bey57uP5Y+v5Lul5Zad552A5ZKW5ZWh77yM6L275p2+55yL552A55S16ISR5biu5L2g5oqK5Yeg5LiH5p2h55Sa6Iez5Yeg55m+5LiH5p2h5paH5pys5pWw5o2u5Zyo5Yeg56eS5LmL5YaF6Ieq5Yqo5pW055CG5aW944CC6L+Z5bCx5piv5q2j5YiZ6KGo6L6+5byP55qE6a2F5Yqb4oCU4oCU5oqK57mB55CQ55qE5omL5bel5Yqz5Yqo77yM5Y+Y5oiQ6Ieq5Yqo5YyW55qE4oCc6a2U5rOV4oCd44CCDQoNCiMjIO+8iDHvvInlrZfnrKbljLnphY0NCg0KIVtdKGltYWdlcy9jbGlwYm9hcmQtNDA4NjU3NjU4My5wbmcpDQoNCiMjIyMg44CQ5a6e6Le1MeOAkeWtl+espuWMuemFjSB7I+Wunui3tTHlrZfnrKbljLnphY19DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTE1NzYzOTExODIucG5nKQ0KDQpgYGB7cn0NCnRleHQgPSAi56yU6K6w5pys5LiK5a6J6KOFU1BTUzIy5oiWMjDvvIzmjojmnYPnoIHlpI3liLbkuI3kuIrvvIzlr7zoh7Tlronoo4XlpLHotKXjgILlt7Lnu4/or5XkuoblpJrmrKHkuobvvIzpg73lronoo4XkuI3kuIpTcFNT77yM6K+36Zeu5pyJ6YGH5Yiw6L+Z56eN5oOF5Ya155qE5ZCX77yf55S16ISR5pivNjTkvY3nmoTvvIxTcHNz5pivMzLkvY3nmoTvvIzmmK/ov5nkuKrljp/lm6DlkJfvvJ/kuYvliY1TcHNT5Zyo5YW25LuW56yU6K6w5pys5ZKM5Y+w5byP55S16ISR5LiK6YO95a6J6KOF5oiQ5Yqf5LqG44CCIg0KY2F0KHRleHQpDQoNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiU1BTUyIpICAjIOWujOaVtOWtl+espuS4sg0Kc3RyX2V4dHJhY3RfYWxsKHRleHQsICJTUFNTfFNwc3MiKSAgIyAifCLooajnpLrmiJbogIUNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiW1NQU1N8c3Bzc10iKSAgIyDmgJ3ogIPvvJrkuLrku4DkuYjvvJ8NCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiW1NzUHBdIikNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiW1NzXVtQcF1bU3NdW1NzXSIpDQoNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiXFxkIikNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiXFxkXFxkIikNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiXFxkXFxk5L2NIikNCmBgYA0KDQojIyDvvIgy77yJ5p2h5Lu25Yy56YWNDQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTMwMjEyODcwODAucG5nKQ0KDQojIyMjIOOAkOWunui3tTLjgJHmnaHku7bljLnphY0geyPlrp7ot7Uy5p2h5Lu25Yy56YWNfQ0KDQpgYGB7cn0NCnRleHQgPSAi56yU6K6w5pys5LiK5a6J6KOFU1BTUzIy5oiWMjDvvIzmjojmnYPnoIHlpI3liLbkuI3kuIrvvIzlr7zoh7Tlronoo4XlpLHotKXjgILlt7Lnu4/or5XkuoblpJrmrKHkuobvvIzpg73lronoo4XkuI3kuIpTcFNT77yM6K+36Zeu5pyJ6YGH5Yiw6L+Z56eN5oOF5Ya155qE5ZCX77yf55S16ISR5pivNjTkvY3nmoTvvIxTcHNz5pivMzLkvY3nmoTvvIzmmK/ov5nkuKrljp/lm6DlkJfvvJ/kuYvliY1TcHNT5Zyo5YW25LuW56yU6K6w5pys5ZKM5Y+w5byP55S16ISR5LiK6YO95a6J6KOF5oiQ5Yqf5LqG44CCIg0KY2F0KHRleHQpDQoNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiXFxkezJ95L2NIikNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiW1NzUHBdezR9IikNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiW1NQXXs0fSIpDQpzdHJfZXh0cmFjdF9hbGwodGV4dCwgIltTcHNdKyIpDQpzdHJfZXh0cmFjdF9hbGwodGV4dCwgIihTcHMpKyIpDQpzdHJfZXh0cmFjdF9hbGwodGV4dCwgIlNwcysiKQ0KYGBgDQoNCiMjIO+8iDPvvInpooTmn6XljLnphY0NCg0KIVtdKGltYWdlcy9jbGlwYm9hcmQtNDE4NDQyODU0NS5wbmcpDQoNCiMjIyMg44CQ5a6e6Le1M+OAkemihOafpeWMuemFjSB7I+Wunui3tTPpooTmn6XljLnphY19DQoNCmBgYHtyfQ0KdGV4dCA9ICLnrJTorrDmnKzkuIrlronoo4VTUFNTMjLmiJYyMO+8jOaOiOadg+eggeWkjeWItuS4jeS4iu+8jOWvvOiHtOWuieijheWksei0peOAguW3sue7j+ivleS6huWkmuasoeS6hu+8jOmDveWuieijheS4jeS4ilNwU1PvvIzor7fpl67mnInpgYfliLDov5nnp43mg4XlhrXnmoTlkJfvvJ/nlLXohJHmmK82NOS9jeeahO+8jFNwc3PmmK8zMuS9jeeahO+8jOaYr+i/meS4quWOn+WboOWQl++8n+S5i+WJjVNwc1PlnKjlhbbku5bnrJTorrDmnKzlkozlj7DlvI/nlLXohJHkuIrpg73lronoo4XmiJDlip/kuobjgIIiDQpjYXQodGV4dCkNCg0Kc3RyX2V4dHJhY3RfYWxsKHRleHQsICJcXGR7Mn3kvY0iKQ0Kc3RyX2V4dHJhY3RfYWxsKHRleHQsICJcXGR7Mn0oPz3kvY0pIikgICMg5ZCO5ZCR6IKv5a6a6aKE5p+lDQpzdHJfZXh0cmFjdF9hbGwodGV4dCwgIlxcZHsyfSg/IeS9jSkiKSAgIyDlkI7lkJHlkKblrprpooTmn6UNCnN0cl9leHRyYWN0X2FsbCh0ZXh0LCAiKD88PVNQU1MpXFxkezJ9IikgICMg5YmN5ZCR6IKv5a6a6aKE5p+lDQpzdHJfZXh0cmFjdF9hbGwodGV4dCwgIig/PCFTUFNTKVxcZHsyfSIpICAjIOWJjeWQkeWQpuWumumihOafpQ0KYGBgDQoNCiMg5a2X56ym5Liy5aSE55CG5a6e5oiYDQoNCmBzdHJpbmdyYOWMhQ0KDQotICAg5YWx5ZCM5Y+C5pWwDQogICAgLSAgIGBzdHJpbmdg77ya5a2X56ym5Liy6L6T5YWlDQogICAgLSAgIGBwYXR0ZXJuYO+8muato+WImeihqOi+vuW8jw0KLSAgIOW4uOeUqOWHveaVsA0KICAgIC0gICDliKTmlq3vvJpgc3RyX2RldGVjdCgpYA0KICAgIC0gICDorqHmlbDvvJpgc3RyX2NvdW50KClgDQogICAgLSAgIOaPkOWPlu+8mmBzdHJfZXh0cmFjdCgpYOOAgWBzdHJfZXh0cmFjdF9hbGwoKWANCiAgICAtICAg5pu/5o2i77yaYHN0cl9yZXBsYWNlKClg44CBYHN0cl9yZXBsYWNlX2FsbCgpYA0KICAgIC0gICDliKDpmaTvvJpgc3RyX3JlbW92ZSgpYOOAgWBzdHJfcmVtb3ZlX2FsbCgpYA0KICAgIC0gICDliIblibLvvJpgc3RyX3NwbGl0KClgDQogICAgLSAgIOWQkemHj+WPluWMuemFjeWtkOmbhu+8mmBzdHJfc3Vic2V0KClgDQoNCiMjIyMg44CQ5a6e6Le1NOOAkeWtl+espuS4sue7vOWQiOWkhOeQhiB7I+Wunui3tTTlrZfnrKbkuLLnu7zlkIjlpITnkIZ9DQoNCi0gICDor77nqIvlm57pob7vvJpbQ2hhcDAzIFwjIOmdmeaAgee9kemhteino+aekF0oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9SQ291cnNlL0NoYXAwMyMlRTUlQUUlOUUlRTglQjclQjU1JUU5JTlEJTk5JUU2JTgwJTgxJUU3JUJEJTkxJUU5JUExJUI1JUU4JUE3JUEzJUU2JTlFJTkwKXsudXJpfQ0KLSAgIOe9kemhtee0oOadkO+8mlvljY7kuJzluIjojIPlpKflrablv4PnkIbkuI7orqTnn6Xnp5HlrablrabpmaLigJzluIjotYTpmJ/kvI3igJ1dKGh0dHBzOi8vcHN5LmVjbnUuZWR1LmNuLzE3NDM3L2xpc3QuaHRtKXsudXJpfQ0KDQpgYGB7cn0NCiMjIOaVsOaNrumHh+mbhg0KIyMg5bey5Yqg6L29cnZlc3TljIXvvJpsaWJyYXJ5KHJ2ZXN0KQ0KdXJsID0gImh0dHBzOi8vcHN5LmVjbnUuZWR1LmNuLzE3NDM3L2xpc3QuaHRtIiAgIyDlrabpmaLluIjotYTpmJ/kvI3pobXpnaINCnhtbCA9IHVybCAlPiUgcmVhZF9odG1sKCkgICMg6K+75Y+W572R6aG15omA5pyJ5L+h5oGvDQp4bWwNCg0KIyMg5a2X56ym5Liy5aSE55CG77yIMe+8ie+8mumZouezu+WQjeensA0KbWVudSA9IHhtbCAlPiUgaHRtbF9lbGVtZW50cygiLmNvbHVtbi1pdGVtLWxpbmsgLmNvbHVtbi1uYW1lIikgJT4lIGh0bWxfdGV4dDIoKQ0KbWVudQ0KDQpzdHJfc3Vic2V0KG1lbnUsICLns7siKQ0Kc3RyX3N1YnNldChtZW51LCAi57O7JCIpDQpzdHJfc3Vic2V0KG1lbnUsICIuKuezuyQiKQ0Kc3RyX3N1YnNldChtZW51LCAiLiooPz3ns7skKSIpICAjIOWPquaYr+WPluWtkOmbhu+8jOW5tuS4jeiDvemihOafpeaPkOWPlg0Kc3RyX2V4dHJhY3QobWVudSwgIi4qKD8957O7JCkiKSAgIyDnnJ/mraPnmoTpooTmn6Xmj5Dlj5YNCnN0cl9leHRyYWN0KG1lbnUsICIuKig/PeezuyQpIikgJT4lIG5hLm9taXQoKSAgIyDnp7vpmaTnvLrlpLHlgLxOQQ0KDQojIyDlrZfnrKbkuLLlpITnkIbvvIgy77yJ77ya5Lq65omN6K6h5YiSDQp0aXRsZSA9IHhtbCAlPiUgaHRtbF9lbGVtZW50cygiLnN1YmNvbHVtbi1uYW1lIikgJT4lIGh0bWxfdGV4dDIoKQ0KdGl0bGUNCnN0cl9zdWJzZXQodGl0bGUsICLkurrmiY0iKQ0Kc3RyX3N1YnNldCh0aXRsZSwgIuS6uuaJjSQiKQ0Kc3RyX3N1YnNldCh0aXRsZSwgIuS4iua1t+W4gi4qIikNCnN0cl9zdWJzZXQodGl0bGUsICJe5LiK5rW35biCIikNCnN0cl9leHRyYWN0KHRpdGxlLCAiKD88PV7kuIrmtbfluIIpLiooPz3lrabogIUkfOiuoeWIkiQpIikgJT4lIG5hLm9taXQoKQ0KDQojIyDlrZfnrKbkuLLlpITnkIbvvIgz77yJ77ya5pWZ5biI5aeT5ZCNDQpuYW1lID0geG1sICU+JSBodG1sX2VsZW1lbnRzKCIuY29sdW1uLW5ld3MtdGl0bGUiKSAlPiUgaHRtbF90ZXh0MigpDQpuYW1lDQoNCnRhYmxlKG5hbWUpDQp1bmlxdWUobmFtZSkNCg0KbmFtZSAlPiUgdW5pcXVlKCkgJT4lIHNvcnQoKQ0KbmFtZSAlPiUgdW5pcXVlKCkgJT4lIHNvcnQoKSAlPiUgc3RyX3JlbW92ZV9hbGwoIuWNmuWjq3xcXHMiKQ0KDQpuYW1lICU+JQ0KICB1bmlxdWUoKSAlPiUNCiAgc29ydCgpICU+JQ0KICBzdHJfcmVtb3ZlX2FsbCgi5Y2a5aOrfFxccyIpICU+JQ0KICBzdHJfc3Vic2V0KCLlroEiKQ0KDQpuYW1lICU+JQ0KICB1bmlxdWUoKSAlPiUNCiAgc29ydCgpICU+JQ0KICBzdHJfcmVtb3ZlX2FsbCgi5Y2a5aOrfFxccyIpICU+JQ0KICBzdHJfc3Vic2V0KCJe6LW1fF7pkrF8XuWtmXxe5p2OIikgICMg6LW16ZKx5a2Z5p2O77yM5ZGo5ZC06YOR546LDQoNCm5hbWUgJT4lDQogIHVuaXF1ZSgpICU+JQ0KICBzb3J0KCkgJT4lDQogIHN0cl9yZW1vdmVfYWxsKCLljZrlo6t8XFxzIikgJT4lDQogIHN0cl9zdWJzZXQoIl5b5ZGo5ZC06YOR546LXSIpICAjIOi1temSseWtmeadju+8jOWRqOWQtOmDkeeOiw0KDQojIyDooaXlhYXvvJrlrZfnrKblkJHph48gdnMuIOWbuuWumuS9jee9ruWtl+espuaPkOWPlg0KIlBzeWNob2xvZ3kiWzFdICAjIOmVv+W6puS4ujHnmoTlrZfnrKblkJHph4/vvIxbMV3ku43nhLbmmK/lrZfnrKbkuLLvvIzogIzkuI3mmK/nrKwx5Liq5a2X5q+NDQpzdHJfc3ViKCJQc3ljaG9sb2d5IiwgMSwgMSkgICMg5o+Q5Y+W56ysMeS4quWtl+avjQ0Kc3RyX3N1YigiUHN5Y2hvbG9neSIsIDEsIDUpICAjIOaPkOWPluesrDF+NeS4quWtl+avjQ0KYGBgDQoNCi0gICBb6LGG55Oj55S15b2x56S65L6L5pWw5o2uKC5SRGF0YSldKGh0dHBzOi8vcHN5Y2hicnVjZS5naXRodWIuaW8vUkNvdXJzZS9kYXRhL2RvdWJhbl9tb3ZpZXMuUkRhdGEpDQoNCmBgYHtyLCBldmFsPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyMg5a+85YWl5Zyo57q/5pWw5o2u77yIZG91YmFuX21vdmllcy5SRGF0Ye+8iQ0KZGF0YSA9IGltcG9ydCgiaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9SQ291cnNlL2RhdGEvZG91YmFuX21vdmllcy5SRGF0YSIpDQpkdCA9IGFzLmRhdGEudGFibGUoZGF0YSkNCmBgYA0KDQoqKuivvuWgguWunuaImOe7g+S5oO+8iOmXrumimOino+WGs+WvvOWQkeeahOWtpuS5oO+8ie+8mioqDQoNCi0gICDku47nlLXlvbHmoIfpopjlj5jph4/vvIhgdGl0bGVg77yJ5o+Q5Y+W55S15b2x55qE5LiK5pig5bm05Lu9DQotICAg6YCJ5Y+W5bim5pyJMFx+OeaVsOWtl+eahOeUteW9seagh+mimA0KLSAgIOmAieWPluW4puacieW5tOS7veaVsOWtl+eahOeUteW9seagh+mimA0KLSAgIOmAieWPluaooeW8j+S4uuKAnOmrmOiAgzE5NzfigJ3nmoTnlLXlvbHmoIfpopgNCi0gICDigKbigKYNCg0KIyMjIyDjgJDmjqLntKLlj5HnjrDjgJFzdHJpbmdy5YyF55qE5Ye95pWw5Yqf6IO9IHsj5o6i57Si5Y+R546wc3RyaW5ncuWMheeahOWHveaVsOWKn+iDvX0NCg0KLSAgIOajgOa1i+WMuemFjQ0KDQohW10oaW1hZ2VzL2NsaXBib2FyZC0xODA4ODM0MDk4LnBuZykNCg0KLSAgIOWtkOmbhuaPkOWPlg0KDQohW10oaW1hZ2VzL2NsaXBib2FyZC05MDA4MDI0MDIucG5nKQ0KDQotICAg6ZW/5bqm5o6n5Yi2DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTQyMDA2NjI0MTEucG5nKQ0KDQotICAg5pu/5o2i5L+u5pS5DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTMxMDQzMTExMzUucG5nKQ0KDQotICAg5ou85o6l5YiG5YmyDQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTMzMzM0NjY5NzIucG5nKQ0KDQojIOOAkOS9nOS4mjXjgJHlrZfnrKblkJHph4/lpITnkIYNCg0K5L2c5Lia6KaB5rGC77yaDQoNCi0gICDlm7Tnu5Vgc3RyaW5ncmDljIXmj5DkvpvnmoTlrZfnrKbkuLLnpLrkvovmlbDmja5gZnJ1aXRg77yIODDkuKrmsLTmnpzlkI3np7DvvInvvIzov5DnlKhgc3RyX2RldGVjdCgpYOOAgWBzdHJfc3Vic2V0KClg44CBYHN0cl9leHRyYWN0X2FsbCgpYOOAgWBzdHJfcmVwbGFjZV9hbGwoKWDnrYlgc3RyaW5ncmDljIXlh73mlbDkuK3nmoToh7PlsJEy5Liq77yM5Lu75oSP5a6M5oiQ6Iez5bCRMuenjeWtl+espuS4suWkhOeQhuS7u+WKoe+8jOW5tuWvueS7o+eggeWSjOe7k+aenOi/m+ihjOeugOWNleeahOazqOmHiuWSjOino+ivuw0KLSAgIOS9v+eUqFIgTWFya2Rvd27lrozmiJDvvIzov5DooYzmuLLmn5PlvpfliLDmnKzlnLBIVE1M572R6aG15paH5Lu2DQoNCuW5s+WPsOaPkOS6pO+8mg0KDQotICAg6L+Q6KGM5b6X5YiwSFRNTOe9kemhteaWh+S7tueahCoq5YWz6ZSu6YOo5YiG5oiq5Zu+77yI5Y+q6ZyA5LiK5Lyg5oiq5Zu+77yJKioNCg0KYGBge3J9DQojIyDpmYTvvJrkvZzkuJrpnIDopoHnlKjliLDnmoTmlbDmja7pm4bvvIjlrZfnrKblkJHph4/vvIkNCnN0cmluZ3I6OmZydWl0DQpgYGANCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClvov5Tlm57or77nqIvkuLvpobVdKGh0dHBzOi8vcHN5Y2hicnVjZS5naXRodWIuaW8vUkNvdXJzZS8pDQoNCsKpIOWMheWvkuWQtOmcnA0K