From 75ef865b086316fc9a8845c5eca4a540b2c24890 Mon Sep 17 00:00:00 2001 From: codeimp Date: Mon, 23 Aug 2010 19:09:46 +0000 Subject: [PATCH] @ remaining stuff --- Documents/usdf20.txt | 158 +++++++++++++++++++++++ Resources/Icons/Dialog2.png | Bin 0 -> 567 bytes Resources/Icons/book_closed.png | Bin 0 -> 872 bytes Resources/Icons/book_open.png | Bin 0 -> 695 bytes Resources/Icons/page_user.png | Bin 0 -> 517 bytes Source/Plugins/USDF/MainForm.Designer.cs | 35 ++++- Source/Plugins/USDF/MainForm.resx | 102 +++++++++++++++ 7 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 Documents/usdf20.txt create mode 100644 Resources/Icons/Dialog2.png create mode 100644 Resources/Icons/book_closed.png create mode 100644 Resources/Icons/book_open.png create mode 100644 Resources/Icons/page_user.png diff --git a/Documents/usdf20.txt b/Documents/usdf20.txt new file mode 100644 index 00000000..fc955f02 --- /dev/null +++ b/Documents/usdf20.txt @@ -0,0 +1,158 @@ +=============================================================================== +Universal Strife Dialog Format Specification v2.0 - 08/20/10 + +Written by Braden "Blzut3" Obrzut - admin@maniacsvault.net + +Defined with input from: + +CodeImp +Gez +Graf Zahl +Quasar +et al. + + Copyright (c) 2010 Braden Obrzut. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +=============================================================================== + +======================================= +I. Grammar / Syntax +======================================= + +The grammar and syntax is similar to that of UDMF. A compliant UDMF parser +should be applyable to the USDF. However, it will need to be capable of +handling sub-blocks. Unknown sub-blocks should be skipped. + +======================================= +II. Implementation Semantics +======================================= + +------------------------------------ +II.A : Storage and Retrieval of Data +------------------------------------ + +This is the same as in UDMF. + +----------------------------------- +II.B : Storage Within Archive Files +----------------------------------- + +There are two options for the USDF lump placement. This can either be a part +of the UDMF lump list or standalone. If used stand alone the lump name +DIALOGXY is used corresponding with MAPXY. For UDMF the lump shall be called +"DIALOGUE". + +-------------------------------- +II.C : Implementation Dependence +-------------------------------- + +USDF also implements the namespace statement. This has all the same +requirements as UDMF. + +======================================= +III. Standardized Fields +======================================= + +The following are required for all USDF complient implementations. Like UDMF, +any unknown field/function should be ignored and not treated as an error. + +NOTE: "mobj" refers to Strife's conversationIDs and not doom editor numbers or + Hexen's spawnids. A valid mobj value is any positive integer greater + than or equal to 1. + +--------------------- +III.A : Conversations +--------------------- + +Conversations are groups of pages that can be assigned to a particular object. +Implementors should preserve the IDs to allow for dynamic reassignment through +scripting although this is not a requirement. + +conversation // Starts a dialog. +{ + actor = ; // mobj for this conversation's actor. If previously + // used, this will override the previous conversation. + + page // Starts a new page. Pages are automatically numbered starting at 0. + { + name = ; // Name that goes in the upper left hand corner + panel = ; // Name of lump to render as the background. + voice = ; // Narration sound lump. + dialog = ; // Dialog of the page. + drop = ; // mobj for the object to drop if the actor is + // killed. + link = ; // Page to jump to if all ifitem conditions are + // satisified. + + // jumps to the specified page if the player has the specified amount + // or more of item in their inventory. This can be repeated as many + // times as the author wants, all conditions must be met for the + // jump to occur. + ifitem + { + item = ; // mobj of item to check. + amount = ; // amount required to be in inventory. + } + + // Choices shall be automatically numbered. + choice + { + text = ; // Name of the choice. + + // The amount of an item needed to successfully pick this option. + // This can be repeated, but only the first will be shown (provided + // diaplaycost is true). All costs must be satisfied for success. + cost + { + item = ; // Item that is required for this option. + amount = ; // Minimum amount of the item needed. + } + + displaycost = ; // Weather the cost should be + // displayed with the option. + // If no cost is specified this should + // be ignored. + yesmessage = ; // Text to add to console when choice + // is accepted. + nomessage = ; // Text to add to console when choice + // is denied. + + log = ; // LOG entry to use on success. + giveitem = ; // Gives the specified item upon + // success. + // The following are the same as the special for linedefs in UDMF. + // They are executed on success. + special = ; + arg0 = ; + arg1 = ; + arg2 = ; + arg3 = ; + arg4 = ; + + nextpage = ; // Sets the next page. + closedialog = ; // Should the dialog be closed upon + // selecting this choice? + // Default: false + } + } +} + +------------------------------- +III.B : Including Other Dialogs +------------------------------- + +Unlike the original Strife dialog format. The lump "SCRIPT00" should not be +included automatically. Instead the user must specify this behavior by using +the include function, which takes the name of a lump to include. Include only +needs to be available in the global scope and for compatibility reasons, must +include the result of the script and not act like a preprocessor statement. + +include = ; + +=============================================================================== +EOF +=============================================================================== diff --git a/Resources/Icons/Dialog2.png b/Resources/Icons/Dialog2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb658804d3855564685e174bec7621a42fca3bd1 GIT binary patch literal 567 zcmV-70?7S|P)zR&ag1c9Tvp&a42FysT_;n59(&^Fi#tyaszAMnSNe4?nfApU?s ze{~>JScTK$Kp+@^D2j-qbWXHOKbpQ4yoO)l^4;O|<^X$LIHHne= zAxVKc;E&tfUB`}Yn|%*X_eurcCoenT35w85NGYI6-TPedJ^5H75{a-b2x5yf{A zJEkq@%)1~zoY;RY@7-7CWht*}ljoSuln7lSTJD^yDZVHBiFkBzY1k0TnHn$ZH zkDa-MNM65(d6MSdKh>iM(6ij11w`Pt&{#Qv%t+%U&y$1r6lDSG$98|kZr586nIG4V zSFos?XDcTsb5M@Rlbx zS(GeeS(Yq=6!`4)-oahsJ-IhI=RD7o@AvsWSA|Mm(&v_W@n|njd>vb)q=)3)*w{a` zdp9Y*`cytJTi4L%Oz=T`hr&7LcHLQJFz`E$x(GQrcTm~wkEpGWPb-!1^>j``75T1Wxgm5$N*RKEPZI>KY;#D_&4^?I{&&bqBGy{(IfSe00Y2ejo4k zj@jzv=1yjb`^7q$dVwY@DIiG0DCAf8ps#6uc@kDrNl5#cK%}pV6}uXl=ot_uW{q%0y+6pr0c$A zZ*NZqd}SJ-Y~PNVsJ4D}}=c6WD=Y6xR*4ay$;&xhHib&kW}^}fX8S){pX zj(g$Pgob}67>p1Itkd7WMql4D-Q7!cbv?uD`<}_k6}GqkP}0=mo)@5>XsDlNVj{`| z5uunZ1A{x<^}nM{#Ob!Mr^fjsrDY3Je|fonr2?n(32kl9sJ1=ez90?;cJTMSrOmfV zlW?cDeqD0tOVc8`1yhnh)+L`JV6}XQvu+BbF(f9njkn_$Ve1C9A~_a8jHM@LZ-EG< zM)!>*a8c({1Z=hu?DjEkl=jlxvLPiaMl_mVP-Oq!(v`N(!7p{#n%N zgHe5ISI;>owV{3J9C&!neXjd@?(4emM*soa^s${URnL5+SUG^O*TGKYK(6J_-m*ZC zat_h~54LlE<D3M%zG7I((`hIsdzfHOasY{Jmw>r8X&u~2dnuLFHt|&6tG*~hsn4G!P)D5cy0^V0NFwX zT^bj@@eB$@h!sLW1Rzv85C}%-`+9l@onn7oPTRE}oIKxwmP_~0+AhJ>P9uh$fjYqK zO|t4|Gyn9YsZX?d?gR{jD>&l)*yURiSS&El5+#iLBh=nU_H zU!XlD8Vs&56-|0ub%v~N{RA@E3LONeEy-AnCJuet5Cv2TBu@fO2|Cnn6pH(B+LIU_ z{KyDYdOts$!D9q>wBt<)h|>f!Vva+r=IUBVE6CsS!WE?iWa_!k1+2u@Y2WmtK19Ey zv6U?$lP|-dUxrlrrqR`NH#C%}wf#O$wB3YAGy}0{7Bbm9b$fFl3^002ovPDHLkV1f>jF24W( literal 0 HcmV?d00001 diff --git a/Resources/Icons/page_user.png b/Resources/Icons/page_user.png new file mode 100644 index 0000000000000000000000000000000000000000..08618f65cdf3e0a4e134a2b879fd128c06c70df8 GIT binary patch literal 517 zcmV+g0{Z=lP)Ob#t;$K@brCx<1;a@pw#O7$${>kC-mn4$bFtQlg^oE|<&Al^pf^eX3Tg zq@F58mXD%{@KeeC!g(txG#U+BtyX+UqgJb-o^*(wI;8?VZsap5&^_awjmu7{# zhZ7;$w#|JoA^IG$1K5St*=$C>@Ba{BO>E+fz7Q=Filuu!9>HR<;J%npuh%nkKt>!C z0?8t61I{obofC>OOgsw%*d@U8JQ|HgG#CuXvMlDnoM9MRNY4^5kN4>LuKXQY0>p;l zBewJ)bO<8A8&fWj@4V^60K|%=mX4;=DGTz0X#qqXc|)>VhQ2J{_$SGV%|8OzaEt@w zG}7A-5t*SDz?kx9O={b*7Lj@48@05E0G;S{&RXd#$Q|GdHMeDnhNX)g00000NkvXX Hu0mjf`{Lf- literal 0 HcmV?d00001 diff --git a/Source/Plugins/USDF/MainForm.Designer.cs b/Source/Plugins/USDF/MainForm.Designer.cs index b7e110ba..8424b0f3 100644 --- a/Source/Plugins/USDF/MainForm.Designer.cs +++ b/Source/Plugins/USDF/MainForm.Designer.cs @@ -28,14 +28,43 @@ namespace CodeImp.DoomBuilder.USDF /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.tree = new System.Windows.Forms.TreeView(); + this.treeimages = new System.Windows.Forms.ImageList(this.components); this.SuspendLayout(); // + // tree + // + this.tree.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.tree.HideSelection = false; + this.tree.ImageIndex = 0; + this.tree.ImageList = this.treeimages; + this.tree.Indent = 22; + this.tree.ItemHeight = 18; + this.tree.Location = new System.Drawing.Point(12, 12); + this.tree.Name = "tree"; + this.tree.PathSeparator = "."; + this.tree.SelectedImageIndex = 0; + this.tree.Size = new System.Drawing.Size(257, 588); + this.tree.TabIndex = 0; + // + // treeimages + // + this.treeimages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("treeimages.ImageStream"))); + this.treeimages.TransparentColor = System.Drawing.Color.Transparent; + this.treeimages.Images.SetKeyName(0, "Dialog2.png"); + this.treeimages.Images.SetKeyName(1, "book_closed.png"); + this.treeimages.Images.SetKeyName(2, "book_open.png"); + this.treeimages.Images.SetKeyName(3, "page_user.png"); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.ClientSize = new System.Drawing.Size(813, 612); + this.ClientSize = new System.Drawing.Size(942, 612); + this.Controls.Add(this.tree); this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "MainForm"; @@ -51,5 +80,9 @@ namespace CodeImp.DoomBuilder.USDF } #endregion + + private System.Windows.Forms.TreeView tree; + private System.Windows.Forms.ImageList treeimages; + } } \ No newline at end of file diff --git a/Source/Plugins/USDF/MainForm.resx b/Source/Plugins/USDF/MainForm.resx index 29c19177..eb919de8 100644 --- a/Source/Plugins/USDF/MainForm.resx +++ b/Source/Plugins/USDF/MainForm.resx @@ -117,6 +117,108 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB4 + FQAAAk1TRnQBSQFMAgEBBAEAAQkBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABIP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AagABkwFyAXMB/wGQ + AVoBXAH/AY0CWQH/AYoBVgFXAf8BhgFUAVMB/wGDAVEBUAH/AYACTgH/AXwCSgH/AXgBSAFHAf8BdAFE + AUUB/wFxAkEB/wFsAT0BPgH/AWoCOQH/sAABJQE3ASgB/wE0AU4BOAH/EAABqQGBAYIB/wGPAWIBYwH/ + AaYBkQGBAf8BpQGNAYAB/wGmAY4BfwH/AaYBjgF/Af8BpgGOAX4B/wGmAY0BfgH/AaYBjQF+Af8BpgGN + AX4B/wGmAY0BfgH/AacBjgF+Af8B1AHLAcIB/wF4AUIBQwH/GAABdQFYAUQB/wFpAU4BOwH/AWUBSQE3 + Af8BagFNAToB/wFsAU8BOgH/AW0BUQE8Af8BbQFSAT4B/wFyAVMBQQH/AYQBZgFVAf8BlgF8AW0B/wGv + AZgBjAH/A+UB/wO4Af8DtQH/A7UB/wO1Af8DtQH/A7UB/wO1Af8DtQH/A7UB/wO1Af8DtQH/A7UB/wO1 + Af8DuQH/A+UB/ygAASwBQQEvAf8BdAGhAXsB/wE0AU4BOAH/EAABkAFjAWUB/wGQAWIBZAH/AYMBUwFW + Af8BnwFVAVMB/wGoAVYBUwH/AaYBUQFNAf8BoAFLAUcB/wGbAUYBQgH/AZcBQAE8Af8BkwE8ATgB/wGR + ATgBMwH/AZcBNwEzAf8B/QL+Af8BewFEAUYB/xQAAXwBWgFIAf8BuAF3AXUB/wFuAVIBPgH/AVwBRAEz + Af8BtQJoAf8BtgFoAWkB/wG7AnAB/wG9AXMBcgH/AcEBdwF7Af8BxwGBAYMB/wHCAX4BfQH/AZsBbQFg + Af8DuAH/AcABpwGLAf8B9gHiAcsB/wHBAagBjAH/AfYB4QHKAf8B5AHLAbAB/wHkAcsBsAH/AfYB4QHK + Af8BwQGoAYwB/wHkAcsBsAH/AcEBqAGMAf8D+gH/A/oB/wP6Af8D9gH/A7kB/yQAATABSAE0Af8BdAGh + AXsB/wGCAasBiQH/ATQBTgE4Af8QAAGiAXgBeQH/AaECeAH/AZcBbQFuAf8B0QF/AXsB/wHJAXcBcgH/ + AcMBbgFqAf8BvQFmAWEB/wG2AV8BWQH/AbEBWAFRAf8BrAFQAUkB/wGoAUwBRAH/AZYBOAExAf8D+AH/ + AX8BRwFJAf8QAAF6AVkBRwH/AbgBdwF1Af8B4wHaAdUB/wGYAXgBXwH/AZcBdwFhAf8BnwGDAW8B/wHK + AboBrwH/AdcBzAHDAf8B4wHaAdUB/wHpAeIB3gH/AeYB3QHZAf8BvwF7AXkB/wGuAWkBZgH/A7UB/wHC + AakBjQH/AfYB4QHKAf8B9gHhAcoB/wH2AeEBygH/AeQBywGwAf8B5AHLAbAB/wHkAcsBsAH/AeQBywGw + Af8B5AHLAbAB/wHBAagBjAH/A/kB/wP3Af8D9gH/A/oB/wO1Af8gAAE0AU4BOAH/AXQBoQF7Bf8BggGr + AYkB/wE0AU4BOAH/EAABpQF7AXwB/wGnAX0BfgH/AZ0BcgFzAf8B0QGBAX8B/wHMAXsBdwH/AcYBcwFv + Af8BwAFtAWgB/wG6AWUBXwH/AbQBXQFXAf8BrwFWAU8B/wGpAVABSQH/AZoBPgE3Af8D+QH/AYICSwH/ + DAABegFZAUcB/wG4AXcBdQH/AcsBmwGaAf8B4wHaAdUB/wGYAXgBXwH/AeUB0QHCAf8B2QHOAcYB/wGb + AXwBZwH/AawBkQGBAf8B3QHSAcsB/wHpAeEB3AH/AeoB4wHfAf8BxQKBAf8BtwJvAf8DtQH/A/oB/wHB + AagBjAH/AfYB4QHKAf8BowG9AdkB/wGjAb0B2QH/AaMBvQHZAf8BowG9AdkB/wHkAcsBsAH/AcEBqAGM + Af8D+gH/A/kB/wP3Af8D9QH/A/oB/wO1Af8EAAE3AUkBOgH/ATQBTgE4Af8BNAFOATgB/wE0AU4BOAH/ + ATQBTgE4Af8BNAFOATgB/wE0AU4BOAH/AXQBoQF7Cf8BggGrAYkB/wE0AU4BOAH/AS8BRwEzAf8MAAGp + AX4BfwH/AawCgQH/AZ4BcgFzAf8B1gGIAYUB/wHRAYEBfwH/AcwBegF3Af8BxgF0AXAB/wHAAWwBZwH/ + AboBZAFfAf8BtAFdAVcB/wGvAVYBTwH/AZ4BRAE8Af8D+QH/AYYBTgFPAf8IAAF6AVkBRwH/AbMBdAFw + Af8ByAGVAZQB/wHwAesB6AH/AeMB2gHVAf8BnwF7AWEB/wHfAcoBuwH/AekB4wHeAf8B6wHlAeEB/wHX + AcIBtQH/AZsBfAFnAf8B3wHUAc4B/wHsAeYB4AH/AcsBhwGKAf8BvQJ2Af8DtQH/A/oB/wP6Af8BowG9 + AdkB/wHbAeUB8AH/AdsB5QHwAf8B2wHlAfAB/wHbAeUB8AH/AaMBvQHZAf8D+gH/A/oB/wP3Af8D9gH/ + A/UB/wP6Af8DtQH/ATkBTAE8Af8B3gHpAeAB/wHWAeQB2AH/Ac4B3wHQAf8BwwHXAcYB/wG7AdIBvgH/ + AbMBzAG3Af8BqAHFAawB/wP8Cf8BwwHXAcYB/wGCAasBiQH/AXQBoQF7Af8BLwFHATMB/wgAAawCgAH/ + AbECgQH/AZ4BbwFwAf8B3AGPAYwB/wHWAYgBhQH/AdABgQF+Af8BzAF7AXcB/wHGAXMBbwH/AcABawFn + Af8BugFkAV8B/wGzAVwBVgH/AaMBSgFEAf8D+wH/AYgBUAFRAf8IAAGuAYEBeQH/AboBewF5Bf8B8AHr + AegB/wHjAdoB1QH/AaEBfQFjAf8B3wHKAbsB/wHpAeMB3gH/AfcB9QHzCf8BlwF3AWEB/wHwAesB6AH/ + Ac8BjQGPAf8BwgF7AX0B/wO1Af8D+gH/AaMBvQHZAf8B5wHuAfUB/wGsAcEB1wH/AdsB5QHwAf8B2wHl + AfAB/wGsAcEB1wH/AdsB5QHwAf8BowG9AdkB/wP5Af8D9gH/A/YB/wPzAf8D+gH/A7UB/wFGAWEBSgH/ + AeQB7AHlAf8B5AHsAeUB/wHoAe4B6QH/AeoB7wHrAf8B7gHxAe4B/wHyAfMB8gH/AfUB9gH1Af8B+AH5 + AfgB/wP6Af8D/An/AYIBqwGJAf8BNAFOATgB/wgAAa0CfgH/AbQCgQH/AaIBcQFzAf8B4gGWAZUB/wHb + AY4BjAH/AdYBhwGEAf8B0AGBAX0B/wHKAXsBdgH/AcUBcwFuAf8BvwFrAWYB/wG5AWQBXQH/AagBTwFK + Bf8BiQFSAVMB/wgAAbgBgQF8Af8BugF8AXkF/wHwAesB6AH/AeMB2gHVAf8BqAGAAWkB/wHfAcoBuwH/ + AekB4wHeAf8B9wH1AfMJ/wGXAXgBYQH/Ae8B6gHnAf8B1AGTAZUB/wHJAYQBhwH/A7UB/wP6Af8BjQGr + Ac8B/wHnAe0B9QH/AYIBngG2Af8B2wHlAfAB/wHbAeUB8AH/AYIBngG2Af8B2wHlAfAB/wGNAasBzgH/ + A/UB/wPzAf8D8AH/A+8B/wP6Af8DtQH/AVYBcQFaAf8B6gHvAeoB/wHfAeoB4AH/AeAB6gHiAf8B5AHs + AeUB/wHoAe4B6QH/AewB8AHtAf8B8AHyAfAB/wHyAfMB8gH/AfUB9gH1Af8B+AH5AfgB/wP7Bf8BggGr + AYkB/wE0AU4BOAH/CAABsAF+AX8B/wG6AYUBhgH/AagCdwH/AegBngGdAf8B4QGWAZQB/wHcAY4BjAH/ + AdYBhgGEAf8B0AGBAX4B/wHLAXoBdgH/AcUBcwFuAf8BvwFrAWUB/wGuAVYBUQX/AY0BVgFXAf8IAAHC + AYcBhAH/Ab0BfQF6Bf8B8AHrAegB/wHjAdoB1QH/Aa8BhgFtAf8B3wHKAbsB/wHpAeMB3gH/AfcB9QHz + Cf8BngF7AWUB/wHvAegB5QH/AdUBlgGYAf8BzQGJAYwB/wO1Af8D+gH/AYIBngG2Af8BjAGqAc0B/wHa + AeQB7wH/AdsB5QHwAf8B2wHlAfAB/wHbAeUB8AH/AY0BqwHOAf8BgQGcAbQB/wPwAf8D7gH/A+wB/wPr + Af8D+gH/A7UB/wFjAX4BZwH/Ae0B8QHtAf8B2AHlAdoB/wOYAf8DmAH/AcYBzAHHAf8DmAH/A5gB/wOY + Af8DmAH/AfQB9QH0Af8B9QH2AfUB/wP7Af8BggGrAYkB/wE0AU4BOAH/CAABtgGBAYIB/wHCAYwBjQH/ + Aa0BewF8Af8B7QGlAaQB/wHnAZ0BnAH/AeIBlgGTAf8B3AGNAYsB/wHWAYYBgwH/Ac8BgAF9Af8BywF6 + AXYB/wHEAXEBbgH/AbUBXQFZBf8BkQFZAVoB/wgAAcUBigGIAf8BvQF/AXwF/wHwAesB6AH/AeMB2gHV + Af8BwgGXAX4B/wHfAcoBuwH/AekB4wHeAf8B9wH1AfMJ/wGjAX0BZwH/AewB5gHhAf8B1wGYAZsB/wHQ + AY0BkAH/A7UB/wP6Af8BggGeAbYB/wGrAcAB1gH/AYwBqQHNAf8BiwGpAc0B/wGNAasBzgH/AYwBqQHN + Af8BiwGpAc0B/wF/AZoBsgH/A+sB/wPkAf8D5AH/A+IB/wP6Af8DtQH/AW8BiQFzAf8B8wH1AfMB/wHS + AeEB1AH/AdYB5AHYAf8B2QHmAdsB/wHbAecB3QH/Ad8B6gHgAf8B4wHsAeQB/wHnAe4B6AH/AeoB7wHr + Af8B7AHwAe0B/wHwAfIB8AH/AfcB+AH3Af8BgQGqAYYB/wE0AU4BOAH/CAABuwKGAf8ByAKSAf8BsgGA + AYEB/wHyAqsB/wHtAaQBowH/AeYBnQGbAf8B4AGVAZIB/wHbAY4BiwH/AdQBhwGEAf8B0AGBAX0B/wHK + AXgBdQH/AboBZQFhBf8BlQFbAVwB/wgAAcgCjgH/AcABgQF+Av8B/QL/AfAB6wHoAf8B4wHaAdUB/wHI + AZsBgQH/Ad8BygG7Af8B6QHjAd4B/wH3AfUB8wn/AagBgQFrAf8B6wHhAd8B/wHXAZgBmwH/AdUBlQGY + Af8DtQH/A/oB/wP6Af8BgQGdAbUB/wGqAb8B1QH/AYsBqQHNAf8BiwGpAc0B/wGLAakBzQH/AX8BmgGy + Af8D6wH/A+IB/wP6Af8D+gH/A/oB/wP1Af8DtQH/AW8BiQFzAf8B9wH4AfcB/wHNAd4B0AH/A5gB/wOY + Af8DmAH/A5gB/wHCAckBxAH/A5gB/wHGAcwBxwH/A5gB/wOYAf8B8AHyAfAB/wGCAasBiQH/ATQBTgE4 + Af8IAAG/AooB/wHQAZgBmQH/AbgBgwGEAf8B9wKxAf8B8gGrAaoB/wHsAaQBowH/AeYBnAGbAf8B4AGU + AZMB/wHaAY0BiwH/AdYBhQGDAf8B0AGAAXwB/wHAAWsBaAX/AZgCXwH/CAABzwKWAf8BwgGEAYAD/wH+ + Af8B8AHrAegB/wHiAc4BwQH/AdwBugGpAf8B4QHEAbMB/wHpAeMB3gH/AfcB9QHzCf8BuQGLAXIB/wHa + AZ0BnwH/AeIBqQGsAf8EAAO1Af8D+gH/A/oB/wP2Af8BgQGcAbQB/wGAAZsBswH/AYABnAG0Af8BfwGa + AbIB/wPpAf8D5AH/A94B/wP6Af8D8gH/A90B/wOtAf8D0gH/AXkBkwF9Af8B/AH9AfwB/wHFAdgBxwH/ + AckB2wHMAf8BzQHeAdAB/wHRAeAB0wH/AdQB4wHWAf8B1gHkAdgB/wHZAeYB2wH/Ad0B6AHfAf8B4AHq + AeIB/wHkAewB5QH/AeoB7wHrAf8BiAGvAY4B/wE0AU4BOAH/CAABxQGOAY8B/wHXAp8B/wG9AYcBiAH/ + AfsCtgH/AfcBsQGyAf8B8gGrAaoB/wHtAaMBogH/AecBmwGaAf8B4AGUAZIB/wHaAY0BiQH/AdUBhgGC + Af8BxgFxAW8F/wGbAWEBYgH/CAAB1AKeAf8BxgGJAYEC/wL+Af8B8AHrAecB/wHlAcMBrwH/BAAB6QHU + AcsB/wHKAa4BoQH/AcoBowGOAf8B9gHwAewF/wHEAZEBdgH/DAADtQH/A/wB/wP6Af8D9gH/A/MB/wPw + Af8D8AH/A+4B/wPoAf8D4AH/A9cB/wP6Af8D7wH/A6wB/wPSAf8EAAFuAYMBcQX/AfcB+AH3Af8B7wHz + AfAB/wHnAe4B6AH/AdwB6AHdAf8B0wHiAdUB/wHLAdwBzgH/AcMB1wHGAf8BuQHQAbwB/wGwAcoBtAH/ + AagBxQGsAf8BlQG4AZoB/wGNAbMBkgH/ASoBPAEsAf8IAAHKAZQBlQH/AeIBqAGpAf8BwgGNAY4C/wG9 + Ab8B/wH+AbkBugH/AfsCtQH/AfUCrQH/AfABpgGlAf8B6gGeAZ0B/wHkAZcBlAH/Ad0BjgGMAf8BzgF6 + AXgF/wGkAWgBaQH/CAAB4gGvAbEB/wHJAZABhQL/Af4C/wHzAeoB5QH/Ad0BsQGXAf8MAAHoAdYBywH/ + AccBrAGeAf8BygGjAY4B/wHPAacBkAH/DAADuQH/A/cB/wP8Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6 + Af8D+gH/A/oB/wP6Af8DrwH/A9IB/wwAAW0BggFxAf8BeQGTAX0B/wFvAYkBcwH/AW8BiQFzAf8BbwGJ + AXMB/wFvAYkBcwH/AWMBfgFnAf8BYwF+AWcB/wFjAX4BZwH/AVYBcQFaAf8BVgFxAVoB/wFGAWEBSgH/ + ATkBTAE8Af8MAAHNApQB/wHKApAB/wHEAYsBjAH/AdsBqQGqAf8B2QGnAagB/wHWAqYB/wHUAqQB/wHR + AqEB/wHOAp8B/wHLApwB/wHIApkB/wHBAZUBlAH/Ac8CuAH/EAAB1QGjAY0F/wHfAbYBnwH/LAAD5QH/ + A7kB/wO1Af8DtQH/A7UB/wO1Af8DtQH/A7UB/wO1Af8DtQH/A7UB/wO1Af8D0gH/mAAB2wGtAZMB/3AA + AUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA/+BAAL/AcABAQX/AecBgAEBAfgDAAH/ + AccBgAEBAfADAAH/AYcBgAEBAeADAAH/AQcBgAEBAcADAAGAAQMBgAEBAYAEAAEBAYABAQGABAABAQGA + AQEBgAQAAQEBgAEBAYAEAAEBAYABAQGABAABAQGAAQEBgAQAAQEBgAEBAYABAQMAAQEBgAEBAYIBBwEA + AQEBAAEBAYABAQGDAYcBAAEDAYABAwGAAQMBxwH/AQABBwT/Ae8D/ws= + +