diff --git a/artTools/README.md b/artTools/README.md
index 9a9dba8fc77a9353763ccb2e3f36ee0473ddba46..5ec58f83e73815c6318f703d570bcbb930f7f9d2 100644
--- a/artTools/README.md
+++ b/artTools/README.md
@@ -66,6 +66,10 @@ Execute
 
     python3 vector_layer_split.py vector_source.svg tw ../src/art/vector/layers/
 
+For revamped art 
+
+	python3 vector_revamp_layer_split.py vector_revamp_source.svg tw ../src/art/vector_revamp/layers/
+
 . This application reads all groups in `vector_source.svg`.  
 Each group is stored in a separate file in the target directory `/src/art/vector/layers/`.  
 The group ID sets the file name. Therefore, the group ID **must not** contain spaces or any other weird characters.
@@ -97,4 +101,4 @@ You can define multiple CSS classes to one element, e.g. "skin torso". When proc
 
 You can put variable text into the image using single quotes, e.g. "'+_tattooText+'". The single quotes *break* the quoting in Twine so the content of the Twine variable `_tattooText` is shown upon display. You can even align text on paths.
 
-An anonymous group can be used for dynamic transformation. However, finding the correct parameters for the affine transformation matrix can be cumbersome. Use any method you see fit. See `src/art/vector/Boob.tw` for one example of the result.
+An anonymous group can be used for dynamic transformation. However, finding the correct parameters for the affine transformation matrix can be cumbersome. Use any method you see fit. See `src/art/vector/Boob.tw` for one example of the result.
\ No newline at end of file
diff --git a/artTools/vector_revamp_layer_split.py b/artTools/vector_revamp_layer_split.py
new file mode 100644
index 0000000000000000000000000000000000000000..51c4dcfff12034146a10a396dddb501ef574da40
--- /dev/null
+++ b/artTools/vector_revamp_layer_split.py
@@ -0,0 +1,119 @@
+#!/usr/bin/env python3
+
+'''
+Application for splitting groups from one SVG file into separate files
+
+Usage:
+python3 vector_layer_split.py infile format outdir
+
+Usage Example:
+python3 vector_layer_split.py vector_source.svg tw ../src/art/vector/layers/
+'''
+
+import lxml.etree as etree
+import sys
+import os
+import copy
+import re
+import inkscape_svg_fixup
+
+input_file = sys.argv[1]
+output_format = sys.argv[2]
+output_directory = sys.argv[3]
+if not os.path.exists(output_directory):
+    os.makedirs(output_directory)
+
+ns = {
+  'svg' : 'http://www.w3.org/2000/svg',
+  'inkscape' : 'http://www.inkscape.org/namespaces/inkscape',
+  'sodipodi':"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
+}
+
+tree = etree.parse(input_file)
+inkscape_svg_fixup.fix(tree)
+
+# prepare output template
+template = copy.deepcopy(tree)
+root = template.getroot()
+
+# remove all svg root attributes except document size
+for a in root.attrib:
+  if (a != "viewBox"):
+    del root.attrib[a]
+
+# add placeholder for CSS class (needed for workaround for non HTML 5.1 compliant browser)
+if output_format == 'tw':
+  root.attrib["class"] = "'+_art_display_class+'"
+
+# remove all content, including metadata
+# for twine output, style definitions are removed, too
+defs = None
+for e in root:
+  if (e.tag == etree.QName(ns['svg'], 'defs')):
+    defs = e
+  if (e.tag == etree.QName(ns['svg'], 'g') or
+      e.tag == etree.QName(ns['svg'], 'metadata') or
+      e.tag == etree.QName(ns['svg'], 'defs') or
+      e.tag == etree.QName(ns['sodipodi'], 'namedview') or
+      (output_format == 'tw' and e.tag == etree.QName(ns['svg'], 'style'))
+      ):
+    root.remove(e)
+# template preparation finished
+
+# prepare regex for later use
+regex_xmlns = re.compile(' xmlns[^ ]+',)
+regex_space = re.compile('[>][ ]+[<]',)
+
+# find all groups
+layers = tree.xpath('//svg:g',namespaces=ns)
+for layer in layers:
+  i = layer.get('id')
+  if ( # disregard non-content groups
+    i.endswith("_") or # manually suppressed with underscore
+    i.startswith("XMLID") or # Illustrator generated group 
+    i.startswith("g") # Inkscape generated group
+  ):
+    continue
+  # create new canvas
+  output = copy.deepcopy(template)
+  # copy all shapes into template
+  canvas = output.getroot()
+  for e in layer:
+    canvas.append(e)
+  # represent template as SVG (binary string)
+  svg = etree.tostring(output, pretty_print=False)
+  # poor man's conditional defs insertion
+  # TODO: extract only referenced defs (filters, gradients, ...)
+  # TODO: detect necessity by traversing the elements. do not stupidly search in the string representation
+  if ("filter:" in svg.decode('utf-8')):
+    # it seems there is a filter referenced in the generated SVG, re-insert defs from main document
+    canvas.insert(0,defs)
+    # re-generate output
+    svg = etree.tostring(output, pretty_print=False)
+  
+  if (output_format == 'tw'):
+    # remove unnecessary attributes
+    # TODO: never generate unnecessary attributes in the first place
+    svg = svg.decode('utf-8')
+    svg = regex_xmlns.sub('',svg)
+    svg = svg.replace(' inkscape:connector-curvature="0"','') # this just saves space
+    svg = svg.replace('\n','').replace('\r','') # print cannot be multi-line
+    svg = regex_space.sub('><',svg) # remove indentaion
+    svg = svg.replace('svg:','') # svg namespace was removed
+    svg = svg.replace('<g ','<g transform="\'+_art_transform+\'"') # internal groups are used for scaling
+    svg = svg.encode('utf-8')
+  
+  # save SVG string to file
+  i = layer.get('id')
+  output_path = os.path.join(output_directory,i+'.'+output_format)
+  with open(output_path, 'wb') as f:
+    if (output_format == 'svg'):
+      # Header for normal SVG (XML)
+      f.write('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n'.encode("utf-8"))
+      f.write(svg)
+    elif (output_format == 'tw'):
+      # Header for SVG in Twine file (SugarCube print statement)
+      f.write((':: Art_Vector_Revamp_%s [nobr]\n\n'%(i)).encode("utf-8"))
+      f.write("<<print '<html>".encode("utf-8"))
+      f.write(svg)
+      f.write("</html>' >>".encode("utf-8"))
diff --git a/artTools/vector_revamp_source.svg b/artTools/vector_revamp_source.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fda23bf5b996211a9477cba9261e2c63231b2bbc
--- /dev/null
+++ b/artTools/vector_revamp_source.svg
@@ -0,0 +1,1649 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" viewBox="0 0 560 1000" xml:space="preserve" id="svg4356" sodipodi:docname="vector_revamp_source.svg" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" width="560" height="1000" enable-background="new">
+  <metadata id="metadata4362">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs4360">
+    <filter style="color-interpolation-filters:sRGB" inkscape:label="Filter_Shine_Blur" id="Filter_Shine_Blur" width="4" x="-2" height="4" y="-2">
+      <feGaussianBlur stdDeviation="1.5 1.5" result="blur" id="feGaussianBlur4091-3"/>
+    </filter>
+    <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter3015">
+      <feBlend inkscape:collect="always" mode="overlay" in2="BackgroundImage" id="feBlend3017"/>
+    </filter>
+  </defs>
+  <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="2482" inkscape:window-height="1411" id="namedview4358" showgrid="false" inkscape:zoom="1.9999999" inkscape:cx="182.93538" inkscape:cy="35.507623" inkscape:window-x="69" inkscape:window-y="-9" inkscape:window-maximized="1" inkscape:current-layer="Notes_" inkscape:object-nodes="true" inkscape:object-paths="true" inkscape:snap-smooth-nodes="false" inkscape:snap-object-midpoints="true" inkscape:snap-global="false" inkscape:snap-nodes="true" inkscape:snap-intersection-paths="false" inkscape:snap-bbox="true" inkscape:snap-others="false" showguides="true" inkscape:lockguides="true"/>
+  <style type="text/css" id="style">
+	/* please maintain these definitions manually  */
+	.white{fill:#FFFFFF;}
+	.skin{fill:#F6E0E8;}
+	.head{}
+	.torso{}
+	.boob{}
+	.penis{}
+	.scrotum{}
+	.areola{fill:#D76B93;}
+	.labia{fill:#D76B93;}
+	.hair{fill:#3F403F;}
+	.shoe{fill:#3E65B0;}
+	.shoe_shadow{fill:#15406D;}
+	.smart_piercing{fill:#4DB748;}
+	.steel_piercing{fill:#787878;}
+	.steel_chastity{fill:#BABABA;}
+	.gag{fill:#BF2126;}
+	.shadow{fill:#010101;}
+	.glasses{fill:#010101;}
+	.lips{fill:#de8787;}
+	.eyeball{fill:#ffffff;}
+	.iris{fill:#55ddff;}
+	.highlight1{fill:#ffffff;}
+	.highlight2{fill:#ffffff;opacity:0.58823529;}
+	.highlight3{fill:#ffffff;fill-opacity:0.19607843;}
+	.highlightStrong{fill:#ffffff;}
+	.shade1{fill:#623729;}
+	.shade2{fill:#764533;}
+	.shade3{fill:#88503a;}
+	.shade4{fill:#574b6f;}
+	.armpit_hair{fill:#3F403F;}
+	.pubic_hair{fill:#3F403F;}
+	.muscle_tone{fill:#010101;}
+	.lips{fill:#010101;}
+	.belly_details{fill-opacity:1;}
+	.belly{fill:#F6E0E8;}
+	.belly_upper{fill:#F6E0E8;}
+	.head{fill:#F6E0E8;}</style>
+  <g inkscape:groupmode="layer" id="Original_Canvas_" inkscape:label="Original_Canvas_" style="display:inline;opacity:1">
+    <g inkscape:groupmode="layer" id="background_" inkscape:label="background_" style="display:inline;opacity:1">
+      <rect style="display:inline;opacity:0.40400002;fill:#ff0000" id="rect4823" width="1000" height="1000" x="-220" y="0.25"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Arm_" style="display:inline;opacity:1" inkscape:label="Arm_">
+    <g inkscape:groupmode="layer" id="Arm_Right_High" style="display:inline" inkscape:label="Arm_Right_High">
+      <path sodipodi:nodetypes="ccccsccccccccccccccccccscsscc" inkscape:connector-curvature="0" id="path3267" d="m 259.39085,219.99261 c 0,0 -11.4994,-9.89625 -19.3512,-17.30477 -13.55495,-10.6354 -16.5421,-12.96229 -23.61491,-19.05855 -7.84581,-5.48263 -11.33539,-8.77242 -14.18124,-11.27461 -1.59426,-0.41862 -14.57996,-10.23511 -15.50675,-17.99531 -0.30105,-2.52075 7.13378,-13.12186 10.18104,-16.29746 10.0981,-12.66515 14.28981,-11.39852 26.56588,-18.49891 20.9156,-10.12621 37.2882,-17.70528 37.28061,-17.28893 1.94149,-0.87834 15.65824,-4.611687 14.74106,-3.976477 2.64756,-0.166485 9.27182,1.396148 9.11158,1.835007 15.92104,-4.527759 22.02179,-3.105036 29.56893,-2.843117 0.53511,0.818414 1.47862,0.628049 1.41733,3.025847 3.51257,1.2406 4.50117,3.47693 4.64203,6.36438 2.11132,1.72264 3.93959,3.50445 3.36111,6.55914 2.5318,1.96802 2.44818,4.26321 1.92693,6.80088 -0.30855,3.98719 -1.98153,6.77689 -4.21016,9.07522 -2.10065,0.1102 -4.15584,0.4605 -6.38828,0.70975 -0.0238,1.09284 -0.29881,2.0174 -0.90926,2.5303 -3.51244,4.3944 -6.24262,0.87047 -9.13633,-0.21053 -1.64333,0.0894 -4.13515,0.43539 -5.76534,-0.89566 -4.8078,-1.15706 -13.18021,-10.80666 -13.15481,-10.96256 -2.13384,0.12843 -4.26201,0.27444 -6.59247,-0.21243 -6.9898,0.45253 -14.36983,2.47734 -17.85002,2.73673 -11.11904,3.05074 -35.45572,28.98109 -46.09657,27.81755 -0.80241,-0.0877 0.70344,1.51406 1.18795,2.30615 8.10171,5.03261 22.54551,16.19148 35.37619,25.48062 6.28262,4.54849 12.39945,5.64348 16.97459,8.35665 1.99185,1.18121 7.93634,5.85615 7.93634,5.85615 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.94240636"/>
+      <path d="m 259.39085,219.99261 c 0,0 -11.09917,-10.27939 -19.3512,-17.30477 -12.8911,-10.97488 -15.50869,-12.98224 -22.86491,-18.93355 -7.35622,-5.95133 -12.41012,-9.56779 -15.40224,-11.92994 -0.51549,-0.40696 -14.10708,-9.74715 -14.99488,-17.28574 -0.36683,-3.11486 7.78548,-13.45707 10.63018,-17.00703 7.42929,-9.27118 14.77475,-11.67837 27.41038,-18.23375 17.64518,-9.15434 35.9461,-17.02376 35.9461,-17.02376 0,0 13.0177,-3.417078 14.74106,-3.976477 1.26304,0.05577 8.3248,1.548142 9.11158,1.835007 13.99391,-3.008292 21.8199,-2.945865 29.56893,-2.843117 0.50937,0.842338 1.19497,0.891556 1.41733,3.025847 3.39454,1.3705 4.22052,3.78576 4.64203,6.36438 2.02196,1.78044 3.41759,3.84218 3.36111,6.55914 2.26855,2.08814 2.03529,4.45164 1.92693,6.80088 -0.46156,3.85176 -2.32676,6.4713 -4.21016,9.07522 -2.14619,-0.002 -4.28171,0.14977 -6.38828,0.70975 -0.23338,0.93759 -0.43868,1.91379 -0.90926,2.5303 -3.70065,3.95156 -6.25201,0.84837 -9.13633,-0.21053 -1.58528,-0.13117 -4.04804,0.10436 -5.76534,-0.89566 -4.73466,-1.60596 -13.15481,-10.96256 -13.15481,-10.96256 l -6.59247,-0.21243 c -7.35428,-0.284 -11.09037,1.70346 -16.764,2.56724 l -1.67401,0.29449 c -12.76702,3.05181 -20.62907,14.16069 -31.02434,21.168 -4.3974,2.96423 -13.29629,8.8307 -13.29629,8.8307 0,0 18.92983,14.51195 35.0083,25.85293 6.67662,4.70936 13.08253,5.86673 17.21619,8.21637 1.41226,0.80275 8.86431,5.54352 8.86431,5.54352" id="path3269" inkscape:connector-curvature="0" sodipodi:nodetypes="csscssscccccccccccccccccccssc" class="skin"/>
+      <path inkscape:connector-curvature="0" d="m 314.8035,130.10722 c -4.91505,-2.78303 -4.69322,-5.15544 -5.10067,-6.66314 0.97688,2.53491 1.35543,2.94959 5.10067,6.66314 z" class="shadow" id="path3271" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 309.82448,123.59658 c 4.27234,-1.20558 4.02571,-0.74304 5.73079,-0.32343 -1.60792,-0.16837 -1.40724,-0.30207 -5.73079,0.32343 z" class="shadow" id="path3273" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 314.80546,130.07947 c -0.098,-3.36849 0.14746,-3.03453 0.87734,-5.19396 -0.55565,2.12164 -0.46563,2.39281 -0.87734,5.19396 z" class="shadow" id="path3275" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 108.68863,19.303827 c -0.49935,0.469172 -0.74546,0.546712 -1.18095,0.97262 0.52753,-0.326257 0.6995,-0.321405 1.18095,-0.97262 z" class="shadow" id="path3277" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 306.51108,126.0649 c 3.14298,-3.2066 6.51432,-6.47026 8.54253,-6.79894 -1.85694,0.84134 -5.34042,4.08708 -8.54253,6.79894 z" class="shadow" id="path3279" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 315.55037,123.31458 c 1.95722,-0.61691 2.21018,-0.63947 4.2775,-0.5527 -1.99038,0.20488 -2.24788,0.19991 -4.2775,0.5527 z" class="shadow" id="path3281" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 315.67213,124.90299 c 1.42546,1.47543 2.47702,1.89027 4.24668,2.50237 -2.20976,-0.25431 -2.91021,-0.81821 -4.24668,-2.50237 z" class="shadow" id="path3283" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 317.19371,115.14694 c 3.28076,-3.02925 4.48915,-1.83384 6.46354,-1.93829 -1.98636,0.18987 -3.26143,-0.77356 -6.46354,1.93829 z" class="shadow" id="path3285" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 314.22671,108.02799 c 3.60791,-2.53496 4.00354,-1.64608 6.07674,-1.33616 -2.01029,-0.14966 -2.54463,-0.84091 -6.07674,1.33616 z" class="shadow" id="path3287" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 310.51892,101.21471 c 3.64838,-2.022538 3.05965,-0.97171 5.11639,-0.89543 -1.9732,0.17927 -1.52109,-0.977392 -5.11639,0.89543 z" class="shadow" id="path3289" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 197.74447,147.63995 c 8.21562,0.67892 11.21099,4.73522 18.47445,5.31502 -5.31009,0.60942 -12.29205,-3.84289 -18.47445,-5.31502 z" class="shadow" id="path3291" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Right_Low" style="display:inline;opacity:1" inkscape:label="Arm_Right_Low">
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccccc" inkscape:connector-curvature="0" id="path6858" d="m 271.15625,190.83398 c -10e-4,4.6e-4 -8.26074,0.52813 -17.10937,12.11719 -1.95254,1.86976 -4.95834,7.89234 -5.26368,13.1211 -1.71092,6.18845 -0.1326,11.40008 0.002,11.34961 -0.19861,0 -8.95387,22.74833 -10.89063,34.11914 -4.73894,17.98871 -5.67054,26.42171 -7.78906,36.2246 -3.17908,9.89918 -4.89436,15.96148 -5.71485,19.94336 -5.06993,6.85112 -8.10421,13.34386 -8.54687,20.41211 -2.24109,9.40174 -4.38422,26.77908 -4.7832,46.10157 -3.50027,22.27819 -5.65754,42.50139 -5.24317,42.45995 -0.7027,2.24865 -3.2029,17.94008 -2.65136,16.86036 0.0698,2.98489 2.21741,10.2966 2.64062,10.08203 -3.09584,18.22842 -1.13432,24.9636 -0.20117,33.41406 0.86351,0.5359 0.75775,1.60998 3.14258,1.35156 1.54951,3.84452 3.86687,4.77729 6.75781,4.70704 1.90524,2.23359 3.84428,4.14478 6.83789,3.2539 2.18731,2.68613 4.46787,2.41076 6.95117,1.625 3.94723,-0.66167 6.57922,-2.7601 8.67188,-5.44336 -0.0772,-2.36656 0.089,-4.70108 0.13867,-7.22656 1.08731,-0.11312 1.98448,-0.49494 2.44141,-1.2207 4.06786,-4.29003 0.31185,-7.07578 -1.02344,-10.23828 -0.0572,-1.85161 0.0658,-4.67587 -1.40625,-6.40039 -1.58155,-5.30494 -11.94648,-13.93928 -12.09961,-13.89844 -0.062,-2.40524 -0.10595,-4.80553 -0.79883,-7.38281 -0.1713,-7.88139 1.18999,-16.32513 1.13866,-20.25192 6.09926,-36.72474 24.81008,-86.9047 23.00389,-104.64057 7.91689,-17.39493 20.65345,-84.67624 20.02344,-84.86524 0.59049,-15.19144 -1.41369,-30.38287 1.77147,-45.57431 z" style="fill:#000000"/>
+      <path d="m 271.15625,190.83398 c 0,0 -6.00932,-0.18284 -17.10937,12.11719 -1.50978,1.67298 -4.34625,7.6203 -5.26368,13.1211 -0.98724,5.91707 0.002,11.34961 0.002,11.34961 0,0 -8.36237,22.74833 -10.89063,34.11914 -3.94958,17.76318 -5.33355,26.32543 -7.78906,36.2246 -2.45551,9.89918 -4.67817,15.96148 -5.71485,19.94336 -0.29595,1.13676 -6.38568,7.78114 -8.54687,20.41211 -2.23481,13.06125 -3.14408,30.49951 -4.7832,46.10157 -2.32818,22.16098 -5.24317,42.45995 -5.24317,42.45995 0,0 -2.24718,14.88177 -2.65136,16.86036 0.16806,1.41327 2.2846,9.22162 2.64062,10.08203 -1.75274,15.94516 -0.99362,24.72441 -0.20117,33.41406 0.88506,0.50511 0.9952,1.27076 3.14258,1.35156 1.66848,3.70176 4.14973,4.43786 6.75781,4.70704 1.95491,2.12872 4.13447,3.53216 6.83789,3.2539 2.28362,2.38115 4.61893,1.9324 6.95117,1.625 3.79859,-0.8227 6.24384,-3.12343 8.67188,-5.44336 -0.19329,-2.40878 -0.23197,-4.81778 0.13867,-7.22656 0.91387,-0.33611 1.86874,-0.64375 2.44141,-1.2207 3.60965,-4.46626 0.289,-7.08457 -1.02344,-10.23828 -0.27193,-1.76901 -0.25643,-4.55193 -1.40625,-6.40039 -2.02253,-5.18735 -12.09961,-13.89844 -12.09961,-13.89844 l -0.79883,-7.38281 c -0.93798,-8.23224 0.71057,-12.58293 1.06641,-19.01954 l 0.1445,-1.90225 c 6.39226,-48.88511 24.38187,-87.12412 22.93164,-103.9707 6.9,-17.7 20.02344,-84.86524 20.02344,-84.86524 z" id="R" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccsscsscccccccccccccccccccc" class="skin"/>
+      <path inkscape:connector-curvature="0" d="m 238.37545,485.13693 c -3.21198,-5.29673 -5.55722,-4.86012 -7.09647,-5.19822 2.61397,0.89603 3.06106,1.2881 7.09647,5.19822 z" class="shadow" id="XMLID_511_-7-7-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 231.44183,480.06319 c -0.82136,4.89077 -0.38222,4.57738 0.18791,6.45803 -0.31103,-1.79147 -0.42645,-1.55565 -0.18791,-6.45803 z" class="shadow" id="XMLID_511_-7-7-1-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 238.34797,485.14132 c -3.36667,0.1564 -3.01191,0.40551 -5.09959,1.39553 2.06553,-0.79147 2.34386,-0.71189 5.09959,-1.39553 z" class="shadow" id="XMLID_511_-7-7-1-5-6" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 233.26996,486.52413 c -0.72996,-0.0584 -1.00098,0.0383 -1.64725,-0.0263 0.67334,-0.0766 0.82862,-0.19236 1.64725,0.0263 z" class="shadow" id="XMLID_511_-7-7-1-5-7-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 233.60737,476.14891 c -2.91668,3.78139 -5.8699,7.82362 -6.01695,10.12614 0.67334,-2.15084 3.59872,-6.31751 6.01695,-10.12614 z" class="shadow" id="XMLID_511_-7-7-1-3-1" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 231.67059,486.51243 c -0.44069,2.24565 -0.44065,2.53137 -0.17006,4.84494 0.027,-2.25028 -8.9e-4,-2.53891 0.17006,-4.84494 z" class="shadow" id="XMLID_511_-7-7-1-3-8-1" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 233.26486,486.52348 c 1.59776,1.48331 2.10493,2.63081 2.8727,4.56873 -0.45029,-2.4602 -1.0748,-3.20182 -2.8727,-4.56873 z" class="shadow" id="XMLID_511_-7-7-1-3-8-6-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 223.67488,489.00293 c -2.72762,3.92201 -1.42836,5.1838 -1.35666,7.4082 0.0124,-2.24458 -1.06157,-3.59957 1.35666,-7.4082 z" class="shadow" id="XMLID_511_-7-7-1-3-83-47" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 216.31402,486.23566 c -2.20575,4.25013 -1.28443,4.62391 -0.79086,6.92643 -0.32821,-2.24459 -1.06488,-2.78968 0.79086,-6.92643 z" class="shadow" id="XMLID_511_-7-7-1-3-83-4-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 209.19191,482.61276 c -1.69128,4.25504 -0.69622,3.5111 -0.43702,5.81362 0.003,-2.22896 -1.10982,-1.62999 0.43702,-5.81362 z" class="shadow" id="XMLID_511_-7-7-1-3-83-43-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 236.64537,334.13444 c 7.06021,-9.58357 6.87062,-4.51245 12.64676,-12.89388 -5.95381,6.59708 -7.27909,4.1666 -12.64676,12.89388 z" class="shadow" id="XMLID_511_-7-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 226.7125,330.8948 c 2.03004,-7.72779 -0.11206,-3.27501 -0.69988,-11.9658 -0.56212,8.05549 2.57621,4.47596 0.69988,11.9658 z" class="shadow" id="XMLID_511_-7-2-0" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Right_Mid" style="display:inline" inkscape:label="Arm_Right_Mid">
+      <path style="display:inline;opacity:1;fill:#000000" d="m 271.15625,190.83398 c -10e-4,4.6e-4 -8.26074,0.52813 -17.10937,12.11719 -1.95254,1.86976 -4.95834,7.89234 -5.26368,13.1211 -1.71092,6.18845 -0.1326,11.40008 0.002,11.34961 -0.19861,0 -8.95387,22.74833 -10.89063,34.11914 -4.73894,17.98871 -5.67054,26.42171 -7.78906,36.2246 -3.17908,9.89918 -4.89436,15.96148 -5.71485,19.94336 -5.06993,6.85112 -3.83658,27.45999 1.73218,31.83549 6.46958,7.18051 19.56181,18.80628 35.24542,30.09973 16.35743,15.52431 31.7849,28.77666 31.98592,28.41196 1.45277,1.85464 12.9542,12.81771 12.37815,11.75086 2.49735,1.63637 9.73647,4.01722 9.79996,3.54699 13.25237,12.89318 19.91118,15.10009 27.39877,19.12712 0.93127,-0.4069 1.75565,0.28969 2.89619,-1.82061 4.04485,0.9058 6.12792,-0.47298 7.7106,-2.89323 2.92029,-0.30127 5.5943,-0.81332 6.55954,-3.78379 3.45298,-0.27672 4.52039,-2.31078 5.2826,-4.80141 1.69512,-3.6256 1.46086,-6.98356 0.43901,-10.22932 -1.99242,-1.27938 -3.82034,-2.741 -5.87162,-4.21503 0.52388,-0.95948 0.7186,-1.91488 0.38031,-2.70296 -1.22399,-5.78391 -5.64919,-4.27207 -9.01091,-4.96722 -1.55706,-1.00364 -3.81274,-2.7076 -6.06804,-2.47414 -5.26554,-1.70815 -18.25679,1.92653 -18.31006,2.0758 -2.01565,-1.31386 -4.01697,-2.63976 -6.53228,-3.53178 -6.58669,-4.3314 -12.76672,-10.24385 -16.02915,-12.42993 -26.77777,-25.86229 -53.20972,-51.69811 -55.01591,-69.43398 7.91689,-17.39493 20.65345,-84.67624 20.02344,-84.86524 0.59049,-15.19144 -1.41369,-30.38287 1.77147,-45.57431 z" id="path3186" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/>
+      <path class="skin" sodipodi:nodetypes="ccccsscsscccccccccccccccccccc" inkscape:connector-curvature="0" id="path3188" d="m 271.15625,190.83398 c 0,0 -6.00932,-0.18284 -17.10937,12.11719 -1.50978,1.67298 -4.34625,7.6203 -5.26368,13.1211 -0.98724,5.91707 0.002,11.34961 0.002,11.34961 0,0 -8.36237,22.74833 -10.89063,34.11914 -3.94958,17.76318 -5.33355,26.32543 -7.78906,36.2246 -2.45551,9.89918 -4.67817,15.96148 -5.71485,19.94336 -0.29595,1.13676 -7.44168,22.88828 1.73218,31.83549 9.48636,9.252 23.32893,19.89639 35.24542,30.09973 16.92605,14.49271 31.98592,28.41196 31.98592,28.41196 0,0 10.97835,10.29527 12.37815,11.75086 1.25905,0.66361 8.88947,3.35187 9.79996,3.54699 12.13452,10.4916 19.79407,14.8485 27.39877,19.12712 0.91815,-0.44211 1.61108,-0.0983 2.89619,-1.82061 3.99482,0.72683 6.00895,-0.89851 7.7106,-2.89323 2.86213,-0.40168 5.25455,-1.3999 6.55954,-3.78379 3.25651,-0.52908 4.21224,-2.70662 5.2826,-4.80141 1.47818,-3.59459 0.97138,-6.91359 0.43901,-10.22932 -2.09307,-1.20775 -4.09857,-2.54294 -5.87162,-4.21503 0.24184,-0.94321 0.5304,-1.90402 0.38031,-2.70296 -1.62912,-5.50663 -5.66939,-4.25824 -9.01091,-4.96722 -1.6109,-0.77996 -3.89354,-2.37194 -6.06804,-2.47414 -5.41896,-1.27832 -18.31006,2.0758 -18.31006,2.0758 l -6.53228,-3.53178 c -7.31065,-3.89922 -9.95748,-7.72551 -15.05541,-11.6711 l -1.4843,-1.19845 c -36.62429,-33.00419 -53.05512,-52.14778 -54.50535,-68.99436 6.9,-17.7 20.02344,-84.86524 20.02344,-84.86524 z"/>
+      <path sodipodi:nodetypes="ccc" id="path3190" class="shadow" d="m 359.96083,414.41916 c -6.184,-0.36101 -7.15535,1.81781 -8.30722,2.89336 2.22113,-1.64386 2.79767,-1.7895 8.30722,-2.89336 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3192" class="shadow" d="m 351.84852,417.24907 c 3.56093,3.45167 3.55208,2.91224 5.42413,3.51001 -1.65158,-0.7605 -1.52291,-0.53165 -5.42413,-3.51001 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3194" class="shadow" d="m 359.94885,414.44428 c -1.78171,2.86085 -1.37528,2.7101 -1.7448,4.99089 0.52044,-2.14988 0.74391,-2.33389 1.7448,-4.99089 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3196" class="shadow" d="m 233.26996,486.52413 c -0.72996,-0.0584 -1.00098,0.0383 -1.64725,-0.0263 0.67334,-0.0766 0.82862,-0.19236 1.64725,0.0263 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3198" class="shadow" d="m 349.8544,413.24474 c 1.45845,4.5474 3.11093,9.27291 4.92336,10.7006 -1.38888,-1.77496 -3.15963,-6.54816 -4.92336,-10.7006 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3200" class="shadow" d="m 357.2886,420.72046 c 1.59897,1.6372 1.83425,1.79931 3.89279,2.88939 -1.83755,-1.2992 -2.09103,-1.44003 -3.89279,-2.88939 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3202" class="shadow" d="m 358.2024,419.41402 c 2.12802,-0.47385 3.36067,-0.24028 5.39203,0.22725 -2.28124,-1.02532 -3.24627,-0.93195 -5.39203,-0.22725 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3204" class="shadow" d="m 354.80193,428.71736 c 1.68152,4.47153 3.45776,4.11776 5.33,5.321 -1.84113,-1.28394 -3.56627,-1.16856 -5.33,-5.321 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3206" class="shadow" d="m 348.34631,433.20791 c 2.24783,4.22802 3.07842,3.68152 5.25439,4.58173 -2.03443,-1.00349 -2.90129,-0.70625 -5.25439,-4.58173 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3208" class="shadow" d="m 341.32165,437.01632 c 2.54382,3.8072 2.49593,2.56571 4.5389,3.6589 -1.83361,-1.26734 -1.97191,-0.0112 -4.5389,-3.6589 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3212" class="shadow" d="m 232.75946,324.12197 c 6.44272,2.56904 8.97124,6.42201 15.31369,1.22631 -5.23343,2.95476 -7.65007,0.91512 -15.31369,-1.22631 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Left_High" inkscape:label="Arm_Left_High" style="display:inline">
+      <path sodipodi:nodetypes="cccccccccccccccccccccscccccccc" id="path3228" class="shadow" d="m 416.96515,136.81346 c 32.11702,-0.95542 12.44417,5.83226 -8.86061,-0.84231 -13.17517,-3.55885 -22.10975,-11.35491 -32.16663,-14.92538 -26.00796,-7.28693 -35.18199,-5.36422 -35.15592,-5.52718 -5.7001,-0.621 -8.60045,-1.23038 -8.1843,-1.25056 -2.1832,0.69779 -4.14081,1.89142 -6.17593,2.9871 -4.21706,4.76934 -8.18639,10.39866 -13.57388,12.35835 -1.92294,1.53597 -4.68187,1.38752 -6.42427,1.56556 -3.17523,1.49929 -6.0303,5.71999 -10.25413,1.05927 -0.71753,-0.67242 -1.08803,-1.79537 -1.17931,-2.88952 -2.44492,-0.27198 -4.8582,-0.24109 -7.22331,-0.265 -2.49592,-2.52948 -4.91084,-5.18137 -5.29842,-10.2787 -0.57251,-2.93616 -1.19034,-5.8172 1.73934,-8.15351 -0.63334,-3.27898 0.8596,-5.81144 3.36731,-7.9988 0.0414,-3.142308 0.47692,-6.148001 4.81868,-7.881954 -0.35575,-2.53162 0.83749,-2.644437 1.40361,-3.677788 8.67897,-0.933389 17.44184,-1.860384 33.40821,0.707292 0.76908,-0.432375 1.18909,-0.984061 2.97187,-1.064521 2.02588,0.323394 2.29331,2.593018 4.17997,2.916577 0.017,-0.122533 11.07469,-0.519229 28.23967,2.846153 22.33718,4.993821 38.1414,6.556701 50.90227,11.342701 15.98778,2.32201 35.44598,17.35468 35.9125,31.34547 0.25313,7.59105 -9.11293,16.51703 -12.98971,17.78179 -6.90871,5.56547 -40.15715,34.83106 -68.08145,53.02535 -12.76935,11.09792 1.0322,34.94142 -18.21974,33.80336 -11.42113,-1.91438 -15.90619,-47.50408 -15.80696,-47.55692 8.12889,-3.15008 13.68165,-10.49055 19.97602,-16.62467 6.29362,-1.56423 11.88648,-5.46072 17.60239,-8.94768 24.72621,-14.49206 27.79345,-19.88621 45.07272,-33.85449 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 416.34015,137.87596 c 27.19781,0.73794 6.76862,2.55782 -8.23561,-1.90481 -12.93847,-3.90325 -22.17008,-11.8098 -32.16663,-14.92538 -27.21775,-8.48286 -35.15592,-5.52718 -35.15592,-5.52718 -4.43404,-0.99709 -8.59402,-1.23228 -8.1843,-1.25056 -2.51009,0.47312 -4.29552,1.78509 -6.17593,2.9871 -4.50142,4.17994 -8.35339,10.0525 -13.57388,12.35835 -1.86742,1.32643 -4.6509,1.27068 -6.42427,1.56556 -3.17523,1.49929 -5.84837,5.36864 -10.25413,1.05927 -0.56736,-0.68182 -0.85844,-1.80974 -1.17931,-2.88952 -2.40238,-0.47006 -4.81155,-0.45831 -7.22331,-0.265 -2.2793,-2.88904 -4.539,-5.79859 -5.29842,-10.2787 -0.26857,-2.7479 -0.67956,-5.50083 1.73934,-8.15351 -0.23326,-3.18411 1.20628,-5.72923 3.36731,-7.9988 0.31255,-3.064215 1.08954,-5.971585 4.81868,-7.881954 0.11652,-2.52493 0.88382,-2.643795 1.40361,-3.677788 8.70196,-0.809319 17.4938,-1.580034 33.40821,0.707292 0.86624,-0.406652 1.55594,-0.886827 2.97187,-1.064521 1.97166,0.503435 2.26133,2.699256 4.17997,2.916577 0,0 11.28571,-1.354883 28.23967,2.846153 21.50866,5.329651 36.63325,6.513511 50.90227,11.342701 15.63351,5.29098 29.05276,12.30963 35.49429,28.83661 3.29595,8.45637 -8.6973,18.99285 -12.5715,20.29065 -7.2367,5.35747 -42.11286,34.38128 -68.08145,53.02535 -12.79099,11.05725 0.8543,34.6073 -18.21974,33.80336 -11.12304,-2.0731 -15.80696,-47.55692 -15.80696,-47.55692 3.13687,-5.26914 2.81848,-10.8608 20.30706,-17.24004 6.29362,-1.56423 11.55545,-4.84533 17.27136,-8.33229 18.03877,-8.34635 27.48335,-18.28231 44.44772,-32.792 z" class="skin" id="path3230" sodipodi:nodetypes="ccsccccccccccccccccsssccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 295.18882,129.21753 c 5.34665,-3.49364 4.94695,-6.10534 5.3092,-7.81066 -0.937,2.89145 -1.33607,3.38261 -5.3092,7.81066 z" class="shadow" id="path3234" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 300.37099,121.58603 c -4.87738,-0.98168 -4.57091,-0.48934 -6.46034,0.11744 1.79618,-0.32021 1.5622,-0.45178 6.46034,-0.11744 z" class="shadow" id="path3236" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 304.25086,124.04729 c -3.73519,-3.29389 -7.7306,-6.63208 -10.0306,-6.82802 2.14005,0.77849 6.26034,4.08751 10.0306,6.82802 z" class="shadow" id="path3242" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 293.91881,121.74899 c -2.2385,-0.52137 -2.5242,-0.52537 -4.84179,-0.25747 2.24964,0.0618 2.53867,0.0349 4.84179,0.25747 z" class="shadow" id="path3244" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 293.8827,123.52006 c -1.50826,1.75414 -2.66361,2.30138 -4.6134,3.12696 2.46702,-0.46549 3.21838,-1.14883 4.6134,-3.12696 z" class="shadow" id="path3246" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 294.93289,112.54791 c -4.05406,-2.84524 -8.44042,-1.75817 -10.74039,-1.95411 2.22191,0.51402 6.97014,-0.78639 10.74039,1.95411 z" class="shadow" id="path3248" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 296.36587,104.19814 c -3.97505,-2.90663 -6.59037,-1.31213 -8.89036,-1.50807 2.2402,0.3267 5.12011,-1.23244 8.89036,1.50807 z" class="shadow" id="path3250" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 299.03763,96.545358 c -4.03843,-2.845022 -4.24231,-1.560849 -6.5423,-1.756785 2.22279,0.451523 2.77205,-0.983725 6.5423,1.756785 z" class="shadow" id="path3252" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 415.57013,138.34367 c 4.33424,-2.83585 8.46725,1.10257 16.32437,-3.88923 -8.00202,4.48396 -11.55736,0.31819 -16.32437,3.88923 z" class="shadow" id="path3232" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Left_Low" inkscape:label="Arm_Left_Low" style="display:inline;opacity:1">
+      <path sodipodi:nodetypes="ccccccccccccccccccccccccccccc" id="path6856" class="shadow" d="m 376.26653,307.61106 c -2.14507,6.09632 0.95143,14.58239 5.2492,26.09205 1.87591,8.39384 1.26226,16.44062 3.6408,24.0503 3.37217,13.22418 9.98815,25.21016 12.07785,36.18157 4.14241,28.63267 6.86059,41.11676 7.02391,41.093 0.54035,5.7083 1.10863,8.61698 1.13471,8.20116 -0.72861,2.17311 -1.94979,4.11365 -3.07415,6.13307 -4.82849,4.1492 -10.51338,8.03853 -12.54906,13.39776 -1.56301,1.90103 -1.45359,4.66179 -1.65625,6.40149 -1.54405,3.15371 -5.8047,5.94881 -1.20417,10.23813 0.6622,0.72696 1.77977,1.11335 2.87256,1.22005 0.23741,2.44851 0.17236,4.86112 0.16282,7.22633 2.49394,2.53144 5.1114,4.98363 10.20275,5.44325 2.92776,0.61397 5.79979,1.27248 8.17729,-1.62387 3.26969,0.67965 5.82302,-0.77733 8.04562,-3.25386 3.14258,0.003 6.15413,-0.38994 7.94931,-4.70674 2.52633,0.39151 2.65601,-0.8 3.69726,-1.35146 1.05602,-8.6649 2.10684,-17.41379 -0.23479,-33.41487 0.44323,-0.76288 1.00078,-1.17506 1.10644,-2.95652 -0.2947,-2.03025 -0.53754,-3.92631 -0.8344,-5.81736 0.12272,-0.0153 -0.91142,-10.19582 -4.03375,-27.40667 -2.39433,-20.31058 -0.58347,-46.56592 -3.56145,-61.93369 -4.11097,-24.76433 -12.78003,-33.88061 -16.17665,-44.92823 -0.74024,-9.33448 -6.11497,-43.94368 -10.48131,-76.21312 1.72012,-16.83036 4.13085,-26.81911 -7.88563,-41.90342 -8.14189,-8.2351 -27.22056,-9.16634 -27.20662,-9.05478 2.10557,8.45982 -0.69822,17.22648 -2.08866,25.9048 2.34527,6.04617 2.38024,12.86244 2.82089,19.54348 2.09144,28.37203 6.68148,62.46708 16.82548,83.43815 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 376.26653,307.61106 c -1.88158,6.09632 1.78864,14.58239 5.2492,26.09205 2.46473,8.19757 1.44095,16.36694 3.6408,24.0503 3.71989,12.99237 10.12989,25.00635 12.07785,36.18157 4.97043,28.51471 7.02391,41.093 7.02391,41.093 0.93429,4.44769 1.11063,8.61058 1.13471,8.20116 -0.50858,2.50315 -1.84566,4.26985 -3.07415,6.13307 -4.24317,4.44186 -10.16962,8.21041 -12.54906,13.39776 -1.35273,1.84846 -1.33633,4.63248 -1.65625,6.40149 -1.54405,3.15371 -5.45081,5.77187 -1.20417,10.23813 0.67374,0.57695 1.79742,0.88394 2.87256,1.22005 0.43604,2.40878 0.39022,4.81755 0.16282,7.22633 2.85652,2.31993 5.73383,4.62055 10.20275,5.44325 2.74382,0.3074 5.49067,0.75728 8.17729,-1.62387 3.18049,0.27826 5.74573,-1.12514 8.04562,-3.25386 3.06833,-0.26918 5.98639,-1.00499 7.94931,-4.70674 2.52633,-0.0808 2.65601,-0.84635 3.69726,-1.35146 0.93229,-8.68965 1.82726,-17.46971 -0.23479,-33.41487 0.41885,-0.86041 0.90873,-1.54325 1.10644,-2.95652 -0.4755,-1.97859 -0.64423,-3.89583 -0.8344,-5.81736 0,0 -1.32658,-10.15105 -4.03375,-27.40667 -3.28397,-20.9322 -0.61749,-47.35642 -3.56145,-61.93369 -5.07086,-25.10879 -12.88754,-33.92208 -16.17665,-44.92823 -1.06963,-9.28742 -6.90951,-43.83017 -10.48131,-76.21312 1.6744,-16.82464 3.75524,-26.77216 -7.88563,-41.90342 -8.1,-7.9 -27.20662,-9.05478 -27.20662,-9.05478 -2.50151,5.59877 -7.25637,8.55837 -2.40116,26.5298 2.34527,6.04617 2.69274,12.23744 3.13339,18.91848 3.16851,28.04891 8.85591,61.81475 16.82548,83.43815 z" class="skin" id="L" sodipodi:nodetypes="csssccccccccccccccccssccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 400.21324,339.59811 c 2.28724,-7.90419 0.16428,-14.75962 4.08426,-29.01888 -3.08119,14.24267 -0.8821,20.11482 -4.08426,29.01888 z" class="shadow" id="XMLID_511_-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 389.91598,480.42287 c 3.56887,-5.29673 6.17469,-4.86012 7.88496,-5.19822 -2.90441,0.89603 -3.40117,1.2881 -7.88496,5.19822 z" class="shadow" id="XMLID_511_-7-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 397.62,475.34913 c 0.91262,4.89077 0.42469,4.57738 -0.20879,6.45803 0.34559,-1.79147 0.47383,-1.55565 0.20879,-6.45803 z" class="shadow" id="XMLID_511_-7-7-1" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 389.94651,480.42726 c 3.74075,0.1564 3.34657,0.40551 5.66621,1.39553 -2.29503,-0.79147 -2.60429,-0.71189 -5.66621,-1.39553 z" class="shadow" id="XMLID_511_-7-7-1-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 395.58875,481.81007 c 0.81106,-0.0584 1.11219,0.0383 1.83027,-0.0263 -0.74815,-0.0766 -0.92069,-0.19236 -1.83027,0.0263 z" class="shadow" id="XMLID_511_-7-7-1-5-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 395.21385,471.43485 c 3.24075,3.78139 6.52211,7.82362 6.6855,10.12614 -0.74816,-2.15084 -3.99858,-6.31751 -6.6855,-10.12614 z" class="shadow" id="XMLID_511_-7-7-1-3" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 397.36582,481.79837 c 0.48966,2.24565 0.48961,2.53137 0.18896,4.84494 -0.03,-2.25028 9.9e-4,-2.53891 -0.18896,-4.84494 z" class="shadow" id="XMLID_511_-7-7-1-3-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 395.59441,481.80942 c -1.77529,1.48331 -2.33881,2.63081 -3.19189,4.56873 0.50033,-2.4602 1.19423,-3.20182 3.19189,-4.56873 z" class="shadow" id="XMLID_511_-7-7-1-3-8-6" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 406.58031,480.91449 c 2.78763,4.09389 1.63865,8.46444 1.80204,10.76696 -0.48254,-2.22896 0.88488,-6.95833 -1.80204,-10.76696 z" class="shadow" id="XMLID_511_-7-7-1-3-83" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 414.94951,479.59973 c 2.85013,4.01576 1.21881,6.60828 1.3822,8.9108 -0.29504,-2.24459 1.30472,-5.10217 -1.3822,-8.9108 z" class="shadow" id="XMLID_511_-7-7-1-3-83-4" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 422.63931,477.03646 c 2.78763,4.07826 1.5007,4.26397 1.66409,6.56649 -0.42004,-2.22896 1.02283,-2.75786 -1.66409,-6.56649 z" class="shadow" id="XMLID_511_-7-7-1-3-83-43" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Left_Mid" inkscape:label="Arm_Left_Mid" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 376.26653,307.61106 c -2.14507,6.09632 -0.33627,-1.11766 -8.28781,8.24803 -6.41273,5.73171 -13.73675,9.1208 -19.21976,14.90883 -9.89974,9.39391 -17.1364,21.01569 -25.69503,28.19124 -22.97544,17.58176 -32.54807,26.04377 -32.44767,26.17476 -4.71971,3.25593 -6.98177,5.17073 -6.60604,4.99068 -2.25247,0.42386 -4.54216,0.30428 -6.85349,0.3077 -5.97727,-2.19144 -12.14538,-5.25725 -17.81681,-4.42042 -2.42192,-0.43726 -4.77865,1.00481 -6.39623,1.67643 -3.50625,0.19028 -8.02445,-2.1659 -9.52507,3.94239 -0.31164,0.93267 -0.10386,2.09675 0.336,3.10278 -2.02172,1.40151 -4.15962,2.52147 -6.22906,3.66676 -0.9935,3.41188 -1.85756,6.89293 0.22449,11.56178 0.89202,2.85535 1.71797,5.68378 5.40606,6.34661 1.00146,3.18589 3.51876,4.70427 6.7648,5.43665 1.53016,2.74488 3.34207,5.18227 7.98617,4.64392 0.89042,2.39641 1.99385,1.92846 2.98313,2.56849 8.0794,-3.30439 16.22958,-6.65429 29.05616,-16.50298 0.88216,0.0148 1.51394,0.30053 3.12066,-0.47613 1.62864,-1.24752 3.16542,-2.38431 4.67149,-3.56582 0.0732,0.0997 8.45625,-5.76864 21.95816,-16.88893 16.563,-11.99664 40.36676,-23.22176 52.33009,-33.31707 19.61377,-15.66755 35.65223,-41.26319 32.25561,-52.31081 -0.74024,-9.33448 -6.11497,-43.94368 -10.48131,-76.21312 1.72012,-16.83036 4.13085,-26.81911 -7.88563,-41.90342 -8.14189,-8.2351 -27.22056,-9.16634 -27.20662,-9.05478 2.10557,8.45982 -0.69822,17.22648 -2.08866,25.9048 2.34527,6.04617 2.38024,12.86244 2.82089,19.54348 2.09144,28.37203 6.68148,62.46708 16.82548,83.43815 z" class="shadow" id="path3147" sodipodi:nodetypes="ccccccccccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="csssccccccccccccccccssccccccc" id="path3149" class="skin" d="m 376.26653,307.61106 c -1.88158,6.09632 0.0721,-0.38679 -8.28781,8.24803 -5.95419,6.15001 -13.58527,9.24086 -19.21976,14.90883 -9.52778,9.5844 -16.88934,21.04002 -25.69503,28.19124 -22.4686,18.24708 -32.44767,26.17476 -32.44767,26.17476 -3.42707,2.98497 -6.9752,5.16935 -6.60604,4.99068 -2.43327,0.77692 -4.62773,0.47137 -6.85349,0.3077 -5.94727,-1.53772 -12.12776,-4.87332 -17.81681,-4.42042 -2.27347,-0.27933 -4.69587,1.09288 -6.39623,1.67643 -3.50625,0.19028 -7.69738,-1.94327 -9.52507,3.94239 -0.17505,0.86957 0.10502,2.00026 0.336,3.10278 -1.89015,1.55553 -4.01532,2.6904 -6.22906,3.66676 -0.63201,3.62524 -1.23701,7.25921 0.22449,11.56178 1.06993,2.54525 2.01696,5.16263 5.40606,6.34661 1.30836,2.91224 3.78469,4.46715 6.7648,5.43665 1.73156,2.54731 3.79719,4.73584 7.98617,4.64392 1.30274,2.16604 2.03431,1.90586 2.98313,2.56849 8.04065,-3.42448 16.14203,-6.92564 29.05616,-16.50298 0.95542,-0.054 1.79046,0.0406 3.12066,-0.47613 1.49535,-1.38016 3.08678,-2.46258 4.67149,-3.56582 0,0 8.21468,-6.10923 21.95816,-16.88893 16.67175,-13.07648 41.04026,-23.63702 52.33009,-33.31707 19.4463,-16.67353 35.54472,-41.30466 32.25561,-52.31081 -1.06963,-9.28742 -6.90951,-43.83017 -10.48131,-76.21312 1.6744,-16.82464 3.75524,-26.77216 -7.88563,-41.90342 -8.1,-7.9 -27.20662,-9.05478 -27.20662,-9.05478 -2.50151,5.59877 -7.25637,8.55837 -2.40116,26.5298 2.34527,6.04617 2.69274,12.23744 3.13339,18.91848 3.16851,28.04891 8.85591,61.81475 16.82548,83.43815 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3151" class="shadow" d="m 383.41945,309.3693 c 2.28724,-7.90419 0.16428,-14.75962 4.08426,-29.01888 -3.08119,14.24267 -0.8821,20.11482 -4.08426,29.01888 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3153" class="shadow" d="m 243.99178,394.75453 c 6.36467,0.53211 7.2545,3.0199 8.38384,4.34803 -2.19884,-2.09847 -2.78341,-2.3409 -8.38384,-4.34803 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3155" class="shadow" d="m 252.17869,399.00532 c -3.82444,3.18216 -3.78884,2.60335 -5.7396,2.96762 1.73249,-0.57209 1.58917,-0.34512 5.7396,-2.96762 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3157" class="shadow" d="m 389.94651,480.42726 c 3.74075,0.1564 3.34657,0.40551 5.66621,1.39553 -2.29503,-0.79147 -2.60429,-0.71189 -5.66621,-1.39553 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3159" class="shadow" d="m 395.58875,481.81007 c 0.81106,-0.0584 1.11219,0.0383 1.83027,-0.0263 -0.74815,-0.0766 -0.92069,-0.19236 -1.83027,0.0263 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3161" class="shadow" d="m 254.42221,394.99561 c -1.72043,4.67349 -3.64876,9.50965 -5.57914,10.77534 1.51274,-1.7022 3.5648,-6.57205 5.57914,-10.77534 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3163" class="shadow" d="m 246.42463,401.92902 c -1.72159,1.52278 -1.97104,1.6621 -4.1374,2.52807 1.94983,-1.12376 2.21692,-1.23748 4.1374,-2.52807 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3165" class="shadow" d="m 245.55098,400.388 c -2.1608,-0.82632 -3.4374,-0.75858 -5.54527,-0.55809 2.39176,-0.76317 3.37763,-0.51913 5.54527,0.55809 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3167" class="shadow" d="m 251.69058,409.54203 c -2.21424,4.43034 -6.59008,5.55902 -8.52045,6.8247 1.71049,-1.50842 6.50611,-2.62141 8.52045,-6.8247 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3169" class="shadow" d="m 256.9204,416.20694 c -2.11555,4.4468 -5.17445,4.28717 -7.10483,5.55286 1.81559,-1.35236 5.09049,-1.34957 7.10483,-5.55286 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3171" class="shadow" d="m 262.90878,421.66979 c -2.2006,4.42272 -2.99042,3.38983 -4.92079,4.65552 1.74097,-1.45386 2.90645,-0.45223 4.92079,-4.65552 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Stump" inkscape:label="Arm_Stump" style="display:inline">
+      <path sodipodi:nodetypes="scsas" id="path1420" inkscape:connector-curvature="0" d="m 358.5887,178.95455 c 14.62279,-1.68069 26.43944,8.01522 27.2351,21.9566 -0.56595,12.09082 -14.60862,20.72368 -26.56495,23.43702 -7.62636,1.73071 -15.19855,5.71989 -18.80847,0.59021 -9.48283,-13.47506 1.76879,-44.10237 18.13832,-45.98383 z" class="shadow"/>
+      <path class="skin" d="m 358.5887,178.95455 c 11.27433,-2.97859 26.97612,10.29832 27.2351,21.9566 0.26225,11.80571 -15.58625,19.08828 -26.56495,23.43702 -5.83173,2.31 -15.19855,5.71989 -18.80847,0.59021 -9.48283,-13.47506 2.20761,-41.77507 18.13832,-45.98383 z" inkscape:connector-curvature="0" id="path62-3" sodipodi:nodetypes="aaaaa"/>
+      <path sodipodi:nodetypes="ccccc" id="path1429" inkscape:connector-curvature="0" d="m 266.62049,190.96644 c 14.7851,-4.44494 28.94581,4.9963 30.24031,16.38814 1.33327,11.7331 -14.82389,22.17579 -26.56495,23.43702 -7.77555,0.83525 -18.48928,-3.87003 -20.48786,-11.43061 -2.96217,-11.75747 1.80873,-22.72825 16.8125,-28.39455 z" class="shadow"/>
+      <path class="skin" d="m 266.62049,190.96644 c 11.05043,-3.05578 28.94581,4.9963 30.24031,16.38814 1.33327,11.7331 -14.82389,22.17579 -26.56495,23.43702 -7.77555,0.83525 -18.44985,-3.88056 -20.48786,-11.43061 -2.86655,-10.61946 6.21083,-25.46287 16.8125,-28.39455 z" inkscape:connector-curvature="0" id="path62-3-9" sodipodi:nodetypes="aaaaa"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Arm_Hightlights_" inkscape:label="Arm_Hightlights_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Arm_Hightlights2" inkscape:label="Arm_Hightlights2" style="display:inline">
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7" class="highlight2" d="m 265.77944,193.45942 c -4.10072,1.03769 -6.4965,4.8075 -7.88783,5.69551 1.54928,-0.0618 6.54674,-0.73329 7.88783,-5.69551 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7" class="highlight2" d="m 376.43971,182.92074 c 1.39814,3.96435 9.20533,8.8149 11.5112,9.59607 -0.012,-1.47027 -4.46242,-9.07782 -11.5112,-9.59607 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9" class="highlight2" d="m 376.65484,195.65209 c -0.43813,1.40732 0.73929,4.4073 1.22362,5.11026 0.30485,-0.41575 0.64886,-3.48691 -1.22362,-5.11026 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0" class="highlight2" d="m 393.88595,237.77147 c -0.32539,0.74013 0.13184,2.44777 0.35259,2.86072 0.19174,-0.20786 0.56818,-1.86069 -0.35259,-2.86072 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4" class="highlight2" d="m 385.14008,263.75716 c -0.78222,2.40877 0.79804,8.13462 1.18455,9.61072 0.30165,-0.60698 1.05052,-6.02219 -1.18455,-9.61072 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2" class="highlight2" d="m 395.8318,320.41341 c -0.78222,2.40877 0.26679,5.72837 0.6533,7.20447 0.30165,-0.60698 1.58177,-3.61594 -0.6533,-7.20447 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3" class="highlight2" d="m 403.73963,350.27896 c -0.78222,2.40877 7.11689,32.90779 7.5034,34.38389 0.30165,-0.60698 -5.26833,-30.79536 -7.5034,-34.38389 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9" class="highlight2" d="m 401.89462,412.05807 c -0.78222,2.40877 1.74189,13.28279 2.1284,14.75889 0.30165,-0.60698 0.10667,-11.17036 -2.1284,-14.75889 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9" class="highlight2" d="m 426.17396,448.15929 c -0.29986,0.92338 0.66774,5.09182 0.8159,5.65767 0.11563,-0.23268 0.0409,-4.28204 -0.8159,-5.65767 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9" class="highlight2" d="m 419.66199,478.73368 c -0.29986,0.92338 0.16774,2.27932 0.3159,2.84517 0.11563,-0.23268 0.5409,-1.46954 -0.3159,-2.84517 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7" class="highlight2" d="m 224.70264,318.95995 c 0.32134,5.04063 -7.00595,19.45209 -8.15426,21.83013 -0.30999,-1.13135 3.20436,-18.68405 8.15426,-21.83013 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5" class="highlight2" d="m 212.63145,385.55078 c 1.44309,8.15138 -3.97322,45.41148 -7.54093,49.38775 2.98356,-1.72687 4.87317,-42.0146 7.54093,-49.38775 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-5" class="highlight2" d="m 206.90405,453.66964 c 1.84328,3.70775 1.06078,14.41863 -0.7066,16.30014 1.40444,-0.81288 -0.54919,-12.82939 0.7066,-16.30014 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Hightlights1" inkscape:label="Arm_Hightlights1" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 264.02548,194.63655 c -2.42677,0.3965 -4.07691,2.49696 -4.68327,3.78258 1.45536,-0.87497 3.7861,-2.37251 4.68327,-3.78258 z" class="highlight1" id="path1141-07" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 387.27371,191.22429 c -1.20741,-3.25929 -4.94338,-5.47961 -6.89118,-5.97258 1.60807,1.78204 4.69195,5.10987 6.89118,5.97258 z" class="highlight1" id="path1141-07-4" sodipodi:nodetypes="ccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Hair_Back" style="display:inline;opacity:1" inkscape:label="Hair_Back">
+    <g inkscape:label="Hair_Back_Messy_Long" style="display:inline;opacity:1" id="Hair_Back_Messy_Long" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 421.87059,380.64019 c -3.03932,-10.30913 -9.46748,-10.1725 -8.79674,-10.39608 0.23534,0.13448 2.92804,10.12384 -5.13652,35.06773 -0.19265,-12.65113 -1.39153,-18.17452 -1.10525,-18.17452 -0.80906,6.16431 -3.24786,12.32862 -5.40429,18.49293 -0.31569,0.0631 -2.84325,-22.24577 -6.38175,-31.06232 1.07206,32.23049 -11.29172,28.6502 -22.01985,71.4037 -3.11413,-22.86314 -9.78122,-43.52203 -27.98178,-55.87624 0.19108,23.73437 -8.55182,48.16911 -14.86805,72.55526 -0.69179,-19.66776 -2.29541,-38.20757 -10.91812,-57.30319 -8.18294,30.36817 -7.31895,56.19246 -9.12147,83.66249 -21.24105,-27.54033 -32.39645,-61.8785 -31.23223,-62.34419 0.10172,0 -2.31867,12.83066 -1.28918,34.16797 -14.16717,-23.22985 -22.2415,-46.6547 -22.05217,-46.6547 0.0924,-0.0154 1.70696,11.68726 4.68664,25.8105 -8.59184,-7.307 -7.83012,-10.87296 -10.32722,-15.58366 -0.1751,-0.0253 2.68498,3.12926 3.75456,13.89608 -19.92627,-30.5886 -28.65562,-15.47991 -24.35435,-43.16885 -10.65147,19.83717 -6.24376,6.79378 -13.86024,26.48185 -6.76637,-6.9709 -13.05685,-20.88704 -12.23473,-21.19533 -9.24512,9.57871 -26.87321,1.49526 -40.73803,1.01752 16.37583,-11.81298 31.52325,-23.05585 40.14109,-39.39778 -9.51484,7.5241 -22.36985,2.36874 -34.56653,-0.40769 18.64585,-12.27798 44.4496,-23.9482 53.66771,-37.52503 -9.2005,3.6783 -19.23458,0.43997 -28.584,-1.40301 0.17169,0.65668 37.68393,-15.97874 46.49568,-27.65372 24.73057,-43.66884 50.52764,-99.82402 9.58512,-190.47002 1.14234,-17.233142 9.01803,-31.460135 34.18225,-36.980603 41.82243,-10.669378 50.24886,8.449223 57.16719,32.812573 19.37318,86.49691 14.71251,132.59324 27.23157,168.84013 14.47083,22.63607 36.61138,32.79608 39.04005,30.95185 -8.68358,5.61468 -12.8343,4.49561 -22.91967,2.88806 6.80741,8.23021 18.48981,15.10769 42.87102,27.466 -5.85435,-0.46802 -14.70362,5.45731 -23.59846,1.74413 7.2716,11.43882 18.97913,15.24091 30.08299,17.54135 -3.69405,3.76789 -3.34336,7.19019 -16.21577,9.37904 1.34942,0.45017 5.67537,9.21611 4.80053,21.41777 z" class="shadow" id="path1498" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" id="path1499" class="hair" d="m 421.87059,380.64019 c -1.02958,-10.97904 -8.79674,-10.39608 -8.79674,-10.39608 0,0 1.66148,9.40009 -5.13652,35.06773 0.84246,-12.65113 -1.10525,-18.17452 -1.10525,-18.17452 l -5.40429,18.49293 c 0,0 -2.02922,-22.40858 -6.38175,-31.06232 -0.59834,31.89641 -11.85761,28.53702 -22.01985,71.4037 -2.7663,-23.17619 -7.97885,-45.14416 -27.98178,-55.87624 -2.20443,23.5501 -8.91857,48.1409 -14.86805,72.55526 -0.65879,-19.68426 -1.05601,-38.82727 -10.91812,-57.30319 -9.97899,29.96905 -7.4072,56.17285 -9.12147,83.66249 -20.04831,-28.01742 -31.23223,-62.34419 -31.23223,-62.34419 0,0 -3.88832,12.83066 -1.28918,34.16797 -12.46527,-23.22985 -22.05217,-46.6547 -22.05217,-46.6547 0,0 0.54521,11.88089 4.68664,25.8105 -7.43887,-7.63642 -7.40852,-10.99342 -10.32722,-15.58366 -0.1864,-0.0205 1.14793,3.788 3.75456,13.89608 -18.23729,-31.52692 -28.44807,-15.59521 -24.35435,-43.16885 -12.0896,19.11811 -6.52831,6.6515 -13.86024,26.48185 -5.7091,-7.36737 -12.23473,-21.19533 -12.23473,-21.19533 -11.28163,8.76411 -26.94357,1.46712 -40.73803,1.01752 17.13558,-12.08113 34.48693,-24.10185 40.14109,-39.39778 -10.85755,5.84571 -22.81243,1.81552 -34.56653,-0.40769 20.34647,-12.27798 47.17568,-23.9482 53.66771,-37.52503 -8.79536,2.46288 -18.93606,-0.45559 -28.584,-1.40301 0.7423,0.71374 41.3653,-15.6106 46.49568,-27.65372 26.24092,-43.81988 55.3088,-100.30214 9.58512,-190.47002 2.26233,-17.326474 10.70197,-31.600464 34.18225,-36.980603 39.30416,-9.662072 49.42012,8.780721 57.16719,32.812573 14.32491,86.95584 12.72243,132.77416 27.23157,168.84013 12.95686,23.47717 36.11894,33.06966 39.04005,30.95185 -9.48627,5.05897 -14.96268,3.02211 -22.91967,2.88806 6.34664,8.35588 16.55376,15.6357 42.87102,27.466 -6.46155,-0.83234 -16.34753,4.47097 -23.59846,1.74413 5.47163,11.88881 17.00945,15.73333 30.08299,17.54135 -4.18673,3.52155 -4.65397,6.53488 -16.21577,9.37904 0.82532,0.45017 4.59252,9.21611 4.80053,21.41777 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Messy_Medium" style="display:inline;opacity:1" inkscape:label="Hair_Back_Messy_Medium">
+      <path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path1496" class="shadow" d="m 400.25741,267.99455 c -11.0391,4.75356 -21.42382,4.45462 -29.39691,-1.06248 11.99558,8.22175 31.67957,20.57196 43.77186,23.67781 -25.34777,7.67072 -31.71384,-0.74056 -42.68544,-5.12293 8.06557,12.95509 40.30743,24.97691 39.92518,25.07247 -0.75771,1.13657 -61.39721,-10.63099 -60.40683,-22.3126 10.52229,19.93937 8.55693,12.29087 0.92036,36.26495 -2.3639,-13.17942 -0.39323,-25.82155 -10.94162,-32.43915 -0.0284,13.78585 -4.66423,27.99505 -8.6317,42.12222 -0.73947,-11.29796 -1.96344,-22.05027 -6.33855,-33.26758 -4.7478,17.39864 -4.14565,32.61135 -5.29551,48.57056 -12.33426,-15.87942 -18.93522,-35.7479 -18.13198,-36.19414 0.0536,0 -1.2759,7.44888 -0.74844,19.83633 -8.16491,-13.22098 -12.91768,-27.05263 -12.80246,-27.08555 0.0379,0.0142 1.47184,7.33074 2.72084,14.98438 -5.0872,-4.43335 -4.44221,-6.38227 -5.99551,-9.04715 -0.10536,-0.0115 1.96411,2.36135 2.17973,8.06742 -12.12957,-17.82865 -10.35734,-18.74922 -13.9362,-34.19576 1.73015,14.36775 -1.94837,10.98234 -0.34703,24.50806 -10.15948,-21.5303 13.98608,-102.33862 -22.50808,-204.15985 -0.62954,-17.783404 6.81983,-32.924264 32.68555,-38.612273 39.1485,-9.773407 49.43023,8.088636 55.85824,30.363795 -3.74598,183.408478 57.53126,171.595068 60.1045,170.031468 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 400.25741,267.99455 c -12.05816,3.93831 -22.05114,3.95276 -29.39691,-1.06248 11.38837,8.46463 29.91227,21.27888 43.77186,23.67781 -25.34777,5.81926 -31.71384,-1.21063 -42.68544,-5.12293 6.58811,13.32446 39.92518,25.07247 39.92518,25.07247 0,0 -60.49103,-11.99025 -60.40683,-22.3126 9.60598,19.98519 6.27009,12.40521 0.92036,36.26495 -1.60599,-13.45502 0.67115,-26.2086 -10.94162,-32.43915 -1.27979,13.67209 -5.17771,27.94837 -8.6317,42.12222 -0.38246,-11.42778 -0.61307,-22.54131 -6.33855,-33.26758 -5.79334,17.39864 -4.30028,32.61135 -5.29551,48.57056 -11.63912,-16.26561 -18.13198,-36.19414 -18.13198,-36.19414 0,0 -2.25738,7.44888 -0.74844,19.83633 -7.23676,-13.48617 -12.80246,-27.08555 -12.80246,-27.08555 0,0 0.31652,6.89749 2.72084,14.98438 -4.31866,-4.43335 -4.30104,-6.38227 -5.99551,-9.04715 -0.10821,-0.0119 0.66644,2.19914 2.17973,8.06742 -10.58772,-18.30307 -9.84723,-18.90618 -13.9362,-34.19576 0.7811,14.17794 -2.65866,10.84028 -0.34703,24.50806 -9.05199,-21.84673 18.95307,-103.75776 -22.50808,-204.15985 0.80658,-17.962919 9.11222,-33.210813 32.68555,-38.612273 36.05048,-8.862226 48.89504,8.246046 55.85824,30.363795 -9.70279,180.284238 55.46944,170.693618 60.1045,170.031468 z" class="hair" id="path1493" sodipodi:nodetypes="ccccccccccccccccccccccc"/>
+    </g>
+    <g inkscape:label="Hair_Back_Messy_Short" style="display:inline;opacity:1" id="Hair_Back_Messy_Short" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 344.30213,163.49241 c -0.62532,-4.17031 -0.84807,-3.85928 -0.84705,-3.85979 0.0498,-0.0207 0.91983,3.55309 -2.00341,13.67755 0.2185,-4.91233 -0.45712,-7.08344 -0.43108,-7.08865 -0.57955,2.40428 -1.35935,4.80856 -2.10785,7.21284 -0.0209,0.003 -0.92981,-8.71701 -2.48909,-12.11531 -0.0451,12.50339 -4.62485,11.13036 -8.58845,27.84975 -1.13435,-9.03155 -3.32768,-17.57687 -10.9138,-21.79354 -0.67059,9.21684 -3.43836,18.7832 -5.79902,28.2989 -0.2739,-7.66902 -0.6167,-15.04148 -4.25842,-22.3501 -3.63359,11.75353 -2.84586,21.92003 -3.55767,32.63108 -7.97552,-10.84968 -12.35861,-24.22774 -12.18158,-24.31625 0.0152,0 -1.23598,5.00437 -0.50282,13.32661 -5.01363,-8.99968 -8.64441,-18.1795 -8.60106,-18.19684 0.0244,0.0105 0.44784,4.73472 1.82794,10.06693 -3.04966,-2.91491 -3.03295,-4.22634 -4.02795,-6.07813 -0.0681,-0.0119 0.66962,1.29253 1.4644,5.41992 -7.34076,-12.23961 -8.43093,-12.67841 -11.0848,-22.97368 0.70411,9.55503 -0.008,7.29224 1.48892,16.46521 -11.9477,-26.61774 -45.88518,-98.846887 12.60533,-112.069623 81.94109,-21.019875 64.37946,92.935353 60.00746,95.893123 z" class="shadow" id="path1690" sodipodi:nodetypes="ccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccccccc" id="path1692" class="hair" d="m 344.30213,163.49241 c -0.40157,-4.28218 -0.84705,-3.85979 -0.84705,-3.85979 0,0 0.64803,3.66634 -2.00341,13.67755 0.32859,-4.93435 -0.43108,-7.08865 -0.43108,-7.08865 l -2.10785,7.21284 c 0,0 -0.79146,-8.74007 -2.48909,-12.11531 -0.23337,12.44063 -4.62485,11.13036 -8.58845,27.84975 -1.07895,-9.03946 -3.11201,-17.60768 -10.9138,-21.79354 -0.8598,9.1853 -3.47853,18.77651 -5.79902,28.2989 -0.25695,-7.6775 -0.41188,-15.14389 -4.25842,-22.3501 -3.89213,11.6889 -2.88905,21.90923 -3.55767,32.63108 -7.81949,-10.9277 -12.18158,-24.31625 -12.18158,-24.31625 0,0 -1.51657,5.00437 -0.50282,13.32661 -4.86186,-9.06039 -8.60106,-18.19684 -8.60106,-18.19684 0,0 0.21265,4.63393 1.82794,10.06693 -2.9014,-2.97845 -2.88956,-4.28779 -4.02795,-6.07813 -0.0727,-0.008 0.44773,1.47744 1.4644,5.41992 -7.11313,-12.29652 -8.33772,-12.70171 -11.0848,-22.97368 0.52476,9.52514 -0.0641,7.28281 1.48892,16.46521 -11.31512,-26.61774 -45.10202,-98.846887 12.60533,-112.069623 81.43385,-20.018738 63.40041,92.478433 60.00746,95.893123 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Tails_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Tails_Long">
+      <path sodipodi:nodetypes="cccccc" id="path1492" class="shadow" d="m 328.65638,84.008358 c -0.60861,0.173889 -1.34272,-10.225449 2.66101,-13.323049 10.65634,-9.764922 29.44024,-10.595761 38.87664,-1.492806 88.46562,71.536397 61.69463,241.721077 32.68739,331.054337 -5.27944,-95.72009 -0.92016,-272.88945 -71.03624,-311.874658 -1.38046,-1.335535 -3.07243,-2.554256 -3.1888,-4.363824 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 328.65638,84.008358 c 0,0 -0.78513,-10.384761 2.66101,-13.323049 9.86833,-8.414052 29.10128,-10.014694 38.87664,-1.492806 83.58531,72.867387 59.4595,242.330657 32.68739,331.054337 -1.93705,-97.39129 3.69397,-275.19652 -71.03624,-311.874658 z" class="hair" id="path3021-5" sodipodi:nodetypes="caaccc"/>
+      <path sodipodi:nodetypes="cccccc" id="path1494" class="shadow" d="m 272.06498,92.747415 c 0.6403,0.365888 3.32747,-12.250142 -2.66102,-16.710417 -9.58816,-9.475485 -27.12426,-7.551531 -35.34249,1.894561 -87.00172,79.526411 -41.40357,242.195391 -27.97997,336.871331 9.07082,-156.21304 5.00878,-280.4322 62.79467,-317.691653 2.13956,-1.147001 3.37977,-2.550959 3.18881,-4.363822 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 272.06498,92.747415 c 0,0 1.72594,-13.165303 -2.66102,-16.710417 -9.17611,-7.415242 -26.87886,-6.324544 -35.34249,1.894561 -80.83393,78.498451 -40.30634,242.012521 -27.97997,336.871331 4.97451,-156.21304 -0.20009,-280.4322 62.79467,-317.691653 z" class="hair" id="path3021-5-2" sodipodi:nodetypes="caaccc"/>
+    </g>
+    <g inkscape:label="Hair_Back_Tails_Medium" style="display:inline;opacity:1" id="Hair_Back_Tails_Medium" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 324.77453,81.645628 c -0.57274,-1.155617 -1.42602,-8.619228 2.23666,-11.198381 8.15392,-8.197687 24.28459,-9.064664 32.67686,-1.254744 61.17299,48.237107 52.97834,150.824207 27.678,226.259667 9.36744,-69.24717 -10.70689,-156.85175 -59.91124,-210.138631 -1.26333,-1.074675 -1.99649,-2.361419 -2.68028,-3.667911 z" class="shadow" id="path1488" sodipodi:nodetypes="cccccc"/>
+      <path sodipodi:nodetypes="caaccc" id="path1365" class="hair" d="m 324.77453,81.645628 c 0,0 -0.65991,-8.728672 2.23666,-11.198381 8.2946,-7.072235 24.3775,-8.321392 32.67686,-1.254744 57.85178,49.259017 50.18068,151.685027 27.678,226.259667 10.60254,-69.95294 -8.68368,-158.00787 -59.91124,-210.138631 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 277.20794,88.99104 c 0.32753,-0.05459 1.8295,-11.128924 -2.23666,-14.045554 -8.01899,-6.998292 -22.68576,-5.638047 -29.70631,1.592429 -59.85993,54.894195 -34.87469,151.867435 -23.31454,231.149005 7.11993,-79.08768 -8.43148,-145.84586 52.57724,-215.027969 1.42001,-1.047108 2.32091,-2.267253 2.68027,-3.667911 z" class="shadow" id="path1490" sodipodi:nodetypes="cccccc"/>
+      <path sodipodi:nodetypes="caaccc" id="path1371" class="hair" d="m 277.20794,88.99104 c 0,0 1.4507,-11.065791 -2.23666,-14.045554 -7.71276,-6.232711 -22.53169,-5.25288 -29.70631,1.592429 -56.02955,53.457805 -33.6752,151.417625 -23.31454,231.149005 6.24619,-79.16711 -14.16715,-146.36728 52.57724,-215.027969 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Tails_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Tails_Short">
+      <path sodipodi:nodetypes="cccccc" id="path1484" class="shadow" d="m 322.1441,80.017241 c -0.22946,0.114728 -1.03417,-7.357022 1.94419,-9.734066 6.69408,-7.05028 20.69609,-7.895526 28.40399,-1.090672 46.32656,35.458847 44.97339,100.720647 24.05879,165.634097 9.05174,-60.69199 -11.23833,-103.75229 -52.07717,-151.621069 -1.24274,-0.862991 -1.90887,-1.973098 -2.3298,-3.18829 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 322.1441,80.017241 c 0,0 -0.57362,-7.587299 1.94419,-9.734066 7.20998,-6.14746 21.12116,-7.151656 28.40399,-1.090672 42.88292,35.688427 43.61899,100.810937 24.05879,165.634097 9.21613,-60.8058 -7.54819,-106.307 -52.07717,-151.621069 z" class="hair" id="path1375" sodipodi:nodetypes="caaccc"/>
+      <path sodipodi:nodetypes="cccccc" id="path1486" class="shadow" d="m 280.79738,86.402157 c 0.18696,0 2.55762,-9.618814 -1.94419,-12.208939 -7.3895,-6.3314 -19.88325,-4.977968 -25.82188,1.384201 -46.22232,40.053051 -30.31427,100.819071 -20.2659,169.884101 5.44046,-68.8121 -7.26687,-94.81189 45.70217,-155.871073 1.19633,-0.882879 1.95838,-1.95188 2.3298,-3.18829 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 280.79738,86.402157 c 0,0 1.261,-9.618814 -1.94419,-12.208939 -6.70424,-5.417713 -19.53151,-4.508985 -25.82188,1.384201 -41.61849,38.990631 -29.27178,100.578501 -20.2659,169.884101 5.42943,-68.81511 -12.31463,-96.18855 45.70217,-155.871073 z" class="hair" id="path1382" sodipodi:nodetypes="caaccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Ponytail_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Ponytail_Long">
+      <path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5562" class="shadow" d="m 332.94933,94.02731 c 17.27669,32.48945 13.30386,265.18306 -0.6879,344.31836 0.46562,-0.17913 -0.6066,-87.24091 -1.38425,-148.09611 2.11883,73.87269 -2.63208,155.4846 -5.34536,181.43828 2.72921,-39.87427 -3.25886,-136.77668 -2.82638,-137.09264 0.5491,88.95688 5.78273,151.71155 -9.45767,249.29895 3.00486,-62.09738 3.83821,-146.22862 4.16739,-192.90676 5.9e-4,2.8e-4 0.72386,74.38533 -2.87525,117.5229 -5.8805,-31.46063 -7.18552,-79.69691 -7.11894,-79.70772 0.44432,47.92286 7.31736,118.97368 7.06362,128.19124 C 293.43105,450.92642 295.20434,340.6002 295.48956,340.6002 c -0.26489,-0.056 -0.6132,35.84766 -0.81516,65.26497 -16.40012,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 -0.20532,-5.382828 -12.8599,-21.321318 -10.4857,-24.878968 -4.31449,-2.515892 -19.09896,12.488664 -19.28673,12.394779 5.81896,-6.205175 10.33125,-18.959562 25.79967,-19.773427 -1.8017,-1.483244 -3.58993,-1.87202 -7.13755,-2.352763 5.26883,-2.793482 12.66192,-2.926127 16.11639,-1.238467 -6.68656,-7.058297 -26.40436,1.594429 -26.38295,1.42318 11.57761,-8.4204 22.50014,-13.150886 36.58411,-1.291488 3.13514,-8.583566 13.10108,-10.010897 13.10829,-10.009586 0.0411,0.01173 -5.71444,5.790045 -5.10834,12.68234 16.45893,-6.003872 24.93693,4.755208 24.94718,4.762666 0,0 -6.38542,-6.222061 -19.70984,-1.49918 45.67475,6.014913 22.28213,73.400377 24.16334,98.663287 -3.71842,-8.29723 -3.08472,-55.04749 -14.72037,-70.734675 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 332.94933,94.02731 c 14.72238,30.35672 13.30386,265.18306 -0.6879,344.31836 0,0 1.14389,-88.692 -1.38425,-148.09611 1.23557,73.75536 -2.94265,155.44335 -5.34536,181.43828 2.96899,-40.04945 -2.82638,-137.09264 -2.82638,-137.09264 0.11982,48.22947 3.06925,129.14991 -2.98976,194.81382 -3.68786,33.76857 -6.46791,54.48513 -6.46791,54.48513 3.47636,-62.2122 4.33445,-146.34947 4.16739,-192.90676 0,0 -0.25103,73.9105 -2.87525,117.5229 -4.65895,-31.65895 -7.11894,-79.70772 -7.11894,-79.70772 -0.69253,47 7.14652,118.835 7.06362,128.19124 C 295.46406,450.92642 295.48956,340.6002 295.48956,340.6002 c -0.34499,-0.056 -1.25457,35.84766 -0.81516,65.26497 -13.92428,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 0.0196,-5.382828 -12.36271,-21.321318 -10.4857,-24.878968 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 43.13922,6.014913 22.15382,73.400377 24.16334,98.663287 -3.71645,-8.2992 -1.48912,-57.37893 -14.72037,-70.734675 z" class="hair" id="path1361" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/>
+    </g>
+    <g inkscape:label="Hair_Back_Ponytail_Medium" style="display:inline;opacity:1" id="Hair_Back_Ponytail_Medium" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 338.73254,99.799649 c 10.70349,13.881381 21.18015,74.868391 5.32699,170.546011 -0.0402,0 0.18797,-32.12345 -1.64844,-91.52756 2.85021,73.44776 -3.49161,98.87198 -6.36554,124.86973 2.90464,-39.69754 -4.22172,-103.86527 -3.3658,-104.34264 1.38041,48.3188 4.72387,96.47706 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.09061,-62.20465 4.24665,-146.20913 4.96276,-192.90676 0.26755,-0.0729 0.5836,73.66986 -3.42401,117.5229 -6.60557,-31.26971 -8.64734,-79.64525 -8.47762,-79.70772 0.52471,46.86202 8.60581,118.82525 8.41174,128.19124 -24.23916,-105.63426 -23.41911,-183.4258 -22.62029,-183.64361 -0.31391,0.0778 -0.62213,4.30116 -0.97074,32.51497 -14.16748,-108.47941 -10.54188,-66.79547 -4.30203,-153.485554 -0.4501,-5.237585 -13.04565,-9.634338 -10.42073,-13.378967 -4.87391,-2.702493 -19.22376,12.438856 -19.28673,12.394779 5.88556,-6.18071 10.77387,-18.799607 25.79967,-19.773427 -1.30947,-1.665866 -3.25819,-1.983686 -7.13755,-2.352763 5.08305,-2.808396 12.49572,-2.734437 16.11639,-1.238467 -10.13128,-6.689678 -26.429,1.437134 -26.38295,1.42318 11.9329,-8.60325 22.28196,-13.30397 36.58411,-1.291488 3.10901,-8.465754 13.07762,-10.012142 13.10829,-10.009586 0.0505,0 -5.72408,5.592785 -5.10834,12.68234 15.62676,-5.986792 24.92023,4.751317 24.94718,4.762666 0,0 -2.43639,-6.374697 -19.70984,-1.49918 27.76771,12.855661 28.98664,49.427407 28.88149,49.357307 -5.32663,-9.22178 -11.2568,-18.133444 -13.65531,-15.656351 z" class="shadow" id="path5560" sodipodi:nodetypes="ccccccccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5552" class="hair" d="m 338.73254,99.799649 c 9.23041,13.640241 19.31221,74.452981 5.32699,170.546011 0,0 1.3622,-32.12345 -1.64844,-91.52756 1.47138,73.75536 -3.50427,98.8748 -6.36554,124.86973 3.53563,-40.04945 -3.3658,-104.34264 -3.3658,-104.34264 0.14268,48.22947 3.65502,96.39991 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.13984,-62.2122 5.16169,-146.34947 4.96276,-192.90676 0,0 -0.29895,73.9105 -3.42401,117.5229 -5.54812,-31.65895 -8.47762,-79.70772 -8.47762,-79.70772 -0.82469,47 8.51046,118.835 8.41174,128.19124 -22.65066,-106.06739 -22.62029,-183.64361 -22.62029,-183.64361 -0.41082,-0.056 -1.494,3.09766 -0.97074,32.51497 -12.59249,-109.00646 -9.13041,-67.2678 -4.30203,-153.485554 0.0234,-5.382828 -12.29774,-9.821317 -10.42073,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -12.21767,-19.947258 -13.65531,-15.656351 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Ponytail_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Ponytail_Short">
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccc" id="path5558" class="shadow" d="m 330.09873,86.89495 c 12.36307,13.85221 20.1684,32.1964 18.91567,88.57067 -8.24083,-39.52779 -11.69258,-54.85417 -22.46798,-67.03445 12.40076,26.29367 11.98884,66.31287 11.67798,66.31287 -3.64807,-23.79811 -10.24947,-27.61087 -15.54992,-42.44145 1.94675,54.15066 4.70881,53.34942 -8.57312,90.85447 7.28201,-33.08774 3.09748,-46.97184 3.77763,-76.18745 0.27299,0.091 1.24216,34.02668 -4.37411,60.5339 -5.25645,-19.25296 -5.53393,-36.7561 -4.68536,-37.07431 -1.25291,21.81818 -2.37871,22.5364 -0.49131,48.14878 -19.14465,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -3.50458,20.44019 -7.87807,27.59716 -10.11392,45.29647 -8.48739,-38.6007 -16.70838,-42.02974 -6.32827,-96.944804 -1.13499,-4.959669 0.5017,-9.590194 3.0143,-13.378967 -4.36941,-2.664614 -19.00718,12.49961 -19.28673,12.394779 5.6354,-6.220942 10.16012,-18.806676 25.79967,-19.773427 -2.08101,-1.488346 -3.53887,-1.963222 -7.13755,-2.352763 5.84771,-2.887216 13.13069,-2.842733 16.11639,-1.238467 -7.84877,-6.724063 -27.01758,1.476544 -26.38295,1.42318 12.09141,-8.715272 21.73199,-13.512615 36.58411,-1.291488 1.94283,-8.878618 13.10795,-10.009659 13.10829,-10.009586 0.0785,0.02415 -5.12511,5.986552 -5.10834,12.68234 16.02724,-6.009741 24.94717,4.762662 24.94718,4.762666 0.005,0.0083 -5.582,-6.399031 -19.70984,-1.49918 27.92573,12.058541 29.0381,49.388627 28.88149,49.357307 -5.98656,-9.41678 -21.24363,-32.636411 -22.28912,-28.56105 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 330.09873,86.89495 c 11.18351,14.06668 20.15359,32.19909 18.91567,88.57067 -6.73029,-40.2144 -10.62687,-55.33858 -22.46798,-67.03445 10.37413,26.29367 11.67798,66.31287 11.67798,66.31287 -3.12067,-24.16729 -8.55499,-28.797 -15.54992,-42.44145 0.72836,53.62849 4.39271,53.21395 -8.57312,90.85447 7.57065,-33.2032 3.92906,-47.30447 3.77763,-76.18745 0,0 -0.40434,33.47785 -4.37411,60.5339 -4.22321,-19.64042 -4.68536,-37.07431 -4.68536,-37.07431 -2.66069,21.11429 -2.71426,22.36863 -0.49131,48.14878 -17.24159,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -5.06272,19.5903 -8.88723,27.04671 -10.11392,45.29647 -8.21036,-38.74987 -14.25266,-43.35205 -6.32827,-96.944804 0.0287,-5.382828 1.13729,-9.821317 3.0143,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -20.52514,-32.851957 -22.28912,-28.56105 z" class="hair" id="path5555" sodipodi:nodetypes="cccccccccccccccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Neat_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Neat_Long">
+      <path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path5550" class="shadow" d="m 358.07814,397.95037 c 2.06029,-25.49185 -3.6166,-34.50231 -3.57737,-34.51539 0.57852,0 -0.12268,38.95411 -9.36157,50.51595 2.94416,-13.34207 2.10152,-19.2577 0.92061,-32.21283 0.49915,15.01177 -7.54212,27.68072 -16.5353,39.84304 -0.13422,-13.82819 -1.09469,-19.70412 -14.03781,-29.72485 1.80036,17.97553 -2.48299,22.97026 -6.55991,35.64803 0.16408,-16.56301 -2.63476,-19.23847 -7.17038,-31.29684 -2.88738,12.20742 -5.64385,15.53857 -7.29235,33.75129 -5.45453,-20.63331 -8.38563,-27.8309 -6.05982,-35.57691 -3.25259,12.13655 -7.85602,12.25301 -8.58305,25.81575 -4.77458,-12.28743 -9.07475,-20.07486 -5.41312,-32.36229 -7.49205,6.32889 -9.14678,12.2308 -9.50999,23.54625 -14.66474,-19.70778 -12.03859,-29.28377 -12.21811,-44.89434 1e-4,0 -1.09044,7.02297 -1.02255,21.16483 -9.47429,-25.90832 -12.35352,-40.71414 -12.30364,-71.06994 0,0 -0.57095,16.1343 2.0303,48.7201 -50.49484,-119.02333 68.68319,-131.09799 11.59481,-267.43042 4.9082,-12.570198 9.80645,-25.656586 28.33351,-28.681522 35.18785,-9.15612 47.93113,8.298298 59.33287,26.471359 -1.75777,158.087023 77.46025,174.916483 31.58047,274.647853 5.7422,-37.66628 -0.16574,-55.5838 -0.14333,-55.5866 -0.10427,27.51022 -6.97558,75.8488 -14.00427,83.22748 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 358.07814,397.95037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -8.6859,-25.82072 -11.64275,-40.63517 -12.30364,-71.06994 0,0 -2.22509,15.514 2.0303,48.7201 -46.69666,-117.29689 69.72829,-130.62295 11.59481,-267.43042 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.44154,158.496333 75.22075,175.165313 31.58047,274.647853 6.93183,-37.81498 -0.14333,-55.5866 -0.14333,-55.5866 -1.50132,26.8752 -7.25425,75.72213 -14.00427,83.22748 z" class="hair" id="path5545" sodipodi:nodetypes="ccccccccccccccccccccccc"/>
+    </g>
+    <g inkscape:label="Hair_Back_Neat_Medium" style="display:inline;opacity:1" id="Hair_Back_Neat_Medium" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 358.07814,293.70037 c 2.32187,-24.88272 -3.84806,-34.2447 -3.57737,-34.51539 0.26334,0 -0.0171,38.95411 -9.36157,50.51595 2.98144,-13.42538 2.50577,-19.63436 0.92061,-32.21283 0.63265,14.56249 -7.3412,27.29762 -16.5353,39.84304 0.0505,-14.10383 -1.08433,-20.09273 -14.03781,-29.72485 2.05673,18.33301 -2.43478,23.08531 -6.55991,35.64803 0.35107,-16.3406 -2.78912,-18.96211 -7.17038,-31.29684 -3.22479,12.08626 -5.79925,15.49629 -7.29235,33.75129 -5.50395,-20.72128 -8.31947,-27.91249 -6.05982,-35.57691 -3.67475,11.95167 -7.7352,12.28402 -8.58305,25.81575 -4.87557,-12.28743 -8.99766,-20.07486 -5.41312,-32.36229 -7.80415,5.93811 -9.6963,11.77677 -9.50999,23.54625 -14.64322,-19.70778 -12.69119,-29.28377 -12.21811,-44.89434 0.0716,0.0239 -1.83943,7.29498 -1.02255,21.16483 -30.62799,-83.16717 60.8009,-40.98839 1.32147,-185.53026 4.7355,-12.679504 10.20339,-25.443453 28.33351,-28.681522 34.37088,-9.144768 47.22382,8.487561 59.33287,26.471359 -1.35363,171.744633 39.70977,115.193163 17.43287,198.038733 z" class="shadow" id="path5548" sodipodi:nodetypes="ccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccccc" id="path1394" class="hair" d="m 358.07814,293.70037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -29.86111,-82.9902 62.95251,-40.49186 1.32147,-185.53026 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.90942,172.124283 39.22845,115.233273 17.43287,198.038733 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Neat_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Neat_Short">
+      <path sodipodi:nodetypes="ccccccc" id="path1713" class="shadow" d="m 341.03176,163.49241 c -19.2084,3.76854 -55.46085,5.32927 -62.59166,5.9475 -0.37549,-0.64869 -1.20645,-1.35626 -1.76009,-2.17128 0.32341,0.92552 0.56958,1.85103 0.27442,2.77655 -3.93849,0.62454 -6.85101,1.92929 -8.52918,3.06294 -0.25176,0.036 -45.53604,-90.431971 14.01326,-103.917842 83.39811,-21.246401 59.1124,93.977662 58.59325,94.302132 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 341.03176,163.49241 c -19.8314,2.62637 -55.8227,4.66587 -62.59166,5.9475 -0.22535,-0.72376 -1.02392,-1.44752 -1.76009,-2.17128 0.18666,0.92552 0.37515,1.85103 0.27442,2.77655 -4.02517,0.30673 -6.88398,1.80839 -8.52918,3.06294 0,0 -43.69409,-90.695106 14.01326,-103.917842 81.43385,-20.018738 58.59325,94.302132 58.59325,94.302132 z" class="hair" id="path1701" sodipodi:nodetypes="ccccccc"/>
+    </g>
+    <g inkscape:label="Hair_Back_Bun_Long" style="display:inline;opacity:1" id="Hair_Back_Bun_Long" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 288.02131,114.19613 c -15.49748,-6.37935 -19.57944,-34.225422 -9.59248,-51.636773 1.63015,-2.287119 6.50866,-4.799229 8.79302,-5.699077 -3.61957,0.741873 -5.44458,2.532532 -7.25958,4.276633 1.18958,-1.995386 2.23622,-4.758417 4.21392,-6.206414 4.31379,-4.298458 11.01303,-6.497788 18.37652,-6.978354 0.86302,-0.165844 13.87736,1.955737 18.24708,4.815012 -4.22116,-2.292549 -4.24504,-2.442429 -14.77619,-4.030846 11.48969,-1.430073 23.48158,1.912693 30.56609,8.387615 0.78748,0.52719 4.33472,10.210431 4.19257,12.701247 -0.0599,-5.045596 -1.73948,-5.976141 -3.25834,-10.422707 1.43642,1.658835 4.7273,4.991198 4.80938,6.674736 1.28552,3.75017 1.44131,7.775494 -0.15344,11.944673 -4.15859,7.273307 -5.70119,7.116531 -7.653,8.957144 2.53112,-1.738906 1.29299,0.708593 6.72633,-7.627152 -6.96731,19.825902 -35.7839,42.026533 -53.23193,34.844263 z" class="shadow" id="path1473" sodipodi:nodetypes="ccccccccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 309.7695,69.042417 c 15.64661,-11.129344 18.80312,-11.096436 41.42999,-15.068196 -25.95654,3.774553 -27.9134,4.741971 -41.42999,15.068196 z" class="shadow" id="path1475" sodipodi:nodetypes="ccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccc" id="path1479" class="hair" d="m 288.02131,114.19613 c -15.49748,-6.37935 -18.14873,-35.042974 -9.59248,-51.636773 1.78563,-2.176066 6.79293,-4.59619 8.79302,-5.699077 -3.76297,0.61639 -5.55634,2.434736 -7.25958,4.276633 1.26496,-1.995386 2.57328,-4.758417 4.21392,-6.206414 4.49689,-3.968876 11.14843,-6.254099 18.37652,-6.978354 0.73645,-0.0738 13.52908,2.209038 18.24708,4.815012 -4.02174,-2.403337 -4.03718,-2.557904 -14.77619,-4.030846 11.25689,-0.304945 23.47235,1.957338 30.56609,8.387615 0.64767,0.587108 4.15861,10.285903 4.19257,12.701247 0.0369,-5.090239 -1.2955,-6.181051 -3.25834,-10.422707 1.03308,1.546791 4.31605,4.876965 4.80938,6.674736 1.0367,3.777818 0.89956,7.835687 -0.15344,11.944673 -4.05147,6.344853 -5.68648,6.988955 -7.653,8.957144 2.56461,-1.738906 1.74094,0.708593 6.72633,-7.627152 -8.06825,19.825902 -35.7839,42.026533 -53.23193,34.844263 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="M 260.50425,64.574619 C 279.75191,62.724051 292.08134,62.15527 307.07034,79.56447 290.54726,59.193487 278.74011,63.32087 260.50425,64.574619 Z" class="shadow" id="path1481" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 304.47634,72.084439 c 19.15256,-1.36324 21.83104,0.307209 43.22048,8.688257 -24.1303,-10.281904 -26.30478,-10.473909 -43.22048,-8.688257 z" class="shadow" id="path1483" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 280.94908,44.659613 c 8.29033,1.735969 8.25754,0.856291 15.47301,6.297637 -7.85279,-6.279679 -8.34136,-4.703535 -15.47301,-6.297637 z" class="shadow" id="path1485" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 318.96089,54.297233 c 7.27417,-4.33932 6.6541,-4.96417 15.64783,-5.849757 -10.03044,0.700683 -9.32206,2.191029 -15.64783,5.849757 z" class="shadow" id="path1487" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Bun_Medium" style="display:inline;opacity:1" inkscape:label="Hair_Back_Bun_Medium">
+      <path sodipodi:nodetypes="ccccccccccccccccc" id="path1452" class="shadow" d="m 295.39868,97.782137 c -11.23648,-4.625355 -14.19612,-24.815202 -6.95505,-37.439332 1.18194,-1.65828 4.71911,-3.47969 6.37539,-4.132126 -2.62437,0.537896 -3.9476,1.836217 -5.26357,3.10078 0.8625,-1.446758 1.62138,-3.450098 3.0553,-4.499971 3.12773,-3.116604 7.98503,-4.711232 13.32394,-5.059668 0.62573,-0.120246 10.06181,1.418011 13.23007,3.491133 -3.06056,-1.662217 -3.07786,-1.770888 -10.7135,-2.922572 8.33062,-1.036876 17.02537,1.386801 22.162,6.081456 0.57097,0.382239 3.1429,7.40309 3.03983,9.20906 -0.0434,-3.658318 -1.26121,-4.333012 -2.36247,-7.557002 1.04149,1.202742 3.42754,3.618877 3.48706,4.839529 0.93206,2.719068 1.04501,5.637636 -0.11126,8.660507 -3.01519,5.273524 -4.13366,5.159852 -5.54882,6.494393 1.8352,-1.260797 0.93749,0.513765 4.87694,-5.53008 -5.05166,14.374804 -25.94518,30.471406 -38.59591,25.263893 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1456" class="shadow" d="m 311.16723,65.043359 c 11.34461,-8.069351 13.63324,-8.04549 30.03889,-10.925222 -18.81983,2.736747 -20.23866,3.438175 -30.03889,10.925222 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1458" class="shadow" d="m 276.52502,54.426478 c 14.11556,5.643554 14.33081,4.078369 25.39549,15.938037 C 289.98963,56.824987 288.63645,59.459377 276.52502,54.426478 Z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 295.39868,97.782137 c -11.23648,-4.625355 -13.15877,-25.40797 -6.95505,-37.439332 1.29467,-1.577761 4.92522,-3.332476 6.37539,-4.132126 -2.72835,0.446915 -4.02863,1.76531 -5.26357,3.10078 0.91716,-1.446758 1.86576,-3.450098 3.0553,-4.499971 3.26049,-2.877641 8.08319,-4.534545 13.32394,-5.059668 0.53396,-0.0535 9.80928,1.601667 13.23007,3.491133 -2.91596,-1.742544 -2.92715,-1.854612 -10.7135,-2.922572 8.16183,-0.221101 17.01868,1.419171 22.162,6.081456 0.4696,0.425683 3.01521,7.457811 3.03983,9.20906 0.0267,-3.690687 -0.9393,-4.481582 -2.36247,-7.557002 0.74904,1.121504 3.12936,3.536053 3.48706,4.839529 0.75165,2.739114 0.65222,5.681279 -0.11126,8.660507 -2.93752,4.600346 -4.12299,5.067353 -5.54882,6.494393 1.85948,-1.260797 1.26227,0.513765 4.87694,-5.53008 -5.8499,14.374804 -25.94518,30.471406 -38.59591,25.263893 z" class="hair" id="path1460" sodipodi:nodetypes="ccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccc" id="path1462" class="shadow" d="M 275.44738,61.803974 C 289.40293,60.462216 298.34241,60.04982 309.2102,72.672392 297.23011,57.902375 288.66933,60.894941 275.44738,61.803974 Z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1465" class="shadow" d="m 307.32942,67.248982 c 13.8866,-0.98842 15.82864,0.222743 31.33708,6.299436 -17.49572,-7.454912 -19.07232,-7.594127 -31.33708,-6.299436 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1467" class="shadow" d="m 290.27094,47.364564 c 6.01092,1.258667 5.98714,0.620855 11.21873,4.566113 -5.69368,-4.553093 -6.04792,-3.410307 -11.21873,-4.566113 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1469" class="shadow" d="m 317.83147,54.352337 c 5.27414,-3.146232 4.82457,-3.59928 11.34548,-4.241376 -7.27259,0.508031 -6.75898,1.588609 -11.34548,4.241376 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:label="Hair_Back_Bun_Short" style="display:inline;opacity:1" id="Hair_Back_Bun_Short" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="M 296.71866,97.884396 C 286.62945,93.731299 283.972,75.602879 290.47374,64.267699 c 1.06126,-1.488966 4.23728,-3.124406 5.72445,-3.710227 -2.35642,0.482976 -3.54454,1.648735 -4.72615,2.784184 0.77444,-1.299041 1.45583,-3.097836 2.74335,-4.040515 2.80838,-2.798392 7.16974,-4.230205 11.96353,-4.543065 0.56185,-0.107968 9.03448,1.273229 11.87926,3.134681 -2.74807,-1.492501 -2.76361,-1.590076 -9.61963,-2.624171 7.48004,-0.931009 15.28704,1.245206 19.89921,5.460526 0.51267,0.343212 2.822,6.647219 2.72946,8.268796 -0.039,-3.284796 -1.13244,-3.890602 -2.12126,-6.785416 0.93515,1.079939 3.07758,3.249382 3.13102,4.345403 0.8369,2.441445 0.93832,5.062021 -0.0999,7.77625 -2.70733,4.735086 -3.7116,4.633021 -4.98227,5.831302 1.64782,-1.132067 0.84177,0.461309 4.37899,-4.965447 -4.53587,12.907106 -23.29612,27.36021 -34.65518,22.684396 z" class="shadow" id="path1741" sodipodi:nodetypes="ccccccccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 310.87721,68.488317 c 10.1863,-7.245453 12.24126,-7.224029 26.97186,-9.809734 -16.89829,2.457319 -18.17225,3.08713 -26.97186,9.809734 z" class="shadow" id="XMLID_511_-3-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 279.77204,58.955442 c 12.67434,5.067335 12.86761,3.661959 22.80256,14.310729 -10.71271,-12.157113 -11.92773,-9.7917 -22.80256,-14.310729 z" class="shadow" id="XMLID_511_-3-7-9-2" sodipodi:nodetypes="ccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccc" id="path1723" class="hair" d="m 296.71866,97.884396 c -10.08921,-4.153097 -11.81523,-22.813762 -6.24492,-33.616697 1.16248,-1.416668 4.42234,-2.992223 5.72445,-3.710227 -2.44978,0.401284 -3.6173,1.585068 -4.72615,2.784184 0.82352,-1.299041 1.67526,-3.097836 2.74335,-4.040515 2.92758,-2.583827 7.25788,-4.071558 11.96353,-4.543065 0.47945,-0.04804 8.80774,1.438134 11.87926,3.134681 -2.61824,-1.564626 -2.62829,-1.665252 -9.61963,-2.624171 7.32849,-0.198526 15.28103,1.274271 19.89921,5.460526 0.42165,0.38222 2.70735,6.696353 2.72946,8.268796 0.024,-3.31386 -0.8434,-4.024003 -2.12126,-6.785416 0.67256,1.006996 2.80985,3.175014 3.13102,4.345403 0.67491,2.459444 0.58563,5.101208 -0.0999,7.77625 -2.63759,4.130641 -3.70202,4.549966 -4.98227,5.831302 1.66962,-1.132067 1.13339,0.461309 4.37899,-4.965447 -5.25261,12.907106 -23.29612,27.36021 -34.65518,22.684396 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="M 278.80443,65.57968 C 291.33509,64.374918 299.36183,64.004629 309.12,75.338409 298.3631,62.076442 290.67639,64.763461 278.80443,65.57968 Z" class="shadow" id="XMLID_511_-3-7-9" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 307.43125,70.468741 c 12.46875,-0.8875 14.2125,0.2 28.1375,5.65625 -15.70937,-6.69375 -17.125,-6.81875 -28.1375,-5.65625 z" class="shadow" id="XMLID_511_-3" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 292.11448,52.614564 c 5.39719,1.130155 5.37584,0.557465 10.07327,4.099903 -5.11234,-4.088212 -5.43041,-3.062107 -10.07327,-4.099903 z" class="shadow" id="XMLID_511_-3-7-9-2-1" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 316.86102,58.888871 c 4.73564,-2.824995 4.33197,-3.231786 10.18708,-3.808323 -6.53004,0.45616 -6.06887,1.426409 -10.18708,3.808323 z" class="shadow" id="XMLID_511_-3-7-9-2-1-7" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Braids_Long" inkscape:label="Hair_Back_Braids_Long" style="display:inline">
+      <path sodipodi:nodetypes="ccccccccccccccccccccc" inkscape:connector-curvature="0" id="path1448" d="m 319.69478,148.38187 c -3.85899,17.48194 0.22348,21.39237 6.69724,28.10971 -5.08409,9.05576 -0.58685,19.93468 1.33442,24.57791 -0.27114,0.16946 -6.99024,14.41492 2.43634,24.76087 -4.87066,15.79899 -3.99392,30.03518 7.61618,41.35662 -11.11868,21.46042 -5.4792,31.14283 5.40273,46.08182 -8.69943,18.05985 1.48612,35.89274 7.90292,39.06616 -3.26418,11.20735 0.51135,22.63072 11.5928,29.58259 -1.15347,9.51542 -3.67834,15.5935 10.25703,27.42694 5.50659,25.84222 2.68939,27.63188 35.97337,69.06479 7.38629,-52.26314 -2.41999,-58.85625 -17.63596,-74.90644 3.99052,-11.78712 -0.95836,-21.8125 -9.88279,-29.34678 0.76644,-12.54685 -0.43275,-21.21513 -10.48388,-28.49841 1.67504,-14.25308 4.34315,-25.41834 -8.17928,-35.63569 8.82974,-13.30228 4.98873,-28.62874 -6.05172,-44.87092 7.84053,-12.61238 7.1083,-26.52316 0.27629,-42.7114 2.99511,-10.49153 -17.60826,-18.40272 -8.42989,-46.00091 4.8458,-12.19535 5.04697,-20.74725 -3.84376,-33.42143 -0.002,-14.98937 0.35919,-16.66176 -13.86985,-24.71382 1.84699,-15.6917 -1.93424,-25.64715 -15.27024,-32.978331 z" class="shadow"/>
+      <path d="m 319.69478,148.38187 c -2.73475,17.48194 1.09229,21.39237 6.69724,28.10971 -4.03622,8.95097 0.004,19.87559 1.33442,24.57791 0,0 -6.01507,13.80544 2.43634,24.76087 -3.7396,15.49052 -3.31646,29.85042 7.61618,41.35662 -9.77679,21.10258 -4.32401,30.83478 5.40273,46.08182 -7.56302,17.71893 1.95468,35.75217 7.90292,39.06616 -2.22535,10.77451 1.47189,22.2305 11.5928,29.58259 -0.96642,9.40631 -2.07991,14.66108 10.25703,27.42694 5.94136,25.64899 3.70325,27.18127 35.97337,69.06479 6.003,-52.26314 -3.86971,-58.85625 -17.63596,-74.90644 3.02752,-11.70687 -1.9948,-21.72613 -9.88279,-29.34678 -0.0864,-12.31426 -1.41144,-20.94821 -10.48388,-28.49841 0.77845,-14.18904 2.93136,-25.3175 -8.17928,-35.63569 7.79448,-13.14301 3.85819,-28.45481 -6.05172,-44.87092 7.22822,-12.47631 6.23076,-26.32815 0.27629,-42.7114 1.71282,-10.97239 -17.61232,-18.40424 -8.42989,-46.00091 4.17476,-12.44699 4.38469,-20.9956 -3.84376,-33.42143 1.2712,-8.44863 4.47474,-13.65656 -4.67746,-24.71382 0.99787,-15.05486 -2.3928,-25.303229 -15.27024,-32.978331 z" id="path5581" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccccccc" class="hair"/>
+      <path class="shadow" sodipodi:nodetypes="ccccccccccccccccccc" inkscape:connector-curvature="0" id="path1471" d="m 273.88271,124.1062 c -7.7554,13.33353 -5.09245,35.54293 1.07182,42.51734 -4.23702,2.65919 -11.35838,12.94301 -5.36124,23.06511 -8.85342,19.913 -8.60986,16.50494 -5.19018,33.88533 -16.31102,23.64299 -12.92386,31.67074 -6.97253,44.12912 -9.51761,10.12931 -17.38685,24.10603 -7.72942,45.65097 -15.30979,15.55055 -10.28689,31.99128 -5.1286,39.00421 -5.303,7.35473 -11.23967,20.115 -4.21878,29.54107 -3.79145,5.93099 -9.08028,10.1845 -4.62123,22.41894 -15.94277,21.42413 -11.47678,46.71014 -9.77133,69.70043 23.46618,-24.39202 35.58003,-50.57015 28.12866,-64.68745 8.91983,-8.44841 6.57573,-17.04407 2.77257,-25.1637 5.74359,-7.23532 8.54953,-19.38381 3.75181,-29.62084 11.15278,-16.34361 14.15686,-22.02024 3.71187,-37.00449 9.63017,-9.53543 22.57528,-21.26879 8.9361,-46.02945 10.78487,-13.55199 16.39551,-15.48463 9.42758,-40.48013 9.98472,-15.85263 10.77003,-17.4868 6.33147,-35.64549 10.25118,-7.04675 6.47954,-23.21975 4.63308,-23.49044 0.63118,0.31559 8.21931,-18.66638 5.68996,-30.84234"/>
+      <path d="m 273.88271,124.1062 c -6.48064,13.20605 -4.01361,35.43505 1.07182,42.51734 -3.5883,2.59432 -9.74187,12.78136 -5.36124,23.06511 -7.57811,20.26081 -7.29258,16.8642 -5.19018,33.88533 -14.82913,23.14903 -12.38103,31.4898 -6.97253,44.12912 -8.87403,10.34384 -15.36011,24.78161 -7.72942,45.65097 -13.64034,15.55055 -9.14965,31.99128 -5.1286,39.00421 -4.40118,7.25453 -10.02975,19.98056 -4.21878,29.54107 -3.15949,5.93099 -8.08034,10.1845 -4.62123,22.41894 -14.09913,21.42413 -10.5609,46.71014 -9.77133,69.70043 22.50049,-24.04086 33.98656,-49.99071 28.12866,-64.68745 7.23179,-8.44841 5.73348,-17.04407 2.77257,-25.1637 4.18824,-7.23532 7.537,-19.38381 3.75181,-29.62084 9.33253,-15.60506 13.20916,-21.59918 3.71187,-37.00449 8.2613,-9.44988 20.22913,-21.12216 8.9361,-46.02945 10.11463,-13.91757 14.58872,-16.47015 9.42758,-40.48013 8.49026,-15.85263 9.438,-17.4868 6.33147,-35.64549 7.87011,-6.7066 5.75545,-23.11631 4.63308,-23.49044 0,0 6.18489,-19.68359 5.68996,-30.84234" id="path5583" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccccc" class="hair"/>
+    </g>
+    <g inkscape:label="Hair_Back_Braids_Medium" id="Hair_Back_Braids_Medium" inkscape:groupmode="layer" style="display:inline">
+      <path class="shadow" d="m 329.06447,126.1239 c -8.34788,15.44764 2.62969,27.19559 5.17515,26.87496 -3.96041,9.07705 -0.70039,15.35697 4.47392,20.91966 -3.88891,8.57888 -3.7274,15.92235 2.35534,22.06038 -7.53049,11.39749 -3.94847,16.24517 1.00225,24.45776 -18.44373,33.94518 12.23286,62.65854 23.17338,95.35083 27.8364,-59.36898 -2.72878,-66.68271 -12.76221,-96.27852 6.00792,-6.48764 4.61118,-14.69459 -1.39201,-23.84667 4.95438,-5.82114 6.1798,-12.96104 1.85071,-22.45795 2.75981,-5.73086 7.41381,-9.68159 2.23845,-23.56104 3.53762,-11.66827 1.01227,-21.30883 -8.68769,-26.11779 -0.0289,-16.55876 -5.46391,-18.47592 -13.30959,-26.492386" id="path1474" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccc"/>
+      <path sodipodi:nodetypes="cccccccccccc" inkscape:connector-curvature="0" id="path5575" d="m 329.06447,126.1239 c -7.06306,15.5904 3.44322,27.28598 5.17515,26.87496 -2.09694,8.21699 0.46535,14.81894 4.47392,20.91966 -2.58577,7.99971 -2.93653,15.57085 2.35534,22.06038 -5.98581,10.71097 -3.50587,16.04846 1.00225,24.45776 -16.02484,33.94518 12.89483,62.65854 23.17338,95.35083 25.54436,-59.36898 -4.16533,-66.68271 -12.76221,-96.27852 4.62517,-6.60287 3.16579,-14.81504 -1.39201,-23.84667 4.40199,-6.28146 5.33151,-13.66795 1.85071,-22.45795 2.29325,-5.73086 5.88378,-9.68159 2.23845,-23.56104 2.31295,-11.51519 0.39566,-21.23175 -8.68769,-26.11779 -1.91645,-16.21557 -6.00556,-18.37744 -13.30959,-26.492386" class="hair"/>
+      <path class="shadow" d="m 275.51876,104.36354 c -7.2105,12.10503 -5.82828,23.59024 1.20643,34.79081 -9.57224,19.13787 -0.53963,20.56673 1.0028,28.91716 -13.0209,14.16755 -4.11733,22.96317 1.01185,29.17911 -6.61581,6.72173 -6.72767,15.42593 2.39469,25.63647 -26.88445,13.18272 -25.84521,48.83027 -23.62401,79.33609 37.96839,-32.36348 41.39051,-53.07199 31.97699,-78.58972 6.51909,-6.13236 11.7333,-12.36123 2.16879,-23.50571 9.5148,-8.46379 11.11493,-18.53115 2.81645,-30.52526 7.96781,-7.68882 6.18868,-17.27632 2.30129,-27.27248 9.14423,-9.2226 5.99753,-20.81315 2.55984,-32.40863" id="path1476" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccc" inkscape:connector-curvature="0" id="path5577" d="m 275.51876,104.36354 c -6.56153,12.10503 -4.62779,23.59024 1.20643,34.79081 -6.87437,19.13787 -0.30941,20.56673 1.0028,28.91716 -11.35238,14.0007 -3.54846,22.90628 1.01185,29.17911 -6.01757,6.49739 -5.4896,14.96165 2.39469,25.63647 -24.69172,14.86943 -25.14333,49.37018 -23.62401,79.33609 36.77738,-33.10786 40.72914,-53.48535 31.97699,-78.58972 5.4667,-6.13236 10.6644,-12.36123 2.16879,-23.50571 7.88594,-8.57238 9.21268,-18.65797 2.81645,-30.52526 6.28053,-7.97003 5.07269,-17.46232 2.30129,-27.27248 7.88469,-9.2226 5.15346,-20.81315 2.55984,-32.40863" class="hair"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Back_Braids_Short" inkscape:label="Hair_Back_Braids_Short" style="display:inline">
+      <path class="hair" sodipodi:nodetypes="cccccccccccc" inkscape:connector-curvature="0" id="path1480" d="m 335.13237,114.0704 c -0.89834,5.59624 3.61948,8.03643 4.33447,7.65141 -0.1293,2.71709 1.41676,4.46417 3.50964,5.91017 -0.15427,2.76384 0.39856,5.14423 2.98169,6.47497 -1.0436,3.94688 0.15376,5.3409 2.81581,7.3438 -2.03732,12.08181 9.42885,17.90077 16.84364,26.65277 2.43156,-20.87105 -7.82339,-19.9423 -13.76897,-28.00396 1.01077,-2.56527 -0.25409,-4.92225 -2.87175,-7.11773 0.88156,-2.3644 0.48923,-4.70879 -1.74188,-7.02778 0.16107,-1.96634 1.15831,-3.45337 -1.73706,-7.40344 0.71065,-0.26408 0.0334,-6.76692 -3.3595,-7.09399 0.28299,-5.27434 -1.47388,-4.93407 -4.20907,-7.38414"/>
+      <path d="m 335.13237,114.0704 c -0.5501,5.47187 3.84934,7.95434 4.33447,7.65141 0.20504,2.71709 1.66289,4.46417 3.50964,5.91017 0.0339,2.70112 0.7043,5.04232 2.98169,6.47497 -0.723,3.87564 0.57998,5.24618 2.81581,7.3438 -1.39454,11.98032 10.35817,17.75403 16.84364,26.65277 1.68314,-20.69834 -8.11338,-19.87538 -13.76897,-28.00396 0.73043,-2.48517 -0.55691,-4.83573 -2.87175,-7.11773 0.69547,-2.3644 0.22024,-4.70879 -1.74188,-7.02778 0.10994,-1.98029 0.7976,-3.55175 -1.73706,-7.40344 0.63941,-0.0741 -0.13645,-6.31409 -3.3595,-7.09399 -0.30155,-5.27434 -1.62567,-4.93407 -4.20907,-7.38414" id="path5566" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccc" class="hair"/>
+      <path class="shadow" sodipodi:nodetypes="ccccccccccc" inkscape:connector-curvature="0" id="path1478" d="m 260.07577,108.60618 c -2.55176,4.19753 -2.06795,8.18013 0.41834,12.06403 -3.31127,6.23872 -0.22343,7.08193 0.34773,10.02729 -4.47318,4.99586 -1.45674,8.00287 0.35087,10.11812 -2.24601,2.30615 -2.41121,5.3573 0.83038,8.88968 -9.44235,4.67196 -8.9277,17.0046 -8.19184,27.51051 13.12179,-11.5068 14.57739,-18.57897 11.08831,-27.2517 2.16128,-2.17958 4.28884,-4.40454 0.75205,-8.15082 3.19158,-2.92832 4.00734,-6.39117 0.97663,-10.58491 2.53365,-2.86072 2.31069,-6.20568 0.79799,-9.45698 3.20847,-3.19802 2.31209,-7.21715 0.88765,-11.23799"/>
+      <path d="m 260.07577,108.60618 c -2.27527,4.19753 -1.60473,8.18013 0.41834,12.06403 -2.38375,6.63623 -0.10729,7.1317 0.34773,10.02729 -3.93654,4.85487 -1.23046,7.94296 0.35087,10.11812 -2.08665,2.25303 -1.90357,5.18809 0.83038,8.88968 -8.56208,5.15611 -8.71868,17.11956 -8.19184,27.51051 12.75289,-11.48045 14.1232,-18.54653 11.08831,-27.2517 1.89563,-2.12645 3.69798,-4.28637 0.75205,-8.15082 2.73452,-2.97255 3.19458,-6.46982 0.97663,-10.58491 2.17783,-2.76368 1.759,-6.05522 0.79799,-9.45698 2.73409,-3.19802 1.78701,-7.21715 0.88765,-11.23799" id="path5572" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" class="hair"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Butt_" style="display:inline" inkscape:label="Butt_">
+    <g inkscape:groupmode="layer" id="Butt_3" inkscape:label="Butt_3" style="display:inline">
+      <path id="path1073" class="shadow" d="m 272.32511,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
+      <path inkscape:connector-curvature="0" d="m 272.32511,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1075"/>
+      <path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" d="m 366.95012,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1077"/>
+      <path id="path1079" class="skin" d="m 366.95012,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Butt_2" inkscape:label="Butt_2" style="display:inline">
+      <path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" d="m 269.58507,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1049"/>
+      <path id="path1051" class="skin" d="m 269.58507,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0"/>
+      <path id="path1053" class="shadow" d="m 364.21008,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
+      <path inkscape:connector-curvature="0" d="m 364.21008,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1055"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Butt_1" inkscape:label="Butt_1" style="display:inline">
+      <path id="path1037" class="shadow" d="m 267.81731,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
+      <path inkscape:connector-curvature="0" d="m 267.81731,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1039"/>
+      <path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" d="m 362.44232,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1041"/>
+      <path id="path1043" class="skin" d="m 362.44232,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Butt_0" inkscape:label="Butt_0" style="display:inline">
+      <path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" d="m 266.49148,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path6961"/>
+      <path id="path6963" class="skin" d="m 266.49148,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0"/>
+      <path id="path882" class="shadow" d="m 361.11649,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
+      <path inkscape:connector-curvature="0" d="m 361.11649,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path884"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Leg_" style="display:inline" inkscape:label="Leg_">
+    <g inkscape:groupmode="layer" id="Leg_Wide" style="display:inline" inkscape:label="Leg_Wide">
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccccc" id="path3112" class="shadow" d="m 230.16344,406.75684 c -0.45725,0.19597 -13.71714,52.20295 -12.8877,76.1189 -2.06873,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 C 243.31989,808.28831 302.42696,748.44875 292.55,688.2 c 1.17052,-5.16551 -4.63072,-15.79216 -4.685,-24.33327 1.31033,-7.42825 1.63646,-18.3535 -0.0492,-29.59286 -0.5844,-5.41129 -1.3899,-10.65541 -1.88678,-16.19898 7.43414,-17.32734 10.6379,-36.86783 12.06178,-60.7189 9.12116,-16.1781 6.9524,-83.41622 3.24159,-86.25025 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 11.88462,136.6433 35.11482,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 8.12617,30.85173 14.92797,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 49.30508,-148.62213 0.36161,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 10.22328,-45.83468 3.35825,-100.53242 -3.58425,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 230.16344,406.75684 c 0,0 -12.5877,51.7189 -12.8877,76.1189 -0.36782,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 58.93707,-110.66217 52.70766,-170.90923 0.25772,-5.16551 -5.34658,-15.66345 -4.685,-24.33327 0.61317,-8.03525 0.74534,-18.83014 -0.0492,-29.59286 -0.40774,-5.52344 -2.62982,-10.65541 -1.88678,-16.19898 6.92108,-17.8404 9.4852,-38.19731 12.06178,-60.7189 6.60293,-16.1781 6.40904,-83.41622 3.24159,-86.25025 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 9.52981,126.20607 35.11482,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 9.20796,30.31083 14.92797,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 48.21749,-148.87213 0.36161,-213.23096 1.59844,-15.40469 -6.10129,-30.01447 -3.83238,-43.53363 7.82094,-46.6006 0.35954,-101.22443 -3.58425,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" class="skin" id="path3114" sodipodi:nodetypes="cccsccccsscccccccscsscccsccc"/>
+      <path inkscape:connector-curvature="0" d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z" class="shadow" id="path3116" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z" class="shadow" id="path3118" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z" class="shadow" id="path3120" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z" class="shadow" id="path3122" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z" class="shadow" id="path3124" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z" class="shadow" id="path3126" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Leg_Normal" style="display:inline" inkscape:label="Leg_Normal">
+      <path inkscape:connector-curvature="0" d="m 230.16344,406.75684 c -0.45725,0.19597 -13.76292,52.20295 -12.8877,76.1189 -2.18291,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 3.47755,-50.82092 56.46873,-110.66048 46.04662,-170.90923 1.23512,-5.16551 -2.93357,-15.79216 -2.99085,-24.33327 1.38265,-7.42825 1.72678,-18.3535 -0.0519,-29.59286 -0.61665,-5.41129 -1.46661,-10.65541 -1.99091,-16.19898 8.64254,-21.66379 7.87642,-41.52669 10.77156,-62.48667 9.62459,-16.1781 13.31636,-81.64845 9.60555,-84.48248 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 27.37942,150.0183 37.85962,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 5.38137,30.85173 12.18317,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 37.12094,-146.87213 -3.32253,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 -2.02672,-44.83468 7.04239,-100.53242 0.0999,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 l -148.7328,16.03681" class="shadow" id="path3088" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="cccsccccsscccccccscsscccsccc" id="path3090" class="skin" d="m 230.16344,406.75684 c 0,0 -12.57114,51.7189 -12.8877,76.1189 -0.38812,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 52.61985,-110.66217 46.04662,-170.90923 0.27194,-5.16551 -3.68895,-15.66345 -2.99085,-24.33327 0.64701,-8.03525 0.78648,-18.83014 -0.0519,-29.59286 -0.43024,-5.52344 -2.77497,-10.65541 -1.99091,-16.19898 7.30308,-17.8404 5.81436,-41.11413 10.77156,-62.48667 6.96737,-16.1781 12.773,-81.64845 9.60555,-84.48248 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 29.27461,149.20607 37.85962,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 6.46316,30.31083 12.18317,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 36.78335,-146.87213 -3.32253,-213.23096 1.59844,-15.40469 -2.8685,-29.85933 -3.83238,-43.53363 -3.17906,-45.1006 4.04368,-101.22443 0.0999,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 l -148.7328,16.03681" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3092" class="shadow" d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3094" class="shadow" d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3096" class="shadow" d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3098" class="shadow" d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3100" class="shadow" d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path3102" class="shadow" d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Leg_Narrow" style="display:inline;opacity:1" inkscape:label="Leg_Narrow">
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccccc" id="path6860" class="shadow" d="m 230.16344,406.75684 c -0.45725,0.19597 -13.71714,52.20295 -12.8877,76.1189 -2.06873,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 C 243.31989,808.28831 292.17696,748.44875 282.3,688.2 c 1.17052,-5.16551 -6.13072,-15.79216 -6.185,-24.33327 1.31033,-7.42825 1.63646,-18.3535 -0.0492,-29.59286 -0.5844,-5.41129 -1.3899,-10.65541 -1.88678,-16.19898 7.43414,-17.32734 10.54386,-39.4311 13.55873,-62.48667 9.12116,-16.1781 17.20545,-81.64845 13.49464,-84.48248 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 30.38462,150.0183 40.86482,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 2.37617,30.85173 9.17797,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 33.05508,-146.87213 -7.38839,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 -2.02672,-44.83468 11.10825,-100.53242 4.16575,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 230.16344,406.75684 c 0,0 -12.5877,51.7189 -12.8877,76.1189 -0.36782,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 48.68707,-110.66217 42.45766,-170.90923 0.25772,-5.16551 -6.84658,-15.66345 -6.185,-24.33327 0.61317,-8.03525 0.74534,-18.83014 -0.0492,-29.59286 -0.40774,-5.52344 -2.62982,-10.65541 -1.88678,-16.19898 6.92108,-17.8404 8.86083,-41.11413 13.55873,-62.48667 6.60293,-16.1781 16.66209,-81.64845 13.49464,-84.48248 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 32.27981,149.20607 40.86482,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 3.45796,30.31083 9.17797,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 32.71749,-146.87213 -7.38839,-213.23096 1.59844,-15.40469 -2.8685,-29.85933 -3.83238,-43.53363 -3.17906,-45.1006 8.10954,-101.22443 4.16575,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" class="skin" id="XMLID_464_" sodipodi:nodetypes="cccsccccsscccccccscsscccsccc"/>
+      <path inkscape:connector-curvature="0" d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z" class="shadow" id="XMLID_590_-04-8-55" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z" class="shadow" id="XMLID_590_-04-8-55-0" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z" class="shadow" id="XMLID_590_-04-8-55-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z" class="shadow" id="XMLID_590_-04-8-55-8-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z" class="shadow" id="XMLID_590_-04-8-55-8-75" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z" class="shadow" id="XMLID_590_-04-8-55-8-75-3" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g id="Stump" inkscape:groupmode="layer" inkscape:label="Stump" style="display:inline">
+      <path sodipodi:nodetypes="cccccccc" id="path1372" inkscape:connector-curvature="0" d="m 230.28965,407.60424 c 27.39204,-26.79135 106.43008,-43.38985 148.417,-16.8629 22.94771,17.0173 36.08141,60.01349 20.40321,84.0104 -13.72251,17.8756 -32.7562,14.73245 -52.05351,12.51115 -20.85364,-0.58883 -33.61362,-25.83908 -52.17969,-26.54843 -15.8761,1.03867 -28.23124,23.52457 -45.43451,22.30034 -13.25287,-0.31877 -29.07118,-7.54966 -32.94684,-20.32451 -7.97944,-17.5338 7.02473,-49.02171 13.79434,-55.08605 z" class="shadow"/>
+      <path class="skin" d="m 230.28965,407.60424 c 27.39204,-26.79135 110.72562,-49.39699 148.417,-16.8629 21.00008,18.12665 35.42478,59.4177 20.40321,84.0104 -9.30215,15.22909 -34.33101,14.60117 -52.05351,12.51115 -19.38076,-2.28558 -32.66513,-26.40818 -52.17969,-26.54843 -16.87031,-0.12125 -28.58338,23.11374 -45.43451,22.30034 -12.88883,-0.62214 -28.08465,-8.37177 -32.94684,-20.32451 -7.13248,-17.5338 7.57873,-49.02171 13.79434,-55.08605 z" inkscape:connector-curvature="0" id="path62" sodipodi:nodetypes="csaaaaac"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Leg_Highlights_" inkscape:label="Leg_Highlights_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Leg_Highlights2" inkscape:label="Leg_Highlights2" style="display:inline">
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6" class="highlight2" d="m 252.40264,490.48989 c 10.07018,29.84487 -3.27803,57.85752 -3.82385,61.89524 -3.30803,-1.62614 -7.09693,-44.45212 3.82385,-61.89524 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0" class="highlight2" d="m 247.84341,555.55395 c 2.9926,8.86913 0.40085,10.94377 0.23865,12.14368 -0.98306,-0.48325 -3.48403,-6.96003 -0.23865,-12.14368 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0-8" class="highlight2" d="m 240.30654,628.14692 c 2.9926,8.86913 0.40085,10.94377 0.23865,12.14368 -0.98306,-0.48325 -3.48403,-6.96003 -0.23865,-12.14368 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0-0" class="highlight2" d="m 369.91756,635.45313 c -1.97841,9.14894 0.82978,10.91963 1.12561,12.09376 0.92262,-0.59052 2.68097,-7.30704 -1.12561,-12.09376 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-5" class="highlight2" d="m 353.92504,483.09326 c -3.41721,37.99625 7.60129,92.56555 9.59682,99.67367 3.83375,-17.75114 7.1206,-59.60555 -9.59682,-99.67367 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Leg_Highlights1" inkscape:label="Leg_Highlights1" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 251.99197,509.9025 c -5.23668,7.36843 -4.53715,18.6497 -2.744,23.55798 1.47494,-6.06602 4.11072,-17.56782 2.744,-23.55798 z" class="highlight1" id="path1141-07-4-0" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 356.65399,517.81824 c 6.76776,9.52278 5.86371,24.10242 3.54628,30.44576 -1.90617,-7.83958 -5.31259,-22.70422 -3.54628,-30.44576 z" class="highlight1" id="path1141-07-4-0-3" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 360.4759,558.09508 c 0.81932,1.60231 0.35659,3.80443 -0.13802,4.71965 -0.11582,-1.23741 -0.30375,-3.57904 0.13802,-4.71965 z" class="highlight1" id="path1141-07-4-0-3-9" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 247.61623,559.01301 c -0.81932,1.60231 -0.35659,3.80443 0.13802,4.71965 0.11582,-1.23741 0.30375,-3.57904 -0.13802,-4.71965 z" class="highlight1" id="path1141-07-4-0-3-9-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 239.97063,629.98426 c -1.13405,1.65477 -0.53336,6.49014 0.13802,7.3759 -0.10399,-1.20078 0.025,-6.18884 -0.13802,-7.3759 z" class="highlight1" id="path1141-07-4-0-3-9-2-6" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 370.086,637.36953 c 1.64444,1.34354 1.87091,6.96776 1.08314,8.01095 -0.0993,-1.27689 -1.05116,-6.87277 -1.08314,-8.01095 z" class="highlight1" id="path1141-07-4-0-3-9-5" sodipodi:nodetypes="ccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Feet" style="display:inline;opacity:1" inkscape:label="Feet">
+    <path sodipodi:nodetypes="ccccccccccccccccccc" id="path1094" class="shadow" d="m 238.95,872.025 c -0.48582,4.8674 0.15294,9.06839 -0.0125,13.6 2.22973,9.99408 1.7936,14.49404 2.1125,20.825 0.022,5.27636 -1.31474,9.10565 -4.425,9.7625 -3.67413,1.13135 -6.74815,2.63651 -14.39869,1.5302 -9.18145,2.47145 -15.2613,8.08123 -19.65088,12.66319 -5.99441,11.15878 -13.47376,7.21014 -20.43229,8.63526 -2.26339,1.53969 -4.48245,2.64592 -5.92759,3.92125 -8.08027,1.27814 -9.78952,-1.14984 -9.34055,-4.7749 -4.73388,-0.59152 -3.07859,-2.61348 -3.4875,-4.1125 -2.1797,-0.86783 -3.38524,-2.25017 -1.8875,-5.5125 -1.64492,-1.58194 -0.59193,-3.0027 1.0125,-4.4125 -0.047,-1.41206 -0.0626,-2.02062 1.85427,-3.5987 2.47354,-1.16931 5.2035,-1.82041 6.88323,-3.0263 9.61678,-4.02794 17.69545,-9.58214 24.9375,-15.6 6.764,-7.70672 11.93927,-16.77333 16.725,-26.1125 0.38886,-5.72349 1.1106,-11.50246 2.49687,-17.39219 8.29195,1.78724 16.46415,2.06569 24.4617,0.1436 0.0134,4.46773 -0.288,9.28647 -0.92107,13.46109 z" inkscape:connector-curvature="0"/>
+    <path inkscape:connector-curvature="0" d="m 238.95,872.025 c -0.78366,4.8674 -0.0123,9.06839 -0.0125,13.6 1.96104,9.99408 1.6598,14.49404 2.1125,20.825 -0.33122,5.1439 -1.39649,9.075 -4.425,9.7625 -3.7164,0.94114 -6.82187,2.30479 -14.39869,1.5302 -9.54221,2.255 -15.48251,7.9485 -19.65088,12.66319 -5.99441,10.40697 -13.47376,7.11956 -20.43229,8.63526 -2.68208,1.30708 -4.5396,2.61417 -5.92759,3.92125 -7.45032,0.85817 -9.58295,-1.28756 -9.34055,-4.7749 -4.44919,-0.9711 -3.04844,-2.65368 -3.4875,-4.1125 -1.9584,-0.90471 -3.25864,-2.27127 -1.8875,-5.5125 -1.25464,-1.53858 -0.48809,-2.99116 1.0125,-4.4125 0.0921,-1.45 0.40705,-2.1487 1.85427,-3.5987 2.78612,-0.81208 5.26912,-1.74541 6.88323,-3.0263 10.38085,-4.02794 18.06828,-9.58214 24.9375,-15.6 7.28492,-7.70672 12.23858,-16.77333 16.725,-26.1125 l 2.49687,-17.39219 24.4617,0.1436 c -0.20353,4.43674 -0.48332,9.25857 -0.92107,13.46109 z" class="skin" id="XMLID_463_" sodipodi:nodetypes="ccccccccccccccccccc"/>
+    <path sodipodi:nodetypes="cccccccccccccccccccc" id="path1096" class="shadow" d="m 375.58471,902.04597 c 0.52386,-4.42278 1.19018,-8.77106 2.62778,-13.11184 -0.18418,-4.15006 -1.53153,-7.58074 -2.24386,-11.19255 1.41187,-3.81106 3.55196,-7.41574 3.75747,-11.68734 l 9.5403,1.19132 11.39699,0.54305 c -0.13161,5.61968 0.61689,10.96792 1.61199,16.17184 -0.39734,2.28591 -1.32892,4.4142 -1.48163,6.5833 0.49368,10.63259 0.94138,21.12141 0.78125,31.41875 1.02096,6.09599 4.65404,10.88578 -0.98008,20.3093 1.08539,5.03478 -0.79793,7.36352 -3.88112,9.44835 -0.76646,0.77233 -1.5056,1.34202 -2.34991,0.25285 -1.29478,4.61758 -3.69222,4.6425 -6.30536,3.64975 -1.58037,3.04176 -4.00867,3.2139 -7.08388,1.97332 -3.5406,3.44729 -7.70644,0.0206 -7.31963,-0.63385 -4.38119,2.60045 -6.80232,1.14845 -7.60246,-4.0751 0.35561,-2.38229 1.37471,-4.40392 1.37081,-7.1661 -0.32501,-1.77042 -0.20542,-3.64462 -0.12828,-5.82926 2.01476,-4.1624 4.14533,-8.22545 5.26725,-12.21996 2.26819,-8.61114 1.87934,-17.08855 3.02237,-25.62583 z" inkscape:connector-curvature="0"/>
+    <path inkscape:connector-curvature="0" d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 0.89521,6.14315 4.16056,11.07084 -0.98008,20.3093 0.80111,5.03478 -1.4045,7.36352 -3.88112,9.44835 -0.7833,0.60391 -1.56661,0.73191 -2.34991,0.25285 -1.50732,4.13937 -3.80652,4.38532 -6.30536,3.64975 -1.64076,2.4379 -4.02654,3.0352 -7.08388,1.97332 -3.47099,3.02964 -7.70217,-0.005 -7.31963,-0.63385 -4.31272,2.15538 -6.70519,0.51711 -7.60246,-4.0751 0.46976,-2.38229 1.66083,-4.40392 1.37081,-7.1661 -0.0428,-1.77042 -0.0855,-3.64462 -0.12828,-5.82926 2.29215,-4.04352 4.45099,-8.09445 5.26725,-12.21996 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z" class="skin" id="XMLID_510_" sodipodi:nodetypes="cccccccccccccccccccc"/>
+    <path inkscape:connector-curvature="0" d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-3" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 395.69892,943.48628 c -0.6807,3.78292 -1.85845,3.72528 -1.22527,8.57452 -1.10247,-5.75622 0.27648,-4.68977 1.22527,-8.57452 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 389.12868,946.23737 c -0.6807,3.78292 -1.77006,4.43239 -1.13688,9.28163 -1.10247,-5.75622 0.18809,-5.39688 1.13688,-9.28163 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 382.17591,947.91674 c -0.6807,3.78292 -1.37231,4.91853 -1.20317,9.74567 -0.74892,-5.60154 0.25438,-5.86092 1.20317,-9.74567 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 375.34424,947.66262 c -0.6807,3.78292 -1.70377,4.56498 -1.79979,9.37002 -0.35118,-5.49105 0.851,-5.48527 1.79979,-9.37002 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 233.85987,866.45583 c 0.20162,3.58528 1.78152,8.46827 1.27913,12.44825 -0.33424,2.64785 -1.53099,3.78741 -2.39316,6.67724 0.49516,-2.71172 1.67721,-3.99993 2.00285,-6.68659 0.49663,-4.09741 -0.91468,-9.23845 -0.88882,-12.4389 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-4" sodipodi:nodetypes="cscsc"/>
+    <path inkscape:connector-curvature="0" d="m 174.52487,930.47124 c -0.6807,3.78292 -7.54752,3.28373 -7.64354,8.08877 -0.35118,-5.49105 6.69475,-4.20402 7.64354,-8.08877 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 171.50081,927.25578 c -0.6807,3.78292 -7.92317,3.54889 -8.01919,8.35393 -0.35118,-5.49105 7.0704,-4.46918 8.01919,-8.35393 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 170.10938,922.88554 c -1.57133,3.50167 -6.25131,2.72077 -8.61295,5.86956 2.43007,-3.53793 6.80478,-2.48481 8.61295,-5.86956 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0-3" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 169.29085,920.33085 c -1.75883,3.47042 -4.50131,0.78327 -6.86295,3.93206 2.43007,-3.53793 4.92978,-0.57856 6.86295,-3.93206 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0-3-1" sodipodi:nodetypes="ccc"/>
+  </g>
+  <g inkscape:groupmode="layer" id="Shoes_" style="display:inline" inkscape:label="Shoes_">
+    <g inkscape:groupmode="layer" id="Shoes_Boot" inkscape:label="Shoes_Boot" style="display:inline;opacity:1">
+      <path inkscape:connector-curvature="0" d="m 410.16185,900.0141 c 2.86198,8.5845 -2.04252,30.0269 -2.04252,30.0269 -2.6082,0.68854 -3.40523,0.43588 -4.22778,6.50664 -0.62624,4.62187 1.57451,13.48604 0.72183,20.15407 -0.70731,5.53119 -1.99538,11.20183 -4.78637,16.02933 -2.73689,4.73391 -6.44108,9.36425 -11.28012,11.91064 -3.96775,2.0879 -9.22079,3.98196 -13.2869,2.09276 -4.86908,-2.26228 -7.20428,-8.52988 -8.34573,-13.77611 -3.12418,-14.35908 3.89312,-29.67483 5.11156,-43.78772 0.56958,-9.56894 0.56958,-17.42915 0.45566,-21.87186 0,-0.78196 0.5419,-1.93558 0.55511,-3.02502 0.0176,-1.4499 -0.49225,-2.78612 -0.49225,-2.98125 3.13628,-27.51762 -3.62235,-80.17699 -7.02883,-121.55654 -1.76091,-21.39034 -8.15834,-63.86913 -8.15834,-63.86913 27.93153,-9.28995 53.21077,9.69771 71.38941,-8.39445 1.69105,35.38515 -7.04987,61.39476 -7.99949,92.08389 0.26562,31.67469 -6.78797,59.35802 -10.58524,100.45785 z" class="shoe" id="XMLID_476_" sodipodi:nodetypes="ccsaaaaaccscscccc"/>
+      <path inkscape:connector-curvature="0" d="m 220.3433,696.48401 c 8.38156,-0.20607 59.08473,13.7755 77.55825,9.34059 5.76359,46.33045 -41.72917,95.75159 -43.05923,107.72214 -1.33006,11.97055 -6.25632,16.9788 -12.5741,57.54565 0,0 -0.5542,6.09611 1.55173,11.08384 0.88671,2.21677 1.55174,2.32761 2.77096,4.21186 3.10348,4.98773 4.21186,12.63557 3.65767,18.28833 -0.44335,4.65521 -1.77341,4.65521 -3.43599,10.30797 -1.77341,6.20695 -2.10593,15.2957 -2.66012,33.36236 0,1.66257 -0.44336,5.54192 -0.44336,7.20449 -0.44335,0.33252 -2.21676,0.33252 -2.88179,0 0.11084,-1.33006 0.11084,-3.87934 0.11084,-5.43108 -0.22168,-9.31042 1.33006,-28.04211 -0.33252,-29.03966 -1.10838,-0.66503 -18.99219,8.39588 -21.3198,14.8245 -4.65521,13.52229 -2.54928,18.73169 -6.20695,23.60858 -3.10347,4.21186 -22.11225,7.09366 -31.75519,6.31779 -10.19714,-0.88671 -12.08139,-4.21186 -12.74642,-5.32024 -2.32761,-4.43354 -2.66012,-11.97055 -0.55419,-14.51983 0.77587,-0.99755 1.33006,-0.55419 3.32515,-1.21922 3.65767,-1.10839 6.31779,-3.76851 7.2045,-4.76606 3.10347,-3.54682 12.49702,-12.91267 16.01614,-15.51737 3.99535,-14.0275 5.72631,-17.90314 6.65031,-23.71941 0,0 0.77586,-4.3227 1.10838,-9.19959 0.44335,-5.43108 8.82169,-104.08788 18.04646,-176.75792 0,-2.21677 0.30178,-11.78826 -0.0307,-18.32772 z" class="shoe" id="XMLID_477_" sodipodi:nodetypes="ccscccccccccsccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Shoes_Exterme_Heel" inkscape:label="Shoes_Exterme_Heel" style="display:inline">
+      <path sodipodi:nodetypes="cccccccccccc" id="path3082" class="shoe" d="m 197.71421,928.07188 c 0.84235,-11.67605 -1.71189,-49.689 14.90659,-65.62886 1.90184,-5.28177 6.69781,-82.56184 6.89573,-82.59309 l 49.973,2.42 c 3.07009,2.23279 -24.33404,71.01812 -25.51981,81.01101 3.22845,1.13574 4.21503,15.11979 3.86846,24.30368 -6.98224,17.7335 -5.47757,69.39834 -5.47757,69.39834 l -0.94939,-0.18887 c 0,0 -4.47938,-36.71186 -4.23419,-52.20785 -7.90677,18.65992 -21.83411,60.13149 -30.39884,64.8018 -3.0313,-0.44283 -4.27378,0.68941 -6.41589,-1.37679 -3.4832,-21.25345 -2.64809,-39.93937 -2.64809,-39.93937 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccccaccac" id="path3084" class="shoe" d="m 375.8095,877.51789 c 7.02973,-8.58252 3.90877,-84.70624 -1.77465,-84.88229 l 42.09097,1.29066 -14.30132,77.42063 c 5.687,16.577 11.33733,41.86577 11.132,63.283 -0.18518,19.31554 -3.388,29.161 -11.132,56.87 -2.904,3.63 -14.52,2.299 -18.392,-0.121 -8.228,-22.99 -12.09246,-37.92868 -13.33653,-57.596 -1.19009,-18.81385 3.65653,-31.702 5.71353,-56.265 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Shoes_Heel" inkscape:label="Shoes_Heel" style="display:inline">
+      <path sodipodi:nodetypes="cccccccccc" id="path1155" class="skin" d="m 240.59845,873.07198 c 0.50286,4.90436 1.00937,7.12738 2.18205,11.50463 0.85694,12.72572 1.68645,15.02898 3.7623,21.02706 1.01141,5.05435 0.99988,9.12721 -1.7475,10.57512 -3.34618,1.87095 -5.9929,3.99189 -13.51203,5.20472 -46.61525,37.98885 -67.56847,48.2592 -29.24548,-8.53938 5.04205,-9.3296 9.51324,-18.92743 11.42962,-29.10955 l 2.00493,-25.33317 24.35037,0.50298 c 0.95172,4.33824 0.11088,9.99496 0.77574,14.16759 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccccccccscccccczc" id="path1148" class="shoe" d="m 244.31995,884.92623 c 0,0 1.55174,2.32761 2.77096,4.21186 3.10348,4.98773 4.21186,12.63557 3.65767,18.28833 -0.44335,4.65521 -1.77341,4.65521 -3.43599,10.30797 -1.77341,6.20695 -2.10593,15.2957 -2.66012,33.36236 0,1.66257 -0.44336,5.54192 -0.44336,7.20449 -0.44335,0.33252 -2.21676,0.33252 -2.88179,0 0.11084,-1.33006 0.11084,-3.87934 0.11084,-5.43108 -0.22168,-9.31042 1.33006,-28.04211 -0.33252,-29.03966 -1.10838,-0.66503 -18.99219,8.39588 -21.3198,14.8245 -4.65521,13.52229 -9.53196,20.1459 -13.18963,25.02279 -3.10347,4.21186 -15.12957,5.67945 -24.77251,4.90358 -10.19714,-0.88671 -15.55892,-3.88274 -15.55892,-3.88274 0,0 -1.75502,-8.83719 26.68462,-40.85535 l 15.13332,-23.22251 c -3.15612,7.97704 -12.0531,21.27684 -9.42395,24.21053 2.62915,2.93369 45.66118,-39.90507 45.66118,-39.90507 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccccccccccc" id="path1159" class="skin" d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 3.99699,37.66992 -39.08408,53.65806 -29.01266,5.7093 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccssszcccscc" id="path1146" class="shoe" d="m 401.16185,898.2641 c 4.86978,9.3269 4.14816,19.20588 3.20748,30.0269 0,0 -1.59383,25.88068 -5.20133,38.22252 -2.09871,7.18004 -4.5609,14.6838 -9.42657,20.3656 -1.98298,2.31559 -4.50163,7.07804 -7.61012,5.07283 -5.21682,-3.36524 -6.42685,-5.44847 -9.40639,-16.07421 -2.97954,-10.62574 -2.04254,-33.46924 -0.8241,-47.58213 0.30849,-4.24462 -0.58204,-25.74717 4.23787,-29.94193 l -0.54506,4.14234 c 0.68491,-0.2283 -5.89176,37.99606 7.34151,39.67379 14.711,1.86508 18.43779,-40.48551 18.43779,-40.48551 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1161" class="shadow" d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1163" class="shadow" d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="cscsc" id="path1173" class="shadow" d="m 229.24641,868.83321 c 1.12269,3.41093 3.91256,7.71863 4.45739,11.69303 0.36247,2.64412 -0.49857,4.0546 -0.58342,7.06911 -0.22351,-2.74748 0.5848,-4.29773 0.20399,-6.97713 -0.58078,-4.08633 -3.2746,-8.68693 -4.07796,-11.78501 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Shoes_Flat" inkscape:label="Shoes_Flat" style="display:inline;opacity:1">
+      <path inkscape:connector-curvature="0" d="m 238.95,872.025 c -0.48582,4.8674 0.15294,9.06839 -0.0125,13.6 2.22973,9.99408 1.7936,14.49404 2.1125,20.825 0.022,5.27636 -1.31474,9.10565 -4.425,9.7625 -3.67413,1.13135 -6.74815,2.63651 -14.39869,1.5302 -9.18145,2.47145 -15.2613,8.08123 -19.65088,12.66319 -5.99441,11.15878 -13.47376,7.21014 -20.43229,8.63526 -2.26339,1.53969 -4.48245,2.64592 -5.92759,3.92125 -8.08027,1.27814 -9.78952,-1.14984 -9.34055,-4.7749 -4.73388,-0.59152 -3.07859,-2.61348 -3.4875,-4.1125 -2.1797,-0.86783 -3.38524,-2.25017 -1.8875,-5.5125 -1.64492,-1.58194 -0.59193,-3.0027 1.0125,-4.4125 -0.047,-1.41206 -0.0626,-2.02062 1.85427,-3.5987 2.47354,-1.16931 5.2035,-1.82041 6.88323,-3.0263 9.61678,-4.02794 17.69545,-9.58214 24.9375,-15.6 6.764,-7.70672 11.93927,-16.77333 16.725,-26.1125 0.38886,-5.72349 1.1106,-11.50246 2.49687,-17.39219 8.29195,1.78724 16.46415,2.06569 24.4617,0.1436 0.0134,4.46773 -0.288,9.28647 -0.92107,13.46109 z" class="shadow" id="path1284" sodipodi:nodetypes="ccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="ccccccccccccccccccc" id="path1286" class="skin" d="m 238.95,872.025 c -0.78366,4.8674 -0.0123,9.06839 -0.0125,13.6 1.96104,9.99408 1.6598,14.49404 2.1125,20.825 -0.33122,5.1439 -1.39649,9.075 -4.425,9.7625 -3.7164,0.94114 -6.82187,2.30479 -14.39869,1.5302 -9.54221,2.255 -15.48251,7.9485 -19.65088,12.66319 -5.99441,10.40697 -13.47376,7.11956 -20.43229,8.63526 -2.68208,1.30708 -4.5396,2.61417 -5.92759,3.92125 -7.45032,0.85817 -9.58295,-1.28756 -9.34055,-4.7749 -4.44919,-0.9711 -3.04844,-2.65368 -3.4875,-4.1125 -1.9584,-0.90471 -3.25864,-2.27127 -1.8875,-5.5125 -1.25464,-1.53858 -0.48809,-2.99116 1.0125,-4.4125 0.0921,-1.45 0.40705,-2.1487 1.85427,-3.5987 2.78612,-0.81208 5.26912,-1.74541 6.88323,-3.0263 10.38085,-4.02794 18.06828,-9.58214 24.9375,-15.6 7.28492,-7.70672 12.23858,-16.77333 16.725,-26.1125 l 2.49687,-17.39219 24.4617,0.1436 c -0.20353,4.43674 -0.48332,9.25857 -0.92107,13.46109 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 375.58471,902.04597 c 0.52386,-4.42278 1.19018,-8.77106 2.62778,-13.11184 -0.18418,-4.15006 -1.53153,-7.58074 -2.24386,-11.19255 1.41187,-3.81106 3.55196,-7.41574 3.75747,-11.68734 l 9.5403,1.19132 11.39699,0.54305 c -0.13161,5.61968 0.61689,10.96792 1.61199,16.17184 -0.39734,2.28591 -1.32892,4.4142 -1.48163,6.5833 0.49368,10.63259 0.94138,21.12141 0.78125,31.41875 1.02096,6.09599 4.65404,10.88578 -0.98008,20.3093 1.08539,5.03478 -0.79793,7.36352 -3.88112,9.44835 -0.76646,0.77233 -1.5056,1.34202 -2.34991,0.25285 -1.29478,4.61758 -3.69222,4.6425 -6.30536,3.64975 -1.58037,3.04176 -4.00867,3.2139 -7.08388,1.97332 -3.5406,3.44729 -7.70644,0.0206 -7.31963,-0.63385 -4.38119,2.60045 -6.80232,1.14845 -7.60246,-4.0751 0.35561,-2.38229 1.37471,-4.40392 1.37081,-7.1661 -0.32501,-1.77042 -0.20542,-3.64462 -0.12828,-5.82926 2.01476,-4.1624 4.14533,-8.22545 5.26725,-12.21996 2.26819,-8.61114 1.87934,-17.08855 3.02237,-25.62583 z" class="shadow" id="path1288" sodipodi:nodetypes="cccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="cccccccccccccccccccc" id="path1290" class="skin" d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 0.89521,6.14315 4.16056,11.07084 -0.98008,20.3093 0.80111,5.03478 -1.4045,7.36352 -3.88112,9.44835 -0.7833,0.60391 -1.56661,0.73191 -2.34991,0.25285 -1.50732,4.13937 -3.80652,4.38532 -6.30536,3.64975 -1.64076,2.4379 -4.02654,3.0352 -7.08388,1.97332 -3.47099,3.02964 -7.70217,-0.005 -7.31963,-0.63385 -4.31272,2.15538 -6.70519,0.51711 -7.60246,-4.0751 0.46976,-2.38229 1.66083,-4.40392 1.37081,-7.1661 -0.0428,-1.77042 -0.0855,-3.64462 -0.12828,-5.82926 2.29215,-4.04352 4.45099,-8.09445 5.26725,-12.21996 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1292" class="shadow" d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1294" class="shadow" d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1296" class="shadow" d="m 395.69892,943.48628 c -0.6807,3.78292 -1.85845,3.72528 -1.22527,8.57452 -1.10247,-5.75622 0.27648,-4.68977 1.22527,-8.57452 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1298" class="shadow" d="m 389.12868,946.23737 c -0.6807,3.78292 -1.77006,4.43239 -1.13688,9.28163 -1.10247,-5.75622 0.18809,-5.39688 1.13688,-9.28163 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1300" class="shadow" d="m 382.17591,947.91674 c -0.6807,3.78292 -1.37231,4.91853 -1.20317,9.74567 -0.74892,-5.60154 0.25438,-5.86092 1.20317,-9.74567 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1302" class="shadow" d="m 375.34424,947.66262 c -0.6807,3.78292 -1.70377,4.56498 -1.79979,9.37002 -0.35118,-5.49105 0.851,-5.48527 1.79979,-9.37002 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="cscsc" id="path1304" class="shadow" d="m 233.85987,866.45583 c 0.20162,3.58528 1.78152,8.46827 1.27913,12.44825 -0.33424,2.64785 -1.53099,3.78741 -2.39316,6.67724 0.49516,-2.71172 1.67721,-3.99993 2.00285,-6.68659 0.49663,-4.09741 -0.91468,-9.23845 -0.88882,-12.4389 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1306" class="shadow" d="m 174.52487,930.47124 c -0.6807,3.78292 -7.54752,3.28373 -7.64354,8.08877 -0.35118,-5.49105 6.69475,-4.20402 7.64354,-8.08877 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1308" class="shadow" d="m 171.50081,927.25578 c -0.6807,3.78292 -7.92317,3.54889 -8.01919,8.35393 -0.35118,-5.49105 7.0704,-4.46918 8.01919,-8.35393 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1310" class="shadow" d="m 170.10938,922.88554 c -1.57133,3.50167 -6.25131,2.72077 -8.61295,5.86956 2.43007,-3.53793 6.80478,-2.48481 8.61295,-5.86956 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1312" class="shadow" d="m 169.29085,920.33085 c -1.75883,3.47042 -4.50131,0.78327 -6.86295,3.93206 2.43007,-3.53793 4.92978,-0.57856 6.86295,-3.93206 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 230.45,922.8 c 3.85881,-1.84229 9.7,-4 11,-6.6 2.2,-4.4 1.86667,-9.69149 1.625,-13.9 -0.25625,-4.4625 -3.63125,-14.53125 -3.63125,-14.53125 0,0 -0.36875,2.03125 -1.46875,4.43125 -1.4,3.6 -7.175,9.4125 -9.775,11.7125 -14.5,12.9 -40.12015,3.86298 -40.12015,3.86298 0,0 -10.2204,5.65968 -15.40485,8.34952 -3.16251,1.6408 -7.14797,2.1417 -9.575,4.75 -3.73865,4.01788 -8.05388,10.05854 -6.2375,15.2375 2.0624,5.88043 10.15263,8.32568 16.3375,9.0875 11.21911,1.38192 22.71118,-3.60382 32.75,-8.8 3.84711,-1.9913 6.24412,-6.14154 10,-8.3 4.46178,-2.56413 9.85603,-3.08285 14.5,-5.3 z" class="shoe" id="XMLID_507_" sodipodi:nodetypes="assccccaaaaaaa"/>
+      <path inkscape:connector-curvature="0" d="m 375.79425,900.4029 c 0,0 -4.6154,16.02837 -6.68537,24.10598 -1.60665,6.26961 -4.06203,12.43938 -4.44905,18.9 -0.19029,3.17658 0.073,6.46298 1.0625,9.4875 0.76026,2.32384 1.5754,5.06857 3.65,6.3625 7.20694,4.49496 17.65124,5.08244 25.42698,1.66447 3.34793,-1.47165 5.42494,-5.19303 6.87423,-8.5507 2.52235,-5.84372 2.45461,-12.55089 2.62323,-18.91351 0.10833,-4.08767 -0.61807,-8.15587 -1.03934,-12.22322 -0.52587,-5.07731 -1.85728,-15.20035 -1.85728,-15.20035 -0.64133,8.18038 -8.65808,22.74034 -16.16284,20.44039 -10.43676,-3.19851 -10.21428,-16.25102 -9.44306,-26.07306 z" class="shoe" id="XMLID_508_" sodipodi:nodetypes="caaaaaaaacsc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Torso_" style="display:inline;opacity:1" inkscape:label="Torso_" sodipodi:insensitive="true">
+    <g inkscape:groupmode="layer" id="Torso_Normal" style="display:inline;opacity:1" inkscape:label="Torso_Normal">
+      <path sodipodi:nodetypes="ccccccccccsccccsccccccc" id="path4124" class="shadow torso" d="m 246.30911,231.06259 c -6.69233,19.28587 -3.26169,38.80526 2.84033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -12.22966,23.47896 -14.09706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -21.65173,-54.37031 -7.45593,-62.61558 1.67566,-114.84838 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 246.30911,231.06259 c -5.87551,18.9358 -2.96597,38.67852 2.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 238.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -23.58113,-57.47054 -9.97979,-57.27407 1.61601,-114.68532 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z" class="skin torso" id="Body_Normal_1_" sodipodi:nodetypes="cccccccscccccccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z" class="muscle_tone" id="XMLID_590_-04-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z" class="muscle_tone" id="XMLID_590_-04-8-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z" class="muscle_tone" id="XMLID_590_-04-8-5-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z" class="muscle_tone" id="XMLID_590_-04-8-9" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z" class="muscle_tone" id="XMLID_590_-04-8-9-1" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z" class="muscle_tone" id="XMLID_590_-04-8-9-1-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z" class="muscle_tone" id="XMLID_590_-04-8-5-87" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z" class="muscle_tone" id="XMLID_590_-04-8-5-8-4" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z" class="muscle_tone" id="XMLID_590_-04-8-5-87-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z" class="muscle_tone" id="XMLID_590_-04-8-5-87-5-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 331.83474,309.96831 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z" class="muscle_tone" id="XMLID_590_-04-8-5-2" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 250.08235,322.46839 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z" class="muscle_tone" id="XMLID_590_-04-8-5-2-4" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z" class="shadow" id="XMLID_590_-04-8-9-4" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow" id="path1444" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="cccccc" id="path1446" class="muscle_tone" d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Torso_Hourglass" style="display:inline" inkscape:label="Torso_Hourglass">
+      <path inkscape:connector-curvature="0" d="m 246.30911,231.06259 c -6.69233,19.28587 -3.26169,38.80526 2.84033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -12.22966,23.47896 -14.09706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -2.78089,-8.8422 -20.01148,-25.04261 -20.57655,-24.78256 0.41299,-0.50348 -6.8269,-13.62863 -7.45206,-15.85983 2.68681,-6.22178 7.5538,-32.80103 8.07452,-32.87542 14.92551,-15.90852 19.20209,-32.18261 21.62975,-41.33057 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z" class="shadow torso" id="path1102" sodipodi:nodetypes="ccccccccccscccccccsccccccc"/>
+      <path sodipodi:nodetypes="cccccccsccccccccscccccccccc" id="path1104" class="skin torso" d="m 246.30911,231.06259 c -5.87551,18.9358 -2.96597,38.67852 2.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 238.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -3.8841,-8.49646 -20.35009,-24.94863 -20.57655,-24.78256 0.17394,-0.53763 -7.38454,-13.70829 -7.45206,-15.85983 2.56898,-6.32141 6.52289,-30.99874 8.07452,-32.87542 13.06864,-15.80638 16.79552,-26.31022 21.5701,-41.16751 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccccc" id="path1106" class="shadow" d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1108" class="muscle_tone" d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1110" class="muscle_tone" d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1112" class="muscle_tone" d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1114" class="muscle_tone" d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1116" class="muscle_tone" d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1118" class="muscle_tone" d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1120" class="muscle_tone" d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1122" class="muscle_tone" d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1124" class="muscle_tone" d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1126" class="muscle_tone" d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1128" class="muscle_tone" d="m 331.83474,309.96831 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1130" class="muscle_tone" d="m 250.08235,322.46839 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1132" class="shadow" d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z" class="muscle_tone" id="path1440" sodipodi:nodetypes="cccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Torso_Unnatural" style="display:inline" inkscape:label="Torso_Unnatural">
+      <path sodipodi:nodetypes="ccccccccccscccccccsccccccc" id="path1150" class="shadow torso" d="m 246.30911,231.06259 c -8.99453,20.02062 -2.7168,39.82817 6.59033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -15.97966,23.47896 -17.84706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -2.78089,-8.8422 -20.01148,-25.04261 -20.57655,-24.78256 0.41299,-0.50348 -12.21859,-13.62863 -12.84375,-15.85983 2.68681,-6.22178 7.5538,-32.80103 8.07452,-32.87542 19.23508,-11.98202 24.99543,-31.81666 27.02144,-41.33057 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 246.30911,231.06259 c -7.97663,19.22419 -2.76769,39.20032 6.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 242.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -3.8841,-8.49646 -20.35009,-24.94863 -20.57655,-24.78256 0.17394,-0.53763 -12.86462,-13.70829 -12.93214,-15.85983 2.56898,-6.32141 6.07307,-31.48845 8.07452,-32.87542 17.10876,-11.85604 23.08362,-25.52016 27.05018,-41.16751 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z" class="skin torso" id="path1152" sodipodi:nodetypes="cccccccsccccccccscccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z" class="muscle_tone" id="path1156" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z" class="muscle_tone" id="path1158" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z" class="muscle_tone" id="path1160" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z" class="muscle_tone" id="path1162" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z" class="muscle_tone" id="path1164" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z" class="muscle_tone" id="path1166" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z" class="muscle_tone" id="path1168" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z" class="muscle_tone" id="path1170" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z" class="muscle_tone" id="path1172" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z" class="muscle_tone" id="path1174" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 325.9149,310.57121 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z" class="muscle_tone" id="path1176" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 254.14485,322.53089 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z" class="muscle_tone" id="path1178" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z" class="shadow" id="path1180" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow" id="path1454" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="cccccc" id="path1459" class="muscle_tone" d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Torso_Highlights_" inkscape:label="Torso_Highlights_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Torso_Highlights2" inkscape:label="Torso_Highlights2" style="display:inline">
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8" class="highlight2" d="m 290.78031,289.8987 c 1.16217,7.94032 -1.53798,16.12237 -2.63519,17.25859 -0.1441,-1.51113 -0.50096,-11.78223 2.63519,-17.25859 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8" class="highlight2" d="m 263.8142,294.55822 c 2.74268,8.04932 2.76861,26.83209 0.89606,27.91484 -1.12917,-1.27471 -5.12923,-22.1752 -0.89606,-27.91484 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4" class="highlight2" d="m 289.50061,337.66987 c 2.74268,8.04932 1.84052,16.44647 -0.032,17.52922 -1.12917,-1.27471 -4.20114,-11.78958 0.032,-17.52922 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2" class="highlight2" d="m 244.58793,342.8708 c -1.39447,6.83617 -4.62602,11.20746 -5.51208,12.57947 -1.00378,-1.21683 1.66574,-6.6613 5.51208,-12.57947 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7" class="highlight2" d="m 338.3403,373.13569 c 2.26913,12.90402 -4.61748,11.22161 -5.51208,12.57947 -1.0473,-1.2502 -1.53943,-9.11859 5.51208,-12.57947 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6" class="highlight2" d="m 242.25302,404.89085 c -2.26913,12.90402 6.03169,10.58079 7.43452,11.6072 1.0473,-1.2502 -0.38301,-8.14632 -7.43452,-11.6072 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-5" class="highlight2" d="m 274.56079,341.01946 c -0.6917,2.59191 1.01886,6.14891 1.5481,6.57075 -0.0597,-0.50761 -0.7297,-4.73118 -1.5481,-6.57075 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Torso_Highlights1" inkscape:label="Torso_Highlights1" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 289.94777,295.4534 c -1.6989,1.77767 -0.82374,4.35987 -0.53385,5.75144 1.26028,-1.19667 0.74988,-3.92307 0.53385,-5.75144 z" class="highlight1" id="path1141-0" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 264.42812,302.28055 c -1.6989,1.77767 -0.82374,4.35987 -0.53385,5.75144 1.26028,-1.19667 0.74988,-3.92307 0.53385,-5.75144 z" class="highlight1" id="path1141-0-8" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 264.66554,309.1915 c -0.66567,0.91065 -0.10291,1.90971 0.20025,2.42067 0.49089,-0.59211 0.16685,-1.69027 -0.20025,-2.42067 z" class="highlight1" id="path1141-0-8-7" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 289.8216,345.80715 c -0.88546,0.69883 -0.61117,1.8122 -0.45611,2.38573 0.63167,-0.43881 0.61393,-1.58365 0.45611,-2.38573 z" class="highlight1" id="path1141-0-8-7-5" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 337.466,377.21609 c -2.30617,0.13597 -2.84869,1.67314 -2.48904,3.26962 2.13427,-0.43881 2.64686,-2.46754 2.48904,-3.26962 z" class="highlight1" id="path1141-0-8-7-5-0" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 248.30395,412.94797 c -1.46912,-3.58912 -3.04506,-5.40954 -5.40786,-5.39969 -0.8259,3.89201 3.18008,5.39446 5.40786,5.39969 z" class="highlight1" id="path1141-0-8-7-5-0-9" sodipodi:nodetypes="ccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Torso_Outfit_" inkscape:label="Torso_Outfit_" style="display:inline;opacity:1">
+    <g inkscape:groupmode="layer" id="Torso_Outfit_Straps_" inkscape:label="Torso_Outfit_Straps_" style="display:inline">
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Straps_Hourglass" inkscape:label="Torso_Outfit_Straps_Hourglass" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z" class="shadow" id="path1059" sodipodi:nodetypes="cccccc"/>
+        <path inkscape:connector-curvature="0" d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z" class="shadow" id="path1061" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 248.61993,292.69037 0.49718,-5.61448 c 26.08054,7.76617 67.99111,-3.38669 89.95679,-8.90649 l -1.5334,6.06498 c -25.3681,6.21736 -60.17783,18.9423 -88.92057,8.45599 z" class="shadow" id="path1063" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 250.11347,322.51288 -1.23696,-5.4714 c 26.11901,7.93288 63.08772,-3.03436 84.20257,-12.2411 l -1.77559,6.01811 C 311.74357,317.86559 278.86187,333 250.11347,322.51288 Z" class="shadow" id="path1065" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z" class="shadow" id="path1067" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z" class="shadow" id="path1069" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z" class="shadow" id="path1071" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z" class="shadow" id="path1076" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1078" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z" class="shadow" id="path1080" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z" class="shadow" id="path1083" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 295.92707,406.04635 -5.48014,0.45093 c 15.27591,-31.3179 31.43451,-62.33025 40.82744,-95.68456 l 2.64023,5.6203 c -10.44934,31.1379 -23.84084,59.86194 -37.98753,89.61333 z" class="shadow" id="path1085" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 282.59169,408.07843 5.48014,0.45093 C 271.9581,377.42091 257.55557,356.46024 250.06195,322.6311 l -2.97225,5.42499 c 8.59628,31.47482 20.75767,50.37961 35.50199,80.02234 z" class="shadow" id="path1087" sodipodi:nodetypes="ccccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Straps_Unnatural" inkscape:label="Torso_Outfit_Straps_Unnatural" style="display:inline;opacity:1">
+        <path inkscape:connector-curvature="0" d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z" class="shadow" id="XMLID_511_-1-1" sodipodi:nodetypes="cccccc"/>
+        <path inkscape:connector-curvature="0" d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z" class="shadow" id="XMLID_511_-1-1-0" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 252.72931,292.831 0.21593,-5.70042 c 26.08054,7.76617 58.6829,-3.61816 80.64858,-9.13796 l -1.5334,6.06498 c -25.3681,6.21736 -50.58837,19.25971 -79.33111,8.7734 z" class="shadow" id="XMLID_511_-1-1-2" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 253.95837,322.57917 -1.10438,-5.55979 c 26.11901,7.93288 53.67436,-3.18904 74.78921,-12.39578 l -1.77559,6.01811 c -19.55992,7.0471 -43.16084,22.42458 -71.90924,11.93746 z" class="shadow" id="XMLID_511_-1-1-2-6" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z" class="shadow" id="XMLID_511_-1-1-2-6-1" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z" class="shadow" id="XMLID_511_-1-1-2-6-1-0" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z" class="shadow" id="XMLID_511_-1-1-2-6-2" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z" class="shadow" id="XMLID_511_-1-1-2-6-3" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path5007" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z" class="shadow" id="XMLID_511_-1-1-2-3" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z" class="shadow" id="XMLID_511_-1-1-2-3-1" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 290.49119,405.86957 -5.48014,0.45093 c 15.27591,-31.3179 31.43451,-62.33025 40.82744,-95.68456 l 3.21835,4.52655 c -10.44934,31.1379 -24.41896,60.95569 -38.56565,90.70708 z" class="shadow" id="XMLID_511_-1-1-2-6-1-06" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 282.59169,408.07843 5.48014,0.45093 c -16.11373,-31.10845 -26.58298,-52.15751 -34.0766,-85.98665 l -2.97225,5.42499 c 8.59628,31.47482 16.82439,50.468 31.56871,80.11073 z" class="shadow" id="XMLID_511_-1-1-2-6-1-06-9" sodipodi:nodetypes="ccccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Straps_Normal" inkscape:label="Torso_Outfit_Straps_Normal" style="display:inline">
+        <path sodipodi:nodetypes="cccccc" id="path1017" class="shadow" d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1019" class="shadow" d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1021" class="shadow" d="m 248.54181,293.0185 0.59093,-5.63792 c 26.08054,7.76617 81.41051,-8.64113 103.37619,-14.16093 l -1.5334,6.06498 c -25.3681,6.21736 -73.69098,24.22018 -102.43372,13.73387 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1024" class="shadow" d="m 249.83337,322.70417 -1.10438,-5.55979 c 26.11901,7.93288 77.02383,-9.41284 98.13868,-18.61958 l -0.44977,5.62037 c -19.55992,7.0471 -67.83613,29.04612 -96.58453,18.559 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1026" class="shadow" d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1028" class="shadow" d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1030" class="shadow" d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1032" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z" class="shadow" id="path1034" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1036" class="shadow" d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1038" class="shadow" d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1040" class="shadow" d="m 290.49119,405.86957 -5.48014,0.45093 c 15.27591,-31.3179 51.9848,-68.82679 61.37773,-102.1811 l 0.87606,5.45462 c -10.44934,31.1379 -42.62696,66.52416 -56.77365,96.27555 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1044" class="shadow" d="m 282.59169,408.07843 5.48014,0.45093 c -16.11373,-31.10845 -30.52048,-51.97001 -38.0141,-85.79915 l -2.97225,5.42499 c 8.59628,31.47482 20.76189,50.2805 35.50621,79.92323 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+    <g inkscape:groupmode="layer" id="Torso_Outfit_Maid_" inkscape:label="Torso_Outfit_Maid_" style="display:inline;opacity:1">
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Maid_Hourglass" inkscape:label="Torso_Outfit_Maid_Hourglass" style="display:inline;opacity:1">
+        <path inkscape:connector-curvature="0" d="m 359.85539,224.47865 c 0,0 0.28252,2.9195 1.13622,14.01358 0.60333,0.24133 -4.66387,31.43722 -21.44276,39.64844 -2.60991,13.16972 -4.10758,40.46738 -4.54391,40.39466 0,0 2.60164,5.12801 3.8029,7.55426 25.41094,14.16919 46.24345,42.44329 56.43292,71.31194 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 35.22168,-60.19855 50.2411,-84.26 -5.31056,-13.48953 -3.00269,-25.08718 -1.37108,-35.87779 -10.20434,-15.27731 -9.37658,-29.5504 -6.26329,-44.46892 1.91023,-12.81128 7.57872,-19.40372 7.03791,-19.59657 44.12648,12.49268 110.45341,1.38238 110.45341,1.38238 z" id="path1322" sodipodi:nodetypes="cccccccccccccc" class="shadow"/>
+        <path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="cccccaccaccacc" id="path1108-7" d="m 359.85539,224.47865 c 0,0 0.28252,2.9195 1.13622,14.01358 0,0 -5.70201,31.02196 -21.44276,39.64844 -4.05461,12.92894 -4.54391,40.39466 -4.54391,40.39466 0,0 2.60164,5.12801 3.8029,7.55426 23.94861,15.0158 44.54286,43.42784 56.43292,71.31194 16.51533,38.7311 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.88371,-75.76419 20.06445,-110.96586 11.46675,-30.62413 36.51387,-59.8755 50.2411,-84.26 -4.38752,-13.39723 -2.26335,-25.01325 -1.37108,-35.87779 -9.41353,-15.3492 -7.79397,-29.57811 -6.26329,-44.46892 0.70972,-6.9043 7.03791,-19.59657 7.03791,-19.59657 44.12648,12.49268 110.45341,1.38238 110.45341,1.38238 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc" id="path1251" class="shadow" d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" id="path1249" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path inkscape:connector-curvature="0" d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" class="shadow" id="path1244" sodipodi:nodetypes="ccssccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1108-7-2" d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1282" class="shadow" d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 3.05181,8.88695 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 3.17474,8.83426 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" id="path1280" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994"/>
+        <path inkscape:connector-curvature="0" d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 -0.30041,25.062 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" class="shadow" id="path1268" sodipodi:nodetypes="ccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccccccccccccc" id="path1108-7-2-2" d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 0.22818,24.77737 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 335.13308,318.51346 3.76755,7.52419 c -34.68921,1.29057 -70.68419,18.30652 -92.67015,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 52.33122,-5.8368 85.03592,-4.37423 z" class="shadow" id="path1246" sodipodi:nodetypes="ccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1108-7-2-7" d="m 335.13308,318.51346 3.76755,7.52419 c -35.36449,0.47083 -72.09797,17.70061 -92.67015,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 51.75714,-4.70842 85.03592,-4.37423 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g style="display:inline;opacity:1" inkscape:label="Torso_Outfit_Maid_Unnatural" id="Torso_Outfit_Maid_Unnatural" inkscape:groupmode="layer">
+        <path class="shadow" sodipodi:nodetypes="cccccccccccccc" id="path1396" d="m 359.32506,223.68315 c 0,0 0.81285,3.715 1.66655,14.80908 0.60333,0.24133 -10.14395,31.21625 -26.92284,39.42747 -2.60991,13.16972 -1.19,40.93835 -1.62633,40.86563 0,0 5.16414,4.87801 6.3654,7.30426 25.41094,14.16919 46.24345,42.44329 56.43292,71.31194 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 38.93399,-60.37533 53.95341,-84.43678 -5.31056,-13.48953 -3.26785,-24.95459 -1.63624,-35.7452 -10.20434,-15.27731 -12.82373,-29.50621 -9.71044,-44.42473 1.68036,-12.73855 7.18619,-19.52847 7.03163,-19.62506 44.12648,12.49268 109.92936,0.61537 109.92936,0.61537 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 359.32506,223.68315 c 0,0 0.81285,3.715 1.66655,14.80908 0,0 -11.18209,30.80099 -26.92284,39.42747 -4.05461,12.92894 -1.62633,40.86563 -1.62633,40.86563 0,0 5.16414,4.87801 6.3654,7.30426 23.94861,15.0158 44.54286,43.42784 56.43292,71.31194 16.51533,38.7311 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.34105,-75.97218 20.06445,-110.96586 12.19453,-31.09516 40.22618,-60.05228 53.95341,-84.43678 -4.38752,-13.39723 -2.52851,-24.88066 -1.63624,-35.7452 -9.41353,-15.3492 -10.68632,-29.29831 -9.71044,-44.42473 0.44738,-6.9345 7.03163,-19.62506 7.03163,-19.62506 44.12648,12.49268 109.92936,0.61537 109.92936,0.61537 z" id="path1398" sodipodi:nodetypes="cccccaccaccacc" style="display:inline;opacity:1;fill:#333333"/>
+        <path inkscape:connector-curvature="0" d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" class="shadow" id="path1400" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" id="path1402" d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccssccc" id="path1404" class="shadow" d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" id="path1415" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path inkscape:connector-curvature="0" d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 6.58734,8.62178 6.71027,8.56909 l -2.93224,6.56412 67.29376,-3.51585 z" class="shadow" id="path1417" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" id="path1419" d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 6.71027,8.56909 6.71027,8.56909 l -2.93224,6.56412 67.29376,-3.51585 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccccccccccccc" id="path1421" class="shadow" d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 1.06961,23.82456 3.07306,35.44835 18.49356,5.86562 40.23513,0.90221 62.11466,-2.0794 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 1.5982,23.53993 3.07306,35.44835 18.49356,5.86562 40.23513,0.90221 62.11466,-2.0794 z" id="path1423" sodipodi:nodetypes="ccccccccccccccc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path sodipodi:nodetypes="ccccc" id="path1425" class="shadow" d="m 332.57058,318.76346 6.33005,7.27419 c -34.68921,1.29057 -66.97188,18.12974 -88.95784,3.64611 l 3.86668,-6.97285 c 33.13895,8.49273 46.05641,-5.41002 78.76111,-3.94745 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 332.57058,318.76346 6.33005,7.27419 c -35.36449,0.47083 -68.38566,17.52383 -88.95784,3.64611 l 3.86668,-6.97285 c 30.76253,9.95515 45.48233,-4.28164 78.76111,-3.94745 z" id="path1427" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Maid_Normal" inkscape:label="Torso_Outfit_Maid_Normal" style="display:inline;opacity:1">
+        <path inkscape:connector-curvature="0" d="m 359.59022,223.85993 c 0,0 0.54769,3.53822 1.40139,14.6323 0.60333,0.24133 1.08137,17.47186 -9.95227,42.07912 -2.60991,13.16972 -1.59807,36.6617 -2.0344,36.58898 0,0 0.41414,5.12801 1.6154,7.55426 25.41094,14.16919 34.43095,43.81829 44.62042,72.68694 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 35.22168,-60.19855 50.2411,-84.26 -5.31056,-13.48953 -3.00269,-25.08718 -1.37108,-35.87779 -10.20434,-15.27731 -9.37658,-29.5504 -6.26329,-44.46892 2.33144,-13.21932 7.5209,-19.83366 7.32405,-19.71802 44.12648,12.49268 109.9021,0.88511 109.9021,0.88511 z" id="path1435" sodipodi:nodetypes="cccccccccccccc" class="shadow"/>
+        <path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="cccccaccaccacc" id="path1437" d="m 359.59022,223.85993 c 0,0 0.54769,3.53822 1.40139,14.6323 0,0 -0.31032,17.18918 -9.95227,42.07912 -4.05461,12.92894 -2.0344,36.58898 -2.0344,36.58898 0,0 0.41414,5.12801 1.6154,7.55426 23.94861,15.0158 35.04244,45.91894 44.62042,72.68694 14.18515,39.64386 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.88371,-75.76419 20.06445,-110.96586 11.46675,-30.62413 36.51387,-59.8755 50.2411,-84.26 -4.38752,-13.39723 -2.26335,-25.01325 -1.37108,-35.87779 -9.41353,-15.3492 -7.87474,-29.58663 -6.26329,-44.46892 0.75479,-6.97069 7.32405,-19.71802 7.32405,-19.71802 44.12648,12.49268 109.9021,0.88511 109.9021,0.88511 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc" id="path1439" class="shadow" d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" id="path1441" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path inkscape:connector-curvature="0" d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" class="shadow" id="path1443" sodipodi:nodetypes="ccssccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1445" d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1447" class="shadow" d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 3.05181,8.88695 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 3.17474,8.83426 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" id="path1449" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994"/>
+        <path inkscape:connector-curvature="0" d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 -0.30041,25.062 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" class="shadow" id="path1451" sodipodi:nodetypes="ccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccccccccccccc" id="path1453" d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 0.22818,24.77737 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 349.13308,317.13846 1.58005,7.52419 c -34.68921,1.29057 -82.49669,19.68152 -104.48265,5.19789 l 3.86668,-6.97285 c 33.13895,8.49273 66.33122,-7.2118 99.03592,-5.74923 z" class="shadow" id="path1455" sodipodi:nodetypes="ccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1457" d="m 349.13308,317.13846 1.58005,7.52419 c -35.36449,0.47083 -83.91047,19.07561 -104.48265,5.19789 l 3.86668,-6.97285 c 30.76253,9.95515 65.75714,-6.08342 99.03592,-5.74923 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g style="display:inline;opacity:1" inkscape:label="Torso_Outfit_Maid_Lewd_Hourglass" id="Torso_Outfit_Maid_Lewd_Hourglass" inkscape:groupmode="layer">
+        <path sodipodi:nodetypes="cccccccc" id="path1324" d="m 335.00494,318.53533 c 0,0 2.60164,5.12801 3.8029,7.55426 25.71294,14.33721 27.05663,26.64309 35.62962,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 34.51048,-43.442 39.5444,-54.469 20.08971,8.80583 55.63969,-1.71367 85.0065,-4.50422 z" inkscape:connector-curvature="0" class="shadow"/>
+        <path style="display:inline;opacity:1;fill:#000000" d="m 249.99805,323.03906 c 19.2233,7.95638 55.40396,-0.4426 85.00781,-4.5039 -7.47162,0.73268 -15.33345,1.82358 -23.21875,2.9375 -7.8853,1.11391 -15.79532,2.25094 -23.36523,3.07422 -3.78496,0.41163 -7.48528,0.74598 -11.05469,0.95898 -3.56942,0.213 -7.0068,0.304 -10.26953,0.23437 -3.26274,-0.0696 -6.34992,-0.30009 -9.21485,-0.73632 -2.86492,-0.43624 -5.50878,-1.07802 -7.88476,-1.96485 z" id="path2358" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccsccc"/>
+        <path inkscape:connector-curvature="0" d="m 335.00494,318.53533 c 0,0 2.60164,5.12801 3.8029,7.55426 23.94861,15.0158 25.77303,27.13678 35.62962,42.89594 13.12179,20.97971 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 35.639,-43.442 39.5444,-54.469 20.08971,8.80583 55.63969,-1.71367 85.0065,-4.50422 z" id="path1227" sodipodi:nodetypes="ccaccscc" style="display:inline;opacity:1;fill:#333333"/>
+        <path inkscape:connector-curvature="0" d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" class="shadow" id="path1229" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" id="path1231" d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccssccc" id="path1233" class="shadow" d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" id="path1235" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path sodipodi:nodetypes="ccccc" id="path1245" class="shadow" d="m 335.13308,318.51346 3.76755,7.52419 c -34.68921,1.29057 -70.68419,18.30652 -92.67015,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 52.33122,-5.8368 85.03592,-4.37423 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 335.13308,318.51346 3.76755,7.52419 c -35.36449,0.47083 -72.09797,17.70061 -92.67015,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 51.75714,-4.70842 85.03592,-4.37423 z" id="path1247" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Torso_Outfit_Maid_Lewd_Unnatural" inkscape:label="Torso_Outfit_Maid_Lewd_Unnatural" style="display:inline;opacity:1">
+        <path class="shadow" inkscape:connector-curvature="0" d="m 332.46378,318.91098 c 0,0 4.92183,4.75236 6.12309,7.17861 22.32823,15.82318 26.05552,27.17961 35.85059,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 38.43236,-43.77013 43.46628,-54.79713 20.08971,8.80583 49.17665,-1.00989 78.54346,-3.80044 z" id="path1326" sodipodi:nodetypes="cccccccc"/>
+        <path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="ccsccscc" id="path1343" d="m 332.46378,318.91098 c 0,0 4.92183,4.75236 6.12309,7.17861 21.82184,16.49529 25.63258,27.32918 35.85059,42.89594 13.57881,20.68684 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 39.56088,-43.77013 43.46628,-54.79713 20.08971,8.80583 49.17665,-1.00989 78.54346,-3.80044 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc" id="path1345" class="shadow" d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" id="path1347" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path inkscape:connector-curvature="0" d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" class="shadow" id="path1349" sodipodi:nodetypes="ccssccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1351" d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 332.59192,318.88911 6.08774,7.14854 c -34.68921,1.29057 -66.54134,17.97839 -88.5273,3.49476 l 3.86668,-6.97285 c 33.13895,8.49273 45.86818,-5.13302 78.57288,-3.67045 z" class="shadow" id="path1354" sodipodi:nodetypes="ccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1356" d="m 332.59192,318.88911 6.08774,7.14854 c -35.36449,0.47083 -67.95512,17.37248 -88.5273,3.49476 l 3.86668,-6.97285 c 30.76253,9.95515 45.2941,-4.00464 78.57288,-3.67045 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g style="display:inline;opacity:1" inkscape:label="Torso_Outfit_Maid_Lewd_Normal" id="Torso_Outfit_Maid_Lewd_Normal" inkscape:groupmode="layer">
+        <path sodipodi:nodetypes="cccccccc" id="path1363" d="m 349.25494,318.53533 c 0,0 0.78914,5.12801 1.9904,7.55426 20.33794,23.39971 14.61913,26.64309 23.19212,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 34.51048,-43.442 39.5444,-54.469 20.08971,8.80583 69.88969,-1.71367 99.2565,-4.50422 z" inkscape:connector-curvature="0" class="shadow"/>
+        <path style="display:inline;opacity:1;fill:#000000" d="m 249.99805,323.03906 c 19.2233,7.95638 69.65396,-0.4426 99.25781,-4.5039 -7.47162,0.73268 -29.58345,1.82358 -37.46875,2.9375 -7.8853,1.11391 -15.79532,2.25094 -23.36523,3.07422 -3.78496,0.41163 -7.48528,0.74598 -11.05469,0.95898 -3.56942,0.213 -7.0068,0.304 -10.26953,0.23437 -3.26274,-0.0696 -6.34992,-0.30009 -9.21485,-0.73632 -2.86492,-0.43624 -5.50878,-1.07802 -7.88476,-1.96485 z" id="path1369" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccsccc"/>
+        <path inkscape:connector-curvature="0" d="m 349.25494,318.53533 c 0,0 0.78914,5.12801 1.9904,7.55426 18.76111,23.0783 15.97322,28.3322 23.19212,42.89594 10.98968,22.17107 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 35.639,-43.442 39.5444,-54.469 20.08971,8.80583 69.88969,-1.71367 99.2565,-4.50422 z" id="path1377" sodipodi:nodetypes="ccaccscc" style="display:inline;opacity:1;fill:#333333"/>
+        <path inkscape:connector-curvature="0" d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" class="shadow" id="path1379" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"/>
+        <path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" id="path1381" d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccssccc" id="path1384" class="shadow" d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" id="path1386" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/>
+        <path sodipodi:nodetypes="ccccc" id="path1388" class="shadow" d="m 349.38308,318.51346 1.95505,7.52419 c -34.68921,1.29057 -83.12169,18.30652 -105.10765,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 66.58122,-5.8368 99.28592,-4.37423 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 349.38308,318.51346 1.95505,7.52419 c -35.36449,0.47083 -84.53547,17.70061 -105.10765,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 66.00714,-4.70842 99.28592,-4.37423 z" id="path1390" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Arm_Hair" inkscape:label="Arm_Hair" style="display:inline">
+    <g style="display:inline" inkscape:label="Arm_Down_Hair_Neat" id="Arm_Down_Hair_Neat" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccc" id="path3325" class="armpit_hair" d="m 360.64122,234.43118 c -1.78847,-3.72504 -3.61047,-12.89756 -3.19383,-24.4475 1.19043,6.54449 2.6192,20.32885 3.19383,24.4475 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:label="Arm_Down_Hair_Bushy" id="Arm_Down_Hair_Bushy" inkscape:groupmode="layer" style="display:inline">
+      <path sodipodi:nodetypes="cccccccccccccccccccccc" id="path1099" class="armpit_hair" d="m 360.24347,231.86792 0.62233,4.65711 c 0.55578,0.2551 -7.99816,5.95284 -3.27038,-0.65737 -3.09359,5.37627 2.92909,-0.003 2.17022,-2.14111 -1.53423,0.28812 -5.71284,3.52639 -5.25133,8.12415 -0.98363,-3.5058 2.9824,-9.77272 4.83736,-11.83806 -0.18244,1.45667 -8.26869,-0.51242 -3.88775,5.73641 -5.3105,-5.44303 2.41392,-7.14507 3.39202,-9.43961 0.45356,1.56568 -1.24519,3.2832 -7.4966,4.08414 3.46772,-0.44603 7.11012,-4.45071 7.06734,-6.77892 -2.40629,-0.74554 -6.1703,2.17421 -5.81219,4.21371 -0.25259,-2.66244 3.06309,-5.85365 5.67489,-7.08339 -0.9377,1.02012 -4.71933,0.89387 -3.06732,-2.07507 -0.83642,1.71326 1.4865,2.34105 2.34002,-0.14383 -1.70746,-1.70745 -3.52581,-1.63585 -3.89757,0.0658 0.97561,-3.83828 3.37716,-1.67017 4.2302,-1.64816 -0.32331,-0.41565 -0.17879,-0.76893 -0.0751,-1.12765 -2.01181,0.29687 -4.33853,-2.08468 -4.3297,-2.13619 1.72132,0.72587 4.20901,1.47818 4.21081,0.17288 0,0 -0.11184,-2.03629 -0.16497,-3.11735 1.19043,6.54449 2.70769,21.13294 2.70769,21.13294 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Arm_Up_Hair_Neat" inkscape:label="Arm_Up_Hair_Neat" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 361.07872,235.74368 c -0.94878,-8.80737 -2.85473,-24.59569 2.37908,-28.8536 2.1627,9.19615 -2.2466,10.90217 -2.37908,28.8536 z" class="armpit_hair" id="XMLID_590_-04-8-9-4-9" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g style="display:inline" inkscape:groupmode="layer" id="Arm_Up_Hair_Bushy" inkscape:label="Arm_Up_Hair_Bushy">
+      <path inkscape:connector-curvature="0" d="m 360.53365,236.48083 c -0.55578,0.2551 1.01548,-0.63209 3.04941,3.3643 -0.97228,-3.1532 -2.70812,-4.02467 -1.94925,-6.16278 1.53423,0.28812 5.80123,-1.42335 5.33972,3.17441 0.98363,-3.5058 -3.07079,-4.82298 -4.92575,-6.88832 0.18244,1.45667 11.2297,-1.04275 6.84876,5.20608 5.3105,-5.44303 -2.41392,-7.14507 -3.39202,-9.43961 -0.45356,1.56568 -1.45066,-1.04783 4.80075,-0.24689 -3.46772,-0.44603 -8.11396,-3.23134 -7.33132,-5.42448 2.51841,0.0603 4.53675,2.08298 3.54725,3.90196 1.08804,-2.44307 -0.41883,-4.58012 -2.50244,-6.5782 0.56364,1.26579 4.18828,2.35147 3.56874,-0.98917 0.24672,1.8905 -2.15515,1.74514 -2.17213,-0.88218 2.16264,-1.07417 3.58587,0.37498 2.70189,1.87578 1.89339,-3.4784 -1.34178,-3.52056 -1.98242,-4.08425 0.51967,-0.0851 0.6538,-0.44246 0.82158,-0.77605 1.2738,1.58522 4.59918,1.41997 4.62772,1.37618 -1.75593,-0.63763 -4.09192,-1.77678 -3.206,-2.73539 0,0 -0.30162,-0.93139 0.47217,-1.6882 -1.17562,0.12647 -1.50552,0.39685 -2.29732,1.39659 0.43889,-0.74403 0.22952,-1.36458 0.27651,-2.03396 -0.19789,1.53736 -0.94588,2.69608 -2.74427,3.1318 0.29183,-1.13068 -0.21459,-1.42216 -0.71523,-1.71972 0.596,1.32079 -0.14863,1.44588 -1.07278,1.41086 -0.87655,-1.71928 0.22738,-2.55256 0.83323,-3.60866 -1.93061,0.6298 -3.38367,1.69073 -3.81887,3.67055 -0.70564,-0.81459 -0.56273,-1.73524 -0.459,-2.651 -0.65736,0.85385 -1.14327,1.8183 -1.15811,3.08668 l 1.88893,15.25586 c 0,0 1.15763,7.50544 0.95025,9.05781 z" class="armpit_hair" id="path3321" sodipodi:nodetypes="cccccccccccccccccccccccccccccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Navel_Addons_" inkscape:label="Navel_Addons_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Navel_Piercing_Heavy" inkscape:label="Navel_Piercing_Heavy" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 277.10131,343.99568 c -0.3,-2.7e-4 -1.95,3 -1.8,17.4 0.15,19.05 1.8,19.95 2.1,19.95 0.49818,0 0.33196,-11.1 1.33125,-23.85 -0.75,-5.99289 -1.18125,-13.49959 -1.63125,-13.5 z" class="steel_piercing" id="XMLID_513_" sodipodi:nodetypes="scscs"/>
+      <path inkscape:connector-curvature="0" d="m 277.25964,381.16047 c -0.75,0 -1.5,3.6 -1.2,6.6 0.3,1.95 0.9,4.5 1.8,4.5 0.6,0 1.05,-2.7 1.2,-4.5 0,-3.15 -1.05,-6.6 -1.8,-6.6 z" class="steel_piercing" id="XMLID_514_" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Navel_Piercing" inkscape:label="Navel_Piercing" style="display:inline">
+      <circle r="2.7" cy="336.9996" cx="276.44211" class="steel_piercing" id="XMLID_515_"/>
+      <circle r="2.7" cy="346.14935" cx="276.88406" class="steel_piercing" id="XMLID_516_"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Pubic_Hair_" inkscape:label="Pubic_Hair_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Pussy_Tattoo" inkscape:label="Pussy_Tattoo" style="display:inline"><path style="fill:none;stroke:none" d="m 253.62239,430.50769 c 14.1376,12.59209 60.92413,9.84192 72.85898,-5.2246" id="path4363" inkscape:connector-curvature="0" sodipodi:nodetypes="cc"/><text xml:space="preserve" id="text4365" style="font-size:12px;line-height:0%;text-align:center;text-anchor:middle" x="45.367271" y="18.561554"><textPath xlink:href="#path4363" id="textPath4369" style="font-size:12px;text-align:center;text-anchor:middle">'+_art_pussy_tattoo_text+'</textPath></text>
+</g>
+    <g inkscape:groupmode="layer" id="Pubic_Hair_Bush" inkscape:label="Pubic_Hair_Bush" style="display:inline">
+      <path d="m 308.13404,461.37031 c -0.42215,-1.28729 0.0816,-2.88322 0.21937,-4.35713 0.83735,-0.9231 3.39354,-0.46675 4.27169,-0.32918 -1.30887,-1.90043 -2.57358,-4.54221 -2.26693,-6.80614 1.738,0.72332 5.26268,-0.10717 6.41461,-0.67323 -0.0359,-0.042 -3.73233,-5.5593 -3.73233,-5.5593 l 9.37697,-2.92546 c -2.29483,-1.16082 -2.9398,-3.27348 -0.88244,-5.06275 2.05735,-1.78926 4.65981,-3.19815 6.96574,-5.50002 2.30592,-2.30188 5.70181,-7.11497 7.1718,-9.21523 -3.30249,2.57531 -8.11937,4.56169 -12.38086,6.76405 3.87939,-4.08083 5.14191,-8.70938 6.56483,-13.30436 -2.75485,4.55035 -5.96287,8.80998 -11.80357,11.38073 0.0795,-2.69081 -1.1771,-5.33024 -2.60799,-7.96296 -0.22411,2.1009 0.65963,4.43504 -1.59857,6.10771 -1.87893,0.66093 -0.47641,0.32561 -1.63156,-0.61901 -1.15515,-0.94462 -1.07324,-2.86249 -0.92674,-4.77175 0.20638,0.15948 -5.2425,3.40307 -10.88069,2.89338 0.39636,-1.77718 -0.0929,-3.59654 -0.547,-5.41423 -1.43947,1.75633 -2.54315,3.7645 -5.73335,4.20778 -2.4605,-0.40363 -2.23191,-1.95973 -2.31051,-3.38418 -1.13808,1.43053 -1.96377,3.07348 -4.50289,3.5513 -1.9104,-1.28206 -0.74793,-2.77125 -0.61109,-4.22119 -1.53049,0.96737 -3.1427,1.90033 -3.58898,3.32421 -0.54093,-1.76679 -2.17255,-2.5156 -3.54365,-3.50756 -0.0389,1.41793 0.87573,3.17815 -1.27914,3.8365 -1.65822,-2.01275 -2.66902,-3.03894 -4.81025,-3.3656 0.25465,1.17773 3.29056,2.50997 -1.24916,3.42134 -2.99547,0.66615 -4.88472,-1.06452 -6.85325,-2.62341 1.01031,2.71963 1.71296,5.80844 3.5463,7.54043 -2.27359,-0.46197 -8.62398,-1.3164 -12.1147,-8.21411 -1.18774,2.82298 -3.39707,5.36503 -1.4599,9.04737 -4.08,-0.2462 -6.1875,-2.55065 -8.40846,-4.73671 0.87978,2.88663 0.68095,5.90808 3.36457,8.56923 -3.64826,0.33795 -6.3127,-1.29171 -9.26707,-2.34153 3.9514,4.60614 8.75627,7.56631 13.86823,9.93423 1.34859,1.27311 6.10477,6.04621 5.62068,7.31932 2.82401,-2.71219 1.92529,-1.87573 4.91302,-0.16768 2.79974,2.66519 2.83014,1.95151 3.16745,4.12421 1.92433,1.50259 3.84866,1.63676 5.77299,0.97623 0,0 -2.01653,2.6409 -4.35182,2.38868 1.74775,0.61934 4.06788,-0.37099 5.9306,-0.0583 1.77365,1.74778 0.43253,3.2124 -1.41503,4.63097 2.73367,-0.28074 5.4652,-0.70503 8.23933,1.72431 1.73622,1.49945 2.78135,3.0373 3.78142,4.57765 1.20741,0.19088 2.97961,-0.0117 1.69438,1.91564 0.94867,-0.32712 2.37843,-0.52377 1.68983,-1.29489 1.14987,0.78895 2.29975,0.66306 3.44962,0.4995 -0.7627,-0.5118 -1.8836,-1.08502 -0.37378,-1.68488 l -1.10478,-0.10762 -0.6613,-0.63638 c -0.0538,-0.38752 0.0965,-0.69562 0.57239,-0.87715 -0.55161,-0.19514 -0.82876,-0.0489 -0.99909,0.22508 0.0467,-0.74904 -0.0233,-1.52988 -0.30014,-2.36715 -0.37451,0.28516 -0.76038,0.25212 -1.16432,-0.28668 0.002,-0.91711 -0.0725,-1.84829 0.23704,-2.70958 -0.16694,0.37927 -0.59322,0.44156 -1.01892,0.50457 0.38567,-0.60697 0.46502,-1.15824 0.53332,-1.7075 -0.4944,0.29755 -1.11943,0.0252 -1.05496,-0.82437 0.33836,-0.10834 0.62446,-0.4585 0.67693,-0.79556 -0.43615,-0.85876 -0.10806,-1.64444 -0.0504,-2.55807 0.27076,0.89645 0.49642,1.81024 1.13611,2.5648 0.13715,-0.65786 0.62993,-1.03497 1.15644,-1.38545 0.48685,0.95084 0.54472,1.96297 0.4514,2.9967 0.23312,-0.65185 0.73464,-0.76691 1.27616,-0.80195 0.12849,0.90282 0.30765,1.81288 -0.27027,2.61479 0.54567,-0.30808 1.13159,-0.3075 1.62165,-1.04187 -0.0858,1.11195 -0.27643,2.20992 -0.67396,3.28031 0.25461,-0.26873 0.6401,-0.4284 0.66867,-0.8855 0.23427,0.66706 0.0246,1.11215 -0.0483,1.62563 0.11494,-0.22262 0.30901,-0.3028 0.63201,-0.15092 -0.23603,0.51298 -0.21479,0.99569 0.25629,1.42548 -0.0542,-0.28824 -0.10088,-0.57291 0.23199,-0.67779 0.40976,0.32368 0.52422,0.69166 0.51908,1.07758 -0.002,0.53232 -0.031,0.73901 0.15212,1.14793 -0.0165,-0.005 1.73831,1.6893 1.73831,1.6893 0.38852,-0.50132 0.92958,-0.77384 1.56782,-0.90059 1.1846,0.75012 2.56975,0.89857 3.88755,1.24905 -0.4332,-1.00083 0.027,-1.15529 0.77386,-1.03816 1.46038,-0.0697 1.24438,0.67559 1.26775,1.30448 1.46259,-1.00786 1.07324,-1.76849 1.50981,-2.14482 0.64839,0.13025 1.1895,0.0102 1.588,-0.44262 z" id="path4354-2" inkscape:connector-curvature="0" class="pubic_hair" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Pubic_Hair_Neat" inkscape:label="Pubic_Hair_Neat" style="display:inline">
+      <path d="M 487.94,432.27" class="hair" id="path225" inkscape:connector-curvature="0"/>
+      <path d="m 286.65609,461.98173 c 0.16638,0.005 0.65051,0.34419 0.56084,0.39247 0.19977,0.003 0.32856,-0.0658 0.40338,-0.1882 0.33422,0.12782 0.51696,0.25564 0.58043,0.38346 0.21609,-0.0894 0.4782,-0.15944 1.0133,-0.11503 0.43584,0.10754 0.68692,0.23419 0.82103,0.37294 -0.008,0.0927 0.52663,-0.14421 0.736,-0.32954 -0.90113,-4.11148 -2.10193,-8.21187 -1.94173,-12.36266 2.71856,4.23162 8.61462,12.04671 8.61462,12.04671 0.38989,0.13811 0.74234,0.29026 0.96675,0.49043 0.24847,-0.10956 0.69829,-0.13102 1.10404,-0.17177 0.58751,0.0888 1.10811,0.2044 1.59165,0.33481 0.6335,-0.21513 1.27181,-0.4289 2.23112,-0.55239 0.52527,0.0705 1.01879,0.15999 1.33811,0.35403 0.15476,-0.34455 0.70352,-0.50509 1.09301,-0.76827 0,0 0.44736,-5.11636 0.76594,-5.196 -0.12435,-0.50648 -0.23931,-1.02703 0.0439,-2.14488 l 2.01173,-3.54551 c -0.43128,0.39066 -0.44976,-0.25068 -0.56821,-0.64206 -1.08258,-0.32189 7.91303,-16.94494 10.50549,-18.79352 -0.63953,0.33539 -13.02,1.46541 -13.26141,1.25849 -0.98823,0.039 -1.25854,-0.32319 -1.79438,-0.53699 -1.41965,0.37941 -3.15091,0.48875 -4.77102,0.69443 -0.81811,-0.007 -1.4182,-0.1762 -1.83865,-0.47812 -1.18533,0.5001 -2.60972,0.62168 -3.95727,0.86493 -0.81281,-0.12067 -1.55687,-0.28389 -2.06256,-0.59468 -1.39849,0.35479 -3.03308,0.59666 -5.10777,0.62804 -0.72143,-0.13335 -1.41712,-0.2812 -1.90627,-0.54521 -1.13229,0.38897 -2.62485,0.50346 -4.37547,0.42133 -0.93928,-0.0262 -1.90812,-0.0174 -2.53422,-0.41368 -0.42921,0.26544 -1.18226,0.18798 -1.84402,0.20719 -0.52649,0.46904 -18.28084,2.95756 -19.55531,2.12087 0.66622,-0.3004 16.89738,8.89776 17.23132,10.56747 0.62897,0.18482 2.21565,2.89524 2.70926,3.29872 0.93409,1.06603 1.82894,2.13206 2.47505,3.19809 1.19621,0.89238 2.23683,1.80421 3.09974,2.73825 0.58096,0.62421 0.87351,1.24843 1.06066,1.87264 0.77048,0.99028 1.01013,0.94544 1.39224,1.17839 0.30699,0.2588 0.57315,0.52927 0.59205,0.87038 0.66159,0.27273 0.91436,0.709 1.1695,1.14431 0.0913,0.17244 0.0921,0.30177 -0.0352,0.37012 0.27389,0.19768 0.54396,0.36486 0.79721,0.39746 0.0924,-0.009 0.65123,0.76933 0.6451,1.17255 z" id="path5158" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccc" class="pubic_hair"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Pubic_Hair_Strip" inkscape:label="Pubic_Hair_Strip" style="display:inline">
+      <path d="m 290.07972,451.35547 c -5.26522,-8.42781 -6.8522,-25.02276 -6.40057,-24.40984 l -1.97847,0.0413 c -0.0968,0.0277 0.0996,15.01567 6.42775,24.67062 z" id="path4354" inkscape:connector-curvature="0" class="pubic_hair" sodipodi:nodetypes="ccccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Hip_Addon_" inkscape:label="Hip_Addon_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Chastity_Anus" inkscape:label="Chastity_Anus" style="display:inline">
+      <path sodipodi:nodetypes="ccccccccc" id="path3080" d="m 259.57075,420.99587 5.54092,2.13857 c 6.84074,12.92695 13.83515,25.67806 22.99206,38.15507 5.87262,1.49226 8.72636,0.53435 16.49875,-0.30496 2.72601,-20.54453 6.03555,-29.03633 14.92521,-48.24503 l 2.28574,-0.5993 c -5.31308,16.34941 -11.3981,32.06023 -16.22393,50.16815 -5.02246,3.8981 -10.47949,6.02978 -18.59375,0.25 -12.04308,-13.27369 -19.00846,-27.47246 -27.425,-41.5625 z" class="shadow" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" class="steel_chastity" d="m 259.57075,420.99587 5.54092,2.13857 c 6.43322,12.76394 13.40942,25.50777 22.99206,38.15507 5.46252,1.69783 9.56792,1.06871 16.49875,-0.30496 3.07852,-20.54453 6.67016,-29.03633 14.92521,-48.24503 l 2.28574,-0.5993 c -5.68796,16.34941 -11.85486,32.06023 -16.22393,50.16815 -5.07591,3.55067 -10.54368,5.61252 -18.59375,0.25 -11.7304,-13.58637 -18.82904,-27.65188 -27.425,-41.5625 z" id="path7-06" sodipodi:nodetypes="ccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Vagina" inkscape:label="Chastity_Vagina" style="display:inline">
+      <path sodipodi:nodetypes="cccccc" id="path3078" d="m 246.27344,419.55409 38.26539,1.65534 50.70034,-17.16757 c -9.527,20.69304 -26.8295,38.13961 -29.60049,58.02694 -3.81473,4.94851 -11.42323,6.76119 -18.77833,0.13792 -12.59782,-13.26169 -20.10126,-26.49351 -40.58691,-42.65263 z" class="shadow" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" class="steel_chastity" d="m 246.27344,419.55409 38.26539,1.65534 50.70034,-17.16757 c -10.62636,19.22723 -27.00876,37.9006 -29.60049,58.02694 -4.44975,4.2738 -12.12093,6.01989 -18.77833,0.13792 -12.1636,-13.34853 -19.37318,-26.63913 -40.58691,-42.65263 z" id="path7-68" sodipodi:nodetypes="cccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Base" inkscape:label="Chastity_Base" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 234.14215,411.65829 c 9.83963,2.44592 24.11909,4.87598 41.29544,3.79314 14.82928,-1.00347 25.26976,-4.22856 41.10914,-9.24736 31.67875,-10.0376 59.89552,-24.27204 59.89552,-24.27204 0,0 3.77627,-1.52869 6.22097,3.2396 2.4447,4.76829 -3.82372,5.48812 -3.82372,5.48812 -11.21596,5.27692 -21.47914,9.58762 -30.87638,13.25027 -5.87529,2.27682 -13.83348,5.40046 -24.7826,8.91127 -11.47387,3.69784 -21.23826,6.81251 -34.64102,8.90022 -4.327,0.70671 -10.41184,1.70053 -17.99393,2.02697 -8.40953,0.36025 -21.89647,0.23256 -38.00184,-4.0271 -3.4127,0.35474 -6.02754,-2.05529 -6.27918,-4.44599 -0.0582,-1.20639 0.39848,-3.51013 2.76794,-4.30243 1.7256,-0.48449 3.58016,-0.17944 5.10966,0.68533 z" id="path5" sodipodi:nodetypes="ccscsccccccccc"/>
+      <path inkscape:connector-curvature="0" class="steel_chastity" d="m 232.02342,410.58579 c 4.2276,1.23469 10.00709,2.62122 17.0904,3.49082 0,0 10.92765,1.45762 23.47433,0.92828 15.58596,-0.62043 54.91755,-11.40132 101.73537,-34.14536 0,0 3.77627,-1.52869 6.22097,3.2396 2.4447,4.76829 -3.82371,5.48811 -3.82371,5.48811 -11.21597,5.27692 -21.47915,9.58763 -30.87638,13.25028 -7.17912,2.79374 -15.01821,5.7966 -24.7826,8.91127 -14.53555,4.50187 -30.64536,9.56484 -50.60668,10.59591 -9.08562,0.47068 -23.26478,0.35472 -39.87878,-3.61922 -3.4127,0.35474 -6.02754,-2.05529 -6.27918,-4.44599 -0.0582,-1.20639 0.39848,-3.51013 2.76794,-4.30243 1.59039,-0.4624 3.42882,-0.25604 4.95832,0.60873 z" id="path7-0" sodipodi:nodetypes="ccccscccccccc"/>
+      <rect x="227.62526" y="439.7114" transform="rotate(-6.7781878)" width="10.100405" height="20.000801" id="rect9"/>
+      <rect x="227.61998" y="439.71948" transform="rotate(-6.7781878)" class="steel_chastity" width="9.1003647" height="19.400776" id="rect11-4"/>
+      <circle transform="rotate(-96.778188)" id="ellipse13" r="2.9001162" cy="232.19637" cx="-445.93915"/>
+      <rect x="231.53053" y="445.11972" transform="rotate(-6.7781878)" width="1.400056" height="9.8003931" id="rect15"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Pussy_" style="display:inline" inkscape:label="Pussy_">
+    <g inkscape:groupmode="layer" id="Pussy" inkscape:label="Pussy" style="display:inline">
+      <path sodipodi:nodetypes="ccccc" id="path6854" class="shadow" d="m 299.10498,462.39177 c -2.24833,0.21882 -4.49046,0.45489 -7.09885,0.12501 -0.0824,0.0494 -3.69251,-8.40114 -3.88549,-16.1264 2.52772,6.08878 11.00392,15.97054 10.98435,16.0013 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 299.10498,462.39177 c -2.33004,0.17457 -4.681,0.27242 -7.09885,0.12501 0,0 -3.56283,-8.47896 -3.88549,-16.1264 2.35055,6.18003 10.98435,16.0013 10.98435,16.0013 z" class="labia" id="Vagina" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="cccscscc" id="path6854-9-8" class="shadow" d="m 292.63216,466.59055 c -1.73061,-0.19437 -7.03001,-3.72505 -5.70219,-9.91665 0.1601,-2.76887 0.0867,-6.16317 1.17318,-10.18253 0.28641,1.03144 0.69131,1.94771 0.91322,2.88009 0.0307,0.12881 -0.12066,0.32495 -0.0898,0.45181 0.72643,2.99258 1.24632,5.58783 1.7703,8.72249 0.22169,1.32631 0.89219,2.60457 1.38619,4.09161 1.34088,1.31773 0.15979,2.63545 0.54911,3.95318 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 292.63216,466.59055 c -1.86507,-0.54952 -6.66046,-3.79896 -5.70219,-9.91665 0.42844,-2.73531 0.15024,-6.23197 1.19594,-10.25643 0.27357,0.96308 1.3884,2.11196 0.90145,2.97052 -0.27993,0.49354 -0.17918,0.53324 -0.0547,1.05621 0.49134,2.00515 0.99352,3.99243 1.20405,5.86369 0.42793,3.80361 1.81823,6.40782 1.90634,6.32948 1.01304,1.31773 0.0191,2.63545 0.54911,3.95318 z" class="skin" id="path1025" sodipodi:nodetypes="cscscsccc"/>
+      <path sodipodi:nodetypes="cccccccc" id="path2716" class="shadow" d="m 290.61167,451.63404 c 0,0 -0.78182,-1.41165 -1.1002,-2.03943 0,0 -0.21834,-0.0813 -0.33065,-0.094 -0.34764,-0.10249 -0.86066,0.44582 -1.06839,0.90358 -0.60478,0.75697 -0.3926,1.36358 -0.28906,1.55988 0.39221,0.71764 2.20573,0.62723 2.6884,-0.0278 0.13288,-0.11236 0.1371,-0.30214 0.0999,-0.30214 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 290.61167,451.63404 c 0,0 -0.78182,-1.41165 -1.1002,-2.03943 0,0 -0.21834,-0.0813 -0.33065,-0.094 -0.33065,-0.094 -0.79324,0.47954 -1.06839,0.90358 -0.20634,0.31802 -0.57552,1.07272 -0.28906,1.55988 0.5294,0.85571 2.53188,0.35264 2.6884,-0.0278 0.0737,-0.11236 0.1275,-0.30214 0.0999,-0.30214 z" class="labia" id="XMLID_891_-5" sodipodi:nodetypes="cccscccc"/>
+      <path sodipodi:nodetypes="ccccscc" id="path6854-9" class="shadow" d="m 301.16804,466.55174 c 0.50134,-2.76742 2.59402,-7.92667 -4.70124,-12.03808 -2.47545,-1.86861 -4.84755,-4.98299 -8.3269,-8.07647 0.37045,0.99586 0.38749,3.21147 0.38749,3.21147 0,0 0.97999,0.0942 1.05319,0.23802 3.11283,6.13944 7.49401,9.79553 9.40544,12.53571 0.14956,1.46264 -1.23066,2.71722 2.18202,4.12935 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 301.16804,466.55174 c 0.1522,-2.28319 2.8586,-7.43057 -4.70124,-12.03808 -2.8757,-1.75266 -4.90969,-4.97366 -8.34395,-8.08216 0.22774,0.85313 -0.63101,3.51922 0.66276,3.20922 0.4373,-0.10479 0.81609,0.13292 1.09603,0.60885 1.32562,2.37763 3.08839,4.85882 4.4723,6.29919 2.84306,2.95909 4.63208,5.87363 4.63208,5.87363 0.21939,1.35814 -1.02735,2.71722 2.18202,4.12935 z" class="skin" id="path1023" sodipodi:nodetypes="cscscscc"/>
+      <path sodipodi:nodetypes="ccc" id="path1126-6" class="shadow" d="m 290.54407,451.69582 c 4.14509,6.87889 3.90142,4.72146 6.65769,10.77769 -3.7205,-6.98985 -3.68107,-4.95515 -6.65769,-10.77769 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1126-6-1" class="shadow" d="m 289.4631,452.39396 c 2.38282,6.92091 2.62899,7.89107 3.65068,10.1027 -1.00056,-1.52637 -2.58149,-5.88488 -3.65068,-10.1027 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 290.73545,453.71977 c 3.55162,5.89401 3.75219,3.56791 6.11383,8.75706 -3.18783,-5.9891 -3.56339,-3.76815 -6.11383,-8.75706 z" class="shadow" id="path2763" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 290.71887,453.74374 c 2.04169,5.93003 1.75231,6.85793 2.62772,8.75292 -0.85731,-1.30784 -1.45577,-5.09919 -2.62772,-8.75292 z" class="shadow" id="path2765" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Pussy_Piercing_Heavy" style="display:inline" inkscape:label="Pussy_Piercing_Heavy">
+      <path inkscape:connector-curvature="0" d="m 291.54981,461.60083 c 0.2,0 2,2.8 0.8,5.2 -1,2 -3.6,3.1 -6,2 -2.1,-1.1 -2.8,-3.7 -2,-5.6 0.9,-2.4 3.7,-3.1 3.9,-2.9 0.1,0.2 -2.6,1.4 -2.7,3.6 -0.1,1.2 0.5,2.6 1.9,3.1 1.4,0.6 3.1,0 3.9,-1 1.3,-1.7 0.1,-4.3 0.2,-4.4 z" class="steel_piercing" id="XMLID_512_"/>
+      <ellipse ry="2.0000744" rx="1.8000669" cy="-502.68118" cx="-218.76495" class="steel_piercing" transform="rotate(172.03924)" id="XMLID_517_"/>
+      <ellipse ry="1.8000669" rx="1.7000633" cy="-503.97836" cx="-221.59023" class="steel_piercing" transform="rotate(172.03924)" id="XMLID_518_"/>
+      <path inkscape:connector-curvature="0" d="m 291.24614,458.0085 c 0.2,0 1.7,3 0.1,5.2 -1.2,1.8 -4.1,2.6 -6.1,1.2 -2,-1.4 -2.2,-4.1 -1.2,-5.8 1.2,-2.2 4.2,-2.6 4.3,-2.4 0.1,0.2 -2.8,1.1 -3.1,3.1 -0.2,1.2 0.2,2.6 1.4,3.4 1.3,0.9 3.1,0.4 4,-0.4 1.3,-1.5 0.5,-4.3 0.6,-4.3 z" class="steel_piercing" id="XMLID_519_"/>
+      <ellipse ry="2" rx="1.8" cy="461.40851" cx="283.84613" class="steel_piercing" id="XMLID_520_"/>
+      <ellipse ry="1.8" rx="1.7" cy="463.7085" cx="285.84613" class="steel_piercing" id="XMLID_521_"/>
+      <path inkscape:connector-curvature="0" d="m 296.04874,461.50971 c -0.2,0 -1.4,3.2 0.4,5.2 1.4,1.7 4.3,2.2 6.2,0.6 1.9,-1.5 1.9,-4.3 0.8,-5.9 -1.3,-2.1 -4.4,-2.2 -4.4,-2 0,0.2 2.8,0.8 3.4,2.8 0.3,1.1 0,2.6 -1.1,3.5 -1.2,1 -3,0.7 -4,-0.2 -1.7,-1.2 -1.1,-4 -1.3,-4 z" class="steel_piercing" id="XMLID_522_"/>
+      <ellipse ry="2.0000093" rx="1.8000083" cy="490.00046" cx="262.68652" class="steel_piercing" transform="rotate(-4.7982784)" id="XMLID_523_"/>
+      <ellipse ry="1.8000085" rx="1.7000082" cy="491.17413" cx="259.87625" class="steel_piercing" transform="rotate(-4.7983462)" id="XMLID_524_"/>
+      <path inkscape:connector-curvature="0" d="m 293.60229,458.12012 c -0.2,0 -0.8,3.4 1.3,5.1 1.7,1.3 4.6,1.4 6.2,-0.5 1.5,-1.9 1,-4.5 -0.4,-6 -1.8,-1.8 -4.7,-1.3 -4.7,-1.2 -0.1,0.3 2.9,0.3 3.9,2.1 0.5,1.1 0.5,2.6 -0.4,3.6 -1.1,1.2 -2.8,1.2 -4,0.6 -1.7,-0.9 -1.7,-3.8 -1.9,-3.7 z" class="steel_piercing" id="XMLID_525_"/>
+      <ellipse ry="2.0000699" rx="1.8000628" cy="526.64166" cx="161.29683" class="steel_piercing" transform="rotate(-15.705363)" id="XMLID_526_"/>
+      <ellipse ry="1.8000628" rx="1.7000594" cy="526.31403" cx="164.18712" class="steel_piercing" transform="rotate(-15.705363)" id="XMLID_527_"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Pussy_Piercing" style="display:inline" inkscape:label="Pussy_Piercing">
+      <path inkscape:connector-curvature="0" d="m 293.62018,454.94004 c 0.1,-0.1 1.3,0.5 1.4,1.7 0.1,0.9 -0.6,2 -1.7,2 -1,0.1 -1.8,-0.7 -2,-1.5 -0.2,-1.1 0.6,-2 0.7,-2 0.1,0 -0.6,1.1 -0.2,1.9 0.3,0.4 0.8,0.8 1.3,0.7 0.7,-0.1 1.2,-0.7 1.2,-1.2 0.1,-0.9 -0.8,-1.6 -0.7,-1.6 z" class="steel_piercing" id="XMLID_528_"/>
+      <path inkscape:connector-curvature="0" d="m 289.93897,455.31149 c 0.1,0 0.7,1.2 0,2.2 -0.5,0.7 -1.7,1.1 -2.6,0.4 -0.8,-0.6 -0.9,-1.7 -0.5,-2.5 0.5,-0.9 1.8,-1.1 1.8,-1 0,0.1 -1.2,0.4 -1.3,1.3 -0.1,0.4 0.1,1.1 0.6,1.4 0.5,0.4 1.3,0.2 1.7,-0.2 0.6,-0.5 0.2,-1.6 0.3,-1.6 z" class="steel_piercing" id="XMLID_529_"/>
+      <path inkscape:connector-curvature="0" d="m 289.58138,459.13801 c 0.1,0 0.8,1.2 0.3,2.2 -0.4,0.8 -1.6,1.2 -2.6,0.7 -0.9,-0.5 -1.1,-1.6 -0.7,-2.4 0.4,-1 1.7,-1.2 1.7,-1.2 0.1,0.1 -1.2,0.5 -1.2,1.4 -0.1,0.4 0.2,1.1 0.7,1.3 0.6,0.3 1.3,0.1 1.7,-0.4 0.5,-0.5 0,-1.6 0.1,-1.6 z" class="steel_piercing" id="XMLID_530_"/>
+      <path inkscape:connector-curvature="0" d="m 297.78934,458.63353 c 0.1,-0.1 1.4,0.4 1.7,1.4 0.2,0.9 -0.4,2 -1.4,2.2 -1,0.3 -1.9,-0.4 -2.1,-1.2 -0.4,-1 0.4,-2 0.4,-2 0.1,0 -0.4,1.2 0.1,1.9 0.3,0.4 0.9,0.7 1.4,0.5 0.6,-0.2 1,-0.9 1,-1.4 0,-0.9 -1.2,-1.4 -1.1,-1.4 z" class="steel_piercing" id="XMLID_531_"/>
+      <path inkscape:connector-curvature="0" d="m 299.47329,463.1065 c 0.1,-0.1 1.4,0.4 1.7,1.5 0.2,0.9 -0.4,2 -1.4,2.2 -1,0.2 -1.9,-0.5 -2.1,-1.2 -0.4,-1 0.4,-2 0.4,-2 0.1,0 -0.4,1.2 0.1,1.9 0.3,0.4 0.9,0.7 1.4,0.5 0.6,-0.2 1,-0.9 1,-1.3 -0.1,-1 -1.1,-1.5 -1.1,-1.6 z" class="steel_piercing" id="XMLID_532_"/>
+      <path inkscape:connector-curvature="0" d="m 290.58817,462.89093 c 0.1,0 0.8,1.2 0.3,2.2 -0.4,0.8 -1.6,1.2 -2.6,0.7 -0.9,-0.5 -1.1,-1.6 -0.7,-2.4 0.4,-1 1.7,-1.2 1.7,-1.2 0.1,0.1 -1.2,0.5 -1.2,1.4 -0.1,0.4 0.2,1.1 0.7,1.3 0.6,0.3 1.3,0.1 1.7,-0.4 0.4,-0.5 0,-1.6 0.1,-1.6 z" class="steel_piercing" id="XMLID_533_"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Clit_Piercing_Heavy" style="display:inline" inkscape:label="Clit_Piercing_Heavy">
+      <circle r="1.2" cy="449.35001" cx="291.67499" class="steel_piercing" id="XMLID_534_"/>
+      <circle r="1.2" cy="449.85001" cx="286.97501" class="steel_piercing" id="XMLID_535_"/>
+      <path inkscape:connector-curvature="0" d="m 287.375,450.15 c -0.1,-0.1 -3.5,1.9 -3.2,5.1 0.3,2.7 2.9,4.5 5.6,4.4 2.6,-0.2 4.9,-2.4 4.9,-4.9 0,-3.2 -3.6,-5 -3.7,-4.8 -0.1,0.2 2.5,2.1 2.1,4.5 -0.2,1.6 -1.9,3.6 -4.1,3.6 -2,-0.1 -3.4,-1.7 -3.6,-3.2 -0.4,-2.6 2.1,-4.7 2,-4.7 z" class="steel_piercing" id="XMLID_536_"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Clit_Piercing" style="display:inline" inkscape:label="Clit_Piercing">
+      <circle r="1.2" cy="450.47501" cx="291.67499" class="steel_piercing" id="XMLID_537_"/>
+      <circle r="1.2" cy="450.97501" cx="286.97501" class="steel_piercing" id="XMLID_538_"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Clit_Piercing_Smart" style="display:inline" inkscape:label="Clit_Piercing_Smart">
+      <circle r="1.2" cy="450.0957" cx="291.85547" class="steel_piercing" id="XMLID_539_"/>
+      <circle r="1.2" cy="450.5957" cx="287.15549" class="steel_piercing" id="XMLID_540_"/>
+      <path inkscape:connector-curvature="0" d="m 287.35549,450.69569 c -0.1,-0.1 -2.3,3.3 -1.1,5.5 1.4,2.7 6.4,2.1 7.4,-0.8 0.8,-2.4 -1.6,-5.4 -1.8,-5.3 -0.1,0.1 1.4,2.5 0.5,4.4 -1,2.1 -3.6,2.3 -4.9,0.3 -1.2,-1.8 0,-4 -0.1,-4.1 z" class="steel_piercing" id="XMLID_541_"/>
+      <rect height="7.3005033" width="7.3005033" class="smart_piercing" transform="rotate(41.517924)" y="149.45445" x="519.35999" id="XMLID_542_"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Belly_" style="display:inline;opacity:1" inkscape:label="Belly_">
+    <g style="display:inline;opacity:1" inkscape:label="Belly_7" id="Belly_7" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccsccscc" inkscape:connector-curvature="0" d="m 279.4638,479.2097 c 30.33614,1.12304 69.13838,-16.88088 86.51694,-59.26201 18.66908,-35.65017 -19.0161,-98.03839 -37.9801,-117.97744 -2.15761,-2.26855 -26.31359,-24.16751 -26.31359,-24.16751 L 248.556,277.67919 c -5.20107,14.68308 0.90988,7.19559 -14.30237,18.20009 -24.08168,17.42062 -52.02069,63.92765 -46.89752,117.21974 2.85628,52.58607 63.15057,65.79712 92.10769,66.11068 z" class="shadow" id="path2668"/>
+      <path d="m 341.09982,319.49191 c -11.85,-17.61012 -25.93225,-32.7185 -39.41277,-41.68917 -9.08497,-6.01006 -50.75498,-11.58459 -53.13105,-0.12355 -2.09226,9.33472 -23.68382,23.38988 -40.6941,50.57436 -35.7971,77.89658 152.23681,38.14407 133.23792,-8.76164 z" id="path2766" class="skin belly_upper" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path d="m 207.8619,328.25355 c -12.53436,20.03142 -22.58119,47.19177 -20.50579,84.84547 2.51584,48.63957 63.03576,65.97091 92.10769,66.11068 29.07193,0.13977 69.04583,-18.16996 86.51694,-59.26201 11.3436,-26.68015 -2.94351,-67.8549 -24.88092,-100.45578 -54.64309,34.99223 -153.31807,74.86703 -133.23792,8.76164 z" id="path2670" class="skin belly" inkscape:connector-curvature="0" sodipodi:nodetypes="ccsscc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1329-7" class="shadow belly_details" d="m 229.73798,426.38469 c 0.6843,-3.19765 0.13727,-8.57118 -0.57274,-9.24552 l -0.0242,0.001 c -1.11133,4.1119 -0.35187,6.27483 0.59697,9.24433 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 229.16524,417.13917 c -2.73244,-11.59717 3.64449,-55.02388 3.64449,-55.02388 l 0.001,0.003 c -3.20829,21.99827 -7.36761,44.34013 -3.67011,55.02232 z" class="muscle_tone belly_details" id="path1463-4" sodipodi:nodetypes="ccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_6" inkscape:label="Belly_6" style="display:inline;opacity:1">
+      <path id="path1353" class="shadow" d="m 274.8,433.8 c 21.7045,0.8035 49.46622,-12.07771 61.9,-42.4 13.35711,-25.50652 -13.60539,-70.14322 -27.1735,-84.40895 C 307.9828,305.36798 290.7,289.7 290.7,289.7 l -38.01351,-0.0884 c -3.72119,10.50526 0.65099,5.14821 -10.23287,13.02156 C 225.22398,315.09704 205.23454,348.37128 208.9,386.5 c 2.04357,37.62359 45.18214,47.07566 65.9,47.3 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccsccscc"/>
+      <path d="M 318.791,319.36764 C 310.33514,306.83651 300.30412,296.09111 290.7,289.7 c -8.08424,-10.14091 -38.38826,-4.40804 -38.01351,-0.0884 -1.42593,6.36184 -15.51064,15.78815 -27.36287,33.47894 -12.55487,27.69028 83.64205,25.89039 93.46738,-3.7229 z" id="path2762" class="skin belly_upper" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path d="m 225.32362,323.09054 c -9.7588,14.5661 -18.0041,34.73504 -16.42362,63.40946 1.8,34.8 45.1,47.2 65.9,47.3 20.8,0.1 49.4,-13 61.9,-42.4 8.13449,-19.13232 -2.15273,-48.68244 -17.909,-72.03236 -50.10077,20.10102 -91.83376,21.17543 -93.46738,3.7229 z" id="XMLID_544_" class="skin belly" inkscape:connector-curvature="0" sodipodi:nodetypes="ccsscc"/>
+      <path sodipodi:nodetypes="cccc" id="path1329" class="shadow belly_details" d="m 247.11813,400.93648 c 0.6843,-3.19765 0.13727,-8.57118 -0.57274,-9.24552 l -0.0242,10e-4 c -1.11133,4.1119 -0.35187,6.27483 0.59697,9.24433 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 246.54539,391.69096 c -2.73244,-11.59717 3.64449,-55.02388 3.64449,-55.02388 l 0.001,0.003 c -3.20829,21.99827 -7.36761,44.34013 -3.67011,55.02232 z" class="muscle_tone belly_details" id="path1463" sodipodi:nodetypes="ccccc"/>
+    </g>
+    <g style="display:inline;opacity:1" inkscape:label="Belly_5" id="Belly_5" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 274.60566,422.83985 c 22.57794,-0.26377 46.60878,-13.93918 55.8851,-38.27994 C 342.66728,358.01673 318.39072,310.625 290.7,292.325 c -6.5,-4.3 -36.31351,-10.91339 -38.01351,-2.7134 -3.51304,11.351 -42.37199,32.74894 -37.57725,90.52444 1.27823,33.49959 34.99365,42.99006 59.49642,42.70381 z" class="shadow" id="path2660" sodipodi:nodetypes="sccccs"/>
+      <path d="M 317.68774,319.64465 C 310.20815,307.23395 300.71424,296.36402 290.7,289.7 c -7.88983,-2.76619 -35.90441,-9.18137 -38.01351,-0.0884 -1.28853,5.74885 -11.30533,13.95251 -20.698,27.7441 -9.1774,45.16184 76.92585,16.40846 85.69925,2.28895 z" id="path2758" class="skin belly_upper" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path d="m 231.98849,317.3557 c -9.55984,14.03704 -18.47314,33.86269 -16.87925,62.78034 1.62509,31.41845 35.08606,42.43563 59.49642,42.70381 22.57812,0.24804 44.59974,-11.73678 55.8851,-38.27994 7.17575,-16.87737 0.25701,-43.24508 -12.80302,-64.91526 -56.44664,26.3136 -88.62673,21.13211 -85.69925,-2.28895 z" id="path2648" class="skin belly" inkscape:connector-curvature="0" sodipodi:nodetypes="ccsscc"/>
+      <path inkscape:connector-curvature="0" d="m 251.74018,381.39681 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5-5" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1459-5-05-5" class="muscle_tone belly_details" d="m 251.16744,372.15129 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_4" inkscape:label="Belly_4" style="display:inline;opacity:1">
+      <path sodipodi:nodetypes="sscccs" id="path2666" class="shadow" d="m 274.33657,404.45507 c 15.98049,1.5e-4 37.2717,-10.28977 47.55679,-32.57525 10.42451,-22.58756 -3.38822,-62.55399 -31.19336,-80.85399 -6.5,-4.3 -36.31351,-9.61422 -38.01351,-1.41423 -3.04373,11.64438 -34.24697,29.97538 -28.97985,78.50362 -1.03288,28.54814 34.54738,36.3397 50.62993,36.33985 z" inkscape:connector-curvature="0"/>
+      <path d="M 316.06623,319.50333 C 310.17266,307.69899 301.5397,296.91333 290.7,289.7 c -14.38458,-7.74548 -36.44206,-7.01039 -38.01351,-0.0884 -1.40311,6.26004 -10.51478,14.4182 -18.18379,28.27017 17.24262,20.43098 54.17377,10.86007 81.56353,1.62156 z" id="path2754" class="skin belly_upper" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path d="m 234.5027,317.88177 c -6.54184,11.81606 -12.03392,27.77521 -10.79606,50.23345 1.38291,26.7363 34.64962,36.26302 50.62993,36.33985 15.98031,0.0768 37.95324,-9.9877 47.55679,-32.57525 5.81811,-13.6842 3.2311,-34.23356 -5.82713,-52.37649 -46.49014,10.13848 -63.48936,9.79881 -81.56353,-1.62156 z" id="path2656" class="skin belly" inkscape:connector-curvature="0" sodipodi:nodetypes="cccscc"/>
+      <path inkscape:connector-curvature="0" d="m 256.74018,369.64681 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5-1" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1459-5-05-8" class="muscle_tone belly_details" d="m 256.16744,360.40129 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g style="display:inline;opacity:1" inkscape:label="Belly_3" id="Belly_3" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 309.64993,374.76916 c 12.5,-29.4 8.55007,-52.64416 -18.94993,-70.94416 -6.5,-4.3 -36.31351,-11.16339 -38.01351,-2.9634 -10.79598,30.33834 -20.73387,40.93304 -19.14201,62.73091 8.72791,49.95203 66.91995,32.36282 76.10545,11.17665 z" class="shadow" id="path2644" sodipodi:nodetypes="ccccc"/>
+      <path d="M 310.31221,320.49239 C 305.88414,313.29324 299.38792,306.73141 290.7,300.95 c -5.20612,-5.0539 -35.64473,-12.8791 -38.01351,-0.0884 -2.21146,7.48465 -4.5755,13.76762 -6.86281,19.3136 23.33155,10.12967 44.19234,6.76521 64.48853,0.31719 z" id="path1500" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly_upper"/>
+      <path d="m 245.82368,320.1752 c -6.98412,16.93416 -13.25298,26.9971 -12.2792,43.41731 11.65265,51.4144 68.51094,32.36282 77.69644,11.17665 8.55095,-20.11183 8.65947,-38.68835 -0.92871,-54.27677 -23.1485,5.53162 -45.32224,7.73758 -64.48853,-0.31719 z" id="path2640" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly"/>
+      <path inkscape:connector-curvature="0" d="m 267.14919,359.30734 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1459-5-05" class="muscle_tone belly_details" d="m 266.57645,350.06182 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 10e-4,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_2" inkscape:label="Belly_2" style="display:inline;opacity:1">
+      <path sodipodi:nodetypes="ccccc" id="path2636" class="shadow" d="m 311.24092,364.98969 c 11.30701,-29.22957 5.62876,-44.8886 -21.51319,-63.23975 -10.03554,1.53363 -24.20431,-1.41111 -37.04124,-2.13834 -10.20832,30.79084 -11.51166,37.84205 -10.21479,59.6384 15.6102,44.12734 52.77782,22.59483 68.76922,5.73969 z" inkscape:connector-curvature="0"/>
+      <path d="M 312.20931,320.36893 C 307.83085,313.09392 300.72435,306.37075 290.7,299.7 c -15.73274,-8.16624 -36.32471,-6.9694 -38.01351,-0.0884 -2.58984,8.76527 -4.68802,15.62433 -6.33127,21.47269 26.87923,9.94581 47.10701,4.48006 65.85409,-0.71536 z" id="path1495" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly_upper"/>
+      <path d="m 246.35522,321.08429 c -4.04438,14.39398 -5.33307,22.66562 -4.41385,38.16571 6.15265,52.7894 60.11405,28.03071 69.29955,6.84454 7.94348,-18.68306 8.60144,-33.04291 0.96839,-45.72561 -20.32569,4.14782 -40.69316,8.19515 -65.85409,0.71536 z" id="path2632" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly"/>
+      <path inkscape:connector-curvature="0" d="m 273.24018,345.52181 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-0" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1459-5-0" class="muscle_tone belly_details" d="m 272.66744,336.27629 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g style="display:inline;opacity:1" inkscape:label="Belly_1" id="Belly_1" inkscape:groupmode="layer">
+      <path inkscape:connector-curvature="0" d="m 302.84403,354.15 -12.63017,-60.20736 -37.52737,-2.12133 c -12.96875,29.21542 -5.13048,55.52152 -4.91149,57.42869 z" class="shadow" id="path2628" sodipodi:nodetypes="ccccc"/>
+      <path d="M 313.39832,319.9501 C 312.01747,308.83082 305.19485,299.34566 290.7,289.7 c -7.77048,-3.19091 -35.55141,-8.21311 -38.01351,-0.0884 -4.28211,14.49271 -6.07039,23.77421 -6.62938,31.8923 23.89342,8.62747 51.22199,5.92886 67.34121,-1.5538 z" id="path1489" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly_upper"/>
+      <path d="m 246.05711,321.5039 c -0.61116,8.87594 0.24722,16.36113 0.92239,27.7461 6.15265,52.7894 49.41907,27.05844 58.60457,5.87227 5.91143,-13.90369 9.05319,-25.19567 7.81425,-35.17217 -19.84031,5.31308 -40.82072,8.52894 -67.34121,1.5538 z" id="path2620" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" class="skin belly"/>
+      <path inkscape:connector-curvature="0" d="m 275.78689,344.77751 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccccc" id="path1459-5" class="muscle_tone belly_details" d="m 275.21415,335.53199 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 10e-4,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_7_Piercing" id="Belly_7_Piercing" inkscape:groupmode="layer">
+      <circle r="1.2" cy="416.26746" cx="228.95717" class="steel_piercing" id="circle1565"/>
+      <circle r="1.2" cy="426.55466" cx="229.57588" class="steel_piercing" id="circle1567"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_6_Piercing" id="Belly_6_Piercing" inkscape:groupmode="layer">
+      <circle r="1.2" cy="390.89999" cx="246.54645" class="steel_piercing" id="circle1559"/>
+      <circle r="1.2" cy="401.18719" cx="247.16516" class="steel_piercing" id="circle1561"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_5_Piercing" id="Belly_5_Piercing" inkscape:groupmode="layer">
+      <circle r="1.2" cy="371.27499" cx="251.17145" class="steel_piercing" id="circle1553"/>
+      <circle r="1.2" cy="381.56219" cx="251.79016" class="steel_piercing" id="circle1555"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_4_Piercing" id="Belly_4_Piercing" inkscape:groupmode="layer">
+      <circle r="1.2" cy="360.14999" cx="256.04645" class="steel_piercing" id="circle1547"/>
+      <circle r="1.2" cy="370.43719" cx="256.66516" class="steel_piercing" id="circle1549"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_3_Piercing" id="Belly_3_Piercing" inkscape:groupmode="layer">
+      <circle r="1.2" cy="348.77499" cx="266.54645" class="steel_piercing" id="circle1535"/>
+      <circle r="1.2" cy="359.7251" cx="267.29773" class="steel_piercing" id="circle1537"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_2_Piercing" inkscape:label="Belly_2_Piercing" style="display:inline">
+      <circle id="circle1541" class="steel_piercing" cx="272.67145" cy="336.39999" r="1.2"/>
+      <circle id="circle1543" class="steel_piercing" cx="273.16516" cy="345.68719" r="1.2"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_1_Piercing" inkscape:label="Belly_1_Piercing" style="display:inline">
+      <circle id="XMLID_547_" class="steel_piercing" r="1.2" cy="334.39999" cx="275.04645"/>
+      <circle id="XMLID_548_" class="steel_piercing" cx="275.9808" cy="345.96753" r="1.2"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_7_Piercing_Heavy" id="Belly_7_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1523" class="steel_piercing" d="m 229.5,422.1 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1525" class="steel_piercing" d="m 229.6,447.1 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_6_Piercing_Heavy" inkscape:label="Belly_6_Piercing_Heavy" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 247,396.1 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" class="steel_piercing" id="path1529" sodipodi:nodetypes="ccscc"/>
+      <path inkscape:connector-curvature="0" d="m 247.1,421.1 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" class="steel_piercing" id="path1531"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_5_Piercing_Heavy" id="Belly_5_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1517" class="steel_piercing" d="m 251.41942,378.06878 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1519" class="steel_piercing" d="m 251.51942,403.06878 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_4_Piercing_Heavy" id="Belly_4_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1511" class="steel_piercing" d="m 256.72272,367.10862 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1513" class="steel_piercing" d="m 256.82272,392.10862 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_3_Piercing_Heavy" id="Belly_3_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1505" class="steel_piercing" d="m 266.62221,357.20913 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1507" class="steel_piercing" d="m 266.72221,382.20913 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_2_Piercing_Heavy" id="Belly_2_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1497" class="steel_piercing" d="m 272.98618,342.71344 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1501" class="steel_piercing" d="m 273.08618,367.71344 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g style="display:inline" inkscape:label="Belly_1_Piercing_Heavy" id="Belly_1_Piercing_Heavy" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccscc" id="path1482" class="steel_piercing" d="m 275.63783,340.94567 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" inkscape:connector-curvature="0"/>
+      <path id="path1491" class="steel_piercing" d="m 275.73783,365.94567 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scscs"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Belly_Outfit_" inkscape:label="Belly_Outfit_" style="display:inline">
+      <g inkscape:groupmode="layer" id="Belly_Outfit_Maid_" inkscape:label="Belly_Outfit_Maid_" style="display:inline">
+        <g inkscape:groupmode="layer" id="Belly_Outfit_Maid" inkscape:label="Belly_Outfit_Maid" style="display:inline">
+          <path sodipodi:nodetypes="ccsccscc" inkscape:connector-curvature="0" d="m 274.8,433.8 c 21.7045,0.8035 49.46622,-12.07771 61.9,-42.4 13.35711,-25.50652 -13.60539,-70.14322 -27.1735,-84.40895 C 307.9828,305.36798 290.7,289.7 290.7,289.7 h -40.4 c -3.72119,10.50526 0.56261,6.65081 -10.32125,14.52416 C 222.74911,316.68803 205.23454,348.37128 208.9,386.5 c 2.04357,37.62359 45.18214,47.07566 65.9,47.3 z" class="shadow" id="path1436"/>
+          <path style="display:inline;fill:#ffffff" id="path1438" d="m 274.8,433.8 c 20.8,0.1 49.4,-13 61.9,-42.4 12.5,-29.4 -18.5,-83.4 -46,-101.7 -6.5,-4.3 -38.7,-8.2 -40.4,0 -2.6,11.6 -44.9,33.3 -41.4,96.8 1.8,34.8 45.1,47.2 65.9,47.3 z" inkscape:connector-curvature="0"/>
+        </g>
+        <g inkscape:label="Belly_Outfit_Maid_Lewd" id="Belly_Outfit_Maid_Lewd" inkscape:groupmode="layer" style="display:inline;filter:url(#filter3015)">
+          <path inkscape:connector-curvature="0" d="m 274.8,433.8 c 20.8,0.1 49.4,-13 61.9,-42.4 12.5,-29.4 -18,-72.7 -18,-72.7 -31.1469,1.14566 -64.65766,7.56452 -91.9,0 -17.21627,24.22829 -18.42262,47.68549 -17.9,67.8 1.8,34.8 45.1,47.2 65.9,47.3 z" id="path1450" style="display:inline;fill:#ffffff" sodipodi:nodetypes="sscccs"/>
+        </g>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Penis_" style="display:inline;opacity:1" inkscape:label="Penis_">
+    <g inkscape:groupmode="layer" id="Balls_4" style="display:inline" inkscape:label="Balls_4">
+      <path inkscape:connector-curvature="0" d="m 243.6,499.375 c 3.3,8.9 7.4,10.4 10.4,11.3 6.6,2 10.1,-0.6 21,2.7 5,1.5 8.3,5.6 16.6,5.6 1.5,0 13.3,2.3 22.7,-7 5.9,-5.7 5.6,-14.1 5.4,-26.3 -0.2,-9.1 -2,-15.1 -3.3,-18.6 -2.3,-6.2 -3.6,-9.8 -7.1,-12.1 -7.7,-5 -19.3,0.5 -25.2,3.3 -6.3,3 -11.6,-1.4 -19,5.4 -10.8,10.2 -25.4,25 -21.5,35.7 z" class="shadow" id="XMLID_868_" sodipodi:nodetypes="cccsccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 243.6,491.575 c -0.3,5.7 2,12.8 7.1,16.5 5.6,4.1 9.8,0.5 21.8,3.5 9.4,2.4 9.1,5.3 16.5,6.5 1.7,0.3 15.7,2.3 24.2,-6.5 6.2,-6.3 6,-15.1 5.9,-28.3 -0.2,-9.7 -2.1,-16.3 -3.5,-19.9 -2.4,-6.6 -3.9,-10.4 -7.7,-13 -8.3,-5.4 -20.9,0.6 -27.1,3.5 -7,3.3 -10.9,7 -18.9,14.1 -11.8,10.9 -17.8,16.3 -18.3,23.6 z" class="skin scrotum" id="XMLID_869_" sodipodi:nodetypes="ccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Balls_3" style="display:inline" inkscape:label="Balls_3">
+      <path inkscape:connector-curvature="0" d="m 252.4,487.475 c 2.5,6.8 5.7,8 8,8.7 5.1,1.5 7.8,-0.5 16.1,2.1 3.8,1.2 6.4,4.3 12.7,4.3 1.2,0 10.2,1.7 17.4,-5.3 4.5,-4.4 4.3,-10.8 4.2,-20.2 -0.1,-7 -1.5,-11.6 -2.5,-14.3 -1.7,-4.8 -2.8,-7.5 -5.4,-9.3 -5.9,-3.8 -14.8,0.3 -19.4,2.5 -4.9,2.3 -8.9,-1 -14.6,4.2 -8.3,7.7 -19.5,19 -16.5,27.3 z" class="shadow" id="XMLID_870_" sodipodi:nodetypes="cccsccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 252.4,481.375 c -0.2,4.4 1.5,9.9 5.4,12.6 4.3,3.1 7.5,0.3 16.7,2.7 7.2,1.9 7,4.1 12.6,5 1.3,0.2 12.1,1.7 18.5,-5 4.8,-4.9 4.6,-11.6 4.5,-21.7 -0.1,-7.4 -1.6,-12.5 -2.7,-15.3 -1.9,-5.1 -3,-8 -5.9,-10 -6.4,-4.2 -16,0.5 -20.7,2.7 -5.3,2.5 -8.3,5.3 -14.5,10.8 -8.9,8.5 -13.5,12.7 -13.9,18.2 z" class="skin scrotum" id="XMLID_871_" sodipodi:nodetypes="ccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Balls_2" style="display:inline" inkscape:label="Balls_2">
+      <path inkscape:connector-curvature="0" d="m 259.2,478.275 c 2,5.2 4.4,6.1 6.1,6.7 3.9,1.2 6,-0.4 12.4,1.6 2.9,0.9 4.9,3.3 9.8,3.3 0.9,0 7.8,1.3 13.3,-4.1 3.5,-3.4 3.3,-8.3 3.2,-15.5 -0.1,-5.3 -1.2,-8.9 -2,-10.9 -1.3,-3.6 -2.1,-5.8 -4.2,-7.1 -4.5,-2.9 -11.4,0.3 -14.8,2 -3.7,1.8 -6.8,-0.8 -11.2,3.2 -6.3,5.8 -14.9,14.5 -12.6,20.8 z" class="shadow" id="XMLID_872_" sodipodi:nodetypes="cccsccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 259.2,473.675 c -0.2,3.4 1.2,7.6 4.2,9.7 3.3,2.4 5.8,0.3 12.8,2 5.5,1.4 5.3,3.1 9.7,3.8 1,0.2 9.2,1.3 14.2,-3.8 3.6,-3.7 3.6,-8.9 3.5,-16.6 -0.1,-5.7 -1.2,-9.6 -2,-11.7 -1.4,-3.9 -2.3,-6.1 -4.5,-7.6 -4.9,-3.2 -12.3,0.4 -15.9,2 -4.1,2 -6.4,4.1 -11.1,8.3 -7.1,6.4 -10.7,9.6 -10.9,13.9 z" class="skin scrotum" id="XMLID_873_" sodipodi:nodetypes="ccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Balls_1" style="display:inline" inkscape:label="Balls_1">
+      <path inkscape:connector-curvature="0" d="m 272.075,472.6 c 1.2,3.4 2.8,3.9 3.9,4.3 2.5,0.7 3.8,-0.3 7.9,1.1 1.9,0.5 3.1,2.1 6.3,2.1 0.6,0 5,0.8 8.5,-2.7 2.2,-2.2 2.1,-5.3 2,-9.9 -0.1,-3.4 -0.8,-5.7 -1.2,-7 -0.9,-2.3 -1.3,-3.6 -2.7,-4.5 -2.9,-1.9 -7.3,0.2 -9.5,1.2 -2.4,1.2 -4.7,-0.7 -7.5,1.8 -4,3.8 -9.1,9.6 -7.7,13.6 z" class="shadow" id="XMLID_874_" sodipodi:nodetypes="cccsscccccc"/>
+      <path inkscape:connector-curvature="0" d="m 272.075,469.5 c -0.2,2.1 0.7,4.7 2.6,6.1 2.1,1.5 3.6,0.2 8.1,1.3 3.5,0.9 3.4,2 6.1,2.4 0.6,0.1 5.8,0.8 8.9,-2.4 2.3,-2.4 2.2,-5.6 2.1,-10.5 -0.1,-3.6 -0.8,-6 -1.3,-7.4 -0.9,-2.5 -1.75355,-4.91647 -3.15355,-5.81647 -3.1,-2 -7.7,0.2 -10,1.3 -2.6,1.2 -3.64645,3.61647 -6.54645,6.21647 -4.4,4 -6.6,6.1 -6.8,8.8 z" class="skin scrotum" id="XMLID_875_" sodipodi:nodetypes="ccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Balls_0" inkscape:label="Balls_0" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 280.8,465.675 c 0.7,2 1.6,2.3 2.3,2.5 1.4,0.4 2.2,-0.1 4.6,0.6 1.1,0.4 1.8,1.2 3.6,1.2 0.4,0 2.9,0.4 5,-1.5 1.3,-1.2 1.2,-3 1.2,-5.7 0,-2 -0.4,-3.3 -0.7,-4.1 -0.5,-1.3 -0.8,-2.1 -1.5,-2.6 -1.7,-1.1 -4.2,0.1 -5.5,0.7 -1.4,0.7 -3.1,-0.2 -4.7,1.3 -2.6,2.1 -5.2,5.2 -4.3,7.6 z" class="shadow" id="XMLID_876_" sodipodi:nodetypes="cscscsccccc"/>
+      <path inkscape:connector-curvature="0" d="m 280.9,463.575 c -0.1,1.2 0.4,2.7 1.5,3.5 1.2,0.9 2,0.1 4.5,0.7 2,0.5 1.9,1.2 3.5,1.3 0.4,0.1 3.3,0.4 5.1,-1.3 1.3,-1.3 1.2,-3.2 1.2,-5.9 0,-2 -0.4,-3.4 -0.7,-4.2 -0.5,-1.4 -1.37452,-4.32132 -2.17452,-4.82132 -1.7,-1.2 -4.4,0.1 -5.6,0.7 -1.4,0.7 -1.72548,3.52132 -3.32548,5.02132 -2.7,2.3 -3.9,3.5 -4,5 z" class="skin scrotum" id="XMLID_877_" sodipodi:nodetypes="cccccsccscc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_6" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 183.2,369.4 c 1.4,0.9 1.4,3.5 1.4,3.9 0,7.5 14.3,33.3 27.4,46 39.3,38.2 78.2,48 74.4,30.6 -0.5,-2.6 3.3,-4.1 3.8,-5.6 5.1,-16.4 -19.5,-41.2 -46.7,-63.9 -22.8,-19 -23.3,-18.1 -28.6,-21.5 -0.8,-0.5 -2,-1.3 -2.4,-3.8 -0.4,-2 1.3,-4.2 1.4,-5.8 0.9,-5.9 -7.2,-10.4 -14.7,-14.2 -5.8,-2.9 -17.3,-6.4 -23.6,-1.4 -13.5,10.8 -2.9,39.9 3,36.6 1.3,-0.6 3.1,-1.9 4.6,-0.9 z" class="shadow" id="XMLID_878_" sodipodi:nodetypes="csccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 182.9,369.4 c 1.6,1 1.6,3.7 1.6,4.1 0.1,5.1 13,31.1 38.3,53.1 19,16.5 55.9,40.1 68.5,29.6 2.2,-2 3,-4.5 3.5,-6.2 5.6,-18.5 -21.9,-42.4 -30.2,-49.6 -26.6,-23.1 -42.1,-36.5 -48,-40.4 -0.8,-0.5 -3.5,-2.2 -4.1,-5.1 -0.4,-2.2 0.8,-3.4 1,-5.1 0.7,-5.1 -8,-11 -14.3,-13.8 -4.9,-2.1 -15.7,-6.8 -23,-1.6 -11.4,8.3 -4.1,33.7 1.6,34.8 1.4,0.5 3.4,-1 5.1,0.2 z" class="skin penis" id="XMLID_879_" sodipodi:nodetypes="ccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_5" style="display:inline" inkscape:label="Penis_5">
+      <path inkscape:connector-curvature="0" d="m 202.1,382.1 c 1.2,0.8 1.2,2.9 1.2,3.2 0,6.2 11.8,27.5 22.6,38 32.5,31.5 64.6,39.6 61.4,25.2 -0.4,-2.2 2.7,-3.4 3.1,-4.7 4.2,-13.5 -16.1,-34 -38.6,-52.7 -18.8,-15.7 -19.3,-14.9 -23.6,-17.8 -0.6,-0.4 -1.6,-1.1 -1.9,-3.1 -0.3,-1.6 1.1,-3.5 1.2,-4.8 0.8,-4.9 -6,-8.6 -12.1,-11.7 -4.8,-2.4 -14.3,-5.3 -19.5,-1.2 -11.2,8.9 -2.4,32.9 2.5,30.2 1,-0.3 2.6,-1.4 3.7,-0.6 z" class="shadow" id="XMLID_880_" sodipodi:nodetypes="csccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 201.9,382.1 c 1.3,0.9 1.3,3 1.3,3.4 0.1,4.2 10.7,25.7 31.6,43.9 15.7,13.6 46.1,33.1 56.5,24.5 1.8,-1.6 2.5,-3.7 2.9,-5.1 4.7,-15.3 -18.1,-35 -24.9,-40.9 -22,-19.1 -34.8,-30.1 -39.6,-33.4 -0.6,-0.4 -2.9,-1.8 -3.4,-4.2 -0.3,-1.8 0.6,-2.8 0.9,-4.2 0.5,-4.2 -6.6,-9.1 -11.8,-11.4 -4,-1.7 -13,-5.6 -19,-1.3 -9.4,6.8 -3.4,27.8 1.3,28.7 1.2,0.3 2.8,-0.9 4.2,0 z" class="skin penis" id="XMLID_881_" sodipodi:nodetypes="ccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_4" style="display:inline" inkscape:label="Penis_4">
+      <path inkscape:connector-curvature="0" d="m 218.8,395.4 c 1,0.6 1,2.4 1,2.7 0,5.1 9.7,22.6 18.6,31.2 26.7,25.9 53,32.5 50.4,20.7 -0.4,-1.8 2.2,-2.8 2.6,-3.8 3.5,-11.1 -13.2,-27.9 -31.6,-43.3 -15.5,-12.9 -15.8,-12.3 -19.4,-14.6 -0.5,-0.4 -1.3,-0.9 -1.6,-2.6 -0.3,-1.3 0.9,-2.8 1,-3.9 0.6,-4 -4.9,-7 -10,-9.6 -3.9,-2 -11.7,-4.4 -16,-1 -9.2,7.3 -2,27 2,24.8 0.8,-0.4 2,-1.3 3,-0.6 z" class="shadow" id="XMLID_882_" sodipodi:nodetypes="csccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 218.6,395.4 c 1.1,0.7 1.1,2.5 1.1,2.8 0.1,3.5 8.8,21.1 25.9,36 12.9,11.2 37.9,27.2 46.4,20.1 1.5,-1.3 2,-3 2.4,-4.2 3.8,-12.5 -14.8,-28.7 -20.4,-33.6 -18,-15.6 -28.5,-24.7 -32.5,-27.4 -0.5,-0.4 -2.4,-1.5 -2.8,-3.5 -0.3,-1.5 0.5,-2.3 0.7,-3.5 0.4,-3.5 -5.4,-7.5 -9.7,-9.3 -3.3,-1.4 -10.7,-4.6 -15.6,-1.1 -7.7,5.6 -2.8,22.8 1.1,23.5 0.9,0.4 2.3,-0.6 3.4,0.2 z" class="skin penis" id="XMLID_883_" sodipodi:nodetypes="cccccccsccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_3" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 235.8,408.5 c 0.7,0.5 0.8,1.9 0.8,2.1 0,4 7.6,17.9 14.7,24.6 21.1,20.4 41.9,25.7 39.8,16.4 -0.3,-1.4 1.8,-2.1 2,-3 2.7,-8.8 -10.5,-22 -25,-34.2 -12.3,-10.2 -12.5,-9.7 -15.4,-11.6 -0.4,-0.3 -1,-0.7 -1.2,-2 -0.2,-1.1 0.7,-2.2 0.8,-3.1 0.4,-3.2 -3.9,-5.5 -7.9,-7.6 -3.1,-1.6 -9.2,-3.5 -12.6,-0.8 -7.2,5.8 -1.6,21.3 1.6,19.6 0.6,-0.3 1.6,-1 2.4,-0.4 z" class="shadow" id="XMLID_884_" sodipodi:nodetypes="csccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 235.7,408.5 c 0.8,0.6 0.8,2 0.8,2.1 0.1,2.7 6.8,16.4 20.3,28.1 10.1,8.8 29.6,21.2 36.2,15.6 1.2,-1 1.6,-2.3 1.9,-3.2 3,-9.8 -11.6,-22.4 -15.9,-26.2 -14,-12.2 -22.2,-19.3 -25.4,-21.3 -0.4,-0.3 -1.9,-1.2 -2.1,-2.7 -0.2,-1.2 0.4,-1.8 0.5,-2.7 0.4,-2.8 -4.3,-5.9 -7.6,-7.3 -2.6,-1.1 -8.3,-3.6 -12.2,-0.8 -6,4.4 -2.1,17.9 0.8,18.4 0.8,0.1 1.9,-0.7 2.7,0 z" class="skin penis" id="XMLID_885_" sodipodi:nodetypes="ccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_2" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 251.7,421.6 c 0.5,0.4 0.5,1.3 0.5,1.5 0,2.8 5.5,12.7 10.5,17.6 15,14.6 29.9,18.3 28.4,11.7 -0.2,-1 1.2,-1.5 1.4,-2.1 2,-6.3 -7.5,-15.7 -17.9,-24.4 -8.7,-7.3 -9,-6.9 -10.9,-8.3 -0.3,-0.2 -0.7,-0.5 -0.9,-1.5 -0.2,-0.7 0.4,-1.6 0.5,-2.2 0.4,-2.3 -2.8,-4 -5.6,-5.4 -2.2,-1.2 -6.7,-2.5 -9.1,-0.5 -5.2,4.1 -1.2,15.3 1.2,14 0.6,-0.2 1.3,-0.7 1.9,-0.4 z" class="shadow" id="XMLID_886_" sodipodi:nodetypes="csccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 252,422.1 c 0.6,0.4 0.5,1.3 0.5,1.5 0,1.9 4.9,11.6 14.3,19.9 7.1,6.2 21,15 25.6,11.1 0.9,-0.7 1.2,-1.7 1.3,-2.3 2.1,-6.9 -8.2,-15.9 -11.3,-18.6 -10,-8.6 -15.7,-13.7 -17.9,-15.1 -0.3,-0.2 -1.3,-0.8 -1.5,-2 -0.2,-0.8 0.3,-1.2 0.4,-2 0.3,-2 -3,-4.2 -5.3,-5.2 -1.8,-0.8 -5.9,-2.6 -8.6,-0.5 -4.3,3.1 -1.5,12.6 0.5,13 0.5,0.3 1.3,-0.2 2,0.2 z" class="skin penis" id="XMLID_887_" sodipodi:nodetypes="csccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_1" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 268,434.4 c 0.4,0.3 0.4,0.8 0.4,1 0,1.8 2.4,7.6 6.3,11.2 9.7,8.8 18.8,11.3 17.9,7.1 -0.2,-0.6 0.8,-1 0.9,-1.3 0.8,-3 -4.1,-10 -10.7,-15.3 -5.5,-4.4 -6,-4.3 -7.3,-5.1 -0.2,-0.1 -0.4,-0.3 -0.5,-0.9 -0.1,-0.4 0.3,-1 0.4,-1.3 0.2,-1.4 -1.8,-2.5 -3.6,-3.4 -1.4,-0.7 -4.2,-1.5 -5.6,-0.4 -3.2,2.6 -1.1,9.7 0.7,8.7 0.3,-0.2 0.7,-0.6 1.1,-0.3 z" class="shadow" id="XMLID_888_" sodipodi:nodetypes="sscccccccsccs"/>
+      <path inkscape:connector-curvature="0" d="m 268,434.6 c 0.4,0.3 0.4,0.9 0.4,1 0,1.2 3,7.3 9,12.4 4.4,3.9 13.1,9.3 16,6.9 0.5,-0.4 0.7,-1.1 0.8,-1.4 1.3,-4.3 -5.1,-9.9 -7,-11.6 -6.2,-5.4 -9.9,-8.5 -11.2,-9.4 -0.2,-0.1 -0.8,-0.5 -1,-1.2 -0.1,-0.5 0.2,-0.8 0.3,-1.2 0.2,-1.2 -1.9,-2.6 -3.4,-3.2 -1.2,-0.4 -3.6,-1.6 -5.3,-0.4 -2.7,2 -1,7.9 0.4,8.1 0.2,0.1 0.7,-0.3 1,0 z" class="skin penis" id="XMLID_889_" sodipodi:nodetypes="csccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Penis_0" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 278.4,442.4 c 0.2,0.1 0.2,0.4 0.2,0.5 0,1 1.5,4.4 3.3,6 4.8,4.2 10.2,6.1 9.7,3.9 -0.1,-0.4 0.4,-0.5 0.4,-0.7 0.6,-2.1 -2.1,-5.3 -5.6,-8.3 -2.9,-2.5 -3.4,-2.2 -4,-2.7 -0.1,-0.1 -0.3,-0.2 -0.3,-0.5 -0.1,-0.3 0.2,-0.5 0.2,-0.7 0.1,-0.8 -0.9,-1.3 -1.9,-1.8 -0.7,-0.4 -2.2,-0.8 -3,-0.2 -1.7,1.3 -0.7,5.3 0.4,4.7 0.2,-0.1 0.4,-0.3 0.6,-0.2 z" class="shadow" id="XMLID_890_" sodipodi:nodetypes="ssccccccccccs"/>
+      <path inkscape:connector-curvature="0" d="m 278.5,442.5 c 0.2,0.2 0.2,0.4 0.2,0.5 0,0.6 1.6,3.9 4.8,6.6 2.4,2 6.9,5 8.5,3.6 0.3,-0.3 0.4,-0.5 0.4,-0.8 0.7,-2.3 -2.8,-5.2 -3.7,-6.1 -3.3,-2.8 -5.2,-4.5 -6,-5 -0.1,-0.1 -0.4,-0.3 -0.5,-0.6 -0.1,-0.3 0.1,-0.4 0.1,-0.6 0.1,-0.6 -1,-1.3 -1.8,-1.7 -0.6,-0.3 -2,-0.8 -2.8,-0.2 -1.4,1.1 -0.5,4.2 0.2,4.4 0.2,0 0.4,-0.2 0.6,-0.1 z" class="skin penis" id="XMLID_891_" sodipodi:nodetypes="cscccccscsccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_6" inkscape:label="Flaccid_6" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 238.2,524.475 c 0.2,0.4 1.2,0.8 2.3,1.2 8.3,0.8 8.3,13 6.5,20.7 -0.2,0.7 -0.3,1.4 -0.5,2 -2.5,9.1 -6.6,13 -6.6,13 -0.8,0.8 -3.6,3.6 -7.2,5 -0.9,0.3 -1.8,0.6 -2.8,0.7 -11.9,-0.4 -17.2,-11.6 -18.7,-21.6 -0.3,-1 -0.5,-2.1 -0.7,-3.2 -0.8,-4.4 -0.7,-9.1 1.7,-11.7 0.5,-0.6 1.1,-1 1.7,-1.4 0.5,-0.4 1,-0.9 1.2,-1.7" id="path7-6" sodipodi:nodetypes="ccccccccsccc"/>
+      <path inkscape:connector-curvature="0" d="m 212.7,511.675 c 0,-1.5 0,-3.6 0.2,-6.2 0.1,-1.3 0.3,-6.2 1.4,-13.5 0.6,-4.2 1.2,-7.5 1.4,-8.3 4.3,-22.1 20.3,-33.3 20.3,-33.3 1.8,-1.4 5.9,-3.9 7.7,-5.3 3.6,-2.3 14.6,-7.4 29.9,-2.7 2.2,0.7 17.4,7.1 19.9,11.2 3.1,5.2 -1.9,-3.3 -3.1,-2.2 -0.5,0.4 -1.3,1.1 -2.4,2.4 -1.3,1.7 -1.8,3.2 -2.1,3.9 -1.2,2.7 -4.3,3.6 -8.9,5.4 -5.8,2.3 -9.4,3.8 -13,6.5 -2.6,2 -4.4,4.2 -8,8.6 -3.1,3.9 -4.9,6 -6.6,9.6 -0.5,1.1 -1.4,3.5 -3.2,8.3 -1.1,3 -1.5,4.2 -1.9,5.7 -0.8,2.6 -1.2,4.8 -1.5,6.4 -1,3.9 -3.4,11.2 -9.9,17.2 -3.2,2.9 -7.3,6.8 -11.4,5.7 -7.1,-1.9 -8.7,-18.2 -8.8,-19.4 z" id="path9-0" sodipodi:nodetypes="csccccccccccccccccccc"/>
+      <path inkscape:connector-curvature="0" class="skin penis" d="m 264.7,441.675 c 8,-0.5 25.7,5 28.8,11.9 2.6,5.6 1.2,-1.9 -2.8,3.3 -2.4,1 -6.2,2.7 -10.9,4.6 -10.6,4.3 -12.7,4.7 -16.5,7.5 -4.1,3.1 -7.1,6.7 -8.7,8.7 -1.3,1.6 -3,3.9 -4.8,6.8 -0.5,0.9 -1,1.7 -1.4,2.4 -0.4,0.8 -0.8,1.5 -1.1,2.1 -3.2,9.8 -7.5,19.5 -5.8,28.8 v 2.7 c 0,0.9 -0.1,1.8 -0.2,2.7 -2.5,4.9 4,3.8 5,8.2 1.1,5.4 0,9.8 -0.4,15.1 -0.2,0.8 -0.4,1.6 -0.7,2.4 -2.4,7.5 -5.9,10.8 -5.9,10.8 -0.7,0.7 -2.3,2.3 -4.4,3.6 -0.7,0.4 -1.5,0.8 -2.3,1.1 -12.3,3.9 -17.8,-10.2 -20.5,-19.3 -0.2,-1 -0.5,-2 -0.7,-3 -0.7,-4.1 -0.6,-8.3 1.6,-10.7 0.5,-0.6 1.1,-0.9 1.6,-1.3 0.5,-0.4 0.9,-0.8 1.1,-1.6 -4.2,-13.4 -0.9,-25.3 0.7,-37.9 0.1,-0.9 0.3,-1.8 0.4,-2.7 1,-6.1 0.9,-7.7 3.4,-13.5 1,-2.2 3.9,-10.8 11.9,-18.9 13.9,-14 24,-13.3 32.6,-13.8 z" id="path11-6" sodipodi:nodetypes="ccccccccccsccccccccccscccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_5" inkscape:label="Flaccid_5" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 248.15,510.825 c 0.1,0.4 1,0.7 1.8,0.9 6.7,0.6 6.7,10.6 5.3,16.7 -0.1,0.6 -0.3,1.1 -0.4,1.7 -2.1,7.4 -5.3,10.5 -5.3,10.5 -0.6,0.6 -2.9,3 -5.9,4.1 -0.7,0.3 -1.5,0.5 -2.3,0.6 -9.6,-0.4 -13.9,-9.4 -15.2,-17.5 -0.2,-0.8 -0.4,-1.7 -0.6,-2.6 -0.6,-3.6 -0.5,-7.4 1.3,-9.4 0.4,-0.5 0.9,-0.8 1.3,-1.1 0.4,-0.4 0.8,-0.7 1,-1.4" id="path7" sodipodi:nodetypes="cccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 227.45,500.425 c 0,-1.2 0,-2.9 0.1,-5.1 0.1,-1.1 0.3,-5 1.1,-10.9 0.5,-3.4 1,-6.1 1.1,-6.7 3.6,-17.9 16.5,-26.9 16.5,-27 1.4,-1.2 4.8,-3.2 6.2,-4.3 2.9,-1.8 11.9,-6 24.2,-2.2 1.8,0.5 14.1,5.8 16.1,9.1 2.5,4.2 -1.6,-2.7 -2.5,-1.8 -0.4,0.4 -1.1,0.9 -1.9,2 -1.1,1.4 -1.5,2.6 -1.7,3.1 -1,2.2 -3.5,2.9 -7.2,4.4 -4.7,1.9 -7.7,3.1 -10.6,5.3 -2.1,1.6 -3.6,3.4 -6.5,6.9 -2.6,3.1 -4,4.9 -5.3,7.8 -0.4,0.9 -1.1,2.8 -2.6,6.7 -0.9,2.4 -1.2,3.4 -1.6,4.6 -0.6,2.1 -1,3.9 -1.2,5.2 -0.8,3.1 -2.8,9.1 -8,14 -2.6,2.4 -6,5.5 -9.3,4.6 -5.4,-1.5 -6.8,-14.7 -6.9,-15.7 z" id="path9" sodipodi:nodetypes="ccccccccscccccccccccc"/>
+      <path inkscape:connector-curvature="0" class="skin penis" d="m 269.65,443.725 c 6.5,-0.4 20.8,4.1 23.4,9.6 2.1,4.6 1,-1.5 -2.3,2.6 -1.9,0.8 -5,2.2 -8.9,3.7 -8.6,3.5 -10.3,3.8 -13.4,6.1 -3.3,2.5 -5.7,5.5 -7,7 -1.1,1.3 -2.5,3.2 -3.9,5.5 -0.4,0.7 -0.8,1.4 -1.1,2 -0.3,0.6 -0.6,1.2 -0.9,1.7 -2.6,7.9 -6.1,15.8 -4.7,23.3 v 2.2 c 0,0.7 -0.1,1.4 -0.2,2.2 -2.1,4 3.2,3.1 4.1,6.6 0.9,4.4 0,7.9 -0.3,12.3 -0.2,0.7 -0.4,1.3 -0.6,1.9 -2,6.1 -4.8,8.7 -4.8,8.7 -0.6,0.5 -1.9,1.8 -3.6,2.9 -0.6,0.3 -1.2,0.7 -1.8,0.9 -10,3.1 -14.4,-8.3 -16.6,-15.6 -0.2,-0.8 -0.4,-1.6 -0.5,-2.4 -0.6,-3.3 -0.5,-6.8 1.3,-8.7 0.4,-0.4 0.9,-0.7 1.3,-1.1 0.4,-0.3 0.7,-0.7 0.9,-1.3 -3.4,-10.8 -0.7,-20.5 0.5,-30.7 0.1,-0.8 0.2,-1.5 0.3,-2.2 0.8,-4.9 0.7,-6.3 2.8,-10.9 0.8,-1.8 3.1,-8.8 9.7,-15.3 11.1,-11.2 19.3,-10.6 26.3,-11 z" id="path11" sodipodi:nodetypes="cccccccsccsccccccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_4" inkscape:label="Flaccid_4" style="display:inline">
+      <path id="path6-1" d="m 262.35248,496.07062 c 0.1,0.3 0.7,0.5 1.4,0.7 5.2,0.5 5.2,8.1 4.1,12.9 -0.1,0.4 -0.2,0.9 -0.3,1.3 -1.6,5.7 -4.1,8.1 -4.1,8.1 -0.5,0.5 -2.3,2.3 -4.5,3.1 -0.6,0.2 -1.1,0.4 -1.8,0.4 -7.4,-0.3 -10.7,-7.2 -11.7,-13.5 -0.2,-0.7 -0.3,-1.3 -0.4,-2 -0.5,-2.8 -0.4,-5.7 1,-7.3 0.3,-0.4 0.7,-0.6 1,-0.9 0.3,-0.3 0.6,-0.6 0.8,-1.1" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccsc"/>
+      <path id="path8-2" d="m 246.45248,488.07062 c 0,-0.9 0,-2.3 0.1,-3.9 0,-0.8 0.2,-3.9 0.9,-8.4 0.4,-2.6 0.8,-4.7 0.9,-5.2 2.8,-13.8 12.7,-20.7 12.7,-20.8 1.1,-0.9 3.7,-2.4 4.8,-3.3 2.2,-1.4 9.1,-4.6 18.7,-1.7 1.4,0.4 10.9,4.4 12.4,7 1.9,3.2 -1.2,-2.1 -1.9,-1.4 -0.3,0.3 -0.8,0.7 -1.5,1.5 -0.8,1.1 -1.1,2 -1.3,2.4 -0.8,1.7 -2.7,2.2 -5.5,3.4 -3.6,1.4 -5.9,2.4 -8.1,4 -1.6,1.2 -2.8,2.6 -5,5.3 -2,2.4 -3.1,3.8 -4.1,6 -0.3,0.7 -0.9,2.2 -2,5.2 -0.7,1.8 -0.9,2.6 -1.2,3.5 -0.5,1.6 -0.8,3 -0.9,4 -0.6,2.4 -2.1,7 -6.2,10.7 -2,1.8 -4.6,4.3 -7.1,3.6 -4.6,-1 -5.6,-11.2 -5.7,-11.9 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccscccccccccccc"/>
+      <path id="path10-70" d="m 278.85248,444.47062 c 5,-0.3 16,3.1 18,7.4 1.6,3.5 0.7,-1.2 -1.7,2 -1.5,0.7 -3.9,1.7 -6.8,2.9 -6.6,2.7 -7.9,2.9 -10.3,4.7 -2.6,1.9 -4.4,4.2 -5.4,5.4 -0.8,1 -1.9,2.4 -3,4.2 l -0.9,1.5 c -0.3,0.5 -0.5,0.9 -0.7,1.3 -2,6.1 -4.7,12.2 -3.6,18 v 1.7 c 0,0.6 -0.1,1.1 -0.1,1.7 -1.6,3.1 2.5,2.4 3.1,5.1 0.7,3.4 0,6.1 -0.3,9.4 -0.1,0.5 -0.3,1 -0.4,1.5 -1.5,4.7 -3.7,6.7 -3.7,6.7 -0.4,0.4 -1.4,1.4 -2.8,2.2 -0.4,0.3 -0.9,0.5 -1.4,0.7 -7.7,2.4 -11.1,-6.4 -12.8,-12 -0.2,-0.6 -0.3,-1.2 -0.4,-1.9 -0.4,-2.5 -0.4,-5.2 1,-6.7 0.3,-0.3 0.7,-0.6 1,-0.8 0.3,-0.2 0.6,-0.5 0.7,-1 -2.6,-8.3 -0.6,-15.8 0.4,-23.6 0.1,-0.6 0.2,-1.1 0.3,-1.7 0.6,-3.8 0.5,-4.8 2.1,-8.4 0.6,-1.3 2.4,-6.8 7.4,-11.8 8.6,-8.7 15,-8.2 20.3,-8.5 z" class="skin penis" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccsccsccccccccccscccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_3" inkscape:label="Flaccid_3" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 269.6625,486.0125 c 0.1,0.2 0.6,0.4 1.1,0.6 4,0.4 4,6.4 3.2,10.1 -0.1,0.3 -0.2,0.7 -0.2,1 -1.2,4.5 -3.2,6.3 -3.2,6.3 -0.4,0.4 -1.8,1.8 -3.5,2.5 -0.4,0.2 -0.9,0.3 -1.4,0.3 -5.8,-0.2 -8.4,-5.7 -9.2,-10.6 -0.1,-0.5 -0.2,-1 -0.3,-1.6 -0.4,-2.2 -0.3,-4.4 0.8,-5.7 0.3,-0.3 0.6,-0.5 0.8,-0.7 0.3,-0.2 0.5,-0.4 0.6,-0.8" id="path8-62" sodipodi:nodetypes="cccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 257.1625,479.7125 c 0,-0.7 0,-1.8 0.1,-3 0,-0.6 0.2,-3 0.7,-6.6 0.3,-2.1 0.6,-3.7 0.7,-4.1 2.2,-10.8 10,-16.3 10,-16.3 0.9,-0.7 2.9,-1.9 3.8,-2.6 1.8,-1.1 7.2,-3.6 14.6,-1.3 1.1,0.3 8.5,3.5 9.7,5.5 1.5,2.5 -1,-1.6 -1.5,-1.1 -0.2,0.2 -0.7,0.5 -1.2,1.2 -0.6,0.8 -0.9,1.6 -1,1.9 -0.6,1.3 -2.1,1.7 -4.3,2.6 -2.8,1.1 -4.6,1.9 -6.4,3.2 -1.3,1 -2.2,2 -3.9,4.2 -1.5,1.9 -2.4,2.9 -3.2,4.7 -0.3,0.5 -0.7,1.7 -1.5,4.1 -0.5,1.4 -0.7,2.1 -0.9,2.8 -0.4,1.3 -0.6,2.4 -0.7,3.1 -0.5,1.9 -1.7,5.5 -4.9,8.4 -1.6,1.4 -3.6,3.3 -5.6,2.8 -3.6,-0.9 -4.4,-8.9 -4.5,-9.5 z" id="path10-9" sodipodi:nodetypes="cccccccssccccccccccsc"/>
+      <path inkscape:connector-curvature="0" class="skin penis" d="m 282.6625,445.5125 c 3.9,-0.2 12.6,2.5 14.1,5.8 1.3,2.8 0.6,-0.9 -1.4,1.6 -1.2,0.5 -3,1.3 -5.4,2.3 -5.2,2.1 -6.2,2.3 -8.1,3.7 -2,1.5 -3.5,3.3 -4.2,4.2 -0.6,0.8 -1.5,1.9 -2.3,3.3 -0.3,0.4 -0.5,0.8 -0.7,1.2 -0.2,0.4 -0.4,0.7 -0.5,1 -1.5,4.8 -3.7,9.6 -2.9,14.1 v 1.3 c 0,0.4 0,0.9 -0.1,1.3 -1.2,2.4 1.9,1.9 2.5,4 0.5,2.7 0,4.8 -0.2,7.4 l -0.3,1.2 c -1.2,3.7 -2.9,5.3 -2.9,5.3 -0.3,0.3 -1.1,1.1 -2.2,1.7 -0.3,0.2 -0.7,0.4 -1.1,0.6 -6,1.9 -8.7,-5 -10,-9.4 l -0.3,-1.5 c -0.3,-2 -0.3,-4.1 0.8,-5.2 0.3,-0.3 0.5,-0.4 0.8,-0.6 0.2,-0.2 0.4,-0.4 0.6,-0.8 -2,-6.5 -0.4,-12.4 0.3,-18.5 0.1,-0.5 0.1,-0.9 0.2,-1.3 0.5,-3 0.4,-3.8 1.7,-6.6 0.5,-1.1 1.9,-5.3 5.8,-9.3 6.6,-6.9 11.6,-6.6 15.8,-6.8 z" id="path12" sodipodi:nodetypes="cccccccsccscccccccccsccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_2" inkscape:label="Flaccid_2" style="display:inline">
+      <path id="path6-5" d="m 275.575,476.125 c 0.1,0.1 0.4,0.3 0.8,0.4 2.8,0.3 2.8,4.4 2.2,7 -0.1,0.2 -0.1,0.5 -0.2,0.7 -0.9,3.1 -2.2,4.4 -2.2,4.4 -0.3,0.3 -1.2,1.2 -2.4,1.7 -0.3,0.1 -0.6,0.2 -1,0.2 -4,-0.1 -5.8,-3.9 -6.3,-7.3 -0.1,-0.4 -0.2,-0.7 -0.2,-1.1 -0.3,-1.5 -0.2,-3.1 0.6,-3.9 0.2,-0.2 0.4,-0.3 0.6,-0.5 0.2,-0.1 0.3,-0.3 0.4,-0.6" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccscc"/>
+      <path id="path8-3" d="m 266.875,471.725 c 0,-0.5 0,-1.2 0.1,-2.1 0,-0.4 0.1,-2.1 0.5,-4.5 0.2,-1.4 0.4,-2.5 0.5,-2.8 1.5,-7.5 6.9,-11.2 6.9,-11.2 0.6,-0.5 2,-1.3 2.6,-1.8 1.2,-0.8 4.9,-2.5 10.1,-0.9 0.7,0.2 5.9,2.4 6.7,3.8 1,1.8 -0.7,-1.1 -1,-0.8 -0.2,0.1 -0.5,0.4 -0.8,0.8 -0.4,0.6 -0.6,1.1 -0.7,1.3 -0.4,0.9 -1.5,1.2 -3,1.8 -2,0.8 -3.2,1.3 -4.4,2.2 -0.9,0.7 -1.5,1.4 -2.7,2.9 -1.1,1.3 -1.7,2 -2.2,3.2 -0.2,0.4 -0.5,1.2 -1.1,2.8 -0.4,1 -0.5,1.4 -0.7,1.9 -0.3,0.9 -0.4,1.6 -0.5,2.2 -0.3,1.3 -1.2,3.8 -3.4,5.8 -1.1,1 -2.5,2.3 -3.9,1.9 -2.4,-0.6 -2.9,-6.1 -3,-6.5 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccsccccccscc"/>
+      <path id="path10-5" d="m 284.475,448.125 c 2.7,-0.2 8.7,1.7 9.7,4 0.9,1.9 0.4,-0.6 -0.9,1.1 -0.8,0.4 -2.1,0.9 -3.7,1.6 -3.6,1.4 -4.3,1.6 -5.6,2.5 -1.4,1 -2.4,2.3 -2.9,2.9 -0.4,0.5 -1,1.3 -1.6,2.3 -0.2,0.3 -0.3,0.6 -0.5,0.8 -0.2,0.2 -0.3,0.5 -0.4,0.7 -1.1,3.3 -2.5,6.6 -2,9.7 v 0.9 c 0,0.3 0,0.6 -0.1,0.9 -0.9,1.7 1.3,1.3 1.7,2.8 0.4,1.8 0,3.3 -0.1,5.1 -0.1,0.3 -0.1,0.6 -0.2,0.8 -0.8,2.6 -2,3.6 -2,3.6 -0.2,0.2 -0.8,0.8 -1.5,1.2 -0.2,0.1 -0.5,0.3 -0.8,0.4 -4.2,1.3 -6,-3.5 -6.9,-6.5 -0.1,-0.3 -0.2,-0.7 -0.2,-1 -0.2,-1.4 -0.2,-2.8 0.5,-3.6 0.2,-0.2 0.4,-0.3 0.5,-0.4 0.2,-0.1 0.3,-0.3 0.4,-0.5 -1.4,-4.5 -0.3,-8.6 0.2,-12.8 0,-0.3 0.1,-0.6 0.1,-0.9 0.3,-2.1 0.3,-2.6 1.2,-4.6 0.3,-0.7 1.3,-3.7 4,-6.4 4.8,-4.7 8.2,-4.4 11.1,-4.6 z" class="skin penis" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccsccsccccccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_1" inkscape:label="Flaccid_1" style="display:inline">
+      <path id="path6-3" d="m 280.78125,468.36875 c 0,0.1 0.3,0.2 0.5,0.3 1.9,0.2 1.9,3.1 1.5,4.9 0,0.2 -0.1,0.3 -0.1,0.5 -0.6,2.2 -1.6,3.1 -1.6,3.1 -0.2,0.2 -0.9,0.9 -1.7,1.2 -0.2,0.1 -0.4,0.1 -0.7,0.2 -2.8,-0.1 -4,-2.7 -4.4,-5.1 -0.1,-0.2 -0.1,-0.5 -0.2,-0.8 -0.2,-1 -0.2,-2.1 0.4,-2.7 0.1,-0.1 0.3,-0.2 0.4,-0.3 0.1,-0.1 0.2,-0.2 0.3,-0.4" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccssc"/>
+      <path id="path8-6" d="m 274.78125,465.26875 v -1.5 c 0,-0.3 0.1,-1.5 0.3,-3.2 0.1,-1 0.3,-1.8 0.3,-2 1,-5.2 4.8,-7.8 4.8,-7.8 0.4,-0.3 1.4,-0.9 1.8,-1.3 0.8,-0.5 3.4,-1.7 7,-0.6 0.5,0.2 4.1,1.7 4.7,2.6 0.7,1.2 -0.5,-0.8 -0.7,-0.5 l -0.6,0.6 c -0.3,0.4 -0.4,0.8 -0.5,0.9 -0.3,0.6 -1,0.8 -2.1,1.3 -1.4,0.5 -2.2,0.9 -3.1,1.5 -0.6,0.5 -1,1 -1.9,2 -0.7,0.9 -1.2,1.4 -1.6,2.3 -0.1,0.3 -0.3,0.8 -0.7,2 -0.3,0.7 -0.4,1 -0.5,1.3 -0.2,0.6 -0.3,1.1 -0.4,1.5 -0.2,0.9 -0.8,2.6 -2.3,4.1 -0.7,0.7 -1.7,1.6 -2.7,1.4 -1.4,-0.5 -1.8,-4.3 -1.8,-4.6 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ssccccccccccccccscscs"/>
+      <path id="path10-7" d="m 286.98125,448.86875 c 1.9,-0.1 6.1,1.2 6.8,2.8 0.6,1.3 0.3,-0.4 -0.7,0.8 -0.6,0.2 -1.5,0.6 -2.6,1.1 -2.5,1 -3,1.1 -3.9,1.8 -1,0.7 -1.7,1.6 -2,2 -0.3,0.4 -0.7,0.9 -1.1,1.6 l -0.3,0.6 c -0.1,0.2 -0.2,0.3 -0.3,0.5 -0.7,2.3 -1.8,4.6 -1.4,6.8 v 0.6 0.6 c -0.6,1.2 0.9,0.9 1.2,1.9 0.3,1.3 0,2.3 -0.1,3.6 -0.1,0.2 -0.1,0.4 -0.2,0.6 -0.6,1.8 -1.4,2.5 -1.4,2.5 -0.2,0.2 -0.5,0.5 -1,0.8 -0.2,0.1 -0.3,0.2 -0.5,0.3 -2.9,0.9 -4.2,-2.4 -4.8,-4.5 -0.1,-0.2 -0.1,-0.5 -0.2,-0.7 -0.2,-1 -0.2,-2 0.4,-2.5 0.1,-0.1 0.3,-0.2 0.4,-0.3 0.1,-0.1 0.2,-0.2 0.3,-0.4 -1,-3.1 -0.2,-6 0.2,-8.9 0,-0.2 0.1,-0.4 0.1,-0.6 0.2,-1.4 0.2,-1.8 0.8,-3.2 0.2,-0.5 0.9,-2.6 2.8,-4.5 3.1,-3.4 5.5,-3.2 7.5,-3.3 z" class="skin penis" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccscscccccccccccccscccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Flaccid_0" inkscape:label="Flaccid_0" style="display:inline">
+      <path id="path6" d="m 285.17635,460.26374 c 0,0.1 0.2,0.1 0.3,0.1 1.1,0.1 1.1,1.7 0.8,2.7 0,0.1 0,0.2 -0.1,0.3 -0.3,1.2 -0.8,1.7 -0.8,1.7 -0.1,0.1 -0.5,0.5 -0.9,0.6 -0.1,0 -0.2,0.1 -0.4,0.1 -1.5,-0.1 -2.2,-1.5 -2.4,-2.8 0,-0.1 -0.1,-0.3 -0.1,-0.4 -0.1,-0.6 -0.11527,-1.2161 0.2,-1.5 l 0.2,-0.2 0.2,-0.2" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccscc"/>
+      <path id="path8" d="m 281.87635,458.56374 v -0.8 c 0,-0.2 0,-0.8 0.2,-1.7 0.1,-0.5 0.2,-1 0.2,-1.1 0.6,-2.8 2.6,-4.3 2.6,-4.3 0.2,-0.2 0.8,-0.5 1,-0.7 0.5,-0.3 1.9,-1 3.9,-0.3 0.3,0.1 2.2,0.9 2.6,1.4 0.4,0.7 -0.3,-0.4 -0.4,-0.3 -0.1,0.1 -0.2,0.1 -0.3,0.3 -0.2,0.2 -0.2,0.4 -0.3,0.5 -0.2,0.4 -0.6,0.5 -1.1,0.7 -0.7,0.3 -1.2,0.5 -1.7,0.8 -0.3,0.3 -0.6,0.5 -1,1.1 -0.4,0.5 -0.6,0.8 -0.8,1.2 -0.1,0.1 -0.2,0.5 -0.4,1.1 -0.1,0.4 -0.2,0.5 -0.2,0.7 -0.1,0.3 -0.2,0.6 -0.2,0.8 -0.1,0.5 -0.4,1.4 -1.3,2.2 -0.4,0.4 -0.9,0.9 -1.5,0.7 -1,0 -1.3,-2.1 -1.3,-2.3 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ssccccccscccccccccccs"/>
+      <path id="path10" d="m 288.57635,449.56374 c 1,-0.1 3.3,0.7 3.7,1.5 0.3,0.7 0.2,-0.2 -0.4,0.4 -0.3,0.1 -0.8,0.3 -1.4,0.6 -1.4,0.6 -1.6,0.6 -2.1,1 -0.5,0.4 -0.9,0.9 -1.1,1.1 -0.2,0.2 -0.4,0.5 -0.6,0.9 -0.1,0.1 -0.1,0.2 -0.2,0.3 -0.1,0.1 -0.1,0.2 -0.1,0.3 -0.4,1.3 -1,2.5 -0.8,3.7 v 0.3 0.3 c -0.3,0.6 0.5,0.5 0.7,1 0.1,0.7 0,1.3 -0.1,1.9 0,0.1 -0.1,0.2 -0.1,0.3 -0.3,1 -0.8,1.4 -0.8,1.4 -0.1,0.1 -0.3,0.3 -0.6,0.5 -0.1,0.1 -0.2,0.1 -0.3,0.1 -1.6,0.5 -2.3,-1.3 -2.6,-2.5 0,-0.1 -0.1,-0.3 -0.1,-0.4 -0.1,-0.5 -0.1,-1.1 0.2,-1.4 l 0.2,-0.2 c 0.1,-0.1 0.1,-0.1 0.1,-0.2 -0.5,-1.7 -0.1,-3.3 0.1,-4.9 0,-0.1 0,-0.2 0.1,-0.3 0.1,-0.8 0.1,-1 0.4,-1.7 0.1,-0.3 0.5,-1.4 1.5,-2.4 1.9,-1.6 3.2,-1.5 4.3,-1.6 z" class="skin penis" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccsscsccccccccccccsscccccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Penis_Addon_" inkscape:label="Penis_Addon_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Chastity_Cage_6" inkscape:label="Chastity_Cage_6" style="display:inline">
+      <ellipse id="ellipse9-5" ry="2.5001018" rx="14.00057" cy="563.46527" cx="223.78876" transform="rotate(-0.51731229)"/>
+      <ellipse id="ellipse11-6" ry="2.3000937" rx="13.800563" cy="564.05988" cx="223.18347" class="steel_chastity" transform="rotate(-0.51731229)"/>
+      <ellipse transform="rotate(-17.980187)" cx="109.78678" cy="517.46411" rx="2.100081" ry="18.100698" id="ellipse17-0"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="109.40092" cy="516.70447" rx="1.9000733" ry="18.100698" id="ellipse19-46"/>
+      <ellipse transform="rotate(-26.992949)" cx="15.549369" cy="527.31976" rx="2.5001056" ry="20.900883" id="ellipse23-6"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="15.118171" cy="526.62225" rx="2.300097" ry="20.700874" id="ellipse25-75"/>
+      <ellipse transform="rotate(-54.237185)" cx="-253.00562" cy="471.60324" rx="2.4998667" ry="21.798836" id="ellipse29-8"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-253.51361" cy="470.8566" rx="2.2998772" ry="21.598848" id="ellipse31-72"/>
+      <ellipse transform="rotate(-80.822144)" cx="-465.65756" cy="305.72757" rx="2.500005" ry="20.900042" id="ellipse35-29"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-466.23138" cy="304.94336" rx="2.3000047" ry="20.700043" id="ellipse37-9"/>
+      <ellipse transform="rotate(-0.44003305)" cx="223.67113" cy="546.64923" rx="2.5000737" ry="19.100563" id="ellipse41-0"/>
+      <ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="223.07713" cy="545.84473" rx="2.3000679" ry="18.900557" id="ellipse43-2"/>
+      <path id="path49-21" d="m 249.25,544.3 c -1,10.5 -6.2,18.5 -7.4,18.1 -1.2,-0.2 1.9,-8.4 2.7,-18.7 1,-10.3 -0.8,-18.5 0.8,-18.3 1.2,-0.1 4.9,8.3 3.9,18.9 z" inkscape:connector-curvature="0"/>
+      <path id="path51-5" d="m 248.65,543.5 c -0.8,10.5 -5.8,18.3 -6.8,18.1 -1.2,-0.2 1.9,-8.2 2.5,-18.5 0.8,-10.3 -1,-18.3 0.4,-18.1 1,-0.2 4.7,8.1 3.9,18.5 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-1" d="m 211.85,544.6 c 0.8,9.9 3.7,17.5 2.5,18.7 -1,1.2 -6.6,-6 -7.6,-18.3 -1,-12.1 3.5,-21.8 4.7,-20.9 1.2,1.1 -0.6,10.6 0.4,20.5 z" inkscape:connector-curvature="0"/>
+      <path id="path59-49" d="m 212.45,544.6 c 0.8,9.7 3.5,17 2.5,18.1 -1,1.2 -6.2,-6 -7.2,-17.5 -1,-11.7 3.3,-21 4.3,-20.1 1.1,0.6 -0.6,9.8 0.4,19.5 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="167.35036" cy="504.03577" rx="1.7999737" ry="16.799755" id="ellipse63-7"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="167.05159" cy="503.56573" rx="1.5999768" ry="16.599758" id="ellipse65-5"/>
+      <ellipse transform="rotate(-0.51731)" cx="222.5524" cy="545.35284" rx="18.700764" ry="2.5001018" id="ellipse69-7"/>
+      <ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="221.74893" cy="545.74579" rx="18.500753" ry="2.3000937" id="ellipse71-0"/>
+      <ellipse transform="rotate(-41.042549)" cx="-125.04724" cy="515.07556" rx="2.4999266" ry="21.599365" id="ellipse75-8"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-125.60838" cy="514.41785" rx="2.2999322" ry="21.39937" id="ellipse77-04"/>
+      <ellipse transform="rotate(-68.216677)" cx="-372.95468" cy="397.76074" rx="2.5000165" ry="21.800142" id="ellipse81-9"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-373.46225" cy="396.95178" rx="2.3000152" ry="21.600143" id="ellipse83-61"/>
+      <path id="path85-04" d="m 282.35,452.3 c 0.2,0.4 -11.5,3.1 -25.3,12.3 -4.9,3.3 -10.3,6.8 -15.6,13.4 -6.8,8.6 -9.4,16.8 -10.1,18.9 -1.8,5.7 -2.3,11.5 -2.7,15.6 -0.4,4.5 -0.8,11.3 -1,11.3 0,0 0,0 0,-0.2 v 0 l 0.6,0.2 c 0,0.2 -0.8,0.4 -1.2,0.2 -0.8,-0.4 -0.8,-1.6 -1,-1.9 -0.6,-5.8 -0.4,-8 -0.4,-8 -0.6,-3.3 0,-6.2 1.2,-12.3 0.6,-2.9 1.6,-8.2 4.3,-14.4 1.6,-3.7 4.1,-8.6 8.4,-13.8 3.9,-3.5 10.1,-8.4 18.1,-12.7 13,-6.7 24.5,-9 24.7,-8.6 z" inkscape:connector-curvature="0"/>
+      <path id="path87-2" d="m 282.55,452.3 c 0.2,0.4 -7.8,2.1 -18.3,7.4 -1.4,0.6 -2.7,1.4 -4.5,2.3 -4.7,2.5 -15.2,8.6 -22.4,20.5 -0.4,0.4 -1.4,2.1 -2.5,4.5 -9.9,20.1 -5.8,40.1 -7.6,40.3 -0.6,0 -1.2,-1.8 -1.4,-2.9 -0.8,-3.1 -3.3,-12.9 2.9,-31.2 1.2,-3.3 2.9,-7.8 5.7,-12.9 3.1,-4.5 6,-8 8.4,-10.1 0.2,-0.2 0.2,-0.2 0.4,-0.4 11.7,-11.5 31.2,-16.2 31.2,-16.2 4.2,-1.1 8.1,-1.7 8.1,-1.3 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809822)" cx="-516.20825" cy="248.2253" rx="2.5000763" ry="19.700602" id="ellipse91-2"/>
+      <ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-516.70093" cy="247.56767" rx="2.3000703" ry="19.500595" id="ellipse93-05"/>
+      <ellipse transform="rotate(-1.8914744)" cx="269.29996" cy="461.05957" rx="1.8000808" ry="15.6007" id="ellipse97-2"/>
+      <ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="268.91949" cy="460.44696" rx="1.6000718" ry="15.400691" id="ellipse99-9"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_5" inkscape:label="Chastity_Cage_5" style="display:inline">
+      <ellipse id="ellipse9-4" ry="2.1000855" rx="11.400464" cy="541.96863" cx="235.52405" transform="rotate(-0.51731229)"/>
+      <ellipse id="ellipse11-05" ry="1.9000775" rx="11.200457" cy="542.46442" cx="235.01974" class="steel_chastity" transform="rotate(-0.51731229)"/>
+      <ellipse transform="rotate(-17.980187)" cx="115.03899" cy="516.97107" rx="1.7000656" ry="14.700566" id="ellipse17-69"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="114.71255" cy="516.34155" rx="1.6000618" ry="14.700566" id="ellipse19-22"/>
+      <ellipse transform="rotate(-26.992949)" cx="23.069269" cy="527.79224" rx="2.1000886" ry="16.900713" id="ellipse23-7"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="22.687128" cy="527.2511" rx="1.9000802" ry="16.700706" id="ellipse25-54"/>
+      <ellipse transform="rotate(-54.237185)" cx="-241.71759" cy="476.30286" rx="2.0998878" ry="17.699057" id="ellipse29-12"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-242.1998" cy="475.69751" rx="1.8998986" ry="17.499067" id="ellipse31-8"/>
+      <ellipse transform="rotate(-80.822144)" cx="-452.28793" cy="315.5076" rx="2.1000042" ry="16.900034" id="ellipse35-6"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-452.80457" cy="314.9664" rx="1.9000039" ry="16.700035" id="ellipse37-80"/>
+      <ellipse transform="rotate(-0.44003305)" cx="235.55316" cy="528.23846" rx="2.1000619" ry="15.500457" id="ellipse41-51"/>
+      <ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="235.05798" cy="527.53479" rx="1.900056" ry="15.300451" id="ellipse43-10"/>
+      <path id="path49-0" d="m 256.88999,525.89899 c -0.8,8.5 -5.1,15 -6,14.7 -0.9,-0.2 1.6,-6.8 2.2,-15.2 0.8,-8.4 -0.6,-15 0.6,-14.9 1,0.1 4,6.9 3.2,15.4 z" inkscape:connector-curvature="0"/>
+      <path id="path51-6" d="m 256.48999,525.29899 c -0.6,8.5 -4.7,14.9 -5.5,14.7 -0.9,-0.2 1.6,-6.6 2.1,-15 0.6,-8.4 -0.8,-14.9 0.3,-14.7 0.7,-0.2 3.7,6.6 3.1,15 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-2" d="m 226.58999,526.19899 c 0.6,8.1 3,14.2 2.1,15.2 -0.8,0.9 -5.4,-4.9 -6.2,-14.9 -0.8,-9.8 2.8,-17.7 3.8,-16.9 0.9,0.8 -0.5,8.5 0.3,16.6 z" inkscape:connector-curvature="0"/>
+      <path id="path59-58" d="m 227.08999,526.19899 c 0.6,7.9 2.8,13.7 2.1,14.7 -0.7,1 -5.1,-4.9 -5.8,-14.2 -0.8,-9.5 2.7,-17.1 3.5,-16.3 0.8,0.5 -0.6,7.9 0.2,15.8 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="170.42334" cy="503.39645" rx="1.3999796" ry="13.599803" id="ellipse63-847"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="170.20547" cy="502.93967" rx="1.299981" ry="13.399805" id="ellipse65-2"/>
+      <ellipse transform="rotate(-0.51731)" cx="234.55676" cy="527.25861" rx="15.20062" ry="2.1000855" id="ellipse69-6"/>
+      <ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="233.85391" cy="527.55292" rx="15.000611" ry="1.9000775" id="ellipse71-2"/>
+      <ellipse transform="rotate(-41.042549)" cx="-115.63295" cy="517.47675" rx="2.0999382" ry="17.499485" id="ellipse75-9"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-116.05816" cy="516.92462" rx="1.8999441" ry="17.399488" id="ellipse77-0"/>
+      <ellipse transform="rotate(-68.216677)" cx="-360.61716" cy="404.87231" rx="2.1000137" ry="17.700117" id="ellipse81-3"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-360.99899" cy="404.15442" rx="1.9000125" ry="17.500114" id="ellipse83-11"/>
+      <path id="path85-0" d="m 283.78999,451.29899 c 0.2,0.3 -9.3,2.5 -20.5,10 -3.9,2.7 -8.4,5.5 -12.6,10.9 -5.5,7 -7.6,13.6 -8.2,15.3 -1.4,4.6 -1.9,9.3 -2.2,12.6 -0.3,3.6 -0.6,9.2 -0.8,9.2 0,0 0,0 0,-0.2 v 0 l 0.5,0.2 c 0,0.2 -0.6,0.3 -0.9,0.2 -0.6,-0.3 -0.6,-1.3 -0.8,-1.6 -0.5,-4.7 -0.3,-6.5 -0.3,-6.5 -0.5,-2.7 0,-5.1 0.9,-10 0.5,-2.4 1.3,-6.6 3.5,-11.7 1.3,-3 3.3,-7 6.8,-11.2 3.2,-2.8 8.2,-6.8 14.7,-10.3 10.4,-5.3 19.7,-7.2 19.9,-6.9 z" inkscape:connector-curvature="0"/>
+      <path id="path87-3" d="m 283.98999,451.29899 c 0.2,0.3 -6.3,1.7 -14.9,6 -1.1,0.5 -2.2,1.1 -3.6,1.9 -3.8,2.1 -12.3,7 -18.2,16.6 -0.3,0.3 -1.1,1.7 -2.1,3.6 -8.1,16.3 -4.7,32.5 -6.2,32.7 -0.5,0 -0.9,-1.4 -1.1,-2.4 -0.6,-2.5 -2.7,-10.4 2.4,-25.3 0.9,-2.7 2.4,-6.3 4.6,-10.4 2.5,-3.6 4.9,-6.5 6.8,-8.2 0.2,-0.2 0.2,-0.2 0.3,-0.3 9.5,-9.3 25.3,-13.1 25.3,-13.1 3.5,-0.9 6.7,-1.4 6.7,-1.1 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809822)" cx="-500.91162" cy="259.28619" rx="2.100064" ry="16.000488" id="ellipse91-0"/>
+      <ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-501.42453" cy="258.74768" rx="1.900058" ry="15.800483" id="ellipse93-39"/>
+      <ellipse transform="rotate(-1.8914744)" cx="270.36884" cy="460.1936" rx="1.4000628" ry="12.600566" id="ellipse97-9"/>
+      <ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="270.08469" cy="459.78339" rx="1.3000582" ry="12.500561" id="ellipse99-6"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_4" inkscape:label="Chastity_Cage_4" style="display:inline">
+      <ellipse id="ellipse9-1" ry="1.6000652" rx="8.8003588" cy="520.67523" cx="252.42801" transform="rotate(-0.51731229)"/>
+      <ellipse id="ellipse11-0" ry="1.5000612" rx="8.7003546" cy="521.0719" cx="252.02472" class="steel_chastity" transform="rotate(-0.51731229)"/>
+      <ellipse transform="rotate(-17.980187)" cx="125.4729" cy="517.88269" rx="1.3000501" ry="11.300436" id="ellipse17-4"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="125.20676" cy="517.48279" rx="1.2000463" ry="11.300436" id="ellipse19-4"/>
+      <ellipse transform="rotate(-26.992949)" cx="35.382034" cy="530.53302" rx="1.6000676" ry="13.000548" id="ellipse23-47"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="35.150055" cy="530.14703" rx="1.5000633" ry="12.900544" id="ellipse25-6"/>
+      <ellipse transform="rotate(-54.237185)" cx="-227.30109" cy="485.23416" rx="1.5999147" ry="13.599275" id="ellipse29-1"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-227.65594" cy="484.66739" rx="1.49992" ry="13.49928" id="ellipse31-7"/>
+      <ellipse transform="rotate(-80.822144)" cx="-438.15033" cy="330.48074" rx="1.6000032" ry="13.000027" id="ellipse35-9"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-438.50885" cy="329.97794" rx="1.5000031" ry="12.900026" id="ellipse37-6"/>
+      <ellipse transform="rotate(-0.44003305)" cx="252.6046" cy="509.92383" rx="1.6000472" ry="11.900351" id="ellipse41-78"/>
+      <ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="252.20842" cy="509.42105" rx="1.5000442" ry="11.800348" id="ellipse43-5"/>
+      <path id="path49-5" d="m 269.90039,507.65445 c -0.6,6.6 -3.9,11.6 -4.6,11.3 -0.7,-0.1 1.2,-5.2 1.7,-11.7 0.6,-6.5 -0.5,-11.6 0.5,-11.5 0.7,0 3,5.3 2.4,11.9 z" inkscape:connector-curvature="0"/>
+      <path id="path51-97" d="m 269.50039,507.15445 c -0.5,6.6 -3.7,11.5 -4.3,11.3 -0.7,-0.1 1.2,-5.1 1.6,-11.6 0.5,-6.5 -0.6,-11.5 0.2,-11.3 0.7,-0.1 3,5.1 2.5,11.6 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-88" d="m 246.50039,507.85445 c 0.5,6.2 2.3,11 1.6,11.7 -0.6,0.7 -4.1,-3.8 -4.8,-11.5 -0.6,-7.6 2.2,-13.6 2.9,-13 0.8,0.6 -0.3,6.6 0.3,12.8 z" inkscape:connector-curvature="0"/>
+      <path id="path59-3" d="m 246.80039,507.85445 c 0.5,6.1 2.2,10.6 1.6,11.3 -0.6,0.7 -3.9,-3.8 -4.5,-11 -0.6,-7.3 2.1,-13.2 2.7,-12.5 0.7,0.4 -0.4,6.1 0.2,12.2 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="178.68761" cy="503.60449" rx="1.099984" ry="10.499847" id="ellipse63-89"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="178.55089" cy="503.26062" rx="0.99998546" ry="10.399848" id="ellipse65-6"/>
+      <ellipse transform="rotate(-0.51731)" cx="251.73035" cy="509.36749" rx="11.700477" ry="1.6000652" id="ellipse69-3"/>
+      <ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="251.22815" cy="509.56305" rx="11.600473" ry="1.5000612" id="ellipse71-38"/>
+      <ellipse transform="rotate(-41.042549)" cx="-102.11347" cy="523.11237" rx="1.5999529" ry="13.499603" id="ellipse75-04"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-102.40156" cy="522.6637" rx="1.4999559" ry="13.399606" id="ellipse77-8"/>
+      <ellipse transform="rotate(-68.216677)" cx="-346.17831" cy="416.71124" rx="1.6000105" ry="13.60009" id="ellipse81-8"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-346.53287" cy="416.18054" rx="1.5000099" ry="13.500089" id="ellipse83-9"/>
+      <path id="path85-7" d="m 290.60039,450.05445 c 0.1,0.2 -7.2,1.9 -15.8,7.7 -3,2.1 -6.5,4.3 -9.7,8.4 -4.3,5.4 -5.8,10.5 -6.3,11.8 -1.1,3.5 -1.5,7.2 -1.7,9.7 -0.2,2.8 -0.5,7.1 -0.6,7.1 0,0 0,0 0,-0.1 v 0 l 0.4,0.1 c 0,0.1 -0.5,0.2 -0.7,0.1 -0.5,-0.2 -0.5,-1 -0.6,-1.2 -0.4,-3.7 -0.2,-5 -0.2,-5 -0.4,-2.1 0,-3.9 0.7,-7.7 0.4,-1.8 1,-5.1 2.7,-9 1,-2.3 2.6,-5.4 5.2,-8.7 2.4,-2.2 6.3,-5.2 11.3,-7.9 8,-4 15.2,-5.5 15.3,-5.3 z" inkscape:connector-curvature="0"/>
+      <path id="path87-7" d="m 290.70039,450.05445 c 0.1,0.2 -4.9,1.3 -11.5,4.6 -0.9,0.4 -1.7,0.9 -2.8,1.5 -2.9,1.6 -9.5,5.4 -14,12.8 -0.2,0.2 -0.9,1.3 -1.6,2.8 -6.2,12.5 -3.7,25.1 -4.8,25.2 -0.4,0 -0.7,-1.1 -0.9,-1.8 -0.5,-1.9 -2.1,-8 1.8,-19.5 0.7,-2.1 1.8,-4.9 3.5,-8 1.9,-2.8 3.8,-5 5.2,-6.3 0.1,-0.1 0.1,-0.1 0.2,-0.2 7.3,-7.2 19.5,-10.1 19.5,-10.1 3,-0.8 5.4,-1.2 5.4,-1 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809822)" cx="-485.53848" cy="275.55014" rx="1.6000489" ry="12.300376" id="ellipse91-4"/>
+      <ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-485.8714" cy="275.1265" rx="1.5000458" ry="12.200373" id="ellipse93-3"/>
+      <ellipse transform="rotate(-1.8914744)" cx="276.81354" cy="459.26169" rx="1.1000494" ry="9.7004356" id="ellipse97-3"/>
+      <ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="276.6257" cy="458.95389" rx="1.0000449" ry="9.6004314" id="ellipse99-0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_3" inkscape:label="Chastity_Cage_3" style="display:inline">
+      <ellipse id="ellipse9-7" ry="1.300053" rx="7.2002935" cy="507.01486" cx="260.22626" transform="rotate(-0.51733349)"/>
+      <ellipse id="ellipse11-27" ry="1.2000489" rx="7.1002893" cy="507.31244" cx="259.92389" class="steel_chastity" transform="rotate(-0.51733349)"/>
+      <ellipse transform="rotate(-17.980187)" cx="129.64604" cy="517.00818" rx="1.1000425" ry="9.3003588" id="ellipse17-6"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="129.44194" cy="516.61993" rx="1.0000386" ry="9.3003588" id="ellipse19-1"/>
+      <ellipse transform="rotate(-26.992949)" cx="41.019997" cy="530.41113" rx="1.3000548" ry="10.700452" id="ellipse23-1"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="40.770897" cy="530.04755" rx="1.2000507" ry="10.600448" id="ellipse25-5"/>
+      <ellipse transform="rotate(-54.237185)" cx="-219.3932" cy="488.16318" rx="1.2999306" ry="11.199403" id="ellipse29-4"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-219.66667" cy="487.7753" rx="1.199936" ry="11.099408" id="ellipse31-90"/>
+      <ellipse transform="rotate(-80.822144)" cx="-429.20181" cy="336.93039" rx="1.3000026" ry="10.700022" id="ellipse35-1"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-429.53076" cy="336.53275" rx="1.2000026" ry="10.600022" id="ellipse37-7"/>
+      <ellipse transform="rotate(-0.44004565)" cx="260.47058" cy="498.15396" rx="1.3000383" ry="9.8002892" id="ellipse41-1"/>
+      <ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="260.1734" cy="497.75186" rx="1.2000355" ry="9.7002859" id="ellipse43-1"/>
+      <path id="path49-7" d="m 275.275,495.825 c -0.5,5.4 -3.2,9.5 -3.8,9.3 -0.6,-0.1 1,-4.3 1.4,-9.6 0.5,-5.3 -0.4,-9.5 0.4,-9.4 0.6,0 2.5,4.3 2,9.7 z" inkscape:connector-curvature="0"/>
+      <path id="path51-7" d="m 274.975,495.425 c -0.4,5.4 -3,9.4 -3.5,9.3 -0.6,-0.1 1,-4.2 1.3,-9.5 0.4,-5.3 -0.5,-9.4 0.2,-9.3 0.5,-0.1 2.4,4.2 2,9.5 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-6" d="m 256.075,496.025 c 0.4,5.1 1.9,9 1.3,9.6 -0.5,0.6 -3.4,-3.1 -3.9,-9.4 -0.5,-6.2 1.8,-11.2 2.4,-10.7 0.6,0.5 -0.3,5.4 0.2,10.5 z" inkscape:connector-curvature="0"/>
+      <path id="path59-5" d="m 256.375,496.025 c 0.4,5 1.8,8.7 1.3,9.3 -0.5,0.6 -3.2,-3.1 -3.7,-9 -0.5,-6 1.7,-10.8 2.2,-10.3 0.6,0.3 -0.3,5 0.2,10 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="181.56415" cy="502.50012" rx="0.89998686" ry="8.5998755" id="ellipse63-3"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="181.42993" cy="502.25079" rx="0.79998839" ry="8.499876" id="ellipse65-9"/>
+      <ellipse transform="rotate(-0.51733119)" cx="259.6106" cy="497.70834" rx="9.6003914" ry="1.300053" id="ellipse69-8"/>
+      <ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="259.20819" cy="497.90512" rx="9.5003872" ry="1.2000489" id="ellipse71-1"/>
+      <path id="path73-2" d="M 281.575,472.525" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-41.042549)" cx="-95.2099" cy="524.43323" rx="1.2999617" ry="11.099674" id="ellipse77-3"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-95.505165" cy="524.05786" rx="1.1999648" ry="10.999677" id="ellipse79-9"/>
+      <ellipse transform="rotate(-68.216677)" cx="-337.76065" cy="421.32883" rx="1.3000085" ry="11.200073" id="ellipse83-8"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-338.04218" cy="420.92136" rx="1.2000079" ry="11.100074" id="ellipse85-8"/>
+      <path id="path87-5" d="m 292.275,448.625 c 0.1,0.2 -5.9,1.6 -13,6.3 -2.5,1.7 -5.3,3.5 -8,6.9 -3.5,4.4 -4.8,8.6 -5.2,9.7 -0.9,2.9 -1.2,5.9 -1.4,8 -0.2,2.3 -0.4,5.8 -0.5,5.8 0,0 0,0 0,-0.1 v 0 c 0,0 0.3,0.1 0.3,0.1 0,0.1 -0.4,0.2 -0.6,0.1 -0.4,-0.2 -0.4,-0.8 -0.5,-1 -0.3,-3 -0.2,-4.1 -0.2,-4.1 -0.3,-1.7 0,-3.2 0.6,-6.3 0.3,-1.5 0.8,-4.2 2.2,-7.4 0.8,-1.9 2.1,-4.4 4.3,-7.1 2,-1.8 5.2,-4.3 9.3,-6.5 6.7,-3.4 12.6,-4.6 12.7,-4.4 z" inkscape:connector-curvature="0"/>
+      <path id="path89-0" d="m 292.375,448.625 c 0.1,0.2 -4,1.1 -9.4,3.8 -0.7,0.3 -1.4,0.7 -2.3,1.2 -2.4,1.3 -7.8,4.4 -11.5,10.5 -0.2,0.2 -0.7,1.1 -1.3,2.3 -5.1,10.3 -3,20.6 -3.9,20.7 -0.3,0 -0.6,-0.9 -0.7,-1.5 -0.4,-1.6 -1.7,-6.6 1.5,-16 0.6,-1.7 1.5,-4 2.9,-6.6 1.6,-2.3 3.1,-4.1 4.3,-5.2 0.1,-0.1 0.1,-0.1 0.2,-0.2 6,-5.9 16,-8.3 16,-8.3 2.2,-0.6 4.2,-0.9 4.2,-0.7 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path91-9" d="M 262.575,452.925" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path93-6" d="M 253.375,455.025" inkscape:connector-curvature="0"/>
+      <path id="path95-3" d="M 261.475,453.025" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path97-8" d="M 255.075,449.625" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809755)" cx="-475.63037" cy="282.90826" rx="1.3000398" ry="10.100309" id="ellipse101-6"/>
+      <ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-475.91144" cy="282.58267" rx="1.2000368" ry="10.000306" id="ellipse103-1"/>
+      <ellipse transform="rotate(-1.8915592)" cx="278.33359" cy="457.88177" rx="0.90004039" ry="8.0003595" id="ellipse107-5"/>
+      <ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="278.14319" cy="457.57538" rx="0.80003595" ry="7.9003549" id="ellipse109-9"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_2" inkscape:label="Chastity_Cage_2" style="display:inline">
+      <ellipse id="ellipse9-3" ry="0.80003262" rx="4.6001873" cy="490.9444" cx="267.79684" transform="rotate(-0.51733349)"/>
+      <ellipse id="ellipse11-2" ry="0.80003262" rx="4.6001873" cy="491.14282" cx="267.59525" class="steel_chastity" transform="rotate(-0.51733349)"/>
+      <ellipse transform="rotate(-17.980187)" cx="129.94711" cy="519.67291" rx="0.70002699" ry="6.100235" id="ellipse17-1"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="129.70938" cy="519.41577" rx="0.70002699" ry="6.0002313" id="ellipse19-5"/>
+      <ellipse transform="rotate(-26.992949)" cx="42.951714" cy="533.26959" rx="0.80003381" ry="6.9002914" id="ellipse23-4"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="42.74955" cy="533.06342" rx="0.80003381" ry="6.8002872" id="ellipse25-7"/>
+      <ellipse transform="rotate(-54.237185)" cx="-214.39348" cy="492.40952" rx="0.79995733" ry="7.199616" id="ellipse29-56"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-214.64661" cy="492.15811" rx="0.79995733" ry="7.199616" id="ellipse31-93"/>
+      <ellipse transform="rotate(-80.822144)" cx="-421.52307" cy="343.36212" rx="0.80000162" ry="7.0000143" id="ellipse35-4"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-421.71213" cy="343.17468" rx="0.80000162" ry="6.9000144" id="ellipse37-5"/>
+      <ellipse transform="rotate(-0.44004565)" cx="268.19629" cy="485.07492" rx="0.80002362" ry="6.4001889" id="ellipse41-5"/>
+      <ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="267.99811" cy="484.87354" rx="0.80002362" ry="6.3001862" id="ellipse43-4"/>
+      <path id="path49-4" d="m 279,482.7875 c -0.3,3.5 -2.1,6.1 -2.5,6.1 -0.4,-0.1 0.6,-2.8 0.9,-6.2 0.3,-3.5 -0.2,-6.2 0.2,-6.1 0.5,0 1.7,2.7 1.4,6.2 z" inkscape:connector-curvature="0"/>
+      <path id="path51-3" d="m 278.8,482.5875 c -0.3,3.5 -1.9,6.1 -2.3,6 -0.4,-0.1 0.6,-2.7 0.8,-6.2 0.3,-3.4 -0.3,-6.1 0.1,-6.1 0.4,0.1 1.7,2.8 1.4,6.3 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-8" d="m 266.5,482.9875 c 0.3,3.3 1.2,5.8 0.8,6.2 -0.4,0.4 -2.2,-2 -2.5,-6.1 -0.3,-4 1.1,-7.2 1.6,-6.9 0.4,0.3 -0.2,3.4 0.1,6.8 z" inkscape:connector-curvature="0"/>
+      <path id="path59-6" d="m 266.8,482.8875 c 0.3,3.2 1.2,5.7 0.8,6 -0.3,0.4 -2.1,-2 -2.4,-5.9 -0.3,-3.9 1.1,-7 1.5,-6.7 0.3,0.4 -0.3,3.4 0.1,6.6 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="180.00468" cy="505.48141" rx="0.59999132" ry="5.4999199" id="ellipse63-84"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="179.84734" cy="505.24936" rx="0.49999273" ry="5.4999199" id="ellipse65-3"/>
+      <ellipse transform="rotate(-0.51733119)" cx="267.35156" cy="484.94016" rx="6.2002525" ry="0.80003262" id="ellipse69-4"/>
+      <ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="267.14996" cy="485.13806" rx="6.2002525" ry="0.80003262" id="ellipse71-9"/>
+      <ellipse transform="rotate(-41.042549)" cx="-91.814835" cy="527.70331" rx="0.79997647" ry="7.1997881" id="ellipse75-0"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-91.98201" cy="527.42474" rx="0.79997647" ry="7.099791" id="ellipse77-68"/>
+      <ellipse transform="rotate(-68.216677)" cx="-331.52155" cy="426.40738" rx="0.80000526" ry="7.200047" id="ellipse81-2"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-331.67984" cy="426.07828" rx="0.80000526" ry="7.200047" id="ellipse83-6"/>
+      <path id="path85-6" d="m 290,452.2875 c 0.1,0.2 -3.8,1.1 -8.4,4.1 -1.6,1.1 -3.4,2.3 -5.2,4.5 -2.3,2.8 -3.1,5.6 -3.4,6.3 -0.6,1.9 -0.8,3.8 -0.9,5.2 -0.2,1.5 -0.3,3.7 -0.3,3.7 0,0 0,0 0,0 v 0 c 0,0 0.2,0 0.2,0.1 0,0 -0.2,0.1 -0.4,0 -0.2,-0.1 -0.3,-0.5 -0.3,-0.7 -0.2,-2 -0.1,-2.6 -0.1,-2.6 -0.2,-1.1 0,-2.1 0.4,-4.1 0.2,-1 0.5,-2.7 1.4,-4.8 0.5,-1.2 1.4,-2.9 2.8,-4.6 1.3,-1.2 3.3,-2.8 6.1,-4.2 4.2,-2.4 8.1,-3.1 8.1,-2.9 z" inkscape:connector-curvature="0"/>
+      <path id="path87-4" d="m 290.1,452.1875 c 0,0.1 -2.6,0.7 -6.1,2.5 -0.4,0.2 -0.9,0.4 -1.5,0.8 -1.5,0.9 -5,2.9 -7.5,6.8 -0.1,0.2 -0.4,0.7 -0.8,1.5 -3.3,6.7 -2,13.4 -2.6,13.4 -0.2,0 -0.4,-0.6 -0.5,-1 -0.3,-1 -1.1,-4.3 0.9,-10.4 0.4,-1.1 1,-2.6 1.9,-4.3 1,-1.5 2,-2.6 2.8,-3.4 0,0 0.1,-0.1 0.1,-0.1 3.9,-3.8 10.4,-5.4 10.4,-5.4 1.6,-0.3 2.9,-0.5 2.9,-0.4 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809755)" cx="-465.82806" cy="290.11841" rx="0.80002451" ry="6.5001988" id="ellipse91-5"/>
+      <ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-465.95081" cy="289.81277" rx="0.80002451" ry="6.5001988" id="ellipse93-0"/>
+      <ellipse transform="rotate(-1.8915592)" cx="275.63971" cy="461.45648" rx="0.60002697" ry="5.2002335" id="ellipse97-8"/>
+      <ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.54593" cy="461.25238" rx="0.50002247" ry="5.1002293" id="ellipse99-7"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_1" inkscape:label="Chastity_Cage_1" style="display:inline">
+      <ellipse id="ellipse9-6" ry="0.60002446" rx="3.3001344" cy="479.44797" cx="273.82657" transform="rotate(-0.51733349)"/>
+      <ellipse id="ellipse11-1" ry="0.50002038" rx="3.2001305" cy="479.54684" cx="273.72546" class="steel_chastity" transform="rotate(-0.51733349)"/>
+      <ellipse transform="rotate(-17.980187)" cx="132.69135" cy="519.04468" rx="0.50001931" ry="4.3001661" id="ellipse17-9"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="132.53522" cy="518.90448" rx="0.50001931" ry="4.2001619" id="ellipse19-2"/>
+      <ellipse transform="rotate(-26.992949)" cx="46.941521" cy="533.22223" rx="0.60002536" ry="4.900207" id="ellipse23-2"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="46.810341" cy="533.04767" rx="0.5000211" ry="4.8002028" id="ellipse25-3"/>
+      <ellipse transform="rotate(-54.237185)" cx="-208.40569" cy="494.58987" rx="0.59996802" ry="5.0997276" id="ellipse29-5"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-208.50229" cy="494.41287" rx="0.49997333" ry="5.0997276" id="ellipse31-9"/>
+      <ellipse transform="rotate(-80.822144)" cx="-414.28348" cy="348.33478" rx="0.60000128" ry="4.9000101" id="ellipse35-2"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-414.40549" cy="348.16217" rx="0.50000101" ry="4.9000101" id="ellipse37-8"/>
+      <ellipse transform="rotate(-0.44004565)" cx="274.2977" cy="475.17117" rx="0.60001773" ry="4.5001326" id="ellipse41-7"/>
+      <ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="274.09903" cy="474.97028" rx="0.50001472" ry="4.4001298" id="ellipse43-3"/>
+      <path id="path49-2" d="m 282.925,472.9375 c -0.2,2.5 -1.5,4.3 -1.7,4.3 -0.3,0 0.4,-1.9 0.6,-4.4 0.2,-2.4 -0.2,-4.3 0.2,-4.3 0.2,0 1.1,1.9 0.9,4.4 z" inkscape:connector-curvature="0"/>
+      <path id="path51-9" d="m 282.725,472.7375 c -0.2,2.5 -1.4,4.3 -1.6,4.2 -0.3,0 0.4,-1.9 0.6,-4.3 0.2,-2.4 -0.2,-4.3 0.1,-4.3 0.3,0 1.1,2 0.9,4.4 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57-9" d="m 274.125,473.0375 c 0.2,2.3 0.9,4.1 0.6,4.4 -0.2,0.3 -1.6,-1.4 -1.8,-4.3 -0.2,-2.8 0.8,-5.1 1.1,-4.9 0.3,0.2 -0.1,2.4 0.1,4.8 z" inkscape:connector-curvature="0"/>
+      <path id="path59-4" d="m 274.325,473.0375 c 0.2,2.3 0.8,4 0.6,4.2 -0.2,0.3 -1.5,-1.4 -1.7,-4.1 -0.2,-2.7 0.8,-4.9 1,-4.7 0.3,0.1 -0.2,2.3 0.1,4.6 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="181.5271" cy="504.76035" rx="0.39999419" ry="3.8999434" id="ellipse63-8"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="181.45718" cy="504.53781" rx="0.39999419" ry="3.8999434" id="ellipse65-4"/>
+      <ellipse transform="rotate(-0.51733119)" cx="273.56509" cy="475.14505" rx="4.4001794" ry="0.60002446" id="ellipse69-0"/>
+      <ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="273.36389" cy="475.34351" rx="4.3001757" ry="0.50002038" id="ellipse71-3"/>
+      <ellipse transform="rotate(-41.042549)" cx="-86.744507" cy="528.60522" rx="0.59998238" ry="4.9998531" id="ellipse75"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-86.951141" cy="528.47955" rx="0.49998531" ry="4.9998531" id="ellipse77-6"/>
+      <ellipse transform="rotate(-68.216677)" cx="-324.80972" cy="429.86664" rx="0.60000396" ry="5.1000333" id="ellipse81"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-324.91003" cy="429.63513" rx="0.50000328" ry="5.1000333" id="ellipse83-1"/>
+      <path id="path85" d="m 290.725,451.4375 c 0,0.1 -2.7,0.7 -5.9,2.9 -1.2,0.8 -2.4,1.6 -3.6,3.1 -1.6,2 -2.2,3.9 -2.4,4.4 -0.4,1.3 -0.5,2.7 -0.6,3.6 -0.1,1.1 -0.2,2.6 -0.2,2.6 0,0 0,0 0,0 v 0 c 0,0 0.1,0 0.1,0.1 0,0 -0.2,0.1 -0.3,0 -0.2,-0.1 -0.2,-0.3 -0.2,-0.5 -0.2,-1.4 -0.1,-1.9 -0.1,-1.9 -0.1,-0.8 0,-1.5 0.3,-2.9 0.1,-0.7 0.4,-1.9 1,-3.4 0.4,-0.9 1,-2 1.9,-3.2 0.9,-0.8 2.4,-2 4.3,-3 2.9,-1.4 5.6,-1.9 5.7,-1.8 z" inkscape:connector-curvature="0"/>
+      <path id="path87-0" d="m 290.725,451.3375 c 0,0.1 -1.8,0.5 -4.3,1.7 -0.3,0.2 -0.6,0.3 -1.1,0.5 -1.1,0.6 -3.5,2 -5.3,4.8 -0.1,0.1 -0.3,0.5 -0.6,1.1 -2.3,4.7 -1.4,9.4 -1.8,9.4 -0.1,0 -0.3,-0.4 -0.3,-0.7 -0.2,-0.7 -0.8,-3 0.7,-7.3 0.3,-0.8 0.7,-1.8 1.3,-3 0.7,-1.1 1.4,-1.9 1.9,-2.4 0,0 0.1,-0.1 0.1,-0.1 2.7,-2.7 7.3,-3.8 7.3,-3.8 1.2,-0.1 2.1,-0.2 2.1,-0.2 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809755)" cx="-457.5112" cy="295.76151" rx="0.60001838" ry="4.6001406" id="ellipse91"/>
+      <ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-457.65686" cy="295.57602" rx="0.50001532" ry="4.6001406" id="ellipse93"/>
+      <ellipse transform="rotate(-1.8915592)" cx="276.09088" cy="460.72162" rx="0.40001798" ry="3.6001616" id="ellipse97"/>
+      <ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.99527" cy="460.51865" rx="0.40001798" ry="3.6001616" id="ellipse99"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Chastity_Cage_0" inkscape:label="Chastity_Cage_0" style="display:inline">
+      <ellipse id="ellipse9" ry="0.30001223" rx="1.8000734" cy="467.29907" cx="279.54913" transform="rotate(-0.51733349)"/>
+      <ellipse id="ellipse11" ry="0.30001223" rx="1.8000734" cy="467.39847" cx="279.54852" class="steel_chastity" transform="rotate(-0.51733349)"/>
+      <ellipse transform="rotate(-17.980187)" cx="134.75592" cy="518.57367" rx="0.30001158" ry="2.3000886" id="ellipse17"/>
+      <ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="134.67969" cy="518.55194" rx="0.30001158" ry="2.3000886" id="ellipse19"/>
+      <ellipse transform="rotate(-26.992949)" cx="50.34901" cy="533.17877" rx="0.30001268" ry="2.6001096" id="ellipse23"/>
+      <ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="50.286343" cy="533.13831" rx="0.30001268" ry="2.6001096" id="ellipse25"/>
+      <ellipse transform="rotate(-54.237185)" cx="-202.58504" cy="496.51791" rx="0.29998401" ry="2.7998507" id="ellipse29"/>
+      <ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-202.6292" cy="496.42209" rx="0.29998401" ry="2.699856" id="ellipse31"/>
+      <ellipse transform="rotate(-80.822144)" cx="-406.91" cy="353.02335" rx="0.30000064" ry="2.7000055" id="ellipse35"/>
+      <ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-406.96771" cy="352.9758" rx="0.30000064" ry="2.6000051" id="ellipse37"/>
+      <ellipse transform="rotate(-0.44004565)" cx="280.09009" cy="464.81555" rx="0.30000886" ry="2.4000709" id="ellipse41"/>
+      <ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="279.99078" cy="464.71503" rx="0.30000886" ry="2.4000709" id="ellipse43"/>
+      <path id="path49" d="m 286.3375,462.5375 c -0.1,1.3 -0.8,2.3 -0.9,2.3 -0.2,0 0.2,-1.1 0.3,-2.4 0.1,-1.3 -0.1,-2.3 0.1,-2.3 0.2,0 0.7,1.1 0.5,2.4 z" inkscape:connector-curvature="0"/>
+      <path id="path932" d="m 286.3375,462.4375 c -0.1,1.3 -0.7,2.3 -0.9,2.3 -0.1,0 0.2,-1 0.3,-2.4 0.1,-1.3 -0.1,-2.3 0,-2.3 0.2,0.1 0.7,1.1 0.6,2.4 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path57" d="m 281.6375,462.6375 c 0.1,1.3 0.5,2.2 0.3,2.4 -0.1,0.1 -0.8,-0.8 -1,-2.3 -0.1,-1.5 0.4,-2.8 0.6,-2.6 0.2,0 0,1.2 0.1,2.5 z" inkscape:connector-curvature="0"/>
+      <path id="path59" d="m 281.7375,462.6375 c 0.1,1.2 0.5,2.2 0.3,2.3 -0.1,0.1 -0.8,-0.8 -0.9,-2.2 -0.1,-1.5 0.4,-2.7 0.6,-2.5 0.1,0 -0.2,1.2 0,2.4 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-12.809092)" cx="182.3781" cy="504.23175" rx="0.1999971" ry="2.0999694" id="ellipse63"/>
+      <ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="182.29442" cy="504.11957" rx="0.1999971" ry="2.0999694" id="ellipse65"/>
+      <ellipse transform="rotate(-0.51733119)" cx="279.46997" cy="464.99747" rx="2.4000978" ry="0.30001223" id="ellipse69"/>
+      <ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="279.36935" cy="465.09668" rx="2.3000937" ry="0.30001223" id="ellipse71"/>
+      <path id="path73" d="M 287.9375,456.8375" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-41.042549)" cx="-82.119583" cy="529.44684" rx="0.29999119" ry="2.6999207" id="ellipse77"/>
+      <ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-82.168976" cy="529.37885" rx="0.29999119" ry="2.6999207" id="ellipse79"/>
+      <ellipse transform="rotate(-68.216677)" cx="-318.22693" cy="433.1188" rx="0.30000198" ry="2.8000183" id="ellipse83"/>
+      <ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-318.27298" cy="432.99356" rx="0.30000198" ry="2.7000179" id="ellipse85"/>
+      <path id="path87" d="m 290.5375,450.9375 c 0,0.1 -1.5,0.4 -3.2,1.6 -0.6,0.4 -1.3,0.9 -2,1.7 -0.9,1.1 -1.2,2.1 -1.3,2.4 -0.2,0.7 -0.3,1.4 -0.3,2 -0.1,0.6 -0.1,1.4 -0.1,1.4 0,0 0,0 0,0 v 0 c 0,0 0.1,0 0.1,0 0,0 -0.1,0 -0.2,0 -0.1,0 -0.1,-0.2 -0.1,-0.3 -0.1,-0.8 0,-1 0,-1 -0.1,-0.4 0,-0.8 0.2,-1.5 0.1,-0.4 0.2,-1 0.5,-1.8 0.2,-0.5 0.5,-1.1 1.1,-1.8 0.5,-0.5 1.3,-1.1 2.3,-1.6 1.6,-0.9 3,-1.2 3,-1.1 z" inkscape:connector-curvature="0"/>
+      <path id="path89" d="m 290.6375,450.9375 c 0,0.1 -1,0.3 -2.3,0.9 -0.2,0.1 -0.3,0.2 -0.6,0.3 -0.6,0.3 -1.9,1.1 -2.9,2.6 0,0.1 -0.2,0.3 -0.3,0.6 -1.3,2.5 -0.7,5.1 -1,5.1 -0.1,0 -0.1,-0.2 -0.2,-0.4 -0.1,-0.4 -0.4,-1.6 0.4,-4 0.1,-0.4 0.4,-1 0.7,-1.6 0.4,-0.6 0.8,-1 1.1,-1.3 0,0 0,0 0.1,-0.1 1.5,-1.4 4,-2.1 4,-2.1 0.5,0 0.9,-0.1 1,0 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path91" d="M 283.2375,451.9375" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path93" d="M 280.9375,452.5375" inkscape:connector-curvature="0"/>
+      <path id="path95" d="M 282.9375,452.0375" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path id="path97" d="M 281.4375,451.1375" inkscape:connector-curvature="0"/>
+      <ellipse transform="rotate(-87.809755)" cx="-448.97247" cy="301.0705" rx="0.30000919" ry="2.5000765" id="ellipse101"/>
+      <ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-449.04303" cy="301.01602" rx="0.30000919" ry="2.5000765" id="ellipse103"/>
+      <ellipse transform="rotate(-1.8915592)" cx="275.81781" cy="460.21146" rx="0.20000899" ry="2.0000899" id="ellipse107"/>
+      <ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.72015" cy="460.20984" rx="0.20000899" ry="2.0000899" id="ellipse109"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Boob_" style="display:inline" inkscape:label="Boob_">
+    <g inkscape:groupmode="layer" id="Boob_Scaled_" style="display:inline" inkscape:label="Boob_Scaled_">
+      <g inkscape:groupmode="layer" id="Boob" style="display:inline;opacity:1" inkscape:label="Boob">
+        <g id="g1065">
+          <path sodipodi:nodetypes="cccccccc" id="path1056" class="shadow" d="m 270.34578,196.55707 c -12.11058,4.47607 -21.33353,10.38476 -27.42519,17.04587 -12.80622,2.09756 -20.32972,7.4459 -28.75481,12.23956 -3.26563,12.08634 -5.14611,24.17711 3.20444,36.14887 5.15461,10.33009 14.73224,11.95658 25.07247,9.77599 12.30515,-2.59845 22.51491,-12.16054 31.77186,-26.40779 2.55546,-15.31136 11.88781,-30.84621 8.29579,-40.31411 -1.93843,-3.02612 -7.62333,-5.27685 -12.16456,-8.48839 z" inkscape:connector-curvature="0"/>
+          <path inkscape:connector-curvature="0" d="m 270.34578,196.55707 c -10.88689,5.21029 -20.86401,10.66647 -27.42519,17.04587 -11.65071,2.84039 -19.91205,7.7144 -28.75481,12.23956 -2.67807,12.04962 -3.90036,24.09925 3.20444,36.14887 6.4429,9.38534 15.09934,11.68738 25.07247,9.77599 11.51523,-3.31656 22.0236,-12.60719 31.77186,-26.40779 0.22345,-1.05729 4.92073,-9.04451 4.92073,-9.04451 0,0 -0.41676,-3.88071 1.50778,-14.12355 1.3857,-6.23043 2.34993,-12.6411 1.86728,-17.14605 -0.96883,-4.15211 -3.23773,-9.62848 -12.16456,-8.48839 z" class="skin boob" id="XMLID_588_" sodipodi:nodetypes="cccccccccc"/>
+        </g>
+        <g id="g1069">
+          <path inkscape:connector-curvature="0" d="m 348.02261,248.51896 c 8.65355,-12.30579 11.43144,-30.88254 -0.97284,-43.4189 -14.67089,-12.96908 -28.30339,-7.92276 -38.99561,-8.00176 -24.21445,12.16832 -31.98806,25.58323 -28.88571,44.91992 6.30867,31.25913 54.29562,32.66603 68.85416,6.50074 z" class="shadow" id="path1050" sodipodi:nodetypes="ccccc"/>
+          <path sodipodi:nodetypes="csccc" id="path1042" class="skin boob" d="m 348.02261,248.51896 c 7.65465,-13.28462 11.02267,-29.82946 -0.97284,-43.4189 -13.16154,-14.9104 -25.83696,-10.05 -38.46528,-8.66467 -23.32793,11.82921 -31.64375,27.39415 -29.41604,45.58283 9.02747,30.88382 54.47239,31.60541 68.85416,6.50074 z" inkscape:connector-curvature="0"/>
+        </g>
+      </g>
+      <g inkscape:label="Boob_back_" style="display:inline;opacity:1" id="Boob_back_" inkscape:groupmode="layer">
+        <g id="g1031">
+          <path inkscape:connector-curvature="0" d="m 242.92059,213.60294 c -14.19794,4.82368 -20.00019,6.39194 -25.92638,13.38861 -9.04477,10.67857 -6.37031,27.70524 0.37601,34.99982 2.47829,3.55327 12.05265,13.5715 25.07247,9.77599 14.78911,-4.31129 28.08275,-19.04793 35.66095,-29.76655 8.85355,27.42583 51.12087,37.51696 69.91897,6.51815 9.4955,-12.56066 7.58029,-37.75952 -4.20721,-46.93452 -15.35794,-6.9613 -35.81658,-4.80431 -35.81658,-4.80431 -5.54048,0.45878 -20.56861,4.16469 -24.93467,4.67913 -23.35197,2.7515 -29.55361,1.28089 -40.14356,12.14368 z" class="shadow boob" id="path1027" sodipodi:nodetypes="cscsccccsc"/>
+          <path sodipodi:nodetypes="ccscsccsc" id="path1029" class="skin boob" d="m 283.0737,200.8881 c -26.58529,0.48823 -32.05311,6.01484 -40.15311,12.71484 -17.2121,6.55172 -20.13904,6.41341 -25.92638,13.38861 -8.91343,10.74292 -5.74857,27.56708 0.37601,34.99982 2.9713,3.61127 12.0841,13.18009 25.07247,9.77599 14.53688,-3.80995 28.67981,-20.84961 35.66095,-29.76655 8.5,26.1 51.78378,36.4563 69.91897,6.51815 8.7,-11.5 7.9089,-38.6903 -5.22284,-47.6064 -14.13669,-9.59844 -34.74263,-4.4546 -34.74263,-4.4546" inkscape:connector-curvature="0"/>
+        </g>
+        <path inkscape:connector-curvature="0" d="m 281.11239,224.03216 c 4.25,-12.71324 13.0603,-19.40588 27.18824,-27.60147 -14.45735,8.97059 -21.28677,14.51617 -27.18824,27.60147 z" class="shadow" id="path1033" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 281.02323,224.48521 c 1.2,-3.4 5.25883,-10.72353 1.95883,-23.52353 1.3,10.7 -0.65883,18.02353 -1.95883,23.52353 z" class="shadow" id="path1035" sodipodi:nodetypes="ccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Boob_Areola" style="display:inline;opacity:1" inkscape:label="Boob_Areola">
+        <g id="g1027" transform="matrix(1.0036748,0,0,1.0036748,-0.82340761,-0.81073623)">
+          <path id="XMLID_592_" class="areola" d="m 224.06836,220.86839 c 0,0 -0.39131,3.31112 -2.35082,6.67438 -1.9595,3.36326 -9.06529,7.55149 -9.06529,7.55149 0,0 -0.24448,-6.64388 0.46015,-8.06326 0.70464,-1.41938 1.13831,-2.19079 3.06684,-3.56226 2.42539,-1.72481 7.88912,-2.60035 7.88912,-2.60035 z" inkscape:connector-curvature="0" sodipodi:nodetypes="czczsc"/>
+          <path id="path3138" class="shadow" d="m 213.5671,226.66466 c 0,0 -1.9262,-1.30979 -1.44901,-2.97247 0.72632,-2.03671 3.90583,-3.99822 5.40947,-2.60058 0.64103,0.66345 0.91915,1.64032 0.91915,1.64032 -0.84654,2.52287 -2.28501,3.51024 -4.87961,3.93273 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+          <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" d="m 213.5671,226.66466 c 0,0 -1.91057,-1.4426 -1.44901,-2.97247 0.64038,-1.86093 4.03474,-3.95134 5.40947,-2.60058 0.55119,0.59704 0.91915,1.64032 0.91915,1.64032 -0.80357,2.35099 -2.35142,3.51024 -4.87961,3.93273 z" class="areola" id="XMLID_592_-5"/>
+          <path id="path3138-3" class="shadow" d="m 213.01263,222.46595 c 0.75085,-0.36944 1.35215,-0.13684 2.65343,0.43025 -1.21381,-0.3264 -1.67129,-0.78189 -2.65343,-0.43025 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc"/>
+          <path id="path3138-3-7" class="shadow" d="m 214.0315,222.35507 c 0.054,-0.31278 0.30778,-0.85942 1.02206,-0.7758 -0.84623,0.0699 -0.82527,0.44046 -1.02206,0.7758 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc"/>
+          <path id="path3138-3-7-4" class="shadow" d="m 214.73116,227.20469 c 2.09105,-0.65605 3.58115,-2.24941 3.44394,-3.80315 0.0522,0.95271 -0.13777,2.92874 -3.44394,3.80315 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc"/>
+        </g>
+        <g id="g1036" transform="matrix(1.0212835,0,0,1.0212835,-6.4679552,-4.3556102)">
+          <path inkscape:connector-curvature="0" id="XMLID_593_" d="m 314.17289,222.1657 c -5.09999,-0.56255 -10.25389,-4.32121 -10.27808,-7.69008 -0.0309,-4.29936 6.47452,-8.78659 12.1893,-8.53652 5.37398,0.23516 10.98206,3.74015 9.88043,8.95113 -1.10163,5.21098 -5.6937,7.9481 -11.79165,7.27547 z" class="areola" sodipodi:nodetypes="sssss"/>
+          <path inkscape:connector-curvature="0" id="path989" d="m 310.66882,210.47597 c -0.72765,-0.9361 -0.60753,-2.39965 -0.40684,-3.08293 0.48386,-1.83702 2.61601,-2.7715 4.4734,-2.74561 1.62871,0.0227 2.55147,0.26096 3.28224,1.71217 0.79333,0.61754 0.84585,1.67252 0.80454,1.72014 -0.21669,1.5267 -1.22761,3.71824 -4.19389,3.59586 -2.37989,0.11991 -3.19283,-0.0317 -3.95945,-1.19963 z" class="shadow" sodipodi:nodetypes="ccscccc"/>
+          <path sodipodi:nodetypes="csscccc" class="areola" d="m 310.66882,210.47597 c -0.49696,-0.95917 -0.60188,-2.41088 -0.40684,-3.08293 0.51036,-1.75854 2.81349,-2.72569 4.4734,-2.74561 1.63641,-0.0196 2.56087,0.48653 3.28224,1.71217 0.66484,0.73435 0.82922,1.68764 0.80454,1.72014 -0.28461,1.4286 -1.29226,3.62486 -4.19389,3.59586 -2.24349,0.003 -3.12877,-0.0866 -3.95945,-1.19963 z" id="XMLID_593_-8" inkscape:connector-curvature="0"/>
+          <path inkscape:connector-curvature="0" id="path3990-3" d="m 311.71553,206.60898 c 1.5946,-0.62 3.11448,0.2184 4.10335,1.04883 -1.18741,-0.57935 -2.70593,-1.37335 -4.10335,-1.04883 z" class="shadow" sodipodi:nodetypes="ccc"/>
+          <path sodipodi:nodetypes="ccc" class="shadow" d="m 313.5577,206.59854 c 0.90959,-0.79125 1.45758,-1.00189 2.8221,-0.87304 -1.2758,0.0449 -1.85557,0.27784 -2.8221,0.87304 z" id="path3990-3-1" inkscape:connector-curvature="0"/>
+          <path inkscape:connector-curvature="0" id="path3990-3-0" d="m 311.13963,210.57541 c 7.68349,1.59713 7.01758,-3.72676 6.8783,-4.2566 0.46399,3.23262 -1.47339,5.97095 -6.8783,4.2566 z" class="shadow" sodipodi:nodetypes="ccc"/>
+          <path id="path3138-3-7-4-8" class="shadow" d="m 312.99355,212.30782 c 4.05401,-0.41435 5.26872,-1.30083 5.69395,-3.68596 -0.0494,2.76521 -2.25496,3.48343 -5.69395,3.68596 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc"/>
+        </g>
+      </g>
+      <g inkscape:label="Boob_Areola_NoBoob" style="display:inline;opacity:1" id="Boob_Areola_NoBoob" inkscape:groupmode="layer">
+        <path inkscape:connector-curvature="0" id="path1074" d="m 312.6125,241.81215 c -2.0933,-0.29336 -4.20874,-2.25346 -4.21867,-4.01028 -0.0126,-2.24206 2.65749,-4.58209 5.00314,-4.45169 2.20577,0.12263 4.50762,1.95044 4.05546,4.6679 -0.45217,2.71747 -2.337,4.14484 -4.83993,3.79407 z" class="areola" sodipodi:nodetypes="sssss"/>
+        <path inkscape:connector-curvature="0" id="path1082" d="m 313.47573,239.66032 c -1.94762,-0.0319 -2.30525,-0.47307 -2.84254,-1.38769 -0.0692,-0.11498 -0.14074,-0.6753 -0.039,-1.04629 0.26998,-0.9844 1.38054,-1.82945 2.49788,-1.77138 1.83776,0.0955 2.2692,2.11008 2.25662,2.11245 -0.19082,0.92279 -0.63028,2.09291 -1.87298,2.09291 z" class="shadow" sodipodi:nodetypes="ccsscsc"/>
+        <path sodipodi:nodetypes="ccsscsc" class="areola" d="m 313.47573,239.66032 c -1.94762,-0.0319 -2.40618,-0.60407 -2.84254,-1.38769 -0.0133,0.01 -0.14074,-0.6753 -0.039,-1.04629 0.26998,-0.9844 1.53307,-1.84755 2.49788,-1.77138 1.78528,0.14096 2.2692,2.11008 2.25662,2.11245 -0.15647,0.78536 -0.63028,2.09291 -1.87298,2.09291 z" id="path1084" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" id="path1086" d="m 311.35893,236.87262 c 0.87662,-0.34085 1.71217,0.12006 2.25579,0.57658 -0.65277,-0.31849 -1.48757,-0.75499 -2.25579,-0.57658 z" class="shadow" sodipodi:nodetypes="ccc"/>
+        <path sodipodi:nodetypes="ccc" class="shadow" d="m 312.37165,236.86687 c 0.50004,-0.43498 0.80129,-0.55077 1.55144,-0.47994 -0.70137,0.0247 -1.0201,0.15274 -1.55144,0.47994 z" id="path1088" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" id="path1074-8" d="m 247.22158,244.74921 c -1.54529,-0.29336 -3.10693,-2.25346 -3.11426,-4.01028 -0.009,-2.24206 1.96178,-4.58209 3.69336,-4.45169 1.62832,0.12263 3.32757,1.95044 2.99378,4.6679 -0.33379,2.71747 -1.72519,4.14484 -3.57288,3.79407 z" class="areola" sodipodi:nodetypes="sssss"/>
+        <path inkscape:connector-curvature="0" id="path1082-6" d="m 246.84943,242.44113 c -1.78297,-0.0319 -2.11037,-0.47307 -2.60223,-1.38769 -0.0634,-0.11498 -0.12885,-0.6753 -0.0357,-1.04629 0.24716,-0.9844 1.26383,-1.82945 2.28672,-1.77138 1.68239,0.0955 2.07736,2.11008 2.06584,2.11245 -0.17469,0.92279 -0.57699,2.09291 -1.71464,2.09291 z" class="shadow" sodipodi:nodetypes="ccsscsc"/>
+        <path sodipodi:nodetypes="ccsscsc" class="areola" d="m 246.84943,242.44113 c -1.78297,-0.0319 -2.20276,-0.60407 -2.60223,-1.38769 -0.0122,0.01 -0.12885,-0.6753 -0.0357,-1.04629 0.24716,-0.9844 1.40347,-1.84755 2.28672,-1.77138 1.63435,0.14096 2.07736,2.11008 2.06584,2.11245 -0.14324,0.78536 -0.57699,2.09291 -1.71464,2.09291 z" id="path1084-7" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" id="path1086-5" d="m 244.21552,240.06223 c 0.80251,-0.34085 1.56743,0.12006 2.06509,0.57658 -0.59758,-0.31849 -1.36181,-0.75499 -2.06509,-0.57658 z" class="shadow" sodipodi:nodetypes="ccc"/>
+        <path sodipodi:nodetypes="ccc" class="shadow" d="m 245.14263,240.05648 c 0.45777,-0.43498 0.73355,-0.55077 1.42028,-0.47994 -0.64208,0.0247 -0.93386,0.15274 -1.42028,0.47994 z" id="path1088-1" inkscape:connector-curvature="0"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Boob_Areola_Piercing" style="display:inline" inkscape:label="Boob_Areola_Piercing">
+        <g id="g1412" transform="matrix(1.0263785,0,0,1.0263785,-8.6733354,-5.3910578)">
+          <circle id="circle1208" class="steel_piercing" cx="326.55273" cy="211.96944" r="2.25"/>
+          <circle r="2.25" id="circle1210" class="steel_piercing" cx="321.75674" cy="206.62288"/>
+          <circle id="circle1208-7" class="steel_piercing" cx="323.89911" cy="218.82379" r="2.25"/>
+          <circle id="circle1208-0" class="steel_piercing" cx="311.17117" cy="221.07768" r="2.25"/>
+          <circle id="circle1208-06" class="steel_piercing" cx="303.65814" cy="214.8905" r="2.25"/>
+          <circle id="circle1208-8" class="steel_piercing" cx="307.76822" cy="206.93555" r="2.25"/>
+        </g>
+        <g id="g1417" transform="matrix(1.0228023,0,0,1.0228023,-5.1326497,-5.0109358)">
+          <ellipse id="ellipse1212" transform="rotate(-166.16108)" class="steel_piercing" cx="-268.83929" cy="-169.38443" rx="1.350039" ry="1.8000519"/>
+          <ellipse id="ellipse1212-6" transform="rotate(-166.16108)" class="steel_piercing" cx="-270.20932" cy="-161.59186" rx="1.3500389" ry="1.8000519"/>
+          <ellipse id="ellipse1212-3" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.35574" cy="-176.55655" rx="1.3500389" ry="1.8000519"/>
+        </g>
+      </g>
+      <g inkscape:label="Boob_Areola_Piercing_Heavy" style="display:inline" id="Boob_Areola_Piercing_Heavy" inkscape:groupmode="layer">
+        <g id="g1650" transform="matrix(1.0049807,0,0,1.0049807,-1.6578337,-0.99661844)">
+          <path id="XMLID_525_-4" class="steel_piercing" d="m 322.98091,222.29698 c -0.0685,0.18791 2.92054,1.91584 5.23684,0.52488 1.80351,-1.1521 2.89046,-3.84255 1.65317,-5.99641 -1.27152,-2.05991 -3.88556,-2.4804 -5.77426,-1.67865 -2.30753,1.07485 -2.83075,3.97075 -2.7368,4.00499 0.24763,0.19668 1.27486,-2.62197 3.30847,-2.94518 1.20471,-0.0931 2.61403,0.42049 3.24541,1.6085 0.75081,1.4444 0.16871,3.04163 -0.80592,3.96365 -1.42769,1.28906 -4.15239,0.29607 -4.12691,0.51822 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3" class="steel_piercing" d="m 328.13387,215.2046 c 0.0611,0.19045 3.48187,-0.27678 4.45916,-2.79569 0.71859,-2.01584 -0.072,-4.80779 -2.36992,-5.75095 -2.26737,-0.84795 -4.59038,0.42234 -5.59106,2.21361 -1.16415,2.26379 0.19777,4.87246 0.29299,4.84192 0.31621,0.004 -0.60016,-2.85303 0.80837,-4.35506 0.89471,-0.81209 2.323,-1.27029 3.55012,-0.71876 1.47865,0.68088 1.99792,2.29963 1.79314,3.62556 -0.33771,1.89365 -3.09911,2.77948 -2.9428,2.93937 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0" class="steel_piercing" d="m 323.33923,208.9427 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0-5" class="steel_piercing" d="m 309.36246,208.08395 c 0.19032,0.0615 1.80589,-2.98979 0.32972,-5.25274 -1.21839,-1.75941 -3.94741,-2.74553 -6.05375,-1.42899 -2.01118,1.34726 -2.33415,3.97514 -1.46271,5.83271 1.15995,2.26596 4.07331,2.68109 4.10403,2.58593 0.18767,-0.25452 -2.66757,-1.17644 -3.06618,-3.19664 -0.13786,-1.20042 0.32296,-2.62786 1.48666,-3.303 1.41547,-0.80402 3.03325,-0.28173 3.99089,0.65792 1.34128,1.37873 0.45032,4.1385 0.67136,4.10479 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0-5-5" class="steel_piercing" d="m 304.98758,215.27739 c 0.19977,-0.01 0.62842,-3.43587 -1.55424,-5.02835 -1.76308,-1.21307 -4.66444,-1.16745 -6.1671,0.81042 -1.40278,1.97285 -0.77296,4.5445 0.70052,5.97238 1.88805,1.70742 4.75931,1.06255 4.7543,0.96268 0.0852,-0.30453 -2.91139,-0.15412 -4.00043,-1.90172 -0.55456,-1.07354 -0.62982,-2.57163 0.21887,-3.61553 1.0384,-1.25368 2.73626,-1.33896 3.96487,-0.79993 1.743,0.81355 1.8885,3.70992 2.08323,3.60002 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0-5-5-8" class="steel_piercing" d="m 313.00196,221.4571 c 0.19355,-0.0505 -0.0844,-3.49184 -2.54562,-4.60649 -1.97317,-0.82862 -4.80444,-0.19314 -5.87285,2.04928 -0.97165,2.21717 0.16865,4.60668 1.90203,5.70459 2.19618,1.28717 4.87596,0.0711 4.85072,-0.0256 0.0214,-0.3155 -2.88178,0.44197 -4.30387,-1.04725 -0.76155,-0.93812 -1.1403,-2.38949 -0.52197,-3.58434 0.76135,-1.43887 2.40627,-1.8681 3.7189,-1.59056 1.87215,0.44157 2.6044,3.24762 2.77267,3.10037 z" inkscape:connector-curvature="0"/>
+        </g>
+        <g id="g1655" transform="matrix(1.0106254,0,0,1.0106254,-2.44532,-2.2864495)">
+          <path id="XMLID_525_-4-3-0-3" class="steel_piercing" d="m 226.23976,224.03419 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0-3-2" class="steel_piercing" d="m 221.79512,232.06967 c 0.012,0.19964 3.44203,0.59373 5.01243,-1.60487 1.19522,-1.77523 1.12034,-4.67598 -0.87259,-6.15861 -1.9869,-1.38283 -4.55207,-0.7271 -5.96501,0.76071 -1.6883,1.90518 -1.0145,4.76979 -0.91468,4.76376 0.30537,0.0822 0.12474,-2.91279 1.86128,-4.0194 1.06788,-0.56535 2.56514,-0.65573 3.61755,0.18239 1.26409,1.02571 1.36649,2.72263 0.83988,3.9566 -0.79593,1.75113 -3.69069,1.92583 -3.57883,2.11943 z" inkscape:connector-curvature="0"/>
+          <path id="XMLID_525_-4-3-0-3-2-9" class="steel_piercing" d="m 213.61151,237.5937 c -0.072,0.1866 2.88498,1.969 5.22636,0.62068 1.8243,-1.11889 2.96033,-3.78898 1.76269,-5.96513 -1.23358,-2.08285 -3.8395,-2.55114 -5.74256,-1.78411 -2.32683,1.03243 -2.90298,3.91827 -2.80966,3.95422 0.24369,0.20154 1.32263,-2.59818 3.36185,-2.88408 1.20621,-0.071 2.60589,0.46828 3.21542,1.66764 0.72424,1.45791 0.11298,3.04422 -0.87836,3.94824 -1.45103,1.26272 -4.15711,0.21999 -4.13571,0.44256 z" inkscape:connector-curvature="0"/>
+        </g>
+      </g>
+      <g inkscape:groupmode="layer" id="Boob_Areola_Piercing_NoBoob_Heavy" style="display:inline" inkscape:label="Boob_Areola_Piercing_NoBoob_Heavy">
+        <g transform="matrix(1.0049807,0,0,1.0049807,-1.6578337,-0.99661844)" id="g1669">
+          <path inkscape:connector-curvature="0" d="m 316.57531,244.4989 c -0.0685,0.18791 2.92054,1.91584 5.23684,0.52488 1.80351,-1.1521 2.89046,-3.84255 1.65317,-5.99641 -1.27152,-2.05991 -3.88556,-2.4804 -5.77426,-1.67865 -2.30753,1.07485 -2.83075,3.97075 -2.7368,4.00499 0.24763,0.19668 1.27486,-2.62197 3.30847,-2.94518 1.20471,-0.0931 2.61403,0.42049 3.24541,1.6085 0.75081,1.4444 0.16871,3.04163 -0.80592,3.96365 -1.42769,1.28906 -4.15239,0.29607 -4.12691,0.51822 z" class="steel_piercing" id="path1657"/>
+          <path inkscape:connector-curvature="0" d="m 319.35905,235.62231 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" class="steel_piercing" id="path1661"/>
+          <path inkscape:connector-curvature="0" d="m 310.91722,234.39042 c 0.19032,0.0615 1.80589,-2.98979 0.32972,-5.25274 -1.21839,-1.75941 -3.94741,-2.74553 -6.05375,-1.42899 -2.01118,1.34726 -2.33415,3.97514 -1.46271,5.83271 1.15995,2.26596 4.07331,2.68109 4.10403,2.58593 0.18767,-0.25452 -2.66757,-1.17644 -3.06618,-3.19664 -0.13786,-1.20042 0.32296,-2.62786 1.48666,-3.303 1.41547,-0.80402 3.03325,-0.28173 3.99089,0.65792 1.34128,1.37873 0.45032,4.1385 0.67136,4.10479 z" class="steel_piercing" id="path1663"/>
+          <path inkscape:connector-curvature="0" d="m 311.4472,242.66397 c 0.19355,-0.0505 -0.0844,-3.49184 -2.54562,-4.60649 -1.97317,-0.82862 -4.80444,-0.19314 -5.87285,2.04928 -0.97165,2.21717 0.16865,4.60668 1.90203,5.70459 2.19618,1.28717 4.87596,0.0711 4.85072,-0.0256 0.0214,-0.3155 -2.88178,0.44197 -4.30387,-1.04725 -0.76155,-0.93812 -1.1403,-2.38949 -0.52197,-3.58434 0.76135,-1.43887 2.40627,-1.8681 3.7189,-1.59056 1.87215,0.44157 2.6044,3.24762 2.77267,3.10037 z" class="steel_piercing" id="path1667"/>
+        </g>
+        <g transform="matrix(1.0106254,0,0,1.0106254,-2.44532,-2.2864495)" id="g1677">
+          <path inkscape:connector-curvature="0" d="m 247.14266,237.14488 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" class="steel_piercing" id="path1671"/>
+          <path inkscape:connector-curvature="0" d="m 252.84025,241.53163 c 0.012,0.19964 3.44203,0.59373 5.01243,-1.60487 1.19522,-1.77523 1.12034,-4.67598 -0.87259,-6.15861 -1.9869,-1.38283 -4.55207,-0.7271 -5.96501,0.76071 -1.6883,1.90518 -1.0145,4.76979 -0.91468,4.76376 0.30537,0.0822 0.12474,-2.91279 1.86128,-4.0194 1.06788,-0.56535 2.56514,-0.65573 3.61755,0.18239 1.26409,1.02571 1.36649,2.72263 0.83988,3.9566 -0.79593,1.75113 -3.69069,1.92583 -3.57883,2.11943 z" class="steel_piercing" id="path1673"/>
+          <path inkscape:connector-curvature="0" d="m 247.50142,247.79778 c -0.072,0.1866 2.88498,1.969 5.22636,0.62068 1.8243,-1.11889 2.96033,-3.78898 1.76269,-5.96513 -1.23358,-2.08285 -3.8395,-2.55114 -5.74256,-1.78411 -2.32683,1.03243 -2.90298,3.91827 -2.80966,3.95422 0.24369,0.20154 1.32263,-2.59818 3.36185,-2.88408 1.20621,-0.071 2.60589,0.46828 3.21542,1.66764 0.72424,1.45791 0.11298,3.04422 -0.87836,3.94824 -1.45103,1.26272 -4.15711,0.21999 -4.13571,0.44256 z" class="steel_piercing" id="path1675"/>
+        </g>
+      </g>
+      <g inkscape:label="Boob_Areola_Piercing_NoBoob" style="display:inline" id="Boob_Areola_Piercing_NoBoob" inkscape:groupmode="layer">
+        <circle id="circle1125" class="steel_piercing" cx="309.05273" cy="242.34444" r="2.25"/>
+        <ellipse id="ellipse1129" transform="rotate(-166.16108)" class="steel_piercing" cx="-301.22406" cy="-172.02744" rx="1.350039" ry="1.8000519"/>
+        <circle id="circle1131" class="steel_piercing" cx="317.02411" cy="242.44879" r="2.25"/>
+        <circle id="circle1133" class="steel_piercing" cx="317.17117" cy="233.57768" r="2.25"/>
+        <circle id="circle1135" class="steel_piercing" cx="308.90814" cy="233.703" r="2.25"/>
+        <ellipse id="ellipse1139" transform="rotate(-166.16108)" class="steel_piercing" cx="-295.81207" cy="-170.41136" rx="1.3500389" ry="1.8000519"/>
+        <ellipse id="ellipse1141" transform="rotate(-166.16108)" class="steel_piercing" cx="-298.56195" cy="-178.63326" rx="1.3500389" ry="1.8000519"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Boob_Piercing_Heavy" style="display:inline" inkscape:label="Boob_Piercing_Heavy">
+        <g id="g1374" transform="matrix(1.0017178,0,0,1.0017178,-0.55263244,-0.3529705)">
+          <path id="XMLID_610_" class="steel_piercing" d="m 309.90865,207.70517 c 0.21478,0 -1.07387,3.63006 -1.07387,8.81578 0,4.66721 1.07387,10.37151 3.65116,12.44583 3.00683,2.07431 6.22843,-4.66714 7.08751,-10.37151 0.8591,-5.70435 -0.64431,-10.37152 -0.42954,-10.8901 0.42954,-0.51857 2.36251,6.22293 1.93296,12.44584 -0.42955,7.26006 -3.65115,16.07583 -7.73184,14.52011 -3.00683,-1.03716 -6.01366,-6.74151 -6.01366,-14.52011 -0.42954,-7.26009 2.36251,-12.96441 2.57728,-12.44584 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cscsccccc"/>
+          <path sodipodi:nodetypes="ccscccc" id="XMLID_611_" class="steel_piercing" d="m 211.74093,240.94933 c 1.60318,2.00397 4.01575,-3.05165 4.55014,-7.8612 0.53439,-4.40874 -0.17813,-8.0159 0,-8.4167 0.17813,-0.40078 1.06879,4.80954 0.89066,9.6191 -0.35627,5.61111 -3.06571,12.09415 -5.38141,11.29257 -1.05341,-1.99943 -0.215,-4.83345 -0.0594,-4.63377 z" inkscape:connector-curvature="0"/>
+          <path sodipodi:nodetypes="scccs" id="XMLID_612_" class="steel_piercing" d="m 212.62757,245.06158 c 0.12894,-0.24264 18.44383,30.27982 43.52882,29.12099 26.8292,-1.45432 58.8088,-41.66451 59.11592,-41.49573 0.32354,0.3868 -29.85403,43.84637 -57.84606,45.49774 -26.95814,1.69698 -44.92761,-32.88035 -44.79868,-33.123 z" inkscape:connector-curvature="0"/>
+          <circle id="circle1192" class="steel_piercing" cx="309.49377" cy="207.85938" r="2.25"/>
+          <circle r="2.25" id="circle1194" class="steel_piercing" cx="319.45865" cy="207.72774"/>
+          <ellipse id="ellipse1196" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.7442" cy="-165.79219" rx="1.350039" ry="1.8000519"/>
+        </g>
+      </g>
+      <g inkscape:label="Boob_Piercing_NoBoob_Heavy" style="display:inline" id="Boob_Piercing_NoBoob_Heavy" inkscape:groupmode="layer">
+        <path id="path1111" class="steel_piercing" d="m 308.53365,237.83017 c 0.21478,0 -1.07387,3.63006 -1.07387,8.81578 0,4.66721 1.07387,10.37151 3.65116,12.44583 3.00683,2.07431 6.22843,-4.66714 7.08751,-10.37151 0.8591,-5.70435 -0.64431,-10.37152 -0.42954,-10.8901 0.42954,-0.51857 2.36251,6.22293 1.93296,12.44584 -0.42955,7.26006 -3.65115,16.07583 -7.73184,14.52011 -3.00683,-1.03716 -6.01366,-6.74151 -6.01366,-14.52011 -0.42954,-7.26009 2.36251,-12.96441 2.57728,-12.44584 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cscsccccc"/>
+        <path sodipodi:nodetypes="ccscccc" id="path1113" class="steel_piercing" d="m 243.0687,257.31608 c 1.60318,2.00397 4.95325,-3.11415 5.48764,-7.9237 0.53439,-4.40874 -0.17813,-8.0159 0,-8.4167 0.17813,-0.40078 1.06879,4.80954 0.89066,9.6191 -0.35627,5.61111 -4.00321,12.15665 -6.31891,11.35507 -1.05341,-1.99943 -0.215,-4.83345 -0.0594,-4.63377 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="scccs" id="path1115" class="steel_piercing" d="m 243.42593,260.51411 c 0.12894,-0.24264 6.59979,33.10825 31.68478,31.94942 26.8292,-1.45432 38.47948,-29.82047 38.7866,-29.65169 0.32354,0.3868 -9.52471,32.00233 -37.51674,33.6537 -26.95814,1.69698 -33.08357,-35.70878 -32.95464,-35.95143 z" inkscape:connector-curvature="0"/>
+        <circle id="circle1117" class="steel_piercing" cx="308.29556" cy="237.84074" r="2.25"/>
+        <circle r="2.25" id="circle1119" class="steel_piercing" cx="317.58649" cy="237.63176"/>
+        <ellipse id="ellipse1121" transform="rotate(-166.16108)" class="steel_piercing" cx="-298.97275" cy="-173.90553" rx="1.350039" ry="1.8000519"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Boob_Piercing_NoBoob" style="display:inline" inkscape:label="Boob_Piercing_NoBoob">
+        <circle id="XMLID_622_" class="steel_piercing" cx="308.27518" cy="237.54713" r="2.25"/>
+        <circle id="XMLID_623_" class="steel_piercing" cy="237.5405" cx="317.5838" r="2.25"/>
+        <ellipse id="XMLID_626_" transform="rotate(-166.16108)" class="steel_piercing" cx="-299.35211" cy="-174.46425" rx="1.350039" ry="1.8000519"/>
+      </g>
+      <g inkscape:label="Boob_Piercing" style="display:inline" id="Boob_Piercing" inkscape:groupmode="layer">
+        <g id="g1366" transform="matrix(1.0081159,0,0,1.0081159,-2.6203467,-1.6676415)">
+          <circle id="circle1102" class="steel_piercing" cx="308.05627" cy="208.32812" r="2.25"/>
+          <circle id="circle1104" class="steel_piercing" cy="207.72774" cx="320.6149" r="2.25"/>
+          <ellipse id="ellipse1106" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.7442" cy="-165.79219" rx="1.350039" ry="1.8000519"/>
+        </g>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Boob_Highlights_" inkscape:label="Boob_Highlights_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Boob_Highlights2" inkscape:label="Boob_Highlights2" style="display:inline">
+      <g id="g2226" transform="matrix(0.99843271,0,0,0.99843271,0.51131944,0.3030066)">
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9" class="highlight2" d="m 324.062,195.87815 c -2.25111,1.2044 -7.45996,3.89006 -5.39058,7.5857 4.2438,-0.0711 5.93888,-5.71281 5.39058,-7.5857 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7" class="highlight2" d="m 313.22303,216.21843 c -3.53236,3.2669 -5.77246,8.35881 -1.89058,10.3357 2.9938,-1.10235 3.78263,-5.83781 1.89058,-10.3357 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7" class="highlight2" d="m 256.23397,214.34522 c -7.63355,-1.99021 -15.11772,5.91416 -17.80104,7.67441 4.08319,1.14699 17.25312,2.91232 17.80104,-7.67441 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4" class="highlight2" d="m 313.50007,212.81652 c -1.45423,1.22002 -0.55371,1.5776 -0.29683,2.05444 0.91567,-0.49297 1.12638,-0.75968 0.29683,-2.05444 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-70" class="highlight2" d="m 325.92076,193.33159 c -0.70431,0.21003 -1.91359,0.15565 -1.19213,1.55319 2.16667,-0.20368 1.45317,-1.07242 1.19213,-1.55319 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5" class="highlight2" d="m 262.30677,208.04077 c -0.95431,-0.17346 -2.05373,0.57643 -1.9822,1.36001 0.65204,0.10878 1.99495,0.29667 1.9822,-1.36001 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1" class="highlight2" d="m 237.28097,221.17554 c -0.88687,-0.39276 -2.13167,0.0779 -2.2462,0.85637 0.60825,0.25889 1.86945,0.75696 2.2462,-0.85637 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9" class="highlight2" d="m 224.57022,224.30732 c -0.73318,-0.21518 -5.16322,0.19765 -5.64135,0.25254 0.7532,0.71279 5.59616,1.42803 5.64135,-0.25254 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-6" class="highlight2" d="m 214.65463,231.123 c -1.28043,3.08678 -0.887,13.93661 0.52713,15.49899 0.17285,-0.32564 -0.27027,-14.54836 -0.52713,-15.49899 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-4" class="highlight2" d="m 214.66568,228.54869 c -0.95299,0.64524 -0.46869,1.54719 -0.0583,1.90701 0.59665,-0.3531 0.32534,-1.4005 0.0583,-1.90701 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-62-3" class="highlight2" d="m 214.96934,223.37407 c -0.59995,0.17051 -1.09864,0.3604 -1.5163,0.72315 0.72663,0.2153 1.41533,0.1382 1.5163,-0.72315 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4-2" class="highlight2" d="m 315.14231,208.27176 c -1.11469,-1.53646 -2.19765,-0.93953 -2.69138,-0.71684 0.55133,0.56169 1.58949,0.72014 2.69138,0.71684 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4-2-1" class="highlight2" d="m 315.01568,205.51285 c -1.29777,-0.23638 -1.89173,0.15908 -2.19786,0.60584 1.13578,0.21924 1.34362,0.27207 2.19786,-0.60584 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-62-3-9" class="highlight2" d="m 214.99712,221.61733 c -0.26984,0.0314 -0.84473,0.21024 -0.92476,0.7089 0.27569,-0.29941 0.86343,-0.25926 0.92476,-0.7089 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+    <g style="display:inline" inkscape:label="Boob_Highlights1" id="Boob_Highlights1" inkscape:groupmode="layer">
+      <g id="g2210" transform="matrix(1.0060951,0,0,1.0060951,-1.9605124,-1.2116124)">
+        <path inkscape:connector-curvature="0" d="m 321.562,198.7844 c -2.25111,1.2044 -2.83496,3.23381 -2.89058,4.67945 1.40005,-0.6336 3.43888,-2.80656 2.89058,-4.67945 z" class="highlight1" id="path1139" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 313.22303,216.21843 c -1.68861,1.7669 -1.74121,4.42131 -1.45308,5.80445 1.40005,-1.16485 2.00138,-3.93156 1.45308,-5.80445 z" class="highlight1" id="path1141" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 250.26522,218.00147 c -4.7273,0.75979 -7.83647,2.53916 -10.64479,3.98691 4.08319,1.14699 9.56562,1.06857 10.64479,-3.98691 z" class="highlight1" id="path1143" sodipodi:nodetypes="ccc"/>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Boob_Outfit_" inkscape:label="Boob_Outfit_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Boob_Outfit_Straps" inkscape:label="Boob_Outfit_Straps" style="display:inline">
+      <g id="g4822" transform="matrix(1.0017766,0,0,1.0017766,-0.63254292,-0.30724415)">
+        <path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9" class="shadow" d="m 222.31309,230.41353 c 27.62761,-2.84004 54.98628,-6.21798 80.98167,-12.32247 l -1.38826,-3.79634 c -24.90326,5.69686 -50.40708,10.1926 -77.19019,12.12975 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccacccacc" id="XMLID_511_-1-8-2" class="shadow" d="m 212.5985,231.94358 c -0.26979,1.40375 -1.14168,4.52761 -0.71231,6.04134 4.21188,-1.0921 8.69472,-3.92289 11.42312,-7.59136 2.22607,-2.99304 3.41407,-7.35824 3.25049,-10.70782 -1.0224,-0.0113 -3.74679,0.90991 -4.05819,1.48623 l 1.54493,-0.28257 c -0.80164,3.27918 -1.61019,5.62444 -3.35983,7.88176 -2.06572,2.66511 -6.05614,5.00466 -8.0223,6.1622 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-8" class="shadow" d="m 326.40919,217.07208 c 9.16891,0.60183 19.58559,1.46163 28.7545,6.66542 l -0.76326,-3.96821 c -7.37379,-4.43842 -17.0551,-5.84118 -25.58802,-6.68627 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-2" class="shadow" d="m 319.33812,223.52443 c 3.13149,14.52631 2.89341,28.68012 -4.75134,43.25235 l -4.21669,-0.17242 c 8.29737,-13.11032 9.07293,-28.18441 5.62601,-43.09152 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cszzzsccszssscc" id="XMLID_511_-1-8-2-8" class="shadow" d="m 311.78146,205.54126 c 0,0 -4.06911,0.83634 -4.75478,1.23338 -3.06248,1.77333 -6.34186,4.91937 -4.95242,9.39071 1.38944,4.47134 9.79756,8.93051 15.3809,8.32756 5.58334,-0.60295 11.38232,-6.15933 12.03225,-10.55334 0.64993,-4.39401 -2.92629,-6.78148 -5.99024,-8.33911 -1.53648,-0.7811 -6.39247,-0.64798 -6.39247,-0.64798 0.43132,0.28882 0.76656,0.59341 1.0155,0.9021 0,0 2.86473,0.19978 4.09027,1.15267 2.09399,1.62813 4.90222,3.22496 4.36182,6.65545 -0.5404,3.43049 -5.49858,7.36518 -9.65134,7.74193 -4.54706,0.41253 -10.62186,-2.21016 -12.22062,-6.41495 -0.98964,-2.60278 1.92904,-5.99888 3.85457,-7.00098 0.68954,-0.35886 1.99763,-0.90354 1.99763,-0.90354 0.26018,-0.62451 0.61169,-1.00862 1.22893,-1.5439 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-2-1" class="shadow" d="m 213.87832,237.17918 c -2.24796,16.04054 3.36292,28.33477 21.43031,35.21675 l -1.9186,0.0485 C 218.02546,272.2753 210.15789,252.8513 211.92692,237.85504 Z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-28" class="shadow" d="m 248.16035,269.85576 64.35095,-3.16234 -15.11323,-3.41196 -42.937,2.58394 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+    <g inkscape:groupmode="layer" id="Boob_Outfit_Maid" inkscape:label="Boob_Outfit_Maid" style="display:inline;opacity:1">
+      <g style="display:inline;opacity:1" id="g2134" transform="matrix(0.99515665,0,0,0.99515665,1.6400838,0.96959443)">
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2120" d="m 226.34766,216.85742 c 2.98619,-0.62315 5.85031,-1.4204 8.64453,-2.38086 2.79422,-0.96045 5.51818,-2.08363 8.22656,-3.35742 2.70838,-1.27379 5.40024,-2.69856 8.12891,-4.26172 2.72867,-1.56316 5.49451,-3.2652 8.34961,-5.09375 -11.79723,6.74895 -21.9632,11.76361 -33.34961,15.09375 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2122" d="m 210.87305,229.81641 c 0.0451,-0.71382 0.22536,-1.51018 0.23047,-2.16797 0.006,-0.73749 0.0162,-1.44067 0.0996,-2.11719 0.0834,-0.67652 0.23899,-1.32563 0.53516,-1.95117 0.29618,-0.62554 0.73278,-1.22795 1.37695,-1.8125 0.64418,-0.58456 1.4957,-1.15152 2.62305,-1.70508 1.12735,-0.55356 2.52969,-1.0944 4.27539,-1.62695 1.74571,-0.53255 3.83474,-1.0566 6.33399,-1.57813 -18.80751,3.15763 -15.50638,7.20888 -15.47461,12.95899 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2124" d="m 217.95898,264.23438 c -1.87038,-2.59224 -3.45412,-5.21814 -4.73046,-7.86329 -1.27635,-2.64515 -2.24524,-5.30915 -2.88672,-7.97461 -0.32074,-1.33272 -0.56048,-2.66635 -0.71485,-3.99804 -0.15437,-1.33169 -0.22414,-2.66171 -0.20703,-3.98828 0.0171,-1.32658 0.12272,-2.64941 0.31641,-3.9668 0.19369,-1.31739 0.47619,-2.62947 0.85156,-3.93359 -3.41169,10.57894 -1.27171,21.77042 7.37109,31.72461 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2126" d="m 235.44727,272.8418 c -1.78236,-0.10142 -3.49568,-0.27493 -5.13086,-0.58203 -1.63519,-0.30711 -3.19249,-0.74733 -4.66211,-1.38282 -1.46962,-0.63548 -2.85106,-1.46617 -4.13672,-2.55273 -1.28566,-1.08657 -2.47529,-2.42951 -3.5586,-4.08984 4.0232,7.19252 9.64374,9.47305 17.48829,8.60742 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2128" d="m 352.21094,243.07812 c -0.86728,1.85762 -1.81754,3.59094 -2.84961,5.20508 -1.03208,1.61415 -2.14654,3.10879 -3.33985,4.49219 -1.19331,1.3834 -2.46542,2.65492 -3.8164,3.82031 -1.35099,1.16539 -2.78006,2.22544 -4.28516,3.18555 -1.5051,0.96011 -3.08653,1.82033 -4.74219,2.58789 -1.65565,0.76756 -3.38485,1.44155 -5.1875,2.0293 -1.80264,0.58774 -3.67891,1.08911 -5.625,1.50976 -1.94608,0.42066 -3.96287,0.76104 -6.04882,1.02735 17.12494,-2.04297 30.70536,-8.64667 35.89453,-23.85743 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+        <path sodipodi:nodetypes="ccsscccsscccccssscccccccscsccccscsccccccccsc" inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2130" d="m 339.94922,198.16016 c -32.0958,-3.67156 -54.13039,-3.02574 -80.25195,3.60351 -2.8551,1.82855 -5.62094,3.53059 -8.34961,5.09375 -2.72867,1.56316 -5.42053,2.98793 -8.12891,4.26172 -2.70838,1.27379 -5.43234,2.39697 -8.22656,3.35742 -2.79422,0.96046 -5.65834,1.75771 -8.64453,2.38086 -2.49925,0.52153 -4.58828,1.04558 -6.33399,1.57813 -1.7457,0.53255 -3.14804,1.07339 -4.27539,1.62695 -1.12735,0.55356 -1.97887,1.12052 -2.62305,1.70508 -0.64417,0.58455 -1.08077,1.18696 -1.37695,1.8125 -0.29617,0.62554 -0.4518,1.27465 -0.53516,1.95117 -0.0834,0.67652 -0.0939,1.3797 -0.0996,2.11719 -0.005,0.65779 -0.1854,1.45415 -0.23047,2.16797 0.005,0.86012 -0.0584,1.75431 -0.28516,2.69336 -0.37537,1.30412 -0.65787,2.6162 -0.85156,3.93359 -0.19369,1.31739 -0.2993,2.64022 -0.31641,3.9668 -0.0171,1.32657 0.0527,2.65659 0.20703,3.98828 0.15437,1.33169 0.39411,2.66532 0.71485,3.99804 0.64148,2.66546 1.61037,5.32946 2.88672,7.97461 1.27634,2.64515 2.86008,5.27105 4.73046,7.86329 1.08331,1.66033 2.27294,3.00327 3.5586,4.08984 1.28566,1.08656 2.6671,1.91725 4.13672,2.55273 1.46962,0.63549 3.02692,1.07571 4.66211,1.38282 1.63518,0.3071 3.3485,0.48061 5.13086,0.58203 6.92666,-0.0668 16.98116,-4.96122 24.06579,-9.98486 10.21409,-7.24271 18.92639,-25.59132 18.92639,-25.59132 0,0 -0.76705,11.91966 12.59961,22.70899 6.80046,5.48921 18.84722,7.23767 25.27735,6.96094 2.08595,-0.26631 4.10274,-0.60669 6.04882,-1.02735 1.94609,-0.42065 3.82236,-0.92202 5.625,-1.50976 1.80265,-0.58775 3.53185,-1.26174 5.1875,-2.0293 1.65566,-0.76756 3.23709,-1.62778 4.74219,-2.58789 1.5051,-0.96011 2.93417,-2.02016 4.28516,-3.18555 1.35098,-1.16539 2.62309,-2.43691 3.8164,-3.82031 1.19331,-1.3834 2.30777,-2.87804 3.33985,-4.49219 1.03207,-1.61414 1.98233,-3.34746 2.84961,-5.20508 0.91196,-2.53191 1.61912,-4.98945 2.13086,-7.37109 0.51173,-2.38164 0.82888,-4.68757 0.96093,-6.91211 0.13206,-2.22453 0.0786,-4.3691 -0.14843,-6.42969 -0.22709,-2.06059 -0.62768,-4.03792 -1.19336,-5.92773 -0.56569,-1.88981 -1.29595,-3.6921 -2.17969,-5.4043 -0.88374,-1.71219 -1.92226,-3.33358 -3.10352,-4.86132 -1.18125,-1.52775 -2.50661,-2.96042 -3.96484,-4.29688 -1.45823,-1.33646 -3.04901,-2.57651 -4.76367,-3.71484 z" style="display:inline;opacity:1;fill:#ffffff;stroke-width:0.99515665"/>
+        <path inkscape:connector-curvature="0" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2132" d="m 339.94922,198.16016 c 1.71466,1.13833 3.30544,2.37838 4.76367,3.71484 1.45823,1.33646 2.78359,2.76913 3.96484,4.29688 1.18126,1.52774 2.21978,3.14913 3.10352,4.86132 0.88374,1.7122 1.614,3.51449 2.17969,5.4043 0.56568,1.88981 0.96627,3.86714 1.19336,5.92773 0.22708,2.06059 0.28049,4.20516 0.14843,6.42969 -0.13205,2.22454 -0.4492,4.53047 -0.96093,6.91211 -0.51174,2.38164 -1.2189,4.83918 -2.13086,7.37109 9.47613,-21.16383 1.84382,-35.97308 -12.26172,-44.91796 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Clavicle" style="display:inline" inkscape:label="Clavicle">
+    <path inkscape:connector-curvature="0" d="m 309.9875,184.0875 c 14.75,-2.5125 17.4,-1.9875 45.45,-5.375 -27.27187,3.9625 -35,4.3375 -45.45,5.375 z" class="shadow" id="XMLID_511_" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 297.39343,185.90351 c -10.35625,0.46563 -15.06859,3.45066 -23.39359,4.91628 7.69063,-2.24062 15.15922,-4.91628 23.39359,-4.91628 z" class="shadow" id="XMLID_546_" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 313.8375,183.4375 c 10.06542,-14.75429 4.91406,-12.50942 11.3875,-27.5625 -4.64445,12.75714 -1.92662,15.28512 -11.3875,27.5625 z" class="shadow" id="XMLID_511_-1" sodipodi:nodetypes="ccc"/>
+    <path inkscape:connector-curvature="0" d="m 302.62124,184.29159 c -0.67705,-3.9108 -0.64175,-6.21768 -2.35616,-8.91389 1.38684,2.4846 1.37673,4.45479 2.35616,8.91389 z" class="shadow" id="XMLID_511_-1-8" sodipodi:nodetypes="ccc"/>
+  </g>
+  <g inkscape:groupmode="layer" id="Head_" style="display:inline;opacity:1" inkscape:label="Head_">
+    <g inkscape:groupmode="layer" id="Head" inkscape:label="Head" style="display:inline;opacity:1">
+      <path sodipodi:nodetypes="cccccc" id="path4126" class="shadow head" d="m 330.67904,147.05787 c 4.02576,-14.5334 2.40774,-9.56522 4.60772,-24.96522 4.35294,-45.564708 -25.44467,-52.371855 -51.32169,-49.098532 -28.88715,12.369092 -23.56049,37.717112 -21.60625,58.861762 6.66296,29.71585 21.76686,38.584 40.69493,44.03319 8.24106,-6.80961 18.66057,-9.28422 27.62529,-28.8312 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 330.67904,147.05787 c 3.72059,-14.62059 2.40772,-9.56522 4.60772,-24.96522 4.35294,-45.564708 -27.66288,-52.98142 -51.35294,-49.098532 -28.54575,12.837088 -23.30441,38.335292 -21.575,58.861762 6.84118,29.3 22.26258,37.42731 40.69493,44.03319 8.22825,-6.89931 18.52529,-10.2312 27.62529,-28.8312 z" class="skin head" id="path931" sodipodi:nodetypes="cccccc"/>
+      <g style="display:inline;opacity:1" id="g6985"/>
+      <path sodipodi:nodetypes="ccc" id="path836-0-8" class="shadow" d="m 289.19072,140.7229 c -0.58382,3.43317 -0.99352,4.10273 -2.32781,7.22613 0.94543,-2.80397 1.75469,-4.08105 2.32781,-7.22613 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path836-0-8-3" class="shadow" d="m 289.73258,148.65358 c -1.16267,0.69754 -1.8436,-0.002 -2.85814,-0.73987 0.89019,0.8089 1.8548,1.4671 2.85814,0.73987 z" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Makeup_" inkscape:label="Makeup_" style="display:inline">
+      <g style="display:inline" inkscape:label="Makeup_Mouth_Angry" id="Makeup_Mouth_Angry" inkscape:groupmode="layer">
+        <path inkscape:connector-curvature="0" d="m 303.21211,160.51 c -0.1196,-0.44204 0.0157,-0.17175 0.0725,-0.73972 -0.45045,-1.43383 -2.50087,-3.65048 -5.17507,-3.87706 -1.31267,-0.11115 -2.14942,0.64259 -2.95604,0.71387 -0.89941,0.0794 -1.93684,-0.22714 -2.47046,0.0983 -2.11887,1.29216 -2.16833,3.5948 -2.56096,5.27793 0.0977,0.14622 0.13405,0.19158 0.24781,0.28458 2.03693,0.66569 2.28731,1.39548 3.57799,1.57204 1.78481,0.24416 3.66458,-0.12881 5.34987,-0.76518 1.45933,-0.55105 1.63305,-1.53502 3.9143,-2.56474 z" class="lips" id="path2167" sodipodi:nodetypes="ccsssccaacc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Makeup_Mouth_Happy" inkscape:label="Makeup_Mouth_Happy" style="display:inline">
+        <path sodipodi:nodetypes="ccsssccaacc" id="path2173" class="lips" d="m 306.2425,158.91338 c 0.0885,-0.52142 -0.3216,-0.52623 -0.53674,-0.90566 -1.91575,0.17329 -3.20151,-0.14738 -5.59157,-0.43958 -1.55764,-0.19043 -2.11895,0.9562 -2.92556,1.02748 -0.89942,0.0794 -1.58137,-0.68617 -2.52047,-0.32593 -2.30484,0.88413 -2.53398,1.90763 -3.41833,2.43189 -0.1583,0.26089 0.0291,0.23235 -0.12857,0.50599 1.8202,1.45612 2.86557,2.8365 4.73104,3.3106 1.76066,0.44746 3.77941,0.17651 5.41525,-0.61354 2.11526,-1.02161 1.78748,-1.80873 4.97488,-4.99126 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+    <g inkscape:groupmode="layer" id="Eyes_" inkscape:label="Eyes_" style="display:inline;opacity:1">
+      <g inkscape:groupmode="layer" id="Eyes_Happy" inkscape:label="Eyes_Happy" style="display:inline">
+        <path sodipodi:nodetypes="cccccc" id="path6045" class="shadow" d="m 307.10671,134.50075 c -2.14996,-0.21128 -3.4884,-1.89949 -3.24482,-3.7169 5.61251,-12.66418 20.17095,-9.17457 20.34208,-8.99178 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -1.92253,5.79302 -5.27149,5.56862 -13.41602,5.14749 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 307.10671,134.50075 c -1.87469,-0.40868 -3.30955,-2.02174 -3.24482,-3.70585 6.37333,-6.81838 12.60798,-6.56266 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -2.65086,5.61858 -6.10961,5.14951 -13.41602,5.14749 z" class="eyeball" id="XMLID_511_-4-2" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path6043" class="shadow" d="m 310.44159,134.49641 c -3.67367,-1.48686 -4.29831,-3.49933 -3.15534,-6.74851 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 2.99107,2.5491 2.13293,6.70626 -0.65334,9.45436 -2.61876,1.10509 -4.65424,0.97852 -6.51663,0.98374 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 310.44159,134.49641 c -3.31639,-1.90368 -3.90593,-3.95711 -3.15534,-6.74851 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 1.97318,2.65914 1.65167,6.75829 -0.65334,9.45436 -2.61876,1.10509 -4.65424,0.97852 -6.51663,0.98374 z" class="iris" id="XMLID_511_-4-2-3" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="aaaaa" id="path836-0" class="shadow" d="m 312.9516,125.29705 c 1.10576,-0.11043 1.2531,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12293 0.74332,-3.2328 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 317.67935,111.63924 c -7.50966,2.24905 -13.60059,5.38357 -18.28488,9.05551 -0.50012,-0.83277 -0.541,-1.08655 -0.54648,-1.94262 2.10133,-1.86939 9.26628,-5.39235 18.83136,-7.11289 z" class="shadow" id="path898" sodipodi:nodetypes="cccc"/>
+        <path sodipodi:nodetypes="cccc" id="path836-0-8-5-8" class="hair" d="m 317.67935,111.63924 c -7.62756,2.19852 -13.77221,5.31002 -18.28488,9.05551 -0.4503,-0.83989 -0.48773,-1.09416 -0.54648,-1.94262 1.80803,-1.6451 8.85545,-5.07818 18.83136,-7.11289 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccscccc" id="path6039" class="shadow" d="m 274.44008,140.2959 c -3.77011,-1.33495 -4.55682,-6.73794 -4.41296,-6.90577 l -2.12826,-0.77244 c 0,0 4.27612,-4.61357 8.17537,-4.1261 3.11408,0.38931 5.88666,4.99929 6.94086,6.58701 0.70038,0.99444 1.14834,1.97959 1.20977,3.09041 -0.11063,0.6088 -0.16261,0.79325 -1.19487,1.03043 -2.0078,1.16001 -6.00188,0.99826 -8.58991,1.09646 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 274.44008,140.2959 c -3.10223,-2.11414 -3.60251,-4.55455 -4.41296,-6.90577 6.75267,-6.49147 10.05247,0.18553 13.13641,2.39159 0.7155,0.74756 0.79828,1.35208 1.06133,2.38729 -0.18602,0.58367 -0.41907,0.70776 -1.19487,1.03043 -2.25853,0.56739 -6.04492,0.89652 -8.58991,1.09646 z" class="eyeball" id="XMLID_511_-4-2-6" sodipodi:nodetypes="cccccc"/>
+        <path inkscape:connector-curvature="0" d="m 277.23993,140.0554 c -3.75163,-1.66167 -4.05213,-6.80108 -3.89825,-8.99651 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.35859,1.15724 0.43496,2.38638 -0.22192,3.68841 0,0 -2.91362,0.57316 -5.45861,0.7731 z" class="shadow" id="path6037" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path2346" class="iris" d="m 277.23993,140.0554 c -3.52398,-2.02728 -3.57865,-6.55541 -3.89825,-8.99651 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.0721,1.2479 -0.002,2.50301 -0.22192,3.68841 0,0 -2.91362,0.57316 -5.45861,0.7731 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path836-0-1" class="shadow" d="m 278.79187,132.35429 c 0.7753,-0.12567 0.96972,1.30423 1.11402,2.07628 0.14378,0.76921 0.47663,2.16241 -0.28777,2.32986 -0.76786,0.16821 -1.09139,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.3869,-2.27094 0.4148,-2.40088 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 268.39113,125.24474 c 3.84956,-1.23054 7.58928,-1.35196 11.67387,-0.22046 -0.22533,-0.68817 -0.47718,-1.38369 -1.24059,-1.8713 -3.84357,-0.72563 -7.95641,0.48803 -10.43328,2.09176 z" class="shadow" id="path900" sodipodi:nodetypes="cccc"/>
+        <path sodipodi:nodetypes="cccc" id="path836-0-8-5-8-4" class="hair" d="m 268.39113,125.24474 c 3.88481,-1.32454 7.6163,-1.42402 11.67387,-0.22046 -0.29393,-0.68817 -0.5742,-1.38369 -1.24059,-1.8713 -3.82999,-0.617 -7.94966,0.54201 -10.43328,2.09176 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccc" id="path836-0-8-5" class="shadow" d="m 314.20378,119.09392 c -6.05866,2.28691 -11.22162,5.0986 -12.90586,12.75528 0.30717,-4.71449 0.75031,-5.81731 0.75031,-5.81731 0,0 5.19124,-5.91333 12.15555,-6.93797 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccc" id="path836-0-8-5-6" class="shadow" d="m 283.68032,132.67341 c -2.29173,-3.19341 -6.81165,-7.67408 -11.63652,-4.4549 4.04155,-3.32386 9.21676,0.61188 9.21676,0.61188 0,0 0.78358,1.28953 2.41976,3.84302 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g style="display:inline" inkscape:label="Eyes_Happy_Highlights" id="Eyes_Happy_Highlights" inkscape:groupmode="layer">
+        <path sodipodi:nodetypes="ccc" id="path1358" class="highlight1" d="m 276.31935,138.03596 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1360" class="highlight1" d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1362" class="highlight1" d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="path1364" class="highlight1" d="m 310.10154,134.01083 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1366" class="highlight1" d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccc" id="path1368" class="highlight2" d="m 321.00393,127.22871 c -4.30477,3.52286 -10.19709,4.94055 -15.78334,6.32872 1.62696,1.45996 10.61033,1.15816 12.42644,-0.49043 0,0 3.43904,-3.38118 3.3569,-5.83829 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1370" class="highlight2" d="m 283.12848,136.19405 c 0.0421,0.92348 -6.38287,1.60284 -11.65745,0.9147 0.37816,1.02046 2.99994,3.12279 2.99994,3.12279 2.95098,-0.14535 5.87909,-0.37074 8.66548,-1.09216 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Eyes_Angry" inkscape:label="Eyes_Angry" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 307.10947,134.55307 c -2.14996,-0.21128 -3.4884,-1.89949 -3.24482,-3.7169 0.90501,-3.62549 5.40258,-8.3911 5.85861,-8.3191 4.86402,-0.7642 5.54559,-1.15495 14.48347,-0.67268 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -1.89128,4.05864 -4.62305,4.52956 -13.41602,5.14749 z" class="shadow" id="path1272" sodipodi:nodetypes="ccccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1274" class="eyeball" d="m 307.10947,134.55307 c -1.87469,-0.40868 -3.30955,-2.02174 -3.24482,-3.70585 6.28282,-6.69771 12.58105,-6.52676 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -2.6457,5.43786 -9.03811,4.15868 -13.41602,5.14749 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 310.42091,134.12686 c -3.67367,-1.48686 -4.27487,-3.07746 -3.1319,-6.32664 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 2.99107,2.5491 2.10558,6.05001 -0.68069,8.79811 -1.41133,0.79838 -4.36294,1.09099 -6.51272,1.21812 z" class="shadow" id="path1276" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1278" class="iris" d="m 310.42091,134.12686 c -3.31639,-1.90368 -3.88249,-3.53524 -3.1319,-6.32664 3.29831,-1.48 6.34788,-3.25731 10.32531,-3.68959 1.97318,2.65914 1.62432,6.10204 -0.68069,8.79811 -2.63874,0.78543 -4.65878,1.07777 -6.51272,1.21812 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 312.95436,125.34937 c 1.10576,-0.11043 1.2531,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12293 0.74332,-3.2328 z" class="shadow" id="path1285" sodipodi:nodetypes="aaaaa"/>
+        <path sodipodi:nodetypes="cccc" id="path1287" class="shadow" d="m 317.65086,114.80093 c -7.68644,3.55278 -16.95996,9.88357 -21.12863,10.22739 -0.50012,-0.83277 -0.541,-1.08655 -0.54648,-1.94262 4.52321,-0.46314 11.95535,-5.79083 21.67511,-8.28477 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 317.65086,114.80093 c -7.80434,3.41386 -15.03783,8.63815 -21.12863,10.22739 -0.4503,-0.83989 -0.48773,-1.09416 -0.54648,-1.94262 4.62053,-0.16073 12.07485,-5.67553 21.67511,-8.28477 z" class="hair" id="path1289" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 274.44284,139.61902 c -3.77011,-1.33495 -4.55682,-6.00874 -4.41296,-6.17657 l -2.12826,-0.77244 c 2.10867,-1.74524 4.33093,-3.42232 8.17537,-4.1261 3.31352,1.95033 6.40829,4.86888 6.94086,6.58701 0.70038,0.99444 1.14834,1.97959 1.20977,3.09041 -0.11063,0.6088 -0.16261,0.79325 -1.19487,1.03043 -2.0078,1.16001 -6.00188,0.26906 -8.58991,0.36726 z" class="shadow" id="path1291" sodipodi:nodetypes="cccccccc"/>
+        <path sodipodi:nodetypes="cccccc" id="path1293" class="eyeball" d="m 274.44284,139.61902 c -3.10223,-2.11414 -3.60251,-3.82535 -4.41296,-6.17657 4.81902,-5.82796 9.04523,0.53115 13.13641,2.39159 0.7155,0.74756 0.79828,1.35208 1.06133,2.38729 -0.18602,0.58367 -0.41907,0.70776 -1.19487,1.03043 -2.25853,0.56739 -6.04492,0.16732 -8.58991,0.36726 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1295" class="shadow" d="m 277.24269,139.56084 c -3.75163,-1.66167 -4.05213,-6.2542 -3.89825,-8.44963 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.35859,1.15724 0.43496,2.38079 -0.22192,3.68282 0.0631,0.0631 -2.54258,0.40292 -5.45861,0.23181 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 277.24269,139.56084 c -3.52398,-2.02728 -3.57865,-6.00853 -3.89825,-8.44963 4.6668,-0.10393 6.50004,2.02537 9.57878,4.535 0.0721,1.2479 -0.002,2.49742 -0.22192,3.68282 0.0434,0.0916 -2.69968,0.48355 -5.45861,0.23181 z" class="iris" id="path1297" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 278.79463,132.40661 c 0.7753,-0.12567 0.96972,1.30423 1.11402,2.07628 0.14378,0.76921 0.47663,2.16241 -0.28777,2.32986 -0.76786,0.16821 -1.09139,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.3869,-2.27094 0.4148,-2.40088 z" class="shadow" id="path1299" sodipodi:nodetypes="aaaaa"/>
+        <path sodipodi:nodetypes="cccc" id="path1301" class="shadow" d="m 268.39389,124.29164 c 4.03739,0.7803 9.33495,3.23319 13.41954,4.36469 -0.22533,-0.68817 -0.22859,-1.82011 -0.992,-2.30772 -4.47886,-0.46046 -8.54751,-2.12495 -12.42754,-2.05697 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 268.39389,124.29164 c 4.14998,0.71944 9.36197,3.16113 13.41954,4.36469 -0.29393,-0.68817 -0.32561,-1.82011 -0.992,-2.30772 -4.43766,-0.34078 -8.31978,-2.00468 -12.42754,-2.05697 z" class="hair" id="path1303" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 314.20378,120.03142 c -6.05866,2.28691 -9.91789,5.31957 -11.60213,12.97625 1.05717,-5.02699 1.21906,-5.81731 1.21906,-5.81731 -0.0166,0.18218 3.35758,-5.46132 10.38307,-7.15894 z" class="shadow" id="path1431" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.68032,134.64216 c -2.29173,-3.19341 -6.45228,-8.28346 -11.63652,-5.8299 5.27592,-2.57386 9.21676,1.98688 9.21676,1.98688 0,0 0.78358,1.28953 2.41976,3.84302 z" class="shadow" id="path1433" sodipodi:nodetypes="cccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Eyes_Angry_Highlights" inkscape:label="Eyes_Angry_Highlights" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 276.31935,138.03596 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z" class="highlight1" id="path1406" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z" class="highlight1" id="path1408" sodipodi:nodetypes="aaaaa"/>
+        <path inkscape:connector-curvature="0" d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z" class="highlight1" id="path1410" sodipodi:nodetypes="aaaaa"/>
+        <path inkscape:connector-curvature="0" d="m 310.10154,134.01083 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z" class="highlight1" id="path1412" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z" class="highlight1" id="path1414" sodipodi:nodetypes="aaaaa"/>
+        <path inkscape:connector-curvature="0" d="m 321.00393,127.22871 c -4.30477,3.52286 -10.19709,4.94055 -15.78334,6.32872 1.62696,1.45996 11.01913,0.36266 12.83524,-1.28593 0.16245,0.19855 3.12965,-2.46418 2.9481,-5.04279 z" class="highlight2" id="path1416" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.12848,136.19405 c 0.0421,0.92348 -6.53131,0.97784 -11.80589,0.2897 0.37816,1.02046 3.14838,3.09154 3.14838,3.09154 2.95098,-0.14535 5.96765,0.44056 8.57173,-0.35388 1.67495,-0.40155 1.15179,-1.67781 0.0858,-3.02736 z" class="highlight2" id="path1418" sodipodi:nodetypes="ccccc"/>
+      </g>
+      <g inkscape:label="Eyes_Closed" id="Eyes_Closed" inkscape:groupmode="layer" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 302.16296,131.24318 c 2.57167,-0.52673 5.58238,0.006 9.33942,-0.69862 2.58668,-0.4848 5.43996,-1.74164 9.09976,-3.58177 l -2.13661,2.38519 c -4.04644,3.14664 -11.31128,2.34686 -16.30257,1.8952 z" class="shadow" id="path1266" sodipodi:nodetypes="csccc"/>
+        <path sodipodi:nodetypes="cccc" id="path1316" class="shadow" d="m 314.07752,117.274 c -6.46523,0.2848 -13.00456,1.26106 -19.23505,-0.64511 l -0.54648,-1.94262 c 6.66634,2.35597 13.21476,2.28288 19.78153,2.58773 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 314.07752,117.274 c -6.30971,0.1139 -12.52917,1.16848 -19.23505,-0.64511 -0.11296,-0.62159 -0.35966,-1.29334 -0.54648,-1.94262 6.39298,2.42643 13.10866,2.34048 19.78153,2.58773 z" class="hair" id="path1318" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 269.949,137.67138 c 0.73177,-0.37643 0.86265,-1.21509 1.07486,-1.99119 3.59562,2.03489 7.47707,0.76228 11.35725,-0.49555 -5.4811,2.92985 -9.73399,4.45824 -12.43211,2.48674 z" class="shadow" id="path1320" sodipodi:nodetypes="cccc"/>
+        <path sodipodi:nodetypes="cccc" id="path1330" class="shadow" d="m 268.39113,125.24474 c 3.63876,-0.89851 6.76925,-2.25327 10.18168,-4.73608 -0.62683,-0.53103 -0.61519,-0.89808 -0.76402,-1.63693 -2.88076,2.79444 -5.97516,5.03497 -9.41766,6.37301 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 268.39113,125.24474 c 3.984,-0.95362 7.05184,-2.69915 10.18168,-4.73608 -0.69182,-0.47535 -0.69569,-0.82906 -0.76402,-1.63693 -2.61352,2.58433 -5.48274,4.94492 -9.41766,6.37301 z" class="hair" id="path1332" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 316.03784,127.49081 c -4.30281,1.05938 -7.95357,2.3998 -14.53503,2.477 0.44427,-0.21168 0.43707,-0.6506 0.30235,-1.15169 6.72552,0.42105 9.85993,-0.72177 14.23268,-1.32531 z" class="shadow" id="path1305" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 284.71888,133.33632 c -4.35972,0.4276 -3.84243,1.28326 -12.01845,1.57179 3.11507,-0.36955 6.44566,-1.01385 8.97997,-2.27702 0.46806,0.45298 1.88596,0.52604 3.03848,0.70523 z" class="shadow" id="path1307" sodipodi:nodetypes="cccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Eyes_Shy" inkscape:label="Eyes_Shy" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 307.10671,133.23513 c -2.14996,-0.21128 -3.4884,-0.63387 -3.24482,-2.45128 5.61251,-12.66418 20.17095,-9.17457 20.34208,-8.99178 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -4.6569,4.69927 -4.74024,3.03737 -13.41602,3.88187 z" class="shadow" id="path1383" sodipodi:nodetypes="cccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1385" class="eyeball" d="m 307.10671,133.23513 c -1.87469,-0.40868 -3.30955,-0.75612 -3.24482,-2.44023 6.37333,-6.81838 12.60798,-6.56266 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -4.63523,3.72796 -4.96899,2.80576 -13.41602,3.88187 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 310.44159,132.82454 c -2.37038,-2.40092 -2.27065,-3.28058 -0.76472,-6.52976 2.69791,-2.16227 5.44322,-2.2007 9.71351,-2.30019 1.02447,3.36359 0.96171,4.79101 -0.65334,6.72697 -2.10986,1.90314 -6.35887,2.21411 -8.29545,2.10298 z" class="shadow" id="path1387" sodipodi:nodetypes="ccccc"/>
+        <path sodipodi:nodetypes="ccccc" id="path1389" class="iris" d="m 310.44159,132.80891 c -2.06639,-2.49743 -1.51531,-3.72273 -0.76472,-6.51413 3.39397,-1.8971 5.44322,-2.2007 9.71351,-2.30019 0.91996,3.36377 0.44572,5.40578 -0.65334,6.71134 -2.09074,1.5744 -4.38813,2.04437 -8.29545,2.10298 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 314.67793,125.49592 c 1.10576,-0.11043 1.25309,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12292 0.74332,-3.2328 z" class="shadow" id="path1391" sodipodi:nodetypes="aaaaa"/>
+        <path sodipodi:nodetypes="cccc" id="path1393" class="shadow" d="m 316.5303,114.40138 c -6.66941,0.72065 -12.03275,1.96548 -21.48896,0.96797 -0.0572,-0.64754 -0.32141,-1.29508 -0.54648,-1.94262 7.94186,0.96275 14.90918,0.88375 22.03544,0.97465 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 316.5303,114.40138 c -6.85014,0.90399 -13.36209,1.48406 -21.48896,0.96797 0.0949,-0.51969 -0.28129,-1.25676 -0.54648,-1.94262 7.70775,1.30604 14.79826,0.94191 22.03544,0.97465 z" class="hair" id="path1395" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 274.44008,139.12475 c -3.77011,-1.33495 -4.55682,-5.56679 -4.41296,-5.73462 l -2.12826,-0.77244 c 0,0 4.27612,-3.56396 8.17537,-3.07649 3.11408,0.38931 4.98068,3.73976 6.94086,5.5374 0.70038,0.99444 0.6622,0.90788 0.72363,2.0187 -0.11063,0.6088 0.14384,0.65866 -0.70873,0.93099 -2.0078,1.16001 -6.00188,0.99826 -8.58991,1.09646 z" class="shadow" id="path1397" sodipodi:nodetypes="cccscccc"/>
+        <path sodipodi:nodetypes="cccccc" id="path1399" class="eyeball" d="m 274.44008,139.12475 c -3.10223,-2.11414 -3.60251,-3.3834 -4.41296,-5.73462 6.75267,-6.49147 10.05247,0.18553 13.13641,2.39159 0.36003,0.38428 0.18323,0.27256 0.44628,1.30777 -0.18602,0.58367 -0.1204,0.39348 -0.57982,0.9388 -2.25853,0.56739 -6.04492,0.89652 -8.58991,1.09646 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1401" class="shadow" d="m 277.23993,138.8953 c -3.23601,-2.56011 -2.26384,-6.08103 -2.10996,-8.27646 4.33748,0.018 4.70133,2.39873 7.79049,4.97505 0.35859,1.15724 0.43496,1.22628 -0.22192,2.52831 0,0 -2.91362,0.57316 -5.45861,0.7731 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 277.23993,138.90635 c -3.19586,-2.9179 -1.97786,-5.79953 -2.10996,-8.28751 3.93974,0.22794 4.70133,2.39873 7.79049,4.97505 1.19438,0.83852 0.73936,2.31119 -0.22192,2.53936 0,0 -2.91362,0.57316 -5.45861,0.7731 z" class="iris" id="path1403" sodipodi:nodetypes="ccccc"/>
+        <path inkscape:connector-curvature="0" d="m 280.24499,132.97929 c 0.77531,-0.12566 0.96972,1.30423 1.11402,2.07628 0.14378,0.7692 0.47663,2.16241 -0.28777,2.32986 -0.76787,0.16821 -1.09138,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.38688,-2.27094 0.4148,-2.40088 z" class="shadow" id="path1405" sodipodi:nodetypes="aaaaa"/>
+        <path sodipodi:nodetypes="cccc" id="path1407" class="shadow" d="m 266.88853,124.93538 c 5.14281,-2.35048 8.8204,-4.54964 11.7733,-6.94902 -0.64858,-0.54081 -1.09249,-1.15385 -1.24059,-1.8713 -3.15256,3.1591 -6.34148,6.29597 -10.53271,8.82032 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 266.71175,125.01272 c 4.28394,-1.97306 8.31478,-4.40496 11.95008,-7.02636 -0.59259,-0.44063 -1.10195,-0.96639 -1.24059,-1.8713 -3.0006,3.32594 -6.50676,6.48064 -10.70949,8.89766 z" class="hair" id="path1409" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 315.90526,120.41975 c -7.90241,3.58378 -11.88871,4.3252 -14.9167,11.98188 0.30717,-4.71449 0.75031,-4.84504 0.75031,-4.84504 0,0 7.35676,-6.00172 14.16639,-7.13684 z" class="shadow" id="path1411" sodipodi:nodetypes="cccc"/>
+        <path inkscape:connector-curvature="0" d="m 283.68032,134.28278 c -2.29173,-3.19341 -6.45739,-7.99776 -13.10527,-5.22052 5.93085,-3.26862 10.68551,1.3775 10.68551,1.3775 0,0 0.78358,1.28953 2.41976,3.84302 z" class="shadow" id="path1413" sodipodi:nodetypes="cccc"/>
+      </g>
+      <g style="display:inline" inkscape:label="Eyes_Shy_Highlights" id="Eyes_Shy_Highlights" inkscape:groupmode="layer">
+        <path sodipodi:nodetypes="ccc" id="path1422" class="highlight1" d="m 276.31935,136.60153 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1424" class="highlight1" d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1426" class="highlight1" d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="path1428" class="highlight1" d="m 308.9531,132.21396 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="aaaaa" id="path1430" class="highlight1" d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccccc" id="path1432" class="highlight2" d="m 321.26909,125.30626 c -4.30477,3.52286 -11.2025,5.59241 -16.78875,6.98058 0.42493,0.38132 2.61485,0.92369 2.61485,0.92369 3.74766,-0.56824 8.59308,-0.25714 11.14846,-2.06598 0,0 2.93081,-1.48083 3.02544,-5.83829 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cccccc" id="path1434" class="highlight2" d="m 283.12848,135.7569 c 0.0421,0.92348 -6.71985,0.86812 -11.99443,0.17998 0.37816,1.02046 3.3093,3.19461 3.3093,3.19461 2.95098,-0.14535 5.90671,-0.44256 8.6931,-1.16398 0.9821,-1.2502 0.32176,-1.64424 -0.008,-2.21061 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+    <g inkscape:groupmode="layer" id="Mouth_" inkscape:label="Mouth_" style="display:inline;opacity:1">
+      <g style="display:inline;opacity:1" inkscape:label="Mouth_Happy" id="Mouth_Happy" inkscape:groupmode="layer">
+        <path inkscape:connector-curvature="0" d="m 301.27218,163.91304 c -2.02347,0.86053 -3.10624,0.92883 -5.4758,0.64055 2.47756,1.53907 4.80114,1.46264 5.4758,-0.64055 z" class="shadow" id="path1314" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 305.80825,157.94409 c -0.8548,-0.20715 -1.63651,1.18171 -2.24611,1.38466 -1.65756,0.55182 -3.23335,0.94823 -4.6915,1.22616 -0.25799,0.0491 -0.47638,-0.0203 -0.72681,0.0217 -0.17097,0.0286 -0.37606,0.17057 -0.54336,0.19602 -0.56454,0.0858 -1.10774,0.15389 -1.62721,0.20654 -0.24658,0.025 -0.48781,-0.0684 -0.72344,-0.0501 -0.24098,0.0187 -0.4761,0.14908 -0.70508,0.16146 -1.01288,0.0547 -1.64256,0.0771 -2.18978,0.0581 -0.33886,-0.0117 -0.63527,-0.73644 -0.99312,-0.59295 -0.2332,0.0935 -0.35349,0.52681 -0.20093,0.72644 0.25514,0.33384 1.08425,-0.0325 1.26053,-0.005 3.52088,0.54577 8.29972,-0.19908 12.32373,-2.04708 1.11562,-0.51234 1.35245,0.0138 1.54245,-0.49122 0.10894,-0.28951 -0.17874,-0.72172 -0.47937,-0.79457 z" class="shadow" id="path1317" sodipodi:nodetypes="assssssssaassaa"/>
+        <path inkscape:connector-curvature="0" d="m 302.18075,157.88492 c -1.9255,-0.43023 -2.47083,-0.86137 -4.58948,0.56243 1.20293,-0.76676 2.88849,-0.83196 4.58948,-0.56243 z" class="shadow" id="path1319" sodipodi:nodetypes="ccc"/>
+        <path sodipodi:nodetypes="ccc" id="path1321" class="shadow" d="m 296.50014,158.47304 c -1.4946,-0.56084 -1.90245,-0.29834 -3.21761,0.49033 1.26388,-0.42143 1.56627,-0.69239 3.21761,-0.49033 z" inkscape:connector-curvature="0"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Mouth_Happy_Highlights" inkscape:label="Mouth_Happy_Highlights" style="display:inline">
+        <path inkscape:connector-curvature="0" d="m 304.37886,159.86327 c -2.57237,0.619 -4.07207,1.20035 -5.28117,1.79175 0.5751,0.66563 4.82493,0.14322 5.28117,-1.79175 z" class="highlight2" id="path1464" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 296.02299,162.37527 c -0.81152,-0.0632 -2.02161,-0.91858 -3.12969,-0.82183 0.45583,0.75233 2.15352,1.92215 3.12969,0.82183 z" class="highlight2" id="path1466" sodipodi:nodetypes="ccc"/>
+        <path inkscape:connector-curvature="0" d="m 296.71391,158.72134 c -0.78327,0.45697 -1.4199,0.7394 -2.39837,-0.0329 0.33843,-0.28242 1.31961,-0.35856 2.39837,0.0329 z" class="highlight2" id="path1468" sodipodi:nodetypes="ccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Mouth_Angry" inkscape:label="Mouth_Angry" style="display:inline;opacity:1">
+        <path sodipodi:nodetypes="ccc" id="path1342" class="shadow" d="m 299.33045,163.0623 c -2.22683,0.77196 -3.28766,0.91329 -5.47579,0.78419 2.47755,1.53907 4.80113,1.31901 5.47579,-0.78419 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="cssssssssaassaacc" id="path1344" class="shadow" d="m 303.29252,159.74962 c -0.77397,-0.41783 -1.94426,-0.53294 -2.58543,-0.49177 -1.74342,0.11193 -2.32053,-0.0884 -3.77868,0.18949 -0.25799,0.0491 -0.47638,-0.0203 -0.72681,0.0217 -0.17097,0.0286 -0.37606,-0.0325 -0.54336,-0.007 -0.56454,0.0858 -1.03368,0.29437 -1.55315,0.34696 -0.24658,0.025 -0.53089,0.16145 -0.76652,0.17978 -0.24098,0.0187 -0.49192,0.077 -0.70508,0.16146 -0.92748,0.36784 -1.16576,0.90482 -1.58849,1.17427 -0.28593,0.18224 -0.70137,0.0459 -0.85089,0.30787 -0.10881,0.1907 -0.0885,0.5853 0.12207,0.64731 0.40306,0.11869 0.71966,-0.81474 0.8675,-0.91454 3.35817,-2.26716 6.47154,-1.47489 10.53018,-1.64788 1.22653,-0.0523 0.81628,1.10278 1.32302,0.92292 0.29101,-0.10322 0.21263,-0.58462 0.25566,-0.89039 v -2e-5 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="path1346" class="shadow" d="m 300.31348,156.54312 c -2.16558,-0.9782 -2.33357,-1.18382 -4.62348,-0.0559 1.2946,-0.59913 2.52689,-0.84476 4.62348,0.0559 z" inkscape:connector-curvature="0"/>
+        <path inkscape:connector-curvature="0" d="m 294.63515,156.61859 c -1.56921,-0.29313 -2.09801,-0.19745 -3.08382,1.04091 1.26304,-1.19282 1.42246,-0.95353 3.08382,-1.04091 z" class="shadow" id="path1348" sodipodi:nodetypes="ccc"/>
+      </g>
+      <g inkscape:groupmode="layer" id="Mouth_Angry_Highlights" inkscape:label="Mouth_Angry_Highlights" style="display:inline">
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8" class="highlight2" d="m 301.64789,159.89477 c -2.60544,-0.21224 -3.67604,0.1428 -4.86465,0.77437 0.59706,0.64599 3.22498,-0.0294 4.86465,-0.77437 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4" class="highlight2" d="m 294.48087,160.89481 c -1.88322,-0.56039 -2.25362,0.29676 -3.51638,0.91278 2.02472,-0.35251 2.05407,-0.34279 3.51638,-0.91278 z" inkscape:connector-curvature="0"/>
+        <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4-4" class="highlight2" d="m 294.88197,157.11058 c -0.78326,0.45698 -1.4199,0.7394 -2.39837,-0.0329 0.33843,-0.28241 1.31962,-0.35855 2.39837,0.0329 z" inkscape:connector-curvature="0"/>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Head_Highlights_" inkscape:label="Head_Highlights_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Face_Highlights" inkscape:label="Face_Highlights" style="display:inline">
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5" class="highlight2" d="m 275.19669,144.91885 c -0.45504,-0.57446 -1.58115,-0.6711 -2.43843,-0.69755 0.35064,0.57872 1.68753,1.54395 2.43843,0.69755 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-7" class="highlight2" d="m 325.10727,135.45519 c -1.5378,0.39782 -2.70811,0.94199 -3.38861,1.31329 0.35064,0.57872 2.6819,0.15183 3.38861,-1.31329 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4-8" class="highlight2" d="m 287.40684,166.81779 c -0.37424,-0.72047 -8.60195,-6.72222 -9.45432,-6.6478 0.1152,0.76888 7.07094,6.64629 9.45432,6.6478 z" inkscape:connector-curvature="0"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Collar_" inkscape:label="Collar_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Collar_Tight_Steel" inkscape:label="Collar_Tight_Steel" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 338.84761,173.73169 c -0.2,0.2 -0.4,0.3 -0.7,0.4 -6,2.3 -29.80237,10.05946 -33.20237,9.95946 -5.9,-0.2 -7.5,-2.3 -7.7,-2.5 -0.7,-0.8 -0.4,-2.1 0.8,-2.6 1.3,-0.5 2.5,-0.5 3.2,0.3 0.009,3.44028 22.58334,-3.43594 34.70237,-8.25946 1.2,-0.5 2.7,-0.1 3.3,0.7 0.5,0.6 0.3,1.4 -0.4,2" id="path11-0" sodipodi:nodetypes="ccccccccc"/>
+      <path inkscape:connector-curvature="0" class="steel_chastity" d="m 305.44524,184.09115 c -6,0 -7.8,-2 -8,-2.1 -0.8,-0.8 -0.7,-2 0.5,-2.5 1.2,-0.6 2.76576,-0.84472 3.2,0.2 1.15585,2.7808 23.09391,-3.71229 34.60237,-8.75946 1.2,-0.5 2.7,-0.2 3.4,0.6 0.7,0.8 0.3,1.9 -0.9,2.3 -5.7,2.3 -29.40237,10.25946 -32.80237,10.25946 z" id="path13" sodipodi:nodetypes="sccscscs"/>
+      <circle r="3.5999207" transform="rotate(-59.999272)" style="fill:none;stroke:#fefff2;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:19" cx="-7.6341872" cy="357.4375" id="ellipse15"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Stylish_Leather" inkscape:label="Collar_Stylish_Leather" style="display:inline">
+      <path id="path9-3" d="m 300.325,177.925 c -0.10721,3.72459 23.52313,-0.3129 34.7073,-8.01083 0.19654,-0.30228 0.55115,-0.23713 0.76157,-0.001 l 2.02623,2.93844 c 0.079,0.18372 0.0662,0.40696 0.0139,0.53834 -3.83995,5.24449 -28.00898,11.23512 -31.30898,11.23512 -5.2,0 -7.1,-1.8 -7.6,-2.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.4 l 0.9,-3.4 c 0,-0.4 0.3,-0.6 0.6,-0.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccscccc"/>
+      <path style="fill:#ffffff" d="m 303.00781,184.69339 h 3.4 v -0.6 h 1 v 1.5 h -5.4 v -7 h 5.4 v 1.3 l -1,0.1 v -0.5 h -3.4 z" id="polygon11" inkscape:connector-curvature="0"/>
+      <rect x="-172.36217" y="307.03809" transform="rotate(-88.080303)" class="white" width="0.9999612" height="2.499903" id="rect13"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Shock_Punishment" inkscape:label="Collar_Shock_Punishment" style="display:inline">
+      <path id="path9-4" d="m 306.15,183.8375 c -5.4,0 -7.7,-3.1 -7.8,-3.3 -0.5,-0.7 -0.3,-1.6 0.4,-2.1 0.7,-0.5 1.6,-0.3 2.1,0.4 0.2,0.3 5.3375,5.475 34.275,-9.625 0.7,-0.4 1.6,-0.2 2.1,0.5 0.4,0.7 0.2,1.6 -0.5,2.1 -5.7,3.4 -27.375,12.025 -30.575,12.025 z" inkscape:connector-curvature="0" sodipodi:nodetypes="scsccccs"/>
+      <rect x="299.67276" y="183.13045" transform="rotate(-1.1601983)" width="6.3000274" height="10.500045" id="rect11"/>
+      <rect x="299.66086" y="183.14191" transform="rotate(-1.1601983)" class="steel_chastity" width="6.0000257" height="10.100043" id="rect13-0"/>
+      <circle cx="288.78955" cy="208.56601" r="1.3" id="circle15" style="fill:#ce5b5b" transform="rotate(-5.1341055)"/>
+      <circle style="fill:#d13737" cx="288.78955" cy="208.466" r="1.2" id="circle17" transform="rotate(-5.1341055)"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Satin_Choker" inkscape:label="Collar_Satin_Choker" style="display:inline">
+      <path id="path9-9" d="m 300.45955,176.79435 c 5.75393,4.57809 15.10826,-1.25778 32.69185,-10.78675 0.25346,-0.26166 0.59427,-0.13296 0.75882,0.13764 l 1.45752,3.26042 c 0.0437,0.19518 -0.0117,0.41252 -0.0889,0.53226 -4.82606,4.46138 -25.17723,13.55643 -28.52657,13.55643 -5.27775,0 -6.06553,-1.19062 -6.573,-1.89062 -0.1015,-0.1 -0.1015,-0.3 -0.1015,-0.4 l -0.22717,-4.00938 c 0,-0.4 0.30448,-0.6 0.60897,-0.4 z" inkscape:connector-curvature="0" style="stroke-width:1.00744832" sodipodi:nodetypes="cccccsccccc"/>
+      <path id="path13-6" d="m 299.96797,179.10998 c 7.00222,2.06304 7.82277,2.97274 34.52324,-11.76259 l 0.27371,0.75854 c -4.77068,4.24404 -24.96781,13.18842 -28.11416,13.18842 -5.07476,0 -6.87776,-1.28437 -6.67477,-1.28437" class="steel_chastity" inkscape:connector-curvature="0" sodipodi:nodetypes="cccsc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Pretty_Jewelry" inkscape:label="Collar_Pretty_Jewelry" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 299.76916,182.31783 c 0,0 -0.1,0 -0.1,0 -0.3,-0.2 -0.7,-1.3 -0.7,-1.7 -0.1,-0.3 -0.4,-1.5 -0.2,-1.8 v -0.1 l 0.1,-0.1 c 0.1,0 0.1,0 0.2,0 0.3,0.2 0.7,1.3 0.7,1.7 v 0 c 0.1,0.3 0.4,1.5 0.2,1.8 v 0.1 l -0.2,0.1 c 0,0 0,0 0,0 z m -0.7,-2.8 c 0,0.3 0.1,0.6 0.2,1 0.1,0.4 0.2,0.8 0.3,1 0,-0.3 -0.1,-0.6 -0.2,-1 v 0 c -0.1,-0.5 -0.2,-0.8 -0.3,-1 z" id="path7-4"/>
+      <path inkscape:connector-curvature="0" d="m 300.56916,185.71783 c -0.6,0 -1.2,-0.7 -1.5,-1.8 -0.4,-1.2 -0.2,-2.4 0.5,-2.7 0.7,-0.3 1.5,0.5 1.8,1.7 v 0 c 0.4,1.2 0.2,2.4 -0.5,2.7 -0.1,0 -0.2,0.1 -0.3,0.1 z m -0.8,-4.2 c -0.1,0 -0.1,0 -0.2,0 -0.5,0.2 -0.6,1.2 -0.3,2.2 0.3,1 1,1.7 1.4,1.5 0.5,-0.2 0.6,-1.2 0.3,-2.2 v 0 c -0.2,-0.9 -0.8,-1.5 -1.2,-1.5 z" id="path9-49"/>
+      <path inkscape:connector-curvature="0" d="m 301.96916,189.21783 c -0.2,0 -0.4,-0.2 -0.9,-2.1 -0.6,-2.2 -0.4,-2.2 -0.3,-2.3 0.2,-0.1 0.3,0.2 0.5,0.7 0.1,0.4 0.3,0.9 0.4,1.4 0.7,2.2 0.5,2.2 0.3,2.3 0,0 0,0 0,0 z" id="path11-9"/>
+      <path inkscape:connector-curvature="0" d="m 303.16916,192.61783 c -0.6,0 -1.4,-0.7 -1.8,-1.8 -0.2,-0.6 -0.3,-1.2 -0.3,-1.6 0.1,-0.5 0.3,-0.9 0.6,-1 0.4,-0.1 0.8,0 1.2,0.3 0.4,0.3 0.7,0.8 0.9,1.4 0.5,1.2 0.3,2.4 -0.4,2.7 0,0 -0.1,0 -0.2,0 z m -1.1,-4.1 c -0.1,0 -0.1,0 -0.1,0 -0.2,0.1 -0.3,0.3 -0.4,0.7 0,0.4 0,0.9 0.2,1.5 0.4,1.1 1.2,1.7 1.6,1.5 0.4,-0.2 0.6,-1.1 0.2,-2.2 -0.2,-0.5 -0.5,-1 -0.8,-1.2 -0.3,-0.2 -0.5,-0.3 -0.7,-0.3 z" id="path13-3"/>
+      <path inkscape:connector-curvature="0" d="m 313.01655,195.31378 c -0.29028,-0.0758 -0.45854,-0.22303 -0.62681,-0.3703 -0.45428,-0.63532 0.0423,-1.74591 1.16566,-2.48621 1.12337,-0.7403 2.28873,-0.84954 2.74301,-0.21422 0.45428,0.63531 -0.0423,1.74591 -1.16566,2.48621 -0.75733,0.52578 -1.53565,0.73604 -2.1162,0.58452 z m 2.55404,-3.05399 c -0.48379,-0.12628 -1.16536,0.10923 -1.80068,0.56352 -0.87934,0.59729 -1.3254,1.51436 -1.01413,1.90566 0.28602,0.48805 1.25786,0.3283 2.13721,-0.26899 0.87934,-0.59729 1.3254,-1.51437 1.01413,-1.90566 -0.0463,-0.21877 -0.14301,-0.24403 -0.33653,-0.29453 z" id="path15"/>
+      <path inkscape:connector-curvature="0" d="m 318.44839,190.73719 c -0.19352,-0.0505 -0.29028,-0.0758 -0.36178,-0.19777 -0.47954,-0.53856 -0.10498,-1.57765 0.85012,-2.46522 0.95511,-0.88756 2.07422,-1.21557 2.55375,-0.67701 0.23977,0.26928 0.23551,0.68156 0.10924,1.16536 -0.22303,0.45854 -0.54281,0.89182 -0.95936,1.29985 -0.41655,0.40803 -0.9046,0.69405 -1.3674,0.88331 -0.31553,0.021 -0.63106,0.042 -0.82457,-0.009 z m 2.48254,-3.176 c -0.38704,-0.10101 -1.06861,0.1345 -1.75443,0.78229 -0.83309,0.81606 -1.15714,1.66164 -0.82061,1.95617 0.16826,0.14727 0.36178,0.19778 0.70256,0.08 0.43754,-0.0925 0.82884,-0.40377 1.22013,-0.71504 0.41654,-0.40803 0.71108,-0.74456 0.81209,-1.13159 0.10102,-0.38704 0.15153,-0.58056 -0.0167,-0.72782 0.0505,-0.19352 -0.0462,-0.21877 -0.14301,-0.24403 z" id="path17"/>
+      <path inkscape:connector-curvature="0" d="m 315.41907,192.84034 v 0 c -0.16827,-0.14727 -0.40804,-0.41655 1.42641,-1.90141 0.41655,-0.40803 0.9046,-0.69404 1.27064,-0.90856 0.48805,-0.28602 0.70682,-0.33227 0.87508,-0.185 l 0.0968,0.0253 -0.0253,0.0967 c -0.004,0.41229 -1.17814,1.34611 -1.54417,1.56062 -0.4418,0.50479 -1.71244,1.41335 -2.09947,1.31234 z m 2.64228,-2.20416 c -0.24402,0.14301 -0.61006,0.35752 -0.90459,0.69405 -0.3913,0.31127 -0.66058,0.55104 -0.92986,0.7908 0.24403,-0.143 0.61007,-0.35752 0.9046,-0.69404 0.39129,-0.31128 0.66057,-0.55104 0.92985,-0.79081 z" id="path19"/>
+      <path inkscape:connector-curvature="0" d="m 324.34303,185.97135 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21"/>
+      <path inkscape:connector-curvature="0" d="m 321.26745,187.85573 -0.0715,-0.12202 0.0253,-0.0968 c 0.0505,-0.19351 0.58907,-0.67305 1.64094,-1.53536 0.75733,-0.52579 1.66192,-1.21983 1.88069,-1.26608 l 0.0968,0.0252 0.0715,0.12201 -0.0253,0.0968 c -0.0505,0.19352 -0.58906,0.67305 -1.64093,1.53537 v 0 c -0.68582,0.64779 -1.56517,1.24508 -1.97746,1.24083 z" id="path23"/>
+      <path inkscape:connector-curvature="0" d="m 310.45428,196.81537 -0.0715,-0.12201 0.0253,-0.0968 c 0.0253,-0.0968 -0.021,-0.31553 1.30014,-1.41761 v 0 c 1.49367,-1.3671 1.56517,-1.24509 1.73344,-1.09782 0.16826,0.14726 0.23976,0.26928 -1.2539,1.63638 -1.4179,1.07682 -1.63667,1.12307 -1.73343,1.09782 z" id="path27"/>
+      <path inkscape:connector-curvature="0" d="m 304.16916,195.81783 v 0 c -0.2,-0.1 -0.5,-0.8 -0.8,-2 -0.5,-2.1 -0.4,-2.2 -0.2,-2.2 v 0 c 0.2,0 0.3,-0.1 0.9,2 0.3,1.2 0.4,1.9 0.3,2.1 v 0.1 z" id="path29"/>
+      <path id="path33" d="m 311.56916,198.41783 c -0.5,2.1 -2.9,4.3 -5.7,5.9 -1.7,-2 -3.1,-5.4 -2.8,-7.8 0.3,-2 2.7,-3.6 4.3,1.1 3,-4.5 4.7,-1.1 4.2,0.8 z" inkscape:connector-curvature="0"/>
+      <path id="path35" d="m 310.96916,198.11783 c -0.5,2 -2.8,4.1 -5.4,5.6 -1.6,-1.9 -2.9,-5.1 -2.6,-7.3 0.2,-1.9 2.5,-3.4 4,1 2.8,-4.3 4.4,-1.1 4,0.7 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <rect x="337.68442" y="139.20795" transform="rotate(10.64922)" width="0.40000939" height="1.8000422" id="rect39"/>
+      <circle r="0.79999298" transform="rotate(-83.724979)" cx="-164.25607" cy="326.31647" id="ellipse41-6"/>
+      <path inkscape:connector-curvature="0" d="m 326.43427,183.10662 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43"/>
+      <path style="display:inline" inkscape:connector-curvature="0" d="m 328.8365,181.40598 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21-36"/>
+      <path style="display:inline" inkscape:connector-curvature="0" d="m 330.92774,178.54125 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43-6"/>
+      <path style="display:inline" inkscape:connector-curvature="0" d="m 333.24275,177.15598 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21-34"/>
+      <path style="display:inline" inkscape:connector-curvature="0" d="m 335.33399,174.29125 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43-0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Retirement_Nice" inkscape:label="Collar_Retirement_Nice" style="display:inline"><path inkscape:connector-curvature="0" d="m 300.64144,184.10882 c 0,0 -0.1,0 -0.1,0 -0.3,-0.2 -0.7,-1.3 -0.7,-1.7 -0.1,-0.3 -0.4,-1.5 -0.2,-1.8 v -0.1 l 0.1,-0.1 c 0.1,0 0.1,0 0.2,0 0.3,0.2 0.7,1.3 0.7,1.7 v 0 c 0.1,0.3 0.4,1.5 0.2,1.8 v 0.1 l -0.2,0.1 c 0,0 0,0 0,0 z m -0.7,-2.8 c 0,0.3 0.1,0.6 0.2,1 0.1,0.4 0.2,0.8 0.3,1 0,-0.3 -0.1,-0.6 -0.2,-1 v 0 c -0.1,-0.5 -0.2,-0.8 -0.3,-1 z" id="path7-5"/><path inkscape:connector-curvature="0" d="m 301.44144,187.50882 c -0.6,0 -1.2,-0.7 -1.5,-1.8 -0.4,-1.2 -0.2,-2.4 0.5,-2.7 0.7,-0.3 1.5,0.5 1.8,1.7 v 0 c 0.4,1.2 0.2,2.4 -0.5,2.7 -0.1,0 -0.2,0.1 -0.3,0.1 z m -0.8,-4.2 c -0.1,0 -0.1,0 -0.2,0 -0.5,0.2 -0.6,1.2 -0.3,2.2 0.3,1 1,1.7 1.4,1.5 0.5,-0.2 0.6,-1.2 0.3,-2.2 v 0 c -0.2,-0.9 -0.8,-1.5 -1.2,-1.5 z" id="path9-02"/><path inkscape:connector-curvature="0" d="m 302.84144,191.00882 c -0.2,0 -0.4,-0.2 -0.9,-2.1 -0.6,-2.2 -0.4,-2.2 -0.3,-2.3 0.2,-0.1 0.3,0.2 0.5,0.7 0.1,0.4 0.3,0.9 0.4,1.4 0.7,2.2 0.5,2.2 0.3,2.3 0,0 0,0 0,0 z" id="path11-94"/><path inkscape:connector-curvature="0" d="m 304.04144,194.40882 c -0.6,0 -1.4,-0.7 -1.8,-1.8 -0.2,-0.6 -0.3,-1.2 -0.3,-1.6 0.1,-0.5 0.3,-0.9 0.6,-1 0.4,-0.1 0.8,0 1.2,0.3 0.4,0.3 0.7,0.8 0.9,1.4 0.5,1.2 0.3,2.4 -0.4,2.7 0,0 -0.1,0 -0.2,0 z m -1.1,-4.1 c -0.1,0 -0.1,0 -0.1,0 -0.2,0.1 -0.3,0.3 -0.4,0.7 0,0.4 0,0.9 0.2,1.5 0.4,1.1 1.2,1.7 1.6,1.5 0.4,-0.2 0.6,-1.1 0.2,-2.2 -0.2,-0.5 -0.5,-1 -0.8,-1.2 -0.3,-0.2 -0.5,-0.3 -0.7,-0.3 z" id="path13-35"/><path inkscape:connector-curvature="0" d="m 313.78193,195.91021 c -0.29138,-0.0714 -0.46183,-0.21615 -0.63228,-0.36089 -0.46373,-0.62844 0.0161,-1.74634 1.12834,-2.50337 1.11216,-0.75702 2.27576,-0.88368 2.73949,-0.25523 0.46374,0.62845 -0.0161,1.74635 -1.12833,2.50337 -0.74938,0.53706 -1.52447,0.75894 -2.10722,0.61612 z m 2.50807,-3.09186 c -0.48564,-0.11901 -1.16361,0.12666 -1.79205,0.59039 -0.87031,0.61038 -1.3026,1.53403 -0.98551,1.92062 0.29329,0.48372 1.26263,0.30945 2.13294,-0.30093 0.87031,-0.61038 1.3026,-1.53403 0.98551,-1.92062 -0.0495,-0.21806 -0.14664,-0.24186 -0.34089,-0.28946 z" id="path15-1"/><path inkscape:connector-curvature="0" d="m 319.14469,191.25287 c -0.19425,-0.0477 -0.29137,-0.0714 -0.3647,-0.19234 -0.48754,-0.53133 -0.12857,-1.5759 0.81315,-2.47766 0.94172,-0.90175 2.0558,-1.24647 2.54333,-0.71515 0.24378,0.26567 0.24568,0.67797 0.12666,1.1636 -0.21614,0.46182 -0.52941,0.89984 -0.9398,1.31407 -0.4104,0.41421 -0.89412,0.7075 -1.35403,0.90366 -0.31518,0.0257 -0.63036,0.0514 -0.82461,0.004 z m 2.43475,-3.21279 c -0.38851,-0.0952 -1.06648,0.15046 -1.74253,0.80846 -0.8208,0.82843 -1.13215,1.67875 -0.79126,1.96822 0.17045,0.14473 0.3647,0.19234 0.70369,0.0695 0.43611,-0.099 0.8227,-0.41613 1.20929,-0.73322 0.41039,-0.41422 0.69986,-0.75511 0.79508,-1.14362 0.0952,-0.3885 0.14282,-0.58275 -0.0276,-0.72748 0.0476,-0.19426 -0.0495,-0.21806 -0.14664,-0.24186 z" id="path17-7"/><path inkscape:connector-curvature="0" d="m 316.14717,193.4011 v 0 c -0.17044,-0.14474 -0.41421,-0.41039 1.39781,-1.92253 0.4104,-0.41422 0.89412,-0.7075 1.25691,-0.92747 0.48372,-0.29329 0.70177,-0.34281 0.87222,-0.19807 l 0.0971,0.0238 -0.0238,0.0971 c 0.002,0.4123 -1.15786,1.36358 -1.52065,1.58354 -0.4342,0.51134 -1.6673,1.34168 -2.0796,1.3436 z m 2.60902,-2.24344 c -0.24186,0.14664 -0.60465,0.36661 -0.89411,0.7075 -0.38659,0.31709 -0.65226,0.56086 -0.91792,0.80463 0.24186,-0.14664 0.60465,-0.36661 0.89411,-0.7075 0.38659,-0.3171 0.65226,-0.56087 0.91792,-0.80463 z" id="path19-4"/><path inkscape:connector-curvature="0" d="m 324.96737,186.39938 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3"/><path inkscape:connector-curvature="0" d="m 321.92033,188.32955 -0.0733,-0.12093 0.0238,-0.0971 c 0.0476,-0.19427 0.57892,-0.6818 1.61777,-1.55975 0.74938,-0.53706 1.64349,-1.24456 1.86155,-1.29408 l 0.0971,0.0238 0.0733,0.12092 -0.0238,0.0971 c -0.0476,0.19425 -0.57894,0.68178 -1.61779,1.55974 v 0 c -0.67605,0.65799 -1.64348,1.24456 -1.95866,1.27028 z" id="path23-1"/><path inkscape:connector-curvature="0" d="m 311.24241,197.44996 -0.0733,-0.12093 0.0238,-0.0971 c 0.0238,-0.0971 -0.0257,-0.31518 1.27879,-1.43691 v 0 c 1.47305,-1.38929 1.54638,-1.26836 1.71681,-1.12363 0.17045,0.14474 0.24378,0.26567 -1.22927,1.65496 -1.40163,1.09792 -1.61969,1.14743 -1.71681,1.12363 z" id="path25-4"/><path inkscape:connector-curvature="0" d="m 305.04144,197.50882 v 0 c -0.2,-0.1 -0.5,-0.8 -0.8,-2 -0.5,-2.1 -0.4,-2.2 -0.2,-2.2 v 0 c 0.2,0 0.3,-0.1 0.9,2 0.3,1.2 0.4,1.9 0.3,2.1 v 0.1 z" id="path27-6"/><path inkscape:connector-curvature="0" d="m 329.69595,180.96886 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9"/><path inkscape:connector-curvature="0" d="m 329.0675,181.43259 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31"/><path d="m 304.24144,196.80882 7.3,0.5 -0.2,3.5 -7.3,-0.4 z" id="polygon35" inkscape:connector-curvature="0"/><path id="path37-4" d="m 304.74144,197.40882 6.3,0.4 -0.1,2.5 -6.3,-0.4 0.1,-2.5 m -0.5,-0.6 -0.2,3.6 7.3,0.4 0.2,-3.6 z" inkscape:connector-curvature="0"/><rect id="rect41" height="3.399874" width="7.0997367" transform="rotate(3.3047751)" y="178.83395" x="315.06049"/><path id="path43-2" d="m 304.74144,197.30882 6.1,0.4 -0.1,2.4 -6.1,-0.4 0.1,-2.4 m -0.5,-0.6 -0.2,3.4 7.1,0.4 0.2,-3.4 z" class="steel_chastity" inkscape:connector-curvature="0"/><text transform="rotate(3.3047751)" name="Collar_Text" x="315.78552" y="181.51642" style="font-size:1.96150005px;line-height:0%;font-family:sans-serif;fill:#ff0000" id="text1009">8888</text>
+<path style="display:inline" inkscape:connector-curvature="0" d="m 329.50389,181.73735 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3-5"/><path style="display:inline" inkscape:connector-curvature="0" d="m 334.23247,176.30683 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9-9"/><path style="display:inline" inkscape:connector-curvature="0" d="m 333.60402,176.77056 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31-3"/><path style="display:inline" inkscape:connector-curvature="0" d="m 333.76864,177.5389 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3-7"/><path style="display:inline" inkscape:connector-curvature="0" d="m 338.49722,172.10838 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9-7"/><path style="display:inline" inkscape:connector-curvature="0" d="m 337.86877,172.57211 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31-6"/></g>
+    <g inkscape:groupmode="layer" id="Collar_Neck_Corset" inkscape:label="Collar_Neck_Corset" style="display:inline;opacity:1">
+      <path inkscape:connector-curvature="0" d="m 355.58016,177.90382 c -16.75489,-1.68047 -24.26783,-1.85552 -25.04266,-28.06007 l 0.0614,-2.54085 c -4.44209,8.81484 -9.17434,14.60849 -14.23043,18.88685 -4.61614,3.90609 -9.48739,6.51233 -13.25962,9.74301 l -2.79922,-0.84568 0.24144,6.93439 c -5.15857,4.49938 -19.55545,5.94373 -26.62292,8.06291 -0.5,0.3 -0.26562,0.32812 0.23438,0.52812 4.47439,0.22267 8.86726,0.68988 12.875,2.3125 1.1,0.6 1.9,1.6 2.3,2.8 -2.64855,5.11669 -3.20471,10.23338 -4.70413,15.35007 5.7721,-5.57757 11.41269,-11.23251 19.12659,-15.66784 1.4,-0.8 2.9,-1.4 4.4,-1.8 16.28714,-6.9193 28.71122,-10.2157 47.6202,-14.30341 0.7,-0.2 0.6,-1.3 -0.2,-1.4 z" id="path1012" sodipodi:nodetypes="cccsccccccccccccc"/>
+      <path inkscape:connector-curvature="0" class="steel_chastity" d="m 305.2,184.4 c -0.7,0 -1.4,-0.2 -2,-0.5 -1.3,-0.7 -2,-2.1 -2,-3.5 0,-0.7 0.2,-1.4 0.5,-2 0.4,-0.7 1,-1.3 1.7,-1.6 0.2,-0.1 0.5,0 0.7,0.2 0.1,0.2 0,0.5 -0.2,0.7 -0.5,0.3 -1,0.7 -1.3,1.2 -0.3,0.5 -0.4,1 -0.4,1.5 0,1.1 0.6,2.1 1.5,2.7 0.5,0.3 1,0.4 1.5,0.4 1.1,0 2.1,-0.6 2.7,-1.5 0.3,-0.5 0.4,-1 0.4,-1.5 0,-1.1 -0.6,-2.1 -1.5,-2.7 -0.2,-0.1 -0.3,-0.4 -0.2,-0.7 0.1,-0.2 0.4,-0.3 0.7,-0.2 1.3,0.7 2,2.1 2,3.5 0,0.7 -0.2,1.4 -0.5,2 -0.8,1.2 -2.2,2 -3.6,2 z" id="path8-4"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Gold_Heavy" inkscape:label="Collar_Gold_Heavy" style="display:inline">
+      <path inkscape:connector-curvature="0" d="m 342.07604,173.74841 c 7.7e-4,0.44722 -0.1327,0.84994 -0.1768,1.20779 -2.98271,7.87613 -33.43077,15.30497 -36.83077,15.00497 -6.1,-0.5 -7.7,-5.8 -7.9,-6.3 -0.7,-2.1 -0.5,-5.2 0.8,-6.4 1.3,-1.4 2.5,-1.4 3.3,0.7 -0.90837,0.3063 19.4784,5.06534 35.16441,-8.98819 0.62323,-1.65577 2.32272,-1.61399 3.84618,0.0828 1.12036,1.33971 1.83915,3.21676 1.79698,4.69264" id="path7-2" style="fill:#f2f24c" sodipodi:nodetypes="ccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 305.36847,189.56117 c -6,0 -7.8,-4.9 -8,-5.3 -0.8,-1.9 -0.7,-4.8 0.5,-6.1 1.2,-1.4 2.4,-1.5 3.2,0.4 -0.48772,0.48643 14.15539,5.63962 34.55935,-9.63152 1.35866,-1.01687 2.18848,-1.65847 3.66668,-0.27467 1.52307,1.47317 2.28751,3.88681 1.75364,5.4977 -2.58037,7.786 -32.37967,15.40849 -35.67967,15.40849 z" id="path9-88" style="fill:#f7d548" sodipodi:nodetypes="scccscss"/>
+      <path inkscape:connector-curvature="0" d="m 305.03588,194.23829 c -0.35,0 -0.7,-0.05 -1.0375,-0.1375 -0.3375,-0.0875 -0.6625,-0.2125 -0.9625,-0.3625 -0.65,-0.35 -1.15,-0.875 -1.4875,-1.4875 -0.3375,-0.6125 -0.5125,-1.3125 -0.5125,-2.0125 0,-0.35 0.05,-0.7 0.1375,-1.0375 0.0875,-0.3375 0.2125,-0.6625 0.3625,-0.9625 0.2,-0.35 0.45,-0.675 0.7375,-0.95 0.2875,-0.275 0.6125,-0.5 0.9625,-0.65 0.1,-0.05 0.225,-0.05 0.35,-0.0125 0.125,0.0375 0.25,0.1125 0.35,0.2125 0.05,0.1 0.05,0.225 0.0125,0.35 -0.0375,0.125 -0.1125,0.25 -0.2125,0.35 -0.25,0.15 -0.5,0.325 -0.725,0.525 -0.225,0.2 -0.425,0.425 -0.575,0.675 -0.15,0.25 -0.25,0.5 -0.3125,0.75 -0.0625,0.25 -0.0875,0.5 -0.0875,0.75 0,0.55 0.15,1.075 0.4125,1.5375 0.2625,0.4625 0.6375,0.8625 1.0875,1.1625 0.25,0.15 0.5,0.25 0.75,0.3125 0.25,0.0625 0.5,0.0875 0.75,0.0875 0.55,0 1.075,-0.15 1.5375,-0.4125 0.4625,-0.2625 0.8625,-0.6375 1.1625,-1.0875 0.15,-0.25 0.25,-0.5 0.3125,-0.75 0.0625,-0.25 0.0875,-0.5 0.0875,-0.75 0,-0.55 -0.15,-1.075 -0.4125,-1.5375 -0.2625,-0.4625 -0.6375,-0.8625 -1.0875,-1.1625 -0.1,-0.05 -0.175,-0.15 -0.2125,-0.275 -0.0375,-0.125 -0.0375,-0.275 0.0125,-0.425 0.05,-0.1 0.15,-0.175 0.275,-0.2125 0.125,-0.0375 0.275,-0.0375 0.425,0.0125 0.65,0.35 1.15,0.875 1.4875,1.4875 0.3375,0.6125 0.5125,1.3125 0.5125,2.0125 0,0.35 -0.05,0.7 -0.1375,1.0375 -0.0875,0.3375 -0.2125,0.6625 -0.3625,0.9625 -0.4,0.6 -0.925,1.1 -1.5375,1.45 -0.6125,0.35 -1.3125,0.55 -2.0625,0.55 z" id="path11-8" style="fill:#fefff2" sodipodi:nodetypes="sscssscscscscssssscssscssscscscssscss"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Retirement_Cruel" inkscape:label="Collar_Retirement_Cruel" style="display:inline"><path inkscape:connector-curvature="0" class="steel_chastity" d="m 305.66645,184.3391 c -6.28524,0 -8.23193,-2.44977 -8.1875,-2.63125 -0.8,-0.8 -0.7,-2 0.5,-2.5 1.2,-0.6 2.51153,-0.69778 3.2,0.2 0.95461,1.24484 24.33056,-1.66153 35.65,-6.85 1.2,-0.5 2.7,-0.2 3.4,0.6 0.7,0.8 0.28345,2.06988 0.28345,2.06988 -1.41696,5.52614 -31.75546,9.11137 -34.84594,9.11137 z" id="path13-33" sodipodi:nodetypes="sccscscss"/><path d="m 302.07895,180.40785 h 7.2 l -0.5,2.9 h -6.2 z" id="polygon17" inkscape:connector-curvature="0"/><path id="path19-8" d="m 308.77895,180.90785 v 2.4 h -6.1 v -2.4 h 6.1 m 0.5,-0.5 -7.3,-0.1 0.2,3 h 7.1 z" class="steel_chastity" inkscape:connector-curvature="0"/><text id="text21" name="Collar_Text" x="302.81207" y="183.04065" style="font-size:1.96150005px;line-height:0%;font-family:sans-serif;fill:#ff0000">8888</text>
+</g>
+    <g inkscape:groupmode="layer" id="Collar_Cowbell" inkscape:label="Collar_Cowbell" style="display:inline">
+      <path id="path9-8" d="m 300.925,176.875 c 1.8,1 23.0875,-2.8375 32.6875,-8.3375 0.3,-0.2 0.6,0 0.7,0.3 l 1.8875,2.71875 c 0,0.2 -0.1,0.4 -0.2,0.5 -5.6,3.3 -26.1375,9.51875 -29.4375,9.51875 -5.2,0 -6.5375,0.2 -7.0375,-0.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.4 l 0.9,-3.4 c 0,-0.4 0.3,-0.5 0.6,-0.4 z" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccscccc"/>
+      <path d="m 297.17442,186.03142 9.80069,2.63749 2.01146,23.34275 -22.06661,-4.46708 -2.81659,-5.63621 z" id="polygon12" inkscape:connector-curvature="0"/>
+      <path id="path14" d="m 304.28395,193.89936 -6.61047,-1.70345 2.965,-11.16552 6.59411,1.80211 z m -5.23045,-2.69116 4.37409,1.13019 2.35903,-8.73184 -4.37409,-1.13019 z" inkscape:connector-curvature="0"/>
+      <path id="path16" d="m 303.97048,192.73243 -6.79143,-1.8348 2.73557,-10.39263 6.79143,1.8348 z m -5.34545,-2.60885 4.47274,1.14653 2.14596,-8.0576 -4.47275,-1.14653 z" class="steel_chastity" inkscape:connector-curvature="0"/>
+      <path style="fill:#bababa" d="m 297.07576,186.01507 9.32377,2.45711 1.11893,18.32943 -23.41509,-4.89324 z" id="polygon18" inkscape:connector-curvature="0"/>
+      <path d="m 302.32515,180.06063 -0.85064,3.30581 2.90499,0.74858 0.85064,-3.3058 z" id="line20" inkscape:connector-curvature="0"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Collar_Maid" inkscape:label="Collar_Maid" style="display:inline">
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1313" class="shadow" d="m 331.85675,162.02243 1.93544,5.9919 c 0.0226,0.004 0.34362,1.06634 -0.055,1.40725 -0.38339,0.53019 -1.38615,0.29933 -1.37171,0.26757 0.054,0 0.46202,1.5678 -0.081,2.03434 -0.5322,0.56735 -2.02139,-0.001 -2.00889,-0.0302 0.037,0 0.38254,2.10628 -0.42608,2.60581 -0.78793,0.53523 -2.40476,-0.4653 -2.37303,-0.48513 0.0384,0.006 0.2673,1.80307 -0.43822,2.20841 -0.62218,0.58415 -2.41384,-0.43536 -2.42937,-0.46642 0.0803,0.0301 -0.0134,1.84831 -0.78489,2.15506 -0.80428,0.38323 -2.20648,-0.66689 -2.17531,-0.67858 0.0329,-0.007 0.0424,1.7723 -0.78489,2.08566 -0.84412,0.36119 -2.00797,-0.92447 -2.00797,-0.92447 0.0267,0.0419 -0.14902,1.64182 -0.81051,1.80958 -0.7509,0.31434 -1.99714,-0.81291 -1.94526,-0.84626 0.0447,0.0149 -0.27635,1.5613 -1.02005,1.7147 -0.73481,0.23969 -1.84326,-0.86986 -1.8042,-0.89089 0.0219,0.0188 -0.56384,1.18152 -1.17391,1.26017 -0.59199,0.16577 -1.4985,-0.60773 -1.4798,-0.62228 0.0272,0.0204 -0.72132,1.21882 -1.3999,1.28632 -0.6705,0.15933 -1.69372,-0.67933 -1.66134,-0.70288 0.0336,0.0336 -0.76566,1.10921 -1.41643,1.15247 -0.72271,0.15706 -1.81336,-0.69065 -1.78527,-0.70937 0.0206,0.0112 -0.93563,1.11098 -1.68979,1.08277 -0.59807,0.0713 -1.44494,-0.80263 -1.43635,-0.81265 0.0325,0.013 -0.27324,0.85093 -0.68009,0.76955 -0.29439,-0.0184 -0.34132,-0.69275 -0.30755,-0.71205 l -0.19939,-6.02293 c -0.003,0 -0.13477,-0.32166 0.032,-0.36489 0.17113,-0.0761 0.32878,0.27634 0.30666,0.29109 -0.0345,-0.0115 0.28294,-0.64768 0.6928,-0.6998 0.57869,0.27858 1.97754,0.7297 1.97754,0.7297 0,0 1.62702,-1.34485 2.2488,-1.76753 0.31994,0.0903 0.45771,0.27246 0.45497,0.27442 -0.008,-0.001 0.2782,-0.88845 0.71952,-0.99561 0.43595,-0.14269 1.12798,0.42903 1.11321,0.43747 -0.0137,0 0.0724,-1.00959 0.51286,-1.15604 0.46773,-0.19935 1.28089,0.57501 1.26076,0.59917 -0.0138,-0.0111 0.12563,-1.17419 0.61384,-1.32805 0.56719,-0.23879 1.61963,0.58765 1.57985,0.61252 -0.0346,0.002 0.1956,-1.47265 0.90107,-1.71051 0.68508,-0.29172 1.96956,0.70712 1.95558,0.72389 -0.0142,0 0.34612,-1.822 1.14808,-2.09134 0.81177,-0.31928 2.17473,0.8304 2.14422,0.85074 -0.0128,0.003 0.0174,-1.62685 0.71557,-1.9026 0.70359,-0.28524 1.8785,0.81789 1.83908,0.83103 -0.0322,-0.0138 0.0235,-1.70274 0.76143,-1.95615 0.72075,-0.31561 2.02146,0.63985 1.97329,0.65017 -0.0347,-0.008 -0.072,-1.35954 0.51405,-1.61896 0.56598,-0.34388 1.72256,0.36114 1.69497,0.38567 -0.0272,0.006 -0.16412,-1.28353 0.39216,-1.62524 0.53723,-0.37554 1.7904,0.19188 1.77026,0.20627 -0.0208,-0.0115 -0.16702,-1.19259 0.30242,-1.43107 0.44979,-0.29501 1.37419,0.20433 1.34972,0.21657 -0.0104,-0.001 -0.16864,-1.03615 0.25185,-1.27595 0.39853,-0.29034 1.22742,0.17064 1.2032,0.19217 -0.0264,-0.0192 -0.0519,-0.94646 0.35068,-1.09934 0.24481,-0.22205 0.8515,-0.0374 1.03033,0.0948 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 331.85675,162.02243 1.93544,5.9919 c 0,0 0.2505,1.05082 -0.055,1.40725 -0.30317,0.35371 -1.37171,0.26757 -1.37171,0.26757 0,0 0.41185,1.5678 -0.081,2.03434 -0.48636,0.4604 -2.00889,-0.0302 -2.00889,-0.0302 0,0 0.29857,2.10628 -0.42608,2.60581 -0.66474,0.45823 -2.37303,-0.48513 -2.37303,-0.48513 0,0 0.1843,1.78924 -0.43822,2.20841 -0.68398,0.46055 -2.42937,-0.46642 -2.42937,-0.46642 0,0 -0.0997,1.81595 -0.78489,2.15506 -0.68075,0.33691 -2.17531,-0.67858 -2.17531,-0.67858 0,0 -0.0978,1.80346 -0.78489,2.08566 -0.68161,0.27994 -2.00797,-0.92447 -2.00797,-0.92447 0,0 -0.19423,1.57078 -0.81051,1.80958 -0.65935,0.25549 -1.94526,-0.84626 -1.94526,-0.84626 0,0 -0.38234,1.52597 -1.02005,1.7147 -0.64315,0.19034 -1.8042,-0.89089 -1.8042,-0.89089 0,0 -0.61261,1.13972 -1.17391,1.26017 -0.5232,0.11227 -1.4798,-0.62228 -1.4798,-0.62228 0,0 -0.77548,1.1782 -1.3999,1.28632 -0.59249,0.10259 -1.66134,-0.70288 -1.66134,-0.70288 0,0 -0.8148,1.06007 -1.41643,1.15247 -0.63292,0.0972 -1.78527,-0.70937 -1.78527,-0.70937 0,0 -1.02107,1.06438 -1.68979,1.08277 -0.54989,0.0151 -1.43635,-0.81265 -1.43635,-0.81265 0,0 -0.34202,0.82342 -0.68009,0.76955 -0.25532,-0.0407 -0.30755,-0.71205 -0.30755,-0.71205 l -0.19939,-6.02293 c 0,0 -0.0822,-0.32166 0.032,-0.36489 0.13181,-0.0499 0.30666,0.29109 0.30666,0.29109 0,0 0.37519,-0.61693 0.6928,-0.6998 0.57869,0.27858 1.97754,0.7297 1.97754,0.7297 0,0 1.62702,-1.34485 2.2488,-1.76753 0.25782,0.13468 0.45497,0.27442 0.45497,0.27442 0,0 0.32661,-0.88038 0.71952,-0.99561 0.38258,-0.1122 1.11321,0.43747 1.11321,0.43747 0,0 0.11755,-1.00959 0.51286,-1.15604 0.43632,-0.16165 1.26076,0.59917 1.26076,0.59917 0,0 0.16167,-1.14536 0.61384,-1.32805 0.52368,-0.21159 1.57985,0.61252 1.57985,0.61252 0,0 0.29924,-1.48005 0.90107,-1.71051 0.64912,-0.24857 1.95558,0.72389 1.95558,0.72389 0,0 0.39983,-1.822 1.14808,-2.09134 0.7235,-0.26043 2.14422,0.85074 2.14422,0.85074 0,0 0.0897,-1.64291 0.71557,-1.9026 0.62134,-0.25782 1.83908,0.83103 1.83908,0.83103 0,0 0.12856,-1.6577 0.76143,-1.95615 0.62639,-0.29539 1.97329,0.65017 1.97329,0.65017 0,0 0.0226,-1.33772 0.51405,-1.61896 0.5029,-0.28781 1.69497,0.38567 1.69497,0.38567 0,0 -0.0649,-1.30643 0.39216,-1.62524 0.48727,-0.33985 1.77026,0.20627 1.77026,0.20627 0,0 -0.0995,-1.15508 0.30242,-1.43107 0.37563,-0.25793 1.34972,0.21657 1.34972,0.21657 0,0 -0.10379,-1.02804 0.25185,-1.27595 0.33319,-0.23226 1.2032,0.19217 1.2032,0.19217 0,0 0.03,-0.88689 0.35068,-1.09934 0.28751,-0.19049 1.03033,0.0948 1.03033,0.0948 z" class="shadow" id="path1311" sodipodi:nodetypes="ccacacacacacacacacacacacacaccacccccacacacacacacacacacacacacc"/>
+      <path inkscape:connector-curvature="0" d="m 331.97234,162.2961 c 1.04474,1.70444 1.78177,3.48654 1.74481,5.48322 -4.80523,6.73958 -20.24123,13.2466 -33.48864,14.05592 -0.33393,-1.8002 -0.45469,-3.6478 -0.19853,-5.57779 0.85173,-0.3414 1.73617,-0.50846 2.29254,-0.58193 0.359,0.079 0.73339,0.22405 0.73339,0.22405 0,0 0.51119,-0.41895 0.73589,-0.60563 19.93433,-5.50204 22.69697,-9.57458 28.18054,-12.99784 z" class="shadow" id="path1309" sodipodi:nodetypes="cccccccc"/>
+      <path sodipodi:nodetypes="cccccccc" id="path1108-7-2-3" class="shadow" d="m 331.97234,162.2961 c 0.90255,1.73604 1.6591,3.5138 1.74481,5.48322 -5.06089,6.56914 -20.09695,12.90821 -33.48864,14.05592 -0.2453,-1.81793 -0.33592,-3.67155 -0.19853,-5.57779 0.68574,-0.17541 1.64124,-0.41353 2.29254,-0.58193 0.359,0.079 0.73339,0.22405 0.73339,0.22405 0,0 0.51119,-0.41895 0.73589,-0.60563 20.41701,-5.32652 22.8144,-9.53188 28.18054,-12.99784 z" inkscape:connector-curvature="0"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Head_Addon_" inkscape:label="Head_Addon_" style="display:inline">
+    <g inkscape:groupmode="layer" id="Ball_Gag" style="display:inline" inkscape:label="Ball_Gag">
+      <path transform="translate(-220)" style="fill:#070505" d="m 523.375,164.2125 -2.6,-6.8 c 12.75713,-2.94492 23.23175,-9.45485 32.075,-18.5625 l -2.2375,8.65 c -7.51195,8.76554 -17.68909,12.0982 -27.2375,16.7125 z" id="XMLID_892_" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path style="display:inline;fill:#070505" d="m 293.22989,164.19677 -0.18125,-6.175 c -9.86299,-0.39059 -15.54142,-2.51766 -23.98953,-7.65228 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 5.59927,3.72945 11.74667,3.21777 18.30936,4.77953 z" id="XMLID_892_-2" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <ellipse ry="8.6999998" rx="7.5999999" cy="161.16251" cx="298.51154" class="gag" id="XMLID_893_"/>
+      <path inkscape:connector-curvature="0" d="m 306.02067,162.97491 -2.0677,2.89842 -5.39788,1.58688 -2.82555,-0.10895 -1.88734,-0.62251 -1.38183,-1.34784 -1.2286,-1.56979 1.06304,4.39723 6.7635,2.54005 5.76357,-2.47077 z" class="skin" id="path6092-9-0" sodipodi:nodetypes="ccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 302.62164,169.71603 c -1.74238,0.53615 -2.60522,0.4584 -4.21391,0.59078 1.90231,1.18953 3.69017,1.02552 4.21391,-0.59078 z" class="shadow" id="path6086" sodipodi:nodetypes="ccc" inkscape:transform-center-x="-0.11271335" inkscape:transform-center-y="0.18012958"/>
+      <path inkscape:connector-curvature="0" d="m 304.91055,156.29042 -2.41768,-3.28171 -5.11224,-1.06107 -5.04732,2.60438 -0.83575,3.32702 1.24872,-0.83125 8.84286,-1.44319 1.18295,-0.0262 z" class="skin" id="path6092-9" sodipodi:nodetypes="ccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 295.20052,154.26071 c -2.3361,0.18741 -2.33066,0.35817 -4.0167,1.55377 1.655,-0.6968 2.23834,-1.20495 4.0167,-1.55377 z" class="shadow" id="path6090" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 304.161,154.50746 c -2.57764,-0.30209 -3.84681,-1.5219 -6.16236,-0.68113 1.75915,-0.36046 4.35011,0.67624 6.16236,0.68113 z" class="shadow" id="path6092" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 299.04326,167.07067 c -0.13152,0.022 -0.40257,0.12733 -0.53126,0.14693 -0.43426,0.066 -0.66116,0.11591 -0.9949,0.11275 -0.32669,-0.003 -0.64714,-0.0906 -0.9716,-0.12883 -0.39646,-0.0467 -0.8023,-0.0332 -1.19129,-0.1229 -0.4284,-0.0988 -0.70933,-0.26528 -1.2387,-0.45306 -0.77848,-0.27614 -2.88068,-2.86681 -2.88068,-2.86681 0,0 1.49812,2.61596 2.79901,3.13737 3.08136,1.23506 6.83182,0.62648 9.92721,-0.79502 0.85817,-0.39411 2.09247,-3.26423 2.09247,-3.26423 0,0 -1.38905,2.28638 -2.22782,2.75017 -0.83878,0.46378 -1.81847,0.80943 -2.77091,1.08765 -0.65596,0.19162 -1.81889,0.36368 -2.01153,0.39598 z" class="shadow" id="path6088-1" sodipodi:nodetypes="ssaaascasccas"/>
+      <path inkscape:connector-curvature="0" d="m 301.42603,155.31779 c -1.28714,0.38629 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.28226,-0.0804 -1.68445,0.0447 -0.56144,0.17459 -1.39365,1.2375 -1.39365,1.2375 0,0 1.11202,-0.73807 1.36276,-0.82425 0.25074,-0.0862 5.13658,0.10226 8.25323,-1.27205 0.8774,-0.3869 2.03092,-0.18331 3.83075,0.45061 -1.71452,-1.0529 -3.04021,-1.10941 -3.43218,-0.99177 z" class="shadow" id="path6088-5" sodipodi:nodetypes="ssssssssczscs"/>
+      <path inkscape:connector-curvature="0" d="m 306.00314,162.68917 c 0.82424,1.59261 -0.25293,4.15034 -0.18904,5.79891 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 1.24547,-4.2508 0.019,-5.7455 z" class="highlightStrong" id="path6086-7" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/>
+      <path inkscape:connector-curvature="0" d="m 291.15378,163.72407 c -0.16856,1.30377 1.45269,2.69973 1.87939,4.09263 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 -1.83304,-2.52165 -1.51758,-4.48872 z" class="highlightStrong" id="path6086-7-7" sodipodi:nodetypes="cscssc" inkscape:transform-center-x="-0.45383565" inkscape:transform-center-y="0.091816717"/>
+      <path inkscape:connector-curvature="0" d="m 305.98681,162.86279 c 0.3563,1.7575 -1.38048,3.92219 -1.77075,5.52517 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 2.27663,-3.9109 1.50666,-5.68446 z" class="highlightStrong" id="path6086-7-0" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/>
+    </g>
+    <g inkscape:label="Bit_Gag" style="display:inline" id="Bit_Gag" inkscape:groupmode="layer">
+      <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path1228" d="m 529.28859,160.06078 -1.00625,-4.3 c 13.50884,-2.39103 21.6049,-8.96251 24.56766,-16.91078 l -2.2375,8.65 c -4.5049,6.14649 -11.54337,7.7443 -21.32391,12.56078 z" style="fill:#070505" transform="translate(-220)"/>
+      <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path1230" d="m 287.60397,163.73515 -0.11875,-4.39375 c -11.01207,0.032 -15.30758,-3.90726 -18.42611,-8.97191 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 4.97651,1.7366 6.12074,2.75612 12.68344,4.31791 z" style="display:inline;fill:#070505"/>
+      <path inkscape:connector-curvature="0" d="m 307.0697,162.35378 -2.15252,-6.06594 -9.84101,-0.30977 -5.04732,2.60438 -0.39381,4.12252 1.91163,3.10203 12.51098,0.36877 1.18295,-0.0262 z" class="skin" id="path6092-9-1" sodipodi:nodetypes="ccccccccc"/>
+      <path inkscape:transform-center-y="0.18012958" inkscape:transform-center-x="0.11270875" sodipodi:nodetypes="cscsscc" id="path1248" class="highlightStrong" d="m 303.88182,159.68397 c 0.82424,1.59261 1.86839,7.15554 1.93228,8.80411 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 -0.87585,-7.256 -2.10232,-8.7507 z" inkscape:connector-curvature="0"/>
+      <path inkscape:transform-center-y="0.091816717" inkscape:transform-center-x="-0.45383565" sodipodi:nodetypes="cscssc" id="path1250" class="highlightStrong" d="m 293.18671,161.47017 c -0.16856,1.30377 -0.58024,4.95363 -0.15354,6.34653 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 0.19989,-4.77555 0.51535,-6.74262 z" inkscape:connector-curvature="0"/>
+      <path inkscape:transform-center-y="0.18012958" inkscape:transform-center-x="0.11270875" sodipodi:nodetypes="cscsscc" id="path1252" class="highlightStrong" d="m 303.755,159.65871 c 0.3563,1.7575 0.85133,7.12627 0.46106,8.72925 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 0.0448,-7.11498 -0.72515,-8.88854 z" inkscape:connector-curvature="0"/>
+      <circle id="circle1133-2" class="steel_piercing" cx="308.61899" cy="157.93527" r="2.25"/>
+      <circle id="circle1133-7" class="steel_piercing" cx="287.7959" cy="161.52223" r="2.25"/>
+      <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path1230-5" d="m 307.69511,158.62698 -0.17297,-0.81105 -3.86456,1.21173 c -0.0334,0.23738 -0.086,0.48025 0.0798,0.66071 z" class="steel_piercing"/>
+      <path class="steel_piercing" d="m 293.26019,161.53274 c 0.0776,-0.2002 0.0362,-0.38058 -0.0625,-0.55141 l -4.4735,0.3679 0.15998,0.64652 z" id="path1323" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path sodipodi:nodetypes="ccc" id="path1374" class="shadow" d="m 300.67907,164.2443 c -1.74079,0.54129 -2.60386,0.46609 -4.21215,0.60322 1.90581,1.1839 3.69318,1.01462 4.21215,-0.60322 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="assssssssaassaa" id="path1376" class="shadow" d="m 304.16836,158.89728 c -0.65754,-0.15935 -1.25886,0.90901 -1.72778,1.06512 -1.27505,0.42448 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.26351,0.0593 -1.68445,0.0447 -0.26066,-0.009 -0.48867,-0.56649 -0.76394,-0.45611 -0.17938,0.0719 -0.27191,0.40524 -0.15456,0.5588 0.19626,0.2568 0.83404,-0.025 0.96964,-0.004 2.70837,0.41982 6.3844,-0.15314 9.47979,-1.57468 0.85817,-0.39411 1.04035,0.0106 1.1865,-0.37786 0.0838,-0.2227 -0.13749,-0.55517 -0.36874,-0.61121 z" inkscape:connector-curvature="0"/>
+      <path sodipodi:nodetypes="ccc" id="path1378" class="shadow" d="m 301.37797,158.85176 c -1.48115,-0.33094 -1.90064,-0.66259 -3.53037,0.43264 0.92533,-0.58981 2.22192,-0.63997 3.53037,-0.43264 z" inkscape:connector-curvature="0"/>
+      <path inkscape:connector-curvature="0" d="m 297.00827,159.30416 c -1.14969,-0.43141 -1.46342,-0.22949 -2.47508,0.37718 0.97221,-0.32418 1.20482,-0.53261 2.47508,-0.37718 z" class="shadow" id="path1380" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Dildo_Gag" style="display:inline" inkscape:label="Dildo_Gag">
+      <path transform="translate(-220)" style="fill:#070505" d="m 523.375,164.2125 -2.6,-6.8 c 12.75713,-2.94492 23.23175,-9.45485 32.075,-18.5625 l -2.2375,8.65 c -7.51195,8.76554 -17.68909,12.0982 -27.2375,16.7125 z" id="path1259" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <path style="display:inline;fill:#070505" d="m 293.22989,164.19677 -0.18125,-6.175 c -9.86299,-0.39059 -15.54142,-2.51766 -23.98953,-7.65228 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 5.59927,3.72945 11.74667,3.21777 18.30936,4.77953 z" id="path1261" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
+      <ellipse ry="8.6999998" rx="7.5999999" cy="161.16251" cx="298.51154" class="gag" id="ellipse1263"/>
+      <path inkscape:connector-curvature="0" d="m 306.02067,162.97491 -2.0677,2.89842 -5.39788,1.58688 -2.82555,-0.10895 -1.88734,-0.62251 -1.38183,-1.34784 -1.2286,-1.56979 1.06304,4.39723 6.7635,2.54005 5.76357,-2.47077 z" class="skin" id="path1265" sodipodi:nodetypes="ccccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 302.62164,169.71603 c -1.74238,0.53615 -2.60522,0.4584 -4.21391,0.59078 1.90231,1.18953 3.69017,1.02552 4.21391,-0.59078 z" class="shadow" id="path1267" sodipodi:nodetypes="ccc" inkscape:transform-center-x="-0.11271335" inkscape:transform-center-y="0.18012958"/>
+      <path inkscape:connector-curvature="0" d="m 304.91055,156.29042 -2.41768,-3.28171 -5.11224,-1.06107 -5.04732,2.60438 -0.83575,3.32702 1.24872,-0.83125 8.84286,-1.44319 1.18295,-0.0262 z" class="skin" id="path1269" sodipodi:nodetypes="ccccccccc"/>
+      <path inkscape:connector-curvature="0" d="m 295.20052,154.26071 c -2.3361,0.18741 -2.33066,0.35817 -4.0167,1.55377 1.655,-0.6968 2.23834,-1.20495 4.0167,-1.55377 z" class="shadow" id="path1271" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 304.161,154.50746 c -2.57764,-0.30209 -3.84681,-1.5219 -6.16236,-0.68113 1.75915,-0.36046 4.35011,0.67624 6.16236,0.68113 z" class="shadow" id="path1273" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 299.04326,167.07067 c -0.13152,0.022 -0.40257,0.12733 -0.53126,0.14693 -0.43426,0.066 -0.66116,0.11591 -0.9949,0.11275 -0.32669,-0.003 -0.64714,-0.0906 -0.9716,-0.12883 -0.39646,-0.0467 -0.8023,-0.0332 -1.19129,-0.1229 -0.4284,-0.0988 -0.70933,-0.26528 -1.2387,-0.45306 -0.77848,-0.27614 -2.88068,-2.86681 -2.88068,-2.86681 0,0 1.49812,2.61596 2.79901,3.13737 3.08136,1.23506 6.83182,0.62648 9.92721,-0.79502 0.85817,-0.39411 2.09247,-3.26423 2.09247,-3.26423 0,0 -1.38905,2.28638 -2.22782,2.75017 -0.83878,0.46378 -1.81847,0.80943 -2.77091,1.08765 -0.65596,0.19162 -1.81889,0.36368 -2.01153,0.39598 z" class="shadow" id="path1275" sodipodi:nodetypes="ssaaascasccas"/>
+      <path inkscape:connector-curvature="0" d="m 301.42603,155.31779 c -1.28714,0.38629 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.28226,-0.0804 -1.68445,0.0447 -0.56144,0.17459 -1.39365,1.2375 -1.39365,1.2375 0,0 1.11202,-0.73807 1.36276,-0.82425 0.25074,-0.0862 5.13658,0.10226 8.25323,-1.27205 0.8774,-0.3869 2.03092,-0.18331 3.83075,0.45061 -1.71452,-1.0529 -3.04021,-1.10941 -3.43218,-0.99177 z" class="shadow" id="path1277" sodipodi:nodetypes="ssssssssczscs"/>
+      <path inkscape:connector-curvature="0" d="m 306.00314,162.68917 c 0.82424,1.59261 -0.25293,4.15034 -0.18904,5.79891 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 1.24547,-4.2508 0.019,-5.7455 z" class="highlightStrong" id="path1279" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/>
+      <path inkscape:connector-curvature="0" d="m 291.15378,163.72407 c -0.16856,1.30377 1.45269,2.69973 1.87939,4.09263 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 -1.83304,-2.52165 -1.51758,-4.48872 z" class="highlightStrong" id="path1281" sodipodi:nodetypes="cscssc" inkscape:transform-center-x="-0.45383565" inkscape:transform-center-y="0.091816717"/>
+      <path inkscape:connector-curvature="0" d="m 305.98681,162.86279 c 0.3563,1.7575 -1.38048,3.92219 -1.77075,5.52517 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 2.27663,-3.9109 1.50666,-5.68446 z" class="highlightStrong" id="path1283" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/>
+      <path inkscape:connector-curvature="0" d="m 319.68491,173.84249 c 0.57969,-4.07993 0.531,-7.45638 -0.21061,-10.62401 1.11705,2.93421 1.43241,7.45321 0.21061,10.62401 z" class="shadow" id="XMLID_511_-1-84" sodipodi:nodetypes="ccc"/>
+      <path inkscape:connector-curvature="0" d="m 313.35681,181.56712 c -5.6537,3.26843 -5.7874,1.7965 -10.91614,0.7136 5.28746,2.43499 5.52276,3.14938 10.91614,-0.7136 z" class="shadow" id="XMLID_511_-1-84-6" sodipodi:nodetypes="ccc"/>
+    </g>
+    <g id="Glasses" inkscape:groupmode="layer" inkscape:label="Glasses" style="display:inline">
+      <path class="glasses" d="m 263.69962,134.32933 c -0.0223,1.17276 0.2728,5.95704 1.9373,7.41 1.64409,1.33977 5.69174,1.26671 10.28071,0.7898 5.04176,-0.55856 7.66562,-0.91484 9.00537,-2.55894 1.7313,-2.06531 1.42698,-7.54917 1.14121,-9.13387 1.01873,-0.18372 1.92428,-0.34702 2.92261,-0.64391 1.13194,-0.20413 2.15068,-0.38784 3.16942,-0.57154 -0.0334,1.75914 0.23938,7.71618 2.70552,9.72582 1.08925,0.85544 2.8985,1.8148 13.13787,-0.3823 12.27685,-2.5645 13.66856,-4.56858 14.05081,-5.68939 0.87772,-2.26202 -0.0241,-7.17061 -0.78309,-8.78686 6.45204,-1.1635 12.88364,-2.44019 19.33566,-3.60368 l 0.42866,2.37706 -17.67859,3.07111 c 0.35816,1.3379 0.70515,5.76219 -0.12056,7.66422 -0.47504,1.25441 -2.0319,3.6389 -14.80235,6.05866 -11.16533,2.2472 -13.26218,0.98908 -14.37186,0.0204 -1.93171,-1.63851 -2.49398,-6.60836 -2.57378,-8.34709 -1.01872,0.18371 -3.0562,0.55114 -4.07495,0.73484 0.11132,1.26554 0.1596,5.97746 -1.13934,7.84794 -1.59771,2.1581 -4.44794,2.55521 -10.05565,3.21583 -4.92857,0.53814 -9.29539,0.78561 -11.00071,-0.89372 -1.26369,-1.17462 -1.56988,-5.37253 -1.64039,-6.41167 0.0316,-0.47318 0.0427,-1.05957 0.12613,-1.89275 z" inkscape:connector-curvature="0" id="path654" sodipodi:nodetypes="ccccccccccccccccccccccccc"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Hair_Fore_" style="display:inline;opacity:1" inkscape:label="Hair_Fore_">
+    <g inkscape:groupmode="layer" id="Hair_Fore_Messy" style="display:inline;opacity:1" inkscape:label="Hair_Fore_Messy">
+      <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1442" inkscape:connector-curvature="0" class="shadow" d="m 244.725,110.6 c -4.91846,6.58813 -5.1856,19.3396 -5.13712,19.34401 0.006,0.005 2.56339,-2.84496 5.86993,-6.52894 0.75589,5.71669 1.68662,10.0521 3.60878,14.55916 0.11709,2.53892 -2.03599,4.51642 -2.02049,4.51642 0.0327,0.0196 3.96931,1.5105 5.30212,-1.44385 3.89359,5.86164 3.74368,5.49258 6.92104,8.91681 2.58948,4.51811 1.16151,5.94226 0.0742,7.69745 2.95862,-0.0862 5.2003,-0.59653 4.92955,-2.54612 -0.1956,0.0757 2.64225,3.93947 6.493,4.8944 -1.84572,-7.65225 -4.28847,-15.205 -6.8328,-22.74081 2.57902,6.09202 6.90856,9.26463 12.38979,12.89733 -5.22073,-11.31877 -4.0711,-6.75613 -5.07824,-20.43879 0.4832,0.91527 2.7069,2.31536 2.7374,2.27875 -1.15106,-3.47165 -1.52721,-8.61107 -1.67008,-12.06397 2.13176,-5.16018 3.81014,-8.3053 3.80885,-8.30595 3.27603,6.01178 4.10173,7.73219 8.00158,12.52204 2.2126,1.9484 1.33782,8.25688 0.82769,8.51203 0.62691,0.25475 2.60308,-4.44715 1.07593,-6.55145 3.61917,5.28436 5.58656,7.51529 11.82174,8.78897 -3.57509,-3.20004 -4.37162,-4.07437 -5.00615,-8.27776 3.39223,5.296 7.54667,9.93259 13.44317,13.6813 -2.36666,-4.69377 -6.33548,-11.19644 -6.28172,-18.19703 2.26858,2.68175 6.04717,1.62933 9.10444,-1.29984 -4.65907,1.81471 -8.46193,-0.18817 -9.89206,-8.99767 -0.85238,-6.88284 -2.18852,-5.8924 -2.18852,-5.8924 5.76839,8.55204 7.96169,9.20988 13.10381,14.07105 0,0 -3.37401,-6.25345 -1.71994,-7.35053 4.12299,4.65094 7.58501,4.09563 10.07958,13.21086 -0.37167,5.08777 -2.13213,10.43054 -2.12429,10.43211 0.0702,0.0312 2.3388,-2.08088 3.29281,-2.68415 -0.25505,1.61443 0.13626,9.38515 0.30703,10.92985 0.13896,0.0811 6.82167,-14.16497 6.60844,-23.34903 0.16691,0.002 1.31098,5.08479 2.15859,11.72771 -0.75833,6.60148 -0.28415,6.83605 -2.80224,5.4551 1.33409,2.07559 1.77197,2.44696 2.76408,1.38848 -0.23707,5.64039 -2.57216,11.47522 -2.52258,11.47109 5.24035,-4.04557 10.85672,-13.08882 11.516,-21.36538 7.1891,-5.52505 10.39667,0.18055 10.39164,0.14784 -0.0883,-7.30975 -4.26628,-12.56804 -8.70585,-18.31152 2.90895,-3.32142 5.53645,1.87184 8.48574,4.08963 -1.08924,-7.89902 -3.58727,-14.21058 -9.8139,-16.879752 7.04716,-1.377896 7.56203,-5.402843 7.55169,-5.408413 0.0407,-0.06608 -3.17695,3.387169 -7.36385,0.171386 2.57035,-1.867935 8.78082,-2.021959 13.20489,-3.36606 -6.17494,-4.672645 -12.59125,-6.525266 -19.3725,-6.676498 1.12959,-2.656055 1.47528,-5.428608 0.32899,-9.110782 -1.80442,2.055679 -4.20714,2.33573 -8.82379,-0.361764 -0.40829,-2.1327 3.89219,-2.662655 7.25081,-3.691036 -6.48187,-2.927296 -12.57371,-3.306369 -18.91894,-2.792333 1.56128,-3.867046 -0.33279,-5.536181 -1.10333,-8.216298 -1.06454,3.469481 -2.5964,5.974105 -6.6912,5.948127 -4.03082,-1.130038 -8.68437,-1.824299 -14.61057,-1.656591 -8.79418,-0.4959 -16.89013,0.475898 -23.98768,5.165699 -2.79549,2.499404 -3.6049,-0.728385 -2.49029,-5.343061 -2.54744,3.246638 -4.92985,6.487126 -3.35167,9.848161 -3.51039,-0.684155 -5.05566,0.361144 -6.29022,0.908556 1.07283,1.236569 2.00574,2.598187 1.36187,5.104433 -5.67523,-0.229018 -5.17194,-5.221299 0.23501,-10.976254 -9.60454,3.830836 -12.46718,13.057135 -5.18285,20.796848 -2.14603,-1.980035 -8.35141,-1.55314 -18.49467,4.365873 11.81435,-1.519649 12.91806,-1.80674 15.86633,4.009522 -2.69378,-0.951133 -4.48937,0.711322 -4.491,0.713435 -0.0446,0.02866 1.87442,0.308723 3.31256,4.531752 -3.49059,-0.0554 -3.72984,-1.42541 -6.02498,-4.961831 -0.007,0.0056 -2.71636,7.969211 4.76449,12.689721 z"/>
+      <path d="m 244.725,110.6 c -4.39124,6.63606 -5.13712,19.34401 -5.13712,19.34401 0,0 2.1368,-3.1649 5.86993,-6.52894 0.8815,5.71669 1.9087,10.0521 3.60878,14.55916 0.36276,2.53892 -2.02049,4.51642 -2.02049,4.51642 0,0 3.27328,1.37131 5.30212,-1.44385 4.56892,6.4186 3.7172,4.9316 6.92104,8.91681 2.96839,4.43391 1.28395,5.91505 0.0742,7.69745 2.76068,-0.18519 4.82148,-0.78594 4.92955,-2.54612 -0.0787,0.0367 3.0246,3.81202 6.493,4.8944 l -6.8328,-22.74081 c 2.89723,5.94738 7.23848,9.11466 12.38979,12.89733 -5.28575,-11.33377 -4.68815,-6.89853 -5.07824,-20.43879 0.71664,0.63515 2.7374,2.27875 2.7374,2.27875 -1.30172,-3.47165 -1.93893,-8.61107 -1.67008,-12.06397 1.44012,-5.506 3.80885,-8.30595 3.80885,-8.30595 3.32454,5.99685 4.73239,7.53814 8.00158,12.52204 2.4016,1.9484 1.50201,8.25688 0.82769,8.51203 0.52186,0.21973 2.21352,-4.577 1.07593,-6.55145 4.20477,5.02816 5.92996,7.36505 11.82174,8.78897 -4.17531,-3.16669 -4.82789,-4.04902 -5.00615,-8.27776 3.79155,4.94105 7.63535,9.85376 13.44317,13.6813 -2.47716,-4.68149 -6.72174,-11.15352 -6.28172,-18.19703 1.95492,2.32888 5.90341,1.4676 9.10444,-1.29984 -4.89397,1.93216 -8.91847,0.0401 -9.89206,-8.99767 -1.33183,-6.56321 -2.18852,-5.8924 -2.18852,-5.8924 6.00807,8.20964 13.10381,14.07105 13.10381,14.07105 0,0 -3.92454,-6.32685 -1.71994,-7.35053 4.21475,4.57753 8.03273,3.73746 10.07958,13.21086 0.44229,5.25056 -2.12429,10.43211 -2.12429,10.43211 0,0 1.92837,-2.26329 3.29281,-2.68415 0.13585,1.4407 0.23907,9.33946 0.30703,10.92985 0,0 6.3016,-14.46835 6.60844,-23.34903 0.19418,-0.007 1.75387,4.93716 2.15859,11.72771 -0.27749,6.51532 -0.60917,7.16107 -2.80224,5.4551 1.13889,1.56808 1.68093,2.21026 2.76408,1.38848 0.34083,5.59223 -2.52258,11.47109 -2.52258,11.47109 5.19062,-4.07044 10.1678,-13.43328 11.516,-21.36538 7.04519,-6.46044 10.39164,0.14784 10.39164,0.14784 -0.49013,-7.30975 -5.08317,-12.56804 -8.70585,-18.31152 3.27119,-3.63191 5.74903,1.68963 8.48574,4.08963 -1.34658,-7.84183 -4.06535,-14.10434 -9.8139,-16.879752 6.56716,-1.636356 7.55169,-5.408413 7.55169,-5.408413 0,0 -3.43706,3.809856 -7.36385,0.171386 2.3664,-2.377804 8.65552,-2.335198 13.20489,-3.36606 -6.32302,-4.343578 -12.81485,-6.028368 -19.3725,-6.676498 0.64033,-2.753907 1.40149,-5.443367 0.32899,-9.110782 -1.85359,2.22779 -4.39099,2.979194 -8.82379,-0.361764 -0.60149,-2.470796 3.75401,-2.904468 7.25081,-3.691036 -6.59977,-2.691505 -12.7835,-2.886794 -18.91894,-2.792333 1.14102,-3.867046 -0.46186,-5.536181 -1.10333,-8.216298 -0.88139,3.579369 -2.36411,6.113479 -6.6912,5.948127 -4.3431,-0.942669 -9.19501,-1.517915 -14.61057,-1.656591 -8.87477,-0.227256 -17.05335,1.019963 -23.98768,5.165699 -2.88716,2.526905 -4.05267,-0.594053 -2.49029,-5.343061 -2.45723,3.28272 -4.73406,6.565441 -3.35167,9.848161 -4.19343,-0.26382 -5.06869,0.369162 -6.29022,0.908556 1.32459,1.110689 2.34072,2.430696 1.36187,5.104433 -6.01749,-0.229018 -5.27195,-5.221299 0.23501,-10.976254 -9.52886,3.818223 -11.90858,12.964035 -5.18285,20.796848 -2.06874,-1.55492 -8.3139,-1.346843 -18.49467,4.365873 11.89037,-1.861722 12.95731,-1.983362 15.86633,4.009522 -3.26245,-0.211865 -4.491,0.713435 -4.491,0.713435 0,0 2.56106,-0.132686 3.31256,4.531752 -3.73067,0.0646 -3.96113,-1.30976 -6.02498,-4.961831 0,0 -2.12454,7.484991 4.76449,12.689721 z" class="hair" inkscape:connector-curvature="0" id="path1508" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccc"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Fore_Braids" style="display:inline;opacity:1" inkscape:label="Hair_Fore_Braids">
+      <path class="shadow" sodipodi:nodetypes="ccccccccccccscc" inkscape:connector-curvature="0" id="path3002" d="m 264.88646,138.13493 c -0.52764,-1.63337 -1.48391,-8.27733 -1.31682,-7.6723 0.30513,1.15766 0.37173,1.50675 1.914,2.53153 -3.96407,-15.09805 1.81719,-12.3309 7.88724,-26.7958 2.8298,11.57838 9.92518,12.0218 27.60831,16.758 -3.99054,-3.61178 -8.84228,-7.05132 -13.36239,-10.55719 3.9384,4.91588 12.03465,7.13938 18.74854,8.80964 -8.40991,-10.41557 -11.92124,-20.75134 -12.08836,-20.78476 8.31197,12.06019 27.07984,1.30209 29.39135,29.96705 0.002,-0.0103 0.7347,-4.02901 0.15609,-9.20689 -0.12091,0.15601 5.55923,9.87437 7.20453,18.1727 2.18373,-3.71145 4.13042,-7.99026 4.99098,-12.5009 4.02388,-19.58149 12.19369,-57.0289 -49.27183,-55.358864 -23.67378,0.643223 -31.6089,21.570597 -35.60368,38.130584 -1.29095,14.17393 5.6023,21.22544 13.74204,28.5072 z"/>
+      <path d="m 264.88646,138.13493 c -0.98445,-1.6749 -1.64354,-8.29184 -1.31682,-7.6723 0.52575,0.97381 0.49922,1.40051 1.914,2.53153 -4.08726,-15.18017 0.68037,-13.08878 7.88724,-26.7958 3.14245,11.40693 10.83897,11.52069 27.60831,16.758 L 287.6168,112.39917 c 4.14732,4.78293 12.45786,6.87006 18.74854,8.80964 -9.06395,-10.54638 -12.08836,-20.78476 -12.08836,-20.78476 8.66286,11.92373 28.1487,0.88642 29.39135,29.96705 0,0 -0.15075,-0.32621 0.15609,-9.20689 0.27011,-0.0395 6.30991,9.49903 7.20453,18.1727 2.10074,-3.72989 3.53972,-8.12153 4.99098,-12.5009 3.99167,-19.57075 10.63097,-55.978613 -49.27183,-55.358864 -21.94374,0.227028 -30.68756,21.450422 -35.60368,38.130584 0.13342,13.55077 5.90992,21.09086 13.74204,28.5072 z" id="path3172" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccscc" class="hair"/>
+    </g>
+    <g inkscape:groupmode="layer" id="Hair_Fore_Neat" style="display:inline;opacity:1" inkscape:label="Hair_Fore_Neat">
+      <path sodipodi:nodetypes="ccccccccccccccccccc" id="path1711" inkscape:connector-curvature="0" class="shadow" d="m 248.60413,106.18058 c -2.04734,26.40395 6.13148,51.98561 15.97494,70.1677 4.39713,6.72978 7.52187,7.37748 13.18887,11.71429 -1.1884,-0.16181 -8.46893,-29.0279 -8.41476,-28.94744 0.31529,1.07194 0.40623,1.233 1.2243,1.66065 -0.57569,0.34074 -5.13572,-33.2968 -4.5736,-40.02567 0.0682,0.91859 0.28487,1.78907 1.05455,2.47391 0.12279,-1.77728 3.30483,-13.8038 6.31245,-17.02566 3.19925,12.14534 28.96714,0.6572 42.54477,10.93767 -3.15657,-3.47155 -6.95408,-6.9054 -10.57699,-10.34952 3.96079,4.9135 14.62203,11.63192 14.7248,11.55998 -1.62157,-3.30049 -2.95395,-6.2972 -2.01001,-7.84616 0.53325,4.44201 7.68041,9.37749 10.5675,32.53133 0.42131,-0.97927 0.80084,-2.01078 1.05646,-3.19717 -0.17802,0 -0.9094,15.09511 -0.56915,18.22406 -0.85119,8.02927 -2.22823,15.58067 -4.54317,26.28104 6.10335,-4.24216 13.68515,-6.89944 16.71199,-13.48875 10.24425,-4.37842 19.01551,-107.842635 -45.69015,-99.413908 -19.19936,0.410451 -36.53562,-0.758031 -46.9828,34.743648 z"/>
+      <path d="m 248.60413,106.18058 c -1.66902,26.21479 6.74136,51.68067 15.97494,70.1677 4.56517,6.26767 7.57687,7.22623 13.18887,11.71429 -1.27999,-0.14349 -8.66373,-28.98894 -8.41476,-28.94744 0.36079,1.05894 0.50254,1.20548 1.2243,1.66065 -1.0537,0.28099 -5.60048,-33.3549 -4.5736,-40.02567 0.16654,0.89401 0.42097,1.75505 1.05455,2.47391 0,-1.81236 3.02827,-13.88282 6.31245,-17.02566 3.14245,11.40693 28.90612,-0.13605 42.54477,10.93767 l -10.57699,-10.34952 c 4.14732,4.78293 14.7248,11.55998 14.7248,11.55998 -1.93032,-3.36224 -3.23417,-6.35324 -2.01001,-7.84616 0.59719,4.40649 8.55665,8.89069 10.5675,32.53133 l 1.05646,-3.19717 c 0,0 -0.41355,15.09511 -0.56915,18.22406 -0.39068,7.85658 -1.74604,15.39985 -4.54317,26.28104 6.00366,-4.292 12.93954,-7.27225 16.71199,-13.48875 8.76503,-5.55068 19.18463,-106.244216 -45.69015,-99.413908 -19.18263,1.258572 -35.55712,-0.07776 -46.9828,34.743648 z" class="hair" inkscape:connector-curvature="0" id="path1707" sodipodi:nodetypes="ccccccccccccccscccc"/>
+    </g>
+    <g inkscape:label="Hair_Fore_Bun" style="display:inline;opacity:1" id="Hair_Fore_Bun" inkscape:groupmode="layer">
+      <path d="m 257.9291,106.09219 c -0.19133,-0.0554 -2.9316,20.06637 7.31403,35.72092 l 1.2243,1.66065 c -1.0829,-2.32949 -1.59392,-4.89291 -2.54128,-7.42183 0.59713,1.08477 1.16635,0.9431 1.767,1.00595 -0.78883,-1.50187 -1.95045,-2.87782 -2.33322,-4.64904 0.54248,0.17604 1.10893,0.40897 1.45152,-0.54409 -0.74503,-1.60123 -1.2827,-3.22443 -1.6482,-4.86777 0.4416,0.44485 0.15755,0.63606 0.87018,0.19913 -0.30577,-2.8814 -1.28828,-7.29117 -1.08235,-8.64893 0.30773,0.48617 0.61821,0.29966 0.98826,-0.31398 0.20896,-3.75337 0.35878,-7.18569 1.31829,-10.30654 -0.16645,1.41258 -0.19192,2.78556 0.74567,4.05426 0.31931,-2.93001 0.85793,-5.71643 1.92528,-8.06648 0.30682,1.20113 0.62632,2.40082 2.03109,3.21587 0.64977,-3.03472 1.62294,-5.75505 3.39306,-7.710822 0.18461,1.492342 0.70077,2.841392 2.32632,3.777832 0.56266,-2.63176 1.46593,-5.186218 3.35799,-7.648123 0.006,2.011255 1.18198,3.533641 2.99614,4.796803 0.31223,-1.741219 0.45261,-3.524766 1.5581,-5.087975 0.37974,1.56741 1.58666,2.715238 4.02664,3.242071 1.06483,-1.987104 1.90021,-4.047156 3.75035,-5.799213 0.0109,1.964078 1.76048,3.329215 4.48858,4.128202 1.48861,-1.509028 3.53959,-2.817938 3.67916,-4.808874 1.74996,1.119058 3.09148,2.551986 4.30027,4.108084 1.48646,-0.948679 2.60722,-2.044503 2.81784,-3.467529 0.96067,1.141819 1.93284,2.292258 2.38154,3.762186 1.73153,-0.465567 2.89407,-1.311757 3.03223,-2.832939 1.04024,1.093809 2.02314,2.257469 2.32609,4.150576 1.91739,-0.183832 2.181,-1.39483 2.46879,-2.543759 1.08375,1.444497 1.63528,3.120311 1.90186,4.92097 1.25184,0.21524 1.81967,-0.745651 1.97168,-2.072767 0.62613,1.627097 1.84433,2.771787 1.45372,5.479337 0.63533,-0.26651 1.26752,-0.57484 1.07086,-1.71862 0.43597,1.68689 1.24132,3.26727 1.14726,5.31687 0.48364,-0.47133 0.59389,-1.16629 0.39158,-2.09463 0.47434,1.74464 0.69999,3.36521 0.88175,5.03529 0.37208,-0.58229 0.79199,-1.07987 0.66618,-1.97567 -0.003,1.53244 0.10467,3.06487 0.22437,4.59731 0.42098,-0.59521 0.707,-1.21259 0.65467,-2.05091 0.24715,1.6627 0.17111,3.36068 0.1896,5.06453 0.0476,0.64638 0.24021,1.23834 0.45209,1.8231 0.47209,-0.45453 0.57369,-0.93775 0.52728,-1.43381 0.0586,1.55949 0.25949,3.05527 0.2042,4.59115 0.43847,-0.31761 0.40048,-0.77294 0.42885,-1.18558 0.15694,1.27396 0.19877,2.60743 0.2242,4.02794 0.30822,1.56352 0.7166,3.10199 1.19132,4.62388 0.26004,-0.52413 0.57333,-1.00033 0.63651,-1.70163 -0.0369,1.33702 -0.0838,2.67504 0.0816,3.99182 0.46088,1.51424 1.13046,2.88934 1.77109,4.28375 0.39524,-1.05136 0.8384,-2.08675 1.05646,-3.19717 11.90069,-21.27589 7.00195,-64.195469 -37.5191,-61.322495 -15.65245,-1.109698 -36.68517,5.581542 -38.54171,35.892695 z" class="shadow" inkscape:connector-curvature="0" id="path1728" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
+      <path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1717" inkscape:connector-curvature="0" class="hair" d="m 257.9291,106.09219 c -0.007,0.006 -1.97567,20.38501 7.31403,35.72092 l 1.2243,1.66065 c -1.10711,-2.32949 -1.79314,-4.89291 -2.54128,-7.42183 0.62095,0.84654 1.184,0.76662 1.767,1.00595 -0.93454,-1.48366 -2.13701,-2.8545 -2.33322,-4.64904 0.52732,0.12299 1.04691,0.1919 1.45152,-0.54409 -0.88984,-1.58675 -1.5469,-3.19801 -1.6482,-4.86777 0.45664,0.29442 0.18353,0.37621 0.87018,0.19913 -0.52127,-2.6659 -1.42219,-7.15726 -1.08235,-8.64893 0.35307,0.36829 0.67669,0.14762 0.98826,-0.31398 0.025,-3.66975 0.33847,-7.17646 1.31829,-10.30654 -0.0544,1.37896 -0.0959,2.75675 0.74567,4.05426 0.2328,-2.94443 0.69913,-5.7429 1.92528,-8.06648 0.39239,1.17546 0.74775,2.36439 2.03109,3.21587 0.59247,-3.07292 1.55541,-5.80007 3.39306,-7.710822 0.30776,1.430762 0.78432,2.799622 2.32632,3.777832 0.53632,-2.64932 1.37507,-5.246793 3.35799,-7.648123 0.14111,1.937462 1.27409,3.483398 2.99614,4.796803 0.26667,-1.769696 0.3381,-3.596335 1.5581,-5.087975 0.45789,1.532677 1.69497,2.667101 4.02664,3.242071 1.01846,-2.01029 1.78624,-4.10414 3.75035,-5.799213 0.0885,1.929566 1.86922,3.280887 4.48858,4.128202 1.44492,-1.525413 3.42384,-2.861344 3.67916,-4.808874 1.86112,1.054215 3.2297,2.471357 4.30027,4.108084 1.44759,-0.96034 2.45275,-2.090843 2.81784,-3.467529 1.0588,1.098207 2.02213,2.252575 2.38154,3.762186 1.67284,-0.502914 2.73401,-1.413613 3.03223,-2.832939 1.11987,1.053994 2.14954,2.19427 2.32609,4.150576 1.869,-0.197658 2.0868,-1.421744 2.46879,-2.543759 1.12659,1.426136 1.73345,3.078236 1.90186,4.92097 1.23123,0.20751 1.68979,-0.794357 1.97168,-2.072767 0.71793,1.600868 1.89588,2.757057 1.45372,5.479337 0.60707,-0.27862 1.16002,-0.62091 1.07086,-1.71862 0.59248,1.65559 1.27676,3.26018 1.14726,5.31687 0.42286,-0.5408 0.50965,-1.26256 0.39158,-2.09463 0.63988,1.67843 0.72087,3.35686 0.88175,5.03529 0.28783,-0.60101 0.68913,-1.10273 0.66618,-1.97567 l 0.22437,4.59731 c 0.39693,-0.62407 0.63258,-1.3019 0.65467,-2.05091 0.29253,1.6627 0.2675,3.36068 0.1896,5.06453 l 0.45209,1.8231 c 0.38638,-0.45453 0.51462,-0.93775 0.52728,-1.43381 0.16555,1.50601 0.36084,3.00459 0.2042,4.59115 0.34432,-0.32807 0.30713,-0.78331 0.42885,-1.18558 0.1847,1.26933 0.28877,2.59243 0.2242,4.02794 l 1.19132,4.62388 0.63651,-1.70163 0.0816,3.99182 1.77109,4.28375 1.05646,-3.19717 c 10.71484,-22.20048 5.99108,-64.270356 -37.5191,-61.322495 -15.38241,-0.812657 -36.14212,6.178893 -38.54171,35.892695 z"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="Notes_" inkscape:label="Notes_" style="display:inline"><text xml:space="preserve" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="-166.08824" y="1042.1471" id="text4352"><tspan sodipodi:role="line" id="tspan4354" x="-166.08824" y="1042.1471" style="font-size:17.5px;line-height:1.25">prndev's notes:</tspan><tspan sodipodi:role="line" x="-166.08824" y="1064.0221" id="tspan4356" style="font-size:17.5px;line-height:1.25">I work with Inkscape. I do not know how Illustrator behaves.</tspan><tspan sodipodi:role="line" x="-166.08824" y="1085.8971" id="tspan4358" style="font-size:17.5px;line-height:1.25">All Inkscape Layers are SVG groups.</tspan><tspan sodipodi:role="line" x="-166.08824" y="1107.7721" id="tspan4360" style="font-size:17.5px;line-height:1.25">Inkscape Layer names should be unique.</tspan><tspan sodipodi:role="line" x="-166.08824" y="1129.6471" id="tspan4362" style="font-size:17.5px;line-height:1.25">Inkscape Layer names should be the same as the corresponding SVG group ID (use provided fixup tool to be sure).</tspan><tspan sodipodi:role="line" x="-166.08824" y="1151.5221" id="tspan4364" style="font-size:17.5px;line-height:1.25">All changable style (most notably fill) should be defined in a class.</tspan><tspan sodipodi:role="line" x="-166.08824" y="1173.3971" id="tspan4366" style="font-size:17.5px;line-height:1.25">All conflicting attribute style should be removed (use provided fixup tool to be sure).</tspan><tspan sodipodi:role="line" x="-166.08824" y="1195.2721" id="tspan4368" style="font-size:17.5px;line-height:1.25">All groups with IDs NOT ending in underscore "_", starting with "g" or "XMLID" are exported into separate files.</tspan><tspan sodipodi:role="line" x="-166.08824" y="1217.1471" id="tspan4060" style="font-size:17.5px;line-height:1.25">A single quote ' breaks embedding. Use them to include Twine variables (see README for details).</tspan><tspan sodipodi:role="line" x="-166.08824" y="1239.0221" id="tspan4370" style="font-size:17.5px;line-height:1.25">Original art credit goes to Nov-X.</tspan></text>
+</g>
+</svg>
diff --git a/compile b/compile
index bbe2bb7353b70978bcf82fe8f734c9988c584af5..8eeced8538a1ebb5891e7227430cf756854ce7f6 100755
--- a/compile
+++ b/compile
@@ -1,8 +1,8 @@
 #!/bin/bash
 
 # Find and insert current commit
-COMMIT=$(git rev-list HEAD --count)
-sed -i "s/COMMIT/$COMMIT/" ./src/init/storyInit.tw
+COMMIT=$(git rev-parse --short HEAD)
+sed -Ei "s/build .releaseID/\0 commit $COMMIT/" src/gui/mainMenu/AlphaDisclaimer.tw
 
 
 # Run sanity check.
@@ -30,5 +30,5 @@ fi
 #Make the output prettier, replacing \t with a tab and \n with a newline
 sed -i -e '/^.*<div id="store-area".*$/s/\\t/\t/g' -e '/^.*<div id="store-area".*$/s/\\n/\n/g'  bin/FC_pregmod.html
 
-# Revert ./src/init/storyInit.tw for next compilation
-git checkout -- ./src/init/storyInit.tw
+# Revert AlphaDisclaimer for next compilation
+git checkout -- src/gui/mainMenu/AlphaDisclaimer.tw
diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 5f655444fbf7e8deb24d70447263f678643c6784..abd5f4e97dc7700fcf84da56dd6256215f1dc212 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -2,6 +2,205 @@
 
 0.10.7.0/1
 
+2/02/18
+
+	328
+	-fixed reNickname and slaveSold
+
+	327
+	-various code cleanup
+	-tweaks to agents
+	-fixed grammatical issues involving luxurious hair
+	-pregmodfan's nickname fixes and other fixes
+	-phase 6 work
+
+	326
+	-sugarcube updated to 2.23.4
+
+	325
+	-reduced concentration of string implant malus
+	-fixes to saAgent's fake belly removal
+	-fixed permanent makeup text duplication
+	-various minor text corrections
+	-phase 6 work
+
+	324
+	-added saAgent
+	Some physical Agent stats are now tracked week to week.
+
+	323
+	-fixed hidden headgirls
+
+2/01/18
+
+	322
+	-fixed missed rep increase in strip club closing
+	-removed excess "the"s
+	-fcanon's agent work
+	-various little fixes
+	-phase 6 work
+
+1/31/18
+
+	321
+	-added Faraen's vector art
+
+	320
+	-fix to assignWidgets not porperly handling facility head assignment
+
+	319
+	-anon's master slaver multislave personal training
+	-fixes
+
+1/30/18
+
+	318.1
+	-critical fix to PMODinit bug
+
+	318
+	-fixed errant ".lightyellow;"
+	-fixed non lethal pit bug
+
+	317
+	-fixed virginty ignoring in saRules
+	-fixed lack of virginty taking warning in RESS
+	-fixed the barracks getting really confused about the number of mercs fucking slaves in it
+	-anon's corp tweaks
+	-re-initialized phase 6
+
+	316.2
+	-fixed bad string in FS acquisition
+
+	316.1
+	-better fix to race issue in sup FS acquisition
+
+	316
+	-partial fix to race issue in sup FS acquisition
+
+	315
+	-fixes to assayWidgets (beauty)
+
+	314
+	-fixed bad cashFormat() arguement in costReport
+	-fixed missed ) in saRecruitGirls
+	-initialized phase 6
+
+1/29/18
+
+	313
+	-fixed bad cashFormat()
+
+	312
+	-phase 5 completed
+	-minor fixes
+	-anon's $PC.trading tweaks to the corp
+	-fixed the possibility of use counts going negative in glory holes
+
+	311
+	-anon's labReport fix
+
+	310
+	-crimeanon's fixes
+	-anon's continued tweaking
+	-fixed hostages sometimes showing up when they weren't supposed to be
+	-fixed various little typos and errors
+
+	309
+	-various small fixes
+
+	308
+	-Sugarcube updated to 2.23.1
+
+1/28/18
+
+	307
+	-various submitted text corrections
+
+	306
+	-fixed missed && in SpecialForceUpgradeOptions
+
+	305
+	-fixed issues with orphanage recruits
+	-small text fixes
+	-fixed mistargeted spans in custom slave
+	-fixed infinite JFC looping
+	-fixed childgen getting confused when the player fathered a slave
+	-limited height surgeries to +- 15cm from expected average
+	-anon's economy tweaks
+	-crimeanon's fixes
+
+	304
+	-anon's tweaks
+	-removed leftover code from RESS
+
+	303
+	-anon's corp tweaks
+
+	302
+	-fixed missing span in JFC
+
+	301
+	-anon's corp tweaks
+
+1/27/18
+
+	300
+	-anon's corp tweaks
+	-fixed the upgraded dispensary giving 50% off the reduced value instead of the original
+
+	299.2
+	-and now they are nuns and priests
+
+	299.1
+	-clergy capture slaves are now virgins
+
+	299
+	-converted anon's submitted clergy capture event into the second Chattel Religionist FS acquisition event
+	-SFanon's fixes and tweaks
+	-phase 4 work
+	-fixed the dispensary giving 75% off instead of 25% off
+
+	298
+	-fixed the flesh heap only giving amps if $seeExtreme was off
+
+	297
+	-fixed minor bug in JFC
+
+1/26/18
+
+	296
+	-SFanon's job fullfilment center slave market
+	-anon's various fixes and tweaks
+
+	295
+	-starting girls can now be set to mindbroken
+	-fixed some age bugs in reRecruit
+
+1/25/18
+
+	294
+	-consolidated player asset descriptions
+	-femPC can now officially be flat
+
+	293
+	-added a see pregnancy toggle to game options
+	-crimeanon's secEx fixes
+
+1/24/18
+
+	292
+	-conitnued implementation of $seePreg
+
+	291
+	-partial implementation of $seePreg
+
+1/23/18
+	
+	290
+	-small tweaks to FResult
+	-fixed minor bugs
+	-initialized .nipplesAccessory and $seePreg
+
 1/22/18
 	
 	289
diff --git a/devNotes/sugarcube stuff/header backup 223-4 b/devNotes/sugarcube stuff/header backup 223-4
new file mode 100644
index 0000000000000000000000000000000000000000..e4fef8c681e64695662842ba5ffb1a03e953d26a
--- /dev/null
+++ b/devNotes/sugarcube stuff/header backup 223-4	
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html data-init="no-js">
+<head>
+<meta charset="UTF-8" />
+<title>SugarCube</title>
+<meta name="viewport" content="width=device-width,initial-scale=1" />
+<!--
+
+SugarCube (v2.23.1): A free (gratis and libre) story format.
+
+Copyright © 2013–2018 Thomas Michael Edwards <thomasmedwards@gmail.com>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+<!--
+
+Build Info:
+  * "TIME"
+  * "VERSION"
+
+-->
+<script id="script-libraries" type="text/javascript">
+if(document.head&&document.addEventListener&&document.querySelector&&Object.create&&Object.freeze&&JSON){document.documentElement.setAttribute("data-init", "loading");
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+if("document" in self){if(!("classList" in document.createElement("_"))){(function(j){"use strict";if(!("Element" in j)){return}var a="classList",f="prototype",m=j.Element[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p<o;p++){if(p in this&&this[p]===q){return p}}return -1},n=function(o,p){this.name=o;this.code=DOMException[o];this.message=p},g=function(p,o){if(o===""){throw new n("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(o)){throw new n("INVALID_CHARACTER_ERR","String contains an invalid character")}return c.call(p,o)},d=function(s){var r=k.call(s.getAttribute("class")||""),q=r?r.split(/\s+/):[],p=0,o=q.length;for(;p<o;p++){this.push(q[p])}this._updateClassName=function(){s.setAttribute("class",this.toString())}},e=d[f]=[],i=function(){return new d(this)};n[f]=Error[f];e.item=function(o){return this[o]||null};e.contains=function(o){o+="";return g(this,o)!==-1};e.add=function(){var s=arguments,r=0,p=s.length,q,o=false;do{q=s[r]+"";if(g(this,q)===-1){this.push(q);o=true}}while(++r<p);if(o){this._updateClassName()}};e.remove=function(){var t=arguments,s=0,p=t.length,r,o=false,q;do{r=t[s]+"";q=g(this,r);while(q!==-1){this.splice(q,1);o=true;q=g(this,r)}}while(++s<p);if(o){this._updateClassName()}};e.toggle=function(p,q){p+="";var o=this.contains(p),r=o?q!==true&&"remove":q!==false&&"add";if(r){this[r](p)}if(q===true||q===false){return q}else{return !o}};e.toString=function(){return this.join(" ")};if(b.defineProperty){var l={get:i,enumerable:true,configurable:true};try{b.defineProperty(m,a,l)}catch(h){if(h.number===-2146823252){l.enumerable=false;b.defineProperty(m,a,l)}}}else{if(b[f].__defineGetter__){m.__defineGetter__(a,i)}}}(self))}else{(function(){var b=document.createElement("_");b.classList.add("c1","c2");if(!b.classList.contains("c2")){var c=function(e){var d=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(h){var g,f=arguments.length;for(g=0;g<f;g++){h=arguments[g];d.call(this,h)}}};c("add");c("remove")}b.classList.toggle("c3",false);if(b.classList.contains("c3")){var a=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(d,e){if(1 in arguments&&!this.contains(d)===!e){return e}else{return a.call(this,d)}}}b=null}())}};
+/*!
+ * https://github.com/es-shims/es5-shim
+ * @license es5-shim Copyright 2009-2015 by contributors, MIT License
+ * see https://github.com/es-shims/es5-shim/blob/v4.5.9/LICENSE
+ */
+(function(t,r){"use strict";if(typeof define==="function"&&define.amd){define(r)}else if(typeof exports==="object"){module.exports=r()}else{t.returnExports=r()}})(this,function(){var t=Array;var r=t.prototype;var e=Object;var n=e.prototype;var i=Function;var a=i.prototype;var o=String;var f=o.prototype;var u=Number;var l=u.prototype;var s=r.slice;var c=r.splice;var v=r.push;var h=r.unshift;var p=r.concat;var y=r.join;var d=a.call;var g=a.apply;var w=Math.max;var b=Math.min;var T=n.toString;var m=typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol";var D;var S=Function.prototype.toString,x=/^\s*class /,O=function isES6ClassFn(t){try{var r=S.call(t);var e=r.replace(/\/\/.*\n/g,"");var n=e.replace(/\/\*[.\s\S]*\*\//g,"");var i=n.replace(/\n/gm," ").replace(/ {2}/g," ");return x.test(i)}catch(a){return false}},j=function tryFunctionObject(t){try{if(O(t)){return false}S.call(t);return true}catch(r){return false}},E="[object Function]",I="[object GeneratorFunction]",D=function isCallable(t){if(!t){return false}if(typeof t!=="function"&&typeof t!=="object"){return false}if(m){return j(t)}if(O(t)){return false}var r=T.call(t);return r===E||r===I};var M;var U=RegExp.prototype.exec,F=function tryRegexExec(t){try{U.call(t);return true}catch(r){return false}},N="[object RegExp]";M=function isRegex(t){if(typeof t!=="object"){return false}return m?F(t):T.call(t)===N};var C;var k=String.prototype.valueOf,A=function tryStringObject(t){try{k.call(t);return true}catch(r){return false}},R="[object String]";C=function isString(t){if(typeof t==="string"){return true}if(typeof t!=="object"){return false}return m?A(t):T.call(t)===R};var P=e.defineProperty&&function(){try{var t={};e.defineProperty(t,"x",{enumerable:false,value:t});for(var r in t){return false}return t.x===t}catch(n){return false}}();var $=function(t){var r;if(P){r=function(t,r,n,i){if(!i&&r in t){return}e.defineProperty(t,r,{configurable:true,enumerable:false,writable:true,value:n})}}else{r=function(t,r,e,n){if(!n&&r in t){return}t[r]=e}}return function defineProperties(e,n,i){for(var a in n){if(t.call(n,a)){r(e,a,n[a],i)}}}}(n.hasOwnProperty);var J=function isPrimitive(t){var r=typeof t;return t===null||r!=="object"&&r!=="function"};var Y=u.isNaN||function isActualNaN(t){return t!==t};var Z={ToInteger:function ToInteger(t){var r=+t;if(Y(r)){r=0}else if(r!==0&&r!==1/0&&r!==-(1/0)){r=(r>0||-1)*Math.floor(Math.abs(r))}return r},ToPrimitive:function ToPrimitive(t){var r,e,n;if(J(t)){return t}e=t.valueOf;if(D(e)){r=e.call(t);if(J(r)){return r}}n=t.toString;if(D(n)){r=n.call(t);if(J(r)){return r}}throw new TypeError},ToObject:function(t){if(t==null){throw new TypeError("can't convert "+t+" to object")}return e(t)},ToUint32:function ToUint32(t){return t>>>0}};var z=function Empty(){};$(a,{bind:function bind(t){var r=this;if(!D(r)){throw new TypeError("Function.prototype.bind called on incompatible "+r)}var n=s.call(arguments,1);var a;var o=function(){if(this instanceof a){var i=g.call(r,this,p.call(n,s.call(arguments)));if(e(i)===i){return i}return this}else{return g.call(r,t,p.call(n,s.call(arguments)))}};var f=w(0,r.length-n.length);var u=[];for(var l=0;l<f;l++){v.call(u,"$"+l)}a=i("binder","return function ("+y.call(u,",")+"){ return binder.apply(this, arguments); }")(o);if(r.prototype){z.prototype=r.prototype;a.prototype=new z;z.prototype=null}return a}});var G=d.bind(n.hasOwnProperty);var B=d.bind(n.toString);var H=d.bind(s);var W=g.bind(s);var L=d.bind(f.slice);var X=d.bind(f.split);var q=d.bind(f.indexOf);var K=d.bind(v);var Q=d.bind(n.propertyIsEnumerable);var V=d.bind(r.sort);var _=t.isArray||function isArray(t){return B(t)==="[object Array]"};var tt=[].unshift(0)!==1;$(r,{unshift:function(){h.apply(this,arguments);return this.length}},tt);$(t,{isArray:_});var rt=e("a");var et=rt[0]!=="a"||!(0 in rt);var nt=function properlyBoxed(t){var r=true;var e=true;var n=false;if(t){try{t.call("foo",function(t,e,n){if(typeof n!=="object"){r=false}});t.call([1],function(){"use strict";e=typeof this==="string"},"x")}catch(i){n=true}}return!!t&&!n&&r&&e};$(r,{forEach:function forEach(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=-1;var i=Z.ToUint32(e.length);var a;if(arguments.length>1){a=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.forEach callback must be a function")}while(++n<i){if(n in e){if(typeof a==="undefined"){t(e[n],n,r)}else{t.call(a,e[n],n,r)}}}}},!nt(r.forEach));$(r,{map:function map(r){var e=Z.ToObject(this);var n=et&&C(this)?X(this,""):e;var i=Z.ToUint32(n.length);var a=t(i);var o;if(arguments.length>1){o=arguments[1]}if(!D(r)){throw new TypeError("Array.prototype.map callback must be a function")}for(var f=0;f<i;f++){if(f in n){if(typeof o==="undefined"){a[f]=r(n[f],f,e)}else{a[f]=r.call(o,n[f],f,e)}}}return a}},!nt(r.map));$(r,{filter:function filter(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i=[];var a;var o;if(arguments.length>1){o=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.filter callback must be a function")}for(var f=0;f<n;f++){if(f in e){a=e[f];if(typeof o==="undefined"?t(a,f,r):t.call(o,a,f,r)){K(i,a)}}}return i}},!nt(r.filter));$(r,{every:function every(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i;if(arguments.length>1){i=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.every callback must be a function")}for(var a=0;a<n;a++){if(a in e&&!(typeof i==="undefined"?t(e[a],a,r):t.call(i,e[a],a,r))){return false}}return true}},!nt(r.every));$(r,{some:function some(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i;if(arguments.length>1){i=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.some callback must be a function")}for(var a=0;a<n;a++){if(a in e&&(typeof i==="undefined"?t(e[a],a,r):t.call(i,e[a],a,r))){return true}}return false}},!nt(r.some));var it=false;if(r.reduce){it=typeof r.reduce.call("es5",function(t,r,e,n){return n})==="object"}$(r,{reduce:function reduce(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);if(!D(t)){throw new TypeError("Array.prototype.reduce callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduce of empty array with no initial value")}var i=0;var a;if(arguments.length>=2){a=arguments[1]}else{do{if(i in e){a=e[i++];break}if(++i>=n){throw new TypeError("reduce of empty array with no initial value")}}while(true)}for(;i<n;i++){if(i in e){a=t(a,e[i],i,r)}}return a}},!it);var at=false;if(r.reduceRight){at=typeof r.reduceRight.call("es5",function(t,r,e,n){return n})==="object"}$(r,{reduceRight:function reduceRight(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);if(!D(t)){throw new TypeError("Array.prototype.reduceRight callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduceRight of empty array with no initial value")}var i;var a=n-1;if(arguments.length>=2){i=arguments[1]}else{do{if(a in e){i=e[a--];break}if(--a<0){throw new TypeError("reduceRight of empty array with no initial value")}}while(true)}if(a<0){return i}do{if(a in e){i=t(i,e[a],a,r)}}while(a--);return i}},!at);var ot=r.indexOf&&[0,1].indexOf(1,2)!==-1;$(r,{indexOf:function indexOf(t){var r=et&&C(this)?X(this,""):Z.ToObject(this);var e=Z.ToUint32(r.length);if(e===0){return-1}var n=0;if(arguments.length>1){n=Z.ToInteger(arguments[1])}n=n>=0?n:w(0,e+n);for(;n<e;n++){if(n in r&&r[n]===t){return n}}return-1}},ot);var ft=r.lastIndexOf&&[0,1].lastIndexOf(0,-3)!==-1;$(r,{lastIndexOf:function lastIndexOf(t){var r=et&&C(this)?X(this,""):Z.ToObject(this);var e=Z.ToUint32(r.length);if(e===0){return-1}var n=e-1;if(arguments.length>1){n=b(n,Z.ToInteger(arguments[1]))}n=n>=0?n:e-Math.abs(n);for(;n>=0;n--){if(n in r&&t===r[n]){return n}}return-1}},ft);var ut=function(){var t=[1,2];var r=t.splice();return t.length===2&&_(r)&&r.length===0}();$(r,{splice:function splice(t,r){if(arguments.length===0){return[]}else{return c.apply(this,arguments)}}},!ut);var lt=function(){var t={};r.splice.call(t,0,0,1);return t.length===1}();$(r,{splice:function splice(t,r){if(arguments.length===0){return[]}var e=arguments;this.length=w(Z.ToInteger(this.length),0);if(arguments.length>0&&typeof r!=="number"){e=H(arguments);if(e.length<2){K(e,this.length-t)}else{e[1]=Z.ToInteger(r)}}return c.apply(this,e)}},!lt);var st=function(){var r=new t(1e5);r[8]="x";r.splice(1,1);return r.indexOf("x")===7}();var ct=function(){var t=256;var r=[];r[t]="a";r.splice(t+1,0,"b");return r[t]==="a"}();$(r,{splice:function splice(t,r){var e=Z.ToObject(this);var n=[];var i=Z.ToUint32(e.length);var a=Z.ToInteger(t);var f=a<0?w(i+a,0):b(a,i);var u=b(w(Z.ToInteger(r),0),i-f);var l=0;var s;while(l<u){s=o(f+l);if(G(e,s)){n[l]=e[s]}l+=1}var c=H(arguments,2);var v=c.length;var h;if(v<u){l=f;var p=i-u;while(l<p){s=o(l+u);h=o(l+v);if(G(e,s)){e[h]=e[s]}else{delete e[h]}l+=1}l=i;var y=i-u+v;while(l>y){delete e[l-1];l-=1}}else if(v>u){l=i-u;while(l>f){s=o(l+u-1);h=o(l+v-1);if(G(e,s)){e[h]=e[s]}else{delete e[h]}l-=1}}l=f;for(var d=0;d<c.length;++d){e[l]=c[d];l+=1}e.length=i-u+v;return n}},!st||!ct);var vt=r.join;var ht;try{ht=Array.prototype.join.call("123",",")!=="1,2,3"}catch(pt){ht=true}if(ht){$(r,{join:function join(t){var r=typeof t==="undefined"?",":t;return vt.call(C(this)?X(this,""):this,r)}},ht)}var yt=[1,2].join(undefined)!=="1,2";if(yt){$(r,{join:function join(t){var r=typeof t==="undefined"?",":t;return vt.call(this,r)}},yt)}var dt=function push(t){var r=Z.ToObject(this);var e=Z.ToUint32(r.length);var n=0;while(n<arguments.length){r[e+n]=arguments[n];n+=1}r.length=e+n;return e+n};var gt=function(){var t={};var r=Array.prototype.push.call(t,undefined);return r!==1||t.length!==1||typeof t[0]!=="undefined"||!G(t,0)}();$(r,{push:function push(t){if(_(this)){return v.apply(this,arguments)}return dt.apply(this,arguments)}},gt);var wt=function(){var t=[];var r=t.push(undefined);return r!==1||t.length!==1||typeof t[0]!=="undefined"||!G(t,0)}();$(r,{push:dt},wt);$(r,{slice:function(t,r){var e=C(this)?X(this,""):this;return W(e,arguments)}},et);var bt=function(){try{[1,2].sort(null);[1,2].sort({});return true}catch(t){}return false}();var Tt=function(){try{[1,2].sort(/a/);return false}catch(t){}return true}();var mt=function(){try{[1,2].sort(undefined);return true}catch(t){}return false}();$(r,{sort:function sort(t){if(typeof t==="undefined"){return V(this)}if(!D(t)){throw new TypeError("Array.prototype.sort callback must be a function")}return V(this,t)}},bt||!mt||!Tt);var Dt=!Q({toString:null},"toString");var St=Q(function(){},"prototype");var xt=!G("x","0");var Ot=function(t){var r=t.constructor;return r&&r.prototype===t};var jt={$window:true,$console:true,$parent:true,$self:true,$frame:true,$frames:true,$frameElement:true,$webkitIndexedDB:true,$webkitStorageInfo:true,$external:true};var Et=function(){if(typeof window==="undefined"){return false}for(var t in window){try{if(!jt["$"+t]&&G(window,t)&&window[t]!==null&&typeof window[t]==="object"){Ot(window[t])}}catch(r){return true}}return false}();var It=function(t){if(typeof window==="undefined"||!Et){return Ot(t)}try{return Ot(t)}catch(r){return false}};var Mt=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var Ut=Mt.length;var Ft=function isArguments(t){return B(t)==="[object Arguments]"};var Nt=function isArguments(t){return t!==null&&typeof t==="object"&&typeof t.length==="number"&&t.length>=0&&!_(t)&&D(t.callee)};var Ct=Ft(arguments)?Ft:Nt;$(e,{keys:function keys(t){var r=D(t);var e=Ct(t);var n=t!==null&&typeof t==="object";var i=n&&C(t);if(!n&&!r&&!e){throw new TypeError("Object.keys called on a non-object")}var a=[];var f=St&&r;if(i&&xt||e){for(var u=0;u<t.length;++u){K(a,o(u))}}if(!e){for(var l in t){if(!(f&&l==="prototype")&&G(t,l)){K(a,o(l))}}}if(Dt){var s=It(t);for(var c=0;c<Ut;c++){var v=Mt[c];if(!(s&&v==="constructor")&&G(t,v)){K(a,v)}}}return a}});var kt=e.keys&&function(){return e.keys(arguments).length===2}(1,2);var At=e.keys&&function(){var t=e.keys(arguments);return arguments.length!==1||t.length!==1||t[0]!==1}(1);var Rt=e.keys;$(e,{keys:function keys(t){if(Ct(t)){return Rt(H(t))}else{return Rt(t)}}},!kt||At);var Pt=new Date(-0xc782b5b342b24).getUTCMonth()!==0;var $t=new Date(-0x55d318d56a724);var Jt=new Date(14496624e5);var Yt=$t.toUTCString()!=="Mon, 01 Jan -45875 11:59:59 GMT";var Zt;var zt;var Gt=$t.getTimezoneOffset();if(Gt<-720){Zt=$t.toDateString()!=="Tue Jan 02 -45875";zt=!/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Jt.toString())}else{Zt=$t.toDateString()!=="Mon Jan 01 -45875";zt=!/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Jt.toString())}var Bt=d.bind(Date.prototype.getFullYear);var Ht=d.bind(Date.prototype.getMonth);var Wt=d.bind(Date.prototype.getDate);var Lt=d.bind(Date.prototype.getUTCFullYear);var Xt=d.bind(Date.prototype.getUTCMonth);var qt=d.bind(Date.prototype.getUTCDate);var Kt=d.bind(Date.prototype.getUTCDay);var Qt=d.bind(Date.prototype.getUTCHours);var Vt=d.bind(Date.prototype.getUTCMinutes);var _t=d.bind(Date.prototype.getUTCSeconds);var tr=d.bind(Date.prototype.getUTCMilliseconds);var rr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var er=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var nr=function daysInMonth(t,r){return Wt(new Date(r,t,0))};$(Date.prototype,{getFullYear:function getFullYear(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);if(t<0&&Ht(this)>11){return t+1}return t},getMonth:function getMonth(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);var r=Ht(this);if(t<0&&r>11){return 0}return r},getDate:function getDate(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);var r=Ht(this);var e=Wt(this);if(t<0&&r>11){if(r===12){return e}var n=nr(0,t+1);return n-e+1}return e},getUTCFullYear:function getUTCFullYear(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);if(t<0&&Xt(this)>11){return t+1}return t},getUTCMonth:function getUTCMonth(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);var r=Xt(this);if(t<0&&r>11){return 0}return r},getUTCDate:function getUTCDate(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);var r=Xt(this);var e=qt(this);if(t<0&&r>11){if(r===12){return e}var n=nr(0,t+1);return n-e+1}return e}},Pt);$(Date.prototype,{toUTCString:function toUTCString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Kt(this);var r=qt(this);var e=Xt(this);var n=Lt(this);var i=Qt(this);var a=Vt(this);var o=_t(this);return rr[t]+", "+(r<10?"0"+r:r)+" "+er[e]+" "+n+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"}},Pt||Yt);$(Date.prototype,{toDateString:function toDateString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=this.getDay();var r=this.getDate();var e=this.getMonth();var n=this.getFullYear();return rr[t]+" "+er[e]+" "+(r<10?"0"+r:r)+" "+n}},Pt||Zt);if(Pt||zt){Date.prototype.toString=function toString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=this.getDay();var r=this.getDate();var e=this.getMonth();var n=this.getFullYear();var i=this.getHours();var a=this.getMinutes();var o=this.getSeconds();var f=this.getTimezoneOffset();var u=Math.floor(Math.abs(f)/60);var l=Math.floor(Math.abs(f)%60);return rr[t]+" "+er[e]+" "+(r<10?"0"+r:r)+" "+n+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"+(f>0?"-":"+")+(u<10?"0"+u:u)+(l<10?"0"+l:l)};if(P){e.defineProperty(Date.prototype,"toString",{configurable:true,enumerable:false,writable:true})}}var ir=-621987552e5;var ar="-000001";var or=Date.prototype.toISOString&&new Date(ir).toISOString().indexOf(ar)===-1;var fr=Date.prototype.toISOString&&new Date(-1).toISOString()!=="1969-12-31T23:59:59.999Z";var ur=d.bind(Date.prototype.getTime);$(Date.prototype,{toISOString:function toISOString(){if(!isFinite(this)||!isFinite(ur(this))){throw new RangeError("Date.prototype.toISOString called on non-finite value.")}var t=Lt(this);var r=Xt(this);t+=Math.floor(r/12);r=(r%12+12)%12;var e=[r+1,qt(this),Qt(this),Vt(this),_t(this)];t=(t<0?"-":t>9999?"+":"")+L("00000"+Math.abs(t),0<=t&&t<=9999?-4:-6);for(var n=0;n<e.length;++n){e[n]=L("00"+e[n],-2)}return t+"-"+H(e,0,2).join("-")+"T"+H(e,2).join(":")+"."+L("000"+tr(this),-3)+"Z"}},or||fr);var lr=function(){try{return Date.prototype.toJSON&&new Date(NaN).toJSON()===null&&new Date(ir).toJSON().indexOf(ar)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return true}})}catch(t){return false}}();if(!lr){Date.prototype.toJSON=function toJSON(t){var r=e(this);var n=Z.ToPrimitive(r);if(typeof n==="number"&&!isFinite(n)){return null}var i=r.toISOString;if(!D(i)){throw new TypeError("toISOString property is not callable")}return i.call(r)}}var sr=Date.parse("+033658-09-27T01:46:40.000Z")===1e15;var cr=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z"));var vr=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(vr||cr||!sr){var hr=Math.pow(2,31)-1;var pr=Y(new Date(1970,0,1,0,0,0,hr+1).getTime());Date=function(t){var r=function Date(e,n,i,a,f,u,l){var s=arguments.length;var c;if(this instanceof t){var v=u;var h=l;if(pr&&s>=7&&l>hr){var p=Math.floor(l/hr)*hr;var y=Math.floor(p/1e3);v+=y;h-=y*1e3}c=s===1&&o(e)===e?new t(r.parse(e)):s>=7?new t(e,n,i,a,f,v,h):s>=6?new t(e,n,i,a,f,v):s>=5?new t(e,n,i,a,f):s>=4?new t(e,n,i,a):s>=3?new t(e,n,i):s>=2?new t(e,n):s>=1?new t(e instanceof t?+e:e):new t}else{c=t.apply(this,arguments)}if(!J(c)){$(c,{constructor:r},true)}return c};var e=new RegExp("^"+"(\\d{4}|[+-]\\d{6})"+"(?:-(\\d{2})"+"(?:-(\\d{2})"+"(?:"+"T(\\d{2})"+":(\\d{2})"+"(?:"+":(\\d{2})"+"(?:(\\.\\d{1,}))?"+")?"+"("+"Z|"+"(?:"+"([-+])"+"(\\d{2})"+":(\\d{2})"+")"+")?)?)?)?"+"$");var n=[0,31,59,90,120,151,181,212,243,273,304,334,365];var i=function dayFromMonth(t,r){var e=r>1?1:0;return n[r]+Math.floor((t-1969+e)/4)-Math.floor((t-1901+e)/100)+Math.floor((t-1601+e)/400)+365*(t-1970)};var a=function toUTC(r){var e=0;var n=r;if(pr&&n>hr){var i=Math.floor(n/hr)*hr;var a=Math.floor(i/1e3);e+=a;n-=a*1e3}return u(new t(1970,0,1,0,0,e,n))};for(var f in t){if(G(t,f)){r[f]=t[f]}}$(r,{now:t.now,UTC:t.UTC},true);r.prototype=t.prototype;$(r.prototype,{constructor:r},true);var l=function parse(r){var n=e.exec(r);if(n){var o=u(n[1]),f=u(n[2]||1)-1,l=u(n[3]||1)-1,s=u(n[4]||0),c=u(n[5]||0),v=u(n[6]||0),h=Math.floor(u(n[7]||0)*1e3),p=Boolean(n[4]&&!n[8]),y=n[9]==="-"?1:-1,d=u(n[10]||0),g=u(n[11]||0),w;var b=c>0||v>0||h>0;if(s<(b?24:25)&&c<60&&v<60&&h<1e3&&f>-1&&f<12&&d<24&&g<60&&l>-1&&l<i(o,f+1)-i(o,f)){w=((i(o,f)+l)*24+s+d*y)*60;w=((w+c+g*y)*60+v)*1e3+h;if(p){w=a(w)}if(-864e13<=w&&w<=864e13){return w}}return NaN}return t.parse.apply(this,arguments)};$(r,{parse:l});return r}(Date)}if(!Date.now){Date.now=function now(){return(new Date).getTime()}}var yr=l.toFixed&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128");var dr={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function multiply(t,r){var e=-1;var n=r;while(++e<dr.size){n+=t*dr.data[e];dr.data[e]=n%dr.base;n=Math.floor(n/dr.base)}},divide:function divide(t){var r=dr.size;var e=0;while(--r>=0){e+=dr.data[r];dr.data[r]=Math.floor(e/t);e=e%t*dr.base}},numToString:function numToString(){var t=dr.size;var r="";while(--t>=0){if(r!==""||t===0||dr.data[t]!==0){var e=o(dr.data[t]);if(r===""){r=e}else{r+=L("0000000",0,7-e.length)+e}}}return r},pow:function pow(t,r,e){return r===0?e:r%2===1?pow(t,r-1,e*t):pow(t*t,r/2,e)},log:function log(t){var r=0;var e=t;while(e>=4096){r+=12;e/=4096}while(e>=2){r+=1;e/=2}return r}};var gr=function toFixed(t){var r,e,n,i,a,f,l,s;r=u(t);r=Y(r)?0:Math.floor(r);if(r<0||r>20){throw new RangeError("Number.toFixed called with invalid number of decimals")}e=u(this);if(Y(e)){return"NaN"}if(e<=-1e21||e>=1e21){return o(e)}n="";if(e<0){n="-";e=-e}i="0";if(e>1e-21){a=dr.log(e*dr.pow(2,69,1))-69;f=a<0?e*dr.pow(2,-a,1):e/dr.pow(2,a,1);f*=4503599627370496;a=52-a;if(a>0){dr.multiply(0,f);l=r;while(l>=7){dr.multiply(1e7,0);l-=7}dr.multiply(dr.pow(10,l,1),0);l=a-1;while(l>=23){dr.divide(1<<23);l-=23}dr.divide(1<<l);dr.multiply(1,1);dr.divide(2);i=dr.numToString()}else{dr.multiply(0,f);dr.multiply(1<<-a,0);i=dr.numToString()+L("0.00000000000000000000",2,2+r)}}if(r>0){s=i.length;if(s<=r){i=n+L("0.0000000000000000000",0,r-s+2)+i}else{i=n+L(i,0,s-r)+"."+L(i,s-r)}}else{i=n+i}return i};$(l,{toFixed:gr},yr);var wr=function(){try{return 1..toPrecision(undefined)==="1"}catch(t){return true}}();var br=l.toPrecision;$(l,{toPrecision:function toPrecision(t){return typeof t==="undefined"?br.call(this):br.call(this,t)}},wr);if("ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||"tesst".split(/(s)*/)[1]==="t"||"test".split(/(?:)/,-1).length!==4||"".split(/.?/).length||".".split(/()()/).length>1){(function(){var t=typeof/()??/.exec("")[1]==="undefined";var r=Math.pow(2,32)-1;f.split=function(e,n){var i=String(this);if(typeof e==="undefined"&&n===0){return[]}if(!M(e)){return X(this,e,n)}var a=[];var o=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,u,l,s,c;var h=new RegExp(e.source,o+"g");if(!t){u=new RegExp("^"+h.source+"$(?!\\s)",o)}var p=typeof n==="undefined"?r:Z.ToUint32(n);l=h.exec(i);while(l){s=l.index+l[0].length;if(s>f){K(a,L(i,f,l.index));if(!t&&l.length>1){l[0].replace(u,function(){for(var t=1;t<arguments.length-2;t++){if(typeof arguments[t]==="undefined"){l[t]=void 0}}})}if(l.length>1&&l.index<i.length){v.apply(a,H(l,1))}c=l[0].length;f=s;if(a.length>=p){break}}if(h.lastIndex===l.index){h.lastIndex++}l=h.exec(i)}if(f===i.length){if(c||!h.test("")){K(a,"")}}else{K(a,L(i,f))}return a.length>p?H(a,0,p):a}})()}else if("0".split(void 0,0).length){f.split=function split(t,r){if(typeof t==="undefined"&&r===0){return[]}return X(this,t,r)}}var Tr=f.replace;var mr=function(){var t=[];"x".replace(/x(.)?/g,function(r,e){K(t,e)});return t.length===1&&typeof t[0]==="undefined"}();if(!mr){f.replace=function replace(t,r){var e=D(r);var n=M(t)&&/\)[*?]/.test(t.source);if(!e||!n){return Tr.call(this,t,r)}else{var i=function(e){var n=arguments.length;var i=t.lastIndex;t.lastIndex=0;var a=t.exec(e)||[];t.lastIndex=i;K(a,arguments[n-2],arguments[n-1]);return r.apply(this,a)};return Tr.call(this,t,i)}}}var Dr=f.substr;var Sr="".substr&&"0b".substr(-1)!=="b";$(f,{substr:function substr(t,r){var e=t;if(t<0){e=w(this.length+t,0)}return Dr.call(this,e,r)}},Sr);var xr="	\n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003"+"\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028"+"\u2029\ufeff";var Or="\u200b";var jr="["+xr+"]";var Er=new RegExp("^"+jr+jr+"*");var Ir=new RegExp(jr+jr+"*$");var Mr=f.trim&&(xr.trim()||!Or.trim());$(f,{trim:function trim(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}return o(this).replace(Er,"").replace(Ir,"")}},Mr);var Ur=d.bind(String.prototype.trim);var Fr=f.lastIndexOf&&"abc\u3042\u3044".lastIndexOf("\u3042\u3044",2)!==-1;$(f,{lastIndexOf:function lastIndexOf(t){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}var r=o(this);var e=o(t);var n=arguments.length>1?u(arguments[1]):NaN;var i=Y(n)?Infinity:Z.ToInteger(n);var a=b(w(i,0),r.length);var f=e.length;var l=a+f;while(l>0){l=w(0,l-f);var s=q(L(r,l,a+f),e);if(s!==-1){return l+s}}return-1}},Fr);var Nr=f.lastIndexOf;$(f,{lastIndexOf:function lastIndexOf(t){return Nr.apply(this,arguments)}},f.lastIndexOf.length!==1);if(parseInt(xr+"08")!==8||parseInt(xr+"0x16")!==22){parseInt=function(t){var r=/^[\-+]?0[xX]/;return function parseInt(e,n){var i=Ur(String(e));var a=u(n)||(r.test(i)?16:10);return t(i,a)}}(parseInt)}if(1/parseFloat("-0")!==-Infinity){parseFloat=function(t){return function parseFloat(r){var e=Ur(String(r));var n=t(e);return n===0&&L(e,0,1)==="-"?-0:n}}(parseFloat)}if(String(new RangeError("test"))!=="RangeError: test"){var Cr=function toString(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}var t=this.name;if(typeof t==="undefined"){t="Error"}else if(typeof t!=="string"){t=o(t)}var r=this.message;if(typeof r==="undefined"){r=""}else if(typeof r!=="string"){r=o(r)}if(!t){return r}if(!r){return t}return t+": "+r};Error.prototype.toString=Cr}if(P){var kr=function(t,r){if(Q(t,r)){var e=Object.getOwnPropertyDescriptor(t,r);if(e.configurable){e.enumerable=false;Object.defineProperty(t,r,e)}}};kr(Error.prototype,"message");if(Error.prototype.message!==""){Error.prototype.message=""}kr(Error.prototype,"name")}if(String(/a/gim)!=="/a/gim"){var Ar=function toString(){var t="/"+this.source+"/";if(this.global){t+="g"}if(this.ignoreCase){t+="i"}if(this.multiline){t+="m"}return t};RegExp.prototype.toString=Ar}});
+//# sourceMappingURL=es5-shim.map
+/*!
+  * https://github.com/paulmillr/es6-shim
+  * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com)
+  *   and contributors,  MIT License
+  * es6-shim: v0.35.3
+  * see https://github.com/paulmillr/es6-shim/blob/0.35.1/LICENSE
+  * Details and documentation:
+  * https://github.com/paulmillr/es6-shim/
+  */
+(function(e,t){if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(e){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(e){return false}};var u=o(i);var f=function(){return!i(function(){Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d=typeof/abc/==="function"?function IsCallableSlow(e){return typeof e==="function"&&g(e)==="[object Function]"}:function IsCallableFast(e){return typeof e==="function"};var m={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var O=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){m.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=O(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.shift);var A=Math.max;var R=Math.min;var _=Math.floor;var k=Math.abs;var F=Math.exp;var L=Math.log;var D=Math.sqrt;var z=Function.call.bind(Object.prototype.hasOwnProperty);var q;var W=function(){};var G=S.Map;var H=G&&G.prototype["delete"];var V=G&&G.prototype.get;var B=G&&G.prototype.has;var U=G&&G.prototype.set;var $=S.Symbol||{};var J=$.species||"@@species";var X=Number.isNaN||function isNaN(e){return e!==e};var K=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var Z=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(X(t)){return t}return t<0?-1:1};var Y=function isArguments(e){return g(e)==="[object Arguments]"};var Q=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var ee=Y(arguments)?Y:Q;var te={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var re=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);m.preserveToString(e[t],n)};var ne=typeof $==="function"&&typeof $["for"]==="function"&&te.symbol($());var oe=te.symbol($.iterator)?$.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){oe="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ie=S.Reflect;var ae=String;var ue=typeof document==="undefined"||!document?null:document.all;var fe=ue==null?function isNullOrUndefined(e){return e==null}:function isNullOrUndefinedAndNotDocumentAll(e){return e==null&&e!==ue};var se={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!se.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(fe(e)){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"||e===ue},ToObject:function(e,t){return Object(se.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return se.IsCallable(e)},ToInt32:function(e){return se.ToNumber(e)>>0},ToUint32:function(e){return se.ToNumber(e)>>>0},ToNumber:function(e){if(g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=se.ToNumber(e);if(X(t)){return 0}if(t===0||!K(t)){return t}return(t>0?1:-1)*_(k(t))},ToLength:function(e){var t=se.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return X(e)&&X(t)},SameValueZero:function(e,t){return e===t||X(e)&&X(t)},IsIterable:function(e){return se.TypeIsObject(e)&&(typeof e[oe]!=="undefined"||ee(e))},GetIterator:function(e){if(ee(e)){return new q(e,"value")}var t=se.GetMethod(e,oe);if(!se.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=se.Call(t,e);if(!se.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=se.ToObject(e)[t];if(fe(r)){return void 0}if(!se.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=se.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=se.Call(r,e)}catch(e){o=e}if(t){return}if(o){throw o}if(!se.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!se.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=se.IteratorNext(e);var r=se.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ie.construct){return ie.construct(e,t,o)}var i=o.prototype;if(!se.TypeIsObject(i)){i=Object.prototype}var a=O(i);var u=se.Call(e,a,t);return se.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!se.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[J];if(fe(n)){return t}if(!se.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=se.ToString(e);var i="<"+t;if(r!==""){var a=se.ToString(n);var u=a.replace(/"/g,"&quot;");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+"</"+t+">"},IsRegExp:function IsRegExp(e){if(!se.TypeIsObject(e)){return false}var t=e[$.match];if(typeof t!=="undefined"){return!!t}return te.regex(e)},ToString:function ToString(e){return ae(e)}};if(s&&ne){var ce=function defineWellKnownSymbol(e){if(te.symbol($[e])){return $[e]}var t=$["for"]("Symbol."+e);Object.defineProperty($,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!te.symbol($.search)){var le=ce("search");var pe=String.prototype.search;h(RegExp.prototype,le,function search(e){return se.Call(pe,e,[this])});var ve=function search(e){var t=se.RequireObjectCoercible(this);if(!fe(e)){var r=se.GetMethod(e,le);if(typeof r!=="undefined"){return se.Call(r,e,[t])}}return se.Call(pe,t,[se.ToString(e)])};re(String.prototype,"search",ve)}if(!te.symbol($.replace)){var ye=ce("replace");var he=String.prototype.replace;h(RegExp.prototype,ye,function replace(e,t){return se.Call(he,e,[this,t])});var be=function replace(e,t){var r=se.RequireObjectCoercible(this);if(!fe(e)){var n=se.GetMethod(e,ye);if(typeof n!=="undefined"){return se.Call(n,e,[r,t])}}return se.Call(he,r,[se.ToString(e),t])};re(String.prototype,"replace",be)}if(!te.symbol($.split)){var ge=ce("split");var de=String.prototype.split;h(RegExp.prototype,ge,function split(e,t){return se.Call(de,e,[this,t])});var me=function split(e,t){var r=se.RequireObjectCoercible(this);if(!fe(e)){var n=se.GetMethod(e,ge);if(typeof n!=="undefined"){return se.Call(n,e,[r,t])}}return se.Call(de,r,[se.ToString(e),t])};re(String.prototype,"split",me)}var Oe=te.symbol($.match);var we=Oe&&function(){var e={};e[$.match]=function(){return 42};return"a".match(e)!==42}();if(!Oe||we){var je=ce("match");var Se=String.prototype.match;h(RegExp.prototype,je,function match(e){return se.Call(Se,e,[this])});var Te=function match(e){var t=se.RequireObjectCoercible(this);if(!fe(e)){var r=se.GetMethod(e,je);if(typeof r!=="undefined"){return se.Call(r,e,[t])}}return se.Call(Se,t,[se.ToString(e)])};re(String.prototype,"match",Te)}}var Ie=function wrapConstructor(e,t,r){m.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in W||r[n]){return}m.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in W||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;m.redefine(e.prototype,"constructor",t)};var Ee=function(){return this};var Pe=function(e){if(s&&!z(e,J)){m.getter(e,J,Ee)}};var Ce=function(e,t){var r=t||function iterator(){return this};h(e,oe,r);if(!e[oe]&&te.symbol(oe)){e[oe]=r}};var Me=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var xe=function createDataPropertyOrThrow(e,t,r){Me(e,t,r);if(!se.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var Ne=function(e,t,r,n){if(!se.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!se.TypeIsObject(o)){o=r}var i=O(o);for(var a in n){if(z(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Ae=String.fromCodePoint;re(String,"fromCodePoint",function fromCodePoint(e){return se.Call(Ae,this,arguments)})}var Re={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n<o;n++){r=Number(arguments[n]);if(!se.SameValue(r,se.ToInteger(r))||r<0||r>1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return t.join("")},raw:function raw(e){var t=se.ToObject(e,"bad callSite");var r=se.ToObject(t.raw,"bad raw value");var n=r.length;var o=se.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a<o){u=se.ToString(a);s=se.ToString(r[u]);M(i,s);if(a+1>=o){break}f=a+1<arguments.length?arguments[a+1]:"";c=se.ToString(f);M(i,c);a+=1}return i.join("")}};if(String.raw&&String.raw({raw:{0:"x",1:"y",length:2}})!=="xy"){re(String,"raw",Re.raw)}b(String,Re);var _e=function repeat(e,t){if(t<1){return""}if(t%2){return repeat(e,t-1)+e}var r=repeat(e,t/2);return r+r};var ke=Infinity;var Fe={repeat:function repeat(e){var t=se.ToString(se.RequireObjectCoercible(this));var r=se.ToInteger(e);if(r<0||r>=ke){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return _e(t,r)},startsWith:function startsWith(e){var t=se.ToString(se.RequireObjectCoercible(this));if(se.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=se.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=A(se.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=se.ToString(se.RequireObjectCoercible(this));if(se.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=se.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:se.ToInteger(o);var a=R(A(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(se.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=se.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=se.ToString(se.RequireObjectCoercible(this));var r=se.ToInteger(e);var n=t.length;if(r>=0&&r<n){var o=t.charCodeAt(r);var i=r+1===n;if(o<55296||o>56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){re(String.prototype,"includes",Fe.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var Le=i(function(){"/a/".startsWith(/a/)});var De=a(function(){return"abc".startsWith("a",Infinity)===false});if(!Le||!De){re(String.prototype,"startsWith",Fe.startsWith);re(String.prototype,"endsWith",Fe.endsWith)}}if(ne){var ze=a(function(){var e=/a/;e[$.match]=false;return"/a/".startsWith(e)});if(!ze){re(String.prototype,"startsWith",Fe.startsWith)}var qe=a(function(){var e=/a/;e[$.match]=false;return"/a/".endsWith(e)});if(!qe){re(String.prototype,"endsWith",Fe.endsWith)}var We=a(function(){var e=/a/;e[$.match]=false;return"/a/".includes(e)});if(!We){re(String.prototype,"includes",Fe.includes)}}b(String.prototype,Fe);var Ge=["\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var He=new RegExp("(^["+Ge+"]+)|(["+Ge+"]+$)","g");var Ve=function trim(){return se.ToString(se.RequireObjectCoercible(this)).replace(He,"")};var Be=["\x85","\u200b","\ufffe"].join("");var Ue=new RegExp("["+Be+"]","g");var $e=/^[-+]0x[0-9a-f]+$/i;var Je=Be.trim().length!==Be.length;h(String.prototype,"trim",Ve,Je);var Xe=function(e){return{value:e,done:arguments.length===0}};var Ke=function(e){se.RequireObjectCoercible(e);this._s=se.ToString(e);this._i=0};Ke.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Xe()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Xe(e.substr(t,o))};Ce(Ke.prototype);Ce(String.prototype,function(){return new Ke(this)});var Ze={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!se.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(ee(e)||se.GetMethod(e,oe))!=="undefined";var u,f,s;if(a){f=se.IsConstructor(r)?Object(new r):[];var c=se.GetIterator(e);var l,p;s=0;while(true){l=se.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(e){se.IteratorClose(c,true);throw e}s+=1}u=s}else{var v=se.ToObject(e);u=se.ToLength(v.length);f=se.IsConstructor(r)?Object(new r(u)):new Array(u);var y;for(s=0;s<u;++s){y=v[s];if(o){y=typeof i==="undefined"?n(y,s):t(n,i,y,s)}xe(f,s,y)}}f.length=u;return f},of:function of(){var e=arguments.length;var t=this;var n=r(t)||!se.IsCallable(t)?new Array(e):se.Construct(t,[e]);for(var o=0;o<e;++o){xe(n,o,arguments[o])}n.length=e;return n}};b(Array,Ze);Pe(Array);q=function(e,t){this.i=0;this.array=e;this.kind=t};b(q.prototype,{next:function(){var e=this.i;var t=this.array;if(!(this instanceof q)){throw new TypeError("Not an ArrayIterator")}if(typeof t!=="undefined"){var r=se.ToLength(t.length);for(;e<r;e++){var n=this.kind;var o;if(n==="key"){o=e}else if(n==="value"){o=t[e]}else if(n==="entry"){o=[e,t[e]]}this.i=e+1;return Xe(o)}}this.array=void 0;return Xe()}});Ce(q.prototype);var Ye=Array.of===Ze.of||function(){var e=function Foo(e){this.length=e};e.prototype=[];var t=Array.of.apply(e,[1,2]);return t instanceof e&&t.length===2}();if(!Ye){re(Array,"of",Ze.of)}var Qe={copyWithin:function copyWithin(e,t){var r=se.ToObject(this);var n=se.ToLength(r.length);var o=se.ToInteger(e);var i=se.ToInteger(t);var a=o<0?A(n+o,0):R(o,n);var u=i<0?A(n+i,0):R(i,n);var f;if(arguments.length>2){f=arguments[2]}var s=typeof f==="undefined"?n:se.ToInteger(f);var c=s<0?A(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u<a&&a<u+l){p=-1;u+=l-1;a+=l-1}while(l>0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=se.ToObject(this);var o=se.ToLength(n.length);t=se.ToInteger(typeof t==="undefined"?0:t);r=se.ToInteger(typeof r==="undefined"?o:r);var i=t<0?A(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u<o&&u<a;++u){n[u]=e}return n},find:function find(e){var r=se.ToObject(this);var n=se.ToLength(r.length);if(!se.IsCallable(e)){throw new TypeError("Array#find: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0,a;i<n;i++){a=r[i];if(o){if(t(e,o,a,i,r)){return a}}else if(e(a,i,r)){return a}}},findIndex:function findIndex(e){var r=se.ToObject(this);var n=se.ToLength(r.length);if(!se.IsCallable(e)){throw new TypeError("Array#findIndex: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0;i<n;i++){if(o){if(t(e,o,r[i],i,r)){return i}}else if(e(r[i],i,r)){return i}}return-1},keys:function keys(){return new q(this,"key")},values:function values(){return new q(this,"value")},entries:function entries(){return new q(this,"entry")}};if(Array.prototype.keys&&!se.IsCallable([1].keys().next)){delete Array.prototype.keys}if(Array.prototype.entries&&!se.IsCallable([1].entries().next)){delete Array.prototype.entries}if(Array.prototype.keys&&Array.prototype.entries&&!Array.prototype.values&&Array.prototype[oe]){b(Array.prototype,{values:Array.prototype[oe]});if(te.symbol($.unscopables)){Array.prototype[$.unscopables].values=true}}if(c&&Array.prototype.values&&Array.prototype.values.name!=="values"){var et=Array.prototype.values;re(Array.prototype,"values",function values(){return se.Call(et,this,arguments)});h(Array.prototype,oe,Array.prototype.values,true)}b(Array.prototype,Qe);if(1/[true].indexOf(true,-0)<0){h(Array.prototype,"indexOf",function indexOf(e){var t=E(this,arguments);if(t===0&&1/t<0){return 0}return t},true)}Ce(Array.prototype,function(){return this.values()});if(Object.getPrototypeOf){Ce(Object.getPrototypeOf([].values()))}var tt=function(){return a(function(){return Array.from({length:-1}).length===0})}();var rt=function(){var e=Array.from([0].entries());return e.length===1&&r(e[0])&&e[0][0]===0&&e[0][1]===0}();if(!tt||!rt){re(Array,"from",Ze.from)}var nt=function(){return a(function(){return Array.from([0],void 0)})}();if(!nt){var ot=Array.from;re(Array,"from",function from(e){if(arguments.length>1&&typeof arguments[1]!=="undefined"){return se.Call(ot,this,arguments)}else{return t(ot,this,e)}})}var it=-(Math.pow(2,32)-1);var at=function(e,r){var n={length:it};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!at(Array.prototype.forEach)){var ut=Array.prototype.forEach;re(Array.prototype,"forEach",function forEach(e){return se.Call(ut,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.map)){var ft=Array.prototype.map;re(Array.prototype,"map",function map(e){return se.Call(ft,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.filter)){var st=Array.prototype.filter;re(Array.prototype,"filter",function filter(e){return se.Call(st,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.some)){var ct=Array.prototype.some;re(Array.prototype,"some",function some(e){return se.Call(ct,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.every)){var lt=Array.prototype.every;re(Array.prototype,"every",function every(e){return se.Call(lt,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.reduce)){var pt=Array.prototype.reduce;re(Array.prototype,"reduce",function reduce(e){return se.Call(pt,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.reduceRight,true)){var vt=Array.prototype.reduceRight;re(Array.prototype,"reduceRight",function reduceRight(e){return se.Call(vt,this.length>=0?this:[],arguments)},true)}var yt=Number("0o10")!==8;var ht=Number("0b10")!==2;var bt=y(Be,function(e){return Number(e+0+e)===0});if(yt||ht||bt){var gt=Number;var dt=/^0b[01]+$/i;var mt=/^0o[0-7]+$/i;var Ot=dt.test.bind(dt);var wt=mt.test.bind(mt);var jt=function(e){var t;if(typeof e.valueOf==="function"){t=e.valueOf();if(te.primitive(t)){return t}}if(typeof e.toString==="function"){t=e.toString();if(te.primitive(t)){return t}}throw new TypeError("No default value")};var St=Ue.test.bind(Ue);var Tt=$e.test.bind($e);var It=function(){var e=function Number(t){var r;if(arguments.length>0){r=te.primitive(t)?t:jt(t,"number")}else{r=0}if(typeof r==="string"){r=se.Call(Ve,r);if(Ot(r)){r=parseInt(C(r,2),2)}else if(wt(r)){r=parseInt(C(r,2),8)}else if(St(r)||Tt(r)){r=NaN}}var n=this;var o=a(function(){gt.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new gt(r)}return gt(r)};return e}();Ie(gt,It,{});b(It,{NaN:gt.NaN,MAX_VALUE:gt.MAX_VALUE,MIN_VALUE:gt.MIN_VALUE,NEGATIVE_INFINITY:gt.NEGATIVE_INFINITY,POSITIVE_INFINITY:gt.POSITIVE_INFINITY});Number=It;m.redefine(S,"Number",It)}var Et=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Et,MIN_SAFE_INTEGER:-Et,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:K,isInteger:function isInteger(e){return K(e)&&se.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&k(e)<=Number.MAX_SAFE_INTEGER},isNaN:X});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if([,1].find(function(){return true})===1){re(Array.prototype,"find",Qe.find)}if([,1].findIndex(function(){return true})!==0){re(Array.prototype,"findIndex",Qe.findIndex)}var Pt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var Ct=function ensureEnumerable(e,t){if(s&&Pt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var Mt=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o<t;++o){n[o-e]=arguments[o]}return n};var xt=function assignTo(e){return function assignToSource(t,r){t[r]=e[r];return t}};var Nt=function(e,t){var r=n(Object(t));var o;if(se.IsCallable(Object.getOwnPropertySymbols)){o=v(Object.getOwnPropertySymbols(Object(t)),Pt(t))}return p(P(r,o||[]),xt(t),e)};var At={assign:function(e,t){var r=se.ToObject(e,"Cannot convert undefined or null to object");return p(se.Call(Mt,1,arguments),Nt,r)},is:function is(e,t){return se.SameValue(e,t)}};var Rt=Object.assign&&Object.preventExtensions&&function(){var e=Object.preventExtensions({1:2});try{Object.assign(e,"xy")}catch(t){return e[1]==="y"}}();if(Rt){re(Object,"assign",At.assign)}b(Object,At);if(s){var _t={setPrototypeOf:function(e,r){var n;var o=function(e,t){if(!se.TypeIsObject(e)){throw new TypeError("cannot set prototype on a non-object")}if(!(t===null||se.TypeIsObject(t))){throw new TypeError("can only set prototype to an object or null"+t)}};var i=function(e,r){o(e,r);t(n,e,r);return e};try{n=e.getOwnPropertyDescriptor(e.prototype,r).set;t(n,{},null)}catch(t){if(e.prototype!=={}[r]){return}n=function(e){this[r]=e};i.polyfill=i(i({},null),e.prototype)instanceof e}return i}(Object,"__proto__")};b(Object,_t)}if(Object.setPrototypeOf&&Object.getPrototypeOf&&Object.getPrototypeOf(Object.setPrototypeOf({},null))!==null&&Object.getPrototypeOf(Object.create(null))===null){(function(){var e=Object.create(null);var t=Object.getPrototypeOf;var r=Object.setPrototypeOf;Object.getPrototypeOf=function(r){var n=t(r);return n===e?null:n};Object.setPrototypeOf=function(t,n){var o=n===null?e:n;return r(t,o)};Object.setPrototypeOf.polyfill=false})()}var kt=!i(function(){Object.keys("foo")});if(!kt){var Ft=Object.keys;re(Object,"keys",function keys(e){return Ft(se.ToObject(e))});n=Object.keys}var Lt=i(function(){Object.keys(/a/g)});if(Lt){var Dt=Object.keys;re(Object,"keys",function keys(e){if(te.regex(e)){var t=[];for(var r in e){if(z(e,r)){M(t,r)}}return t}return Dt(e)});n=Object.keys}if(Object.getOwnPropertyNames){var zt=!i(function(){Object.getOwnPropertyNames("foo")});if(!zt){var qt=typeof window==="object"?Object.getOwnPropertyNames(window):[];var Wt=Object.getOwnPropertyNames;re(Object,"getOwnPropertyNames",function getOwnPropertyNames(e){var t=se.ToObject(e);if(g(t)==="[object Window]"){try{return Wt(t)}catch(e){return P([],qt)}}return Wt(t)})}}if(Object.getOwnPropertyDescriptor){var Gt=!i(function(){Object.getOwnPropertyDescriptor("foo","bar")});if(!Gt){var Ht=Object.getOwnPropertyDescriptor;re(Object,"getOwnPropertyDescriptor",function getOwnPropertyDescriptor(e,t){return Ht(se.ToObject(e),t)})}}if(Object.seal){var Vt=!i(function(){Object.seal("foo")});if(!Vt){var Bt=Object.seal;re(Object,"seal",function seal(e){if(!se.TypeIsObject(e)){return e}return Bt(e)})}}if(Object.isSealed){var Ut=!i(function(){Object.isSealed("foo")});if(!Ut){var $t=Object.isSealed;re(Object,"isSealed",function isSealed(e){if(!se.TypeIsObject(e)){return true}return $t(e)})}}if(Object.freeze){var Jt=!i(function(){Object.freeze("foo")});if(!Jt){var Xt=Object.freeze;re(Object,"freeze",function freeze(e){if(!se.TypeIsObject(e)){return e}return Xt(e)})}}if(Object.isFrozen){var Kt=!i(function(){Object.isFrozen("foo")});if(!Kt){var Zt=Object.isFrozen;re(Object,"isFrozen",function isFrozen(e){if(!se.TypeIsObject(e)){return true}return Zt(e)})}}if(Object.preventExtensions){var Yt=!i(function(){Object.preventExtensions("foo")});if(!Yt){var Qt=Object.preventExtensions;re(Object,"preventExtensions",function preventExtensions(e){if(!se.TypeIsObject(e)){return e}return Qt(e)})}}if(Object.isExtensible){var er=!i(function(){Object.isExtensible("foo")});if(!er){var tr=Object.isExtensible;re(Object,"isExtensible",function isExtensible(e){if(!se.TypeIsObject(e)){return false}return tr(e)})}}if(Object.getPrototypeOf){var rr=!i(function(){Object.getPrototypeOf("foo")});if(!rr){var nr=Object.getPrototypeOf;re(Object,"getPrototypeOf",function getPrototypeOf(e){return nr(se.ToObject(e))})}}var or=s&&function(){var e=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags");return e&&se.IsCallable(e.get)}();if(s&&!or){var ir=function flags(){if(!se.TypeIsObject(this)){throw new TypeError("Method called on incompatible type: must be an object.")}var e="";if(this.global){e+="g"}if(this.ignoreCase){e+="i"}if(this.multiline){e+="m"}if(this.unicode){e+="u"}if(this.sticky){e+="y"}return e};m.getter(RegExp.prototype,"flags",ir)}var ar=s&&a(function(){return String(new RegExp(/a/g,"i"))==="/a/i"});var ur=ne&&s&&function(){var e=/./;e[$.match]=false;return RegExp(e)===e}();var fr=a(function(){return RegExp.prototype.toString.call({source:"abc"})==="/abc/"});var sr=fr&&a(function(){return RegExp.prototype.toString.call({source:"a",flags:"b"})==="/a/b"});if(!fr||!sr){var cr=RegExp.prototype.toString;h(RegExp.prototype,"toString",function toString(){var e=se.RequireObjectCoercible(this);if(te.regex(e)){return t(cr,e)}var r=ae(e.source);var n=ae(e.flags);return"/"+r+"/"+n},true);m.preserveToString(RegExp.prototype.toString,cr)}if(s&&(!ar||ur)){var lr=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags").get;var pr=Object.getOwnPropertyDescriptor(RegExp.prototype,"source")||{};var vr=function(){return this.source};var yr=se.IsCallable(pr.get)?pr.get:vr;var hr=RegExp;var br=function(){return function RegExp(e,t){var r=se.IsRegExp(e);var n=this instanceof RegExp;if(!n&&r&&typeof t==="undefined"&&e.constructor===RegExp){return e}var o=e;var i=t;if(te.regex(e)){o=se.Call(yr,e);i=typeof t==="undefined"?se.Call(lr,e):t;return new RegExp(o,i)}else if(r){o=e.source;i=typeof t==="undefined"?e.flags:t}return new hr(e,t)}}();Ie(hr,br,{$input:true});RegExp=br;m.redefine(S,"RegExp",br)}if(s){var gr={input:"$_",lastMatch:"$&",lastParen:"$+",leftContext:"$`",rightContext:"$'"};l(n(gr),function(e){if(e in RegExp&&!(gr[e]in RegExp)){m.getter(RegExp,gr[e],function get(){return RegExp[e]})}})}Pe(RegExp);var dr=1/Number.EPSILON;var mr=function roundTiesToEven(e){return e+dr-dr};var Or=Math.pow(2,-23);var wr=Math.pow(2,127)*(2-Or);var jr=Math.pow(2,-126);var Sr=Math.E;var Tr=Math.LOG2E;var Ir=Math.LOG10E;var Er=Number.prototype.clz;delete Number.prototype.clz;var Pr={acosh:function acosh(e){var t=Number(e);if(X(t)||e<1){return NaN}if(t===1){return 0}if(t===Infinity){return t}return L(t/Sr+D(t+1)*D(t-1)/Sr)+1},asinh:function asinh(e){var t=Number(e);if(t===0||!T(t)){return t}return t<0?-asinh(-t):L(t+D(t*t+1))},atanh:function atanh(e){var t=Number(e);if(X(t)||t<-1||t>1){return NaN}if(t===-1){return-Infinity}if(t===1){return Infinity}if(t===0){return t}return.5*L((1+t)/(1-t))},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(L(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=se.ToUint32(t);if(r===0){return 32}return Er?se.Call(Er,r):31-_(L(r+.5)*Tr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(X(t)){return NaN}if(!T(t)){return Infinity}if(t<0){t=-t}if(t>21){return F(t)/2}return(F(t)+F(-t))/2},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(k(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o<arguments.length;++o){var i=k(Number(arguments[o]));if(n<i){r*=n/i*(n/i);r+=1;n=i}else{r+=i>0?i/n*(i/n):i}}return n===Infinity?Infinity:n*D(r)},log2:function log2(e){return L(e)*Tr},log10:function log10(e){return L(e)*Ir},log1p:function log1p(e){var t=Number(e);if(t<-1||X(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(L(1+t)/(1+t-1))},sign:Z,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}if(k(t)<1){return(Math.expm1(t)-Math.expm1(-t))/2}return(F(t-1)-F(-t-1))*Sr/2},tanh:function tanh(e){var t=Number(e);if(X(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-_(-t):_(t)},imul:function imul(e,t){var r=se.ToUint32(e);var n=se.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||X(t)){return t}var r=Z(t);var n=k(t);if(n<jr){return r*mr(n/jr/Or)*jr*Or}var o=(1+Or/Number.EPSILON)*n;var i=o-(o-n);if(i>wr||X(i)){return r*Infinity}return r*i}};b(Math,Pr);h(Math,"log1p",Pr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",Pr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7));h(Math,"tanh",Pr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",Pr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"cbrt",Pr.cbrt,Math.abs(1-Math.cbrt(1e-300)/1e-100)/Number.EPSILON>8);h(Math,"sinh",Pr.sinh,Math.sinh(-2e-17)!==-2e-17);var Cr=Math.expm1(10);h(Math,"expm1",Pr.expm1,Cr>22025.465794806718||Cr<22025.465794806718);var Mr=Math.round;var xr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var Nr=dr+1;var Ar=2*dr-1;var Rr=[Nr,Ar].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=_(e);var r=t===-1?-0:t+1;
+return e-t<.5?t:r},!xr||!Rr);m.preserveToString(Math.round,Mr);var _r=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=Pr.imul;m.preserveToString(Math.imul,_r)}if(Math.imul.length!==2){re(Math,"imul",function imul(e,t){return se.Call(_r,Math,arguments)})}var kr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}se.IsPromise=function(e){if(!se.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!se.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(se.IsCallable(t.resolve)&&se.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&se.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=N(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=se.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(se.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(e){n=e;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+l],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=s;r.reactionLength=0};var m=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+p],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=c;r.reactionLength=0};var O=function(e){var t=false;var r=function(r){var n;if(t){return}t=true;if(r===e){return m(e,new TypeError("Self resolution"))}if(!se.TypeIsObject(r)){return d(e,r)}try{n=r.then}catch(t){return m(e,t)}if(!se.IsCallable(n)){return d(e,r)}i(function(){j(e,r,n)})};var n=function(r){if(t){return}t=true;return m(e,r)};return{resolve:r,reject:n}};var w=function(e,r,n,o){if(e===I){t(e,r,n,o,y)}else{t(e,r,n,o)}};var j=function(e,t,r){var n=O(e);var o=n.resolve;var i=n.reject;try{w(r,t,o,i)}catch(e){i(e)}};var T,I;var E=function(){var e=function Promise(t){if(!(this instanceof e)){throw new TypeError('Constructor Promise requires "new"')}if(this&&this._promise){throw new TypeError("Bad construction")}if(!se.IsCallable(t)){throw new TypeError("not a valid resolver")}var r=Ne(this,e,T,{_promise:{result:void 0,state:f,reactionLength:0,fulfillReactionHandler0:void 0,rejectReactionHandler0:void 0,reactionCapability0:void 0}});var n=O(r);var o=n.reject;try{t(n.resolve,o)}catch(e){o(e)}return r};return e}();T=E.prototype;var P=function(e,t,r,n){var o=false;return function(i){if(o){return}o=true;t[e]=i;if(--n.count===0){var a=r.resolve;a(t)}}};var C=function(e,t,r){var n=e.iterator;var o=[];var i={count:1};var a,u;var f=0;while(true){try{a=se.IteratorStep(n);if(a===false){e.done=true;break}u=a.value}catch(t){e.done=true;throw t}o[f]=void 0;var s=t.resolve(u);var c=P(f,o,r,i);i.count+=1;w(s.then,s,c,r.reject);f+=1}if(--i.count===0){var l=r.resolve;l(o)}return r.promise};var x=function(e,t,r){var n=e.iterator;var o,i,a;while(true){try{o=se.IteratorStep(n);if(o===false){e.done=true;break}i=o.value}catch(t){e.done=true;throw t}a=t.resolve(i);w(a.then,a,r.resolve,r.reject)}return r.promise};b(E,{all:function all(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=se.GetIterator(e);i={iterator:o,done:false};return C(i,t,n)}catch(e){var a=e;if(i&&!i.done){try{se.IteratorClose(o,true)}catch(e){a=e}}var u=n.reject;u(a);return n.promise}},race:function race(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=se.GetIterator(e);i={iterator:o,done:false};return x(i,t,n)}catch(e){var a=e;if(i&&!i.done){try{se.IteratorClose(o,true)}catch(e){a=e}}var u=n.reject;u(a);return n.promise}},reject:function reject(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}var n=new r(t);var o=n.reject;o(e);return n.promise},resolve:function resolve(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}if(se.IsPromise(e)){var n=e.constructor;if(n===t){return e}}var o=new r(t);var i=o.resolve;i(e);return o.promise}});b(T,{catch:function(e){return this.then(null,e)},then:function then(e,t){var n=this;if(!se.IsPromise(n)){throw new TypeError("not a promise")}var o=se.SpeciesConstructor(n,E);var i;var b=arguments.length>2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=se.IsCallable(e)?e:a;var d=se.IsCallable(t)?t:u;var m=n._promise;var O;if(m.state===f){if(m.reactionLength===0){m.fulfillReactionHandler0=g;m.rejectReactionHandler0=d;m.reactionCapability0=i}else{var w=3*(m.reactionLength-1);m[w+l]=g;m[w+p]=d;m[w+v]=i}m.reactionLength+=1}else if(m.state===s){O=m.result;h(g,i,O)}else if(m.state===c){O=m.result;h(d,i,O)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof kr==="function"){b(S,{Promise:kr});var Fr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var Lr=!i(function(){S.Promise.reject(42).then(null,5).then(null,W)});var Dr=i(function(){S.Promise.call(3,W)});var zr=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,W).then(null,W)}catch(e){return true}return t===r}(S.Promise);var qr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var Wr=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};Wr.prototype=Promise.prototype;Wr.all=Promise.all;var Gr=a(function(){return!!Wr.all([1,2])});if(!Fr||!Lr||!Dr||zr||!qr||Gr){Promise=kr;re(S,"Promise",kr)}if(Promise.all.length!==1){var Hr=Promise.all;re(Promise,"all",function all(e){return se.Call(Hr,this,arguments)})}if(Promise.race.length!==1){var Vr=Promise.race;re(Promise,"race",function race(e){return se.Call(Vr,this,arguments)})}if(Promise.resolve.length!==1){var Br=Promise.resolve;re(Promise,"resolve",function resolve(e){return se.Call(Br,this,arguments)})}if(Promise.reject.length!==1){var Ur=Promise.reject;re(Promise,"reject",function reject(e){return se.Call(Ur,this,arguments)})}Ct(Promise,"all");Ct(Promise,"race");Ct(Promise,"resolve");Ct(Promise,"reject");Pe(Promise)}var $r=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Jr=$r(["z","a","bb"]);var Xr=$r(["z",1,"a","3",2]);if(s){var Kr=function fastkey(e,t){if(!t&&!Jr){return null}if(fe(e)){return"^"+se.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Xr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var Zr=function emptyObject(){return Object.create?Object.create(null):{}};var Yr=function addIterableToMap(e,n,o){if(r(o)||te.string(o)){l(o,function(e){if(!se.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(!fe(o)){a=n.set;if(!se.IsCallable(a)){throw new TypeError("bad map")}i=se.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=se.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!se.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(e){se.IteratorClose(i,true);throw e}}}}};var Qr=function addIterableToSet(e,n,o){if(r(o)||te.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(!fe(o)){a=n.add;if(!se.IsCallable(a)){throw new TypeError("bad set")}i=se.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=se.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(e){se.IteratorClose(i,true);throw e}}}}};var en={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!se.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+se.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");this.head=e._head;this.i=this.head;this.kind=t};i.prototype={next:function next(){var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Xe()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Xe(n)}}this.i=void 0;return Xe()}};Ce(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=Ne(this,Map,a,{_es6map:true,_head:null,_map:G?new G:null,_size:0,_storage:Zr()});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){Yr(Map,e,arguments[0])}return e};a=u.prototype;m.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t;var r=Kr(e,true);if(r!==null){t=this._storage[r];if(t){return t.value}else{return}}if(this._map){t=V.call(this._map,e);if(t){return t.value}else{return}}var n=this._head;var i=n;while((i=i.next)!==n){if(se.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=Kr(e,true);if(t!==null){return typeof this._storage[t]!=="undefined"}if(this._map){return B.call(this._map,e)}var r=this._head;var n=r;while((n=n.next)!==r){if(se.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=Kr(e,true);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}else{a=this._storage[u]=new r(e,t);i=n.prev}}else if(this._map){if(B.call(this._map,e)){V.call(this._map,e).value=t}else{a=new r(e,t);U.call(this._map,e,a);i=n.prev}}while((i=i.next)!==n){if(se.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(se.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},delete:function(t){o(this,"delete");var r=this._head;var n=r;var i=Kr(t,true);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}else if(this._map){if(!B.call(this._map,t)){return false}n=V.call(this._map,t).prev;H.call(this._map,t)}while((n=n.next)!==r){if(se.SameValueZero(n.key,t)){n.key=e;n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._map=G?new G:null;this._size=0;this._storage=Zr();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=e;r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});Ce(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!se.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+se.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=Ne(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:Zr()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){Qr(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}else{var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=new en.Map;e["[[SetData]]"]=t;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};m.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=Kr(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=Kr(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},delete:function(e){r(this,"delete");var t;if(this._storage&&(t=Kr(e))!==null){var n=z(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=Zr()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return this["[[SetData]]"].values()},entries:function entries(){r(this,"entries");u(this);return this["[[SetData]]"].entries()},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);Ce(i.prototype,i.prototype.values);return i}()};if(S.Map||S.Set){var tn=a(function(){return new Map([[1,2]]).get(1)===2});if(!tn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new G;if(arguments.length>0){Yr(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=O(G.prototype);h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,G)}var rn=new Map;var nn=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var on=rn.set(1,2)===rn;if(!nn||!on){re(Map.prototype,"set",function set(e,r){t(U,this,e===0?0:e,r);return this})}if(!nn){b(Map.prototype,{get:function get(e){return t(V,this,e===0?0:e)},has:function has(e){return t(B,this,e===0?0:e)}},true);m.preserveToString(Map.prototype.get,V);m.preserveToString(Map.prototype.has,B)}var an=new Set;var un=function(e){e["delete"](0);e.add(-0);return!e.has(0)}(an);var fn=an.add(1)===an;if(!un||!fn){var sn=Set.prototype.add;Set.prototype.add=function add(e){t(sn,this,e===0?0:e);return this};m.preserveToString(Set.prototype.add,sn)}if(!un){var cn=Set.prototype.has;Set.prototype.has=function has(e){return t(cn,this,e===0?0:e)};m.preserveToString(Set.prototype.has,cn);var ln=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(ln,this,e===0?0:e)};m.preserveToString(Set.prototype["delete"],ln)}var pn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var vn=Object.setPrototypeOf&&!pn;var yn=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||vn||!yn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new G;if(arguments.length>0){Yr(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=G.prototype;h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,G)}var hn=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var bn=Object.setPrototypeOf&&!hn;var gn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||bn||!gn){var dn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new dn;if(arguments.length>0){Qr(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=dn.prototype;h(S.Set.prototype,"constructor",S.Set,true);m.preserveToString(S.Set,dn)}var mn=new S.Map;var On=!a(function(){return mn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||mn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof mn.keys().next!=="function"||On||!pn){b(S,{Map:en.Map,Set:en.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}Ce(Object.getPrototypeOf((new S.Map).keys()));Ce(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var wn=S.Set.prototype.has;re(S.Set.prototype,"has",function has(e){return t(wn,this,e)})}}b(S,en);Pe(S.Map);Pe(S.Set)}var jn=function throwUnlessTargetIsObject(e){if(!se.TypeIsObject(e)){throw new TypeError("target must be an object")}};var Sn={apply:function apply(){return se.Call(se.Call,null,arguments)},construct:function construct(e,t){if(!se.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!se.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return se.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){jn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){jn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(Sn,{ownKeys:function ownKeys(e){jn(e);var t=Object.getOwnPropertyNames(e);if(se.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var Tn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(Sn,{isExtensible:function isExtensible(e){jn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){jn(e);return Tn(function(){Object.preventExtensions(e)})}})}if(s){var In=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return In(o,t,r)}if("value"in n){return n.value}if(n.get){return se.Call(n.get,r)}return void 0};var En=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return En(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!se.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ie.defineProperty(o,r,{value:n})}else{return ie.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}}if(i.set){t(i.set,o,n);return true}return false};Object.assign(Sn,{defineProperty:function defineProperty(e,t,r){jn(e);return Tn(function(){Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){jn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){jn(e);var r=arguments.length>2?arguments[2]:e;return In(e,t,r)},set:function set(e,t,r){jn(e);var n=arguments.length>3?arguments[3]:e;return En(e,t,r,n)}})}if(Object.getPrototypeOf){var Pn=Object.getPrototypeOf;Sn.getPrototypeOf=function getPrototypeOf(e){jn(e);return Pn(e)}}if(Object.setPrototypeOf&&Sn.getPrototypeOf){var Cn=function(e,t){var r=t;while(r){if(e===r){return true}r=Sn.getPrototypeOf(r)}return false};Object.assign(Sn,{setPrototypeOf:function setPrototypeOf(e,t){jn(e);if(t!==null&&!se.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ie.getPrototypeOf(e)){return true}if(ie.isExtensible&&!ie.isExtensible(e)){return false}if(Cn(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Mn=function(e,t){if(!se.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){re(S.Reflect,e,t)}}};Object.keys(Sn).forEach(function(e){Mn(e,Sn[e])});var xn=S.Reflect.getPrototypeOf;if(c&&xn&&xn.name!=="getPrototypeOf"){re(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(xn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){re(S.Reflect,"setPrototypeOf",Sn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){re(S.Reflect,"defineProperty",Sn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){re(S.Reflect,"construct",Sn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Nn=Date.prototype.toString;var An=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return se.Call(Nn,this)};re(Date.prototype,"toString",An)}var Rn={anchor:function anchor(e){return se.CreateHTML(this,"a","name",e)},big:function big(){return se.CreateHTML(this,"big","","")},blink:function blink(){return se.CreateHTML(this,"blink","","")},bold:function bold(){return se.CreateHTML(this,"b","","")},fixed:function fixed(){return se.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return se.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return se.CreateHTML(this,"font","size",e)},italics:function italics(){return se.CreateHTML(this,"i","","")},link:function link(e){return se.CreateHTML(this,"a","href",e)},small:function small(){return se.CreateHTML(this,"small","","")},strike:function strike(){return se.CreateHTML(this,"strike","","")},sub:function sub(){return se.CreateHTML(this,"sub","","")},sup:function sub(){return se.CreateHTML(this,"sup","","")}};l(Object.keys(Rn),function(e){var r=String.prototype[e];var n=false;if(se.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){re(String.prototype,e,Rn[e])}});var _n=function(){if(!ne){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e($())!=="undefined"){return true}if(e([$()])!=="[null]"){return true}var t={a:$()};t[$()]=true;if(e(t)!=="{}"){return true}return false}();var kn=a(function(){if(!ne){return true}return JSON.stringify(Object($()))==="{}"&&JSON.stringify([Object($())])==="[{}]"});if(_n||!kn){var Fn=JSON.stringify;re(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=se.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(te.symbol(n)){return xt({})(n)}else{return n}}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return Fn.apply(this,o)})}return S});
+//# sourceMappingURL=es6-shim.map
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)),
+void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
+/*
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
+/*!
+ * imagesLoaded PACKAGED v4.1.0
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}(this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||[];return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var r=this._onceEvents&&this._onceEvents[t];o;){var s=r&&r[o];s&&(this.off(t,o),delete r[o]),o.apply(this,e),n+=s?0:1,o=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){var e=[];if(Array.isArray(t))e=t;else if("number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e}function o(t,e,r){return this instanceof o?("string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=n(t),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(function(){this.check()}.bind(this))):new o(t,e,r)}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var h=t.jQuery,a=t.console;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&d[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=t.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var d={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,t),n=i.exec(e.backgroundImage)}},o.prototype.addImage=function(t){var e=new r(t);this.images.push(e)},o.prototype.addBackground=function(t,e){var i=new s(t,e);this.images.push(i)},o.prototype.check=function(){function t(t,i,n){setTimeout(function(){e.progress(t,i,n)})}var e=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(e){e.once("progress",t),e.check()}):void this.complete()},o.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,t,e)},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},r.prototype=Object.create(e.prototype),r.prototype.check=function(){var t=this.getIsImageComplete();return t?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},r.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},r.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var t=this.getIsImageComplete();t&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},o.makeJQueryPlugin=function(e){e=e||t.jQuery,e&&(h=e,h.fn.imagesLoaded=function(t,e){var i=new o(this,t,e);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o});
+/*! lz-string-1.3.3-min.js | (c) 2013 Pieroxy | Licensed under a WTFPL license */
+var LZString={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_f:String.fromCharCode,compressToBase64:function(e){if(e==null)return"";var t="";var n,r,i,s,o,u,a;var f=0;e=LZString.compress(e);while(f<e.length*2){if(f%2==0){n=e.charCodeAt(f/2)>>8;r=e.charCodeAt(f/2)&255;if(f/2+1<e.length)i=e.charCodeAt(f/2+1)>>8;else i=NaN}else{n=e.charCodeAt((f-1)/2)&255;if((f+1)/2<e.length){r=e.charCodeAt((f+1)/2)>>8;i=e.charCodeAt((f+1)/2)&255}else r=i=NaN}f+=3;s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+LZString._keyStr.charAt(s)+LZString._keyStr.charAt(o)+LZString._keyStr.charAt(u)+LZString._keyStr.charAt(a)}return t},decompressFromBase64:function(e){if(e==null)return"";var t="",n=0,r,i,s,o,u,a,f,l,c=0,h=LZString._f;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(c<e.length){u=LZString._keyStr.indexOf(e.charAt(c++));a=LZString._keyStr.indexOf(e.charAt(c++));f=LZString._keyStr.indexOf(e.charAt(c++));l=LZString._keyStr.indexOf(e.charAt(c++));i=u<<2|a>>4;s=(a&15)<<4|f>>2;o=(f&3)<<6|l;if(n%2==0){r=i<<8;if(f!=64){t+=h(r|s)}if(l!=64){r=o<<8}}else{t=t+h(r|i);if(f!=64){r=s<<8}if(l!=64){t+=h(r|o)}}n+=3}return LZString.decompress(t)},compressToUTF16:function(e){if(e==null)return"";var t="",n,r,i,s=0,o=LZString._f;e=LZString.compress(e);for(n=0;n<e.length;n++){r=e.charCodeAt(n);switch(s++){case 0:t+=o((r>>1)+32);i=(r&1)<<14;break;case 1:t+=o(i+(r>>2)+32);i=(r&3)<<13;break;case 2:t+=o(i+(r>>3)+32);i=(r&7)<<12;break;case 3:t+=o(i+(r>>4)+32);i=(r&15)<<11;break;case 4:t+=o(i+(r>>5)+32);i=(r&31)<<10;break;case 5:t+=o(i+(r>>6)+32);i=(r&63)<<9;break;case 6:t+=o(i+(r>>7)+32);i=(r&127)<<8;break;case 7:t+=o(i+(r>>8)+32);i=(r&255)<<7;break;case 8:t+=o(i+(r>>9)+32);i=(r&511)<<6;break;case 9:t+=o(i+(r>>10)+32);i=(r&1023)<<5;break;case 10:t+=o(i+(r>>11)+32);i=(r&2047)<<4;break;case 11:t+=o(i+(r>>12)+32);i=(r&4095)<<3;break;case 12:t+=o(i+(r>>13)+32);i=(r&8191)<<2;break;case 13:t+=o(i+(r>>14)+32);i=(r&16383)<<1;break;case 14:t+=o(i+(r>>15)+32,(r&32767)+32);s=0;break}}return t+o(i+32)},decompressFromUTF16:function(e){if(e==null)return"";var t="",n,r,i=0,s=0,o=LZString._f;while(s<e.length){r=e.charCodeAt(s)-32;switch(i++){case 0:n=r<<1;break;case 1:t+=o(n|r>>14);n=(r&16383)<<2;break;case 2:t+=o(n|r>>13);n=(r&8191)<<3;break;case 3:t+=o(n|r>>12);n=(r&4095)<<4;break;case 4:t+=o(n|r>>11);n=(r&2047)<<5;break;case 5:t+=o(n|r>>10);n=(r&1023)<<6;break;case 6:t+=o(n|r>>9);n=(r&511)<<7;break;case 7:t+=o(n|r>>8);n=(r&255)<<8;break;case 8:t+=o(n|r>>7);n=(r&127)<<9;break;case 9:t+=o(n|r>>6);n=(r&63)<<10;break;case 10:t+=o(n|r>>5);n=(r&31)<<11;break;case 11:t+=o(n|r>>4);n=(r&15)<<12;break;case 12:t+=o(n|r>>3);n=(r&7)<<13;break;case 13:t+=o(n|r>>2);n=(r&3)<<14;break;case 14:t+=o(n|r>>1);n=(r&1)<<15;break;case 15:t+=o(n|r);i=0;break}s++}return LZString.decompress(t)},compress:function(e){if(e==null)return"";var t,n,r={},i={},s="",o="",u="",a=2,f=3,l=2,c="",h=0,p=0,d,v=LZString._f;for(d=0;d<e.length;d+=1){s=e.charAt(d);if(!Object.prototype.hasOwnProperty.call(r,s)){r[s]=f++;i[s]=true}o=u+s;if(Object.prototype.hasOwnProperty.call(r,o)){u=o}else{if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(t=0;t<l;t++){h=h<<1;if(p==15){p=0;c+=v(h);h=0}else{p++}}n=u.charCodeAt(0);for(t=0;t<8;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}else{n=1;for(t=0;t<l;t++){h=h<<1|n;if(p==15){p=0;c+=v(h);h=0}else{p++}n=0}n=u.charCodeAt(0);for(t=0;t<16;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}delete i[u]}else{n=r[u];for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}r[o]=f++;u=String(s)}}if(u!==""){if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(t=0;t<l;t++){h=h<<1;if(p==15){p=0;c+=v(h);h=0}else{p++}}n=u.charCodeAt(0);for(t=0;t<8;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}else{n=1;for(t=0;t<l;t++){h=h<<1|n;if(p==15){p=0;c+=v(h);h=0}else{p++}n=0}n=u.charCodeAt(0);for(t=0;t<16;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}delete i[u]}else{n=r[u];for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}}n=2;for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}while(true){h=h<<1;if(p==15){c+=v(h);break}else p++}return c},decompress:function(e){if(e==null)return"";if(e=="")return null;var t=[],n,r=4,i=4,s=3,o="",u="",a,f,l,c,h,p,d,v=LZString._f,m={string:e,val:e.charCodeAt(0),position:32768,index:1};for(a=0;a<3;a+=1){t[a]=a}l=0;h=Math.pow(2,2);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}switch(n=l){case 0:l=0;h=Math.pow(2,8);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}d=v(l);break;case 1:l=0;h=Math.pow(2,16);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}d=v(l);break;case 2:return""}t[3]=d;f=u=d;while(true){if(m.index>m.string.length){return""}l=0;h=Math.pow(2,s);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}switch(d=l){case 0:l=0;h=Math.pow(2,8);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}t[i++]=v(l);d=i-1;r--;break;case 1:l=0;h=Math.pow(2,16);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}t[i++]=v(l);d=i-1;r--;break;case 2:return u}if(r==0){r=Math.pow(2,s);s++}if(t[d]){o=t[d]}else{if(d===i){o=f+f.charAt(0)}else{return null}}u+=o;t[i++]=f+o.charAt(0);r--;f=o;if(r==0){r=Math.pow(2,s);s++}}}};if(typeof module!=="undefined"&&module!=null){module.exports=LZString}
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||function(e){"use strict";var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=e.URL||e.webkitURL||e,i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),s="download"in i,o=function(n){var r=t.createEvent("MouseEvents");r.initMouseEvent("click",true,false,e,0,0,0,0,0,false,false,false,false,0,null);n.dispatchEvent(r)},u=e.webkitRequestFileSystem,a=e.requestFileSystem||u||e.mozRequestFileSystem,f=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},l="application/octet-stream",c=0,h=[],p=function(){var e=h.length;while(e--){var t=h[e];if(typeof t==="string"){r.revokeObjectURL(t)}else{t.remove()}}h.length=0},d=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var i=e["on"+t[r]];if(typeof i==="function"){try{i.call(e,n||e)}catch(s){f(s)}}}},v=function(t,r){var f=this,p=t.type,v=false,m,g,y=function(){var e=n().createObjectURL(t);h.push(e);return e},b=function(){d(f,"writestart progress write writeend".split(" "))},w=function(){if(v||!m){m=y(t)}if(g){g.location.href=m}else{window.open(m,"_blank")}f.readyState=f.DONE;b()},E=function(e){return function(){if(f.readyState!==f.DONE){return e.apply(this,arguments)}}},S={create:true,exclusive:false},x;f.readyState=f.INIT;if(!r){r="download"}if(s){m=y(t);i.href=m;i.download=r;o(i);f.readyState=f.DONE;b();return}if(e.chrome&&p&&p!==l){x=t.slice||t.webkitSlice;t=x.call(t,0,t.size,l);v=true}if(u&&r!=="download"){r+=".download"}if(p===l||u){g=e}if(!a){w();return}c+=t.size;a(e.TEMPORARY,c,E(function(e){e.root.getDirectory("saved",S,E(function(e){var n=function(){e.getFile(r,S,E(function(e){e.createWriter(E(function(n){n.onwriteend=function(t){g.location.href=e.toURL();h.push(e);f.readyState=f.DONE;d(f,"writeend",t)};n.onerror=function(){var e=n.error;if(e.code!==e.ABORT_ERR){w()}};"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=f["on"+e]});n.write(t);f.abort=function(){n.abort();f.readyState=f.DONE};f.readyState=f.WRITING}),w)}),w)};e.getFile(r,{create:false},E(function(e){e.remove();n()}),E(function(e){if(e.code===e.NOT_FOUND_ERR){n()}else{w()}}))}),w)}),w)},m=v.prototype,g=function(e,t){return new v(e,t)};m.abort=function(){var e=this;e.readyState=e.DONE;d(e,"abort")};m.readyState=m.INIT=0;m.WRITING=1;m.DONE=2;m.error=m.onwritestart=m.onprogress=m.onwrite=m.onabort=m.onerror=m.onwriteend=null;e.addEventListener("unload",p,false);return g}(self)
+/*! seedrandom.js v2.3.3 | (c) 2013 David Bau, all rights reserved. | Licensed under a BSD-style license */
+!function(a,b,c,d,e,f,g,h,i){function j(a){var b,c=a.length,e=this,f=0,g=e.i=e.j=0,h=e.S=[];for(c||(a=[c++]);d>f;)h[f]=f++;for(f=0;d>f;f++)h[f]=h[g=r&g+a[f%c]+(b=h[f])],h[g]=b;(e.g=function(a){for(var b,c=0,f=e.i,g=e.j,h=e.S;a--;)b=h[f=r&f+1],c=c*d+h[r&(h[f]=h[g=r&g+b])+(h[g]=b)];return e.i=f,e.j=g,c})(d)}function k(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(k(a[c],b-1))}catch(f){}return d.length?d:"string"==e?a:a+"\0"}function l(a,b){for(var c,d=a+"",e=0;e<d.length;)b[r&e]=r&(c^=19*b[r&e])+d.charCodeAt(e++);return n(b)}function m(c){try{return a.crypto.getRandomValues(c=new Uint8Array(d)),n(c)}catch(e){return[+new Date,a,(c=a.navigator)&&c.plugins,a.screen,n(b)]}}function n(a){return String.fromCharCode.apply(0,a)}var o=c.pow(d,e),p=c.pow(2,f),q=2*p,r=d-1,s=c["seed"+i]=function(a,f,g){var h=[],r=l(k(f?[a,n(b)]:null==a?m():a,3),h),s=new j(h);return l(n(s.S),b),(g||function(a,b,d){return d?(c[i]=a,b):a})(function(){for(var a=s.g(e),b=o,c=0;p>a;)a=(a+c)*d,b*=d,c=s.g(1);for(;a>=q;)a/=2,b/=2,c>>>=1;return(a+c)/b},r,this==c)};l(c[i](),b),g&&g.exports?g.exports=s:h&&h.amd&&h(function(){return s})}(this,[],Math,256,6,52,"object"==typeof module&&module,"function"==typeof define&&define,"random");
+/*! console_hack.js | (c) 2015 Thomas Michael Edwards | Licensed under SugarCube's Simple BSD license */
+!function(){for(var methods=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeline","timelineEnd","timeStamp","trace","warn"],length=methods.length,noop=function(){},console=window.console=window.console||{};length--;){var method=methods[length];console[method]||(console[method]=noop)}}();
+/* User Lib */
+"USER_LIB"
+}else{document.documentElement.setAttribute("data-init", "lacking");}
+</script>
+<style id="style-normalize" type="text/css">/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}</style>
+<style id="style-init-screen" type="text/css">@-webkit-keyframes init-loading-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes init-loading-spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes init-loading-spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#init-screen{display:none;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%;font:28px/1 Helmet,Freesans,sans-serif;font-weight:700;color:#eee;background-color:#111;text-align:center}#init-screen>div{display:none;position:relative;margin:0 auto;max-width:1136px;top:25%}html[data-init=lacking] #init-screen,html[data-init=loading] #init-screen,html[data-init=no-js] #init-screen{display:block}html[data-init=lacking] #init-lacking,html[data-init=no-js] #init-no-js{display:block;padding:0 1em}html[data-init=no-js] #init-no-js{color:red}html[data-init=loading] #init-loading{display:block;border:24px solid transparent;border-radius:50%;border-top-color:#7f7f7f;border-bottom-color:#7f7f7f;width:100px;height:100px;-webkit-animation:init-loading-spin 2s linear infinite;-o-animation:init-loading-spin 2s linear infinite;animation:init-loading-spin 2s linear infinite}html[data-init=loading] #init-loading>div{text-indent:9999em;overflow:hidden;white-space:nowrap}html[data-init=loading] #passages,html[data-init=loading] #ui-bar{display:none}</style>
+<style id="style-font" type="text/css">@font-face{font-family:tme-fa-icons;src:url(data:application/octet-stream;base64,d09GRgABAAAAACWoAA4AAAAAQhQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPihI/2NtYXAAAAGIAAAAOgAAAUrQXRm3Y3Z0IAAAAcQAAAAKAAAACgAAAABmcGdtAAAB0AAABZQAAAtwiJCQWWdhc3AAAAdkAAAACAAAAAgAAAAQZ2x5ZgAAB2wAABjCAAAq+uJ4WNtoZWFkAAAgMAAAADQAAAA2BZlJs2hoZWEAACBkAAAAIAAAACQIJwQZaG10eAAAIIQAAABuAAABOPTeAABsb2NhAAAg9AAAAJ4AAACeojKW6m1heHAAACGUAAAAIAAAACAA6gvwbmFtZQAAIbQAAAGPAAAC/eLsyKlwb3N0AAAjRAAAAfwAAAM0412SIHByZXAAACVAAAAAZQAAAHvdawOFeJxjYGRWYZzAwMrAwVTFtIeBgaEHQjM+YDBkZGJgYGJgZWbACgLSXFMYHF4wvPBhDvqfxRDFHMQwDSjMCJIDANLeC6V4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF74/P8PUvCCAURLMELVAwEjG8OIBwC4Ywb6AAAAAAAAAAAAAAAAAAB4nK1WaXMTRxCd1WHLNj6CDxI2gVnGcox2VpjLCBDG7EoW4BzylexCjl1Ldu6LT/wG/ZpekVSRb/y0vB4d2GAnVVQoSv2m9+1M9+ueXpPQksReWI+k3HwpprY2aWTnSUg3bFqO4kPZ2QspU0z+LoiCaLXUvu04JCISgap1hSWC2PfI0iTjQ48yWrYlvWpSbulJd9kaD+qt+vbT0FGO3QklNZuhQ+uRLanCqBJFMu2RkjYtw9VfSVrh5yvMfNUMJYLoJJLGm2EMj+Rn44xWGa3GdhxFkU2WG0WKRDM8iCKPslpin1wxQUD5oBlSXvk0onyEH5EVe5TTCnHJdprf9yU/6R3OvyTieouyJQf+QHZkB3unK/ki0toK46adbEehivB0fSfEI5uT6p/sUV7TaOB2RaYnzQiWyleQWPkJZfYPyWrhfMqXPBrVkoOcCFovc2Jf8g60HkdMiWsmyILujk6IoO6XnKHYY/q4+OO9XSwXIQTIOJb1jkq4EEYpYbOaJG0EOYiSskWV1HpHTJzyOi3iLWG/Tu3oS2e0Sag7MZ6th46tnKjkeDSp00ymTu2k5tGUBlFKOhM85tcBlB/RJK+2sZrEyqNpbDNjJJFQoIVzaSqIZSeWNAXRPJrRm7thmmvXokWaPFDPPXpPb26Fmzs9p+3AP2v8Z3UqpoO9MJ2eDshKfJp2uUnRun56hn8m8UPWAiqRLTbDlMVDtn4H5eVjS47CawNs957zK+h99kTIpIH4G/AeL9UpBUyFmFVQC9201rUsy9RqVotUZOq7IU0rX9ZpAk05Dn1jX8Y4/q+ZGUtMCd/vxOnZEZeeufYlyDSH3GZdj+Z1arFdgM5sz+k0y/Z9nebYfqDTPNvzOh1ha+t0lO2HOi2w/UinY2wvaEGT7jsEchGBXMAGEoGwdRAI20sIhK1CIGwXEQjbIgJhu4RA2H6MQNguIxC2l7Wsmn4qaRw7E8sARYgDoznuyGVuKldTyaUSrotGpzbkKXKrpKJ4Vv0rA/3ikTesgbVAukTW/IpJrnxUleOPrmh508S5Ao5Vf3tzXJ8TD2W/WPhT8L/amqqkV6x5ZHIVeSPQk+NE1yYVj67p8rmqR9f/i4oOa4F+A6UQC0VZlg2+mZDwUafTUA1c5RAzGzMP1/W6Zc3P4fybGCEL6H78NxQaC9yDTllJWe1gr9XXj2W5twflsCdYkmK+zOtb4YuMzEr7RWYpez7yecAVMCqVYasNXK3gzXsS85DpTfJMELcVZYOkjceZILGBYx4wb76TICRMXbWB2imcsIG8YMwp2O+EQ1RvlOVwe6F9Ho2Uf2tX7MgZFU0Q+G32Rtjrs1DyW6yBhCe/1NdAVSFNxbipgEsj5YZq8GFcrdtGMk6gr6jYDcuyig8fR9x3So5lIPlIEatHRz+tvUKd1Ln9yihu3zv9CIJBaWL+9r6Z4qCUd7WSZVZtA1O3GpVT15rDxasO3c2j7nvH2Sdy1jTddE/c9L6mVbeDg7lZEO3bHJSlTC6o68MOG6jLzaXQ6mVckt52DzAsMKDfoRUb/1f3cfg8V6oKo+NIvZ2oH6PPYgzyDzh/R/UF6OcxTLmGlOd7lxOfbtzD2TJdxV2sn+LfwKy15mbpGnBD0w2Yh6xaHbrKDXynBjo90tyO9BDwse4K8QBgE8Bi8InuWsbzKYDxfMYcH+Bz5jBoMofBFnMYbDNnDWCHOQx2mcNgjzkMvmDOOsCXzGEQModBxBwGT5gTADxlDoOvmMPga+Yw+IY59wG+ZQ6DmDkMEuYw2Nd0ayhzixd0F6htUBXowPQTFvewONRUGbK/44Vhf28Qs38wiKk/aro9pP7EC0P92SCm/mIQU3/VdGdI/Y0Xhvq7QUz9wyCmPtMvxnKZwV9GvkuFA8ouNp/z98T7B8IaQLYAAQAB//8AD3icrToNcBzVefe9/b3dvd29u909/dyd7ke6k86yLEunOyHJsrCxJWyJGmEcLMDYxBhHNsZQBzOAkjQmFDrGIq5gHEIcCILOAGZq3IQO04RkIGkgaUMKMbQznSlJW0wgJtOQHxRr1e+93TvJwq7JTD3y2/f//bzvfX/vAhAIzL3KPcYNBFIB8UR9EJYuAcuAqGNbOiwDSczkuorlaJ6WTeVSRwMIDveY8aN20GztjzMhW4P2H+kNUPM5NaVNQE0K3tWM77vv8rJqgnT33VJE4WWIfd/QbKHZjcXcZiFAqjCDgUJA/mZTWOIIwi0vAwNiUjkW9THIZs6DAbnj6ffGP/P+0y2vv+5SXGLKuXHJPJH92c+yT7x3883wnI9W/DxI4T9+bm7uOL+MUwNywAg0BJYFQgNKa2NDzFBEjqeM0SFXLHU4YKe7yjFoSmdEKWw5nemOUj5czMXCliilM7lyuFgqp3HaDf1j/fhH+s6cfm4MEpA8c0BSQBO5CUkD5fJi05kDjSUoNnETTUUSXtpPVm0aGHDdmV0nNkPiMUWeHZMVRSZPSlp0dqypCKVG8iT9IK5AEeamyZGAjecW5tm5SSBm8ojiSqBsYoXDTRtuymw13V8axjB+p2EPlsMGcRzTTRkGOLRpmk/AzSZ+A97ecx+QN8g9gUbc26F7N+GJiN5pLGMA8hUo7EQcHI455A0PwrS3I37N+bZhTE8bex1aeeIJ4+MTjTY6gcH+iIvgGWQRdh2TR9sS81kspCzytguLfBcyuBOLXuhwYnZnh8NFUs6plLPLScGpWBKwkYztwsop7Hie9r7rYK/9brWXTg9U+RiBX+GJiyc0rgIv7UNJe3vPjrFdyZOV/byNUkyW/0AuIi/h+h6U5a64SmW5ieGcya2AYimG+EUtnZN08ImgveV+KOYykiiJVMrbkI+dHUkC9+nyPUFdD94j639r1uTq7FiSNrR1hXS8uLbGapYUSbpaJvzmp5aODbU9iJNBU1gJa5LFTCqihNpDigmWWtc2GjUy7Y2m3hHk14qmPJXp2cTInZudO85dhzw2AuXAJQHl+Yt7l0RVjkO8u4q5JZARE2A5yNxStNgGWcQSj7izA1HucCgJOsRsb7xYWgn9XAwvRqaN4HAS4ENF3kXFFovJ/muW3zsYDK3jxaCQbOouOPXZPmBDNZG4krS0N2/9wakf7hHv+IcPX/jcaGWZAp9fvrFtv66UeSlXn4zYdZo5kLNwIJJRTbEu3jz62Zf37Xv5l7RAeugZfAQ7kJ5koA3PoJB1eP8MpHRVWqpygyITpiKz4DCoHMENlun+wrDA0bNZ9jmJZdZwhhx9UnewMKztg2yAlie9j6O7Lzrks7tYdRdOO4u/FJ9e5G93RyFTJ1f5G17IZDs7z25uEfuFBYwlvYpUUuTnKJO6umg5IymD88yGGxbycjN2JOkIVk6wUoEzm/0O5T/Owb92Jg8NyL/6qFrl30IZ5nSgMp3nch7DkvOMCaMeoQ1U4JZxQncenmAMmcAei/S7V9CvAccW8mczwtMCceSQ8nwhXWuKAeQPJbRCc9RnhoSyhvBL+WgxTzsk0Y567IFj+35wa4Xq7ykS5YIm7UIdq4iCfKcsiIoSvFFWONUnFovZoXHKhXE69R9hTOIEgZPcJ0VZRrx+i3j9hhtFPqQDnYjX8uaEpS2+F4twiVkOylSJAwfvBZO3XBnoTaEHtltSWAGKIEl3SJIQ1CRESIRnLFtJRc88GckEbQuOBTO5zBXziL0JIPKiyMtzggwiMc+czmbDEbDMbJaLhC3LPzPuFOKaD6zEM+tt15gNxTPLIg5dvglCfGmbmakYmqmKsEfRVOWWAXjqvEzVeamT6botq9321Vu2rIb7KOrufmZ24LWmoiI3yspJJ65e704JprBSFGH3pxXLhAQe9fBzbM1rq7YAm1dsctvZSiqu8G94rxwS/LQ7JYorRR0XXq/GmSh4dJADKAsSk70ajQ8gHdE0MhzVjOCbVDSvKINd1PhKVN+fgMTG2zYCvIaq+V2mmsNTP36IRLD6xO7ejWTDisfc7zCVD6tQW+/eMTW1Y3fSt20foe+hBZpQ3zfGfH3vyzmCZNvHFoJFVPrRjj7m6I26M3r7KHQxgD5c2H/4tQdIeJLJ+yQDvTsZOwv4jYfJQxVaxxmtKtNTTVaQnRmS6kkWvfBoNvCeIT55jt41PJZwpg3YYeJYGK+dppgK/sF+R/8ggZIOBlnyNoK/qpwokLZ6uCFRKCTKV8HeGaYksPg2Xj/3fyQZb6dhGWv2QLLQU4DW7lZwf77Hw+vb3AjzexKIVywkEXoGlB1JUqr4FW3A7BZlDzgzhZ5W0tyfI1da7mmn13JvsZOFxLuJIRsmLXJVskByA41iu/uvSds9bWOnPZQ4lSgANm+xqQ6gMPlGH2YR79rSDIXLXQBujHZSxkCpSIeynwCdNxEFJ2HVmSDaFPxQYoIN2BfCM8E6zTCu66VDSQ97KkPfIa8i7nGUITNAZagDhYFJjeg5rXh+bcBuYamT/JWmRVE8Iopeb/3ud1ZdSIs4TkQLcaogJ63Z5dGUxEfefz8qSKko+Qm2PB/ZgyEEMngmjkjovYB0GBog+n9COzD7MiQ73pfOA5S8NLseIst+QWbPC9y/J8dRv7QFliCNWcnzAYlI3fE8hdNVbBPY1WEeZxm8m5mKOdypQRG1qhiRgQBnZbr7N20qT1ipoPsLVYWEGq8hE3BoLPn2tV8PhWVe0WTB4nIN3WMD7cmIiDZEhaSSROulWMbk2+sX4LIs0Iq4NNdUfV3mDeqCbaEOligmbYSFCaU0VRVULrhTKoKlIMubNvV3ZyyOByWMilXkBpNjcIjihTjBrwzF/bmKF1iMJNsHxrobcnxElDVF0C3u69fevP5txIsEcUrVZyR96DPqiI/C+zGTp0uZGkXVP6PG1RncET7Ey/eKjnX885QeWw83krsCIVyvMp8TD9P3rEvMFUkFZxS6Rw25ytWQJ/52/tqLyQSDrc7Dpiq/H2XDgYsVBgjnK7BF95EwLKLNKLh0bg5x74VXPNwJO1fq7raB588j7pbhat78pDKjPE1td1Jl6Hhn8Q73LdISsCrrgwuijljQ28Tinnavx+Xu9ap6jYqn2QzNaly7RoVJ99MoBl/DvmtU1X0Lu3FCnO37XXKEW832Nai8BYnDKKvIF92W3F9dotK94ahCNyJPuW+5b2L1WrQ2X6fSc1TBejLg77uvsm8FX2b1ghWk6cbjuB1FUIVm9y0f6aMKfMbdhjshNGihFKgIgE7044ZvkbXz+zbh3chXN/f35Z6mOyF2b/m7H6V7HVV3XYOYtiDOig/J25bh+xPuAPMdxRPRc8V1YU8Z2mEv9OIO2O6DTg8Wtt2C3+lCcjBRmEaNVbDhi0nLnUK1ttvqdVpsexruQ93WGnf3T9s47N+te7nN5FeohRGeChUfIvZx5htAPYTNjQl/ea/tTlkW7LZ7nIK3dyNsGUwWpq0+a4k/ALvozB5nurkCqwthUdrq5mnzBD/tu5rpfPVYuC6L0VZwnMfd/YnGxgTc97jjFNjGFvRQ6iyrYPfZjyPVyQJM233YRF5YVb1xgLzjwVMX3NOwZ/K7wtJZx4W8pGRNNzf4ZOBeCKgPCxuKcUYmxQNycbjP5wGlEJGk8OZc369tR3gtaZ+X6CbmVkIONRVJcugpluk1TQL1Fqmfy1ELVi4hYy1zJhYNj4zu7RkfbuebN17fv+q2Fj4sDgtE7Hv2uk89uneIH7j9yNWjR1YMmUvJSzO6s9QcGWkbHt83PtzW0yWCMMLr4roNcMm+o88e3XdJ/0VDkWiFDxSv5YhXq8d3nVAryjjtoDXp7Ojn2gg6ijGHIUxDpQZ0Y2lQym2+5NZHN219to8XhsUw33Lb6p6dG9DVGN598/bmkXA0NoPeR2t4qO/h0U8d3bcKtmB5yeilos6PCCB29fgINjeNmEsdfaYmGhm6qB9RrPhEx7mrEbfGwCDauZXNJo09wLJ1oAhSe1NxWkUDKKJofMqeE+szt8S4K9JYmjbLXRRtylOU1vWN//mVy4/0DVGNqM9QJT7SvL287ot5MSZoGC/oyHTWO7p3vdd5s6RB439/5fKH6aIaEDh46AVkpMqWo1YdaWpe1690hzT4e79jxGuLvD+R0iUwuiJ+TLUM4+yrA8aAdsVAsX1JFgMsTkCF4ceBdtgLZ8oXaENnPpfPipLA6A57nn4+XI1hUbCoYmig1KP5pH44Kybnq4cUyatKivvTmXpeOC7y8J4il3yHncWVz+SDrc5zTqucPyYro3Af7XP30/I8ddJxsQAgXIFbz37QdsmqNhJl0K6145C0rkWzExAX8aM3sDpwYyA8oF83PNBXWu7xRPQMIT1E6syw7M4F2tFwOmyhVKQ7+uH/lz9DribLBF4jsuze94lYBc+7LzLOXMw4c+66u52EZz/QLEWxyA0XZFuA9+OVUfSTwyzWCw0o3a0Jx9BYTrKp2AZiEi9qGSs6OFhZkPboRDXesZKpbcd3UOjV8dMgNNQhr1pJh0Qy5petVIQ48Zq1KefMj7zIhluf3pQeBs5JfUuJMGcgHFRik16gP1mzHX2EmroaYhmVysETLOo54aSGU/gHzbEwdRvCMXuGhUczHj3HkZ42Rk9LYIDS07c8YRuqSBg91Pmnwo8VghFR2Y9oKTmxziSwi0HTN2I1cMvT3E7Fezk/Pae1UnYyUwqdRnqCNZPoXSJSk6hxGWmRBKqBSMqyTP97/wmaJcQCGpqbG5Iw6vhEtHpEVWihepULpFG3rqG0rOha2qTxJIC0YOSYFjrxEtP8nlSlIxvu7PLcRKmS76mk04Sq0HoTqJ04CcfcK+DDIU34mhCX/dByaAiDy58ibicVeRdNJrNyezI2G/ESlUKsZDxiOtLJk/ChXCc9Imp+1nO2xL6QZIkkWiizM7SHIF9q9K8ZpQDx8zOjgWaMzORvdrSGPJ2sEzRYZer9O2gmWD4zSTr6sSuH8Uc/IGjmyLIMOHUV0G48840967ixy2v6zIhcU+pr3bDj9u0bc1xfqUbO9sUuH3O/iqEbFPqaPbOBZuFTO57rx7mxvnDL7avRFLah/ei55LZCpKddjqz4OxhyH6YRLuzA0rcfY5yC8rQTcb08JdLYleZW8TZ0lGgSCyVfQoQtRDiPV6BqKLryzL7kqRmkuoGdE5UzlKWy39mJQlU1OChf1KrEHOYcsdMhvaO3j5JN+zZBXJZ2Kmq0WRSMDSFJGqmtC0q8eZesmfWxPxNNca3DC3KzYsg7MBBXhJ2yHmvy5sojNXVBmQvfhUdoxJ0NgiENWTzfqwd3SOjC927ceNvGjbfTUTNp13eIumhvAKEvJA/HTUW6Maj1CeJAUtBFrcOI1xugSWxubV1qqaRJ1gZvqiHLbKqwOo5TR9hELw7/iBsjL/t6WXl+SWN9VOO5RfnTtJcwreTFY35bWthGB+bMB+yOcGEDg4bztxbkUR0wh1h2kJWgV0awMR+Hjvn5mlrmu9BMCMpYsZynmQC8KR2xco4maZIg5jN5CU86ViJ/s27nzqlxgFc6167fuXP92s5XYOdDO8j4pYNYw16IjR8eH79U0ra3Y6V9uyat20l2P7AbsKpjJ81Tzs39nt9PXgqYeL9LNB+Yi9uMN1BEZ0knnvijDiZLEDg6dJ30NuA9oQEVh9U0uk/kgO8A+R94pvWy8YveWn0ZWbfmLepJXdqz5Z5B94qhu7d2k75r7l0Lx2gVtvTMr6FXgDY7p56d6qSNS+/e0ke6r//CQ1/YXiTdW++u+FK/529HfC3klvzNhK3Te4txIUFlkuQ8tIjguXrUG6WAPWgMsIcDF664d3v3DHXwhQ07YMul2I9QDvtQXz+bokoej3uUo5mt1Qi7f/m58pGoIAyavsnnFiUl8cbhKTpRmI+CKw9Y1oKc5GvZZJCT6kWJcCHNzzDS3KTQKEocr/6Fe1GoUf+1rq/QG/W/hs9goz8E649Xc5M6HxXjAnDV9OT9spBFuwOC26Prv2bzQ3RhCHfwaYpW8+LxqOzlYOZR7/Kf/RbmXMktCzAr3jWP/Kqt5KUqZDq4uTqyBbYGfL17HcuL19KcjykyePSoAP2bNgILH1qOXXFwA9l471P3bOIvOwRXL8j+k0OjB6cPjrLCfe2sXP/824QcsAMZlOmGWiMo0rwb4K1qo+mH/LkBVlXdA+cFXFFWvz0//AXvbZ6+ac3GoyzHHvXfzCqvNILfLi9qV7KBJ/03OPbql/A+XlcDa3g9C1/rnPPU/XzkR4E3q/4p6kHES6V3vVx1M7x3EG4RnpwfhuT9B8mTF4BG6w/vZp7SbtoL4oJBkCuYe2+LL3GT6CtdzGKjNas6FGaHETyqOIeljCSdy4azYTwkLxFIL08OHSKaM+7sonl9vERpGguhHaS5bUgz24xu3ETTPsVKqntkIZfpqR1MdBfQKd6hmiFHviU1QZ260MQ2FSOcbfDmVoyFeHkb9rq/db9KFWsP6uutqz6LgZW6R+JrIjp86Gp6jSXL+7RoUv38yjEracH0NiVpKdu2ISBl27QDRdTKAT9WHoc/IL/p7w4sptcdmtpFR6IcZRnNXDnaT909x7Ykjj6PwmlFdP9FMuWgQvb8nAiKpHB7iS4/r+pk678LRCWOGpq9QwfOlOGlbpDkEPwThngKL7puibAY5LvMl+ZQQ8Yx4mxF/wZjkGJ7a3NjKl5jyjiJ/hAhLzVVExN+9qMpZsAyWImhu/eF2NlfcmS6bxq6lNlO9CZvxpjon/G7R5k1SqVwuFwOv3HTTZn0TTelSQs2wtjpPkNH8D/RH++b3mkosx0KLkzSlfi92qSrzPKX2arMTe692ChjJ7T5I75t3I487EIe5jXKQ6pg6Q83qs/lEn3noSFynmb4aOrBF9sEoBuHhKFYcL11up41emofLCQGE60wVdeDClSvn5qqM41Go7t+iuWUHqzrNrOGWTsFst5TtwLXXPk0Syc9fSX2rsBFmzadY6C/Fge8d+e5uXHkfyiQRc6vwTu2Ylkhz95Fq2/8+YVv/CxSqb7xxyqhDjDBRxFBxcQnSYzeBfrYNqGJjej4TLDfWEywII42hqZ+/BB/6I2DkCn0WS9uv3PD4Z0DpG/3oemDe7u5NS/aMOWtol60t2qCusYTSi19uHn1iHiQOpz2i2v6xx/4xqE9PfyqHQ+N3Ln9RftsmoxADcYAyvMt9Y73lr7wdwTUmb8g/u53GOaw6pPizJC9MJrEj7noG9sG1CNhmWN2BcF2dpRzGBfz5XrojEWZRxuj6aCYY0tiLJOTMmK2uJJQjxj/8hjKEB1iGHCj4JTpxczQzEtehAevG+5pUO12twtCjfG4I979yJB4a7RlZbDdVGV1OMgDQPZQY+ERm1wqiVyYJwJHMrGaP+o9YKbUlE2ApL6YEiyylNT9ESff74qtvCgqNSZcBVOa+2Hr9q9E70rVikGTcxRJ4BSQa6ImzpQIEXk+OFbqhvQRQ4souDWotqAiL2Xqm+AZ/Yz0kXcCOnvfqg1779vzOXtqtvPMii9Ig5+dwj87Kf4bQ6EJfdRt4PyQZYFY0/NXERbE5vPzi+As2njhToFqfp7h6ufXYTFiZ6MCryyG/xQX5qIBFddLfr6b+SYsHc3P1ocikRD5rxCMuNslxeBKuiZjzQpUY6kFvwNgPtyioHRxkEr9fv+HE5AwHFc9q0neOXOa/kiAi9ByQX3et1fZb2+q7yCL914QN5y1GVt/DOVaR29JPCECXV9iGaI84A7sQ9W3Y4dLZe4vVR1Mxd3Hc7rq7lNVOKjqHM9xqmiceVWXNTgoiO6fswpN0R/EfnefyHtnMvcsdw1nzMOJiSzGpQ+SPmclxmVRqlVM0HG5wNFSQYAIRhjE3ZDTsobwJbifVegTxj7sx7mCRwvp5XSWh6/QYs/TwjyMahKsVCYZVaeECMTR56MplPyzCfrSPO/dL0m8RwvpQ1oS56aF7i/58Mpn0eOHaKxcTNGd84cLd4oCvXPu3B+4a8kPUA7rmSzJ7E3Zy7OzuJEm/Mt+7Eh/pyDPMx7xF7luuh/CY9hDe4WZYLqvW+YhFlJiWX1PO0aOB6L0t3AVOUK7V/XSqP8Dx/CavHCY8erwC3jhyKHZR2nu9wXvpz4vKN4dwOIA22sZ/S1RTbhyBxbvF/XeXzEQpfEUTa0hLTTE+RigN9vzQhBp0RzT5OUaKazwlhEU8u0fx8D9XmGdwVmmZmpavDGuichhJJUz1nn5pp9yj5H3GG7DgZtovmnn5YNFiiT/JyIZqw6Uvd+i0TRIFwumFw7SVEg/TYvQDM/8hE9O4uTWEVlECuyU2tLW1oKK3jIk+bItDxy6TZKw36mttdZgKDxo1fIRzrFMSbrt0J/Cl8KVh1OcozuqGUyO7RxLBk3UrA6XfmDTF97qwAErpOl655GnjnTqOidyIQsHO08G/hcLt/j/AAB4nGNgZGBgAOLaW41M8fw2Xxm4mV8ARRguss1QhNC5H/9//Z/FUsEcBORyMDCBRAFTFwxveJxjYGRgYA76n8UQxVLGwPD/FUsFA1AEBfgBAHyYBUh4nGN+wcDAvACCWfSBNIgviMBM1kA6koGBMRWVBqsDYqYmiF4wHQkxg+kUBMPVWEP0gTDYvBdoahZAzYxEY0ciuWUBFjkoZimDYLC8IKpehmsQccYvSGYgYZB7YBhFL5o8cxTQjDUI/wIArpclrwAAAAAAAAA6AIYA3AEKAUgBgAGgAfoCYgKqAwIDOgOGA9wEQAR4BLYFAgU8BZoFzAYMBlIGmga6BtgG+AcYB0QHcAecB8gIAAg2CG4IpgjyCUAJrAo0CtALOAueDAoMYA0ADVANjg3mDiQOjg7GDvgPOA+ED84QPBB2EN4RNhGgEfISchKoEsgS6BMGEz4TXhOSE8QT+BQsFGIUiBTWFX0AAAABAAAATgBuAAYAAAAAAAIAAAAQAHMAAAAiC3AAAAAAeJx1kctOGzEUhn9DoIKgLloJdcdZIRDK5CKhSqyoogJrhLJDwgyeSzpjRx4HlGfgLcoz8Dp9j+76Z2KhqFJmZM93Ph/bxx4AX/AHCqvnnG3FCgeMVryFT/gReZv+JnKHfBd5B108RN6l/xV5H2d4idzFV/zmCqqzx2iK98gK39RR5C18Vt8jb9P/jNwh30fewaGaR96lf428j4l6i9zFsfo7drOFL/MiyMn4VEaD4bk8LsRRlVZXouehcL6RS8mcDaaqXJK6OtSml+lemTrb3Jp8Xmm/rtZ5YnxTOivDZLCur401XgfztNytec5HIWSSeVfLVdxHZt5NTRqSIoTZRb+/vj/GcJhhAY8SOQoECE5oT/kdYYAhf4zgkRnCzFVWCQuNikZjzhlFO9IwvmTLGFlaw4yKnCBlX9PUdD2Oa/Zlay1n3dLmXKei9xuzNvkJ7XLvso2F9SaselP2Na1tZ+i2wqePszV4ZhUj2sBZy1P4tmrB1X/nEd7XcmxKk9In7a0F2gv0+W44/z/KQo7lAHicbZLnlpswEIW5Bgy4bLLpvfeE9N57z76DLARWEJKOEEucpw8CO/kTncOdT6PhnlHxRt4wJt7/x47nYQQfAUKMESFGggmmmGGOLezBXmxjH/bjAA7iEA7jCI7iGI7jBE7iFE7jDM7iHM7jAi7iEi7jCq7iGq7jBlLcxC3cxh3cxT3cxwM8xCM8xhM8xTM8xwu8xCu8xhu8xTu8xwd8xCd8xhd8xTd8xw/sBLUlZuIkZZW2q0hzahvDRqocUyIpE4EWTR1WXDZ1sGRCz5yklBsqWBZwmauZk01mTqxl0nIlUyLs9r/Zej35m4kFl2XKftlAKFomTlKlmfQ1l74lRdB9dbxQqqyIKbc2MPQZGqbFKsqVaYnJ4ky1Ms24iQXLrYPE8GLZ07jRfaIvcf5JX+NoMhQ5jLoqFwenBS8Gpw7WTh05py6MaOtT2ibEGNXWKW1Da0i9nPY6dNe7CEWy7pc+5EJpvfJVnvtUFUHFZBPWS2LYxKqiECztVpINypAuGS2nvQ6Gs+H0hsk0U3ZznDETguua1/MNpLvMWH/RFGEuuobCihScxqS2zPC6jH4rVaVcxn1UjQ1yJW1QK2MTJ6nrPOqp0d3Vk1WoSVOz7p0oHeWdTbpoh5i3sVWpezp23AGTWch+Mmonu0o0Vb+l6RqdabLmRnveH9ru7j54nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZGFwAB9MiuAAAAA==) format('woff')}</style>
+<style id="style-core" type="text/css">html{font:16px/1 Helmet,Freesans,sans-serif}#store-area,tw-storydata{display:none!important;z-index:0}.no-transition{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}:focus{outline:thin dotted}:disabled{cursor:not-allowed!important}body{color:#eee;background-color:#111}a{cursor:pointer;color:#68d;text-decoration:none;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}a:hover{color:#8af;text-decoration:underline}a.link-broken{color:#c22}a.link-broken:hover{color:#e44}span.link-disabled{color:#aaa}area{cursor:pointer}button{cursor:pointer;color:#eee;background-color:#35a;border:1px solid #57c;line-height:normal;padding:.4em;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}button:hover{background-color:#57c;border-color:#79e}button:disabled{background-color:#444;border:1px solid #666}input,select,textarea{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}select{padding:.34em .4em}input[type=text]{min-width:18em}textarea{min-width:30em}input[type=checkbox],input[type=file],input[type=radio],select{cursor:pointer}input:not(:disabled):focus,input:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):hover{background-color:#333;border-color:#eee}hr{display:block;height:1px;border:none;border-top:1px solid #eee;margin:1em 0;padding:0}textarea{resize:vertical}audio,canvas,progress,video{max-width:100%;vertical-align:middle}.error-view{background-color:#511;border-left:.5em solid #c22;display:inline-block;margin:.1em;padding:0 .25em;position:relative}.error-view>.error-toggle{background-color:transparent;border:none;line-height:inherit;left:0;padding:0;position:absolute;top:0;width:1.875em}.error-view>.error{display:inline-block;margin-left:1.75em}.error-view>.error-source[hidden]{display:none}.error-view>.error-source:not([hidden]){display:block;margin:0 0 .25em;padding:.25em;background-color:rgba(0,0,0,.2)}.highlight,.marked{color:#ff0;font-weight:700;font-style:italic}.nobr{white-space:nowrap}.error-view>.error-toggle:before,.error-view>.error:before,[data-icon-after]:after,[data-icon-before]:before,[data-icon]:before,a.link-external:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}[data-icon]:before{content:attr(data-icon)}[data-icon-before]:before{content:attr(data-icon-before) "\00a0"}[data-icon-after]:after{content:"\00a0" attr(data-icon-after)}.error-view>.error-toggle:before{content:"\e81a"}.error-view>.error-toggle.enabled:before{content:"\e818"}.error-view>.error:before{content:"\e80d\00a0\00a0"}a.link-external:after{content:"\00a0\e80e"}</style>
+<style id="style-core-display" type="text/css">#story{z-index:10;margin:2.5em;-webkit-transition:margin-left .2s ease-in;-o-transition:margin-left .2s ease-in;transition:margin-left .2s ease-in}@media screen and (max-width:1136px){#story{margin-right:1.5em}}#passages{max-width:54em;margin:0 auto}</style>
+<style id="style-core-passage" type="text/css">.passage{line-height:1.75;text-align:left;-webkit-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.passage-in{opacity:0}.passage ol,.passage ul{margin-left:.5em;padding-left:1.5em}.passage table{margin:1em 0;border-collapse:collapse;font-size:100%}.passage caption,.passage td,.passage th,.passage tr{padding:3px}</style>
+<style id="style-core-macro" type="text/css">.macro-linkappend-insert,.macro-linkprepend-insert,.macro-linkreplace-insert,.macro-repeat-insert,.macro-timed-insert{-webkit-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.macro-linkappend-in,.macro-linkprepend-in,.macro-linkreplace-in,.macro-repeat-in,.macro-timed-in{opacity:0}</style>
+<style id="style-ui-dialog" type="text/css">html[data-dialog] body{overflow:hidden}#ui-overlay.open{visibility:visible;-webkit-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-overlay:not(.open){-webkit-transition:visibility .2s step-end,opacity .2s ease-in;-o-transition:visibility .2s step-end,opacity .2s ease-in;transition:visibility .2s step-end,opacity .2s ease-in}#ui-overlay{visibility:hidden;opacity:0;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%}#ui-dialog.open{display:block;-webkit-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-dialog{display:none;opacity:0;z-index:100100;position:fixed;top:50px;margin:0;padding:0}#ui-dialog-titlebar{position:relative}#ui-dialog-close{display:block;position:absolute;right:0;top:0;white-space:nowrap}#ui-dialog-body{overflow:auto;min-width:280px;height:90%;height:calc(100% - 2.1em - 34px)}#ui-overlay{background-color:#000}#ui-overlay.open{opacity:.8}#ui-dialog{max-width:66em}#ui-dialog.open{opacity:1}#ui-dialog-titlebar{background-color:#444;min-height:24px}#ui-dialog-title{margin:0;padding:.2em 3.5em .2em .5em;font-size:1.5em;text-align:center;text-transform:uppercase}#ui-dialog-close{cursor:pointer;font-size:120%;margin:0;padding:0;width:3.6em;height:92%;background-color:transparent;border:1px solid transparent;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}#ui-dialog-close:hover{background-color:#b44;border-color:#d66}#ui-dialog-body{background-color:#111;border:1px solid #444;text-align:left;line-height:1.5;padding:1em}#ui-dialog-body>:first-child{margin-top:0}#ui-dialog-body hr{background-color:#444}#ui-dialog-body ul.buttons{margin:0;padding:0;list-style:none}#ui-dialog-body ul.buttons li{display:inline-block;margin:0;padding:.4em .4em 0 0}#ui-dialog-body ul.buttons>li+li>button{margin-left:1em}#ui-dialog-close{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-close{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}</style>
+<style id="style-ui" type="text/css">#ui-dialog-body.settings [id|=setting-body]{display:table;width:100%}#ui-dialog-body.settings [id|=setting-label]{display:table-cell;padding:.4em 2em .4em 0}#ui-dialog-body.settings [id|=setting-label]+div{display:table-cell;min-width:8em;text-align:right;vertical-align:middle;white-space:nowrap}#ui-dialog-body.list{padding:0;min-width:140px}#ui-dialog-body.list ul{margin:0;padding:0;list-style:none;border:1px solid transparent}#ui-dialog-body.list li{margin:0}#ui-dialog-body.list li:not(:first-child){border-top:1px solid #444}#ui-dialog-body.list li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-decoration:none}#ui-dialog-body.list li a:hover{background-color:#333;border-color:#eee}#ui-dialog-body.saves{padding:0 0 1px}#ui-dialog-body.saves>:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves table{border-spacing:0;min-width:340px;width:100%}#ui-dialog-body.saves tr:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves td{padding:.33em .33em}#ui-dialog-body.saves td:first-child{min-width:1.5em;text-align:center}#ui-dialog-body.saves td:nth-child(3){line-height:1.2}#ui-dialog-body.saves td:last-child{text-align:right}#ui-dialog-body.saves .empty{color:#999}#ui-dialog-body.saves .datestamp{font-size:75%}#ui-dialog-body.saves ul.buttons li{padding:.4em}#ui-dialog-body.saves ul.buttons>li+li>button{margin-left:.2em}#ui-dialog-body.saves ul.buttons li:last-child{float:right}#ui-dialog-body.settings div[id|=header-body]{margin:1em 0}#ui-dialog-body.settings div[id|=header-body]:first-child{margin-top:0}#ui-dialog-body.settings div[id|=header-body]:not(:first-child){border-top:1px solid #444;padding-top:1em}#ui-dialog-body.settings div[id|=header-body]>*{margin:0}#ui-dialog-body.settings h2[id|=header-heading]{font-size:1.375em}#ui-dialog-body.settings p[id|=header-label]{font-size:87.5%}#ui-dialog-body.settings div[id|=setting-body]+div[id|=setting-body]{margin:.5em 0}#ui-dialog-body.settings [id|=setting-control]{white-space:nowrap}#ui-dialog-body.settings button[id|=setting-control]{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}#ui-dialog-body.settings button[id|=setting-control]:hover{background-color:#333;border-color:#eee}#ui-dialog-body.settings button[id|=setting-control].enabled{background-color:#282;border-color:#4a4}#ui-dialog-body.settings button[id|=setting-control].enabled:hover{background-color:#4a4;border-color:#6c6}#ui-dialog-body.share{min-width:140px}#ui-dialog-body.list a,#ui-dialog-body.settings span[id|=setting-input]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-body.saves button[id=saves-clear]:before,#ui-dialog-body.saves button[id=saves-export]:before,#ui-dialog-body.saves button[id=saves-import]:before,#ui-dialog-body.settings button[id|=setting-control].enabled:after,#ui-dialog-body.settings button[id|=setting-control]:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-dialog-body.saves button[id=saves-export]:before{content:"\e829\00a0"}#ui-dialog-body.saves button[id=saves-import]:before{content:"\e82a\00a0"}#ui-dialog-body.saves button[id=saves-clear]:before{content:"\e827\00a0"}#ui-dialog-body.settings button[id|=setting-control]:after{content:"\00a0\00a0\e830"}#ui-dialog-body.settings button[id|=setting-control].enabled:after{content:"\00a0\00a0\e831"}</style>
+<style id="style-ui-bar" type="text/css">#story{margin-left:20em}#ui-bar.stowed~#story{margin-left:4.5em}@media screen and (max-width:1136px){#story{margin-left:19em}#ui-bar.stowed~#story{margin-left:3.5em}}@media screen and (max-width:768px){#story{margin-left:3.5em}}#ui-bar{position:fixed;z-index:50;top:0;left:0;width:17.5em;height:100%;margin:0;padding:0;-webkit-transition:left .2s ease-in;-o-transition:left .2s ease-in;transition:left .2s ease-in}#ui-bar.stowed{left:-15.5em}#ui-bar-body{height:90%;height:calc(100% - 2.5em);margin:2.5em 0;padding:0 1.5em}#ui-bar.stowed #ui-bar-body,#ui-bar.stowed #ui-bar-history{visibility:hidden;-webkit-transition:visibility .2s step-end;-o-transition:visibility .2s step-end;transition:visibility .2s step-end}#ui-bar{background-color:#222;border-right:1px solid #444;text-align:center}#ui-bar-tray{position:absolute;top:.2em;left:0;right:0}#ui-bar a{text-decoration:none}#ui-bar hr{border-color:#444}#ui-bar-history [id|=history],#ui-bar-toggle{font-size:1.2em;line-height:inherit;color:#eee;background-color:transparent;border:1px solid #444}#ui-bar-toggle{display:block;position:absolute;top:0;right:0;border-right:none;padding:.3em .45em .25em}#ui-bar.stowed #ui-bar-toggle{padding:.3em .35em .25em .55em}#ui-bar-toggle:hover{background-color:#444;border-color:#eee}#ui-bar-history{margin:0 auto}#ui-bar-history [id|=history]{padding:.2em .45em .35em}#ui-bar-history #history-jumpto{padding:.2em .665em .35em}#ui-bar-history [id|=history]:not(:first-child){margin-left:1.2em}#ui-bar-history [id|=history]:hover{background-color:#444;border-color:#eee}#ui-bar-history [id|=history]:disabled{color:#444;background-color:transparent;border-color:#444}#ui-bar-body{line-height:1.5;overflow:auto}#ui-bar-body>:not(:first-child){margin-top:2em}#story-title{margin:0;font-size:162.5%}#story-author{margin-top:2em;font-weight:700}#menu ul{margin:1em 0 0;padding:0;list-style:none;border:1px solid #444}#menu ul:empty{display:none}#menu li{margin:0}#menu li:not(:first-child){border-top:1px solid #444}#menu li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-transform:uppercase}#menu li a:hover{background-color:#444;border-color:#eee}#menu a,#ui-bar-history [id|=history],#ui-bar-toggle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#menu-core li[id|=menu-item] a:before,#ui-bar-history [id|=history],#ui-bar-toggle:before{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-bar-toggle:before{content:"\e81d"}#ui-bar.stowed #ui-bar-toggle:before{content:"\e81e"}#menu-item-saves a:before{content:"\e82b\00a0"}#menu-item-settings a:before{content:"\e82d\00a0"}#menu-item-restart a:before{content:"\e82c\00a0"}#menu-item-share a:before{content:"\e82f\00a0"}</style>
+<style id="style-ui-debug" type="text/css">#debug-bar{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:0;margin:0;max-height:75%;padding:.5em;position:fixed;right:0;z-index:99900}#debug-bar>div:not([id])+div{margin-top:.5em}#debug-bar>div>label{margin-right:.5em}#debug-bar>div>input[type=text]{min-width:0;width:8em}#debug-bar>div>select{width:15em}#debug-bar-watch{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:102%;bottom:calc(100% + 1px);font-size:.9em;left:-1px;max-height:600%;max-height:60vh;position:absolute;overflow-x:hidden;overflow-y:scroll;right:0;z-index:99800}#debug-bar-watch[hidden]{display:none}#debug-bar-watch div{color:#999;font-style:italic;margin:1em auto;text-align:center}#debug-bar-watch table{width:100%}#debug-bar-watch tr:nth-child(2n){background-color:rgba(127,127,127,.15)}#debug-bar-watch td{padding:.2em 0}#debug-bar-watch td:first-child+td{padding:.2em .3em .2em .1em}#debug-bar-watch .watch-delete{background-color:transparent;border:none}#debug-bar-watch-all,#debug-bar-watch-none{margin-left:.5em}#debug-bar-views-toggle,#debug-bar-watch-toggle{color:#eee;background-color:transparent;border:1px solid #444;margin-right:1em;padding:.4em}#debug-bar-views-toggle:hover,#debug-bar-watch-toggle:hover{background-color:#333;border-color:#eee}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle,html[data-debug-view] #debug-bar-views-toggle{background-color:#282;border-color:#4a4}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:hover,html[data-debug-view] #debug-bar-views-toggle:hover{background-color:#4a4;border-color:#6c6}#debug-bar-views-toggle:after,#debug-bar-watch .watch-delete:before,#debug-bar-watch-add:before,#debug-bar-watch-all:before,#debug-bar-watch-none:before,#debug-bar-watch-toggle:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#debug-bar-watch .watch-delete:before{content:"\e804"}#debug-bar-watch-add:before{content:"\e805"}#debug-bar-watch-all:before{content:"\e83a"}#debug-bar-watch-none:before{content:"\e827"}#debug-bar-views-toggle:after,#debug-bar-watch-toggle:after{content:"\00a0\00a0\e830"}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:after,html[data-debug-view] #debug-bar-views-toggle:after{content:"\00a0\00a0\e831"}html[data-debug-view] .debug{padding:.25em;background-color:#234}html[data-debug-view] .debug[title]{cursor:help}html[data-debug-view] .debug.block{display:inline-block;vertical-align:middle}html[data-debug-view] .debug.invalid{text-decoration:line-through}html[data-debug-view] .debug.hidden,html[data-debug-view] .debug.hidden .debug{background-color:#555}html:not([data-debug-view]) .debug.hidden{display:none}html[data-debug-view] .debug[data-name][data-type].nonvoid:after,html[data-debug-view] .debug[data-name][data-type]:before{background-color:rgba(0,0,0,.25);font-family:monospace,monospace;white-space:pre}html[data-debug-view] .debug[data-name][data-type]:before{content:attr(data-name)}html[data-debug-view] .debug[data-name][data-type|=macro]:before{content:"<<" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=macro].nonvoid:after{content:"<</" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=html]:before{content:"<" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type|=html].nonvoid:after{content:"</" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type]:not(:empty):before{margin-right:.25em}html[data-debug-view] .debug[data-name][data-type].nonvoid:not(:empty):after{margin-left:.25em}html[data-debug-view] .debug[data-name][data-type|=special],html[data-debug-view] .debug[data-name][data-type|=special]:before{display:block}</style>
+</head>
+<body>
+	<div id="init-screen">
+		<div id="init-no-js"><noscript>JavaScript is required. Please enable it to continue.</noscript></div>
+		<div id="init-lacking">Your browser lacks required capabilities. Please upgrade it or switch to another to continue.</div>
+		<div id="init-loading"><div>Loading&hellip;</div></div>
+	</div>
+	<div id="store-area" data-size="STORY_SIZE" hidden>"STORY"</div>
+	<script id="script-sugarcube" type="text/javascript">
+	/*! SugarCube JS */
+	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),_slicedToArray=function(){function e(e,t){var r=[],n=!0,a=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},errorPrologRegExp=/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,Alert=function(){function e(e,t,r,n){var a="fatal"===e,i="Apologies! "+(a?"A fatal":"An")+" error has occurred.";i+=a?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(errorPrologRegExp,"")+".":": unknown error."),"object"===("undefined"==typeof n?"undefined":_typeof(n))&&n.stack&&(i+="\n\nStack Trace:\n"+n.stack),window.alert(i)}function t(t,r,n){e(null,t,r,n)}function r(t,r,n){e("fatal",t,r,n)}return function(e){window.onerror=function(n,a,i,o,s){"complete"===document.readyState?t(null,n,s):(r(null,n,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,n){t.test(n)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",r="[\\n\\r\\u2028\\u2029]",n="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",a=n.replace("\\-",""),i="[$A-Z_a-z]",o=i+"[$0-9A-Z_a-z]*",s="[$_]",u=s+o,l="[A-Za-z][\\w-]*|[=-]",c="\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",d="("+n+"+)\\(([^\\)\\|\\n]+)\\):",f="("+n+"+):([^;\\|\\n]+);",p="((?:\\."+n+"+)+);",h="((?:#"+n+"+)+);",g=d+"|"+f+"|"+p+"|"+h,m="(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+";return Object.freeze({space:e,spaceNoTerminator:t,lineTerminator:r,anyLetter:n,anyLetterStrict:a,identifierFirstChar:i,identifier:o,variableSigil:s,variable:u,macroName:l,cssImage:c,inlineCss:g,url:m})}();!function(){function e(e,t){var a=String(e);switch(t){case"start":return a&&r.test(a)?a.replace(r,""):a;case"end":return a&&n.test(a)?a.replace(n,""):a;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var n="undefined"==typeof t?"":String(t);for(""===n&&(n=" ");n.length<r;){var a=n.length,i=r-a;n+=a>i?n.slice(0,i):n}return n.length>r&&(n=n.slice(0,r)),n}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,n=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var n=this[r];if(t===n||t!==t&&n!==n)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var n=String(this),a=n.length,i=Number.parseInt(e,10);return i<=a?n:t(i-a,r)+n}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var n=String(this),a=n.length,i=Number.parseInt(e,10);return i<=a?n:n+t(i-a,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,n=void 0;switch(t.length){case 1:r=0,n=e-1;break;case 2:r=0,n=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),n=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r,r<0&&(r=0)),Number.isNaN(n)?n=0:!Number.isFinite(n)||n>=e?n=e-1:n<0&&(n=e+n,n<0&&(n=e-1)),_random(r,n)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var n=t+1;if(n>=e.length)throw new Error("high surrogate without trailing low surrogate");var a=e.charCodeAt(n);if(a<56320||a>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(n),start:t,end:n}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){var r=0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1));return e[r]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var t=Array.from(this);if(0===arguments.length)return t;var r=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),n=r.length;if(0===n)return t;for(var a=Array.prototype.indexOf,i=Array.prototype.push,o=0;o<n;++o){var e=r[o];a.call(t,e)===-1&&i.call(t,e)}return t}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,n=0;(r=e.call(this,t,r))!==-1;)++n,++r;return n}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.indexOf,r=Array.prototype.push,n=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),i=[],o=0,s=a.length;o<s;++o)for(var u=a[o],l=0;(l=t.call(this,u,l))!==-1;)r.apply(i,n.call(this,l,1));return i}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),n=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),a=[],i=0,o=r.length;i<o;++i)a[i]=this[r[i]];for(var s=0,u=n.length;s<u;++s)t.call(this,n[s],1);return a}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var n=Array.prototype.splice,a=[],i=t-1;do a.push(n.call(this,_random(0,i--),1)[0]);while(a.length<r);return a}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var t=arguments.length;if(0===t)return this.length>>>0;for(var r=Array.prototype.indexOf,n=Array.prototype.push,a=0;a<t;++a){var e=arguments[a];r.call(this,e)===-1&&n.call(this,e)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return this[t]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var n=new Map,a=[],i=t-1;do{var o=void 0;do o=_random(0,i);while(n.has(o));n.set(o,!0),a.push(this[o])}while(a.length<r);return a}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var n=this[t];this[t]=this[r],this[r]=n}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var t=arguments.length;if(0===t)return this.length>>>0;for(var r=Array.prototype.indexOf,n=Array.prototype.unshift,a=0;a<t;++a){var e=arguments[a];r.call(this,e)===-1&&n.call(this,e)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var n=[],a=0,i=0;i<r.length;++i)n.push(r[i]===undefined?arguments[a++]:r[i]);return t.apply(this,n.concat(e.call(arguments,a)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function e(t,r,n){var e=Number(t);return Number.isNaN(e)?NaN:e.clamp(r,n)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||!function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var n=String(r);return n&&t.test(n)?n.replace(e,"\\$&"):n}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function n(e,t,r){if(!t)return e;var n=Math.abs(t)-e.length;if(n<1)return e;var a=String(r).repeat(n);return t<0?e+a:a+e}if(arguments.length<2)return 0===arguments.length?"":r;var a=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===a.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=a[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch("undefined"==typeof i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return n(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return String.prototype.indexOf.apply(this,arguments)!==-1}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,n=Number(arguments[1])||0,a=0;(n=t.call(this,e,n))!==-1;)++a,n+=r;return a}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var n=this.length>>>0;if(0===n)return"";var a=Number(e);Number.isSafeInteger(a)?a<0&&(a+=n,a<0&&(a=0)):a=0,a>n&&(a=n);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,a);return"undefined"!=typeof r&&(o+=r),a+i<n&&(o+=this.slice(a+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,n=t.end;return n===-1?"":r.toLocaleUpperCase()+e.slice(n+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,n=t.end;return n===-1?"":r.toUpperCase()+e.slice(n+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),n=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),a=!e.includes("opera")&&/msie|trident/.test(e),i=a?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:n,isIE:a,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),n=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),a=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:n,performance:a})}(),_ref3=function(){function e(t){if("object"!==("undefined"==typeof t?"undefined":_typeof(t))||null===t)return t;if(t instanceof String)return String(t);if(t instanceof Number)return Number(t);if(t instanceof Boolean)return Boolean(t);if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return t instanceof Array?r=new Array(t.length):t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,n){return r.set(n,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){return r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(n){return r[n]=e(t[n])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),n=void 0;null!==(n=e.firstChild);){if(n.nodeType===Node.ELEMENT_NODE){var a=n.nodeName.toUpperCase();switch(a){case"BR":if(null!==n.nextSibling&&n.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===n.nextSibling.nodeName.toUpperCase()){e.removeChild(n.nextSibling),e.removeChild(n),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(n);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(n);continue}}r.appendChild(n)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function n(e,t,r){var n="object"===("undefined"==typeof e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==n)return null;var a=Array.isArray(t)?t:[t];jQuery(n).empty();for(var i=0,o=a.length;i<o;++i)if(Story.has(a[i]))return new Wikifier(n,Story.get(a[i]).processText().trim()),n;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(n,s)}return n}function a(e,t,r){var n=jQuery(document.createElement("div")),a=jQuery(document.createElement("button")),i=jQuery(document.createElement("pre")),o=L10n.get("errorTitle")+": "+(t||"unknown error");return a.addClass("error-toggle").ariaClick({label:L10n.get("errorToggle")},function(){a.hasClass("enabled")?(a.removeClass("enabled"),i.attr({"aria-hidden":!0,hidden:"hidden"})):(a.addClass("enabled"),i.removeAttr("aria-hidden hidden"))}).appendTo(n),jQuery(document.createElement("span")).addClass("error").text(o).appendTo(n),jQuery(document.createElement("code")).text(r).appendTo(i),i.addClass("error-source").attr({"aria-hidden":!0,hidden:"hidden"}).appendTo(n),n.addClass("error-view").appendTo(e),console.warn(o+"\n\t"+r.replace(/\n/g,"\n\t")),!1}function i(e,t){var r=i;switch("undefined"==typeof e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){var n=[].concat(_toConsumableArray(e)).map(function(e){return r(e[0],t)+" ⇒ "+r(e[1],t)}).join("; ");return"( "+n+" )"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:n},throwError:{value:a},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){var t=jQuery(this);t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments)}}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(n,a){if(0===this.length||0===arguments.length)return this;var i=n,o=a;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(0!==r.length){var a=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(a,t,e)});var i=[].concat(_toConsumableArray(a.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(0===this.length||0===r.length)return this;var a=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(a,t,e)}),this.append(a),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch("undefined"==typeof e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function n(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function a(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&h.test(t)?t.replace(p,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&y.test(t)?t.replace(m,function(e){return v[e.toLowerCase()]}):t}function s(e,t){var r=String(e),n=Math.trunc(t),a=r.charCodeAt(n);if(Number.isNaN(a))return{char:"",start:-1,end:-1};var i={char:r.charAt(n),start:n,end:n};if(a<55296||a>57343)return i;if(a>=55296&&a<=56319){var o=n+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===n)return i;var u=n-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return(Has.performance?performance:Date).now()}function l(e){var t=b.exec(String(e));if(null===t)throw new SyntaxError('invalid time value syntax: "'+e+'"');var r=Number(t[1]);if(1===t[2].length&&(r*=1e3),Number.isNaN(r)||!Number.isFinite(r))throw new RangeError('invalid time value: "'+e+'"');return r}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var r=void 0;switch("undefined"==typeof e?"undefined":_typeof(e)){case"string":r='"'+e+'"';break;case"number":r=String(e);break;default:r=t(e)}throw new Error("invalid milliseconds: "+r)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}var t="-ms-"===e.slice(0,4)?e.slice(1):e;return t.split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function f(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),n=_slicedToArray(t,2),a=n[0],i=n[1];r[a]=i});var n=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+n+t.search,pathname:n,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var p=/[&<>"'`]/g,h=new RegExp(p.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,y=new RegExp(m.source,"i"),v=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"}),b=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/;return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:n},slugify:{value:a},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c
+},fromCssProperty:{value:d},parseUrl:{value:f},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return p}function n(e){p=Math.clamp(e,.2,5),l("rate",p)}function a(){return h}function i(e){h=Math.clamp(e,0,1),l("volume",h)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");f.set(e,t)}function u(e){f.delete(e)}function l(e,t){f.forEach(function(r){return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(y,[null].concat(t)))}var f=new Map,p=1,h=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,n=/\.([^.\/\\]+)$/,a=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch("undefined"==typeof e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(s=r.exec(e),null===s)throw new Error("source data URI missing media type")}else if(s=n.exec(Util.parseUrl(e).pathname),null===s)throw new Error("source URL missing file extension");var u=a(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=a(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+("undefined"==typeof e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var n=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return n._error=!1}).on("error",function(){return n._error=!0}).find("source:last-of-type").on("error",function(){return n._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!n.audio)return void SimpleAudio.unsubscribe(n);switch(e){case"mute":n._updateAudioMute();break;case"rate":n._updateAudioRate();break;case"stop":n.stop();break;case"volume":n._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this);var e=this.audio;if(e){for(this.fadeStop(),this.stop(),jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}}},{key:"_updateAudioMute",value:function(){this.audio&&(this.audio.muted=this._mute||SimpleAudio.mute)}},{key:"_updateAudioRate",value:function(){this.audio&&(this.audio.playbackRate=this._rate*SimpleAudio.rate)}},{key:"_updateAudioVolume",value:function(){this.audio||(this.audio.volume=this._volume*SimpleAudio.volume)}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return!this.audio||this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return!!this.audio&&this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return!!this.audio&&this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!!this.audio&&!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return!!this.audio&&(this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended)}},{key:"isEnded",value:function(){return!this.audio||this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return!!this.audio&&this.audio.loop}},{key:"load",value:function(){this.audio&&("auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load())}},{key:"play",value:function(){this.audio&&this.audio.play()}},{key:"pause",value:function(){this.audio&&this.audio.pause()}},{key:"stop",value:function(){this.audio&&(this.pause(),this.time=0,this._trigger(":stop"))}},{key:"fadeWithDuration",value:function(e,t,r){var n=this;if(this.audio){this.fadeStop();var a=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);a!==i&&(this.volume=a,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;a<i?(t=a,r=i):(t=i,r=a);var o=Number(e);o<1&&(o=1);var s=25,u=(i-a)/(o/(s/1e3));n._faderId=setInterval(function(){return n.isPlaying()?(n.volume=Math.clamp(n.volume+u,t,r),0===n.volume&&n.pause(),void(n.volume===i&&(n.fadeStop(),n._trigger(":fade")))):void n.fadeStop()},s)}),this.play())}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(a,r),this}}},{key:"one",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(a,r),this}}},{key:"off",value:function(t,r){if(this.audio){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(a,r),this}}},{key:"duration",get:function(){return this.audio?this.audio.duration:NaN}},{key:"ended",get:function(){return!this.audio||this.audio.ended}},{key:"loop",get:function(){return!!this.audio&&this.audio.loop},set:function(e){this.audio&&(this.audio.loop=!!e)}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return!!this.audio&&this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio?this.audio.duration-this.audio.currentTime:NaN}},{key:"time",get:function(){return this.audio?this.audio.currentTime:NaN},set:function(e){var t=this;if(this.audio)try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var n=document.createElement("audio");r[t]=""!==n.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,n=t.toLowerCase(),a=r.hasOwnProperty(n)?r[n]:"audio/"+n;return e._verifyType(a)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var y=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,n=void 0,a=void 0,i=void 0;if(e instanceof m)r=!0,n=e.clone(),a=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,n=r?e.track.clone():e.track,a=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}n.stop(),n.loop=!1,n.mute=!1,n.volume=a,n.rate=i,n.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:n,volume:a,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var n=Math.clamp(t,0,1)*this.current.volume,a=void 0;null!=r&&(a=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,n,a),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:n},volume:{get:a,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,n){if(r)return r.create(e,n);for(var a=0;a<t.length;++a)if(t[a].init(e,n))return r=t[a],r.create(e,n);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var n=t.getItem(r)===r;return t.removeItem(r),n}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new n(e,t)}var r=!1,n=function(){function e(t,r){_classCallCheck(this,e);var n=t+".",a=null,i=null;r?(a=window.localStorage,i="localStorage"):(a=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:a},_prefix:{value:n},_prefixRe:{value:new RegExp("^"+RegExp.escape(n))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function e(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e)/* look here for changes */{return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}();/* changes end here */return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,a)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),f=decodeURIComponent(d[0]);if(r.test(f)){var p=decodeURIComponent(d[1]);""!==p&&!function(){var e=!u.test(f);o._setCookie(f,undefined,a),o._setCookie(f.replace(r,function(){return e?i:s}),p,e?n:undefined)}()}}}var n="Tue, 19 Jan 2038 03:14:07 GMT",a="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var n=""+t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:n},_prefixRe:{value:new RegExp("^"+RegExp.escape(n))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function e(){if(""===document.cookie)return[];for(var t=document.cookie.split(/;\s*/),e=[],r=0;r<t.length;++r){var n=t[r].split("="),a=decodeURIComponent(n[0]);if(this._prefixRe.test(a)){var i=decodeURIComponent(n[1]);""!==i&&e.push(a.replace(this._prefixRe,""))}}return e}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?n:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,a),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var n=t[r].split("="),a=decodeURIComponent(n[0]);if(e===a){var i=decodeURIComponent(n[1]);return i||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var n=encodeURIComponent(e)+"=";null!=t&&(n+=encodeURIComponent(t)),null!=r&&(n+="; expires="+r),n+="; path=/",document.cookie=n}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){var e=function(){function e(t,r,n,a){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:a,"aria-label":a,"data-type":null!=r?r:"","data-name":null!=n?n:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){var t=this;if(null==e){var r=function(){var e={};return t.view.className.splitOrEmpty(/\s+/).forEach(function(t){"debug"!==t&&(e[t]=!0)}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":_typeof(r)))return r.v}else if("object"===("undefined"==typeof e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"isEnabled",value:function(){return"enabled"===jQuery(document.documentElement).attr("data-debug-view")}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}();return e}(),PRNGWrapper=function(){var e=function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),n=t.pull;n>0;--n)r.random();return r}}]),e}();return e}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage),r=function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var n=r;t.test(n)&&(e.lastIndex=0,n=n.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var n=Story.get(r);n.tags.includes("Twine.image")&&(r=n.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=n:this.style.appendChild(document.createTextNode(n))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}();return r}(),Diff=function(){function e(t,n){for(var a=Object.prototype.toString,i=t instanceof Array,o=[].concat(Object.keys(t),Object.keys(n)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var f=o[c],p=t[f],h=n[f];if(t.hasOwnProperty(f))if(n.hasOwnProperty(f)){if(p===h)continue;if(("undefined"==typeof p?"undefined":_typeof(p))===("undefined"==typeof h?"undefined":_typeof(h)))if("function"==typeof p)p.toString()!==h.toString()&&(s[f]=[r.Copy,h]);else if("object"!==("undefined"==typeof p?"undefined":_typeof(p))||null===p)s[f]=[r.Copy,h];else{var g=a.call(p),m=a.call(h);if(g===m)if(p instanceof Date)Number(p)!==Number(h)&&(s[f]=[r.Copy,clone(h)]);else if(p instanceof Map)s[f]=[r.Copy,clone(h)];else if(p instanceof RegExp)p.toString()!==h.toString()&&(s[f]=[r.Copy,clone(h)]);else if(p instanceof Set)s[f]=[r.Copy,clone(h)];else if("[object Object]"!==g)s[f]=[r.Copy,clone(h)];else{var y=e(p,h);null!==y&&(s[f]=y)}else s[f]=[r.Copy,clone(h)]}else s[f]=[r.Copy,"object"!==("undefined"==typeof h?"undefined":_typeof(h))||null===h?h:clone(h)]}else if(i&&Util.isNumeric(f)){var v=Number(f);if(!u){u="";do u+="~";while(o.some(l));s[u]=[r.SpliceArray,v,v]}v<s[u][1]&&(s[u][1]=v),v>s[u][2]&&(s[u][2]=v)}else s[f]=r.Delete;else s[f]=[r.Copy,"object"!==("undefined"==typeof h?"undefined":_typeof(h))||null===h?h:clone(h)]}return Object.keys(s).length>0?s:null}function t(e,n){for(var a=Object.keys(n||{}),i=clone(e),o=0,s=a.length;o<s;++o){var u=a[o],l=n[u];if(l===r.Delete)delete i[u];else if(l instanceof Array)switch(l[0]){case r.SpliceArray:i.splice(l[1],1+(l[2]-l[1]));break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=50,o=l10nStrings[r],s=0;a.test(o);){if(++s>i)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");n.lastIndex=0,o=o.replace(n,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return o}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesEmptySlot":t=strings.saves.emptySlot;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesSavedOn":t=strings.saves.savedOn;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var n=/\{\w+\}/g,a=new RegExp(n.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{},macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesEmptySlot:"— slot empty —",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",
+savesLabelSave:"Save",savesLabelSlot:"Slot",savesSavedOn:"Saved on",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}var r=Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),n=0;n<t.length;++n)if(r.style[t[n]]!==undefined)return e.get(t[n]);return""}()});return r}(),State=function(){function e(){session.delete("state"),W=[],R=c(),F=-1,B=[],V=null===V?null:new PRNGWrapper(V.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(n(e),!0)}return!1}function r(e){var t={index:F};return e?t.history=clone(W):t.delta=A(W),B.length>0&&(t.expired=[].concat(_toConsumableArray(B))),null!==V&&(t.seed=V.seed),t}function n(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==V&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===V&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),F=e.index,B=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(V.seed=e.seed),g(F)}function a(){return r(!0)}function i(e){return n(e,!0)}function o(){return B}function s(){return B.length+y()}function u(){return B.concat(W.slice(0,y()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!B.includes(e)||!!W.slice(0,y()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function f(){return F}function p(){return R.title}function h(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch("undefined"==typeof e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=v())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(v()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+("undefined"==typeof e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==V&&(V=PRNGWrapper.unmarshal({seed:V.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function y(){return F+1}function v(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[F]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>F?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>y()?null:W[y()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=F;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(y()<v()&&W.splice(y(),v()-y()),W.push(c(e,R.variables)),V&&(k().pull=V.pull),Config.history.maxStates>0)for(;v()>Config.history.maxStates;)B.push(W.shift().title);return F=v()-1,g(F),y()}function O(e){return!(null==e||e<0||e>=v()||e===F)&&(F=e,g(F),!0)}function T(e){return null!=e&&0!==e&&O(F+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,n=e.length;r<n;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,n=e.length;r<n;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}V=new PRNGWrapper(e,t),R.pull=V.pull}function N(){return V?V.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,n=t.store,a=0,i=r.length;a<i;++a){if("undefined"==typeof n[r[a]])return;n=n[r[a]]}return n}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var n=r.names,a=n.pop(),i=r.store,o=0,s=n.length;o<s;++o){if("undefined"==typeof i[n[o]])return!1;i=i[n[o]]}return i[a]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,n=void 0;null!==(n=z.exec(r));)r=r.slice(n[0].length),n[1]?t.names.push(n[1]):n[2]?t.names.push(n[2]):n[3]?t.names.push(n[3]):n[4]?t.names.push(n[4]):n[5]?t.names.push(I(n[5])):n[6]&&t.names.push(Number(n[6]));return""===r?t:null}var W=[],R=c(),F=-1,B=[],V=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:a},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:f},passage:{get:p},variables:{get:h},history:{get:m},length:{get:y},size:{get:v},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:O},go:{value:T},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,n,a){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:n,one:!!r}):(i=r,o={namespace:a,one:!!n,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,n,a,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),n&&o.addClass(n),i&&o.attr("title",i),a&&o.text(a),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*a,n(o,Math.easeInOut(i)),(1===a&&i>=1||a===-1&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function n(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var a="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,n(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){c+=i,window.scroll(0,o+l*(u*Math.easeInOut(c))),c>=1&&window.clearInterval(d)}function n(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}function a(e){var t=n(e),r=t+e.offsetHeight,a=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=a+i;return t>=a&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}var i=null!=t?Number(t):.1;Number.isNaN(i)||!Number.isFinite(i)||i<0?i=.1:i>1&&(i=1);var o=window.scrollY?window.scrollY:document.body.scrollTop,s=a(e),u=Math.abs(o-s),l=o>s?-1:1,c=0,d=void 0;d=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,n=e.length;r<n;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,n=State.turns,a=0,i=e.length;a<i&&n>-1;++a){var o=t.lastIndexOf(e[a]);n=Math.min(n,o===-1?-1:r-o)}return n}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,n=e.length;r<n;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,n=0,a=e.length;n<a&&r>0;++n)r=Math.min(r,t.count(e[n]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,n=new Map,a=0,i=0,o=r.length;i<o;++i){var s=r[i];if(n.has(s))n.get(s)&&++a;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++a,n.set(s,!0)):n.set(s,!1)}}}return a}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref6=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,n){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):n(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];return Promise.all(a.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function n(){function r(e){return new Promise(function(r,n){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):n(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];return Promise.all(a.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:n}}(),importScripts=_ref6.importScripts,importStyles=_ref6.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var a=e,i=void 0;null!==(i=r.exec(a));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(n.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=a.slice(s);/^\s+not\b/.test(u)&&(a=a.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(a=a.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return a}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),n=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,n,a){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(n)},options:{writable:!0,value:Object.assign({profile:"all"},a)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,n){var a=this.output,i=void 0;this.output=e,null!=n&&"object"===("undefined"==typeof n?"undefined":_typeof(n))&&(i=this.options,this.options=Object.assign({},this.options,n));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),u=s?s.exec(this.source):null,u&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=a,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,f=l.length;d<f;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=a,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var n=r.querySelector(".error");if(null!==n)throw new Error(n.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,n){var a=jQuery(document.createElement("a"));return null!=t&&(a.attr("data-passage",t),Story.has(t)?(a.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&a.addClass("link-visited")):a.addClass("link-broken"),a.ariaClick({one:!0},function(){"function"==typeof n&&n(),Engine.play(t)})),r&&a.append(document.createTextNode(r)),e&&a.appendTo(e),a[0]}},{key:"createExternalLink",value:function(e,t,r){var n=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&n.attr({href:t,tabindex:0}),n[0]}},{key:"isExternalLink",value:function(e){if(Story.has(e))return!1;var t=new RegExp("^"+Patterns.url,"gim");return t.test(e)||/[\/.?#]/.test(e)}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(a(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function n(){return 0===d.length}function a(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return f}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return f=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==("undefined"==typeof f?"undefined":_typeof(f))||0===Object.keys(f).length}function l(e){if("object"!==("undefined"==typeof f?"undefined":_typeof(f))||!f.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return f[e]}function c(e){return"object"===("undefined"==typeof f?"undefined":_typeof(f))&&f.hasOwnProperty(e)}var d=[],f=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:n},has:{value:a},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},n=void 0;do{t.lastIndex=e.nextMatch;var a=t.exec(e.source);n=a&&a.index===e.nextMatch,n&&(a[1]?r.styles[Util.fromCssProperty(a[1])]=a[2].trim():a[3]?r.styles[Util.fromCssProperty(a[3])]=a[4].trim():a[5]?r.classes=r.classes.concat(a[5].slice(1).split(/\./)):a[6]&&(r.id=a[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(n);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{t=Scripting.evalTwineScript(e),null==t||"function"==typeof t?t=e:(t=String(t),/\[(?:object(?:\s+[^\]]+)?|native\s+code)\]/.test(t)&&(t=e))}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var n=e[r];switch(n.nodeType){case Node.ELEMENT_NODE:var a=n.nodeName.toUpperCase();if("BR"===a)return!0;var i=t?window.getComputedStyle(n,null):n.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(a){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!a&&(a=t.Parser.get("macro"),!a))throw new Error('cannot find "macro" parser');return a}function r(){for(var t=a||e(),r=new Set,n=t.context;null!==n;n=n.parent)n._shadows&&n._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function n(e){var t={};return r().forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r]}),function(){var r=Object.keys(t),n=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;a.hasOwnProperty(r)&&(n[r]=a[r]),a[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r],n.hasOwnProperty(r)?a[r]=n[r]:delete a[r]})}}}var a=null;return n}()},parseSquareBracketedMarkup:{value:function(e){function t(){return d>=e.source.length?u:e.source[d++]}function r(){return d>=e.source.length?u:e.source[d]}function n(t){return t<1||d+t>=e.source.length?u:e.source[d+t]}function a(){return{error:String.format.apply(String,arguments),pos:d}}function i(){c=d}function o(t){var r=e.source.slice(c,d).trim();if(""===r)throw new Error("malformed wiki "+(h?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(l.forceInternal=!0,l.link=r.slice(1)):l[t]=r,c=d}function s(e){++d;e:for(;;){switch(r()){case"\\":++d;var t=r();if(t!==u&&"\n"!==t)break;case u:case"\n":return u;case e:break e}++d}return d}var u=-1,l={},c=e.matchStart,d=c+1,f=void 0,p=void 0,h=void 0,g=void 0;if(g=r(),"["===g)h=l.isLink=!0;else{switch(h=!1,g){case"<":l.align="left",++d;break;case">":l.align="right",++d}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(d,d+3)))return a("malformed square-bracketed wiki markup");d+=3,l.isImage=!0}if("["!==t())return a("malformed wiki {0}",h?"link":"image");f=1,p=0,i();try{e:for(;;){switch(g=r()){case u:case"\n":return a("unterminated wiki {0}",h?"link":"image");case'"':if(s(g)===u)return a("unterminated double quoted string in wiki {0}",h?"link":"image");break;case"'":if((4===p||3===p&&h)&&s(g)===u)return a("unterminated single quoted string in wiki {0}",h?"link":"image");break;case"|":0===p&&(o(h?"text":"title"),++c,p=1);break;case"-":0===p&&">"===n(1)&&(o(h?"text":"title"),++d,c+=2,p=1);break;case"<":0===p&&"-"===n(1)&&(o(h?"link":"source"),++d,c+=2,p=2);break;case"[":if(p===-1)return a("unexpected left square bracket '['");++f,1===f&&(i(),++c);break;case"]":if(--f,0===f){switch(p){case 0:case 1:o(h?"link":"source"),p=3;break;case 2:o(h?"text":"title"),p=3;break;case 3:h?(o("setter"),p=-1):(o("link"),p=4);break;case 4:o("setter"),p=-1}if(++d,"]"===r()){++d;break e}--d}}++d}}catch(e){return a(e.message)}return l.pos=d,l}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){return Wikifier.helpers.hasBlockContext(e.output.childNodes)?void e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator):void jQuery(e.output).append(document.createTextNode(e.matchText))}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,n=e.matchLength,a=void 0,i=void 0;do{if(n>r)for(i=r;i<n;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(n<r)for(i=r;i>n;--i)t.pop();r=n,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);a=o&&o.index===e.nextMatch,a&&(n=o[0].length,e.nextMatch+=o[0].length)}while(a)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,n=this.working.source,a=this.working.name,i=this.working.arguments,o=void 0;try{if(o=Macro.get(a),!o){if(Macro.tags.has(a)){var s=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===s.length?"":"s")+" <<"+s.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var u=null;if(o.hasOwnProperty("tags")&&(u=this.parseBody(e,o),!u))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof o.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(o.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var l=u?u[0].args:this.createArgs(i,o.hasOwnProperty("skipArgs")&&!!o.skipArgs||o.hasOwnProperty("skipArg0")&&!!o.skipArg0);if(o.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({parent:this.context,macro:o,name:a,args:l,payload:u,parser:e,source:n});try{o.handler.call(this.context)}finally{this.context=this.context.parent}}else{var c=e._rawArgs;e._rawArgs=i;try{o.handler(e.output,a,l,e,u)}finally{e._rawArgs=c}}}catch(r){return throwError(e.output,"cannot execute "+(o&&o.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,n="/"+r,a="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,f=this.working.name,p=this.working.arguments,h=e.nextMatch;(e.matchStart=e.source.indexOf(this.match,e.nextMatch))!==-1;)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,y=this.working.arguments,v=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case a:case n:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:f,arguments:p,args:this.createArgs(p,s||0===o.length&&u),contents:e.source.slice(h,v)}),d=g,f=m,p=y,h=b)}if(0===c){o.push({source:d,name:f,arguments:p,args:this.createArgs(p,s||0===o.length&&u),contents:e.source.slice(h,v)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return l!==-1?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){for(var t=new RegExp(this.argsPattern,"gm"),r=[],n=new RegExp("^"+Patterns.variable),a=void 0;null!==(a=t.exec(e));){var i=void 0;if(a[1])i=undefined;else if(a[2]){i=a[2];try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(a[3])i="";else if(a[4]){i=a[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(a[5]){i=a[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(a[6]){i=a[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(a[7])if(i=a[7],n.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{
+i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(a[8]){var u=void 0;switch(a[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"prettyLink",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),n=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"wiki-link","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,n,a):Wikifier.createExternalLink(i,r,n)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"wiki-image",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,a=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);a=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(a,o,null,n):Wikifier.createExternalLink(a,o),a.classList.add("link-image")}if(a=jQuery(document.createElement("img")).appendTo(a).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(a.setAttribute("data-passage",s.title),i=s.text)}a.src=i,t.hasOwnProperty("title")&&(a.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(a.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),n=r&&r.index===e.nextMatch,a=jQuery(document.createElement(n?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?a.addClass("marked"):(t.classes.forEach(function(e){return a.addClass(e)}),""!==t.id&&a.attr("id",t.id),a.css(t.styles)),n?(e.nextMatch+=r[0].length,e.subWikify(a[0],"\\n?"+this.terminator)):e.subWikify(a[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){return Wikifier.helpers.hasBlockContext(e.output.childNodes)?void e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator):void jQuery(e.output).append(document.createTextNode(e.matchText))}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],n=null,a=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==n&&(n=u,a=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===n?(a.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(a[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(a).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var n=this,a=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{a.lastIndex=e.nextMatch;var u=a.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var a=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],n.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),a.classes.forEach(function(e){return l.addClass(e)}),""!==a.id&&l.attr("id",a.id),s&&u?a.styles["text-align"]="center":s?a.styles["text-align"]="right":u&&(a.styles["text-align"]="left"),l.css(a.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,n=0,a=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(a=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>n)for(i=n;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<n)for(i=n;i>u;--i)t.pop();else u===n&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));n=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(a)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:<!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var n=Story.get(r);n.tags.includes("Twine.image")&&(r=n.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagPattern:"<(\\w+)",voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],nobrElements:["colgroup","datalist","dl","figure","ol","optgroup","select","table","tbody","tfoot","thead","tr","ul"],handler:function(e){var t=new RegExp(this.tagPattern).exec(e.matchText),r=t&&t[1],n=r&&r.toLowerCase();if(n){var a=this.voidElements.includes(n)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(n),o=void 0,s=void 0;if(!a){o="<\\/"+n+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(!a&&!s)return throwError(e.output,"cannot find a closing tag for HTML <"+r+">",e.matchText+"…");var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+n+">: bad evaluation from attribute directive: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c),Config.debug&&(d=new DebugView(e.output,"html-"+n,n,e.matchText),d.modes({block:"img"===n,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild(c)}},processAttributeDirectives:function(e){for(var t=e.attributes,r=0;r<t.length;++r){var n=t[r],a=n.name,i=n.value,o="@"===a[0];if(o||a.startsWith("sc-eval:")){var s=a.slice(o?1:8);e.setAttribute(s,Scripting.evalTwineScript(i)),e.removeAttribute(a)}}},processDataAttributes:function(e){var t=e.getAttribute("data-passage");if(null!=t){var r=Wikifier.helpers.evalPassageId(t);r!==t&&(t=r,e.setAttribute("data-passage",r)),""!==t&&("IMG"===e.tagName.toUpperCase()?"data:"!==t.slice(0,5)&&Story.has(t)&&(t=Story.get(t),t.tags.includes("Twine.image")&&(e.src=t.text.trim())):!function(){var r=e.getAttribute("data-setter"),n=void 0;null!=r&&(r=String(r).trim(),""!==r&&(n=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(r)))),Story.has(t)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof n&&n.call(this),Engine.play(t)})}())}}})}();var Macro=function(){function e(t,r,a){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,a)});if(!f.test(t))throw new Error('invalid macro name "'+t+'"');if(n(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===("undefined"==typeof r?"undefined":_typeof(r)))c[t]=a?clone(r):r;else{if(!n(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=a?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(n(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function n(e){return c.hasOwnProperty(e)}function a(e){var t=null;return n(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&&macros[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],a=[].concat(r,Array.isArray(t)?t:[]),i=0;i<a.length;++i){var o=a[i];if(n(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);r!==-1&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},f=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:n},get:{value:a},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){var e=function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{parent:{value:r.parent},self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,n=Array(r),a=0;a<r;a++)n[a]=arguments[a];n.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+("undefined"==typeof r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var a=this,i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];"function"==typeof r&&r.apply(this,o),"function"==typeof e&&!function(){var t=Object.keys(n),r=t.length>0?{}:null;try{t.forEach(function(e){var t=e.slice(1),a="$"===e[0]?State.variables:State.temporary;a.hasOwnProperty(t)&&(r[t]=a[t]),a[t]=n[e]}),e.apply(a,o)}finally{t.forEach(function(e){var t=e.slice(1),a="$"===e[0]?State.variables:State.temporary;n[e]=a[t],r.hasOwnProperty(t)?a[t]=r[t]:delete a[t]})}}(),"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e?e:this.name,t?t:this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t?t:this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}();return e}();!function(){Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var n=r[1],a=n.slice(1),i="$"===n[0]?State.variables:State.temporary;i.hasOwnProperty(a)&&(e[a]=i[a]),this.addShadow(n)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),n="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?n[r]=e[r]:delete n[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],n=t[2];r.hasOwnProperty(n)&&delete r[n]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var n=r[1];e[n]=State.variables[n]}return storage.set("remember",e)?void(Config.debug&&this.debugView.modes({hidden:!0})):this.error("unknown error, cannot remember: "+this.args.raw)},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,n=!1;null!==(r=t.exec(this.args.full));){var a=r[1];State.variables.hasOwnProperty(a)&&delete State.variables[a],e&&e.hasOwnProperty(a)&&(n=!0,delete e[a])}return n&&!storage.set("remember",e)?this.error("unknown error, cannot update remember store"):void(Config.debug&&this.debugView.modes({hidden:!0}))}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=void 0;try{var t=this.payload.length;for(e=0;e<t;++e)switch(this.payload[e].name){case"else":if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);if(e+1!==t)return this.error("<<else>> must be the final clause");break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}var r=Scripting.evalJavaScript,n=!1;for(e=0;e<t;++e){if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||r(this.payload[e].args.full)){n=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<t;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!n,invalid:!n})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===("undefined"==typeof t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length;if(1===e)return this.error("no cases specified");var t=void 0;for(t=1;t<e;++t)switch(this.payload[t].name){case"default":if(this.payload[t].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[t].args.raw);if(t+1!==e)return this.error("<<default>> must be the final case");break;default:if(0===this.payload[t].args.length)return this.error("no value(s) specified for <<"+this.payload[t].name+">> (#"+t+")")}var r=void 0;try{r=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}var n=this.debugView,a=!1;for(Config.debug&&n.modes({nonvoid:!1,hidden:!0}),t=1;t<e;++t){if(Config.debug&&this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1}),"default"===this.payload[t].name||this.payload[t].args.some(function(e){return e===r})){a=!0,new Wikifier(this.output,this.payload[t].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++t;t<e;++t)this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1,hidden:!0,invalid:!0});n.modes({nonvoid:!1,hidden:!0,invalid:!a}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!a})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var n=void 0,a=void 0,i=void 0;if(e.indexOf(";")===-1){if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");a=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");n=o[1],a=o[2].trim(),i=o[3],0===a.length&&(a=!0)}this.self._handleFor.call(this,t,n,a,i)}},_handleFor:function(e,t,r,n){var a=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{a(t)}catch(e){return this.error("bad init expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}for(;a(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(n)try{a(n)}catch(e){return this.error("bad post expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,n){var a=!0,i=void 0;try{i=this.self._toRangeList(n)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,a?e.replace(/^\n/,""):e),a&&(a=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var n=void 0;switch("undefined"==typeof r?"undefined":_typeof(r)){case"string":n=[];for(var a=0;a<r.length;){var i=Util.charAndPosAt(r,a);n.push([a,i.char]),a=1+i.end}break;case"object":if(Array.isArray(r))n=r.map(function(e,t){return[t,e]});else if(r instanceof Set)n=[].concat(_toConsumableArray(r)).map(function(e,t){
+return[t,e]});else if(r instanceof Map)n=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));n=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+("undefined"==typeof r?"undefined":_typeof(r)))}return n}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){return this.contextHas(function(e){return"for"===e.name})?(TempState.break="continue"===this.name?1:2,void(Config.debug&&this.debugView.modes({hidden:!0}))):this.error("must only be used in conjunction with its parent macro <<for>>")}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var n=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),n=this.args[1],a=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?a:n)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,a)):State.setVar(t,n)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),n=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var a=document.createDocumentFragment();new Wikifier(a,e.payload[0].contents),r.append(a)}n&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),n&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),n=this.args[1],a=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(a).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,n)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(a.checked=!0,State.setVar(t,n))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),n=this.args[1],a="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,n),i.textContent=n,a&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),n=this.args[1],a=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),jQuery(a).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,n),a.value=n,i&&(a.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+a.id]=function(e){delete postdisplay[e],setTimeout(function(){return a.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,n=void 0,a=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&a.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&a.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&a.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(n=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):n=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(a||document.createTextNode(n))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,n=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var a=State.length-2;a>=0;--a)if(State.history[a].title!==State.passage){e=a,t=State.history[a].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(e===-1)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||e!==-1?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(n||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,n=void 0,a=void 0;return 1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),t=this.args[0].link,a=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,a=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e]?void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(n||document.createTextNode(r)).appendTo(this.output):void jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof a&&a()})).addClass("macro-"+this.name).append(n||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void(this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass())}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var t=document.createDocumentFragment();switch(new Wikifier(t,this.payload[0].contents),this.name){case"replace":e.empty();case"append":e.append(t);break;case"prepend":e.prepend(t)}}else"replace"===this.name&&e.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void e.remove()}}),Has.audio?!function(){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){var e=this;if(this.args.length<2){var t=[];return this.args.length<1&&t.push("track or group IDs"),this.args.length<2&&t.push("actions"),this.error("no "+t.join(" or ")+" specified")}var r=Macro.get("cacheaudio").tracks,n=[];try{!function(){var t=function e(t){var n=t.id,o=void 0;switch(n){case":all":o=a;break;case":looped":o=a.filter(function(e){return r[e].isLooped()});break;case":muted":o=a.filter(function(e){return r[e].isMuted()});break;case":paused":o=a.filter(function(e){return r[e].isPaused()});break;case":playing":o=a.filter(function(e){return r[e].isPlaying()});break;default:o=":"===n[0]?i[n]:[n]}return t.hasOwnProperty("not")&&!function(){var r=t.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!r.includes(e)})}(),o},a=Object.freeze(Object.keys(r)),i=Macro.get("cacheaudio").groups;e.self.parseIds(String(e.args[0]).trim()).forEach(function(e){n.push.apply(n,_toConsumableArray(t(e)))}),n.forEach(function(e){if(!r.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}()}catch(e){return this.error(e.message)}for(var a=this.args.slice(1),i=void 0,o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=5,f=void 0,p=void 0;a.length>0;){var h=a.shift();switch(h){case"play":case"pause":case"stop":i=h;break;case"fadein":i="fade",c=1;break;case"fadeout":i="fade",c=0;break;case"fadeto":if(0===a.length)return this.error("fadeto missing required level value");if(i="fade",p=a.shift(),c=Number.parseFloat(p),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse fadeto: "+p);break;case"fadeoverto":if(a.length<2){var g=[];return a.length<1&&g.push("seconds"),a.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(i="fade",p=a.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+p);if(p=a.shift(),c=Number.parseFloat(p),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse fadeoverto: "+p);break;case"volume":if(0===a.length)return this.error("volume missing required level value");if(p=a.shift(),o=Number.parseFloat(p),Number.isNaN(o)||!Number.isFinite(o))return this.error("cannot parse volume: "+p);break;case"mute":case"unmute":s="mute"===h;break;case"time":if(0===a.length)return this.error("time missing required seconds value");if(p=a.shift(),u=Number.parseFloat(p),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse time: "+p);break;case"loop":case"unloop":l="loop"===h;break;case"goto":if(0===a.length)return this.error("goto missing required passage title");if(p=a.shift(),f="object"===("undefined"==typeof p?"undefined":_typeof(p))?p.link:p,!Story.has(f))return this.error('passage "'+f+'" does not exist');break;default:return this.error("unknown action: "+h)}}try{n.forEach(function(e){var t=r[e];switch(null!=o&&(t.volume=o),null!=u&&(t.time=u),null!=s&&(t.mute=s),null!=l&&(t.loop=l),null!=f&&t.one("end",function(){return Engine.play(f)}),i){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"fade":t.fadeWithDuration(d,c)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){function t(e,t){var r=/\S/g,n=/[()]/g,a=void 0;if(r.lastIndex=t,a=r.exec(e),null===a||"("!==a[0])throw new Error('invalid ":not()" syntax: missing parentheticals');n.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(a=n.exec(e));)if("("===a[0]?++s:--s,s<1){o.nextMatch=n.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}for(var r=[],n=/:?[^\s:()]+/g,a=void 0;null!==(a=n.exec(e));){var i=a[0];if(":not"===i){if(0===r.length)throw new Error('invalid negation: no group ID preceded ":not()"');var o=r[r.length-1];if(":"!==o.id[0])throw new Error('invalid negation of track "'+o.id+'": only groups may be negated with ":not()"');var s=t(e,n.lastIndex);if(s.nextMatch===-1)throw new Error('unknown error parsing ":not()"');n.lastIndex=s.nextMatch,o.not=this.parseIds(s.str)}else r.push({id:i})}return r}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim(),r=/^:|\s/;if(r.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var n=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){var t=n.exec(e);return null===t?e:{format:t[1],src:t[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var i=this.self.tracks;i.hasOwnProperty(t)&&i[t].destroy(),i[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim(),r=/^[^:]|\s/;if(r.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var n=Macro.get("cacheaudio").tracks,a=[],i=1,o=this.payload.length;i<o;++i){if(this.payload[i].args.length<1)return this.error("no track ID specified");var s=String(this.payload[i].args[0]).trim();if(!n.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');a.push(s),Config.debug&&this.createDebugView(this.payload[i].name,this.payload[i].source).modes({nonvoid:!1,hidden:!0})}var u=Macro.get("cacheaudio").groups;u.hasOwnProperty(t)&&delete u[t],u[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim(),n=/^:|\s/;if(n.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),i=1,o=this.payload.length;i<o;++i){if(this.payload[i].args.length<2){var s=[];return this.payload[i].args.length<1&&s.push("track ID"),this.payload[i].args.length<2&&s.push("actions"),this.error("no "+s.join(" or ")+" specified")}var u=String(this.payload[i].args[0]).trim();if(!t.hasOwnProperty(u))return this.error('track "'+u+'" does not exist');for(var l=this.payload[i].args.slice(1),c=!1,d=void 0;l.length>0;){var f=l.shift(),p=void 0;switch(f){case"copy":c=!0;break;case"rate":l.length>0&&l.shift();break;case"volume":if(0===l.length)return this.error("volume missing required level value");if(p=l.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse volume: "+p);break;default:return this.error("unknown action: "+f)}}var h=t[u];a.add({copy:c,track:h,volume:null!=d?d:h.volume}),Config.debug&&this.createDebugView(this.payload[i].name,this.payload[i].source).modes({nonvoid:!1,hidden:!0})}var g=this.self.lists;g.hasOwnProperty(r)&&g[r].destroy(),g[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,n=void 0;e.length>0;){var a=e.shift(),i=void 0;switch(a){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===a;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),n=Number.parseFloat(i),Number.isNaN(n)||!Number.isFinite(n))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+a)}}try{null!=r&&(SimpleAudio.mute=r),null!=n&&(SimpleAudio.volume=n),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var n=[];return this.args.length<1&&n.push("list ID"),this.args.length<2&&n.push("actions"),this.error("no "+n.join(" or ")+" specified")}var a=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!a.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=a[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,f=5,p=void 0;r.length>0;){var h=r.shift();switch(h){case"play":case"pause":case"stop":case"skip":o=h;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",p=r.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+p);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",p=r.shift(),f=Number.parseFloat(p),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+p);if(p=r.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+p);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(p=r.shift(),s=Number.parseFloat(p),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+p);break;case"mute":case"unmute":u="mute"===h;break;case"loop":case"unloop":l="loop"===h;break;case"shuffle":case"unshuffle":c="shuffle"===h;break;default:return this.error("unknown action: "+h)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(f,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();return e.hasOwnProperty(t)?(e[t].destroy(),delete e[t],void(Config.debug&&this.createDebugView())):this.error('playlist "'+t+'" does not exist')}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var n=t.shift();return n.hasData()?e():void n.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var n=Macro.get("setplaylist").list;null!==n&&n.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var n=0;n<this.args.length;++n){var a=this.args[n];if(!r.hasOwnProperty(a))return this.error('track "'+a+'" does not exist');t.list.add(r[a])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}():Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}}),Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;return e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],Story.has(e)?void setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay):this.error('passage "'+e+'" does not exist')}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var a=n;r&&(a=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(a)),a.append(t),r&&setTimeout(function(){return a.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var n=State.turns,a=this.timers,i=null;i=setInterval(function(){if(n!==State.turns)return clearInterval(i),void a.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{"undefined"!=typeof t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),a.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearInterval(e)}),a.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var n=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=a;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),n&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),n&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,n=this.timers,a=null,i=t.shift(),o=function o(){if(n.delete(a),r===State.turns){var s=i;null!=(i=t.shift())&&(a=setTimeout(o,i.delay),n.add(a)),e.call(this,s)}};a=setTimeout(o,i.delay),n.add(a),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearTimeout(e)}),n.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=this,r=void 0;try{var n=function(){State.variables.hasOwnProperty("args")&&(r=State.variables.args),State.variables.args=[].concat(_toConsumableArray(t.args)),State.variables.args.raw=t.args.raw,State.variables.args.full=t.args.full,t.addShadow("$args");var n=document.createDocumentFragment(),a=[];return new Wikifier(n,e),Array.from(n.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length?{v:t.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")")}:void t.output.appendChild(n)}();if("object"===("undefined"==typeof n?"undefined":_typeof(n)))return n.v}catch(e){return this.error("cannot execute widget: "+e.message)}finally{"undefined"!=typeof r?State.variables.args=r:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",
+r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var n=t.offsetWidth;r.style.overflow="auto";var a=t.offsetWidth;n===a&&(a=r.clientWidth),document.body.removeChild(r),e=n-a}catch(e){}return e||17}();var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1>'+('<button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'"></button>')+'</div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),f=jQuery(e.find("#ui-dialog").get(0)),p=jQuery(e.find("#ui-dialog-title").get(0)),h=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return f.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return h.hasClass(e)}))}function r(e,t){return h.empty().removeClass(),null!=t&&h.addClass(t),p.empty().append((null!=e?String(e):"")||" "),h.get(0)}function n(){return h.get(0)}function a(){var e;return(e=h).append.apply(e,arguments),Dialog}function i(){var e;return(e=h).wiki.apply(e,arguments),Dialog}function o(e,t,r,n,a){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,a),"function"==typeof n&&n(e)})}function s(e,r){var n=jQuery.extend({top:50},e),a=n.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==h[0].querySelector("img")&&h.imagesLoaded().always(function(){return l({data:{top:a}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(a);return f.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:a},jQuery.throttle(40,l)),Has.mutationObserver?(y=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:a}});break}}),y.observe(h[0],{childList:!0,subtree:!0})):h.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:a},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),y?(y.disconnect(),y=null):h.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),f.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),p.empty(),h.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&"undefined"!=typeof e.data.top?e.data.top:50;"block"===f.css("display")&&(f.css({display:"none"}),f.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),n={left:"",right:"",top:"",bottom:""};f.css(n);var a=r.width()-f.outerWidth(!0)-1,i=r.height()-f.outerHeight(!0)-1;return a<=32+m&&(i-=m),i<=32+m&&(a-=m),a<=32?n.left=n.right=16:n.left=n.right=a/2>>0,i<=32?n.top=n.bottom=16:i/2>t?n.top=t:n.top=n.bottom=i/2>>0,Object.keys(n).forEach(function(e){""!==n[e]&&(n[e]+="px")}),n}var d=null,f=null,p=null,h=null,g=null,m=0,y=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:n},append:{value:a},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===("undefined"==typeof e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())f();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildDialogAutoload(),UI.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&p(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),jQuery.event.trigger(":enginerestart"),window.location.reload()}function n(){return b}function a(){return b===y.Idle}function i(){return b!==y.Idle}function o(){return b===y.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&f(),t}function l(e){var t=State.go(e);return t&&f(),t}function c(){return l(-1)}function d(){return l(1)}function f(){return p(State.passage,!0)}function p(e,t){var r=e;b=y.Playing,TempState={},State.clearTemporary();var n=void 0,a=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),w=Util.now(),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{n=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=y.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(v,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},v),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=y.Playing,Story.has("PassageDone"))try{a=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(n),s.prepend(l.output)),null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(a),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=y.Idle,w=Util.now(),s[0]}function h(e,t,r){var n=!1;switch(r){case undefined:break;case"replace":case"back":n=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}p(e,n)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var y=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),v=40,b=y.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:y},minDomActionDelay:{value:v},init:{value:e},start:{value:t},restart:{value:r},state:{get:n},isIdle:{value:a},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:f},play:{value:p},display:{value:h}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i,!function(){var e=/(?:\\n|\\t|\\s|\\|\r)/g,r=new RegExp(e.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});t=function(t){if(null==t)return"";var a=String(t);return a&&r.test(a)?a.replace(e,function(e){return n[e]}):a}}();var r=function(){function r(t,n){var a=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:n||null},tags:{value:Object.freeze(n&&n.hasAttribute("tags")?n.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return a.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch("undefined"==typeof e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){var e=this.text;return this.tags.includes("Twine.image")?e="[img["+e+"]]":(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,n=document.createElement("div");return jQuery(n).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:n,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,n,t)}),Story.has("PassageHeader")&&new Wikifier(n,Story.get("PassageHeader").processText()),new Wikifier(n,this.processText()),Story.has("PassageFooter")&&new Wikifier(n,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:n,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,n,t)}),this._excerpt=r.getExcerptFromNode(n),n}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<span class="error" title="'+e+'">'+L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e})+"</span>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var n=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(n)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),n=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*)(?:|[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return n?n[1]+"…":"…"}}]),r}();return r}(),Save=function(){function e(){if("cookie"===storage.name)return n(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),O(e.autosave)&&(t=!0);for(var a=0;a<e.slots.length;++a)O(e.slots[a])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function n(){return storage.delete("saves"),!0}function a(){return i()||d()}function i(){return"cookie"!==storage.name&&"undefined"!=typeof Config.saves.autosave}function o(){var e=r();return null!==e.autosave}function s(){var e=r();return e.autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var n=r(),a={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(a.metadata=t),n.autosave=T(a),C(n)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&P!==-1}function f(){return P+1}function p(){if(!d())return 0;for(var e=r(),t=0,n=0,a=e.slots.length;n<a;++n)null!==e.slots[n]&&++t;return t}function h(){return 0===p()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function y(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function v(e,t,n){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var a=r();if(e>=a.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=n&&(i.metadata=n),a.slots[e]=T(i),C(a)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){function r(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),n=e.getHours(),a=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),n<10&&(n="0"+n),a<10&&(a="0"+a),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+n+a+i}if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void UI.alert(L10n.get("savesDisallowed"));var n=null==e?Story.domId:Util.slugify(e),a=n+"-"+r()+".save",i=null==t?{}:{metadata:t},o=LZString.compressToBase64(JSON.stringify(T(i)));saveAs(new Blob([o],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var n=void 0;try{n=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(n)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(T(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,n=0,a=t.length;n<a;++n)if(null!==t[n]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function O(e){if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function T(e){if(null!=e&&"object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(O(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:n},ok:{value:a},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:f},isEmpty:{value:h},count:{value:p},has:{value:g},get:{value:m},load:{value:y},save:{value:v},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}n(),g.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&g.filter(function(e){return e.type!==m.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function n(){var e=t(),r=storage.get("settings")||t();g.filter(function(e){return e.type!==m.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function a(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)a(),n();else{if(null==e||!f(e))throw new Error('nonexistent setting "'+e+'"');var t=p(e);t.type!==m.Header&&(settings[e]=t.default)}return r()}function o(e,t){g.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var n=[];throw arguments.length<1&&n.push("type"),arguments.length<2&&n.push("name"),arguments.length<3&&n.push("definition"),new Error("missing parameters, no "+n.join(" or ")+" specified")}if("object"!==("undefined"==typeof r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(f(t))throw new Error('cannot clobber existing setting "'+t+'"');var a={type:e,name:t,label:null==r.label?"":String(r.label).trim()};switch(e){case m.Header:break;case m.Toggle:a.default=!!r.default;break;case m.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(a.list=Object.freeze(r.list),null==r.default)a.default=r.list[0];else{var i=r.list.indexOf(r.default);if(i===-1)throw new Error("list does not contain default");a.default=r.list[i]}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(a.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(a.onChange=Object.freeze(r.onChange)),g.push(Object.freeze(a))}function u(e,t){s(m.Header,e,{label:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.List].concat(t))}function d(){return 0===g.length}function f(e){return g.some(function(t){return t.name===e})}function p(e){return g.find(function(t){return t.name===e})}function h(e){f(e)&&delete settings[e];for(var t=0;t<g.length;++t)if(g[t].name===e){g.splice(t,1),h(e);break}}var g=[],m=Util.toEnum({Header:0,Toggle:1,List:2});return Object.freeze(Object.defineProperties({},{Types:{value:m},init:{value:e},create:{value:t},save:{value:r},load:{value:n},clear:{value:a},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},isEmpty:{value:d},has:{value:f},get:{value:p},delete:{value:h}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(n))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return n.includes(e)}).sort().join('", "')+'"')}function t(e){if(a.includes(e.title)&&e.tags.includesAny(n))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return n.includes(e)}).sort().join('", "')+'"')}var n=["widget"],a=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"];!function(){var i=function(e){var t=[].concat(n),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(n.unshift("script","stylesheet"),a.push("StoryTitle"),Config.passages.start=function(){var e="START_AT";return""!==e?(Config.debug=!0,e):"Start"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),n=new Passage(r.attr("tiddler"),this);n.title===Config.passages.start?(e(n),c[n.title]=n):n.tags.includes("stylesheet")?(i(n),d.push(n)):n.tags.includes("script")?(i(n),f.push(n)):n.tags.includes("widget")?(i(n),p.push(n)):(t(n),c[n.title]=n)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage');var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}()}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<f.length;++e)try{Scripting.evalJavaScript(f[e].text)}catch(t){console.error(t),Alert.error(f[e].title,"object"===("undefined"==typeof t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<p.length;++t)try{Wikifier.wikifyEval(p[t].processText())}catch(e){console.error(e),Alert.error(p[t].title,"object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=h=Util.unescape(e),m=Util.slugify(h)}function n(){return h}function a(){return m}function i(){return g}function o(e){var t="undefined"==typeof e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r);case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t="undefined"==typeof e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",n=Object.keys(c),a=[],i=0;i<n.length;++i){var o=c[n[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":for(var s=0,u=o[e].length;s<u;++s)if(o[e][s]==t){a.push(o);break}break;default:o[e]==t&&a.push(o)}}return a.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),a}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),n=[],a=0;a<r.length;++a){var i=c[r[a]];e(i)&&n.push(i)}return n.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),n}var c={},d=[],f=[],p=[],h="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:f},widgets:{value:p},load:{value:e},init:{value:t},title:{get:n},domId:{get:a},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,n=Config.debug;Config.debug=!1;try{null==r&&(r=document.createElement("ul"));var a=document.createDocumentFragment();new Wikifier(a,Story.get(e).processText().trim());var i=[].concat(_toConsumableArray(a.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "));for(;a.hasChildNodes();){var o=a.firstChild;if(o.nodeType===Node.ELEMENT_NODE&&"A"===o.nodeName.toUpperCase()){var s=document.createElement("li");r.appendChild(s),s.appendChild(o)}else a.removeChild(o)}}finally{Config.debug=n}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons">'+('<li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li>")+"</ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function n(){l(),Dialog.open.apply(Dialog,arguments)}function a(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){f(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons">'+('<li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+"</button></li>")+('<li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li>")+"</ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var n=Story.get(State.history[r].title);n&&n.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+n.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons">'+('<li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+"</button></li>")+('<li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li>")+"</ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,n){var a=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&a.addClass(t),n?a.ariaClick(n):a.prop("disabled",!0),jQuery(document.createElement("li")).append(a)}function r(){function e(e,t,r,n,a){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+n).addClass(e).html(r);return t&&i.addClass(t),a?"auto"===n?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return a()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(n+1)},function(){return a(n)}):i.prop("disabled",!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var n=jQuery(document.createElement("td")),a=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")
+}).text("A").appendTo(n),t.autosave?(a.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?L10n.get("savesSavedOn")+" "+new Date(t.autosave.date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(a.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(i),i.addClass("empty"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(n).append(a).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),f=jQuery(document.createElement("td")),p=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(f),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?L10n.get("savesSavedOn")+" "+new Date(t.slots[s].date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(f),p.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(f),f.addClass("empty"),p.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(f).append(p).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}var n=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&n.append(r()),a||Has.fileAPI){var i=jQuery(document.createElement("ul")).addClass("buttons").appendTo(n);return Has.fileAPI&&(i.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),i.append(e("import",null,L10n.get("savesLabelImport"),function(){return n.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(n)),a&&i.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,n=Util.slugify(r),a=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2")),o=jQuery(document.createElement("p"));return a.attr("id","header-body-"+n).append(i).append(o).appendTo(e),i.attr("id","header-heading-"+n).wiki(r),void o.attr("id","header-label-"+n).wiki(t.label)}var s=t.name,u=Util.slugify(s),l=jQuery(document.createElement("div")),c=jQuery(document.createElement("label")),d=jQuery(document.createElement("div")),f=void 0;switch(l.attr("id","setting-body-"+u).append(c).append(d).appendTo(e),c.attr({id:"setting-label-"+u,for:"setting-control-"+u}).wiki(t.label),null==settings[s]&&(settings[s]=t.default),t.type){case Setting.Types.Toggle:f=jQuery(document.createElement("button")),settings[s]?f.addClass("enabled").text(L10n.get("settingsOn")):f.text(L10n.get("settingsOff")),f.ariaClick(function(){settings[s]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[s]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[s]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default})});break;case Setting.Types.List:f=jQuery(document.createElement("select"));for(var p=0,h=t.list.length;p<h;++p)jQuery(document.createElement("option")).val(p).text(t.list[p]).appendTo(f);f.val(t.list.indexOf(settings[s])).attr("tabindex",0).on("change",function(){settings[s]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default,list:t.list})})}f.attr("id","setting-control-"+u).appendTo(d)}),e.append('<ul class="buttons">'+('<li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+"</button></li>")+('<li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li>")+"</ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function f(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:n},saves:{value:a},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:f},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:f},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),n=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray">'+('<button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button>')+'<div id="ui-bar-history">'+('<button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'"></button>')+('<button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'"></button>')+('<button id="history-forward" tabindex="0" title="'+n+'" aria-label="'+n+'"></button>')+'</div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core">'+('<li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+"</a></li>")+('<li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+"</a></li>")+('<li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+"</a></li>")+('<li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li>")+"</ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.prop("disabled",State.length<2),t.prop("disabled",State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&!function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").prop("disabled",State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").prop("disabled",State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:n},unstow:{value:a},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarAddWatch"),t=L10n.get("debugBarWatchAll"),a=L10n.get("debugBarWatchNone"),o=L10n.get("debugBarWatchToggle"),d=L10n.get("debugBarViewsToggle"),f=jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden">'+("<div>"+L10n.get("debugBarNoWatches")+"</div>>")+"</div><div>"+('<button id="debug-bar-watch-toggle" tabindex="0" title="'+o+'" aria-label="'+o+'">'+L10n.get("debugBarLabelWatch")+"</button>")+('<label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+"</label>")+'<input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist>'+('<button id="debug-bar-watch-add" tabindex="0" title="'+e+'" aria-label="'+e+'"></button>')+('<button id="debug-bar-watch-all" tabindex="0" title="'+t+'" aria-label="'+t+'"></button>')+('<button id="debug-bar-watch-none" tabindex="0" title="'+a+'" aria-label="'+a+'"></button>')+"</div><div>"+('<button id="debug-bar-views-toggle" tabindex="0" title="'+d+'" aria-label="'+d+'">'+L10n.get("debugBarLabelViews")+"</button>")+('<label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+"</label>")+'<select id="debug-bar-turn-select" tabindex="0"></select></div></div>');g=jQuery(f.find("#debug-bar-watch").get(0)),m=jQuery(f.find("#debug-bar-watch-list").get(0)),y=jQuery(f.find("#debug-bar-turn-select").get(0));var p=jQuery(f.find("#debug-bar-watch-toggle").get(0)),h=jQuery(f.find("#debug-bar-watch-input").get(0)),v=jQuery(f.find("#debug-bar-watch-add").get(0)),b=jQuery(f.find("#debug-bar-watch-all").get(0)),w=jQuery(f.find("#debug-bar-watch-none").get(0)),k=jQuery(f.find("#debug-bar-views-toggle").get(0));p.ariaClick(function(){g.attr("hidden")?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),s()}),h.on(":addwatch",function(){r(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),h.trigger(":addwatch"))}),v.ariaClick(function(){return h.trigger(":addwatch")}),b.ariaClick(n),w.ariaClick(i),y.on("change",function(){Engine.goTo(Number(this.value))}),k.ariaClick(function(){DebugView.toggle(),s()}),f.insertBefore("#store-area"),jQuery(document).on(":historyupdate.debug-bar",c).on(":passageend.debug-bar",function(){u(),l()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){o(),c(),u(),l()}function r(e){f.test(e)&&(h.pushUnique(e),h.sort(),u(),l(),s())}function n(){Object.keys(State.variables).map(function(e){return h.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return h.pushUnique("_"+e)}),h.sort(),u(),l(),s()}function a(e){h.delete(e),u(),l(),s()}function i(){for(var e=h.length-1;e>=0;--e)h.pop();u(),l(),s()}function o(){if(session.has("debugState")){var e=session.get("debugState");h.push.apply(h,_toConsumableArray(e.watchList)),e.watchEnabled?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function s(){session.set("debugState",{watchList:h,watchEnabled:!g.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function u(){if(0===h.length)return void g.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),n=function(t,n){var i=h[t],o=i.slice(1),s="$"===i[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",i).ariaClick({one:!0,label:e},function(){return a(i)}),c.text(d(s[o])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(i).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)},i=0,o=h.length;i<o;++i)n(i,o);t.append(r),g.empty().append(t)}function l(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void m.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),n=document.createDocumentFragment();r.delete(h);for(var a=0,i=r.length;a<i;++a)jQuery(document.createElement("option")).val(r[a]).appendTo(n);m.empty().append(n)}function c(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),n=0;n<e;++n)jQuery(document.createElement("option")).val(n).text(t+n+1+". "+Util.escape(State.history[n].title)).appendTo(r);y.empty().prop("disabled",e<2).append(r).val(State.activeIndex)}function d(e){if(null===e)return String(e);switch("undefined"==typeof e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var n=e instanceof Array?e:Array.from(e),a=0,i=n.length;a<i;++a)r.push(d(n[a]));for(var o=Object.keys(n),s=0,u=o.length;s<u;++s)p.test(o[s])||r.push(d(o[s])+": "+d(n[o[s]]));return t+"("+n.length+") ["+r.join(", ")+"]"}if(e instanceof Map){for(var l=Array.from(e),c=0,f=l.length;c<f;++c)r.push(d(l[c][0])+" → "+d(l[c][1]));return t+"("+l.length+") {"+r.join(", ")+"}"}for(var h=Object.keys(e),g=0,m=h.length;g<m;++g)r.push(d(h[g])+": "+d(e[h[g]]));return t+" {"+r.join(", ")+"}"}var f=new RegExp("^"+Patterns.variable+"$"),p=/^\d+$/,h=[],g=null,m=null,y=null;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},watch:{value:r},watchAll:{value:n},unwatch:{value:a},unwatchAll:{value:i}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):n())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function n(){jQuery(document.documentElement).attr("data-init","loading")}function a(){return++s,o.add(s),n(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:n},lock:{value:a},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:23,patch:1,prerelease:null,build:8363,date:new Date("2018-01-29T01:56:38.174Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Config.debug&&DebugBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),UIBar.start(),Config.debug&&DebugBar.start(),window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version},LoadScreen.unlock(e)}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);}
+	</script>
+</body>
+</html>
diff --git a/devNotes/sugarcube stuff/header backup 224.html b/devNotes/sugarcube stuff/header backup 224.html
new file mode 100644
index 0000000000000000000000000000000000000000..1317d9c19c4cd82d89bd7c86a432456202733b0e
--- /dev/null
+++ b/devNotes/sugarcube stuff/header backup 224.html	
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html data-init="no-js">
+<head>
+<meta charset="UTF-8" />
+<title>SugarCube</title>
+<meta name="viewport" content="width=device-width,initial-scale=1" />
+<!--
+
+SugarCube (v2.23.4): A free (gratis and libre) story format.
+
+Copyright © 2013–2018 Thomas Michael Edwards <thomasmedwards@gmail.com>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+<!--
+
+Build Info:
+  * "TIME"
+  * "VERSION"
+
+-->
+<script id="script-libraries" type="text/javascript">
+if(document.head&&document.addEventListener&&document.querySelector&&Object.create&&Object.freeze&&JSON){document.documentElement.setAttribute("data-init", "loading");
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
+if("document" in self){if(!("classList" in document.createElement("_"))){(function(j){"use strict";if(!("Element" in j)){return}var a="classList",f="prototype",m=j.Element[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p<o;p++){if(p in this&&this[p]===q){return p}}return -1},n=function(o,p){this.name=o;this.code=DOMException[o];this.message=p},g=function(p,o){if(o===""){throw new n("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(o)){throw new n("INVALID_CHARACTER_ERR","String contains an invalid character")}return c.call(p,o)},d=function(s){var r=k.call(s.getAttribute("class")||""),q=r?r.split(/\s+/):[],p=0,o=q.length;for(;p<o;p++){this.push(q[p])}this._updateClassName=function(){s.setAttribute("class",this.toString())}},e=d[f]=[],i=function(){return new d(this)};n[f]=Error[f];e.item=function(o){return this[o]||null};e.contains=function(o){o+="";return g(this,o)!==-1};e.add=function(){var s=arguments,r=0,p=s.length,q,o=false;do{q=s[r]+"";if(g(this,q)===-1){this.push(q);o=true}}while(++r<p);if(o){this._updateClassName()}};e.remove=function(){var t=arguments,s=0,p=t.length,r,o=false,q;do{r=t[s]+"";q=g(this,r);while(q!==-1){this.splice(q,1);o=true;q=g(this,r)}}while(++s<p);if(o){this._updateClassName()}};e.toggle=function(p,q){p+="";var o=this.contains(p),r=o?q!==true&&"remove":q!==false&&"add";if(r){this[r](p)}if(q===true||q===false){return q}else{return !o}};e.toString=function(){return this.join(" ")};if(b.defineProperty){var l={get:i,enumerable:true,configurable:true};try{b.defineProperty(m,a,l)}catch(h){if(h.number===-2146823252){l.enumerable=false;b.defineProperty(m,a,l)}}}else{if(b[f].__defineGetter__){m.__defineGetter__(a,i)}}}(self))}else{(function(){var b=document.createElement("_");b.classList.add("c1","c2");if(!b.classList.contains("c2")){var c=function(e){var d=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(h){var g,f=arguments.length;for(g=0;g<f;g++){h=arguments[g];d.call(this,h)}}};c("add");c("remove")}b.classList.toggle("c3",false);if(b.classList.contains("c3")){var a=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(d,e){if(1 in arguments&&!this.contains(d)===!e){return e}else{return a.call(this,d)}}}b=null}())}};
+/*!
+ * https://github.com/es-shims/es5-shim
+ * @license es5-shim Copyright 2009-2015 by contributors, MIT License
+ * see https://github.com/es-shims/es5-shim/blob/v4.5.9/LICENSE
+ */
+(function(t,r){"use strict";if(typeof define==="function"&&define.amd){define(r)}else if(typeof exports==="object"){module.exports=r()}else{t.returnExports=r()}})(this,function(){var t=Array;var r=t.prototype;var e=Object;var n=e.prototype;var i=Function;var a=i.prototype;var o=String;var f=o.prototype;var u=Number;var l=u.prototype;var s=r.slice;var c=r.splice;var v=r.push;var h=r.unshift;var p=r.concat;var y=r.join;var d=a.call;var g=a.apply;var w=Math.max;var b=Math.min;var T=n.toString;var m=typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol";var D;var S=Function.prototype.toString,x=/^\s*class /,O=function isES6ClassFn(t){try{var r=S.call(t);var e=r.replace(/\/\/.*\n/g,"");var n=e.replace(/\/\*[.\s\S]*\*\//g,"");var i=n.replace(/\n/gm," ").replace(/ {2}/g," ");return x.test(i)}catch(a){return false}},j=function tryFunctionObject(t){try{if(O(t)){return false}S.call(t);return true}catch(r){return false}},E="[object Function]",I="[object GeneratorFunction]",D=function isCallable(t){if(!t){return false}if(typeof t!=="function"&&typeof t!=="object"){return false}if(m){return j(t)}if(O(t)){return false}var r=T.call(t);return r===E||r===I};var M;var U=RegExp.prototype.exec,F=function tryRegexExec(t){try{U.call(t);return true}catch(r){return false}},N="[object RegExp]";M=function isRegex(t){if(typeof t!=="object"){return false}return m?F(t):T.call(t)===N};var C;var k=String.prototype.valueOf,A=function tryStringObject(t){try{k.call(t);return true}catch(r){return false}},R="[object String]";C=function isString(t){if(typeof t==="string"){return true}if(typeof t!=="object"){return false}return m?A(t):T.call(t)===R};var P=e.defineProperty&&function(){try{var t={};e.defineProperty(t,"x",{enumerable:false,value:t});for(var r in t){return false}return t.x===t}catch(n){return false}}();var $=function(t){var r;if(P){r=function(t,r,n,i){if(!i&&r in t){return}e.defineProperty(t,r,{configurable:true,enumerable:false,writable:true,value:n})}}else{r=function(t,r,e,n){if(!n&&r in t){return}t[r]=e}}return function defineProperties(e,n,i){for(var a in n){if(t.call(n,a)){r(e,a,n[a],i)}}}}(n.hasOwnProperty);var J=function isPrimitive(t){var r=typeof t;return t===null||r!=="object"&&r!=="function"};var Y=u.isNaN||function isActualNaN(t){return t!==t};var Z={ToInteger:function ToInteger(t){var r=+t;if(Y(r)){r=0}else if(r!==0&&r!==1/0&&r!==-(1/0)){r=(r>0||-1)*Math.floor(Math.abs(r))}return r},ToPrimitive:function ToPrimitive(t){var r,e,n;if(J(t)){return t}e=t.valueOf;if(D(e)){r=e.call(t);if(J(r)){return r}}n=t.toString;if(D(n)){r=n.call(t);if(J(r)){return r}}throw new TypeError},ToObject:function(t){if(t==null){throw new TypeError("can't convert "+t+" to object")}return e(t)},ToUint32:function ToUint32(t){return t>>>0}};var z=function Empty(){};$(a,{bind:function bind(t){var r=this;if(!D(r)){throw new TypeError("Function.prototype.bind called on incompatible "+r)}var n=s.call(arguments,1);var a;var o=function(){if(this instanceof a){var i=g.call(r,this,p.call(n,s.call(arguments)));if(e(i)===i){return i}return this}else{return g.call(r,t,p.call(n,s.call(arguments)))}};var f=w(0,r.length-n.length);var u=[];for(var l=0;l<f;l++){v.call(u,"$"+l)}a=i("binder","return function ("+y.call(u,",")+"){ return binder.apply(this, arguments); }")(o);if(r.prototype){z.prototype=r.prototype;a.prototype=new z;z.prototype=null}return a}});var G=d.bind(n.hasOwnProperty);var B=d.bind(n.toString);var H=d.bind(s);var W=g.bind(s);var L=d.bind(f.slice);var X=d.bind(f.split);var q=d.bind(f.indexOf);var K=d.bind(v);var Q=d.bind(n.propertyIsEnumerable);var V=d.bind(r.sort);var _=t.isArray||function isArray(t){return B(t)==="[object Array]"};var tt=[].unshift(0)!==1;$(r,{unshift:function(){h.apply(this,arguments);return this.length}},tt);$(t,{isArray:_});var rt=e("a");var et=rt[0]!=="a"||!(0 in rt);var nt=function properlyBoxed(t){var r=true;var e=true;var n=false;if(t){try{t.call("foo",function(t,e,n){if(typeof n!=="object"){r=false}});t.call([1],function(){"use strict";e=typeof this==="string"},"x")}catch(i){n=true}}return!!t&&!n&&r&&e};$(r,{forEach:function forEach(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=-1;var i=Z.ToUint32(e.length);var a;if(arguments.length>1){a=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.forEach callback must be a function")}while(++n<i){if(n in e){if(typeof a==="undefined"){t(e[n],n,r)}else{t.call(a,e[n],n,r)}}}}},!nt(r.forEach));$(r,{map:function map(r){var e=Z.ToObject(this);var n=et&&C(this)?X(this,""):e;var i=Z.ToUint32(n.length);var a=t(i);var o;if(arguments.length>1){o=arguments[1]}if(!D(r)){throw new TypeError("Array.prototype.map callback must be a function")}for(var f=0;f<i;f++){if(f in n){if(typeof o==="undefined"){a[f]=r(n[f],f,e)}else{a[f]=r.call(o,n[f],f,e)}}}return a}},!nt(r.map));$(r,{filter:function filter(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i=[];var a;var o;if(arguments.length>1){o=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.filter callback must be a function")}for(var f=0;f<n;f++){if(f in e){a=e[f];if(typeof o==="undefined"?t(a,f,r):t.call(o,a,f,r)){K(i,a)}}}return i}},!nt(r.filter));$(r,{every:function every(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i;if(arguments.length>1){i=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.every callback must be a function")}for(var a=0;a<n;a++){if(a in e&&!(typeof i==="undefined"?t(e[a],a,r):t.call(i,e[a],a,r))){return false}}return true}},!nt(r.every));$(r,{some:function some(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);var i;if(arguments.length>1){i=arguments[1]}if(!D(t)){throw new TypeError("Array.prototype.some callback must be a function")}for(var a=0;a<n;a++){if(a in e&&(typeof i==="undefined"?t(e[a],a,r):t.call(i,e[a],a,r))){return true}}return false}},!nt(r.some));var it=false;if(r.reduce){it=typeof r.reduce.call("es5",function(t,r,e,n){return n})==="object"}$(r,{reduce:function reduce(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);if(!D(t)){throw new TypeError("Array.prototype.reduce callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduce of empty array with no initial value")}var i=0;var a;if(arguments.length>=2){a=arguments[1]}else{do{if(i in e){a=e[i++];break}if(++i>=n){throw new TypeError("reduce of empty array with no initial value")}}while(true)}for(;i<n;i++){if(i in e){a=t(a,e[i],i,r)}}return a}},!it);var at=false;if(r.reduceRight){at=typeof r.reduceRight.call("es5",function(t,r,e,n){return n})==="object"}$(r,{reduceRight:function reduceRight(t){var r=Z.ToObject(this);var e=et&&C(this)?X(this,""):r;var n=Z.ToUint32(e.length);if(!D(t)){throw new TypeError("Array.prototype.reduceRight callback must be a function")}if(n===0&&arguments.length===1){throw new TypeError("reduceRight of empty array with no initial value")}var i;var a=n-1;if(arguments.length>=2){i=arguments[1]}else{do{if(a in e){i=e[a--];break}if(--a<0){throw new TypeError("reduceRight of empty array with no initial value")}}while(true)}if(a<0){return i}do{if(a in e){i=t(i,e[a],a,r)}}while(a--);return i}},!at);var ot=r.indexOf&&[0,1].indexOf(1,2)!==-1;$(r,{indexOf:function indexOf(t){var r=et&&C(this)?X(this,""):Z.ToObject(this);var e=Z.ToUint32(r.length);if(e===0){return-1}var n=0;if(arguments.length>1){n=Z.ToInteger(arguments[1])}n=n>=0?n:w(0,e+n);for(;n<e;n++){if(n in r&&r[n]===t){return n}}return-1}},ot);var ft=r.lastIndexOf&&[0,1].lastIndexOf(0,-3)!==-1;$(r,{lastIndexOf:function lastIndexOf(t){var r=et&&C(this)?X(this,""):Z.ToObject(this);var e=Z.ToUint32(r.length);if(e===0){return-1}var n=e-1;if(arguments.length>1){n=b(n,Z.ToInteger(arguments[1]))}n=n>=0?n:e-Math.abs(n);for(;n>=0;n--){if(n in r&&t===r[n]){return n}}return-1}},ft);var ut=function(){var t=[1,2];var r=t.splice();return t.length===2&&_(r)&&r.length===0}();$(r,{splice:function splice(t,r){if(arguments.length===0){return[]}else{return c.apply(this,arguments)}}},!ut);var lt=function(){var t={};r.splice.call(t,0,0,1);return t.length===1}();$(r,{splice:function splice(t,r){if(arguments.length===0){return[]}var e=arguments;this.length=w(Z.ToInteger(this.length),0);if(arguments.length>0&&typeof r!=="number"){e=H(arguments);if(e.length<2){K(e,this.length-t)}else{e[1]=Z.ToInteger(r)}}return c.apply(this,e)}},!lt);var st=function(){var r=new t(1e5);r[8]="x";r.splice(1,1);return r.indexOf("x")===7}();var ct=function(){var t=256;var r=[];r[t]="a";r.splice(t+1,0,"b");return r[t]==="a"}();$(r,{splice:function splice(t,r){var e=Z.ToObject(this);var n=[];var i=Z.ToUint32(e.length);var a=Z.ToInteger(t);var f=a<0?w(i+a,0):b(a,i);var u=b(w(Z.ToInteger(r),0),i-f);var l=0;var s;while(l<u){s=o(f+l);if(G(e,s)){n[l]=e[s]}l+=1}var c=H(arguments,2);var v=c.length;var h;if(v<u){l=f;var p=i-u;while(l<p){s=o(l+u);h=o(l+v);if(G(e,s)){e[h]=e[s]}else{delete e[h]}l+=1}l=i;var y=i-u+v;while(l>y){delete e[l-1];l-=1}}else if(v>u){l=i-u;while(l>f){s=o(l+u-1);h=o(l+v-1);if(G(e,s)){e[h]=e[s]}else{delete e[h]}l-=1}}l=f;for(var d=0;d<c.length;++d){e[l]=c[d];l+=1}e.length=i-u+v;return n}},!st||!ct);var vt=r.join;var ht;try{ht=Array.prototype.join.call("123",",")!=="1,2,3"}catch(pt){ht=true}if(ht){$(r,{join:function join(t){var r=typeof t==="undefined"?",":t;return vt.call(C(this)?X(this,""):this,r)}},ht)}var yt=[1,2].join(undefined)!=="1,2";if(yt){$(r,{join:function join(t){var r=typeof t==="undefined"?",":t;return vt.call(this,r)}},yt)}var dt=function push(t){var r=Z.ToObject(this);var e=Z.ToUint32(r.length);var n=0;while(n<arguments.length){r[e+n]=arguments[n];n+=1}r.length=e+n;return e+n};var gt=function(){var t={};var r=Array.prototype.push.call(t,undefined);return r!==1||t.length!==1||typeof t[0]!=="undefined"||!G(t,0)}();$(r,{push:function push(t){if(_(this)){return v.apply(this,arguments)}return dt.apply(this,arguments)}},gt);var wt=function(){var t=[];var r=t.push(undefined);return r!==1||t.length!==1||typeof t[0]!=="undefined"||!G(t,0)}();$(r,{push:dt},wt);$(r,{slice:function(t,r){var e=C(this)?X(this,""):this;return W(e,arguments)}},et);var bt=function(){try{[1,2].sort(null);[1,2].sort({});return true}catch(t){}return false}();var Tt=function(){try{[1,2].sort(/a/);return false}catch(t){}return true}();var mt=function(){try{[1,2].sort(undefined);return true}catch(t){}return false}();$(r,{sort:function sort(t){if(typeof t==="undefined"){return V(this)}if(!D(t)){throw new TypeError("Array.prototype.sort callback must be a function")}return V(this,t)}},bt||!mt||!Tt);var Dt=!Q({toString:null},"toString");var St=Q(function(){},"prototype");var xt=!G("x","0");var Ot=function(t){var r=t.constructor;return r&&r.prototype===t};var jt={$window:true,$console:true,$parent:true,$self:true,$frame:true,$frames:true,$frameElement:true,$webkitIndexedDB:true,$webkitStorageInfo:true,$external:true};var Et=function(){if(typeof window==="undefined"){return false}for(var t in window){try{if(!jt["$"+t]&&G(window,t)&&window[t]!==null&&typeof window[t]==="object"){Ot(window[t])}}catch(r){return true}}return false}();var It=function(t){if(typeof window==="undefined"||!Et){return Ot(t)}try{return Ot(t)}catch(r){return false}};var Mt=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"];var Ut=Mt.length;var Ft=function isArguments(t){return B(t)==="[object Arguments]"};var Nt=function isArguments(t){return t!==null&&typeof t==="object"&&typeof t.length==="number"&&t.length>=0&&!_(t)&&D(t.callee)};var Ct=Ft(arguments)?Ft:Nt;$(e,{keys:function keys(t){var r=D(t);var e=Ct(t);var n=t!==null&&typeof t==="object";var i=n&&C(t);if(!n&&!r&&!e){throw new TypeError("Object.keys called on a non-object")}var a=[];var f=St&&r;if(i&&xt||e){for(var u=0;u<t.length;++u){K(a,o(u))}}if(!e){for(var l in t){if(!(f&&l==="prototype")&&G(t,l)){K(a,o(l))}}}if(Dt){var s=It(t);for(var c=0;c<Ut;c++){var v=Mt[c];if(!(s&&v==="constructor")&&G(t,v)){K(a,v)}}}return a}});var kt=e.keys&&function(){return e.keys(arguments).length===2}(1,2);var At=e.keys&&function(){var t=e.keys(arguments);return arguments.length!==1||t.length!==1||t[0]!==1}(1);var Rt=e.keys;$(e,{keys:function keys(t){if(Ct(t)){return Rt(H(t))}else{return Rt(t)}}},!kt||At);var Pt=new Date(-0xc782b5b342b24).getUTCMonth()!==0;var $t=new Date(-0x55d318d56a724);var Jt=new Date(14496624e5);var Yt=$t.toUTCString()!=="Mon, 01 Jan -45875 11:59:59 GMT";var Zt;var zt;var Gt=$t.getTimezoneOffset();if(Gt<-720){Zt=$t.toDateString()!=="Tue Jan 02 -45875";zt=!/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Jt.toString())}else{Zt=$t.toDateString()!=="Mon Jan 01 -45875";zt=!/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Jt.toString())}var Bt=d.bind(Date.prototype.getFullYear);var Ht=d.bind(Date.prototype.getMonth);var Wt=d.bind(Date.prototype.getDate);var Lt=d.bind(Date.prototype.getUTCFullYear);var Xt=d.bind(Date.prototype.getUTCMonth);var qt=d.bind(Date.prototype.getUTCDate);var Kt=d.bind(Date.prototype.getUTCDay);var Qt=d.bind(Date.prototype.getUTCHours);var Vt=d.bind(Date.prototype.getUTCMinutes);var _t=d.bind(Date.prototype.getUTCSeconds);var tr=d.bind(Date.prototype.getUTCMilliseconds);var rr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var er=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var nr=function daysInMonth(t,r){return Wt(new Date(r,t,0))};$(Date.prototype,{getFullYear:function getFullYear(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);if(t<0&&Ht(this)>11){return t+1}return t},getMonth:function getMonth(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);var r=Ht(this);if(t<0&&r>11){return 0}return r},getDate:function getDate(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Bt(this);var r=Ht(this);var e=Wt(this);if(t<0&&r>11){if(r===12){return e}var n=nr(0,t+1);return n-e+1}return e},getUTCFullYear:function getUTCFullYear(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);if(t<0&&Xt(this)>11){return t+1}return t},getUTCMonth:function getUTCMonth(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);var r=Xt(this);if(t<0&&r>11){return 0}return r},getUTCDate:function getUTCDate(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Lt(this);var r=Xt(this);var e=qt(this);if(t<0&&r>11){if(r===12){return e}var n=nr(0,t+1);return n-e+1}return e}},Pt);$(Date.prototype,{toUTCString:function toUTCString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=Kt(this);var r=qt(this);var e=Xt(this);var n=Lt(this);var i=Qt(this);var a=Vt(this);var o=_t(this);return rr[t]+", "+(r<10?"0"+r:r)+" "+er[e]+" "+n+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"}},Pt||Yt);$(Date.prototype,{toDateString:function toDateString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=this.getDay();var r=this.getDate();var e=this.getMonth();var n=this.getFullYear();return rr[t]+" "+er[e]+" "+(r<10?"0"+r:r)+" "+n}},Pt||Zt);if(Pt||zt){Date.prototype.toString=function toString(){if(!this||!(this instanceof Date)){throw new TypeError("this is not a Date object.")}var t=this.getDay();var r=this.getDate();var e=this.getMonth();var n=this.getFullYear();var i=this.getHours();var a=this.getMinutes();var o=this.getSeconds();var f=this.getTimezoneOffset();var u=Math.floor(Math.abs(f)/60);var l=Math.floor(Math.abs(f)%60);return rr[t]+" "+er[e]+" "+(r<10?"0"+r:r)+" "+n+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"+(f>0?"-":"+")+(u<10?"0"+u:u)+(l<10?"0"+l:l)};if(P){e.defineProperty(Date.prototype,"toString",{configurable:true,enumerable:false,writable:true})}}var ir=-621987552e5;var ar="-000001";var or=Date.prototype.toISOString&&new Date(ir).toISOString().indexOf(ar)===-1;var fr=Date.prototype.toISOString&&new Date(-1).toISOString()!=="1969-12-31T23:59:59.999Z";var ur=d.bind(Date.prototype.getTime);$(Date.prototype,{toISOString:function toISOString(){if(!isFinite(this)||!isFinite(ur(this))){throw new RangeError("Date.prototype.toISOString called on non-finite value.")}var t=Lt(this);var r=Xt(this);t+=Math.floor(r/12);r=(r%12+12)%12;var e=[r+1,qt(this),Qt(this),Vt(this),_t(this)];t=(t<0?"-":t>9999?"+":"")+L("00000"+Math.abs(t),0<=t&&t<=9999?-4:-6);for(var n=0;n<e.length;++n){e[n]=L("00"+e[n],-2)}return t+"-"+H(e,0,2).join("-")+"T"+H(e,2).join(":")+"."+L("000"+tr(this),-3)+"Z"}},or||fr);var lr=function(){try{return Date.prototype.toJSON&&new Date(NaN).toJSON()===null&&new Date(ir).toJSON().indexOf(ar)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return true}})}catch(t){return false}}();if(!lr){Date.prototype.toJSON=function toJSON(t){var r=e(this);var n=Z.ToPrimitive(r);if(typeof n==="number"&&!isFinite(n)){return null}var i=r.toISOString;if(!D(i)){throw new TypeError("toISOString property is not callable")}return i.call(r)}}var sr=Date.parse("+033658-09-27T01:46:40.000Z")===1e15;var cr=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z"));var vr=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(vr||cr||!sr){var hr=Math.pow(2,31)-1;var pr=Y(new Date(1970,0,1,0,0,0,hr+1).getTime());Date=function(t){var r=function Date(e,n,i,a,f,u,l){var s=arguments.length;var c;if(this instanceof t){var v=u;var h=l;if(pr&&s>=7&&l>hr){var p=Math.floor(l/hr)*hr;var y=Math.floor(p/1e3);v+=y;h-=y*1e3}c=s===1&&o(e)===e?new t(r.parse(e)):s>=7?new t(e,n,i,a,f,v,h):s>=6?new t(e,n,i,a,f,v):s>=5?new t(e,n,i,a,f):s>=4?new t(e,n,i,a):s>=3?new t(e,n,i):s>=2?new t(e,n):s>=1?new t(e instanceof t?+e:e):new t}else{c=t.apply(this,arguments)}if(!J(c)){$(c,{constructor:r},true)}return c};var e=new RegExp("^"+"(\\d{4}|[+-]\\d{6})"+"(?:-(\\d{2})"+"(?:-(\\d{2})"+"(?:"+"T(\\d{2})"+":(\\d{2})"+"(?:"+":(\\d{2})"+"(?:(\\.\\d{1,}))?"+")?"+"("+"Z|"+"(?:"+"([-+])"+"(\\d{2})"+":(\\d{2})"+")"+")?)?)?)?"+"$");var n=[0,31,59,90,120,151,181,212,243,273,304,334,365];var i=function dayFromMonth(t,r){var e=r>1?1:0;return n[r]+Math.floor((t-1969+e)/4)-Math.floor((t-1901+e)/100)+Math.floor((t-1601+e)/400)+365*(t-1970)};var a=function toUTC(r){var e=0;var n=r;if(pr&&n>hr){var i=Math.floor(n/hr)*hr;var a=Math.floor(i/1e3);e+=a;n-=a*1e3}return u(new t(1970,0,1,0,0,e,n))};for(var f in t){if(G(t,f)){r[f]=t[f]}}$(r,{now:t.now,UTC:t.UTC},true);r.prototype=t.prototype;$(r.prototype,{constructor:r},true);var l=function parse(r){var n=e.exec(r);if(n){var o=u(n[1]),f=u(n[2]||1)-1,l=u(n[3]||1)-1,s=u(n[4]||0),c=u(n[5]||0),v=u(n[6]||0),h=Math.floor(u(n[7]||0)*1e3),p=Boolean(n[4]&&!n[8]),y=n[9]==="-"?1:-1,d=u(n[10]||0),g=u(n[11]||0),w;var b=c>0||v>0||h>0;if(s<(b?24:25)&&c<60&&v<60&&h<1e3&&f>-1&&f<12&&d<24&&g<60&&l>-1&&l<i(o,f+1)-i(o,f)){w=((i(o,f)+l)*24+s+d*y)*60;w=((w+c+g*y)*60+v)*1e3+h;if(p){w=a(w)}if(-864e13<=w&&w<=864e13){return w}}return NaN}return t.parse.apply(this,arguments)};$(r,{parse:l});return r}(Date)}if(!Date.now){Date.now=function now(){return(new Date).getTime()}}var yr=l.toFixed&&(8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)!=="1"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128");var dr={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function multiply(t,r){var e=-1;var n=r;while(++e<dr.size){n+=t*dr.data[e];dr.data[e]=n%dr.base;n=Math.floor(n/dr.base)}},divide:function divide(t){var r=dr.size;var e=0;while(--r>=0){e+=dr.data[r];dr.data[r]=Math.floor(e/t);e=e%t*dr.base}},numToString:function numToString(){var t=dr.size;var r="";while(--t>=0){if(r!==""||t===0||dr.data[t]!==0){var e=o(dr.data[t]);if(r===""){r=e}else{r+=L("0000000",0,7-e.length)+e}}}return r},pow:function pow(t,r,e){return r===0?e:r%2===1?pow(t,r-1,e*t):pow(t*t,r/2,e)},log:function log(t){var r=0;var e=t;while(e>=4096){r+=12;e/=4096}while(e>=2){r+=1;e/=2}return r}};var gr=function toFixed(t){var r,e,n,i,a,f,l,s;r=u(t);r=Y(r)?0:Math.floor(r);if(r<0||r>20){throw new RangeError("Number.toFixed called with invalid number of decimals")}e=u(this);if(Y(e)){return"NaN"}if(e<=-1e21||e>=1e21){return o(e)}n="";if(e<0){n="-";e=-e}i="0";if(e>1e-21){a=dr.log(e*dr.pow(2,69,1))-69;f=a<0?e*dr.pow(2,-a,1):e/dr.pow(2,a,1);f*=4503599627370496;a=52-a;if(a>0){dr.multiply(0,f);l=r;while(l>=7){dr.multiply(1e7,0);l-=7}dr.multiply(dr.pow(10,l,1),0);l=a-1;while(l>=23){dr.divide(1<<23);l-=23}dr.divide(1<<l);dr.multiply(1,1);dr.divide(2);i=dr.numToString()}else{dr.multiply(0,f);dr.multiply(1<<-a,0);i=dr.numToString()+L("0.00000000000000000000",2,2+r)}}if(r>0){s=i.length;if(s<=r){i=n+L("0.0000000000000000000",0,r-s+2)+i}else{i=n+L(i,0,s-r)+"."+L(i,s-r)}}else{i=n+i}return i};$(l,{toFixed:gr},yr);var wr=function(){try{return 1..toPrecision(undefined)==="1"}catch(t){return true}}();var br=l.toPrecision;$(l,{toPrecision:function toPrecision(t){return typeof t==="undefined"?br.call(this):br.call(this,t)}},wr);if("ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||"tesst".split(/(s)*/)[1]==="t"||"test".split(/(?:)/,-1).length!==4||"".split(/.?/).length||".".split(/()()/).length>1){(function(){var t=typeof/()??/.exec("")[1]==="undefined";var r=Math.pow(2,32)-1;f.split=function(e,n){var i=String(this);if(typeof e==="undefined"&&n===0){return[]}if(!M(e)){return X(this,e,n)}var a=[];var o=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,u,l,s,c;var h=new RegExp(e.source,o+"g");if(!t){u=new RegExp("^"+h.source+"$(?!\\s)",o)}var p=typeof n==="undefined"?r:Z.ToUint32(n);l=h.exec(i);while(l){s=l.index+l[0].length;if(s>f){K(a,L(i,f,l.index));if(!t&&l.length>1){l[0].replace(u,function(){for(var t=1;t<arguments.length-2;t++){if(typeof arguments[t]==="undefined"){l[t]=void 0}}})}if(l.length>1&&l.index<i.length){v.apply(a,H(l,1))}c=l[0].length;f=s;if(a.length>=p){break}}if(h.lastIndex===l.index){h.lastIndex++}l=h.exec(i)}if(f===i.length){if(c||!h.test("")){K(a,"")}}else{K(a,L(i,f))}return a.length>p?H(a,0,p):a}})()}else if("0".split(void 0,0).length){f.split=function split(t,r){if(typeof t==="undefined"&&r===0){return[]}return X(this,t,r)}}var Tr=f.replace;var mr=function(){var t=[];"x".replace(/x(.)?/g,function(r,e){K(t,e)});return t.length===1&&typeof t[0]==="undefined"}();if(!mr){f.replace=function replace(t,r){var e=D(r);var n=M(t)&&/\)[*?]/.test(t.source);if(!e||!n){return Tr.call(this,t,r)}else{var i=function(e){var n=arguments.length;var i=t.lastIndex;t.lastIndex=0;var a=t.exec(e)||[];t.lastIndex=i;K(a,arguments[n-2],arguments[n-1]);return r.apply(this,a)};return Tr.call(this,t,i)}}}var Dr=f.substr;var Sr="".substr&&"0b".substr(-1)!=="b";$(f,{substr:function substr(t,r){var e=t;if(t<0){e=w(this.length+t,0)}return Dr.call(this,e,r)}},Sr);var xr="	\n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003"+"\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028"+"\u2029\ufeff";var Or="\u200b";var jr="["+xr+"]";var Er=new RegExp("^"+jr+jr+"*");var Ir=new RegExp(jr+jr+"*$");var Mr=f.trim&&(xr.trim()||!Or.trim());$(f,{trim:function trim(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}return o(this).replace(Er,"").replace(Ir,"")}},Mr);var Ur=d.bind(String.prototype.trim);var Fr=f.lastIndexOf&&"abc\u3042\u3044".lastIndexOf("\u3042\u3044",2)!==-1;$(f,{lastIndexOf:function lastIndexOf(t){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}var r=o(this);var e=o(t);var n=arguments.length>1?u(arguments[1]):NaN;var i=Y(n)?Infinity:Z.ToInteger(n);var a=b(w(i,0),r.length);var f=e.length;var l=a+f;while(l>0){l=w(0,l-f);var s=q(L(r,l,a+f),e);if(s!==-1){return l+s}}return-1}},Fr);var Nr=f.lastIndexOf;$(f,{lastIndexOf:function lastIndexOf(t){return Nr.apply(this,arguments)}},f.lastIndexOf.length!==1);if(parseInt(xr+"08")!==8||parseInt(xr+"0x16")!==22){parseInt=function(t){var r=/^[\-+]?0[xX]/;return function parseInt(e,n){var i=Ur(String(e));var a=u(n)||(r.test(i)?16:10);return t(i,a)}}(parseInt)}if(1/parseFloat("-0")!==-Infinity){parseFloat=function(t){return function parseFloat(r){var e=Ur(String(r));var n=t(e);return n===0&&L(e,0,1)==="-"?-0:n}}(parseFloat)}if(String(new RangeError("test"))!=="RangeError: test"){var Cr=function toString(){if(typeof this==="undefined"||this===null){throw new TypeError("can't convert "+this+" to object")}var t=this.name;if(typeof t==="undefined"){t="Error"}else if(typeof t!=="string"){t=o(t)}var r=this.message;if(typeof r==="undefined"){r=""}else if(typeof r!=="string"){r=o(r)}if(!t){return r}if(!r){return t}return t+": "+r};Error.prototype.toString=Cr}if(P){var kr=function(t,r){if(Q(t,r)){var e=Object.getOwnPropertyDescriptor(t,r);if(e.configurable){e.enumerable=false;Object.defineProperty(t,r,e)}}};kr(Error.prototype,"message");if(Error.prototype.message!==""){Error.prototype.message=""}kr(Error.prototype,"name")}if(String(/a/gim)!=="/a/gim"){var Ar=function toString(){var t="/"+this.source+"/";if(this.global){t+="g"}if(this.ignoreCase){t+="i"}if(this.multiline){t+="m"}return t};RegExp.prototype.toString=Ar}});
+//# sourceMappingURL=es5-shim.map
+/*!
+  * https://github.com/paulmillr/es6-shim
+  * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com)
+  *   and contributors,  MIT License
+  * es6-shim: v0.35.3
+  * see https://github.com/paulmillr/es6-shim/blob/0.35.1/LICENSE
+  * Details and documentation:
+  * https://github.com/paulmillr/es6-shim/
+  */
+(function(e,t){if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(e){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(e){return false}};var u=o(i);var f=function(){return!i(function(){Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d=typeof/abc/==="function"?function IsCallableSlow(e){return typeof e==="function"&&g(e)==="[object Function]"}:function IsCallableFast(e){return typeof e==="function"};var m={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var O=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){m.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=O(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.shift);var A=Math.max;var R=Math.min;var _=Math.floor;var k=Math.abs;var F=Math.exp;var L=Math.log;var D=Math.sqrt;var z=Function.call.bind(Object.prototype.hasOwnProperty);var q;var W=function(){};var G=S.Map;var H=G&&G.prototype["delete"];var V=G&&G.prototype.get;var B=G&&G.prototype.has;var U=G&&G.prototype.set;var $=S.Symbol||{};var J=$.species||"@@species";var X=Number.isNaN||function isNaN(e){return e!==e};var K=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var Z=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(X(t)){return t}return t<0?-1:1};var Y=function isArguments(e){return g(e)==="[object Arguments]"};var Q=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var ee=Y(arguments)?Y:Q;var te={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var re=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);m.preserveToString(e[t],n)};var ne=typeof $==="function"&&typeof $["for"]==="function"&&te.symbol($());var oe=te.symbol($.iterator)?$.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){oe="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ie=S.Reflect;var ae=String;var ue=typeof document==="undefined"||!document?null:document.all;var fe=ue==null?function isNullOrUndefined(e){return e==null}:function isNullOrUndefinedAndNotDocumentAll(e){return e==null&&e!==ue};var se={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!se.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(fe(e)){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"||e===ue},ToObject:function(e,t){return Object(se.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return se.IsCallable(e)},ToInt32:function(e){return se.ToNumber(e)>>0},ToUint32:function(e){return se.ToNumber(e)>>>0},ToNumber:function(e){if(g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=se.ToNumber(e);if(X(t)){return 0}if(t===0||!K(t)){return t}return(t>0?1:-1)*_(k(t))},ToLength:function(e){var t=se.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return X(e)&&X(t)},SameValueZero:function(e,t){return e===t||X(e)&&X(t)},IsIterable:function(e){return se.TypeIsObject(e)&&(typeof e[oe]!=="undefined"||ee(e))},GetIterator:function(e){if(ee(e)){return new q(e,"value")}var t=se.GetMethod(e,oe);if(!se.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=se.Call(t,e);if(!se.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=se.ToObject(e)[t];if(fe(r)){return void 0}if(!se.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=se.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=se.Call(r,e)}catch(e){o=e}if(t){return}if(o){throw o}if(!se.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!se.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=se.IteratorNext(e);var r=se.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ie.construct){return ie.construct(e,t,o)}var i=o.prototype;if(!se.TypeIsObject(i)){i=Object.prototype}var a=O(i);var u=se.Call(e,a,t);return se.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!se.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[J];if(fe(n)){return t}if(!se.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=se.ToString(e);var i="<"+t;if(r!==""){var a=se.ToString(n);var u=a.replace(/"/g,"&quot;");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+"</"+t+">"},IsRegExp:function IsRegExp(e){if(!se.TypeIsObject(e)){return false}var t=e[$.match];if(typeof t!=="undefined"){return!!t}return te.regex(e)},ToString:function ToString(e){return ae(e)}};if(s&&ne){var ce=function defineWellKnownSymbol(e){if(te.symbol($[e])){return $[e]}var t=$["for"]("Symbol."+e);Object.defineProperty($,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!te.symbol($.search)){var le=ce("search");var pe=String.prototype.search;h(RegExp.prototype,le,function search(e){return se.Call(pe,e,[this])});var ve=function search(e){var t=se.RequireObjectCoercible(this);if(!fe(e)){var r=se.GetMethod(e,le);if(typeof r!=="undefined"){return se.Call(r,e,[t])}}return se.Call(pe,t,[se.ToString(e)])};re(String.prototype,"search",ve)}if(!te.symbol($.replace)){var ye=ce("replace");var he=String.prototype.replace;h(RegExp.prototype,ye,function replace(e,t){return se.Call(he,e,[this,t])});var be=function replace(e,t){var r=se.RequireObjectCoercible(this);if(!fe(e)){var n=se.GetMethod(e,ye);if(typeof n!=="undefined"){return se.Call(n,e,[r,t])}}return se.Call(he,r,[se.ToString(e),t])};re(String.prototype,"replace",be)}if(!te.symbol($.split)){var ge=ce("split");var de=String.prototype.split;h(RegExp.prototype,ge,function split(e,t){return se.Call(de,e,[this,t])});var me=function split(e,t){var r=se.RequireObjectCoercible(this);if(!fe(e)){var n=se.GetMethod(e,ge);if(typeof n!=="undefined"){return se.Call(n,e,[r,t])}}return se.Call(de,r,[se.ToString(e),t])};re(String.prototype,"split",me)}var Oe=te.symbol($.match);var we=Oe&&function(){var e={};e[$.match]=function(){return 42};return"a".match(e)!==42}();if(!Oe||we){var je=ce("match");var Se=String.prototype.match;h(RegExp.prototype,je,function match(e){return se.Call(Se,e,[this])});var Te=function match(e){var t=se.RequireObjectCoercible(this);if(!fe(e)){var r=se.GetMethod(e,je);if(typeof r!=="undefined"){return se.Call(r,e,[t])}}return se.Call(Se,t,[se.ToString(e)])};re(String.prototype,"match",Te)}}var Ie=function wrapConstructor(e,t,r){m.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in W||r[n]){return}m.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in W||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;m.redefine(e.prototype,"constructor",t)};var Ee=function(){return this};var Pe=function(e){if(s&&!z(e,J)){m.getter(e,J,Ee)}};var Ce=function(e,t){var r=t||function iterator(){return this};h(e,oe,r);if(!e[oe]&&te.symbol(oe)){e[oe]=r}};var Me=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var xe=function createDataPropertyOrThrow(e,t,r){Me(e,t,r);if(!se.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var Ne=function(e,t,r,n){if(!se.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!se.TypeIsObject(o)){o=r}var i=O(o);for(var a in n){if(z(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Ae=String.fromCodePoint;re(String,"fromCodePoint",function fromCodePoint(e){return se.Call(Ae,this,arguments)})}var Re={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n<o;n++){r=Number(arguments[n]);if(!se.SameValue(r,se.ToInteger(r))||r<0||r>1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return t.join("")},raw:function raw(e){var t=se.ToObject(e,"bad callSite");var r=se.ToObject(t.raw,"bad raw value");var n=r.length;var o=se.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a<o){u=se.ToString(a);s=se.ToString(r[u]);M(i,s);if(a+1>=o){break}f=a+1<arguments.length?arguments[a+1]:"";c=se.ToString(f);M(i,c);a+=1}return i.join("")}};if(String.raw&&String.raw({raw:{0:"x",1:"y",length:2}})!=="xy"){re(String,"raw",Re.raw)}b(String,Re);var _e=function repeat(e,t){if(t<1){return""}if(t%2){return repeat(e,t-1)+e}var r=repeat(e,t/2);return r+r};var ke=Infinity;var Fe={repeat:function repeat(e){var t=se.ToString(se.RequireObjectCoercible(this));var r=se.ToInteger(e);if(r<0||r>=ke){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return _e(t,r)},startsWith:function startsWith(e){var t=se.ToString(se.RequireObjectCoercible(this));if(se.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=se.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=A(se.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=se.ToString(se.RequireObjectCoercible(this));if(se.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=se.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:se.ToInteger(o);var a=R(A(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(se.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=se.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=se.ToString(se.RequireObjectCoercible(this));var r=se.ToInteger(e);var n=t.length;if(r>=0&&r<n){var o=t.charCodeAt(r);var i=r+1===n;if(o<55296||o>56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){re(String.prototype,"includes",Fe.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var Le=i(function(){"/a/".startsWith(/a/)});var De=a(function(){return"abc".startsWith("a",Infinity)===false});if(!Le||!De){re(String.prototype,"startsWith",Fe.startsWith);re(String.prototype,"endsWith",Fe.endsWith)}}if(ne){var ze=a(function(){var e=/a/;e[$.match]=false;return"/a/".startsWith(e)});if(!ze){re(String.prototype,"startsWith",Fe.startsWith)}var qe=a(function(){var e=/a/;e[$.match]=false;return"/a/".endsWith(e)});if(!qe){re(String.prototype,"endsWith",Fe.endsWith)}var We=a(function(){var e=/a/;e[$.match]=false;return"/a/".includes(e)});if(!We){re(String.prototype,"includes",Fe.includes)}}b(String.prototype,Fe);var Ge=["\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var He=new RegExp("(^["+Ge+"]+)|(["+Ge+"]+$)","g");var Ve=function trim(){return se.ToString(se.RequireObjectCoercible(this)).replace(He,"")};var Be=["\x85","\u200b","\ufffe"].join("");var Ue=new RegExp("["+Be+"]","g");var $e=/^[-+]0x[0-9a-f]+$/i;var Je=Be.trim().length!==Be.length;h(String.prototype,"trim",Ve,Je);var Xe=function(e){return{value:e,done:arguments.length===0}};var Ke=function(e){se.RequireObjectCoercible(e);this._s=se.ToString(e);this._i=0};Ke.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Xe()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Xe(e.substr(t,o))};Ce(Ke.prototype);Ce(String.prototype,function(){return new Ke(this)});var Ze={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!se.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(ee(e)||se.GetMethod(e,oe))!=="undefined";var u,f,s;if(a){f=se.IsConstructor(r)?Object(new r):[];var c=se.GetIterator(e);var l,p;s=0;while(true){l=se.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(e){se.IteratorClose(c,true);throw e}s+=1}u=s}else{var v=se.ToObject(e);u=se.ToLength(v.length);f=se.IsConstructor(r)?Object(new r(u)):new Array(u);var y;for(s=0;s<u;++s){y=v[s];if(o){y=typeof i==="undefined"?n(y,s):t(n,i,y,s)}xe(f,s,y)}}f.length=u;return f},of:function of(){var e=arguments.length;var t=this;var n=r(t)||!se.IsCallable(t)?new Array(e):se.Construct(t,[e]);for(var o=0;o<e;++o){xe(n,o,arguments[o])}n.length=e;return n}};b(Array,Ze);Pe(Array);q=function(e,t){this.i=0;this.array=e;this.kind=t};b(q.prototype,{next:function(){var e=this.i;var t=this.array;if(!(this instanceof q)){throw new TypeError("Not an ArrayIterator")}if(typeof t!=="undefined"){var r=se.ToLength(t.length);for(;e<r;e++){var n=this.kind;var o;if(n==="key"){o=e}else if(n==="value"){o=t[e]}else if(n==="entry"){o=[e,t[e]]}this.i=e+1;return Xe(o)}}this.array=void 0;return Xe()}});Ce(q.prototype);var Ye=Array.of===Ze.of||function(){var e=function Foo(e){this.length=e};e.prototype=[];var t=Array.of.apply(e,[1,2]);return t instanceof e&&t.length===2}();if(!Ye){re(Array,"of",Ze.of)}var Qe={copyWithin:function copyWithin(e,t){var r=se.ToObject(this);var n=se.ToLength(r.length);var o=se.ToInteger(e);var i=se.ToInteger(t);var a=o<0?A(n+o,0):R(o,n);var u=i<0?A(n+i,0):R(i,n);var f;if(arguments.length>2){f=arguments[2]}var s=typeof f==="undefined"?n:se.ToInteger(f);var c=s<0?A(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u<a&&a<u+l){p=-1;u+=l-1;a+=l-1}while(l>0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=se.ToObject(this);var o=se.ToLength(n.length);t=se.ToInteger(typeof t==="undefined"?0:t);r=se.ToInteger(typeof r==="undefined"?o:r);var i=t<0?A(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u<o&&u<a;++u){n[u]=e}return n},find:function find(e){var r=se.ToObject(this);var n=se.ToLength(r.length);if(!se.IsCallable(e)){throw new TypeError("Array#find: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0,a;i<n;i++){a=r[i];if(o){if(t(e,o,a,i,r)){return a}}else if(e(a,i,r)){return a}}},findIndex:function findIndex(e){var r=se.ToObject(this);var n=se.ToLength(r.length);if(!se.IsCallable(e)){throw new TypeError("Array#findIndex: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0;i<n;i++){if(o){if(t(e,o,r[i],i,r)){return i}}else if(e(r[i],i,r)){return i}}return-1},keys:function keys(){return new q(this,"key")},values:function values(){return new q(this,"value")},entries:function entries(){return new q(this,"entry")}};if(Array.prototype.keys&&!se.IsCallable([1].keys().next)){delete Array.prototype.keys}if(Array.prototype.entries&&!se.IsCallable([1].entries().next)){delete Array.prototype.entries}if(Array.prototype.keys&&Array.prototype.entries&&!Array.prototype.values&&Array.prototype[oe]){b(Array.prototype,{values:Array.prototype[oe]});if(te.symbol($.unscopables)){Array.prototype[$.unscopables].values=true}}if(c&&Array.prototype.values&&Array.prototype.values.name!=="values"){var et=Array.prototype.values;re(Array.prototype,"values",function values(){return se.Call(et,this,arguments)});h(Array.prototype,oe,Array.prototype.values,true)}b(Array.prototype,Qe);if(1/[true].indexOf(true,-0)<0){h(Array.prototype,"indexOf",function indexOf(e){var t=E(this,arguments);if(t===0&&1/t<0){return 0}return t},true)}Ce(Array.prototype,function(){return this.values()});if(Object.getPrototypeOf){Ce(Object.getPrototypeOf([].values()))}var tt=function(){return a(function(){return Array.from({length:-1}).length===0})}();var rt=function(){var e=Array.from([0].entries());return e.length===1&&r(e[0])&&e[0][0]===0&&e[0][1]===0}();if(!tt||!rt){re(Array,"from",Ze.from)}var nt=function(){return a(function(){return Array.from([0],void 0)})}();if(!nt){var ot=Array.from;re(Array,"from",function from(e){if(arguments.length>1&&typeof arguments[1]!=="undefined"){return se.Call(ot,this,arguments)}else{return t(ot,this,e)}})}var it=-(Math.pow(2,32)-1);var at=function(e,r){var n={length:it};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!at(Array.prototype.forEach)){var ut=Array.prototype.forEach;re(Array.prototype,"forEach",function forEach(e){return se.Call(ut,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.map)){var ft=Array.prototype.map;re(Array.prototype,"map",function map(e){return se.Call(ft,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.filter)){var st=Array.prototype.filter;re(Array.prototype,"filter",function filter(e){return se.Call(st,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.some)){var ct=Array.prototype.some;re(Array.prototype,"some",function some(e){return se.Call(ct,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.every)){var lt=Array.prototype.every;re(Array.prototype,"every",function every(e){return se.Call(lt,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.reduce)){var pt=Array.prototype.reduce;re(Array.prototype,"reduce",function reduce(e){return se.Call(pt,this.length>=0?this:[],arguments)},true)}if(!at(Array.prototype.reduceRight,true)){var vt=Array.prototype.reduceRight;re(Array.prototype,"reduceRight",function reduceRight(e){return se.Call(vt,this.length>=0?this:[],arguments)},true)}var yt=Number("0o10")!==8;var ht=Number("0b10")!==2;var bt=y(Be,function(e){return Number(e+0+e)===0});if(yt||ht||bt){var gt=Number;var dt=/^0b[01]+$/i;var mt=/^0o[0-7]+$/i;var Ot=dt.test.bind(dt);var wt=mt.test.bind(mt);var jt=function(e){var t;if(typeof e.valueOf==="function"){t=e.valueOf();if(te.primitive(t)){return t}}if(typeof e.toString==="function"){t=e.toString();if(te.primitive(t)){return t}}throw new TypeError("No default value")};var St=Ue.test.bind(Ue);var Tt=$e.test.bind($e);var It=function(){var e=function Number(t){var r;if(arguments.length>0){r=te.primitive(t)?t:jt(t,"number")}else{r=0}if(typeof r==="string"){r=se.Call(Ve,r);if(Ot(r)){r=parseInt(C(r,2),2)}else if(wt(r)){r=parseInt(C(r,2),8)}else if(St(r)||Tt(r)){r=NaN}}var n=this;var o=a(function(){gt.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new gt(r)}return gt(r)};return e}();Ie(gt,It,{});b(It,{NaN:gt.NaN,MAX_VALUE:gt.MAX_VALUE,MIN_VALUE:gt.MIN_VALUE,NEGATIVE_INFINITY:gt.NEGATIVE_INFINITY,POSITIVE_INFINITY:gt.POSITIVE_INFINITY});Number=It;m.redefine(S,"Number",It)}var Et=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Et,MIN_SAFE_INTEGER:-Et,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:K,isInteger:function isInteger(e){return K(e)&&se.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&k(e)<=Number.MAX_SAFE_INTEGER},isNaN:X});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if([,1].find(function(){return true})===1){re(Array.prototype,"find",Qe.find)}if([,1].findIndex(function(){return true})!==0){re(Array.prototype,"findIndex",Qe.findIndex)}var Pt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var Ct=function ensureEnumerable(e,t){if(s&&Pt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var Mt=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o<t;++o){n[o-e]=arguments[o]}return n};var xt=function assignTo(e){return function assignToSource(t,r){t[r]=e[r];return t}};var Nt=function(e,t){var r=n(Object(t));var o;if(se.IsCallable(Object.getOwnPropertySymbols)){o=v(Object.getOwnPropertySymbols(Object(t)),Pt(t))}return p(P(r,o||[]),xt(t),e)};var At={assign:function(e,t){var r=se.ToObject(e,"Cannot convert undefined or null to object");return p(se.Call(Mt,1,arguments),Nt,r)},is:function is(e,t){return se.SameValue(e,t)}};var Rt=Object.assign&&Object.preventExtensions&&function(){var e=Object.preventExtensions({1:2});try{Object.assign(e,"xy")}catch(t){return e[1]==="y"}}();if(Rt){re(Object,"assign",At.assign)}b(Object,At);if(s){var _t={setPrototypeOf:function(e,r){var n;var o=function(e,t){if(!se.TypeIsObject(e)){throw new TypeError("cannot set prototype on a non-object")}if(!(t===null||se.TypeIsObject(t))){throw new TypeError("can only set prototype to an object or null"+t)}};var i=function(e,r){o(e,r);t(n,e,r);return e};try{n=e.getOwnPropertyDescriptor(e.prototype,r).set;t(n,{},null)}catch(t){if(e.prototype!=={}[r]){return}n=function(e){this[r]=e};i.polyfill=i(i({},null),e.prototype)instanceof e}return i}(Object,"__proto__")};b(Object,_t)}if(Object.setPrototypeOf&&Object.getPrototypeOf&&Object.getPrototypeOf(Object.setPrototypeOf({},null))!==null&&Object.getPrototypeOf(Object.create(null))===null){(function(){var e=Object.create(null);var t=Object.getPrototypeOf;var r=Object.setPrototypeOf;Object.getPrototypeOf=function(r){var n=t(r);return n===e?null:n};Object.setPrototypeOf=function(t,n){var o=n===null?e:n;return r(t,o)};Object.setPrototypeOf.polyfill=false})()}var kt=!i(function(){Object.keys("foo")});if(!kt){var Ft=Object.keys;re(Object,"keys",function keys(e){return Ft(se.ToObject(e))});n=Object.keys}var Lt=i(function(){Object.keys(/a/g)});if(Lt){var Dt=Object.keys;re(Object,"keys",function keys(e){if(te.regex(e)){var t=[];for(var r in e){if(z(e,r)){M(t,r)}}return t}return Dt(e)});n=Object.keys}if(Object.getOwnPropertyNames){var zt=!i(function(){Object.getOwnPropertyNames("foo")});if(!zt){var qt=typeof window==="object"?Object.getOwnPropertyNames(window):[];var Wt=Object.getOwnPropertyNames;re(Object,"getOwnPropertyNames",function getOwnPropertyNames(e){var t=se.ToObject(e);if(g(t)==="[object Window]"){try{return Wt(t)}catch(e){return P([],qt)}}return Wt(t)})}}if(Object.getOwnPropertyDescriptor){var Gt=!i(function(){Object.getOwnPropertyDescriptor("foo","bar")});if(!Gt){var Ht=Object.getOwnPropertyDescriptor;re(Object,"getOwnPropertyDescriptor",function getOwnPropertyDescriptor(e,t){return Ht(se.ToObject(e),t)})}}if(Object.seal){var Vt=!i(function(){Object.seal("foo")});if(!Vt){var Bt=Object.seal;re(Object,"seal",function seal(e){if(!se.TypeIsObject(e)){return e}return Bt(e)})}}if(Object.isSealed){var Ut=!i(function(){Object.isSealed("foo")});if(!Ut){var $t=Object.isSealed;re(Object,"isSealed",function isSealed(e){if(!se.TypeIsObject(e)){return true}return $t(e)})}}if(Object.freeze){var Jt=!i(function(){Object.freeze("foo")});if(!Jt){var Xt=Object.freeze;re(Object,"freeze",function freeze(e){if(!se.TypeIsObject(e)){return e}return Xt(e)})}}if(Object.isFrozen){var Kt=!i(function(){Object.isFrozen("foo")});if(!Kt){var Zt=Object.isFrozen;re(Object,"isFrozen",function isFrozen(e){if(!se.TypeIsObject(e)){return true}return Zt(e)})}}if(Object.preventExtensions){var Yt=!i(function(){Object.preventExtensions("foo")});if(!Yt){var Qt=Object.preventExtensions;re(Object,"preventExtensions",function preventExtensions(e){if(!se.TypeIsObject(e)){return e}return Qt(e)})}}if(Object.isExtensible){var er=!i(function(){Object.isExtensible("foo")});if(!er){var tr=Object.isExtensible;re(Object,"isExtensible",function isExtensible(e){if(!se.TypeIsObject(e)){return false}return tr(e)})}}if(Object.getPrototypeOf){var rr=!i(function(){Object.getPrototypeOf("foo")});if(!rr){var nr=Object.getPrototypeOf;re(Object,"getPrototypeOf",function getPrototypeOf(e){return nr(se.ToObject(e))})}}var or=s&&function(){var e=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags");return e&&se.IsCallable(e.get)}();if(s&&!or){var ir=function flags(){if(!se.TypeIsObject(this)){throw new TypeError("Method called on incompatible type: must be an object.")}var e="";if(this.global){e+="g"}if(this.ignoreCase){e+="i"}if(this.multiline){e+="m"}if(this.unicode){e+="u"}if(this.sticky){e+="y"}return e};m.getter(RegExp.prototype,"flags",ir)}var ar=s&&a(function(){return String(new RegExp(/a/g,"i"))==="/a/i"});var ur=ne&&s&&function(){var e=/./;e[$.match]=false;return RegExp(e)===e}();var fr=a(function(){return RegExp.prototype.toString.call({source:"abc"})==="/abc/"});var sr=fr&&a(function(){return RegExp.prototype.toString.call({source:"a",flags:"b"})==="/a/b"});if(!fr||!sr){var cr=RegExp.prototype.toString;h(RegExp.prototype,"toString",function toString(){var e=se.RequireObjectCoercible(this);if(te.regex(e)){return t(cr,e)}var r=ae(e.source);var n=ae(e.flags);return"/"+r+"/"+n},true);m.preserveToString(RegExp.prototype.toString,cr)}if(s&&(!ar||ur)){var lr=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags").get;var pr=Object.getOwnPropertyDescriptor(RegExp.prototype,"source")||{};var vr=function(){return this.source};var yr=se.IsCallable(pr.get)?pr.get:vr;var hr=RegExp;var br=function(){return function RegExp(e,t){var r=se.IsRegExp(e);var n=this instanceof RegExp;if(!n&&r&&typeof t==="undefined"&&e.constructor===RegExp){return e}var o=e;var i=t;if(te.regex(e)){o=se.Call(yr,e);i=typeof t==="undefined"?se.Call(lr,e):t;return new RegExp(o,i)}else if(r){o=e.source;i=typeof t==="undefined"?e.flags:t}return new hr(e,t)}}();Ie(hr,br,{$input:true});RegExp=br;m.redefine(S,"RegExp",br)}if(s){var gr={input:"$_",lastMatch:"$&",lastParen:"$+",leftContext:"$`",rightContext:"$'"};l(n(gr),function(e){if(e in RegExp&&!(gr[e]in RegExp)){m.getter(RegExp,gr[e],function get(){return RegExp[e]})}})}Pe(RegExp);var dr=1/Number.EPSILON;var mr=function roundTiesToEven(e){return e+dr-dr};var Or=Math.pow(2,-23);var wr=Math.pow(2,127)*(2-Or);var jr=Math.pow(2,-126);var Sr=Math.E;var Tr=Math.LOG2E;var Ir=Math.LOG10E;var Er=Number.prototype.clz;delete Number.prototype.clz;var Pr={acosh:function acosh(e){var t=Number(e);if(X(t)||e<1){return NaN}if(t===1){return 0}if(t===Infinity){return t}return L(t/Sr+D(t+1)*D(t-1)/Sr)+1},asinh:function asinh(e){var t=Number(e);if(t===0||!T(t)){return t}return t<0?-asinh(-t):L(t+D(t*t+1))},atanh:function atanh(e){var t=Number(e);if(X(t)||t<-1||t>1){return NaN}if(t===-1){return-Infinity}if(t===1){return Infinity}if(t===0){return t}return.5*L((1+t)/(1-t))},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(L(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=se.ToUint32(t);if(r===0){return 32}return Er?se.Call(Er,r):31-_(L(r+.5)*Tr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(X(t)){return NaN}if(!T(t)){return Infinity}if(t<0){t=-t}if(t>21){return F(t)/2}return(F(t)+F(-t))/2},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(k(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o<arguments.length;++o){var i=k(Number(arguments[o]));if(n<i){r*=n/i*(n/i);r+=1;n=i}else{r+=i>0?i/n*(i/n):i}}return n===Infinity?Infinity:n*D(r)},log2:function log2(e){return L(e)*Tr},log10:function log10(e){return L(e)*Ir},log1p:function log1p(e){var t=Number(e);if(t<-1||X(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(L(1+t)/(1+t-1))},sign:Z,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}if(k(t)<1){return(Math.expm1(t)-Math.expm1(-t))/2}return(F(t-1)-F(-t-1))*Sr/2},tanh:function tanh(e){var t=Number(e);if(X(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-_(-t):_(t)},imul:function imul(e,t){var r=se.ToUint32(e);var n=se.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||X(t)){return t}var r=Z(t);var n=k(t);if(n<jr){return r*mr(n/jr/Or)*jr*Or}var o=(1+Or/Number.EPSILON)*n;var i=o-(o-n);if(i>wr||X(i)){return r*Infinity}return r*i}};b(Math,Pr);h(Math,"log1p",Pr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",Pr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7));h(Math,"tanh",Pr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",Pr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"cbrt",Pr.cbrt,Math.abs(1-Math.cbrt(1e-300)/1e-100)/Number.EPSILON>8);h(Math,"sinh",Pr.sinh,Math.sinh(-2e-17)!==-2e-17);var Cr=Math.expm1(10);h(Math,"expm1",Pr.expm1,Cr>22025.465794806718||Cr<22025.465794806718);var Mr=Math.round;var xr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var Nr=dr+1;var Ar=2*dr-1;var Rr=[Nr,Ar].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=_(e);var r=t===-1?-0:t+1;
+return e-t<.5?t:r},!xr||!Rr);m.preserveToString(Math.round,Mr);var _r=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=Pr.imul;m.preserveToString(Math.imul,_r)}if(Math.imul.length!==2){re(Math,"imul",function imul(e,t){return se.Call(_r,Math,arguments)})}var kr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}se.IsPromise=function(e){if(!se.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!se.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(se.IsCallable(t.resolve)&&se.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&se.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=N(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=se.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(se.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(e){n=e;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+l],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=s;r.reactionLength=0};var m=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+p],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=c;r.reactionLength=0};var O=function(e){var t=false;var r=function(r){var n;if(t){return}t=true;if(r===e){return m(e,new TypeError("Self resolution"))}if(!se.TypeIsObject(r)){return d(e,r)}try{n=r.then}catch(t){return m(e,t)}if(!se.IsCallable(n)){return d(e,r)}i(function(){j(e,r,n)})};var n=function(r){if(t){return}t=true;return m(e,r)};return{resolve:r,reject:n}};var w=function(e,r,n,o){if(e===I){t(e,r,n,o,y)}else{t(e,r,n,o)}};var j=function(e,t,r){var n=O(e);var o=n.resolve;var i=n.reject;try{w(r,t,o,i)}catch(e){i(e)}};var T,I;var E=function(){var e=function Promise(t){if(!(this instanceof e)){throw new TypeError('Constructor Promise requires "new"')}if(this&&this._promise){throw new TypeError("Bad construction")}if(!se.IsCallable(t)){throw new TypeError("not a valid resolver")}var r=Ne(this,e,T,{_promise:{result:void 0,state:f,reactionLength:0,fulfillReactionHandler0:void 0,rejectReactionHandler0:void 0,reactionCapability0:void 0}});var n=O(r);var o=n.reject;try{t(n.resolve,o)}catch(e){o(e)}return r};return e}();T=E.prototype;var P=function(e,t,r,n){var o=false;return function(i){if(o){return}o=true;t[e]=i;if(--n.count===0){var a=r.resolve;a(t)}}};var C=function(e,t,r){var n=e.iterator;var o=[];var i={count:1};var a,u;var f=0;while(true){try{a=se.IteratorStep(n);if(a===false){e.done=true;break}u=a.value}catch(t){e.done=true;throw t}o[f]=void 0;var s=t.resolve(u);var c=P(f,o,r,i);i.count+=1;w(s.then,s,c,r.reject);f+=1}if(--i.count===0){var l=r.resolve;l(o)}return r.promise};var x=function(e,t,r){var n=e.iterator;var o,i,a;while(true){try{o=se.IteratorStep(n);if(o===false){e.done=true;break}i=o.value}catch(t){e.done=true;throw t}a=t.resolve(i);w(a.then,a,r.resolve,r.reject)}return r.promise};b(E,{all:function all(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=se.GetIterator(e);i={iterator:o,done:false};return C(i,t,n)}catch(e){var a=e;if(i&&!i.done){try{se.IteratorClose(o,true)}catch(e){a=e}}var u=n.reject;u(a);return n.promise}},race:function race(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=se.GetIterator(e);i={iterator:o,done:false};return x(i,t,n)}catch(e){var a=e;if(i&&!i.done){try{se.IteratorClose(o,true)}catch(e){a=e}}var u=n.reject;u(a);return n.promise}},reject:function reject(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}var n=new r(t);var o=n.reject;o(e);return n.promise},resolve:function resolve(e){var t=this;if(!se.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}if(se.IsPromise(e)){var n=e.constructor;if(n===t){return e}}var o=new r(t);var i=o.resolve;i(e);return o.promise}});b(T,{catch:function(e){return this.then(null,e)},then:function then(e,t){var n=this;if(!se.IsPromise(n)){throw new TypeError("not a promise")}var o=se.SpeciesConstructor(n,E);var i;var b=arguments.length>2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=se.IsCallable(e)?e:a;var d=se.IsCallable(t)?t:u;var m=n._promise;var O;if(m.state===f){if(m.reactionLength===0){m.fulfillReactionHandler0=g;m.rejectReactionHandler0=d;m.reactionCapability0=i}else{var w=3*(m.reactionLength-1);m[w+l]=g;m[w+p]=d;m[w+v]=i}m.reactionLength+=1}else if(m.state===s){O=m.result;h(g,i,O)}else if(m.state===c){O=m.result;h(d,i,O)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof kr==="function"){b(S,{Promise:kr});var Fr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var Lr=!i(function(){S.Promise.reject(42).then(null,5).then(null,W)});var Dr=i(function(){S.Promise.call(3,W)});var zr=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,W).then(null,W)}catch(e){return true}return t===r}(S.Promise);var qr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var Wr=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};Wr.prototype=Promise.prototype;Wr.all=Promise.all;var Gr=a(function(){return!!Wr.all([1,2])});if(!Fr||!Lr||!Dr||zr||!qr||Gr){Promise=kr;re(S,"Promise",kr)}if(Promise.all.length!==1){var Hr=Promise.all;re(Promise,"all",function all(e){return se.Call(Hr,this,arguments)})}if(Promise.race.length!==1){var Vr=Promise.race;re(Promise,"race",function race(e){return se.Call(Vr,this,arguments)})}if(Promise.resolve.length!==1){var Br=Promise.resolve;re(Promise,"resolve",function resolve(e){return se.Call(Br,this,arguments)})}if(Promise.reject.length!==1){var Ur=Promise.reject;re(Promise,"reject",function reject(e){return se.Call(Ur,this,arguments)})}Ct(Promise,"all");Ct(Promise,"race");Ct(Promise,"resolve");Ct(Promise,"reject");Pe(Promise)}var $r=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Jr=$r(["z","a","bb"]);var Xr=$r(["z",1,"a","3",2]);if(s){var Kr=function fastkey(e,t){if(!t&&!Jr){return null}if(fe(e)){return"^"+se.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Xr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var Zr=function emptyObject(){return Object.create?Object.create(null):{}};var Yr=function addIterableToMap(e,n,o){if(r(o)||te.string(o)){l(o,function(e){if(!se.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(!fe(o)){a=n.set;if(!se.IsCallable(a)){throw new TypeError("bad map")}i=se.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=se.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!se.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(e){se.IteratorClose(i,true);throw e}}}}};var Qr=function addIterableToSet(e,n,o){if(r(o)||te.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(!fe(o)){a=n.add;if(!se.IsCallable(a)){throw new TypeError("bad set")}i=se.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=se.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(e){se.IteratorClose(i,true);throw e}}}}};var en={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!se.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+se.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");this.head=e._head;this.i=this.head;this.kind=t};i.prototype={next:function next(){var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Xe()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Xe(n)}}this.i=void 0;return Xe()}};Ce(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=Ne(this,Map,a,{_es6map:true,_head:null,_map:G?new G:null,_size:0,_storage:Zr()});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){Yr(Map,e,arguments[0])}return e};a=u.prototype;m.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t;var r=Kr(e,true);if(r!==null){t=this._storage[r];if(t){return t.value}else{return}}if(this._map){t=V.call(this._map,e);if(t){return t.value}else{return}}var n=this._head;var i=n;while((i=i.next)!==n){if(se.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=Kr(e,true);if(t!==null){return typeof this._storage[t]!=="undefined"}if(this._map){return B.call(this._map,e)}var r=this._head;var n=r;while((n=n.next)!==r){if(se.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=Kr(e,true);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}else{a=this._storage[u]=new r(e,t);i=n.prev}}else if(this._map){if(B.call(this._map,e)){V.call(this._map,e).value=t}else{a=new r(e,t);U.call(this._map,e,a);i=n.prev}}while((i=i.next)!==n){if(se.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(se.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},delete:function(t){o(this,"delete");var r=this._head;var n=r;var i=Kr(t,true);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}else if(this._map){if(!B.call(this._map,t)){return false}n=V.call(this._map,t).prev;H.call(this._map,t)}while((n=n.next)!==r){if(se.SameValueZero(n.key,t)){n.key=e;n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._map=G?new G:null;this._size=0;this._storage=Zr();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=e;r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});Ce(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!se.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+se.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=Ne(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:Zr()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){Qr(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}else{var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=new en.Map;e["[[SetData]]"]=t;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};m.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=Kr(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=Kr(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},delete:function(e){r(this,"delete");var t;if(this._storage&&(t=Kr(e))!==null){var n=z(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=Zr()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return this["[[SetData]]"].values()},entries:function entries(){r(this,"entries");u(this);return this["[[SetData]]"].entries()},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);Ce(i.prototype,i.prototype.values);return i}()};if(S.Map||S.Set){var tn=a(function(){return new Map([[1,2]]).get(1)===2});if(!tn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new G;if(arguments.length>0){Yr(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=O(G.prototype);h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,G)}var rn=new Map;var nn=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var on=rn.set(1,2)===rn;if(!nn||!on){re(Map.prototype,"set",function set(e,r){t(U,this,e===0?0:e,r);return this})}if(!nn){b(Map.prototype,{get:function get(e){return t(V,this,e===0?0:e)},has:function has(e){return t(B,this,e===0?0:e)}},true);m.preserveToString(Map.prototype.get,V);m.preserveToString(Map.prototype.has,B)}var an=new Set;var un=function(e){e["delete"](0);e.add(-0);return!e.has(0)}(an);var fn=an.add(1)===an;if(!un||!fn){var sn=Set.prototype.add;Set.prototype.add=function add(e){t(sn,this,e===0?0:e);return this};m.preserveToString(Set.prototype.add,sn)}if(!un){var cn=Set.prototype.has;Set.prototype.has=function has(e){return t(cn,this,e===0?0:e)};m.preserveToString(Set.prototype.has,cn);var ln=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(ln,this,e===0?0:e)};m.preserveToString(Set.prototype["delete"],ln)}var pn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var vn=Object.setPrototypeOf&&!pn;var yn=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||vn||!yn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new G;if(arguments.length>0){Yr(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=G.prototype;h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,G)}var hn=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var bn=Object.setPrototypeOf&&!hn;var gn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||bn||!gn){var dn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new dn;if(arguments.length>0){Qr(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=dn.prototype;h(S.Set.prototype,"constructor",S.Set,true);m.preserveToString(S.Set,dn)}var mn=new S.Map;var On=!a(function(){return mn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||mn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof mn.keys().next!=="function"||On||!pn){b(S,{Map:en.Map,Set:en.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}Ce(Object.getPrototypeOf((new S.Map).keys()));Ce(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var wn=S.Set.prototype.has;re(S.Set.prototype,"has",function has(e){return t(wn,this,e)})}}b(S,en);Pe(S.Map);Pe(S.Set)}var jn=function throwUnlessTargetIsObject(e){if(!se.TypeIsObject(e)){throw new TypeError("target must be an object")}};var Sn={apply:function apply(){return se.Call(se.Call,null,arguments)},construct:function construct(e,t){if(!se.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!se.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return se.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){jn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){jn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(Sn,{ownKeys:function ownKeys(e){jn(e);var t=Object.getOwnPropertyNames(e);if(se.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var Tn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(Sn,{isExtensible:function isExtensible(e){jn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){jn(e);return Tn(function(){Object.preventExtensions(e)})}})}if(s){var In=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return In(o,t,r)}if("value"in n){return n.value}if(n.get){return se.Call(n.get,r)}return void 0};var En=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return En(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!se.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ie.defineProperty(o,r,{value:n})}else{return ie.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}}if(i.set){t(i.set,o,n);return true}return false};Object.assign(Sn,{defineProperty:function defineProperty(e,t,r){jn(e);return Tn(function(){Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){jn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){jn(e);var r=arguments.length>2?arguments[2]:e;return In(e,t,r)},set:function set(e,t,r){jn(e);var n=arguments.length>3?arguments[3]:e;return En(e,t,r,n)}})}if(Object.getPrototypeOf){var Pn=Object.getPrototypeOf;Sn.getPrototypeOf=function getPrototypeOf(e){jn(e);return Pn(e)}}if(Object.setPrototypeOf&&Sn.getPrototypeOf){var Cn=function(e,t){var r=t;while(r){if(e===r){return true}r=Sn.getPrototypeOf(r)}return false};Object.assign(Sn,{setPrototypeOf:function setPrototypeOf(e,t){jn(e);if(t!==null&&!se.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ie.getPrototypeOf(e)){return true}if(ie.isExtensible&&!ie.isExtensible(e)){return false}if(Cn(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Mn=function(e,t){if(!se.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){re(S.Reflect,e,t)}}};Object.keys(Sn).forEach(function(e){Mn(e,Sn[e])});var xn=S.Reflect.getPrototypeOf;if(c&&xn&&xn.name!=="getPrototypeOf"){re(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(xn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){re(S.Reflect,"setPrototypeOf",Sn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){re(S.Reflect,"defineProperty",Sn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){re(S.Reflect,"construct",Sn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Nn=Date.prototype.toString;var An=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return se.Call(Nn,this)};re(Date.prototype,"toString",An)}var Rn={anchor:function anchor(e){return se.CreateHTML(this,"a","name",e)},big:function big(){return se.CreateHTML(this,"big","","")},blink:function blink(){return se.CreateHTML(this,"blink","","")},bold:function bold(){return se.CreateHTML(this,"b","","")},fixed:function fixed(){return se.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return se.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return se.CreateHTML(this,"font","size",e)},italics:function italics(){return se.CreateHTML(this,"i","","")},link:function link(e){return se.CreateHTML(this,"a","href",e)},small:function small(){return se.CreateHTML(this,"small","","")},strike:function strike(){return se.CreateHTML(this,"strike","","")},sub:function sub(){return se.CreateHTML(this,"sub","","")},sup:function sub(){return se.CreateHTML(this,"sup","","")}};l(Object.keys(Rn),function(e){var r=String.prototype[e];var n=false;if(se.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){re(String.prototype,e,Rn[e])}});var _n=function(){if(!ne){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e($())!=="undefined"){return true}if(e([$()])!=="[null]"){return true}var t={a:$()};t[$()]=true;if(e(t)!=="{}"){return true}return false}();var kn=a(function(){if(!ne){return true}return JSON.stringify(Object($()))==="{}"&&JSON.stringify([Object($())])==="[{}]"});if(_n||!kn){var Fn=JSON.stringify;re(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=se.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(te.symbol(n)){return xt({})(n)}else{return n}}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return Fn.apply(this,o)})}return S});
+//# sourceMappingURL=es6-shim.map
+/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
+a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)),
+void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
+/*
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
+/*!
+ * imagesLoaded PACKAGED v4.1.0
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}(this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||[];return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var r=this._onceEvents&&this._onceEvents[t];o;){var s=r&&r[o];s&&(this.off(t,o),delete r[o]),o.apply(this,e),n+=s?0:1,o=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){var e=[];if(Array.isArray(t))e=t;else if("number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e}function o(t,e,r){return this instanceof o?("string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=n(t),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(function(){this.check()}.bind(this))):new o(t,e,r)}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var h=t.jQuery,a=t.console;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&d[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=t.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var d={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,t),n=i.exec(e.backgroundImage)}},o.prototype.addImage=function(t){var e=new r(t);this.images.push(e)},o.prototype.addBackground=function(t,e){var i=new s(t,e);this.images.push(i)},o.prototype.check=function(){function t(t,i,n){setTimeout(function(){e.progress(t,i,n)})}var e=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(e){e.once("progress",t),e.check()}):void this.complete()},o.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,t,e)},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},r.prototype=Object.create(e.prototype),r.prototype.check=function(){var t=this.getIsImageComplete();return t?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},r.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},r.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var t=this.getIsImageComplete();t&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},o.makeJQueryPlugin=function(e){e=e||t.jQuery,e&&(h=e,h.fn.imagesLoaded=function(t,e){var i=new o(this,t,e);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o});
+/*! lz-string-1.3.3-min.js | (c) 2013 Pieroxy | Licensed under a WTFPL license */
+var LZString={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_f:String.fromCharCode,compressToBase64:function(e){if(e==null)return"";var t="";var n,r,i,s,o,u,a;var f=0;e=LZString.compress(e);while(f<e.length*2){if(f%2==0){n=e.charCodeAt(f/2)>>8;r=e.charCodeAt(f/2)&255;if(f/2+1<e.length)i=e.charCodeAt(f/2+1)>>8;else i=NaN}else{n=e.charCodeAt((f-1)/2)&255;if((f+1)/2<e.length){r=e.charCodeAt((f+1)/2)>>8;i=e.charCodeAt((f+1)/2)&255}else r=i=NaN}f+=3;s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+LZString._keyStr.charAt(s)+LZString._keyStr.charAt(o)+LZString._keyStr.charAt(u)+LZString._keyStr.charAt(a)}return t},decompressFromBase64:function(e){if(e==null)return"";var t="",n=0,r,i,s,o,u,a,f,l,c=0,h=LZString._f;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(c<e.length){u=LZString._keyStr.indexOf(e.charAt(c++));a=LZString._keyStr.indexOf(e.charAt(c++));f=LZString._keyStr.indexOf(e.charAt(c++));l=LZString._keyStr.indexOf(e.charAt(c++));i=u<<2|a>>4;s=(a&15)<<4|f>>2;o=(f&3)<<6|l;if(n%2==0){r=i<<8;if(f!=64){t+=h(r|s)}if(l!=64){r=o<<8}}else{t=t+h(r|i);if(f!=64){r=s<<8}if(l!=64){t+=h(r|o)}}n+=3}return LZString.decompress(t)},compressToUTF16:function(e){if(e==null)return"";var t="",n,r,i,s=0,o=LZString._f;e=LZString.compress(e);for(n=0;n<e.length;n++){r=e.charCodeAt(n);switch(s++){case 0:t+=o((r>>1)+32);i=(r&1)<<14;break;case 1:t+=o(i+(r>>2)+32);i=(r&3)<<13;break;case 2:t+=o(i+(r>>3)+32);i=(r&7)<<12;break;case 3:t+=o(i+(r>>4)+32);i=(r&15)<<11;break;case 4:t+=o(i+(r>>5)+32);i=(r&31)<<10;break;case 5:t+=o(i+(r>>6)+32);i=(r&63)<<9;break;case 6:t+=o(i+(r>>7)+32);i=(r&127)<<8;break;case 7:t+=o(i+(r>>8)+32);i=(r&255)<<7;break;case 8:t+=o(i+(r>>9)+32);i=(r&511)<<6;break;case 9:t+=o(i+(r>>10)+32);i=(r&1023)<<5;break;case 10:t+=o(i+(r>>11)+32);i=(r&2047)<<4;break;case 11:t+=o(i+(r>>12)+32);i=(r&4095)<<3;break;case 12:t+=o(i+(r>>13)+32);i=(r&8191)<<2;break;case 13:t+=o(i+(r>>14)+32);i=(r&16383)<<1;break;case 14:t+=o(i+(r>>15)+32,(r&32767)+32);s=0;break}}return t+o(i+32)},decompressFromUTF16:function(e){if(e==null)return"";var t="",n,r,i=0,s=0,o=LZString._f;while(s<e.length){r=e.charCodeAt(s)-32;switch(i++){case 0:n=r<<1;break;case 1:t+=o(n|r>>14);n=(r&16383)<<2;break;case 2:t+=o(n|r>>13);n=(r&8191)<<3;break;case 3:t+=o(n|r>>12);n=(r&4095)<<4;break;case 4:t+=o(n|r>>11);n=(r&2047)<<5;break;case 5:t+=o(n|r>>10);n=(r&1023)<<6;break;case 6:t+=o(n|r>>9);n=(r&511)<<7;break;case 7:t+=o(n|r>>8);n=(r&255)<<8;break;case 8:t+=o(n|r>>7);n=(r&127)<<9;break;case 9:t+=o(n|r>>6);n=(r&63)<<10;break;case 10:t+=o(n|r>>5);n=(r&31)<<11;break;case 11:t+=o(n|r>>4);n=(r&15)<<12;break;case 12:t+=o(n|r>>3);n=(r&7)<<13;break;case 13:t+=o(n|r>>2);n=(r&3)<<14;break;case 14:t+=o(n|r>>1);n=(r&1)<<15;break;case 15:t+=o(n|r);i=0;break}s++}return LZString.decompress(t)},compress:function(e){if(e==null)return"";var t,n,r={},i={},s="",o="",u="",a=2,f=3,l=2,c="",h=0,p=0,d,v=LZString._f;for(d=0;d<e.length;d+=1){s=e.charAt(d);if(!Object.prototype.hasOwnProperty.call(r,s)){r[s]=f++;i[s]=true}o=u+s;if(Object.prototype.hasOwnProperty.call(r,o)){u=o}else{if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(t=0;t<l;t++){h=h<<1;if(p==15){p=0;c+=v(h);h=0}else{p++}}n=u.charCodeAt(0);for(t=0;t<8;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}else{n=1;for(t=0;t<l;t++){h=h<<1|n;if(p==15){p=0;c+=v(h);h=0}else{p++}n=0}n=u.charCodeAt(0);for(t=0;t<16;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}delete i[u]}else{n=r[u];for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}r[o]=f++;u=String(s)}}if(u!==""){if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(t=0;t<l;t++){h=h<<1;if(p==15){p=0;c+=v(h);h=0}else{p++}}n=u.charCodeAt(0);for(t=0;t<8;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}else{n=1;for(t=0;t<l;t++){h=h<<1|n;if(p==15){p=0;c+=v(h);h=0}else{p++}n=0}n=u.charCodeAt(0);for(t=0;t<16;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}delete i[u]}else{n=r[u];for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}}a--;if(a==0){a=Math.pow(2,l);l++}}n=2;for(t=0;t<l;t++){h=h<<1|n&1;if(p==15){p=0;c+=v(h);h=0}else{p++}n=n>>1}while(true){h=h<<1;if(p==15){c+=v(h);break}else p++}return c},decompress:function(e){if(e==null)return"";if(e=="")return null;var t=[],n,r=4,i=4,s=3,o="",u="",a,f,l,c,h,p,d,v=LZString._f,m={string:e,val:e.charCodeAt(0),position:32768,index:1};for(a=0;a<3;a+=1){t[a]=a}l=0;h=Math.pow(2,2);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}switch(n=l){case 0:l=0;h=Math.pow(2,8);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}d=v(l);break;case 1:l=0;h=Math.pow(2,16);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}d=v(l);break;case 2:return""}t[3]=d;f=u=d;while(true){if(m.index>m.string.length){return""}l=0;h=Math.pow(2,s);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}switch(d=l){case 0:l=0;h=Math.pow(2,8);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}t[i++]=v(l);d=i-1;r--;break;case 1:l=0;h=Math.pow(2,16);p=1;while(p!=h){c=m.val&m.position;m.position>>=1;if(m.position==0){m.position=32768;m.val=m.string.charCodeAt(m.index++)}l|=(c>0?1:0)*p;p<<=1}t[i++]=v(l);d=i-1;r--;break;case 2:return u}if(r==0){r=Math.pow(2,s);s++}if(t[d]){o=t[d]}else{if(d===i){o=f+f.charAt(0)}else{return null}}u+=o;t[i++]=f+o.charAt(0);r--;f=o;if(r==0){r=Math.pow(2,s);s++}}}};if(typeof module!=="undefined"&&module!=null){module.exports=LZString}
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||function(e){"use strict";var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=e.URL||e.webkitURL||e,i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),s="download"in i,o=function(n){var r=t.createEvent("MouseEvents");r.initMouseEvent("click",true,false,e,0,0,0,0,0,false,false,false,false,0,null);n.dispatchEvent(r)},u=e.webkitRequestFileSystem,a=e.requestFileSystem||u||e.mozRequestFileSystem,f=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},l="application/octet-stream",c=0,h=[],p=function(){var e=h.length;while(e--){var t=h[e];if(typeof t==="string"){r.revokeObjectURL(t)}else{t.remove()}}h.length=0},d=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var i=e["on"+t[r]];if(typeof i==="function"){try{i.call(e,n||e)}catch(s){f(s)}}}},v=function(t,r){var f=this,p=t.type,v=false,m,g,y=function(){var e=n().createObjectURL(t);h.push(e);return e},b=function(){d(f,"writestart progress write writeend".split(" "))},w=function(){if(v||!m){m=y(t)}if(g){g.location.href=m}else{window.open(m,"_blank")}f.readyState=f.DONE;b()},E=function(e){return function(){if(f.readyState!==f.DONE){return e.apply(this,arguments)}}},S={create:true,exclusive:false},x;f.readyState=f.INIT;if(!r){r="download"}if(s){m=y(t);i.href=m;i.download=r;o(i);f.readyState=f.DONE;b();return}if(e.chrome&&p&&p!==l){x=t.slice||t.webkitSlice;t=x.call(t,0,t.size,l);v=true}if(u&&r!=="download"){r+=".download"}if(p===l||u){g=e}if(!a){w();return}c+=t.size;a(e.TEMPORARY,c,E(function(e){e.root.getDirectory("saved",S,E(function(e){var n=function(){e.getFile(r,S,E(function(e){e.createWriter(E(function(n){n.onwriteend=function(t){g.location.href=e.toURL();h.push(e);f.readyState=f.DONE;d(f,"writeend",t)};n.onerror=function(){var e=n.error;if(e.code!==e.ABORT_ERR){w()}};"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=f["on"+e]});n.write(t);f.abort=function(){n.abort();f.readyState=f.DONE};f.readyState=f.WRITING}),w)}),w)};e.getFile(r,{create:false},E(function(e){e.remove();n()}),E(function(e){if(e.code===e.NOT_FOUND_ERR){n()}else{w()}}))}),w)}),w)},m=v.prototype,g=function(e,t){return new v(e,t)};m.abort=function(){var e=this;e.readyState=e.DONE;d(e,"abort")};m.readyState=m.INIT=0;m.WRITING=1;m.DONE=2;m.error=m.onwritestart=m.onprogress=m.onwrite=m.onabort=m.onerror=m.onwriteend=null;e.addEventListener("unload",p,false);return g}(self)
+/*! seedrandom.js v2.3.3 | (c) 2013 David Bau, all rights reserved. | Licensed under a BSD-style license */
+!function(a,b,c,d,e,f,g,h,i){function j(a){var b,c=a.length,e=this,f=0,g=e.i=e.j=0,h=e.S=[];for(c||(a=[c++]);d>f;)h[f]=f++;for(f=0;d>f;f++)h[f]=h[g=r&g+a[f%c]+(b=h[f])],h[g]=b;(e.g=function(a){for(var b,c=0,f=e.i,g=e.j,h=e.S;a--;)b=h[f=r&f+1],c=c*d+h[r&(h[f]=h[g=r&g+b])+(h[g]=b)];return e.i=f,e.j=g,c})(d)}function k(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(k(a[c],b-1))}catch(f){}return d.length?d:"string"==e?a:a+"\0"}function l(a,b){for(var c,d=a+"",e=0;e<d.length;)b[r&e]=r&(c^=19*b[r&e])+d.charCodeAt(e++);return n(b)}function m(c){try{return a.crypto.getRandomValues(c=new Uint8Array(d)),n(c)}catch(e){return[+new Date,a,(c=a.navigator)&&c.plugins,a.screen,n(b)]}}function n(a){return String.fromCharCode.apply(0,a)}var o=c.pow(d,e),p=c.pow(2,f),q=2*p,r=d-1,s=c["seed"+i]=function(a,f,g){var h=[],r=l(k(f?[a,n(b)]:null==a?m():a,3),h),s=new j(h);return l(n(s.S),b),(g||function(a,b,d){return d?(c[i]=a,b):a})(function(){for(var a=s.g(e),b=o,c=0;p>a;)a=(a+c)*d,b*=d,c=s.g(1);for(;a>=q;)a/=2,b/=2,c>>>=1;return(a+c)/b},r,this==c)};l(c[i](),b),g&&g.exports?g.exports=s:h&&h.amd&&h(function(){return s})}(this,[],Math,256,6,52,"object"==typeof module&&module,"function"==typeof define&&define,"random");
+/*! console_hack.js | (c) 2015 Thomas Michael Edwards | Licensed under SugarCube's Simple BSD license */
+!function(){for(var methods=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeline","timelineEnd","timeStamp","trace","warn"],length=methods.length,noop=function(){},console=window.console=window.console||{};length--;){var method=methods[length];console[method]||(console[method]=noop)}}();
+/* User Lib */
+"USER_LIB"
+}else{document.documentElement.setAttribute("data-init", "lacking");}
+</script>
+<style id="style-normalize" type="text/css">/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}</style>
+<style id="style-init-screen" type="text/css">@-webkit-keyframes init-loading-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes init-loading-spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes init-loading-spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#init-screen{display:none;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%;font:28px/1 Helmet,Freesans,sans-serif;font-weight:700;color:#eee;background-color:#111;text-align:center}#init-screen>div{display:none;position:relative;margin:0 auto;max-width:1136px;top:25%}html[data-init=lacking] #init-screen,html[data-init=loading] #init-screen,html[data-init=no-js] #init-screen{display:block}html[data-init=lacking] #init-lacking,html[data-init=no-js] #init-no-js{display:block;padding:0 1em}html[data-init=no-js] #init-no-js{color:red}html[data-init=loading] #init-loading{display:block;border:24px solid transparent;border-radius:50%;border-top-color:#7f7f7f;border-bottom-color:#7f7f7f;width:100px;height:100px;-webkit-animation:init-loading-spin 2s linear infinite;-o-animation:init-loading-spin 2s linear infinite;animation:init-loading-spin 2s linear infinite}html[data-init=loading] #init-loading>div{text-indent:9999em;overflow:hidden;white-space:nowrap}html[data-init=loading] #passages,html[data-init=loading] #ui-bar{display:none}</style>
+<style id="style-font" type="text/css">@font-face{font-family:tme-fa-icons;src:url(data:application/octet-stream;base64,d09GRgABAAAAACWoAA4AAAAAQhQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPihI/2NtYXAAAAGIAAAAOgAAAUrQXRm3Y3Z0IAAAAcQAAAAKAAAACgAAAABmcGdtAAAB0AAABZQAAAtwiJCQWWdhc3AAAAdkAAAACAAAAAgAAAAQZ2x5ZgAAB2wAABjCAAAq+uJ4WNtoZWFkAAAgMAAAADQAAAA2BZlJs2hoZWEAACBkAAAAIAAAACQIJwQZaG10eAAAIIQAAABuAAABOPTeAABsb2NhAAAg9AAAAJ4AAACeojKW6m1heHAAACGUAAAAIAAAACAA6gvwbmFtZQAAIbQAAAGPAAAC/eLsyKlwb3N0AAAjRAAAAfwAAAM0412SIHByZXAAACVAAAAAZQAAAHvdawOFeJxjYGRWYZzAwMrAwVTFtIeBgaEHQjM+YDBkZGJgYGJgZWbACgLSXFMYHF4wvPBhDvqfxRDFHMQwDSjMCJIDANLeC6V4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF74/P8PUvCCAURLMELVAwEjG8OIBwC4Ywb6AAAAAAAAAAAAAAAAAAB4nK1WaXMTRxCd1WHLNj6CDxI2gVnGcox2VpjLCBDG7EoW4BzylexCjl1Ldu6LT/wG/ZpekVSRb/y0vB4d2GAnVVQoSv2m9+1M9+ueXpPQksReWI+k3HwpprY2aWTnSUg3bFqO4kPZ2QspU0z+LoiCaLXUvu04JCISgap1hSWC2PfI0iTjQ48yWrYlvWpSbulJd9kaD+qt+vbT0FGO3QklNZuhQ+uRLanCqBJFMu2RkjYtw9VfSVrh5yvMfNUMJYLoJJLGm2EMj+Rn44xWGa3GdhxFkU2WG0WKRDM8iCKPslpin1wxQUD5oBlSXvk0onyEH5EVe5TTCnHJdprf9yU/6R3OvyTieouyJQf+QHZkB3unK/ki0toK46adbEehivB0fSfEI5uT6p/sUV7TaOB2RaYnzQiWyleQWPkJZfYPyWrhfMqXPBrVkoOcCFovc2Jf8g60HkdMiWsmyILujk6IoO6XnKHYY/q4+OO9XSwXIQTIOJb1jkq4EEYpYbOaJG0EOYiSskWV1HpHTJzyOi3iLWG/Tu3oS2e0Sag7MZ6th46tnKjkeDSp00ymTu2k5tGUBlFKOhM85tcBlB/RJK+2sZrEyqNpbDNjJJFQoIVzaSqIZSeWNAXRPJrRm7thmmvXokWaPFDPPXpPb26Fmzs9p+3AP2v8Z3UqpoO9MJ2eDshKfJp2uUnRun56hn8m8UPWAiqRLTbDlMVDtn4H5eVjS47CawNs957zK+h99kTIpIH4G/AeL9UpBUyFmFVQC9201rUsy9RqVotUZOq7IU0rX9ZpAk05Dn1jX8Y4/q+ZGUtMCd/vxOnZEZeeufYlyDSH3GZdj+Z1arFdgM5sz+k0y/Z9nebYfqDTPNvzOh1ha+t0lO2HOi2w/UinY2wvaEGT7jsEchGBXMAGEoGwdRAI20sIhK1CIGwXEQjbIgJhu4RA2H6MQNguIxC2l7Wsmn4qaRw7E8sARYgDoznuyGVuKldTyaUSrotGpzbkKXKrpKJ4Vv0rA/3ikTesgbVAukTW/IpJrnxUleOPrmh508S5Ao5Vf3tzXJ8TD2W/WPhT8L/amqqkV6x5ZHIVeSPQk+NE1yYVj67p8rmqR9f/i4oOa4F+A6UQC0VZlg2+mZDwUafTUA1c5RAzGzMP1/W6Zc3P4fybGCEL6H78NxQaC9yDTllJWe1gr9XXj2W5twflsCdYkmK+zOtb4YuMzEr7RWYpez7yecAVMCqVYasNXK3gzXsS85DpTfJMELcVZYOkjceZILGBYx4wb76TICRMXbWB2imcsIG8YMwp2O+EQ1RvlOVwe6F9Ho2Uf2tX7MgZFU0Q+G32Rtjrs1DyW6yBhCe/1NdAVSFNxbipgEsj5YZq8GFcrdtGMk6gr6jYDcuyig8fR9x3So5lIPlIEatHRz+tvUKd1Ln9yihu3zv9CIJBaWL+9r6Z4qCUd7WSZVZtA1O3GpVT15rDxasO3c2j7nvH2Sdy1jTddE/c9L6mVbeDg7lZEO3bHJSlTC6o68MOG6jLzaXQ6mVckt52DzAsMKDfoRUb/1f3cfg8V6oKo+NIvZ2oH6PPYgzyDzh/R/UF6OcxTLmGlOd7lxOfbtzD2TJdxV2sn+LfwKy15mbpGnBD0w2Yh6xaHbrKDXynBjo90tyO9BDwse4K8QBgE8Bi8InuWsbzKYDxfMYcH+Bz5jBoMofBFnMYbDNnDWCHOQx2mcNgjzkMvmDOOsCXzGEQModBxBwGT5gTADxlDoOvmMPga+Yw+IY59wG+ZQ6DmDkMEuYw2Nd0ayhzixd0F6htUBXowPQTFvewONRUGbK/44Vhf28Qs38wiKk/aro9pP7EC0P92SCm/mIQU3/VdGdI/Y0Xhvq7QUz9wyCmPtMvxnKZwV9GvkuFA8ouNp/z98T7B8IaQLYAAQAB//8AD3icrToNcBzVefe9/b3dvd29u909/dyd7ke6k86yLEunOyHJsrCxJWyJGmEcLMDYxBhHNsZQBzOAkjQmFDrGIq5gHEIcCILOAGZq3IQO04RkIGkgaUMKMbQznSlJW0wgJtOQHxRr1e+93TvJwq7JTD3y2/f//bzvfX/vAhAIzL3KPcYNBFIB8UR9EJYuAcuAqGNbOiwDSczkuorlaJ6WTeVSRwMIDveY8aN20GztjzMhW4P2H+kNUPM5NaVNQE0K3tWM77vv8rJqgnT33VJE4WWIfd/QbKHZjcXcZiFAqjCDgUJA/mZTWOIIwi0vAwNiUjkW9THIZs6DAbnj6ffGP/P+0y2vv+5SXGLKuXHJPJH92c+yT7x3883wnI9W/DxI4T9+bm7uOL+MUwNywAg0BJYFQgNKa2NDzFBEjqeM0SFXLHU4YKe7yjFoSmdEKWw5nemOUj5czMXCliilM7lyuFgqp3HaDf1j/fhH+s6cfm4MEpA8c0BSQBO5CUkD5fJi05kDjSUoNnETTUUSXtpPVm0aGHDdmV0nNkPiMUWeHZMVRSZPSlp0dqypCKVG8iT9IK5AEeamyZGAjecW5tm5SSBm8ojiSqBsYoXDTRtuymw13V8axjB+p2EPlsMGcRzTTRkGOLRpmk/AzSZ+A97ecx+QN8g9gUbc26F7N+GJiN5pLGMA8hUo7EQcHI455A0PwrS3I37N+bZhTE8bex1aeeIJ4+MTjTY6gcH+iIvgGWQRdh2TR9sS81kspCzytguLfBcyuBOLXuhwYnZnh8NFUs6plLPLScGpWBKwkYztwsop7Hie9r7rYK/9brWXTg9U+RiBX+GJiyc0rgIv7UNJe3vPjrFdyZOV/byNUkyW/0AuIi/h+h6U5a64SmW5ieGcya2AYimG+EUtnZN08ImgveV+KOYykiiJVMrbkI+dHUkC9+nyPUFdD94j639r1uTq7FiSNrR1hXS8uLbGapYUSbpaJvzmp5aODbU9iJNBU1gJa5LFTCqihNpDigmWWtc2GjUy7Y2m3hHk14qmPJXp2cTInZudO85dhzw2AuXAJQHl+Yt7l0RVjkO8u4q5JZARE2A5yNxStNgGWcQSj7izA1HucCgJOsRsb7xYWgn9XAwvRqaN4HAS4ENF3kXFFovJ/muW3zsYDK3jxaCQbOouOPXZPmBDNZG4krS0N2/9wakf7hHv+IcPX/jcaGWZAp9fvrFtv66UeSlXn4zYdZo5kLNwIJJRTbEu3jz62Zf37Xv5l7RAeugZfAQ7kJ5koA3PoJB1eP8MpHRVWqpygyITpiKz4DCoHMENlun+wrDA0bNZ9jmJZdZwhhx9UnewMKztg2yAlie9j6O7Lzrks7tYdRdOO4u/FJ9e5G93RyFTJ1f5G17IZDs7z25uEfuFBYwlvYpUUuTnKJO6umg5IymD88yGGxbycjN2JOkIVk6wUoEzm/0O5T/Owb92Jg8NyL/6qFrl30IZ5nSgMp3nch7DkvOMCaMeoQ1U4JZxQncenmAMmcAei/S7V9CvAccW8mczwtMCceSQ8nwhXWuKAeQPJbRCc9RnhoSyhvBL+WgxTzsk0Y567IFj+35wa4Xq7ykS5YIm7UIdq4iCfKcsiIoSvFFWONUnFovZoXHKhXE69R9hTOIEgZPcJ0VZRrx+i3j9hhtFPqQDnYjX8uaEpS2+F4twiVkOylSJAwfvBZO3XBnoTaEHtltSWAGKIEl3SJIQ1CRESIRnLFtJRc88GckEbQuOBTO5zBXziL0JIPKiyMtzggwiMc+czmbDEbDMbJaLhC3LPzPuFOKaD6zEM+tt15gNxTPLIg5dvglCfGmbmakYmqmKsEfRVOWWAXjqvEzVeamT6botq9321Vu2rIb7KOrufmZ24LWmoiI3yspJJ65e704JprBSFGH3pxXLhAQe9fBzbM1rq7YAm1dsctvZSiqu8G94rxwS/LQ7JYorRR0XXq/GmSh4dJADKAsSk70ajQ8gHdE0MhzVjOCbVDSvKINd1PhKVN+fgMTG2zYCvIaq+V2mmsNTP36IRLD6xO7ejWTDisfc7zCVD6tQW+/eMTW1Y3fSt20foe+hBZpQ3zfGfH3vyzmCZNvHFoJFVPrRjj7m6I26M3r7KHQxgD5c2H/4tQdIeJLJ+yQDvTsZOwv4jYfJQxVaxxmtKtNTTVaQnRmS6kkWvfBoNvCeIT55jt41PJZwpg3YYeJYGK+dppgK/sF+R/8ggZIOBlnyNoK/qpwokLZ6uCFRKCTKV8HeGaYksPg2Xj/3fyQZb6dhGWv2QLLQU4DW7lZwf77Hw+vb3AjzexKIVywkEXoGlB1JUqr4FW3A7BZlDzgzhZ5W0tyfI1da7mmn13JvsZOFxLuJIRsmLXJVskByA41iu/uvSds9bWOnPZQ4lSgANm+xqQ6gMPlGH2YR79rSDIXLXQBujHZSxkCpSIeynwCdNxEFJ2HVmSDaFPxQYoIN2BfCM8E6zTCu66VDSQ97KkPfIa8i7nGUITNAZagDhYFJjeg5rXh+bcBuYamT/JWmRVE8Iopeb/3ud1ZdSIs4TkQLcaogJ63Z5dGUxEfefz8qSKko+Qm2PB/ZgyEEMngmjkjovYB0GBog+n9COzD7MiQ73pfOA5S8NLseIst+QWbPC9y/J8dRv7QFliCNWcnzAYlI3fE8hdNVbBPY1WEeZxm8m5mKOdypQRG1qhiRgQBnZbr7N20qT1ipoPsLVYWEGq8hE3BoLPn2tV8PhWVe0WTB4nIN3WMD7cmIiDZEhaSSROulWMbk2+sX4LIs0Iq4NNdUfV3mDeqCbaEOligmbYSFCaU0VRVULrhTKoKlIMubNvV3ZyyOByWMilXkBpNjcIjihTjBrwzF/bmKF1iMJNsHxrobcnxElDVF0C3u69fevP5txIsEcUrVZyR96DPqiI/C+zGTp0uZGkXVP6PG1RncET7Ey/eKjnX885QeWw83krsCIVyvMp8TD9P3rEvMFUkFZxS6Rw25ytWQJ/52/tqLyQSDrc7Dpiq/H2XDgYsVBgjnK7BF95EwLKLNKLh0bg5x74VXPNwJO1fq7raB588j7pbhat78pDKjPE1td1Jl6Hhn8Q73LdISsCrrgwuijljQ28Tinnavx+Xu9ap6jYqn2QzNaly7RoVJ99MoBl/DvmtU1X0Lu3FCnO37XXKEW832Nai8BYnDKKvIF92W3F9dotK94ahCNyJPuW+5b2L1WrQ2X6fSc1TBejLg77uvsm8FX2b1ghWk6cbjuB1FUIVm9y0f6aMKfMbdhjshNGihFKgIgE7044ZvkbXz+zbh3chXN/f35Z6mOyF2b/m7H6V7HVV3XYOYtiDOig/J25bh+xPuAPMdxRPRc8V1YU8Z2mEv9OIO2O6DTg8Wtt2C3+lCcjBRmEaNVbDhi0nLnUK1ttvqdVpsexruQ93WGnf3T9s47N+te7nN5FeohRGeChUfIvZx5htAPYTNjQl/ea/tTlkW7LZ7nIK3dyNsGUwWpq0+a4k/ALvozB5nurkCqwthUdrq5mnzBD/tu5rpfPVYuC6L0VZwnMfd/YnGxgTc97jjFNjGFvRQ6iyrYPfZjyPVyQJM233YRF5YVb1xgLzjwVMX3NOwZ/K7wtJZx4W8pGRNNzf4ZOBeCKgPCxuKcUYmxQNycbjP5wGlEJGk8OZc369tR3gtaZ+X6CbmVkIONRVJcugpluk1TQL1Fqmfy1ELVi4hYy1zJhYNj4zu7RkfbuebN17fv+q2Fj4sDgtE7Hv2uk89uneIH7j9yNWjR1YMmUvJSzO6s9QcGWkbHt83PtzW0yWCMMLr4roNcMm+o88e3XdJ/0VDkWiFDxSv5YhXq8d3nVAryjjtoDXp7Ojn2gg6ijGHIUxDpQZ0Y2lQym2+5NZHN219to8XhsUw33Lb6p6dG9DVGN598/bmkXA0NoPeR2t4qO/h0U8d3bcKtmB5yeilos6PCCB29fgINjeNmEsdfaYmGhm6qB9RrPhEx7mrEbfGwCDauZXNJo09wLJ1oAhSe1NxWkUDKKJofMqeE+szt8S4K9JYmjbLXRRtylOU1vWN//mVy4/0DVGNqM9QJT7SvL287ot5MSZoGC/oyHTWO7p3vdd5s6RB439/5fKH6aIaEDh46AVkpMqWo1YdaWpe1690hzT4e79jxGuLvD+R0iUwuiJ+TLUM4+yrA8aAdsVAsX1JFgMsTkCF4ceBdtgLZ8oXaENnPpfPipLA6A57nn4+XI1hUbCoYmig1KP5pH44Kybnq4cUyatKivvTmXpeOC7y8J4il3yHncWVz+SDrc5zTqucPyYro3Af7XP30/I8ddJxsQAgXIFbz37QdsmqNhJl0K6145C0rkWzExAX8aM3sDpwYyA8oF83PNBXWu7xRPQMIT1E6syw7M4F2tFwOmyhVKQ7+uH/lz9DribLBF4jsuze94lYBc+7LzLOXMw4c+66u52EZz/QLEWxyA0XZFuA9+OVUfSTwyzWCw0o3a0Jx9BYTrKp2AZiEi9qGSs6OFhZkPboRDXesZKpbcd3UOjV8dMgNNQhr1pJh0Qy5petVIQ48Zq1KefMj7zIhluf3pQeBs5JfUuJMGcgHFRik16gP1mzHX2EmroaYhmVysETLOo54aSGU/gHzbEwdRvCMXuGhUczHj3HkZ42Rk9LYIDS07c8YRuqSBg91Pmnwo8VghFR2Y9oKTmxziSwi0HTN2I1cMvT3E7Fezk/Pae1UnYyUwqdRnqCNZPoXSJSk6hxGWmRBKqBSMqyTP97/wmaJcQCGpqbG5Iw6vhEtHpEVWihepULpFG3rqG0rOha2qTxJIC0YOSYFjrxEtP8nlSlIxvu7PLcRKmS76mk04Sq0HoTqJ04CcfcK+DDIU34mhCX/dByaAiDy58ibicVeRdNJrNyezI2G/ESlUKsZDxiOtLJk/ChXCc9Imp+1nO2xL6QZIkkWiizM7SHIF9q9K8ZpQDx8zOjgWaMzORvdrSGPJ2sEzRYZer9O2gmWD4zSTr6sSuH8Uc/IGjmyLIMOHUV0G48840967ixy2v6zIhcU+pr3bDj9u0bc1xfqUbO9sUuH3O/iqEbFPqaPbOBZuFTO57rx7mxvnDL7avRFLah/ei55LZCpKddjqz4OxhyH6YRLuzA0rcfY5yC8rQTcb08JdLYleZW8TZ0lGgSCyVfQoQtRDiPV6BqKLryzL7kqRmkuoGdE5UzlKWy39mJQlU1OChf1KrEHOYcsdMhvaO3j5JN+zZBXJZ2Kmq0WRSMDSFJGqmtC0q8eZesmfWxPxNNca3DC3KzYsg7MBBXhJ2yHmvy5sojNXVBmQvfhUdoxJ0NgiENWTzfqwd3SOjC927ceNvGjbfTUTNp13eIumhvAKEvJA/HTUW6Maj1CeJAUtBFrcOI1xugSWxubV1qqaRJ1gZvqiHLbKqwOo5TR9hELw7/iBsjL/t6WXl+SWN9VOO5RfnTtJcwreTFY35bWthGB+bMB+yOcGEDg4bztxbkUR0wh1h2kJWgV0awMR+Hjvn5mlrmu9BMCMpYsZynmQC8KR2xco4maZIg5jN5CU86ViJ/s27nzqlxgFc6167fuXP92s5XYOdDO8j4pYNYw16IjR8eH79U0ra3Y6V9uyat20l2P7AbsKpjJ81Tzs39nt9PXgqYeL9LNB+Yi9uMN1BEZ0knnvijDiZLEDg6dJ30NuA9oQEVh9U0uk/kgO8A+R94pvWy8YveWn0ZWbfmLepJXdqz5Z5B94qhu7d2k75r7l0Lx2gVtvTMr6FXgDY7p56d6qSNS+/e0ke6r//CQ1/YXiTdW++u+FK/529HfC3klvzNhK3Te4txIUFlkuQ8tIjguXrUG6WAPWgMsIcDF664d3v3DHXwhQ07YMul2I9QDvtQXz+bokoej3uUo5mt1Qi7f/m58pGoIAyavsnnFiUl8cbhKTpRmI+CKw9Y1oKc5GvZZJCT6kWJcCHNzzDS3KTQKEocr/6Fe1GoUf+1rq/QG/W/hs9goz8E649Xc5M6HxXjAnDV9OT9spBFuwOC26Prv2bzQ3RhCHfwaYpW8+LxqOzlYOZR7/Kf/RbmXMktCzAr3jWP/Kqt5KUqZDq4uTqyBbYGfL17HcuL19KcjykyePSoAP2bNgILH1qOXXFwA9l471P3bOIvOwRXL8j+k0OjB6cPjrLCfe2sXP/824QcsAMZlOmGWiMo0rwb4K1qo+mH/LkBVlXdA+cFXFFWvz0//AXvbZ6+ac3GoyzHHvXfzCqvNILfLi9qV7KBJ/03OPbql/A+XlcDa3g9C1/rnPPU/XzkR4E3q/4p6kHES6V3vVx1M7x3EG4RnpwfhuT9B8mTF4BG6w/vZp7SbtoL4oJBkCuYe2+LL3GT6CtdzGKjNas6FGaHETyqOIeljCSdy4azYTwkLxFIL08OHSKaM+7sonl9vERpGguhHaS5bUgz24xu3ETTPsVKqntkIZfpqR1MdBfQKd6hmiFHviU1QZ260MQ2FSOcbfDmVoyFeHkb9rq/db9KFWsP6uutqz6LgZW6R+JrIjp86Gp6jSXL+7RoUv38yjEracH0NiVpKdu2ISBl27QDRdTKAT9WHoc/IL/p7w4sptcdmtpFR6IcZRnNXDnaT909x7Ykjj6PwmlFdP9FMuWgQvb8nAiKpHB7iS4/r+pk678LRCWOGpq9QwfOlOGlbpDkEPwThngKL7puibAY5LvMl+ZQQ8Yx4mxF/wZjkGJ7a3NjKl5jyjiJ/hAhLzVVExN+9qMpZsAyWImhu/eF2NlfcmS6bxq6lNlO9CZvxpjon/G7R5k1SqVwuFwOv3HTTZn0TTelSQs2wtjpPkNH8D/RH++b3mkosx0KLkzSlfi92qSrzPKX2arMTe692ChjJ7T5I75t3I487EIe5jXKQ6pg6Q83qs/lEn3noSFynmb4aOrBF9sEoBuHhKFYcL11up41emofLCQGE60wVdeDClSvn5qqM41Go7t+iuWUHqzrNrOGWTsFst5TtwLXXPk0Syc9fSX2rsBFmzadY6C/Fge8d+e5uXHkfyiQRc6vwTu2Ylkhz95Fq2/8+YVv/CxSqb7xxyqhDjDBRxFBxcQnSYzeBfrYNqGJjej4TLDfWEywII42hqZ+/BB/6I2DkCn0WS9uv3PD4Z0DpG/3oemDe7u5NS/aMOWtol60t2qCusYTSi19uHn1iHiQOpz2i2v6xx/4xqE9PfyqHQ+N3Ln9RftsmoxADcYAyvMt9Y73lr7wdwTUmb8g/u53GOaw6pPizJC9MJrEj7noG9sG1CNhmWN2BcF2dpRzGBfz5XrojEWZRxuj6aCYY0tiLJOTMmK2uJJQjxj/8hjKEB1iGHCj4JTpxczQzEtehAevG+5pUO12twtCjfG4I979yJB4a7RlZbDdVGV1OMgDQPZQY+ERm1wqiVyYJwJHMrGaP+o9YKbUlE2ApL6YEiyylNT9ESff74qtvCgqNSZcBVOa+2Hr9q9E70rVikGTcxRJ4BSQa6ImzpQIEXk+OFbqhvQRQ4souDWotqAiL2Xqm+AZ/Yz0kXcCOnvfqg1779vzOXtqtvPMii9Ig5+dwj87Kf4bQ6EJfdRt4PyQZYFY0/NXERbE5vPzi+As2njhToFqfp7h6ufXYTFiZ6MCryyG/xQX5qIBFddLfr6b+SYsHc3P1ocikRD5rxCMuNslxeBKuiZjzQpUY6kFvwNgPtyioHRxkEr9fv+HE5AwHFc9q0neOXOa/kiAi9ByQX3et1fZb2+q7yCL914QN5y1GVt/DOVaR29JPCECXV9iGaI84A7sQ9W3Y4dLZe4vVR1Mxd3Hc7rq7lNVOKjqHM9xqmiceVWXNTgoiO6fswpN0R/EfnefyHtnMvcsdw1nzMOJiSzGpQ+SPmclxmVRqlVM0HG5wNFSQYAIRhjE3ZDTsobwJbifVegTxj7sx7mCRwvp5XSWh6/QYs/TwjyMahKsVCYZVaeECMTR56MplPyzCfrSPO/dL0m8RwvpQ1oS56aF7i/58Mpn0eOHaKxcTNGd84cLd4oCvXPu3B+4a8kPUA7rmSzJ7E3Zy7OzuJEm/Mt+7Eh/pyDPMx7xF7luuh/CY9hDe4WZYLqvW+YhFlJiWX1PO0aOB6L0t3AVOUK7V/XSqP8Dx/CavHCY8erwC3jhyKHZR2nu9wXvpz4vKN4dwOIA22sZ/S1RTbhyBxbvF/XeXzEQpfEUTa0hLTTE+RigN9vzQhBp0RzT5OUaKazwlhEU8u0fx8D9XmGdwVmmZmpavDGuichhJJUz1nn5pp9yj5H3GG7DgZtovmnn5YNFiiT/JyIZqw6Uvd+i0TRIFwumFw7SVEg/TYvQDM/8hE9O4uTWEVlECuyU2tLW1oKK3jIk+bItDxy6TZKw36mttdZgKDxo1fIRzrFMSbrt0J/Cl8KVh1OcozuqGUyO7RxLBk3UrA6XfmDTF97qwAErpOl655GnjnTqOidyIQsHO08G/hcLt/j/AAB4nGNgZGBgAOLaW41M8fw2Xxm4mV8ARRguss1QhNC5H/9//Z/FUsEcBORyMDCBRAFTFwxveJxjYGRgYA76n8UQxVLGwPD/FUsFA1AEBfgBAHyYBUh4nGN+wcDAvACCWfSBNIgviMBM1kA6koGBMRWVBqsDYqYmiF4wHQkxg+kUBMPVWEP0gTDYvBdoahZAzYxEY0ciuWUBFjkoZimDYLC8IKpehmsQccYvSGYgYZB7YBhFL5o8cxTQjDUI/wIArpclrwAAAAAAAAA6AIYA3AEKAUgBgAGgAfoCYgKqAwIDOgOGA9wEQAR4BLYFAgU8BZoFzAYMBlIGmga6BtgG+AcYB0QHcAecB8gIAAg2CG4IpgjyCUAJrAo0CtALOAueDAoMYA0ADVANjg3mDiQOjg7GDvgPOA+ED84QPBB2EN4RNhGgEfISchKoEsgS6BMGEz4TXhOSE8QT+BQsFGIUiBTWFX0AAAABAAAATgBuAAYAAAAAAAIAAAAQAHMAAAAiC3AAAAAAeJx1kctOGzEUhn9DoIKgLloJdcdZIRDK5CKhSqyoogJrhLJDwgyeSzpjRx4HlGfgLcoz8Dp9j+76Z2KhqFJmZM93Ph/bxx4AX/AHCqvnnG3FCgeMVryFT/gReZv+JnKHfBd5B108RN6l/xV5H2d4idzFV/zmCqqzx2iK98gK39RR5C18Vt8jb9P/jNwh30fewaGaR96lf428j4l6i9zFsfo7drOFL/MiyMn4VEaD4bk8LsRRlVZXouehcL6RS8mcDaaqXJK6OtSml+lemTrb3Jp8Xmm/rtZ5YnxTOivDZLCur401XgfztNytec5HIWSSeVfLVdxHZt5NTRqSIoTZRb+/vj/GcJhhAY8SOQoECE5oT/kdYYAhf4zgkRnCzFVWCQuNikZjzhlFO9IwvmTLGFlaw4yKnCBlX9PUdD2Oa/Zlay1n3dLmXKei9xuzNvkJ7XLvso2F9SaselP2Na1tZ+i2wqePszV4ZhUj2sBZy1P4tmrB1X/nEd7XcmxKk9In7a0F2gv0+W44/z/KQo7lAHicbZLnlpswEIW5Bgy4bLLpvfeE9N57z76DLARWEJKOEEucpw8CO/kTncOdT6PhnlHxRt4wJt7/x47nYQQfAUKMESFGggmmmGGOLezBXmxjH/bjAA7iEA7jCI7iGI7jBE7iFE7jDM7iHM7jAi7iEi7jCq7iGq7jBlLcxC3cxh3cxT3cxwM8xCM8xhM8xTM8xwu8xCu8xhu8xTu8xwd8xCd8xhd8xTd8xw/sBLUlZuIkZZW2q0hzahvDRqocUyIpE4EWTR1WXDZ1sGRCz5yklBsqWBZwmauZk01mTqxl0nIlUyLs9r/Zej35m4kFl2XKftlAKFomTlKlmfQ1l74lRdB9dbxQqqyIKbc2MPQZGqbFKsqVaYnJ4ky1Ms24iQXLrYPE8GLZ07jRfaIvcf5JX+NoMhQ5jLoqFwenBS8Gpw7WTh05py6MaOtT2ibEGNXWKW1Da0i9nPY6dNe7CEWy7pc+5EJpvfJVnvtUFUHFZBPWS2LYxKqiECztVpINypAuGS2nvQ6Gs+H0hsk0U3ZznDETguua1/MNpLvMWH/RFGEuuobCihScxqS2zPC6jH4rVaVcxn1UjQ1yJW1QK2MTJ6nrPOqp0d3Vk1WoSVOz7p0oHeWdTbpoh5i3sVWpezp23AGTWch+Mmonu0o0Vb+l6RqdabLmRnveH9ru7j54nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZGFwAB9MiuAAAAA==) format('woff')}</style>
+<style id="style-core" type="text/css">html{font:16px/1 Helmet,Freesans,sans-serif}#store-area,tw-storydata{display:none!important;z-index:0}.no-transition{-o-transition:none!important;transition:none!important}:focus{outline:thin dotted}:disabled{cursor:not-allowed!important}body{color:#eee;background-color:#111}a{cursor:pointer;color:#68d;text-decoration:none;-o-transition-duration:.2s;transition-duration:.2s}a:hover{color:#8af;text-decoration:underline}a.link-broken{color:#c22}a.link-broken:hover{color:#e44}span.link-disabled{color:#aaa}area{cursor:pointer}button{cursor:pointer;color:#eee;background-color:#35a;border:1px solid #57c;line-height:normal;padding:.4em;-o-transition-duration:.2s;transition-duration:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}button:hover{background-color:#57c;border-color:#79e}button:disabled{background-color:#444;border:1px solid #666}input,select,textarea{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}select{padding:.34em .4em}input[type=text]{min-width:18em}textarea{min-width:30em}input[type=checkbox],input[type=file],input[type=radio],select{cursor:pointer}input:not(:disabled):focus,input:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):hover{background-color:#333;border-color:#eee}hr{display:block;height:1px;border:none;border-top:1px solid #eee;margin:1em 0;padding:0}textarea{resize:vertical}audio,canvas,progress,video{max-width:100%;vertical-align:middle}.error-view{background-color:#511;border-left:.5em solid #c22;display:inline-block;margin:.1em;padding:0 .25em;position:relative}.error-view>.error-toggle{background-color:transparent;border:none;line-height:inherit;left:0;padding:0;position:absolute;top:0;width:1.875em}.error-view>.error{display:inline-block;margin-left:1.75em}.error-view>.error-source[hidden]{display:none}.error-view>.error-source:not([hidden]){display:block;margin:0 0 .25em;padding:.25em;background-color:rgba(0,0,0,.2)}.highlight,.marked{color:#ff0;font-weight:700;font-style:italic}.nobr{white-space:nowrap}.error-view>.error-toggle:before,.error-view>.error:before,[data-icon-after]:after,[data-icon-before]:before,[data-icon]:before,a.link-external:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}[data-icon]:before{content:attr(data-icon)}[data-icon-before]:before{content:attr(data-icon-before) "\00a0"}[data-icon-after]:after{content:"\00a0" attr(data-icon-after)}.error-view>.error-toggle:before{content:"\e81a"}.error-view>.error-toggle.enabled:before{content:"\e818"}.error-view>.error:before{content:"\e80d\00a0\00a0"}a.link-external:after{content:"\00a0\e80e"}</style>
+<style id="style-core-display" type="text/css">#story{z-index:10;margin:2.5em;-o-transition:margin-left .2s ease-in;transition:margin-left .2s ease-in}@media screen and (max-width:1136px){#story{margin-right:1.5em}}#passages{max-width:54em;margin:0 auto}</style>
+<style id="style-core-passage" type="text/css">.passage{line-height:1.75;text-align:left;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.passage-in{opacity:0}.passage ol,.passage ul{margin-left:.5em;padding-left:1.5em}.passage table{margin:1em 0;border-collapse:collapse;font-size:100%}.passage caption,.passage td,.passage th,.passage tr{padding:3px}</style>
+<style id="style-core-macro" type="text/css">.macro-linkappend-insert,.macro-linkprepend-insert,.macro-linkreplace-insert,.macro-repeat-insert,.macro-timed-insert{-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.macro-linkappend-in,.macro-linkprepend-in,.macro-linkreplace-in,.macro-repeat-in,.macro-timed-in{opacity:0}</style>
+<style id="style-ui-dialog" type="text/css">html[data-dialog] body{overflow:hidden}#ui-overlay.open{visibility:visible;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-overlay:not(.open){-o-transition:visibility .2s step-end,opacity .2s ease-in;transition:visibility .2s step-end,opacity .2s ease-in}#ui-overlay{visibility:hidden;opacity:0;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%}#ui-dialog.open{display:block;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-dialog{display:none;opacity:0;z-index:100100;position:fixed;top:50px;margin:0;padding:0}#ui-dialog-titlebar{position:relative}#ui-dialog-close{display:block;position:absolute;right:0;top:0;white-space:nowrap}#ui-dialog-body{overflow:auto;min-width:280px;height:90%;height:calc(100% - 2.1em - 34px)}#ui-overlay{background-color:#000}#ui-overlay.open{opacity:.8}#ui-dialog{max-width:66em}#ui-dialog.open{opacity:1}#ui-dialog-titlebar{background-color:#444;min-height:24px}#ui-dialog-title{margin:0;padding:.2em 3.5em .2em .5em;font-size:1.5em;text-align:center;text-transform:uppercase}#ui-dialog-close{cursor:pointer;font-size:120%;margin:0;padding:0;width:3.6em;height:92%;background-color:transparent;border:1px solid transparent;-o-transition-duration:.2s;transition-duration:.2s}#ui-dialog-close:hover{background-color:#b44;border-color:#d66}#ui-dialog-body{background-color:#111;border:1px solid #444;text-align:left;line-height:1.5;padding:1em}#ui-dialog-body>:first-child{margin-top:0}#ui-dialog-body hr{background-color:#444}#ui-dialog-body ul.buttons{margin:0;padding:0;list-style:none}#ui-dialog-body ul.buttons li{display:inline-block;margin:0;padding:.4em .4em 0 0}#ui-dialog-body ul.buttons>li+li>button{margin-left:1em}#ui-dialog-close{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-close{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}</style>
+<style id="style-ui" type="text/css">#ui-dialog-body.settings [id|=setting-body]{display:table;width:100%}#ui-dialog-body.settings [id|=setting-label]{display:table-cell;padding:.4em 2em .4em 0}#ui-dialog-body.settings [id|=setting-label]+div{display:table-cell;min-width:8em;text-align:right;vertical-align:middle;white-space:nowrap}#ui-dialog-body.list{padding:0;min-width:140px}#ui-dialog-body.list ul{margin:0;padding:0;list-style:none;border:1px solid transparent}#ui-dialog-body.list li{margin:0}#ui-dialog-body.list li:not(:first-child){border-top:1px solid #444}#ui-dialog-body.list li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-decoration:none}#ui-dialog-body.list li a:hover{background-color:#333;border-color:#eee}#ui-dialog-body.saves{padding:0 0 1px}#ui-dialog-body.saves>:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves table{border-spacing:0;min-width:340px;width:100%}#ui-dialog-body.saves tr:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves td{padding:.33em .33em}#ui-dialog-body.saves td:first-child{min-width:1.5em;text-align:center}#ui-dialog-body.saves td:nth-child(3){line-height:1.2}#ui-dialog-body.saves td:last-child{text-align:right}#ui-dialog-body.saves .empty{color:#999}#ui-dialog-body.saves .datestamp{font-size:75%}#ui-dialog-body.saves ul.buttons li{padding:.4em}#ui-dialog-body.saves ul.buttons>li+li>button{margin-left:.2em}#ui-dialog-body.saves ul.buttons li:last-child{float:right}#ui-dialog-body.settings div[id|=header-body]{margin:1em 0}#ui-dialog-body.settings div[id|=header-body]:first-child{margin-top:0}#ui-dialog-body.settings div[id|=header-body]:not(:first-child){border-top:1px solid #444;padding-top:1em}#ui-dialog-body.settings div[id|=header-body]>*{margin:0}#ui-dialog-body.settings h2[id|=header-heading]{font-size:1.375em}#ui-dialog-body.settings p[id|=header-label]{font-size:87.5%}#ui-dialog-body.settings div[id|=setting-body]+div[id|=setting-body]{margin:.5em 0}#ui-dialog-body.settings [id|=setting-control]{white-space:nowrap}#ui-dialog-body.settings button[id|=setting-control]{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}#ui-dialog-body.settings button[id|=setting-control]:hover{background-color:#333;border-color:#eee}#ui-dialog-body.settings button[id|=setting-control].enabled{background-color:#282;border-color:#4a4}#ui-dialog-body.settings button[id|=setting-control].enabled:hover{background-color:#4a4;border-color:#6c6}#ui-dialog-body.share{min-width:140px}#ui-dialog-body.list a,#ui-dialog-body.settings span[id|=setting-input]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-body.saves button[id=saves-clear]:before,#ui-dialog-body.saves button[id=saves-export]:before,#ui-dialog-body.saves button[id=saves-import]:before,#ui-dialog-body.settings button[id|=setting-control].enabled:after,#ui-dialog-body.settings button[id|=setting-control]:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-dialog-body.saves button[id=saves-export]:before{content:"\e829\00a0"}#ui-dialog-body.saves button[id=saves-import]:before{content:"\e82a\00a0"}#ui-dialog-body.saves button[id=saves-clear]:before{content:"\e827\00a0"}#ui-dialog-body.settings button[id|=setting-control]:after{content:"\00a0\00a0\e830"}#ui-dialog-body.settings button[id|=setting-control].enabled:after{content:"\00a0\00a0\e831"}</style>
+<style id="style-ui-bar" type="text/css">#story{margin-left:20em}#ui-bar.stowed~#story{margin-left:4.5em}@media screen and (max-width:1136px){#story{margin-left:19em}#ui-bar.stowed~#story{margin-left:3.5em}}@media screen and (max-width:768px){#story{margin-left:3.5em}}#ui-bar{position:fixed;z-index:50;top:0;left:0;width:17.5em;height:100%;margin:0;padding:0;-o-transition:left .2s ease-in;transition:left .2s ease-in}#ui-bar.stowed{left:-15.5em}#ui-bar-body{height:90%;height:calc(100% - 2.5em);margin:2.5em 0;padding:0 1.5em}#ui-bar.stowed #ui-bar-body,#ui-bar.stowed #ui-bar-history{visibility:hidden;-o-transition:visibility .2s step-end;transition:visibility .2s step-end}#ui-bar{background-color:#222;border-right:1px solid #444;text-align:center}#ui-bar-tray{position:absolute;top:.2em;left:0;right:0}#ui-bar a{text-decoration:none}#ui-bar hr{border-color:#444}#ui-bar-history [id|=history],#ui-bar-toggle{font-size:1.2em;line-height:inherit;color:#eee;background-color:transparent;border:1px solid #444}#ui-bar-toggle{display:block;position:absolute;top:0;right:0;border-right:none;padding:.3em .45em .25em}#ui-bar.stowed #ui-bar-toggle{padding:.3em .35em .25em .55em}#ui-bar-toggle:hover{background-color:#444;border-color:#eee}#ui-bar-history{margin:0 auto}#ui-bar-history [id|=history]{padding:.2em .45em .35em}#ui-bar-history #history-jumpto{padding:.2em .665em .35em}#ui-bar-history [id|=history]:not(:first-child){margin-left:1.2em}#ui-bar-history [id|=history]:hover{background-color:#444;border-color:#eee}#ui-bar-history [id|=history]:disabled{color:#444;background-color:transparent;border-color:#444}#ui-bar-body{line-height:1.5;overflow:auto}#ui-bar-body>:not(:first-child){margin-top:2em}#story-title{margin:0;font-size:162.5%}#story-author{margin-top:2em;font-weight:700}#menu ul{margin:1em 0 0;padding:0;list-style:none;border:1px solid #444}#menu ul:empty{display:none}#menu li{margin:0}#menu li:not(:first-child){border-top:1px solid #444}#menu li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-transform:uppercase}#menu li a:hover{background-color:#444;border-color:#eee}#menu a,#ui-bar-history [id|=history],#ui-bar-toggle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#menu-core li[id|=menu-item] a:before,#ui-bar-history [id|=history],#ui-bar-toggle:before{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-bar-toggle:before{content:"\e81d"}#ui-bar.stowed #ui-bar-toggle:before{content:"\e81e"}#menu-item-saves a:before{content:"\e82b\00a0"}#menu-item-settings a:before{content:"\e82d\00a0"}#menu-item-restart a:before{content:"\e82c\00a0"}#menu-item-share a:before{content:"\e82f\00a0"}</style>
+<style id="style-ui-debug" type="text/css">#debug-bar{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:0;margin:0;max-height:75%;padding:.5em;position:fixed;right:0;z-index:99900}#debug-bar>div:not([id])+div{margin-top:.5em}#debug-bar>div>label{margin-right:.5em}#debug-bar>div>input[type=text]{min-width:0;width:8em}#debug-bar>div>select{width:15em}#debug-bar-watch{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:102%;bottom:calc(100% + 1px);font-size:.9em;left:-1px;max-height:600%;max-height:60vh;position:absolute;overflow-x:hidden;overflow-y:scroll;right:0;z-index:99800}#debug-bar-watch[hidden]{display:none}#debug-bar-watch div{color:#999;font-style:italic;margin:1em auto;text-align:center}#debug-bar-watch table{width:100%}#debug-bar-watch tr:nth-child(2n){background-color:rgba(127,127,127,.15)}#debug-bar-watch td{padding:.2em 0}#debug-bar-watch td:first-child+td{padding:.2em .3em .2em .1em}#debug-bar-watch .watch-delete{background-color:transparent;border:none}#debug-bar-watch-all,#debug-bar-watch-none{margin-left:.5em}#debug-bar-views-toggle,#debug-bar-watch-toggle{color:#eee;background-color:transparent;border:1px solid #444;margin-right:1em;padding:.4em}#debug-bar-views-toggle:hover,#debug-bar-watch-toggle:hover{background-color:#333;border-color:#eee}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle,html[data-debug-view] #debug-bar-views-toggle{background-color:#282;border-color:#4a4}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:hover,html[data-debug-view] #debug-bar-views-toggle:hover{background-color:#4a4;border-color:#6c6}#debug-bar-views-toggle:after,#debug-bar-watch .watch-delete:before,#debug-bar-watch-add:before,#debug-bar-watch-all:before,#debug-bar-watch-none:before,#debug-bar-watch-toggle:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#debug-bar-watch .watch-delete:before{content:"\e804"}#debug-bar-watch-add:before{content:"\e805"}#debug-bar-watch-all:before{content:"\e83a"}#debug-bar-watch-none:before{content:"\e827"}#debug-bar-views-toggle:after,#debug-bar-watch-toggle:after{content:"\00a0\00a0\e830"}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:after,html[data-debug-view] #debug-bar-views-toggle:after{content:"\00a0\00a0\e831"}html[data-debug-view] .debug{padding:.25em;background-color:#234}html[data-debug-view] .debug[title]{cursor:help}html[data-debug-view] .debug.block{display:inline-block;vertical-align:middle}html[data-debug-view] .debug.invalid{text-decoration:line-through}html[data-debug-view] .debug.hidden,html[data-debug-view] .debug.hidden .debug{background-color:#555}html:not([data-debug-view]) .debug.hidden{display:none}html[data-debug-view] .debug[data-name][data-type].nonvoid:after,html[data-debug-view] .debug[data-name][data-type]:before{background-color:rgba(0,0,0,.25);font-family:monospace,monospace;white-space:pre}html[data-debug-view] .debug[data-name][data-type]:before{content:attr(data-name)}html[data-debug-view] .debug[data-name][data-type|=macro]:before{content:"<<" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=macro].nonvoid:after{content:"<</" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=html]:before{content:"<" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type|=html].nonvoid:after{content:"</" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type]:not(:empty):before{margin-right:.25em}html[data-debug-view] .debug[data-name][data-type].nonvoid:not(:empty):after{margin-left:.25em}html[data-debug-view] .debug[data-name][data-type|=special],html[data-debug-view] .debug[data-name][data-type|=special]:before{display:block}</style>
+</head>
+<body>
+	<div id="init-screen">
+		<div id="init-no-js"><noscript>JavaScript is required. Please enable it to continue.</noscript></div>
+		<div id="init-lacking">Your browser lacks required capabilities. Please upgrade it or switch to another to continue.</div>
+		<div id="init-loading"><div>Loading&hellip;</div></div>
+	</div>
+	<div id="store-area" data-size="STORY_SIZE" hidden>"STORY"</div>
+	<script id="script-sugarcube" type="text/javascript">
+	/*! SugarCube JS */
+	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),_slicedToArray=function(){function e(e,t){var r=[],a=!0,n=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},errorPrologRegExp=/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,Alert=function(){function e(e,t,r,a){var n="fatal"===e,i="Apologies! "+(n?"A fatal":"An")+" error has occurred.";i+=n?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(errorPrologRegExp,"")+".":": unknown error."),"object"===(void 0===a?"undefined":_typeof(a))&&a.stack&&(i+="\n\nStack Trace:\n"+a.stack),window.alert(i)}function t(t,r,a){e(null,t,r,a)}function r(t,r,a){e("fatal",t,r,a)}return function(e){window.onerror=function(a,n,i,o,s){"complete"===document.readyState?t(null,a,s):(r(null,a,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,a){t.test(a)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",r=t.replace("\\-",""),a="("+t+"+)\\(([^\\)\\|\\n]+)\\):",n="("+t+"+):([^;\\|\\n]+);",i="((?:\\."+t+"+)+);",o="((?:#"+t+"+)+);",s=a+"|"+n+"|"+i+"|"+o;return Object.freeze({space:e,spaceNoTerminator:"[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",lineTerminator:"[\\n\\r\\u2028\\u2029]",anyLetter:t,anyLetterStrict:r,identifierFirstChar:"[$A-Z_a-z]",identifier:"[$A-Z_a-z][$0-9A-Z_a-z]*",variableSigil:"[$_]",variable:"[$_][$A-Z_a-z][$0-9A-Z_a-z]*",macroName:"[A-Za-z][\\w-]*|[=-]",cssImage:"\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",inlineCss:s,url:"(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+"})}();!function(){function e(e,t){var n=String(e);switch(t){case"start":return n&&r.test(n)?n.replace(r,""):n;case"end":return n&&a.test(n)?n.replace(a,""):n;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var a=void 0===t?"":String(t);for(""===a&&(a=" ");a.length<r;){var n=a.length,i=r-n;a+=n>i?a.slice(0,i):a}return a.length>r&&(a=a.slice(0,r)),a}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,a=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var a=this[r];if(t===a||t!==t&&a!==a)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:t(i-n,r)+a}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:a+t(i-n,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,a=void 0;switch(t.length){case 1:r=0,a=e-1;break;case 2:r=0,a=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),a=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r)<0&&(r=0),Number.isNaN(a)?a=0:!Number.isFinite(a)||a>=e?a=e-1:a<0&&(a=e+a)<0&&(a=e-1),_random(r,a)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var a=t+1;if(a>=e.length)throw new Error("high surrogate without trailing low surrogate");var n=e.charCodeAt(a);if(n<56320||n>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(a),start:t,end:a}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){return e[0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1))]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var e=Array.from(this);if(0===arguments.length)return e;var t=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),r=t.length;if(0===r)return e;for(var a=Array.prototype.indexOf,n=Array.prototype.push,i=0;i<r;++i){var o=t[i];-1===a.call(e,o)&&n.call(e,o)}return e}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,a=0;-1!==(r=e.call(this,t,r));)++a,++r;return a}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];if(0==this.length>>>0)return[];for(var e=Array.prototype.indexOf,t=Array.prototype.push,r=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),n=[],i=0,o=a.length;i<o;++i)for(var s=a[i],u=0;-1!==(u=e.call(this,s,u));)t.apply(n,r.call(this,u,1));return n}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),a=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),n=[],i=0,o=r.length;i<o;++i)n[i]=this[r[i]];for(var s=0,u=a.length;s<u;++s)t.call(this,a[s],1);return n}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=Array.prototype.splice,n=[],i=t-1;do{n.push(a.call(this,_random(0,i--),1)[0])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.push,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){return this[0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)))]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=new Map,n=[],i=t-1;do{var o=void 0;do{o=_random(0,i)}while(a.has(o));a.set(o,!0),n.push(this[o])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var a=this[t];this[t]=this[r],this[r]=a}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.unshift,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var a=[],n=0,i=0;i<r.length;++i)a.push(r[i]===undefined?arguments[n++]:r[i]);return t.apply(this,a.concat(e.call(arguments,n)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function(e,t,r){var a=Number(e);return Number.isNaN(a)?NaN:a.clamp(t,r)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var a=String(r);return a&&t.test(a)?a.replace(e,"\\$&"):a}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function a(e,t,r){if(!t)return e;var a=Math.abs(t)-e.length;if(a<1)return e;var n=String(r).repeat(a);return t<0?e+n:n+e}if(arguments.length<2)return 0===arguments.length?"":r;var n=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===n.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=n[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch(void 0===i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return a(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return-1!==String.prototype.indexOf.apply(this,arguments)}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,a=Number(arguments[1])||0,n=0;-1!==(a=t.call(this,e,a));)++n,a+=r;return n}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var a=this.length>>>0;if(0===a)return"";var n=Number(e);Number.isSafeInteger(n)?n<0&&(n+=a)<0&&(n=0):n=0,n>a&&(n=a);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,n);return void 0!==r&&(o+=r),n+i<a&&(o+=this.slice(n+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toLocaleUpperCase()+e.slice(a+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toUpperCase()+e.slice(a+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),a=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),n=!e.includes("opera")&&/msie|trident/.test(e),i=n?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:a,isIE:n,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),a=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),n=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:a,performance:n})}(),_ref3=function(){function e(t){if("object"!==(void 0===t?"undefined":_typeof(t))||null===t)return t;if(t instanceof String)return String(t);if(t instanceof Number)return Number(t);if(t instanceof Boolean)return Boolean(t);if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return t instanceof Array?r=new Array(t.length):t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,a){return r.set(a,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){return r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(a){return r[a]=e(t[a])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),a=void 0;null!==(a=e.firstChild);){if(a.nodeType===Node.ELEMENT_NODE){switch(a.nodeName.toUpperCase()){case"BR":if(null!==a.nextSibling&&a.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===a.nextSibling.nodeName.toUpperCase()){e.removeChild(a.nextSibling),e.removeChild(a),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(a);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(a);continue}}r.appendChild(a)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function a(e,t,r){var a="object"===(void 0===e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==a)return null;var n=Array.isArray(t)?t:[t];jQuery(a).empty();for(var i=0,o=n.length;i<o;++i)if(Story.has(n[i]))return new Wikifier(a,Story.get(n[i]).processText().trim()),a;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(a,s)}return a}function n(e,t,r){var a=jQuery(document.createElement("div")),n=jQuery(document.createElement("button")),i=jQuery(document.createElement("pre")),o=L10n.get("errorTitle")+": "+(t||"unknown error");return n.addClass("error-toggle").ariaClick({label:L10n.get("errorToggle")},function(){n.hasClass("enabled")?(n.removeClass("enabled"),i.attr({"aria-hidden":!0,hidden:"hidden"})):(n.addClass("enabled"),i.removeAttr("aria-hidden hidden"))}).appendTo(a),jQuery(document.createElement("span")).addClass("error").text(o).appendTo(a),jQuery(document.createElement("code")).text(r).appendTo(i),i.addClass("error-source").attr({"aria-hidden":!0,hidden:"hidden"}).appendTo(a),a.addClass("error-view").appendTo(e),console.warn(o+"\n\t"+r.replace(/\n/g,"\n\t")),!1}function i(e,t){var r=i;switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){return"{ "+[].concat(_toConsumableArray(e)).map(function(e){var a=_slicedToArray(e,2),n=a[0],i=a[1];return r(n,t)+" → "+r(i,t)}).join(", ")+" }"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:a},throwError:{value:n},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){var t=jQuery(this);t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments)}}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(a,n){if(0===this.length||0===arguments.length)return this;var i=a,o=n;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0!==r.length){var n=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(n,t,e)});var i=[].concat(_toConsumableArray(n.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0===this.length||0===r.length)return this;var n=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(n,t,e)}),this.append(n),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch(void 0===e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function a(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function n(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&p.test(t)?t.replace(f,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&v.test(t)?t.replace(m,function(e){return y[e.toLowerCase()]}):t}function s(e,t){var r=String(e),a=Math.trunc(t),n=r.charCodeAt(a);if(Number.isNaN(n))return{char:"",start:-1,end:-1};var i={char:r.charAt(a),start:a,end:a};if(n<55296||n>57343)return i;if(n>=55296&&n<=56319){var o=a+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===a)return i;var u=a-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return b.now()}function l(e){var t=w.exec(String(e));if(null===t)throw new SyntaxError('invalid time value syntax: "'+e+'"');var r=Number(t[1]);if(1===t[2].length&&(r*=1e3),Number.isNaN(r)||!Number.isFinite(r))throw new RangeError('invalid time value: "'+e+'"');return r}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var r=void 0;switch(void 0===e?"undefined":_typeof(e)){case"string":r='"'+e+'"';break;case"number":r=String(e);break;default:r=t(e)}throw new Error("invalid milliseconds: "+r)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}return("-ms-"===e.slice(0,4)?e.slice(1):e).split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function h(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),a=_slicedToArray(t,2),n=a[0],i=a[1];r[n]=i});var a=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+a+t.search,pathname:a,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var f=/[&<>"'`]/g,p=new RegExp(f.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,v=new RegExp(m.source,"i"),y=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"}),b=Has.performance?performance:Date,w=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/;return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:a},slugify:{value:n},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c},fromCssProperty:{value:d},parseUrl:{value:h},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},
+evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return f}function a(e){f=Math.clamp(e,.2,5),l("rate",f)}function n(){return p}function i(e){p=Math.clamp(e,0,1),l("volume",p)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");h.set(e,t)}function u(e){h.delete(e)}function l(e,t){h.forEach(function(r){return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(v,[null].concat(t)))}var h=new Map,f=1,p=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,a=/\.([^.\/\\]+)$/,n=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch(void 0===e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(null===(s=r.exec(e)))throw new Error("source data URI missing media type")}else if(null===(s=a.exec(Util.parseUrl(e).pathname)))throw new Error("source URL missing file extension");var u=n(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=n(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+(void 0===e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var a=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return a._error=!1}).on("error",function(){return a._error=!0}).find("source:last-of-type").on("error",function(){return a._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!a.audio)return void SimpleAudio.unsubscribe(a);switch(e){case"mute":a._updateAudioMute();break;case"rate":a._updateAudioRate();break;case"stop":a.stop();break;case"volume":a._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this);var e=this.audio;if(e){for(this.fadeStop(),this.stop(),jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}}},{key:"_updateAudioMute",value:function(){this.audio&&(this.audio.muted=this._mute||SimpleAudio.mute)}},{key:"_updateAudioRate",value:function(){this.audio&&(this.audio.playbackRate=this._rate*SimpleAudio.rate)}},{key:"_updateAudioVolume",value:function(){this.audio&&(this.audio.volume=this._volume*SimpleAudio.volume)}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return!this.audio||this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return!!this.audio&&this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return!!this.audio&&this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!!this.audio&&!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return!!this.audio&&(this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended)}},{key:"isEnded",value:function(){return!this.audio||this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return!!this.audio&&this.audio.loop}},{key:"load",value:function(){this.audio&&("auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load())}},{key:"play",value:function(){this.audio&&this.audio.play()}},{key:"pause",value:function(){this.audio&&this.audio.pause()}},{key:"stop",value:function(){this.audio&&(this.pause(),this.time=0,this._trigger(":stop"))}},{key:"fadeWithDuration",value:function(e,t,r){var a=this;if(this.audio){this.fadeStop();var n=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);n!==i&&(this.volume=n,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;n<i?(t=n,r=i):(t=i,r=n);var o=Number(e);o<1&&(o=1);var s=(i-n)/(o/.025);a._faderId=setInterval(function(){if(!a.isPlaying())return void a.fadeStop();a.volume=Math.clamp(a.volume+s,t,r),0===a.volume&&a.pause(),a.volume===i&&(a.fadeStop(),a._trigger(":fade"))},25)}),this.play())}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(n,r),this}}},{key:"one",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(n,r),this}}},{key:"off",value:function(t,r){if(this.audio){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(n,r),this}}},{key:"duration",get:function(){return this.audio?this.audio.duration:NaN}},{key:"ended",get:function(){return!this.audio||this.audio.ended}},{key:"loop",get:function(){return!!this.audio&&this.audio.loop},set:function(e){this.audio&&(this.audio.loop=!!e)}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return!!this.audio&&this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio?this.audio.duration-this.audio.currentTime:NaN}},{key:"time",get:function(){return this.audio?this.audio.currentTime:NaN},set:function(e){var t=this;if(this.audio)try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var a=document.createElement("audio");r[t]=""!==a.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,a=t.toLowerCase(),n=r.hasOwnProperty(a)?r[a]:"audio/"+a;return e._verifyType(n)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var v=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,a=void 0,n=void 0,i=void 0;if(e instanceof m)r=!0,a=e.clone(),n=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,a=r?e.track.clone():e.track,n=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}a.stop(),a.loop=!1,a.mute=!1,a.volume=n,a.rate=i,a.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:a,volume:n,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var a=Math.clamp(t,0,1)*this.current.volume,n=void 0;null!=r&&(n=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,a,n),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:a},volume:{get:n,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,a){if(r)return r.create(e,a);for(var n=0;n<t.length;++n)if(t[n].init(e,a))return r=t[n],r.create(e,a);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var a=t.getItem(r)===r;return t.removeItem(r),a}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new a(e,t)}var r=!1,a=function(){function e(t,r){_classCallCheck(this,e);var a=t+".",n=null,i=null;r?(n=window.localStorage,i="localStorage"):(n=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:n},_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e)/* look here for changes */{return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}();/* changes end here */return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,n)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),h=decodeURIComponent(d[0]);if(r.test(h)){var f=decodeURIComponent(d[1]);""!==f&&function(){var e=!u.test(h);o._setCookie(h,undefined,n),o._setCookie(h.replace(r,function(){return e?i:s}),f,e?a:undefined)}()}}}var a="Tue, 19 Jan 2038 03:14:07 GMT",n="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var a=t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){if(""===document.cookie)return[];for(var e=document.cookie.split(/;\s*/),t=[],r=0;r<e.length;++r){var a=e[r].split("="),n=decodeURIComponent(a[0]);if(this._prefixRe.test(n)){""!==decodeURIComponent(a[1])&&t.push(n.replace(this._prefixRe,""))}}return t}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?a:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,n),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var a=t[r].split("=");if(e===decodeURIComponent(a[0])){return decodeURIComponent(a[1])||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var a=encodeURIComponent(e)+"=";null!=t&&(a+=encodeURIComponent(t)),null!=r&&(a+="; expires="+r),a+="; path=/",document.cookie=a}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){return function(){function e(t,r,a,n){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:n,"aria-label":n,"data-type":null!=r?r:"","data-name":null!=a?a:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){if(null==e){var t={};return this.view.className.splitOrEmpty(/\s+/).forEach(function(e){"debug"!==e&&(t[e]=!0)}),t}if("object"===(void 0===e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"isEnabled",value:function(){return"enabled"===jQuery(document.documentElement).attr("data-debug-view")}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}()}(),PRNGWrapper=function(){return function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),a=t.pull;a>0;--a)r.random();return r}}]),e}()}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage);return function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var a=r;t.test(a)&&(e.lastIndex=0,a=a.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=a:this.style.appendChild(document.createTextNode(a))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}()}(),Diff=function(){function e(t,a){for(var n=Object.prototype.toString,i=t instanceof Array,o=[].concat(Object.keys(t),Object.keys(a)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var h=o[c],f=t[h],p=a[h];if(t.hasOwnProperty(h))if(a.hasOwnProperty(h)){if(f===p)continue;if((void 0===f?"undefined":_typeof(f))===(void 0===p?"undefined":_typeof(p)))if("function"==typeof f)f.toString()!==p.toString()&&(s[h]=[r.Copy,p]);else if("object"!==(void 0===f?"undefined":_typeof(f))||null===f)s[h]=[r.Copy,p];else{var g=n.call(f),m=n.call(p);if(g===m)if(f instanceof Date)Number(f)!==Number(p)&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Map)s[h]=[r.Copy,clone(p)];else if(f instanceof RegExp)f.toString()!==p.toString()&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Set)s[h]=[r.Copy,clone(p)];else if("[object Object]"!==g)s[h]=[r.Copy,clone(p)];else{var v=e(f,p);null!==v&&(s[h]=v)}else s[h]=[r.Copy,clone(p)]}else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}else if(i&&Util.isNumeric(h)){var y=Number(h);if(!u){u="";do{u+="~"}while(o.some(l));s[u]=[r.SpliceArray,y,y]}y<s[u][1]&&(s[u][1]=y),y>s[u][2]&&(s[u][2]=y)}else s[h]=r.Delete;else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}return Object.keys(s).length>0?s:null}function t(e,a){for(var n=Object.keys(a||{}),i=clone(e),o=0,s=n.length;o<s;++o){var u=n[o],l=a[u];if(l===r.Delete)delete i[u];else if(l instanceof Array)switch(l[0]){case r.SpliceArray:i.splice(l[1],l[2]-l[1]+1);break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=l10nStrings[r],o=0;n.test(i);){if(++o>50)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");a.lastIndex=0,i=i.replace(a,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return i}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesEmptySlot":t=strings.saves.emptySlot;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesSavedOn":t=strings.saves.savedOn;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var a=/\{\w+\}/g,n=new RegExp(a.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{},macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesEmptySlot:"— slot empty —",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesSavedOn:"Saved on",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",
+autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),F=-1,B=[],V=null===V?null:new PRNGWrapper(V.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:F};return e?t.history=clone(W):t.delta=A(W),B.length>0&&(t.expired=[].concat(_toConsumableArray(B))),null!==V&&(t.seed=V.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==V&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===V&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),F=e.index,B=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(V.seed=e.seed),g(F)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return B}function s(){return B.length+v()}function u(){return B.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!B.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return F}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==V&&(V=PRNGWrapper.unmarshal({seed:V.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return F+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[F]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>F?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=F;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),V&&(k().pull=V.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)B.push(W.shift().title);return F=y()-1,g(F),v()}function O(e){return!(null==e||e<0||e>=y()||e===F)&&(F=e,g(F),!0)}function T(e){return null!=e&&0!==e&&O(F+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}V=new PRNGWrapper(e,t),R.pull=V.pull}function N(){return V?V.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),F=-1,B=[],V=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:O},go:{value:T},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{t=Scripting.evalTwineScript(e),null==t||"function"==typeof t?t=e:(t=String(t),/\[(?:object(?:\s+[^\]]+)?|native\s+code)\]/.test(t)&&(t=e))}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.source,n=this.working.name,i=this.working.arguments,o=void 0;try{if(!(o=Macro.get(n))){if(Macro.tags.has(n)){var s=Macro.tags.get(n);return throwError(e.output,"child tag <<"+n+">> was found outside of a call to its parent macro"+(1===s.length?"":"s")+" <<"+s.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+n+">> does not exist",e.source.slice(t,e.nextMatch))}var u=null;if(o.hasOwnProperty("tags")&&!(u=this.parseBody(e,o)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+n+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof o.handler)return throwError(e.output,"macro <<"+n+">> handler function "+(o.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var l=u?u[0].args:this.createArgs(i,o.hasOwnProperty("skipArgs")&&!!o.skipArgs||o.hasOwnProperty("skipArg0")&&!!o.skipArg0);if(o.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:o,name:n,args:l,payload:u,source:a,parent:this.context,parser:e});try{o.handler.call(this.context)}finally{this.context=this.context.parent}}else{var c=e._rawArgs;e._rawArgs=i;try{o.handler(e.output,n,l,e,u)}finally{e._rawArgs=c}}}catch(r){return throwError(e.output,"cannot execute "+(o&&o.isWidget?"widget":"macro")+" <<"+n+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){for(var t=new RegExp(this.argsPattern,"gm"),r=[],a=new RegExp("^"+Patterns.variable),n=void 0;null!==(n=t.exec(e));){var i=void 0;if(n[1])i=undefined;else if(n[2]){i=n[2];try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[3])i="";else if(n[4]){i=n[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(n[5]){i=n[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[6]){i=n[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(n[7])if(i=n[7],a.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(n[8]){var u=void 0;switch(n[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}
+throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"prettyLink",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),a=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"wiki-link","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,a,n):Wikifier.createExternalLink(i,r,a)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"wiki-image",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,n=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);n=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(n,o,null,a):Wikifier.createExternalLink(n,o),n.classList.add("link-image")}if(n=jQuery(document.createElement("img")).appendTo(n).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(n.setAttribute("data-passage",s.title),i=s.text)}n.src=i,t.hasOwnProperty("title")&&(n.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(n.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),a=r&&r.index===e.nextMatch,n=jQuery(document.createElement(a?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?n.addClass("marked"):(t.classes.forEach(function(e){return n.addClass(e)}),""!==t.id&&n.attr("id",t.id),n.css(t.styles)),a?(e.nextMatch+=r[0].length,e.subWikify(n[0],"\\n?"+this.terminator)):e.subWikify(n[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],a=null,n=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==a&&(a=u,n=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===a?(n.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(n[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(n).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var a=this,n=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{n.lastIndex=e.nextMatch;var u=n.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var n=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],a.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),n.classes.forEach(function(e){return l.addClass(e)}),""!==n.id&&l.attr("id",n.id),s&&u?n.styles["text-align"]="center":s?n.styles["text-align"]="right":u&&(n.styles["text-align"]="left"),l.css(n.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,a=0,n=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(n=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>a)for(i=a;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<a)for(i=a;i>u;--i)t.pop();else u===a&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));a=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(n)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:\x3c!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagPattern:"<(\\w+)",voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],nobrElements:["colgroup","datalist","dl","figure","ol","optgroup","select","table","tbody","tfoot","thead","tr","ul"],handler:function(e){var t=new RegExp(this.tagPattern).exec(e.matchText),r=t&&t[1],a=r&&r.toLowerCase();if(a){var n=this.voidElements.includes(a)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(a),o=void 0,s=void 0;if(!n){o="<\\/"+a+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(!n&&!s)return throwError(e.output,"cannot find a closing tag for HTML <"+r+">",e.matchText+"…");var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+a+">: bad evaluation from attribute directive: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c),Config.debug&&(d=new DebugView(e.output,"html-"+a,a,e.matchText),d.modes({block:"img"===a,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild(c)}},processAttributeDirectives:function(e){for(var t=e.attributes,r=0;r<t.length;++r){var a=t[r],n=a.name,i=a.value,o="@"===n[0];if(o||n.startsWith("sc-eval:")){var s=n.slice(o?1:8);e.setAttribute(s,Scripting.evalTwineScript(i)),e.removeAttribute(n)}}},processDataAttributes:function(e){var t=e.getAttribute("data-passage");if(null!=t){var r=Wikifier.helpers.evalPassageId(t);if(r!==t&&(t=r,e.setAttribute("data-passage",r)),""!==t)if("IMG"===e.tagName.toUpperCase())"data:"!==t.slice(0,5)&&Story.has(t)&&(t=Story.get(t),t.tags.includes("Twine.image")&&(e.src=t.text.trim()));else{var a=e.getAttribute("data-setter"),n=void 0;null!=a&&""!==(a=String(a).trim())&&(n=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(a))),Story.has(t)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof n&&n.call(this),Engine.play(t)})}}}})}();var Macro=function(){function e(t,r,n){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,n)});if(!h.test(t))throw new Error('invalid macro name "'+t+'"');if(a(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===(void 0===r?"undefined":_typeof(r)))c[t]=n?clone(r):r;else{if(!a(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=n?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(a(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function a(e){return c.hasOwnProperty(e)}function n(e){var t=null;return a(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&&macros[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],n=[].concat(r,Array.isArray(t)?t:[]),i=0;i<n.length;++i){var o=n[i];if(a(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);-1!==r&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},h=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:a},get:{value:n},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){return function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parent:{value:r.parent},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,a=Array(r),n=0;n<r;n++)a[n]=arguments[n];a.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+(void 0===r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var a=this,n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];if("function"==typeof r&&r.apply(this,o),"function"==typeof e){var u=Object.keys(n),l=u.length>0?{}:null,c=Wikifier.Parser.get("macro"),d=void 0;try{u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;r.hasOwnProperty(t)&&(l[t]=r[t]),r[t]=n[e]}),d=c.context,c.context=a,e.apply(this,o)}finally{d!==undefined&&(c.context=d),u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t],l.hasOwnProperty(t)?r[t]=l[t]:delete r[t]})}}"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e||this.name,t||this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t||this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}()}();!function(){if(Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var a=r[1],n=a.slice(1),i="$"===a[0]?State.variables:State.temporary;i.hasOwnProperty(n)&&(e[n]=i[n]),this.addShadow(a)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),a="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?a[r]=e[r]:delete a[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],a=t[2];r.hasOwnProperty(a)&&delete r[a]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var a=r[1];e[a]=State.variables[a]}if(!storage.set("remember",e))return this.error("unknown error, cannot remember: "+this.args.raw);Config.debug&&this.debugView.modes({hidden:!0})},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,a=!1;null!==(r=t.exec(this.args.full));){var n=r[1];State.variables.hasOwnProperty(n)&&delete State.variables[n],e&&e.hasOwnProperty(n)&&(a=!0,delete e[n])}if(a&&!storage.set("remember",e))return this.error("unknown error, cannot update remember store");Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=void 0;try{var t=this.payload.length;for(e=0;e<t;++e)switch(this.payload[e].name){case"else":if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);if(e+1!==t)return this.error("<<else>> must be the final clause");break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}var r=Scripting.evalJavaScript,a=!1;for(e=0;e<t;++e){if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||r(this.payload[e].args.full)){a=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<t;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!a,invalid:!a})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===(void 0===t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length;if(1===e)return this.error("no cases specified");var t=void 0;for(t=1;t<e;++t)switch(this.payload[t].name){case"default":if(this.payload[t].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[t].args.raw);if(t+1!==e)return this.error("<<default>> must be the final case");break;default:if(0===this.payload[t].args.length)return this.error("no value(s) specified for <<"+this.payload[t].name+">> (#"+t+")")}var r=void 0;try{r=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}var a=this.debugView,n=!1;for(Config.debug&&a.modes({nonvoid:!1,hidden:!0}),t=1;t<e;++t){if(Config.debug&&this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1}),"default"===this.payload[t].name||this.payload[t].args.some(function(e){return e===r})){n=!0,new Wikifier(this.output,this.payload[t].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++t;t<e;++t)this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1,hidden:!0,invalid:!0});a.modes({nonvoid:!1,hidden:!0,invalid:!n}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!n})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var a=void 0,n=void 0,i=void 0;if(-1===e.indexOf(";")){if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");n=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");a=o[1],n=o[2].trim(),i=o[3],0===n.length&&(n=!0)}this.self._handleFor.call(this,t,a,n,i)}},_handleFor:function(e,t,r,a){var n=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{n(t)}catch(e){return this.error("bad init expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(;n(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(a)try{n(a)}catch(e){return this.error("bad post expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,a){var n=!0,i=void 0;try{i=this.self._toRangeList(a)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,n?e.replace(/^\n/,""):e),n&&(n=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var a=void 0;switch(void 0===r?"undefined":_typeof(r)){case"string":a=[];for(var n=0;n<r.length;){var i=Util.charAndPosAt(r,n);a.push([n,i.char]),n=1+i.end}break;case"object":if(Array.isArray(r))a=r.map(function(e,t){return[t,e]});else if(r instanceof Set)a=[].concat(_toConsumableArray(r)).map(function(e,t){return[t,e]});else if(r instanceof Map)a=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));a=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+(void 0===r?"undefined":_typeof(r)))}return a}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){if(!this.contextHas(function(e){
+return"for"===e.name}))return this.error("must only be used in conjunction with its parent macro <<for>>");TempState.break="continue"===this.name?1:2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var a=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?n:a)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,n)):State.setVar(t,a)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var n=document.createDocumentFragment();new Wikifier(n,e.payload[0].contents),r.append(n)}a&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),a&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(n).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,a)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(n.checked=!0,State.setVar(t,a))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,a),i.textContent=a,n&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),"object"===(void 0===o?"undefined":_typeof(o))&&(o=o.link),jQuery(n).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,a),n.value=a,i&&(n.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+n.id]=function(e){delete postdisplay[e],setTimeout(function(){return n.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,a=void 0,n=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&n.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&n.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&n.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(a=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):a=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(n||document.createTextNode(a))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,a=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var n=State.length-2;n>=0;--n)if(State.history[n].title!==State.passage){e=n,t=State.history[n].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(-1===e)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||-1!==e?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(a||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,a=void 0,n=void 0;if(1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),t=this.args[0].link,n=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,n=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e])return void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(a||document.createTextNode(r)).appendTo(this.output);jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof n&&n()})).addClass("macro-"+this.name).append(a||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass()}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var t=document.createDocumentFragment();switch(new Wikifier(t,this.payload[0].contents),this.name){case"replace":e.empty();case"append":e.append(t);break;case"prepend":e.prepend(t)}}else"replace"===this.name&&e.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');e.remove()}}),Has.audio){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track or group IDs"),this.args.length<2&&e.push("actions"),this.error("no "+e.join(" or ")+" specified")}var t=Macro.get("cacheaudio").tracks,r=[];try{var a=function e(r){var a=r.id,o=void 0;switch(a){case":all":o=n;break;case":looped":o=n.filter(function(e){return t[e].isLooped()});break;case":muted":o=n.filter(function(e){return t[e].isMuted()});break;case":paused":o=n.filter(function(e){return t[e].isPaused()});break;case":playing":o=n.filter(function(e){return t[e].isPlaying()});break;default:o=":"===a[0]?i[a]:[a]}if(r.hasOwnProperty("not")){var s=r.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!s.includes(e)})}return o},n=Object.freeze(Object.keys(t)),i=Macro.get("cacheaudio").groups;this.self.parseIds(String(this.args[0]).trim()).forEach(function(e){r.push.apply(r,_toConsumableArray(a(e)))}),r.forEach(function(e){if(!t.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}catch(e){return this.error(e.message)}for(var o=this.args.slice(1),s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=void 0,f=5,p=void 0,g=void 0;o.length>0;){var m=o.shift();switch(m){case"play":case"pause":case"stop":s=m;break;case"fadein":s="fade",h=1;break;case"fadeout":s="fade",h=0;break;case"fadeto":if(0===o.length)return this.error("fadeto missing required level value");if(s="fade",g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeto: "+g);break;case"fadeoverto":if(o.length<2){var v=[];return o.length<1&&v.push("seconds"),o.length<2&&v.push("level"),this.error("fadeoverto missing required "+v.join(" and ")+" value"+(v.length>1?"s":""))}if(s="fade",g=o.shift(),f=Number.parseFloat(g),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+g);if(g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+g);break;case"volume":if(0===o.length)return this.error("volume missing required level value");if(g=o.shift(),u=Number.parseFloat(g),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse volume: "+g);break;case"mute":case"unmute":l="mute"===m;break;case"time":if(0===o.length)return this.error("time missing required seconds value");if(g=o.shift(),c=Number.parseFloat(g),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse time: "+g);break;case"loop":case"unloop":d="loop"===m;break;case"goto":if(0===o.length)return this.error("goto missing required passage title");if(g=o.shift(),p="object"===(void 0===g?"undefined":_typeof(g))?g.link:g,!Story.has(p))return this.error('passage "'+p+'" does not exist');break;default:return this.error("unknown action: "+m)}}try{r.forEach(function(e){var r=t[e];switch(null!=u&&(r.volume=u),null!=c&&(r.time=c),null!=l&&(r.mute=l),null!=d&&(r.loop=d),null!=p&&r.one("end",function(){return Engine.play(p)}),s){case"play":r.play();break;case"pause":r.pause();break;case"stop":r.stop();break;case"fade":r.fadeWithDuration(f,h)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){for(var t=[],r=/:?[^\s:()]+/g,a=void 0;null!==(a=r.exec(e));){var n=a[0];if(":not"===n){if(0===t.length)throw new Error('invalid negation: no group ID preceded ":not()"');var i=t[t.length-1];if(":"!==i.id[0])throw new Error('invalid negation of track "'+i.id+'": only groups may be negated with ":not()"');var o=function(e,t){var r=/\S/g,a=/[()]/g,n=void 0;if(r.lastIndex=t,null===(n=r.exec(e))||"("!==n[0])throw new Error('invalid ":not()" syntax: missing parentheticals');a.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(n=a.exec(e));)if("("===n[0]?++s:--s,s<1){o.nextMatch=a.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}(e,r.lastIndex);if(-1===o.nextMatch)throw new Error('unknown error parsing ":not()"');r.lastIndex=o.nextMatch,i.not=this.parseIds(o.str)}else t.push({id:n})}return t}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim();if(/^:|\s/.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var r=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){var t=r.exec(e);return null===t?e:{format:t[1],src:t[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var n=this.self.tracks;n.hasOwnProperty(t)&&n[t].destroy(),n[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim();if(/^[^:]|\s/.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var r=Macro.get("cacheaudio").tracks,a=[],n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<1)return this.error("no track ID specified");var o=String(this.payload[n].args[0]).trim();if(!r.hasOwnProperty(o))return this.error('track "'+o+'" does not exist');a.push(o),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var s=Macro.get("cacheaudio").groups;s.hasOwnProperty(t)&&delete s[t],s[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim();if(/^:|\s/.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<2){var o=[];return this.payload[n].args.length<1&&o.push("track ID"),this.payload[n].args.length<2&&o.push("actions"),this.error("no "+o.join(" or ")+" specified")}var s=String(this.payload[n].args[0]).trim();if(!t.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');for(var u=this.payload[n].args.slice(1),l=!1,c=void 0;u.length>0;){var d=u.shift(),h=void 0;switch(d){case"copy":l=!0;break;case"rate":u.length>0&&u.shift();break;case"volume":if(0===u.length)return this.error("volume missing required level value");if(h=u.shift(),c=Number.parseFloat(h),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse volume: "+h);break;default:return this.error("unknown action: "+d)}}var f=t[s];a.add({copy:l,track:f,volume:null!=c?c:f.volume}),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var p=this.self.lists;p.hasOwnProperty(r)&&p[r].destroy(),p[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,a=void 0;e.length>0;){var n=e.shift(),i=void 0;switch(n){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===n;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),a=Number.parseFloat(i),Number.isNaN(a)||!Number.isFinite(a))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+n)}}try{null!=r&&(SimpleAudio.mute=r),null!=a&&(SimpleAudio.volume=a),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var a=[];return this.args.length<1&&a.push("list ID"),this.args.length<2&&a.push("actions"),this.error("no "+a.join(" or ")+" specified")}var n=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!n.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=n[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=5,f=void 0;r.length>0;){var p=r.shift();switch(p){case"play":case"pause":case"stop":case"skip":o=p;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+f);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",f=r.shift(),h=Number.parseFloat(f),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+f);if(f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+f);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(f=r.shift(),s=Number.parseFloat(f),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+f);break;case"mute":case"unmute":u="mute"===p;break;case"loop":case"unloop":l="loop"===p;break;case"shuffle":case"unshuffle":c="shuffle"===p;break;default:return this.error("unknown action: "+p)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(h,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();if(!e.hasOwnProperty(t))return this.error('playlist "'+t+'" does not exist');e[t].destroy(),delete e[t],Config.debug&&this.createDebugView()}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var a=t.shift();if(a.hasData())return e();a.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var a=Macro.get("setplaylist").list;null!==a&&a.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var a=0;a<this.args.length;++a){var n=this.args[a];if(!r.hasOwnProperty(n))return this.error('track "'+n+'" does not exist');t.list.add(r[n])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}else Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}});Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay)}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var n=a;r&&(n=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(n)),n.append(t),r&&setTimeout(function(){return n.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var a=State.turns,n=this.timers,i=null;i=setInterval(function(){if(a!==State.turns)return clearInterval(i),void n.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{void 0!==t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),n.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearInterval(e)}),n.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=n;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),a&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),a&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,a=this.timers,n=null,i=t.shift(),o=function o(){if(a.delete(n),r===State.turns){var s=i;null!=(i=t.shift())&&(n=setTimeout(o,i.delay),a.add(n)),e.call(this,s)}};n=setTimeout(o,i.delay),a.add(n),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearTimeout(e)}),a.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=void 0;try{State.variables.hasOwnProperty("args")&&(t=State.variables.args),State.variables.args=[].concat(_toConsumableArray(this.args)),State.variables.args.raw=this.args.raw,State.variables.args.full=this.args.full,this.addShadow("$args");var r=document.createDocumentFragment(),a=[];if(new Wikifier(r,e),Array.from(r.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length)return this.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")");this.output.appendChild(r)}catch(e){return this.error("cannot execute widget: "+e.message)}finally{void 0!==t?State.variables.args=t:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var a=t.offsetWidth;r.style.overflow="auto";var n=t.offsetWidth;a===n&&(n=r.clientWidth),document.body.removeChild(r),e=a-n}catch(e){}return e||17}()
+;var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1><button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'"></button></div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),h=jQuery(e.find("#ui-dialog").get(0)),f=jQuery(e.find("#ui-dialog-title").get(0)),p=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return h.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return p.hasClass(e)}))}function r(e,t){return p.empty().removeClass(),null!=t&&p.addClass(t),f.empty().append((null!=e?String(e):"")||" "),p.get(0)}function a(){return p.get(0)}function n(){var e;return(e=p).append.apply(e,arguments),Dialog}function i(){var e;return(e=p).wiki.apply(e,arguments),Dialog}function o(e,t,r,a,n){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,n),"function"==typeof a&&a(e)})}function s(e,r){var a=jQuery.extend({top:50},e),n=a.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==p[0].querySelector("img")&&p.imagesLoaded().always(function(){return l({data:{top:n}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(n);return h.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:n},jQuery.throttle(40,l)),Has.mutationObserver?(v=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:n}});break}}),v.observe(p[0],{childList:!0,subtree:!0})):p.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:n},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),v?(v.disconnect(),v=null):p.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),h.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),f.empty(),p.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&void 0!==e.data.top?e.data.top:50;"block"===h.css("display")&&(h.css({display:"none"}),h.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),a={left:"",right:"",top:"",bottom:""};h.css(a);var n=r.width()-h.outerWidth(!0)-1,i=r.height()-h.outerHeight(!0)-1;return n<=32+m&&(i-=m),i<=32+m&&(n-=m),a.left=a.right=n<=32?16:n/2>>0,a.top=i<=32?a.bottom=16:i/2>t?t:a.bottom=i/2>>0,Object.keys(a).forEach(function(e){""!==a[e]&&(a[e]+="px")}),a}var d=null,h=null,f=null,p=null,g=null,m=0,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:a},append:{value:n},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===(void 0===e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())h();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildDialogAutoload(),UI.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&f(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),jQuery.event.trigger(":enginerestart"),window.location.reload()}function a(){return b}function n(){return b===v.Idle}function i(){return b!==v.Idle}function o(){return b===v.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&h(),t}function l(e){var t=State.go(e);return t&&h(),t}function c(){return l(-1)}function d(){return l(1)}function h(){return f(State.passage,!0)}function f(e,t){var r=e;b=v.Playing,TempState={},State.clearTemporary();var a=void 0,n=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),w=Util.now(),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{a=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=v.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(y,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},y),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=v.Playing,Story.has("PassageDone"))try{n=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(a),s.prepend(l.output)),null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(n),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=v.Idle,w=Util.now(),s[0]}function p(e,t,r){var a=!1;switch(r){case undefined:break;case"replace":case"back":a=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}f(e,a)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var v=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),y=40,b=v.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:v},minDomActionDelay:{value:y},init:{value:e},start:{value:t},restart:{value:r},state:{get:a},isIdle:{value:n},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:h},play:{value:f},display:{value:p}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i;var r=/(?:\\n|\\t|\\s|\\|\r)/g,a=new RegExp(r.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});return t=function(e){if(null==e)return"";var t=String(e);return t&&a.test(t)?t.replace(r,function(e){return n[e]}):t},function(){function r(t,a){var n=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:a||null},tags:{value:Object.freeze(a&&a.hasAttribute("tags")?a.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return n.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch(void 0===e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){var e=this.text;return this.tags.includes("Twine.image")?e="[img["+e+"]]":(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,a=document.createElement("div");return jQuery(a).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:a,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,a,t)}),Story.has("PassageHeader")&&new Wikifier(a,Story.get("PassageHeader").processText()),new Wikifier(a,this.processText()),Story.has("PassageFooter")&&new Wikifier(a,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:a,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,a,t)}),this._excerpt=r.getExcerptFromNode(a),a}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<span class="error" title="'+e+'">'+L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e})+"</span>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var a=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(a)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),a=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*)(?:|[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return a?a[1]+"…":"…"}}]),r}()}(),Save=function(){function e(){if("cookie"===storage.name)return a(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),O(e.autosave)&&(t=!0);for(var n=0;n<e.slots.length;++n)O(e.slots[n])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function a(){return storage.delete("saves"),!0}function n(){return i()||d()}function i(){return"cookie"!==storage.name&&void 0!==Config.saves.autosave}function o(){return null!==r().autosave}function s(){return r().autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var a=r(),n={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(n.metadata=t),a.autosave=T(n),C(a)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&-1!==P}function h(){return P+1}function f(){if(!d())return 0;for(var e=r(),t=0,a=0,n=e.slots.length;a<n;++a)null!==e.slots[a]&&++t;return t}function p(){return 0===f()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function v(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function y(e,t,a){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var n=r();if(e>=n.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=a&&(i.metadata=a),n.slots[e]=T(i),C(n)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void UI.alert(L10n.get("savesDisallowed"));var r=null==e?Story.domId:Util.slugify(e),a=r+"-"+function(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),a=e.getHours(),n=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),a<10&&(a="0"+a),n<10&&(n="0"+n),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+a+n+i}()+".save",n=null==t?{}:{metadata:t},i=LZString.compressToBase64(JSON.stringify(T(n)));saveAs(new Blob([i],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var a=void 0;try{a=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(a)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(T(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,a=0,n=t.length;a<n;++a)if(null!==t[a]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function O(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function T(e){if(null!=e&&"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(O(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:a},ok:{value:n},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:h},isEmpty:{value:p},count:{value:f},has:{value:g},get:{value:m},load:{value:v},save:{value:y},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}a(),g.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&g.filter(function(e){return e.type!==m.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function a(){var e=t(),r=storage.get("settings")||t();g.filter(function(e){return e.type!==m.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function n(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)n(),a();else{if(null==e||!h(e))throw new Error('nonexistent setting "'+e+'"');var t=f(e);t.type!==m.Header&&(settings[e]=t.default)}return r()}function o(e,t){g.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var a=[];throw arguments.length<1&&a.push("type"),arguments.length<2&&a.push("name"),arguments.length<3&&a.push("definition"),new Error("missing parameters, no "+a.join(" or ")+" specified")}if("object"!==(void 0===r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(h(t))throw new Error('cannot clobber existing setting "'+t+'"');var n={type:e,name:t,label:null==r.label?"":String(r.label).trim()};switch(e){case m.Header:break;case m.Toggle:n.default=!!r.default;break;case m.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(n.list=Object.freeze(r.list),null==r.default)n.default=r.list[0];else{var i=r.list.indexOf(r.default);if(-1===i)throw new Error("list does not contain default");n.default=r.list[i]}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(n.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(n.onChange=Object.freeze(r.onChange)),g.push(Object.freeze(n))}function u(e,t){s(m.Header,e,{label:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.List].concat(t))}function d(){return 0===g.length}function h(e){return g.some(function(t){return t.name===e})}function f(e){return g.find(function(t){return t.name===e})}function p(e){h(e)&&delete settings[e];for(var t=0;t<g.length;++t)if(g[t].name===e){g.splice(t,1),p(e);break}}var g=[],m=Util.toEnum({Header:0,Toggle:1,List:2});return Object.freeze(Object.defineProperties({},{Types:{value:m},init:{value:e},create:{value:t},save:{value:r},load:{value:a},clear:{value:n},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},isEmpty:{value:d},has:{value:h},get:{value:f},delete:{value:p}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(a))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}function t(e){if(n.includes(e.title)&&e.tags.includesAny(a))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}var a=["widget"],n=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"],i=function(e){var t=[].concat(a),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(a.unshift("script","stylesheet"),n.push("StoryTitle"),Config.passages.start=function(){return Config.debug=!0,"START_AT"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),a=new Passage(r.attr("tiddler"),this);a.title===Config.passages.start?(e(a),c[a.title]=a):a.tags.includes("stylesheet")?(i(a),d.push(a)):a.tags.includes("script")?(i(a),h.push(a)):a.tags.includes("widget")?(i(a),f.push(a)):(t(a),c[a.title]=a)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage');var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r);case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":for(var s=0,u=o[e].length;s<u;++s)if(o[e][s]==t){n.push(o);break}break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.prop("disabled",!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.prop("disabled",!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),
+jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?L10n.get("savesSavedOn")+" "+new Date(t.autosave.date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(i),i.addClass("empty"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?L10n.get("savesSavedOn")+" "+new Date(t.slots[s].date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(h),h.addClass("empty"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2")),o=jQuery(document.createElement("p"));return n.attr("id","header-body-"+a).append(i).append(o).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void o.attr("id","header-label-"+a).wiki(t.label)}var s=t.name,u=Util.slugify(s),l=jQuery(document.createElement("div")),c=jQuery(document.createElement("label")),d=jQuery(document.createElement("div")),h=void 0;switch(l.attr("id","setting-body-"+u).append(c).append(d).appendTo(e),c.attr({id:"setting-label-"+u,for:"setting-control-"+u}).wiki(t.label),null==settings[s]&&(settings[s]=t.default),t.type){case Setting.Types.Toggle:h=jQuery(document.createElement("button")),settings[s]?h.addClass("enabled").text(L10n.get("settingsOn")):h.text(L10n.get("settingsOff")),h.ariaClick(function(){settings[s]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[s]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[s]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default})});break;case Setting.Types.List:h=jQuery(document.createElement("select"));for(var f=0,p=t.list.length;f<p;++f)jQuery(document.createElement("option")).val(f).text(t.list[f]).appendTo(h);h.val(t.list.indexOf(settings[s])).attr("tabindex",0).on("change",function(){settings[s]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default,list:t.list})})}h.attr("id","setting-control-"+u).appendTo(d)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'"></button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'"></button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.prop("disabled",State.length<2),t.prop("disabled",State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").prop("disabled",State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").prop("disabled",State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarAddWatch"),t=L10n.get("debugBarWatchAll"),n=L10n.get("debugBarWatchNone"),o=L10n.get("debugBarWatchToggle"),d=L10n.get("debugBarViewsToggle"),h=jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+o+'" aria-label="'+o+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+n+'" aria-label="'+n+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+d+'" aria-label="'+d+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div></div>');g=jQuery(h.find("#debug-bar-watch").get(0)),m=jQuery(h.find("#debug-bar-watch-list").get(0)),v=jQuery(h.find("#debug-bar-turn-select").get(0));var f=jQuery(h.find("#debug-bar-watch-toggle").get(0)),p=jQuery(h.find("#debug-bar-watch-input").get(0)),y=jQuery(h.find("#debug-bar-watch-add").get(0)),b=jQuery(h.find("#debug-bar-watch-all").get(0)),w=jQuery(h.find("#debug-bar-watch-none").get(0)),k=jQuery(h.find("#debug-bar-views-toggle").get(0));h.appendTo("body"),f.ariaClick(function(){g.attr("hidden")?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),s()}),p.on(":addwatch",function(){r(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),p.trigger(":addwatch"))}),y.ariaClick(function(){return p.trigger(":addwatch")}),b.ariaClick(a),w.ariaClick(i),v.on("change",function(){Engine.goTo(Number(this.value))}),k.ariaClick(function(){DebugView.toggle(),s()}),jQuery(document).on(":historyupdate.debug-bar",c).on(":passageend.debug-bar",function(){u(),l()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){o(),c(),u(),l()}function r(e){h.test(e)&&(p.pushUnique(e),p.sort(),u(),l(),s())}function a(){Object.keys(State.variables).map(function(e){return p.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return p.pushUnique("_"+e)}),p.sort(),u(),l(),s()}function n(e){p.delete(e),u(),l(),s()}function i(){for(var e=p.length-1;e>=0;--e)p.pop();u(),l(),s()}function o(){if(session.has("debugState")){var e=session.get("debugState");p.push.apply(p,_toConsumableArray(e.watchList)),e.watchEnabled?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function s(){session.set("debugState",{watchList:p,watchEnabled:!g.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function u(){if(0===p.length)return void g.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,i=p.length;a<i;++a)!function(t,a){var i=p[t],o=i.slice(1),s="$"===i[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",i).ariaClick({one:!0,label:e},function(){return n(i)}),c.text(d(s[o])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(i).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),g.empty().append(t)}function l(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void m.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(p);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);m.empty().append(a)}function c(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);v.empty().prop("disabled",e<2).append(r).val(State.activeIndex)}function d(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?d(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!f.test(e)}).forEach(function(e){return r.push(d(e)+": "+d(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(d(t)+" → "+d(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(d(t)+": "+d(e[t]))}),t+" {"+r.join(", ")+"}")}var h=new RegExp("^"+Patterns.variable+"$"),f=/^\d+$/,p=[],g=null,m=null,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},watch:{value:r},watchAll:{value:a},unwatch:{value:n},unwatchAll:{value:i}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:23,patch:4,prerelease:null,build:8478,date:new Date("2018-02-02T03:16:09.116Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),UIBar.start(),Config.debug&&(DebugBar.init(),DebugBar.start()),window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version},LoadScreen.unlock(e)}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);}
+	</script>
+</body>
+</html>
diff --git a/devNotes/sugarcube stuff/important for updating sugarcube.txt b/devNotes/sugarcube stuff/important for updating sugarcube.txt
index c22af1228b78c8fd129fed5fac74ca45b26686d8..daa527a3713e6aca45ff10ba4e45ddad65022e18 100644
--- a/devNotes/sugarcube stuff/important for updating sugarcube.txt	
+++ b/devNotes/sugarcube stuff/important for updating sugarcube.txt	
@@ -1 +1,11 @@
-search for /* look here for changes */ in the header backup.
\ No newline at end of file
+search for /* look here for changes */ in the header backup.
+
+,[{key:"_serialize",value:function(e)
+
+return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.
+
+
+
+
+
+/* look here for changes */{return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}();/* changes end here */
\ No newline at end of file
diff --git a/devNotes/twine JS b/devNotes/twine JS
index 4814b9e9196bdd6b4afebb2ab5a6a22519e1466a..4b4c4e0b62246d2c608af64e4d0b983b5bb8b17a 100644
--- a/devNotes/twine JS	
+++ b/devNotes/twine JS	
@@ -1093,6 +1093,11 @@ window.repGainSacrifice = function(slave, arcology) {
 			* arcology.FSAztecRevivalist / 100 / ((State.variables.slavesSacrificedThisWeek || 0) + 1));
 };
 
+window.bodyguardSuccessorEligible = function(slave) {
+	if(!slave) { return false; }
+	return (slave.devotion > 50 && slave.muscles >= 0 && slave.weight < 100 && slave.boobs < 8000 && slave.butt < 10 && slave.belly < 5000 && slave.balls < 10 && slave.dick < 10 && slave.preg < 20 && slave.fuckdoll == 0 && slave.fetish != "mindbroken" && canWalk(slave));
+};
+
 window.ngUpdateGenePool = function(genePool) {
   var transferredSlaveIds = (SugarCube.State.variables.slaves || [])
     .filter(function(s) { return s.ID >= 1200000; })
@@ -2342,6 +2347,11 @@ window.getSlaveCost = function(s) {
 	return cost;
 };
 
+window.menialSlaveCost = function() {
+	var df = State.variables.menialDemandFactor;
+	return random(998,1001) + Math.trunc(Math.sign(df) * Math.sqrt(1 - Math.exp(-1*Math.pow(df/500, 2)*(4/Math.PI + 0.140012 * Math.pow(df/500, 2))/(1 + 0.140012 * Math.pow(df/500, 2))))*150); /* https://en.wikipedia.org/wiki/Error_function */
+};
+
 window.getSlaveStatisticData = function(s, facility) {
 	if(!s || !facility) {
 		// Base data, even without facility
@@ -4936,15 +4946,17 @@ if(eventSlave.fetish != "mindbroken") {
 			}
 		}
 
-		if(isFertile(eventSlave)) {
-			if(eventSlave.devotion > 50) {
-				if(State.variables.PC.dick != 0) {
-					if(eventSlave.fetish == "pregnancy" || eventSlave.energy > 95) {
-						if(eventSlave.eggType == "human") {
-							if(eventSlave.fetishKnown == 1) {
-								if(eventSlave.vagina != 0) {
-									if(eventSlave.anus > 0) {
-										State.variables.RESSevent.push("impregnation please");
+		if(State.variables.seePreg != 0) {
+			if(isFertile(eventSlave)) {
+				if(eventSlave.devotion > 50) {
+					if(State.variables.PC.dick != 0) {
+						if(eventSlave.fetish == "pregnancy" || eventSlave.energy > 95) {
+							if(eventSlave.eggType == "human") {
+								if(eventSlave.fetishKnown == 1) {
+									if(eventSlave.vagina != 0) {
+										if(eventSlave.anus > 0) {
+											State.variables.RESSevent.push("impregnation please");
+										}
 									}
 								}
 							}
@@ -5346,8 +5358,10 @@ if(eventSlave.fetish != "mindbroken") {
 		}
 	}
 
-	if(eventSlave.bellyPreg >= 10000) {
-		State.variables.RESSevent.push("hugely pregnant");
+	if(State.variables.seePreg != 0) {
+		if(eventSlave.bellyPreg >= 10000) {
+			State.variables.RESSevent.push("hugely pregnant");
+		}
 	}
 
 	if(eventSlave.hormoneBalance >= 50) {
@@ -5433,7 +5447,7 @@ if(eventSlave.fetish != "mindbroken") {
 				}
 
 				if(eventSlave.bellyPreg >= 14000) {
-					if(eventSlave.pregType < 50) {
+					if(eventSlave.broodmother == 0) {
 						if(eventSlave.births > 10) {
 							if(eventSlave.assignment == "whore" || eventSlave.assignment == "serve the public") {
 								if(eventSlave.amp != 1) {
diff --git a/devTools/AutoGitVersionUpload.sh b/devTools/AutoGitVersionUpload.sh
index 15a861d51802470f4c85f6c30fb67cbcde3f8fa9..959e6ca43eeaf9845a06c86e109d9bb741275e8a 100644
--- a/devTools/AutoGitVersionUpload.sh
+++ b/devTools/AutoGitVersionUpload.sh
@@ -1,34 +1,17 @@
-## 	Requires MEGAcmd, git, mv, cd, mkidr, echo
 #!/bin/sh
-LocalDir=~/fc-pregmod/
-RemoteDir=FCGIT
-U=anon@anon.anon
-P=13245
-	mega-login $U $P
-if  [[ $1 = "-NewStart" ]]; then
-	echo "Option -NewStart is on"
-	mega-mkdir $RemoteDir
-	mega-export -a $RemoteDir
-	mkdir $LocalDir
-	git clone https://gitgud.io/pregmodfan/fc-pregmod.git $LocalDir
-	cd $LocalDir/
-	AbrevHash=`git log -n1 --abbrev-commit |grep -m1 commit | sed 's/commit //'`
-	FullHash=`git log -n1 |grep -m1 commit | sed 's/commit //'`
-	rm bin/*.html & git pull 
-	./compile-git > /dev/null
-	mv bin/*.html "bin/FC-pregmod-CommitDate-$(date '+%F %H-%M' --utc --date="$(git show '--format=format:%cD' HEAD)").html"
-	mega-put bin/*.html $RemoteDir
-	mega-logout
-	echo "All done."
-else
-	echo "Option -NewStart is off"
-	cd $LocalDir/
-	AbrevHash=`git log -n1 --abbrev-commit |grep -m1 commit | sed 's/commit //'`
-	FullHash=`git log -n1 |grep -m1 commit | sed 's/commit //'`
-	rm bin/*.html & git pull 
-	./compile-git > /dev/null
-	mv bin/*.html "bin/FC-pregmod-CommitDate-$(date '+%F %H-%M' --utc --date="$(git show '--format=format:%cD' HEAD)").html"
-	mega-put bin/*.html $RemoteDir
-	mega-logout
-	echo "All done."
-fi
+#Requires MEGAcmd, git, mv, cd, mkidr, echo
+COUNTER=0 
+while [ $COUNTER -ge 0 ]; do
+LocalDir=~/fc-pregmod/ RemoteDir=FC-GIT U=anon@anon.anon P=13245 && mega-login $U $P
+	if [ $COUNTER -eq 0 ]; then mega-mkdir $RemoteDir && mega-export -a $RemoteDir && mkdir $LocalDir && git clone https://gitgud.io/pregmodfan/fc-pregmod.git $LocalDir
+	fi 
+	 cd $LocalDir/ && AbrevHash=`git log -n1 --abbrev-commit |grep -m1 commit | sed 's/commit //'`
+	if [ $COUNTER -eq 0 ]; then
+		 echo "First run. Compliling, formatting and placing .html." && ./compile > /dev/null && mv bin/FC_pregmod.html "bin/FC-pregmod-$(date '+%F-%H-%M' --utc --date="$(git show '--format=format:%cD' HEAD)")-$AbrevHash.html" && mega-put bin/*.html $RemoteDir && echo "Compiled .html placed."
+	else
+		git pull| if [ "Already up to date" ]; then echo "No updated files, exiting." && mega-logout > /dev/null && exit 
+		else echo "Compliling, formatting and placing .html." && ./compile > /dev/null && mv bin/FC_pregmod.html "bin/FC-pregmod-$(date '+%F-%H-%M' --utc --date="$(git show '--format=format:%cD' HEAD)")-$AbrevHash.html" && mega-put bin/*.html $RemoteDir && echo "Compiled .html placed."
+		fi 
+	fi  
+	mega-logout > /dev/null && let COUNTER=COUNTER+1 && clear && sleep 900s
+done
\ No newline at end of file
diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/LICENSE b/devTools/tweeGo/storyFormats/sugarcube-2/LICENSE
index 1e72fe93daa7691bc183544225a43eeabaedb33b..b814382d14423f86d158fc90901a22685ff1bf39 100644
--- a/devTools/tweeGo/storyFormats/sugarcube-2/LICENSE
+++ b/devTools/tweeGo/storyFormats/sugarcube-2/LICENSE
@@ -1,5 +1,5 @@
 
-Copyright (c) 2013-2017 Thomas Michael Edwards <thomasmedwards@gmail.com>.
+Copyright (c) 2013-2018 Thomas Michael Edwards <thomasmedwards@gmail.com>.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/header.html b/devTools/tweeGo/storyFormats/sugarcube-2/header.html
index 9577ca646a4f4cc78b85a7da30fcd22a1f2efadd..3d857495973b246b6e1359b0ab5976f4920cc717 100644
--- a/devTools/tweeGo/storyFormats/sugarcube-2/header.html
+++ b/devTools/tweeGo/storyFormats/sugarcube-2/header.html
@@ -6,9 +6,9 @@
 <meta name="viewport" content="width=device-width,initial-scale=1" />
 <!--
 
-SugarCube (v2.22.0): A free (gratis and libre) story format.
+SugarCube (v2.23.4): A free (gratis and libre) story format.
 
-Copyright © 2013–2017 Thomas Michael Edwards <thomasmedwards@gmail.com>.
+Copyright © 2013–2018 Thomas Michael Edwards <thomasmedwards@gmail.com>.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -96,14 +96,14 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
 <style id="style-normalize" type="text/css">/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}</style>
 <style id="style-init-screen" type="text/css">@-webkit-keyframes init-loading-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes init-loading-spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes init-loading-spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}#init-screen{display:none;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%;font:28px/1 Helmet,Freesans,sans-serif;font-weight:700;color:#eee;background-color:#111;text-align:center}#init-screen>div{display:none;position:relative;margin:0 auto;max-width:1136px;top:25%}html[data-init=lacking] #init-screen,html[data-init=loading] #init-screen,html[data-init=no-js] #init-screen{display:block}html[data-init=lacking] #init-lacking,html[data-init=no-js] #init-no-js{display:block;padding:0 1em}html[data-init=no-js] #init-no-js{color:red}html[data-init=loading] #init-loading{display:block;border:24px solid transparent;border-radius:50%;border-top-color:#7f7f7f;border-bottom-color:#7f7f7f;width:100px;height:100px;-webkit-animation:init-loading-spin 2s linear infinite;-o-animation:init-loading-spin 2s linear infinite;animation:init-loading-spin 2s linear infinite}html[data-init=loading] #init-loading>div{text-indent:9999em;overflow:hidden;white-space:nowrap}html[data-init=loading] #passages,html[data-init=loading] #ui-bar{display:none}</style>
 <style id="style-font" type="text/css">@font-face{font-family:tme-fa-icons;src:url(data:application/octet-stream;base64,d09GRgABAAAAACWoAA4AAAAAQhQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPihI/2NtYXAAAAGIAAAAOgAAAUrQXRm3Y3Z0IAAAAcQAAAAKAAAACgAAAABmcGdtAAAB0AAABZQAAAtwiJCQWWdhc3AAAAdkAAAACAAAAAgAAAAQZ2x5ZgAAB2wAABjCAAAq+uJ4WNtoZWFkAAAgMAAAADQAAAA2BZlJs2hoZWEAACBkAAAAIAAAACQIJwQZaG10eAAAIIQAAABuAAABOPTeAABsb2NhAAAg9AAAAJ4AAACeojKW6m1heHAAACGUAAAAIAAAACAA6gvwbmFtZQAAIbQAAAGPAAAC/eLsyKlwb3N0AAAjRAAAAfwAAAM0412SIHByZXAAACVAAAAAZQAAAHvdawOFeJxjYGRWYZzAwMrAwVTFtIeBgaEHQjM+YDBkZGJgYGJgZWbACgLSXFMYHF4wvPBhDvqfxRDFHMQwDSjMCJIDANLeC6V4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF74/P8PUvCCAURLMELVAwEjG8OIBwC4Ywb6AAAAAAAAAAAAAAAAAAB4nK1WaXMTRxCd1WHLNj6CDxI2gVnGcox2VpjLCBDG7EoW4BzylexCjl1Ldu6LT/wG/ZpekVSRb/y0vB4d2GAnVVQoSv2m9+1M9+ueXpPQksReWI+k3HwpprY2aWTnSUg3bFqO4kPZ2QspU0z+LoiCaLXUvu04JCISgap1hSWC2PfI0iTjQ48yWrYlvWpSbulJd9kaD+qt+vbT0FGO3QklNZuhQ+uRLanCqBJFMu2RkjYtw9VfSVrh5yvMfNUMJYLoJJLGm2EMj+Rn44xWGa3GdhxFkU2WG0WKRDM8iCKPslpin1wxQUD5oBlSXvk0onyEH5EVe5TTCnHJdprf9yU/6R3OvyTieouyJQf+QHZkB3unK/ki0toK46adbEehivB0fSfEI5uT6p/sUV7TaOB2RaYnzQiWyleQWPkJZfYPyWrhfMqXPBrVkoOcCFovc2Jf8g60HkdMiWsmyILujk6IoO6XnKHYY/q4+OO9XSwXIQTIOJb1jkq4EEYpYbOaJG0EOYiSskWV1HpHTJzyOi3iLWG/Tu3oS2e0Sag7MZ6th46tnKjkeDSp00ymTu2k5tGUBlFKOhM85tcBlB/RJK+2sZrEyqNpbDNjJJFQoIVzaSqIZSeWNAXRPJrRm7thmmvXokWaPFDPPXpPb26Fmzs9p+3AP2v8Z3UqpoO9MJ2eDshKfJp2uUnRun56hn8m8UPWAiqRLTbDlMVDtn4H5eVjS47CawNs957zK+h99kTIpIH4G/AeL9UpBUyFmFVQC9201rUsy9RqVotUZOq7IU0rX9ZpAk05Dn1jX8Y4/q+ZGUtMCd/vxOnZEZeeufYlyDSH3GZdj+Z1arFdgM5sz+k0y/Z9nebYfqDTPNvzOh1ha+t0lO2HOi2w/UinY2wvaEGT7jsEchGBXMAGEoGwdRAI20sIhK1CIGwXEQjbIgJhu4RA2H6MQNguIxC2l7Wsmn4qaRw7E8sARYgDoznuyGVuKldTyaUSrotGpzbkKXKrpKJ4Vv0rA/3ikTesgbVAukTW/IpJrnxUleOPrmh508S5Ao5Vf3tzXJ8TD2W/WPhT8L/amqqkV6x5ZHIVeSPQk+NE1yYVj67p8rmqR9f/i4oOa4F+A6UQC0VZlg2+mZDwUafTUA1c5RAzGzMP1/W6Zc3P4fybGCEL6H78NxQaC9yDTllJWe1gr9XXj2W5twflsCdYkmK+zOtb4YuMzEr7RWYpez7yecAVMCqVYasNXK3gzXsS85DpTfJMELcVZYOkjceZILGBYx4wb76TICRMXbWB2imcsIG8YMwp2O+EQ1RvlOVwe6F9Ho2Uf2tX7MgZFU0Q+G32Rtjrs1DyW6yBhCe/1NdAVSFNxbipgEsj5YZq8GFcrdtGMk6gr6jYDcuyig8fR9x3So5lIPlIEatHRz+tvUKd1Ln9yihu3zv9CIJBaWL+9r6Z4qCUd7WSZVZtA1O3GpVT15rDxasO3c2j7nvH2Sdy1jTddE/c9L6mVbeDg7lZEO3bHJSlTC6o68MOG6jLzaXQ6mVckt52DzAsMKDfoRUb/1f3cfg8V6oKo+NIvZ2oH6PPYgzyDzh/R/UF6OcxTLmGlOd7lxOfbtzD2TJdxV2sn+LfwKy15mbpGnBD0w2Yh6xaHbrKDXynBjo90tyO9BDwse4K8QBgE8Bi8InuWsbzKYDxfMYcH+Bz5jBoMofBFnMYbDNnDWCHOQx2mcNgjzkMvmDOOsCXzGEQModBxBwGT5gTADxlDoOvmMPga+Yw+IY59wG+ZQ6DmDkMEuYw2Nd0ayhzixd0F6htUBXowPQTFvewONRUGbK/44Vhf28Qs38wiKk/aro9pP7EC0P92SCm/mIQU3/VdGdI/Y0Xhvq7QUz9wyCmPtMvxnKZwV9GvkuFA8ouNp/z98T7B8IaQLYAAQAB//8AD3icrToNcBzVefe9/b3dvd29u909/dyd7ke6k86yLEunOyHJsrCxJWyJGmEcLMDYxBhHNsZQBzOAkjQmFDrGIq5gHEIcCILOAGZq3IQO04RkIGkgaUMKMbQznSlJW0wgJtOQHxRr1e+93TvJwq7JTD3y2/f//bzvfX/vAhAIzL3KPcYNBFIB8UR9EJYuAcuAqGNbOiwDSczkuorlaJ6WTeVSRwMIDveY8aN20GztjzMhW4P2H+kNUPM5NaVNQE0K3tWM77vv8rJqgnT33VJE4WWIfd/QbKHZjcXcZiFAqjCDgUJA/mZTWOIIwi0vAwNiUjkW9THIZs6DAbnj6ffGP/P+0y2vv+5SXGLKuXHJPJH92c+yT7x3883wnI9W/DxI4T9+bm7uOL+MUwNywAg0BJYFQgNKa2NDzFBEjqeM0SFXLHU4YKe7yjFoSmdEKWw5nemOUj5czMXCliilM7lyuFgqp3HaDf1j/fhH+s6cfm4MEpA8c0BSQBO5CUkD5fJi05kDjSUoNnETTUUSXtpPVm0aGHDdmV0nNkPiMUWeHZMVRSZPSlp0dqypCKVG8iT9IK5AEeamyZGAjecW5tm5SSBm8ojiSqBsYoXDTRtuymw13V8axjB+p2EPlsMGcRzTTRkGOLRpmk/AzSZ+A97ecx+QN8g9gUbc26F7N+GJiN5pLGMA8hUo7EQcHI455A0PwrS3I37N+bZhTE8bex1aeeIJ4+MTjTY6gcH+iIvgGWQRdh2TR9sS81kspCzytguLfBcyuBOLXuhwYnZnh8NFUs6plLPLScGpWBKwkYztwsop7Hie9r7rYK/9brWXTg9U+RiBX+GJiyc0rgIv7UNJe3vPjrFdyZOV/byNUkyW/0AuIi/h+h6U5a64SmW5ieGcya2AYimG+EUtnZN08ImgveV+KOYykiiJVMrbkI+dHUkC9+nyPUFdD94j639r1uTq7FiSNrR1hXS8uLbGapYUSbpaJvzmp5aODbU9iJNBU1gJa5LFTCqihNpDigmWWtc2GjUy7Y2m3hHk14qmPJXp2cTInZudO85dhzw2AuXAJQHl+Yt7l0RVjkO8u4q5JZARE2A5yNxStNgGWcQSj7izA1HucCgJOsRsb7xYWgn9XAwvRqaN4HAS4ENF3kXFFovJ/muW3zsYDK3jxaCQbOouOPXZPmBDNZG4krS0N2/9wakf7hHv+IcPX/jcaGWZAp9fvrFtv66UeSlXn4zYdZo5kLNwIJJRTbEu3jz62Zf37Xv5l7RAeugZfAQ7kJ5koA3PoJB1eP8MpHRVWqpygyITpiKz4DCoHMENlun+wrDA0bNZ9jmJZdZwhhx9UnewMKztg2yAlie9j6O7Lzrks7tYdRdOO4u/FJ9e5G93RyFTJ1f5G17IZDs7z25uEfuFBYwlvYpUUuTnKJO6umg5IymD88yGGxbycjN2JOkIVk6wUoEzm/0O5T/Owb92Jg8NyL/6qFrl30IZ5nSgMp3nch7DkvOMCaMeoQ1U4JZxQncenmAMmcAei/S7V9CvAccW8mczwtMCceSQ8nwhXWuKAeQPJbRCc9RnhoSyhvBL+WgxTzsk0Y567IFj+35wa4Xq7ykS5YIm7UIdq4iCfKcsiIoSvFFWONUnFovZoXHKhXE69R9hTOIEgZPcJ0VZRrx+i3j9hhtFPqQDnYjX8uaEpS2+F4twiVkOylSJAwfvBZO3XBnoTaEHtltSWAGKIEl3SJIQ1CRESIRnLFtJRc88GckEbQuOBTO5zBXziL0JIPKiyMtzggwiMc+czmbDEbDMbJaLhC3LPzPuFOKaD6zEM+tt15gNxTPLIg5dvglCfGmbmakYmqmKsEfRVOWWAXjqvEzVeamT6botq9321Vu2rIb7KOrufmZ24LWmoiI3yspJJ65e704JprBSFGH3pxXLhAQe9fBzbM1rq7YAm1dsctvZSiqu8G94rxwS/LQ7JYorRR0XXq/GmSh4dJADKAsSk70ajQ8gHdE0MhzVjOCbVDSvKINd1PhKVN+fgMTG2zYCvIaq+V2mmsNTP36IRLD6xO7ejWTDisfc7zCVD6tQW+/eMTW1Y3fSt20foe+hBZpQ3zfGfH3vyzmCZNvHFoJFVPrRjj7m6I26M3r7KHQxgD5c2H/4tQdIeJLJ+yQDvTsZOwv4jYfJQxVaxxmtKtNTTVaQnRmS6kkWvfBoNvCeIT55jt41PJZwpg3YYeJYGK+dppgK/sF+R/8ggZIOBlnyNoK/qpwokLZ6uCFRKCTKV8HeGaYksPg2Xj/3fyQZb6dhGWv2QLLQU4DW7lZwf77Hw+vb3AjzexKIVywkEXoGlB1JUqr4FW3A7BZlDzgzhZ5W0tyfI1da7mmn13JvsZOFxLuJIRsmLXJVskByA41iu/uvSds9bWOnPZQ4lSgANm+xqQ6gMPlGH2YR79rSDIXLXQBujHZSxkCpSIeynwCdNxEFJ2HVmSDaFPxQYoIN2BfCM8E6zTCu66VDSQ97KkPfIa8i7nGUITNAZagDhYFJjeg5rXh+bcBuYamT/JWmRVE8Iopeb/3ud1ZdSIs4TkQLcaogJ63Z5dGUxEfefz8qSKko+Qm2PB/ZgyEEMngmjkjovYB0GBog+n9COzD7MiQ73pfOA5S8NLseIst+QWbPC9y/J8dRv7QFliCNWcnzAYlI3fE8hdNVbBPY1WEeZxm8m5mKOdypQRG1qhiRgQBnZbr7N20qT1ipoPsLVYWEGq8hE3BoLPn2tV8PhWVe0WTB4nIN3WMD7cmIiDZEhaSSROulWMbk2+sX4LIs0Iq4NNdUfV3mDeqCbaEOligmbYSFCaU0VRVULrhTKoKlIMubNvV3ZyyOByWMilXkBpNjcIjihTjBrwzF/bmKF1iMJNsHxrobcnxElDVF0C3u69fevP5txIsEcUrVZyR96DPqiI/C+zGTp0uZGkXVP6PG1RncET7Ey/eKjnX885QeWw83krsCIVyvMp8TD9P3rEvMFUkFZxS6Rw25ytWQJ/52/tqLyQSDrc7Dpiq/H2XDgYsVBgjnK7BF95EwLKLNKLh0bg5x74VXPNwJO1fq7raB588j7pbhat78pDKjPE1td1Jl6Hhn8Q73LdISsCrrgwuijljQ28Tinnavx+Xu9ap6jYqn2QzNaly7RoVJ99MoBl/DvmtU1X0Lu3FCnO37XXKEW832Nai8BYnDKKvIF92W3F9dotK94ahCNyJPuW+5b2L1WrQ2X6fSc1TBejLg77uvsm8FX2b1ghWk6cbjuB1FUIVm9y0f6aMKfMbdhjshNGihFKgIgE7044ZvkbXz+zbh3chXN/f35Z6mOyF2b/m7H6V7HVV3XYOYtiDOig/J25bh+xPuAPMdxRPRc8V1YU8Z2mEv9OIO2O6DTg8Wtt2C3+lCcjBRmEaNVbDhi0nLnUK1ttvqdVpsexruQ93WGnf3T9s47N+te7nN5FeohRGeChUfIvZx5htAPYTNjQl/ea/tTlkW7LZ7nIK3dyNsGUwWpq0+a4k/ALvozB5nurkCqwthUdrq5mnzBD/tu5rpfPVYuC6L0VZwnMfd/YnGxgTc97jjFNjGFvRQ6iyrYPfZjyPVyQJM233YRF5YVb1xgLzjwVMX3NOwZ/K7wtJZx4W8pGRNNzf4ZOBeCKgPCxuKcUYmxQNycbjP5wGlEJGk8OZc369tR3gtaZ+X6CbmVkIONRVJcugpluk1TQL1Fqmfy1ELVi4hYy1zJhYNj4zu7RkfbuebN17fv+q2Fj4sDgtE7Hv2uk89uneIH7j9yNWjR1YMmUvJSzO6s9QcGWkbHt83PtzW0yWCMMLr4roNcMm+o88e3XdJ/0VDkWiFDxSv5YhXq8d3nVAryjjtoDXp7Ojn2gg6ijGHIUxDpQZ0Y2lQym2+5NZHN219to8XhsUw33Lb6p6dG9DVGN598/bmkXA0NoPeR2t4qO/h0U8d3bcKtmB5yeilos6PCCB29fgINjeNmEsdfaYmGhm6qB9RrPhEx7mrEbfGwCDauZXNJo09wLJ1oAhSe1NxWkUDKKJofMqeE+szt8S4K9JYmjbLXRRtylOU1vWN//mVy4/0DVGNqM9QJT7SvL287ot5MSZoGC/oyHTWO7p3vdd5s6RB439/5fKH6aIaEDh46AVkpMqWo1YdaWpe1690hzT4e79jxGuLvD+R0iUwuiJ+TLUM4+yrA8aAdsVAsX1JFgMsTkCF4ceBdtgLZ8oXaENnPpfPipLA6A57nn4+XI1hUbCoYmig1KP5pH44Kybnq4cUyatKivvTmXpeOC7y8J4il3yHncWVz+SDrc5zTqucPyYro3Af7XP30/I8ddJxsQAgXIFbz37QdsmqNhJl0K6145C0rkWzExAX8aM3sDpwYyA8oF83PNBXWu7xRPQMIT1E6syw7M4F2tFwOmyhVKQ7+uH/lz9DribLBF4jsuze94lYBc+7LzLOXMw4c+66u52EZz/QLEWxyA0XZFuA9+OVUfSTwyzWCw0o3a0Jx9BYTrKp2AZiEi9qGSs6OFhZkPboRDXesZKpbcd3UOjV8dMgNNQhr1pJh0Qy5petVIQ48Zq1KefMj7zIhluf3pQeBs5JfUuJMGcgHFRik16gP1mzHX2EmroaYhmVysETLOo54aSGU/gHzbEwdRvCMXuGhUczHj3HkZ42Rk9LYIDS07c8YRuqSBg91Pmnwo8VghFR2Y9oKTmxziSwi0HTN2I1cMvT3E7Fezk/Pae1UnYyUwqdRnqCNZPoXSJSk6hxGWmRBKqBSMqyTP97/wmaJcQCGpqbG5Iw6vhEtHpEVWihepULpFG3rqG0rOha2qTxJIC0YOSYFjrxEtP8nlSlIxvu7PLcRKmS76mk04Sq0HoTqJ04CcfcK+DDIU34mhCX/dByaAiDy58ibicVeRdNJrNyezI2G/ESlUKsZDxiOtLJk/ChXCc9Imp+1nO2xL6QZIkkWiizM7SHIF9q9K8ZpQDx8zOjgWaMzORvdrSGPJ2sEzRYZer9O2gmWD4zSTr6sSuH8Uc/IGjmyLIMOHUV0G48840967ixy2v6zIhcU+pr3bDj9u0bc1xfqUbO9sUuH3O/iqEbFPqaPbOBZuFTO57rx7mxvnDL7avRFLah/ei55LZCpKddjqz4OxhyH6YRLuzA0rcfY5yC8rQTcb08JdLYleZW8TZ0lGgSCyVfQoQtRDiPV6BqKLryzL7kqRmkuoGdE5UzlKWy39mJQlU1OChf1KrEHOYcsdMhvaO3j5JN+zZBXJZ2Kmq0WRSMDSFJGqmtC0q8eZesmfWxPxNNca3DC3KzYsg7MBBXhJ2yHmvy5sojNXVBmQvfhUdoxJ0NgiENWTzfqwd3SOjC927ceNvGjbfTUTNp13eIumhvAKEvJA/HTUW6Maj1CeJAUtBFrcOI1xugSWxubV1qqaRJ1gZvqiHLbKqwOo5TR9hELw7/iBsjL/t6WXl+SWN9VOO5RfnTtJcwreTFY35bWthGB+bMB+yOcGEDg4bztxbkUR0wh1h2kJWgV0awMR+Hjvn5mlrmu9BMCMpYsZynmQC8KR2xco4maZIg5jN5CU86ViJ/s27nzqlxgFc6167fuXP92s5XYOdDO8j4pYNYw16IjR8eH79U0ra3Y6V9uyat20l2P7AbsKpjJ81Tzs39nt9PXgqYeL9LNB+Yi9uMN1BEZ0knnvijDiZLEDg6dJ30NuA9oQEVh9U0uk/kgO8A+R94pvWy8YveWn0ZWbfmLepJXdqz5Z5B94qhu7d2k75r7l0Lx2gVtvTMr6FXgDY7p56d6qSNS+/e0ke6r//CQ1/YXiTdW++u+FK/529HfC3klvzNhK3Te4txIUFlkuQ8tIjguXrUG6WAPWgMsIcDF664d3v3DHXwhQ07YMul2I9QDvtQXz+bokoej3uUo5mt1Qi7f/m58pGoIAyavsnnFiUl8cbhKTpRmI+CKw9Y1oKc5GvZZJCT6kWJcCHNzzDS3KTQKEocr/6Fe1GoUf+1rq/QG/W/hs9goz8E649Xc5M6HxXjAnDV9OT9spBFuwOC26Prv2bzQ3RhCHfwaYpW8+LxqOzlYOZR7/Kf/RbmXMktCzAr3jWP/Kqt5KUqZDq4uTqyBbYGfL17HcuL19KcjykyePSoAP2bNgILH1qOXXFwA9l471P3bOIvOwRXL8j+k0OjB6cPjrLCfe2sXP/824QcsAMZlOmGWiMo0rwb4K1qo+mH/LkBVlXdA+cFXFFWvz0//AXvbZ6+ac3GoyzHHvXfzCqvNILfLi9qV7KBJ/03OPbql/A+XlcDa3g9C1/rnPPU/XzkR4E3q/4p6kHES6V3vVx1M7x3EG4RnpwfhuT9B8mTF4BG6w/vZp7SbtoL4oJBkCuYe2+LL3GT6CtdzGKjNas6FGaHETyqOIeljCSdy4azYTwkLxFIL08OHSKaM+7sonl9vERpGguhHaS5bUgz24xu3ETTPsVKqntkIZfpqR1MdBfQKd6hmiFHviU1QZ260MQ2FSOcbfDmVoyFeHkb9rq/db9KFWsP6uutqz6LgZW6R+JrIjp86Gp6jSXL+7RoUv38yjEracH0NiVpKdu2ISBl27QDRdTKAT9WHoc/IL/p7w4sptcdmtpFR6IcZRnNXDnaT909x7Ykjj6PwmlFdP9FMuWgQvb8nAiKpHB7iS4/r+pk678LRCWOGpq9QwfOlOGlbpDkEPwThngKL7puibAY5LvMl+ZQQ8Yx4mxF/wZjkGJ7a3NjKl5jyjiJ/hAhLzVVExN+9qMpZsAyWImhu/eF2NlfcmS6bxq6lNlO9CZvxpjon/G7R5k1SqVwuFwOv3HTTZn0TTelSQs2wtjpPkNH8D/RH++b3mkosx0KLkzSlfi92qSrzPKX2arMTe692ChjJ7T5I75t3I487EIe5jXKQ6pg6Q83qs/lEn3noSFynmb4aOrBF9sEoBuHhKFYcL11up41emofLCQGE60wVdeDClSvn5qqM41Go7t+iuWUHqzrNrOGWTsFst5TtwLXXPk0Syc9fSX2rsBFmzadY6C/Fge8d+e5uXHkfyiQRc6vwTu2Ylkhz95Fq2/8+YVv/CxSqb7xxyqhDjDBRxFBxcQnSYzeBfrYNqGJjej4TLDfWEywII42hqZ+/BB/6I2DkCn0WS9uv3PD4Z0DpG/3oemDe7u5NS/aMOWtol60t2qCusYTSi19uHn1iHiQOpz2i2v6xx/4xqE9PfyqHQ+N3Ln9RftsmoxADcYAyvMt9Y73lr7wdwTUmb8g/u53GOaw6pPizJC9MJrEj7noG9sG1CNhmWN2BcF2dpRzGBfz5XrojEWZRxuj6aCYY0tiLJOTMmK2uJJQjxj/8hjKEB1iGHCj4JTpxczQzEtehAevG+5pUO12twtCjfG4I979yJB4a7RlZbDdVGV1OMgDQPZQY+ERm1wqiVyYJwJHMrGaP+o9YKbUlE2ApL6YEiyylNT9ESff74qtvCgqNSZcBVOa+2Hr9q9E70rVikGTcxRJ4BSQa6ImzpQIEXk+OFbqhvQRQ4souDWotqAiL2Xqm+AZ/Yz0kXcCOnvfqg1779vzOXtqtvPMii9Ig5+dwj87Kf4bQ6EJfdRt4PyQZYFY0/NXERbE5vPzi+As2njhToFqfp7h6ufXYTFiZ6MCryyG/xQX5qIBFddLfr6b+SYsHc3P1ocikRD5rxCMuNslxeBKuiZjzQpUY6kFvwNgPtyioHRxkEr9fv+HE5AwHFc9q0neOXOa/kiAi9ByQX3et1fZb2+q7yCL914QN5y1GVt/DOVaR29JPCECXV9iGaI84A7sQ9W3Y4dLZe4vVR1Mxd3Hc7rq7lNVOKjqHM9xqmiceVWXNTgoiO6fswpN0R/EfnefyHtnMvcsdw1nzMOJiSzGpQ+SPmclxmVRqlVM0HG5wNFSQYAIRhjE3ZDTsobwJbifVegTxj7sx7mCRwvp5XSWh6/QYs/TwjyMahKsVCYZVaeECMTR56MplPyzCfrSPO/dL0m8RwvpQ1oS56aF7i/58Mpn0eOHaKxcTNGd84cLd4oCvXPu3B+4a8kPUA7rmSzJ7E3Zy7OzuJEm/Mt+7Eh/pyDPMx7xF7luuh/CY9hDe4WZYLqvW+YhFlJiWX1PO0aOB6L0t3AVOUK7V/XSqP8Dx/CavHCY8erwC3jhyKHZR2nu9wXvpz4vKN4dwOIA22sZ/S1RTbhyBxbvF/XeXzEQpfEUTa0hLTTE+RigN9vzQhBp0RzT5OUaKazwlhEU8u0fx8D9XmGdwVmmZmpavDGuichhJJUz1nn5pp9yj5H3GG7DgZtovmnn5YNFiiT/JyIZqw6Uvd+i0TRIFwumFw7SVEg/TYvQDM/8hE9O4uTWEVlECuyU2tLW1oKK3jIk+bItDxy6TZKw36mttdZgKDxo1fIRzrFMSbrt0J/Cl8KVh1OcozuqGUyO7RxLBk3UrA6XfmDTF97qwAErpOl655GnjnTqOidyIQsHO08G/hcLt/j/AAB4nGNgZGBgAOLaW41M8fw2Xxm4mV8ARRguss1QhNC5H/9//Z/FUsEcBORyMDCBRAFTFwxveJxjYGRgYA76n8UQxVLGwPD/FUsFA1AEBfgBAHyYBUh4nGN+wcDAvACCWfSBNIgviMBM1kA6koGBMRWVBqsDYqYmiF4wHQkxg+kUBMPVWEP0gTDYvBdoahZAzYxEY0ciuWUBFjkoZimDYLC8IKpehmsQccYvSGYgYZB7YBhFL5o8cxTQjDUI/wIArpclrwAAAAAAAAA6AIYA3AEKAUgBgAGgAfoCYgKqAwIDOgOGA9wEQAR4BLYFAgU8BZoFzAYMBlIGmga6BtgG+AcYB0QHcAecB8gIAAg2CG4IpgjyCUAJrAo0CtALOAueDAoMYA0ADVANjg3mDiQOjg7GDvgPOA+ED84QPBB2EN4RNhGgEfISchKoEsgS6BMGEz4TXhOSE8QT+BQsFGIUiBTWFX0AAAABAAAATgBuAAYAAAAAAAIAAAAQAHMAAAAiC3AAAAAAeJx1kctOGzEUhn9DoIKgLloJdcdZIRDK5CKhSqyoogJrhLJDwgyeSzpjRx4HlGfgLcoz8Dp9j+76Z2KhqFJmZM93Ph/bxx4AX/AHCqvnnG3FCgeMVryFT/gReZv+JnKHfBd5B108RN6l/xV5H2d4idzFV/zmCqqzx2iK98gK39RR5C18Vt8jb9P/jNwh30fewaGaR96lf428j4l6i9zFsfo7drOFL/MiyMn4VEaD4bk8LsRRlVZXouehcL6RS8mcDaaqXJK6OtSml+lemTrb3Jp8Xmm/rtZ5YnxTOivDZLCur401XgfztNytec5HIWSSeVfLVdxHZt5NTRqSIoTZRb+/vj/GcJhhAY8SOQoECE5oT/kdYYAhf4zgkRnCzFVWCQuNikZjzhlFO9IwvmTLGFlaw4yKnCBlX9PUdD2Oa/Zlay1n3dLmXKei9xuzNvkJ7XLvso2F9SaselP2Na1tZ+i2wqePszV4ZhUj2sBZy1P4tmrB1X/nEd7XcmxKk9In7a0F2gv0+W44/z/KQo7lAHicbZLnlpswEIW5Bgy4bLLpvfeE9N57z76DLARWEJKOEEucpw8CO/kTncOdT6PhnlHxRt4wJt7/x47nYQQfAUKMESFGggmmmGGOLezBXmxjH/bjAA7iEA7jCI7iGI7jBE7iFE7jDM7iHM7jAi7iEi7jCq7iGq7jBlLcxC3cxh3cxT3cxwM8xCM8xhM8xTM8xwu8xCu8xhu8xTu8xwd8xCd8xhd8xTd8xw/sBLUlZuIkZZW2q0hzahvDRqocUyIpE4EWTR1WXDZ1sGRCz5yklBsqWBZwmauZk01mTqxl0nIlUyLs9r/Zej35m4kFl2XKftlAKFomTlKlmfQ1l74lRdB9dbxQqqyIKbc2MPQZGqbFKsqVaYnJ4ky1Ms24iQXLrYPE8GLZ07jRfaIvcf5JX+NoMhQ5jLoqFwenBS8Gpw7WTh05py6MaOtT2ibEGNXWKW1Da0i9nPY6dNe7CEWy7pc+5EJpvfJVnvtUFUHFZBPWS2LYxKqiECztVpINypAuGS2nvQ6Gs+H0hsk0U3ZznDETguua1/MNpLvMWH/RFGEuuobCihScxqS2zPC6jH4rVaVcxn1UjQ1yJW1QK2MTJ6nrPOqp0d3Vk1WoSVOz7p0oHeWdTbpoh5i3sVWpezp23AGTWch+Mmonu0o0Vb+l6RqdabLmRnveH9ru7j54nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZGFwAB9MiuAAAAA==) format('woff')}</style>
-<style id="style-core" type="text/css">html{font:16px/1 Helmet,Freesans,sans-serif}#store-area,tw-storydata{display:none!important;z-index:0}.no-transition{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}:focus{outline:thin dotted}body{color:#eee;background-color:#111}a{cursor:pointer;color:#68d;text-decoration:none;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}a:hover{color:#8af;text-decoration:underline}a.link-broken{color:#c22}a.link-broken:hover{color:#e44}span.link-disabled{color:#aaa}area{cursor:pointer}button{cursor:pointer;color:#eee;background-color:#35a;border:1px solid #57c;line-height:normal;padding:.4em;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}button:hover{background-color:#57c;border-color:#79e}button:disabled{cursor:not-allowed;background-color:#444;border:1px solid #666}input,select,textarea{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}select{padding:.34em .4em}input[type=text]{min-width:18em}textarea{min-width:30em}input[type=checkbox],input[type=file],input[type=radio],select{cursor:pointer}input:focus,input:hover,select:focus,select:hover,textarea:focus,textarea:hover{background-color:#333;border-color:#eee}hr{display:block;height:1px;border:none;border-top:1px solid #eee;margin:1em 0;padding:0}textarea{resize:vertical}audio,canvas,progress,video{max-width:100%;vertical-align:middle}.error{padding:.25em;background-color:#511;border-left:.5em solid #c22}.error[title]{cursor:help}.highlight,.marked{color:#ff0;font-weight:700;font-style:italic}.nobr{white-space:nowrap}.error:before,[data-icon-after]:after,[data-icon-before]:before,[data-icon]:before,a.link-external:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}[data-icon]:before{content:attr(data-icon)}[data-icon-before]:before{content:attr(data-icon-before) "\00a0"}[data-icon-after]:after{content:"\00a0" attr(data-icon-after)}.error:before{content:"\00a0\e80d\00a0\00a0"}a.link-external:after{content:"\00a0\e80e"}</style>
-<style id="style-core-display" type="text/css">#story{z-index:10;margin:2.5em;-webkit-transition:margin-left .2s ease-in;-o-transition:margin-left .2s ease-in;transition:margin-left .2s ease-in}@media screen and (max-width:1136px){#story{margin-right:1.5em}}#passages{max-width:54em;margin:0 auto}</style>
-<style id="style-core-passage" type="text/css">.passage{line-height:1.75;text-align:left;-webkit-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.passage-in{opacity:0}.passage ol,.passage ul{margin-left:.5em;padding-left:1.5em}.passage table{margin:1em 0;border-collapse:collapse;font-size:100%}.passage caption,.passage td,.passage th,.passage tr{padding:3px}.passage .error{white-space:nowrap}</style>
-<style id="style-core-macro" type="text/css">.macro-linkappend-insert,.macro-linkprepend-insert,.macro-linkreplace-insert,.macro-repeat-insert,.macro-timed-insert{-webkit-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.macro-linkappend-in,.macro-linkprepend-in,.macro-linkreplace-in,.macro-repeat-in,.macro-timed-in{opacity:0}</style>
-<style id="style-ui-dialog" type="text/css">html[data-dialog] body{overflow:hidden}#ui-overlay.open{visibility:visible;-webkit-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-overlay:not(.open){-webkit-transition:visibility .2s step-end,opacity .2s ease-in;-o-transition:visibility .2s step-end,opacity .2s ease-in;transition:visibility .2s step-end,opacity .2s ease-in}#ui-overlay{visibility:hidden;opacity:0;z-index:1000;position:fixed;top:0;left:0;height:100%;width:100%}#ui-dialog.open{display:block;-webkit-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-dialog{display:none;opacity:0;z-index:1100;position:fixed;top:50px;margin:0;padding:0}#ui-dialog-titlebar{position:relative}#ui-dialog-close{display:block;position:absolute;right:0;top:0;white-space:nowrap}#ui-dialog-body{overflow:auto;min-width:280px;height:90%;height:calc(100% - 2.1em - 34px)}#ui-overlay{background-color:#000}#ui-overlay.open{opacity:.8}#ui-dialog{max-width:66em}#ui-dialog.open{opacity:1}#ui-dialog-titlebar{background-color:#444;min-height:24px}#ui-dialog-title{margin:0;padding:.2em 3.5em .2em .5em;font-size:1.5em;text-align:center;text-transform:uppercase}#ui-dialog-close{cursor:pointer;font-size:120%;margin:0;padding:0;width:3.6em;height:92%;background-color:transparent;border:1px solid transparent;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}#ui-dialog-close:hover{background-color:#b44;border-color:#d66}#ui-dialog-body{background-color:#111;border:1px solid #444;text-align:left;line-height:1.5;padding:1em}#ui-dialog-body>:first-child{margin-top:0}#ui-dialog-body hr{background-color:#444}#ui-dialog-body ul.buttons{margin:0;padding:0;list-style:none}#ui-dialog-body ul.buttons li{display:inline-block;margin:0;padding:.4em .4em 0 0}#ui-dialog-body ul.buttons>li+li>button{margin-left:1em}#ui-dialog-close{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-close{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}</style>
+<style id="style-core" type="text/css">html{font:16px/1 Helmet,Freesans,sans-serif}#store-area,tw-storydata{display:none!important;z-index:0}.no-transition{-o-transition:none!important;transition:none!important}:focus{outline:thin dotted}:disabled{cursor:not-allowed!important}body{color:#eee;background-color:#111}a{cursor:pointer;color:#68d;text-decoration:none;-o-transition-duration:.2s;transition-duration:.2s}a:hover{color:#8af;text-decoration:underline}a.link-broken{color:#c22}a.link-broken:hover{color:#e44}span.link-disabled{color:#aaa}area{cursor:pointer}button{cursor:pointer;color:#eee;background-color:#35a;border:1px solid #57c;line-height:normal;padding:.4em;-o-transition-duration:.2s;transition-duration:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}button:hover{background-color:#57c;border-color:#79e}button:disabled{background-color:#444;border:1px solid #666}input,select,textarea{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}select{padding:.34em .4em}input[type=text]{min-width:18em}textarea{min-width:30em}input[type=checkbox],input[type=file],input[type=radio],select{cursor:pointer}input:not(:disabled):focus,input:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):hover{background-color:#333;border-color:#eee}hr{display:block;height:1px;border:none;border-top:1px solid #eee;margin:1em 0;padding:0}textarea{resize:vertical}audio,canvas,progress,video{max-width:100%;vertical-align:middle}.error-view{background-color:#511;border-left:.5em solid #c22;display:inline-block;margin:.1em;padding:0 .25em;position:relative}.error-view>.error-toggle{background-color:transparent;border:none;line-height:inherit;left:0;padding:0;position:absolute;top:0;width:1.875em}.error-view>.error{display:inline-block;margin-left:1.75em}.error-view>.error-source[hidden]{display:none}.error-view>.error-source:not([hidden]){display:block;margin:0 0 .25em;padding:.25em;background-color:rgba(0,0,0,.2)}.highlight,.marked{color:#ff0;font-weight:700;font-style:italic}.nobr{white-space:nowrap}.error-view>.error-toggle:before,.error-view>.error:before,[data-icon-after]:after,[data-icon-before]:before,[data-icon]:before,a.link-external:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}[data-icon]:before{content:attr(data-icon)}[data-icon-before]:before{content:attr(data-icon-before) "\00a0"}[data-icon-after]:after{content:"\00a0" attr(data-icon-after)}.error-view>.error-toggle:before{content:"\e81a"}.error-view>.error-toggle.enabled:before{content:"\e818"}.error-view>.error:before{content:"\e80d\00a0\00a0"}a.link-external:after{content:"\00a0\e80e"}</style>
+<style id="style-core-display" type="text/css">#story{z-index:10;margin:2.5em;-o-transition:margin-left .2s ease-in;transition:margin-left .2s ease-in}@media screen and (max-width:1136px){#story{margin-right:1.5em}}#passages{max-width:54em;margin:0 auto}</style>
+<style id="style-core-passage" type="text/css">.passage{line-height:1.75;text-align:left;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.passage-in{opacity:0}.passage ol,.passage ul{margin-left:.5em;padding-left:1.5em}.passage table{margin:1em 0;border-collapse:collapse;font-size:100%}.passage caption,.passage td,.passage th,.passage tr{padding:3px}</style>
+<style id="style-core-macro" type="text/css">.macro-linkappend-insert,.macro-linkprepend-insert,.macro-linkreplace-insert,.macro-repeat-insert,.macro-timed-insert{-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in}.macro-linkappend-in,.macro-linkprepend-in,.macro-linkreplace-in,.macro-repeat-in,.macro-timed-in{opacity:0}</style>
+<style id="style-ui-dialog" type="text/css">html[data-dialog] body{overflow:hidden}#ui-overlay.open{visibility:visible;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-overlay:not(.open){-o-transition:visibility .2s step-end,opacity .2s ease-in;transition:visibility .2s step-end,opacity .2s ease-in}#ui-overlay{visibility:hidden;opacity:0;z-index:100000;position:fixed;top:0;left:0;height:100%;width:100%}#ui-dialog.open{display:block;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in}#ui-dialog{display:none;opacity:0;z-index:100100;position:fixed;top:50px;margin:0;padding:0}#ui-dialog-titlebar{position:relative}#ui-dialog-close{display:block;position:absolute;right:0;top:0;white-space:nowrap}#ui-dialog-body{overflow:auto;min-width:280px;height:90%;height:calc(100% - 2.1em - 34px)}#ui-overlay{background-color:#000}#ui-overlay.open{opacity:.8}#ui-dialog{max-width:66em}#ui-dialog.open{opacity:1}#ui-dialog-titlebar{background-color:#444;min-height:24px}#ui-dialog-title{margin:0;padding:.2em 3.5em .2em .5em;font-size:1.5em;text-align:center;text-transform:uppercase}#ui-dialog-close{cursor:pointer;font-size:120%;margin:0;padding:0;width:3.6em;height:92%;background-color:transparent;border:1px solid transparent;-o-transition-duration:.2s;transition-duration:.2s}#ui-dialog-close:hover{background-color:#b44;border-color:#d66}#ui-dialog-body{background-color:#111;border:1px solid #444;text-align:left;line-height:1.5;padding:1em}#ui-dialog-body>:first-child{margin-top:0}#ui-dialog-body hr{background-color:#444}#ui-dialog-body ul.buttons{margin:0;padding:0;list-style:none}#ui-dialog-body ul.buttons li{display:inline-block;margin:0;padding:.4em .4em 0 0}#ui-dialog-body ul.buttons>li+li>button{margin-left:1em}#ui-dialog-close{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-close{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}</style>
 <style id="style-ui" type="text/css">#ui-dialog-body.settings [id|=setting-body]{display:table;width:100%}#ui-dialog-body.settings [id|=setting-label]{display:table-cell;padding:.4em 2em .4em 0}#ui-dialog-body.settings [id|=setting-label]+div{display:table-cell;min-width:8em;text-align:right;vertical-align:middle;white-space:nowrap}#ui-dialog-body.list{padding:0;min-width:140px}#ui-dialog-body.list ul{margin:0;padding:0;list-style:none;border:1px solid transparent}#ui-dialog-body.list li{margin:0}#ui-dialog-body.list li:not(:first-child){border-top:1px solid #444}#ui-dialog-body.list li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-decoration:none}#ui-dialog-body.list li a:hover{background-color:#333;border-color:#eee}#ui-dialog-body.saves{padding:0 0 1px}#ui-dialog-body.saves>:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves table{border-spacing:0;min-width:340px;width:100%}#ui-dialog-body.saves tr:not(:first-child){border-top:1px solid #444}#ui-dialog-body.saves td{padding:.33em .33em}#ui-dialog-body.saves td:first-child{min-width:1.5em;text-align:center}#ui-dialog-body.saves td:nth-child(3){line-height:1.2}#ui-dialog-body.saves td:last-child{text-align:right}#ui-dialog-body.saves .empty{color:#999}#ui-dialog-body.saves .datestamp{font-size:75%}#ui-dialog-body.saves ul.buttons li{padding:.4em}#ui-dialog-body.saves ul.buttons>li+li>button{margin-left:.2em}#ui-dialog-body.saves ul.buttons li:last-child{float:right}#ui-dialog-body.settings div[id|=header-body]{margin:1em 0}#ui-dialog-body.settings div[id|=header-body]:first-child{margin-top:0}#ui-dialog-body.settings div[id|=header-body]:not(:first-child){border-top:1px solid #444;padding-top:1em}#ui-dialog-body.settings div[id|=header-body]>*{margin:0}#ui-dialog-body.settings h2[id|=header-heading]{font-size:1.375em}#ui-dialog-body.settings p[id|=header-label]{font-size:87.5%}#ui-dialog-body.settings div[id|=setting-body]+div[id|=setting-body]{margin:.5em 0}#ui-dialog-body.settings [id|=setting-control]{white-space:nowrap}#ui-dialog-body.settings button[id|=setting-control]{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}#ui-dialog-body.settings button[id|=setting-control]:hover{background-color:#333;border-color:#eee}#ui-dialog-body.settings button[id|=setting-control].enabled{background-color:#282;border-color:#4a4}#ui-dialog-body.settings button[id|=setting-control].enabled:hover{background-color:#4a4;border-color:#6c6}#ui-dialog-body.share{min-width:140px}#ui-dialog-body.list a,#ui-dialog-body.settings span[id|=setting-input]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#ui-dialog-body.saves button[id=saves-clear]:before,#ui-dialog-body.saves button[id=saves-export]:before,#ui-dialog-body.saves button[id=saves-import]:before,#ui-dialog-body.settings button[id|=setting-control].enabled:after,#ui-dialog-body.settings button[id|=setting-control]:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-dialog-body.saves button[id=saves-export]:before{content:"\e829\00a0"}#ui-dialog-body.saves button[id=saves-import]:before{content:"\e82a\00a0"}#ui-dialog-body.saves button[id=saves-clear]:before{content:"\e827\00a0"}#ui-dialog-body.settings button[id|=setting-control]:after{content:"\00a0\00a0\e830"}#ui-dialog-body.settings button[id|=setting-control].enabled:after{content:"\00a0\00a0\e831"}</style>
-<style id="style-ui-bar" type="text/css">#story{margin-left:20em}#ui-bar.stowed~#story{margin-left:4.5em}@media screen and (max-width:1136px){#story{margin-left:19em}#ui-bar.stowed~#story{margin-left:3.5em}}@media screen and (max-width:768px){#story{margin-left:3.5em}}#ui-bar{position:fixed;z-index:50;top:0;left:0;width:17.5em;height:100%;margin:0;padding:0;-webkit-transition:left .2s ease-in;-o-transition:left .2s ease-in;transition:left .2s ease-in}#ui-bar.stowed{left:-15.5em}#ui-bar-body{height:90%;height:calc(100% - 2.5em);margin:2.5em 0;padding:0 1.5em}#ui-bar.stowed #ui-bar-body,#ui-bar.stowed #ui-bar-history{visibility:hidden;-webkit-transition:visibility .2s step-end;-o-transition:visibility .2s step-end;transition:visibility .2s step-end}#ui-bar{background-color:#222;border-right:1px solid #444;text-align:center}#ui-bar-tray{position:absolute;top:.2em;left:0;right:0}#ui-bar a{text-decoration:none}#ui-bar hr{border-color:#444}#ui-bar-history [id|=history],#ui-bar-toggle{font-size:1.2em;line-height:inherit;color:#eee;background-color:transparent;border:1px solid #444}#ui-bar-toggle{display:block;position:absolute;top:0;right:0;border-right:none;padding:.3em .45em .25em}#ui-bar.stowed #ui-bar-toggle{padding:.3em .35em .25em .55em}#ui-bar-toggle:hover{background-color:#444;border-color:#eee}#ui-bar-history{margin:0 auto}#ui-bar-history [id|=history]{padding:.2em .45em .35em}#ui-bar-history #history-jumpto{padding:.2em .665em .35em}#ui-bar-history [id|=history]:not(:first-child){margin-left:1.2em}#ui-bar-history [id|=history]:hover{background-color:#444;border-color:#eee}#ui-bar-history [id|=history]:disabled{color:#444;background-color:transparent;border-color:#444}#ui-bar-body{line-height:1.5;overflow:auto}#ui-bar-body>:not(:first-child){margin-top:2em}#story-title{margin:0;font-size:162.5%}#story-author{margin-top:2em;font-weight:700}#menu ul{margin:1em 0 0;padding:0;list-style:none;border:1px solid #444}#menu ul:empty{display:none}#menu li{margin:0}#menu li:not(:first-child){border-top:1px solid #444}#menu li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-transform:uppercase}#menu li a:hover{background-color:#444;border-color:#eee}#menu a,#ui-bar-history [id|=history],#ui-bar-toggle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#menu-core li[id|=menu-item] a:before,#ui-bar-history [id|=history],#ui-bar-toggle:before{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-bar-toggle:before{content:"\e81d"}#ui-bar.stowed #ui-bar-toggle:before{content:"\e81e"}#menu-item-saves a:before{content:"\e82b\00a0"}#menu-item-settings a:before{content:"\e82d\00a0"}#menu-item-restart a:before{content:"\e82c\00a0"}#menu-item-share a:before{content:"\e82f\00a0"}</style>
-<style id="style-debugview" type="text/css">#ui-bar-body>#debug-view-toggle:first-child{margin-top:1em}#ui-bar-body>#debug-view-toggle:first-child+*{margin-top:1em}#debug-view-toggle{text-transform:uppercase}#debug-view-toggle:after,#debug-view-toggle:before{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#debug-view-toggle:before{content:"\e838\00a0"}html:not([data-debug-view]) #debug-view-toggle{color:#eee;background-color:transparent;border:1px solid #444;padding:.4em}html:not([data-debug-view]) #debug-view-toggle:hover{background-color:#333;border-color:#eee}html:not([data-debug-view]) #debug-view-toggle:after{content:"\00a0\00a0\e830"}html[data-debug-view] #debug-view-toggle{background-color:#282;border-color:#4a4}html[data-debug-view] #debug-view-toggle:hover{background-color:#4a4;border-color:#6c6}html[data-debug-view] #debug-view-toggle:after{content:"\00a0\00a0\e831"}html[data-debug-view] .debug{padding:.25em;background-color:#234}html[data-debug-view] .debug[title]{cursor:help}html[data-debug-view] .debug.block{display:inline-block;vertical-align:middle}html[data-debug-view] .debug.invalid{text-decoration:line-through}html[data-debug-view] .debug.hidden,html[data-debug-view] .debug.hidden .debug{background-color:#555}html:not([data-debug-view]) .debug.hidden{display:none}html[data-debug-view] .debug[data-name][data-type].nonvoid:after,html[data-debug-view] .debug[data-name][data-type]:before{background-color:rgba(0,0,0,.25);font-family:monospace,monospace;white-space:pre}html[data-debug-view] .debug[data-name][data-type]:before{content:attr(data-name)}html[data-debug-view] .debug[data-name][data-type|=macro]:before{content:"<<" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=macro].nonvoid:after{content:"<</" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=html]:before{content:"<" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type|=html].nonvoid:after{content:"</" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type]:not(:empty):before{margin-right:.25em}html[data-debug-view] .debug[data-name][data-type].nonvoid:not(:empty):after{margin-left:.25em}html[data-debug-view] .debug[data-name][data-type|=special],html[data-debug-view] .debug[data-name][data-type|=special]:before{display:block}</style>
+<style id="style-ui-bar" type="text/css">#story{margin-left:20em}#ui-bar.stowed~#story{margin-left:4.5em}@media screen and (max-width:1136px){#story{margin-left:19em}#ui-bar.stowed~#story{margin-left:3.5em}}@media screen and (max-width:768px){#story{margin-left:3.5em}}#ui-bar{position:fixed;z-index:50;top:0;left:0;width:17.5em;height:100%;margin:0;padding:0;-o-transition:left .2s ease-in;transition:left .2s ease-in}#ui-bar.stowed{left:-15.5em}#ui-bar-body{height:90%;height:calc(100% - 2.5em);margin:2.5em 0;padding:0 1.5em}#ui-bar.stowed #ui-bar-body,#ui-bar.stowed #ui-bar-history{visibility:hidden;-o-transition:visibility .2s step-end;transition:visibility .2s step-end}#ui-bar{background-color:#222;border-right:1px solid #444;text-align:center}#ui-bar-tray{position:absolute;top:.2em;left:0;right:0}#ui-bar a{text-decoration:none}#ui-bar hr{border-color:#444}#ui-bar-history [id|=history],#ui-bar-toggle{font-size:1.2em;line-height:inherit;color:#eee;background-color:transparent;border:1px solid #444}#ui-bar-toggle{display:block;position:absolute;top:0;right:0;border-right:none;padding:.3em .45em .25em}#ui-bar.stowed #ui-bar-toggle{padding:.3em .35em .25em .55em}#ui-bar-toggle:hover{background-color:#444;border-color:#eee}#ui-bar-history{margin:0 auto}#ui-bar-history [id|=history]{padding:.2em .45em .35em}#ui-bar-history #history-jumpto{padding:.2em .665em .35em}#ui-bar-history [id|=history]:not(:first-child){margin-left:1.2em}#ui-bar-history [id|=history]:hover{background-color:#444;border-color:#eee}#ui-bar-history [id|=history]:disabled{color:#444;background-color:transparent;border-color:#444}#ui-bar-body{line-height:1.5;overflow:auto}#ui-bar-body>:not(:first-child){margin-top:2em}#story-title{margin:0;font-size:162.5%}#story-author{margin-top:2em;font-weight:700}#menu ul{margin:1em 0 0;padding:0;list-style:none;border:1px solid #444}#menu ul:empty{display:none}#menu li{margin:0}#menu li:not(:first-child){border-top:1px solid #444}#menu li a{display:block;padding:.25em .75em;border:1px solid transparent;color:#eee;text-transform:uppercase}#menu li a:hover{background-color:#444;border-color:#eee}#menu a,#ui-bar-history [id|=history],#ui-bar-toggle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#menu-core li[id|=menu-item] a:before,#ui-bar-history [id|=history],#ui-bar-toggle:before{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#ui-bar-toggle:before{content:"\e81d"}#ui-bar.stowed #ui-bar-toggle:before{content:"\e81e"}#menu-item-saves a:before{content:"\e82b\00a0"}#menu-item-settings a:before{content:"\e82d\00a0"}#menu-item-restart a:before{content:"\e82c\00a0"}#menu-item-share a:before{content:"\e82f\00a0"}</style>
+<style id="style-ui-debug" type="text/css">#debug-bar{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:0;margin:0;max-height:75%;padding:.5em;position:fixed;right:0;z-index:99900}#debug-bar>div:not([id])+div{margin-top:.5em}#debug-bar>div>label{margin-right:.5em}#debug-bar>div>input[type=text]{min-width:0;width:8em}#debug-bar>div>select{width:15em}#debug-bar-watch{background-color:#222;border-left:1px solid #444;border-top:1px solid #444;bottom:102%;bottom:calc(100% + 1px);font-size:.9em;left:-1px;max-height:600%;max-height:60vh;position:absolute;overflow-x:hidden;overflow-y:scroll;right:0;z-index:99800}#debug-bar-watch[hidden]{display:none}#debug-bar-watch div{color:#999;font-style:italic;margin:1em auto;text-align:center}#debug-bar-watch table{width:100%}#debug-bar-watch tr:nth-child(2n){background-color:rgba(127,127,127,.15)}#debug-bar-watch td{padding:.2em 0}#debug-bar-watch td:first-child+td{padding:.2em .3em .2em .1em}#debug-bar-watch .watch-delete{background-color:transparent;border:none}#debug-bar-watch-all,#debug-bar-watch-none{margin-left:.5em}#debug-bar-views-toggle,#debug-bar-watch-toggle{color:#eee;background-color:transparent;border:1px solid #444;margin-right:1em;padding:.4em}#debug-bar-views-toggle:hover,#debug-bar-watch-toggle:hover{background-color:#333;border-color:#eee}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle,html[data-debug-view] #debug-bar-views-toggle{background-color:#282;border-color:#4a4}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:hover,html[data-debug-view] #debug-bar-views-toggle:hover{background-color:#4a4;border-color:#6c6}#debug-bar-views-toggle:after,#debug-bar-watch .watch-delete:before,#debug-bar-watch-add:before,#debug-bar-watch-all:before,#debug-bar-watch-none:before,#debug-bar-watch-toggle:after{font-family:tme-fa-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;speak:none}#debug-bar-watch .watch-delete:before{content:"\e804"}#debug-bar-watch-add:before{content:"\e805"}#debug-bar-watch-all:before{content:"\e83a"}#debug-bar-watch-none:before{content:"\e827"}#debug-bar-views-toggle:after,#debug-bar-watch-toggle:after{content:"\00a0\00a0\e830"}#debug-bar-watch:not([hidden])~div #debug-bar-watch-toggle:after,html[data-debug-view] #debug-bar-views-toggle:after{content:"\00a0\00a0\e831"}html[data-debug-view] .debug{padding:.25em;background-color:#234}html[data-debug-view] .debug[title]{cursor:help}html[data-debug-view] .debug.block{display:inline-block;vertical-align:middle}html[data-debug-view] .debug.invalid{text-decoration:line-through}html[data-debug-view] .debug.hidden,html[data-debug-view] .debug.hidden .debug{background-color:#555}html:not([data-debug-view]) .debug.hidden{display:none}html[data-debug-view] .debug[data-name][data-type].nonvoid:after,html[data-debug-view] .debug[data-name][data-type]:before{background-color:rgba(0,0,0,.25);font-family:monospace,monospace;white-space:pre}html[data-debug-view] .debug[data-name][data-type]:before{content:attr(data-name)}html[data-debug-view] .debug[data-name][data-type|=macro]:before{content:"<<" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=macro].nonvoid:after{content:"<</" attr(data-name) ">>"}html[data-debug-view] .debug[data-name][data-type|=html]:before{content:"<" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type|=html].nonvoid:after{content:"</" attr(data-name) ">"}html[data-debug-view] .debug[data-name][data-type]:not(:empty):before{margin-right:.25em}html[data-debug-view] .debug[data-name][data-type].nonvoid:not(:empty):after{margin-left:.25em}html[data-debug-view] .debug[data-name][data-type|=special],html[data-debug-view] .debug[data-name][data-type|=special]:before{display:block}</style>
 </head>
 <body>
 	<div id="init-screen">
@@ -114,13 +114,13 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
 	<div id="store-area" data-size="STORY_SIZE" hidden>"STORY"</div>
 	<script id="script-sugarcube" type="text/javascript">
 	/*! SugarCube JS */
-	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),_slicedToArray=function(){function e(e,t){var r=[],n=!0,a=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Alert=function(){function e(e,t,r,n){var a="fatal"===e,i="Apologies! "+(a?"A fatal":"An")+" error has occurred.";i+=a?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,"")+".":": unknown error."),"object"===("undefined"==typeof n?"undefined":_typeof(n))&&n.stack&&(i+="\n\nStack Trace:\n"+n.stack),window.alert(i)}function t(t,r,n){e(null,t,r,n)}function r(t,r,n){e("fatal",t,r,n)}return function(e){window.onerror=function(n,a,i,o,s){"complete"===document.readyState?t(null,n,s):(r(null,n,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,n){t.test(n)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",r="[\\n\\r\\u2028\\u2029]",n="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",a=n.replace("\\-",""),i="[$A-Z_a-z]",o=i+"[$0-9A-Z_a-z]*",s="[$_]",u=s+o,l="[A-Za-z][\\w-]*|[=-]",c="\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",d="("+n+"+)\\(([^\\)\\|\\n]+)\\):",f="("+n+"+):([^;\\|\\n]+);",p="((?:\\."+n+"+)+);",h="((?:#"+n+"+)+);",g=d+"|"+f+"|"+p+"|"+h,m="(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+";return Object.freeze({space:e,spaceNoTerminator:t,lineTerminator:r,anyLetter:n,anyLetterStrict:a,identifierFirstChar:i,identifier:o,variableSigil:s,variable:u,macroName:l,cssImage:c,inlineCss:g,url:m})}();!function(){function e(e,t){var a=String(e);switch(t){case"start":return a&&r.test(a)?a.replace(r,""):a;case"end":return a&&n.test(a)?a.replace(n,""):a;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var n="undefined"==typeof t?"":String(t);for(""===n&&(n=" ");n.length<r;){var a=n.length,i=r-a;n+=a>i?n.slice(0,i):n}return n.length>r&&(n=n.slice(0,r)),n}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,n=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var n=this[r];if(t===n||t!==t&&n!==n)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var n=String(this),a=n.length,i=Number.parseInt(e,10);return i<=a?n:t(i-a,r)+n}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var n=String(this),a=n.length,i=Number.parseInt(e,10);return i<=a?n:n+t(i-a,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,n=void 0;switch(t.length){case 1:r=0,n=e-1;break;case 2:r=0,n=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),n=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r,r<0&&(r=0)),Number.isNaN(n)?n=0:!Number.isFinite(n)||n>=e?n=e-1:n<0&&(n=e+n,n<0&&(n=e-1)),_random(r,n)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var n=t+1;if(n>=e.length)throw new Error("high surrogate without trailing low surrogate");var a=e.charCodeAt(n);if(a<56320||a>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(n),start:t,end:n}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){var r=0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1));return e[r]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var t=Array.from(this);if(0===arguments.length)return t;var r=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),n=r.length;if(0===n)return t;for(var a=Array.prototype.indexOf,i=Array.prototype.push,o=0;o<n;++o){var e=r[o];a.call(t,e)===-1&&i.call(t,e)}return t}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,n=0;(r=e.call(this,t,r))!==-1;)++n,++r;return n}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.indexOf,r=Array.prototype.push,n=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),i=[],o=0,s=a.length;o<s;++o)for(var u=a[o],l=0;(l=t.call(this,u,l))!==-1;)r.apply(i,n.call(this,l,1));return i}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),n=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),a=[],i=0,o=r.length;i<o;++i)a[i]=this[r[i]];for(var s=0,u=n.length;s<u;++s)t.call(this,n[s],1);return a}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var n=Array.prototype.splice,a=[],i=t-1;do a.push(n.call(this,_random(0,i--),1)[0]);while(a.length<r);return a}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var t=arguments.length;if(0===t)return this.length>>>0;for(var r=Array.prototype.indexOf,n=Array.prototype.push,a=0;a<t;++a){var e=arguments[a];r.call(this,e)===-1&&n.call(this,e)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return this[t]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var n=new Map,a=[],i=t-1;do{var o=void 0;do o=_random(0,i);while(n.has(o));n.set(o,!0),a.push(this[o])}while(a.length<r);return a}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var n=this[t];this[t]=this[r],this[r]=n}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function e(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var t=arguments.length;if(0===t)return this.length>>>0;for(var r=Array.prototype.indexOf,n=Array.prototype.unshift,a=0;a<t;++a){var e=arguments[a];r.call(this,e)===-1&&n.call(this,e)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var n=[],a=0,i=0;i<r.length;++i)n.push(r[i]===undefined?arguments[a++]:r[i]);return t.apply(this,n.concat(e.call(arguments,a)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function e(t,r,n){var e=Number(t);return Number.isNaN(e)?NaN:e.clamp(r,n)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||!function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var n=String(r);return n&&t.test(n)?n.replace(e,"\\$&"):n}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function n(e,t,r){if(!t)return e;var n=Math.abs(t)-e.length;if(n<1)return e;var a=String(r).repeat(n);return t<0?e+a:a+e}if(arguments.length<2)return 0===arguments.length?"":r;var a=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===a.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=a[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch("undefined"==typeof i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return n(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return String.prototype.indexOf.apply(this,arguments)!==-1}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,n=Number(arguments[1])||0,a=0;(n=t.call(this,e,n))!==-1;)++a,n+=r;return a}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var n=this.length>>>0;if(0===n)return"";var a=Number(e);Number.isSafeInteger(a)?a<0&&(a+=n,a<0&&(a=0)):a=0,a>n&&(a=n);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,a);return"undefined"!=typeof r&&(o+=r),a+i<n&&(o+=this.slice(a+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,n=t.end;return n===-1?"":r.toLocaleUpperCase()+e.slice(n+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,n=t.end;return n===-1?"":r.toUpperCase()+e.slice(n+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),n=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),a=!e.includes("opera")&&/msie|trident/.test(e),i=a?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:n,isIE:a,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),n=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),a=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:n,performance:a})}(),_ref3=function(){function e(t){if("object"!==("undefined"==typeof t?"undefined":_typeof(t))||null==t)return t;if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return Array.isArray(t)?r=[]:t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,n){r.set(n,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(n){return r[n]=e(t[n])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),n=void 0;null!==(n=e.firstChild);){if(n.nodeType===Node.ELEMENT_NODE){var a=n.nodeName.toUpperCase();switch(a){case"BR":if(null!==n.nextSibling&&n.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===n.nextSibling.nodeName.toUpperCase()){e.removeChild(n.nextSibling),e.removeChild(n),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(n);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(n);continue}}r.appendChild(n)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function n(e,t,r){var n="object"===("undefined"==typeof e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==n)return null;var a=Array.isArray(t)?t:[t];jQuery(n).empty();for(var i=0,o=a.length;i<o;++i)if(Story.has(a[i]))return new Wikifier(n,Story.get(a[i]).processText().trim()),n;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(n,s)}return n}function a(e,t,r){return jQuery(document.createElement("span")).addClass("error").attr("title",r).text(L10n.get("errorTitle")+": "+(t||"unknown error")).appendTo(e),!1}function i(e,t){var r=i;switch("undefined"==typeof e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){var n=[].concat(_toConsumableArray(e)).map(function(e){return r(e[0],t)+" ⇒ "+r(e[1],t)}).join("; ");return"( "+n+" )"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:n},throwError:{value:a},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){var t=jQuery(this);t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments)}}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(n,a){if(0===this.length||0===arguments.length)return this;var i=n,o=a;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(0!==r.length){var a=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(a,t,e)});var i=[].concat(_toConsumableArray(a.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(/^(?:(?:Uncaught\s+)?Error:\s+)+/,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(0===this.length||0===r.length)return this;var a=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(a,t,e)}),this.append(a),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch("undefined"==typeof e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function n(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function a(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&h.test(t)?t.replace(p,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&y.test(t)?t.replace(m,function(e){return v[e.toLowerCase()]}):t}function s(e,t){var r=String(e),n=Math.trunc(t),a=r.charCodeAt(n);if(Number.isNaN(a))return{char:"",start:-1,end:-1};var i={char:r.charAt(n),start:n,end:n};if(a<55296||a>57343)return i;if(a>=55296&&a<=56319){var o=n+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===n)return i;var u=n-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return(Has.performance?performance:Date).now()}function l(e){var t=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/,r=t.exec(String(e));if(null===r)throw new SyntaxError('invalid time value syntax: "'+e+'"');var n=Number(r[1]);if(/^[Ss]$/.test(r[2])&&(n*=1e3),Number.isNaN(n)||!Number.isFinite(n))throw new RangeError('invalid time value: "'+e+'"');return n}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var t=void 0;switch("undefined"==typeof e?"undefined":_typeof(e)){case"string":t='"'+e+'"';break;case"number":t=String(e);break;default:t=Object.prototype.toString.call(e)}throw new Error("invalid milliseconds: "+t)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}var t="-ms-"===e.slice(0,4)?e.slice(1):e;return t.split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function f(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),n=_slicedToArray(t,2),a=n[0],i=n[1];r[a]=i});var n=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+n+t.search,pathname:n,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var p=/[&<>"'`]/g,h=new RegExp(p.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,y=new RegExp(m.source,"i"),v=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"});return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:n},slugify:{value:a},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c},fromCssProperty:{value:d},parseUrl:{value:f},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return p}function n(e){p=Math.clamp(e,.2,5),l("rate",p)}function a(){return h}function i(e){h=Math.clamp(e,0,1),l("volume",h)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");f.set(e,t)}function u(e){f.delete(e)}function l(e,t){f.forEach(function(r){
-return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(y,[null].concat(t)))}var f=new Map,p=1,h=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,n=/\.([^.\/\\]+)$/,a=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch("undefined"==typeof e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(s=r.exec(e),null===s)throw new Error("source data URI missing media type")}else if(s=n.exec(Util.parseUrl(e).pathname),null===s)throw new Error("source URL missing file extension");var u=a(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=a(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+("undefined"==typeof e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var n=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return n._error=!1}).on("error",function(){return n._error=!0}).find("source:last-of-type").on("error",function(){return n._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!n.audio)return void SimpleAudio.unsubscribe(n);switch(e){case"mute":n._updateAudioMute();break;case"rate":n._updateAudioRate();break;case"stop":n.stop();break;case"volume":n._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this),this.fadeStop(),this.stop();var e=this.audio;for(jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}},{key:"_updateAudioMute",value:function(){this.audio.muted=this._mute||SimpleAudio.mute}},{key:"_updateAudioRate",value:function(){this.audio.playbackRate=this._rate*SimpleAudio.rate}},{key:"_updateAudioVolume",value:function(){this.audio.volume=this._volume*SimpleAudio.volume}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended}},{key:"isEnded",value:function(){return this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this.audio.loop}},{key:"load",value:function(){"auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load()}},{key:"play",value:function(){this.audio.play()}},{key:"pause",value:function(){this.audio.pause()}},{key:"stop",value:function(){this.pause(),this.time=0,this._trigger(":stop")}},{key:"fadeWithDuration",value:function(e,t,r){var n=this;this.fadeStop();var a=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);a!==i&&(this.volume=a,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;a<i?(t=a,r=i):(t=i,r=a);var o=Number(e);o<1&&(o=1);var s=25,u=(i-a)/(o/(s/1e3));n._faderId=setInterval(function(){return n.isPlaying()?(n.volume=Math.clamp(n.volume+u,t,r),0===n.volume&&n.pause(),void(n.volume===i&&(n.fadeStop(),n._trigger(":fade")))):void n.fadeStop()},s)}),this.play())}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if("function"!=typeof r)throw new Error("listener parameter must be a function");var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(a,r),this}},{key:"one",value:function(t,r){if("function"!=typeof r)throw new Error("listener parameter must be a function");var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(a,r),this}},{key:"off",value:function(t,r){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var n=e._events,a=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!n.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(n).join(", "));return e.replace(t,n[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===a)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(a,r),this}},{key:"duration",get:function(){return this.audio.duration}},{key:"ended",get:function(){return this.audio.ended}},{key:"loop",get:function(){return this.audio.loop},set:function(e){this.audio.loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio.duration-this.audio.currentTime}},{key:"time",get:function(){return this.audio.currentTime},set:function(e){var t=this;try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var n=document.createElement("audio");r[t]=""!==n.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,n=t.toLowerCase(),a=r.hasOwnProperty(n)?r[n]:"audio/"+n;return e._verifyType(a)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var y=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,n=void 0,a=void 0,i=void 0;if(e instanceof m)r=!0,n=e.clone(),a=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,n=r?e.track.clone():e.track,a=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}n.stop(),n.loop=!1,n.mute=!1,n.volume=a,n.rate=i,n.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:n,volume:a,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var n=Math.clamp(t,0,1)*this.current.volume,a=void 0;null!=r&&(a=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,n,a),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:n},volume:{get:a,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,n){if(r)return r.create(e,n);for(var a=0;a<t.length;++a)if(t[a].init(e,n))return r=t[a],r.create(e,n);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var n=t.getItem(r)===r;return t.removeItem(r),n}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new n(e,t)}var r=!1,n=function(){function e(t,r){_classCallCheck(this,e);var n=t+".",a=null,i=null;r?(a=window.localStorage,i="localStorage"):(a=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:a},_prefix:{value:n},_prefixRe:{value:new RegExp("^"+RegExp.escape(n))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function e(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e){return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,a)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),f=decodeURIComponent(d[0]);if(r.test(f)){var p=decodeURIComponent(d[1]);""!==p&&!function(){var e=!u.test(f);o._setCookie(f,undefined,a),o._setCookie(f.replace(r,function(){return e?i:s}),p,e?n:undefined)}()}}}var n="Tue, 19 Jan 2038 03:14:07 GMT",a="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var n=""+t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:n},_prefixRe:{value:new RegExp("^"+RegExp.escape(n))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function e(){if(""===document.cookie)return[];for(var t=document.cookie.split(/;\s*/),e=[],r=0;r<t.length;++r){var n=t[r].split("="),a=decodeURIComponent(n[0]);if(this._prefixRe.test(a)){var i=decodeURIComponent(n[1]);""!==i&&e.push(a.replace(this._prefixRe,""))}}return e}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?n:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,a),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var n=t[r].split("="),a=decodeURIComponent(n[0]);if(e===a){var i=decodeURIComponent(n[1]);return i||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var n=encodeURIComponent(e)+"=";null!=t&&(n+=encodeURIComponent(t)),null!=r&&(n+="; expires="+r),n+="; path=/",document.cookie=n}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){var e=function(){function e(t,r,n,a){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:a,"aria-label":a,"data-type":null!=r?r:"","data-name":null!=n?n:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){var t=this;if(null==e){var r=function(){var e={};return t.view.className.splitOrEmpty(/\s+/).forEach(function(t){"debug"!==t&&(e[t]=!0)}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":_typeof(r)))return r.v}else if("object"===("undefined"==typeof e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"init",value:function(){jQuery('<button id="debug-view-toggle">'+L10n.get("debugViewTitle")+"</button>").ariaClick({label:L10n.get("debugViewToggle")},function(){return e.toggle()}).prependTo("#ui-bar-body"),e.enable()}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}();return e}(),PRNGWrapper=function(){var e=function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),n=t.pull;n>0;--n)r.random();return r}}]),e}();return e}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage),r=function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var n=r;t.test(n)&&(e.lastIndex=0,n=n.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var n=Story.get(r);n.tags.includes("Twine.image")&&(r=n.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=n:this.style.appendChild(document.createTextNode(n))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}();return r}(),Diff=function(){function e(t,n){for(var a=Object.prototype.toString,i=Array.isArray(t),o=[].concat(Object.keys(t),Object.keys(n)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var f=o[c],p=t[f],h=n[f];if(t.hasOwnProperty(f))if(n.hasOwnProperty(f)){if(p===h)continue;if(("undefined"==typeof p?"undefined":_typeof(p))===("undefined"==typeof h?"undefined":_typeof(h)))if("function"==typeof p)p.toString()!==h.toString()&&(s[f]=[r.Copy,h]);else if("object"!==("undefined"==typeof p?"undefined":_typeof(p))||null===p)s[f]=[r.Copy,h];else{var g=a.call(p),m=a.call(h);if(g===m)if("[object Date]"===g){var y=Number(h);Number(p)!==y&&(s[f]=[r.CopyDate,y])}else if("[object RegExp]"===g)p.toString()!==h.toString()&&(s[f]=[r.Copy,clone(h)]);else{var v=e(p,h);null!==v&&(s[f]=v)}else s[f]=[r.Copy,clone(h)]}else s[f]=[r.Copy,"object"!==("undefined"==typeof h?"undefined":_typeof(h))||null===h?h:clone(h)]}else if(i&&Util.isNumeric(f)){var b=Number(f);if(!u){u="";do u+="~";while(o.some(l));s[u]=[r.SpliceArray,b,b]}b<s[u][1]&&(s[u][1]=b),b>s[u][2]&&(s[u][2]=b)}else s[f]=r.Delete;else s[f]=[r.Copy,"object"!==("undefined"==typeof h?"undefined":_typeof(h))||null===h?h:clone(h)]}return Object.keys(s).length>0?s:null}function t(e,n){for(var a=Object.keys(n||{}),i=clone(e),o=0,s=a.length;o<s;++o){var u=a[o],l=n[u];if(l===r.Delete)delete i[u];else if(Array.isArray(l))switch(l[0]){case r.SpliceArray:i.splice(l[1],1+(l[2]-l[1]));break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=50,o=l10nStrings[r],s=0;a.test(o);){if(++s>i)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");n.lastIndex=0,o=o.replace(n,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return o}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesEmptySlot":t=strings.saves.emptySlot;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesSavedOn":t=strings.saves.savedOn;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var n=/\{\w+\}/g,a=new RegExp(n.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{},macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugViewTitle:"Debug View",debugViewToggle:"Toggle the debug view",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesEmptySlot:"— slot empty —",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesSavedOn:"Saved on",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}var r=Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0
-}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),n=0;n<t.length;++n)if(r.style[t[n]]!==undefined)return e.get(t[n]);return""}()});return r}(),State=function(){function e(){session.delete("state"),W=[],R=c(),F=-1,V=[],U=null===U?null:new PRNGWrapper(U.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(n(e),!0)}return!1}function r(e){var t={index:F};return e?t.history=clone(W):t.delta=A(W),V.length>0&&(t.expired=[].concat(_toConsumableArray(V))),null!==U&&(t.seed=U.seed),t}function n(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==U&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===U&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),F=e.index,V=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(U.seed=e.seed),g(F)}function a(){return r(!0)}function i(e){return n(e,!0)}function o(){return V}function s(){return V.length+y()}function u(){return V.concat(W.slice(0,y()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!V.includes(e)||!!W.slice(0,y()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function f(){return F}function p(){return R.title}function h(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch("undefined"==typeof e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=v())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(v()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+("undefined"==typeof e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==U&&(U=PRNGWrapper.unmarshal({seed:U.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function y(){return F+1}function v(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[F]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>F?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>y()?null:W[y()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=F;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(y()<v()&&W.splice(y(),v()-y()),W.push(c(e,R.variables)),U&&(k().pull=U.pull),Config.history.maxStates>0)for(;v()>Config.history.maxStates;)V.push(W.shift().title);return F=v()-1,g(F),y()}function O(e){return!(null==e||e<0||e>=v()||e===F)&&(F=e,g(F),!0)}function T(e){return null!=e&&0!==e&&O(F+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,n=e.length;r<n;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,n=e.length;r<n;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}U=new PRNGWrapper(e,t),R.pull=U.pull}function M(){return U?U.random():Math.random()}function N(){B={},TempVariables=B}function D(){return B}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,n=t.store,a=0,i=r.length;a<i;++a){if("undefined"==typeof n[r[a]])return;n=n[r[a]]}return n}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var n=r.names,a=n.pop(),i=r.store,o=0,s=n.length;o<s;++o){if("undefined"==typeof i[n[o]])return!1;i=i[n[o]]}return i[a]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,n=void 0;null!==(n=z.exec(r));)r=r.slice(n[0].length),n[1]?t.names.push(n[1]):n[2]?t.names.push(n[2]):n[3]?t.names.push(n[3]):n[4]?t.names.push(n[4]):n[5]?t.names.push(I(n[5])):n[6]&&t.names.push(Number(n[6]));return""===r?t:null}var W=[],R=c(),F=-1,V=[],U=null,B={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:a},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:f},passage:{get:p},variables:{get:h},history:{get:m},length:{get:y},size:{get:v},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:O},go:{value:T},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:M},clearTemporary:{value:N},temporary:{get:D},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,n,a){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:n,one:!!r}):(i=r,o={namespace:a,one:!!n,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,n,a,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),n&&o.addClass(n),i&&o.attr("title",i),a&&o.text(a),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*a,n(o,Math.easeInOut(i)),(1===a&&i>=1||a===-1&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function n(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var a="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,n(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){c+=i,window.scroll(0,o+l*(u*Math.easeInOut(c))),c>=1&&window.clearInterval(d)}function n(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}function a(e){var t=n(e),r=t+e.offsetHeight,a=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=a+i;return t>=a&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}var i=null!=t?Number(t):.1;Number.isNaN(i)||!Number.isFinite(i)||i<0?i=.1:i>1&&(i=1);var o=window.scrollY?window.scrollY:document.body.scrollTop,s=a(e),u=Math.abs(o-s),l=o>s?-1:1,c=0,d=void 0;d=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,n=e.length;r<n;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,n=State.turns,a=0,i=e.length;a<i&&n>-1;++a){var o=t.lastIndexOf(e[a]);n=Math.min(n,o===-1?-1:r-o)}return n}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,n=e.length;r<n;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,n=0,a=e.length;n<a&&r>0;++n)r=Math.min(r,t.count(e[n]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,n=new Map,a=0,i=0,o=r.length;i<o;++i){var s=r[i];if(n.has(s))n.get(s)&&++a;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++a,n.set(s,!0)):n.set(s,!1)}}}return a}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref6=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,n){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):n(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];return Promise.all(a.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function n(){function r(e){return new Promise(function(r,n){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):n(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var n=arguments.length,a=Array(n),i=0;i<n;i++)a[i]=arguments[i];return Promise.all(a.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:n}}(),importScripts=_ref6.importScripts,importStyles=_ref6.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var a=e,i=void 0;null!==(i=r.exec(a));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(n.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=a.slice(s);/^\s+not\b/.test(u)&&(a=a.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(a=a.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return a}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),n=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,n,a){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(n)},options:{writable:!0,value:Object.assign({profile:"all"},a)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,n){var a=this.output,i=void 0;this.output=e,null!=n&&"object"===("undefined"==typeof n?"undefined":_typeof(n))&&(i=this.options,this.options=Object.assign({},this.options,n));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),u=s?s.exec(this.source):null,u&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=a,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,f=l.length;d<f;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=a,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var n=r.querySelector(".error");if(null!==n)throw new Error(n.textContent.replace(/^(?:(?:Uncaught\s+)?Error:\s+)+/,""));return r}},{key:"createInternalLink",value:function(e,t,r,n){var a=jQuery(document.createElement("a"));return null!=t&&(a.attr("data-passage",t),Story.has(t)?(a.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&a.addClass("link-visited")):a.addClass("link-broken"),a.ariaClick({one:!0},function(){"function"==typeof n&&n(),Engine.play(t)})),r&&a.append(document.createTextNode(r)),e&&a.appendTo(e),a[0]}},{key:"createExternalLink",value:function(e,t,r){var n=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&n.attr({href:t,tabindex:0}),n[0]}},{key:"isExternalLink",value:function(e){if(Story.has(e))return!1;var t=new RegExp("^"+Patterns.url,"gim");return t.test(e)||/[\/.?#]/.test(e)}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(a(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function n(){return 0===d.length}function a(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return f}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return f=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==("undefined"==typeof f?"undefined":_typeof(f))||0===Object.keys(f).length}function l(e){if("object"!==("undefined"==typeof f?"undefined":_typeof(f))||!f.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return f[e]}function c(e){return"object"===("undefined"==typeof f?"undefined":_typeof(f))&&f.hasOwnProperty(e)}var d=[],f=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:n},has:{value:a},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},n=void 0;do{t.lastIndex=e.nextMatch;var a=t.exec(e.source);n=a&&a.index===e.nextMatch,n&&(a[1]?r.styles[Util.fromCssProperty(a[1])]=a[2].trim():a[3]?r.styles[Util.fromCssProperty(a[3])]=a[4].trim():a[5]?r.classes=r.classes.concat(a[5].slice(1).split(/\./)):a[6]&&(r.id=a[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(n);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{t=Scripting.evalTwineScript(e),null==t||"function"==typeof t?t=e:(t=String(t),/\[(?:object(?:\s+[^\]]+)?|native\s+code)\]/.test(t)&&(t=e))}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var n=e[r];switch(n.nodeType){case Node.ELEMENT_NODE:var a=n.nodeName.toUpperCase();if("BR"===a)return!0;var i=t?window.getComputedStyle(n,null):n.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(a){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!a&&(a=t.Parser.get("macro"),!a))throw new Error('cannot find "macro" parser');return a}function r(){for(var t=a||e(),r=new Set,n=t.context;null!==n;n=n.parent)n._shadows&&n._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function n(e){var t={};return r().forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r]}),function(){var r=Object.keys(t),n=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;a.hasOwnProperty(r)&&(n[r]=a[r]),a[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r],n.hasOwnProperty(r)?a[r]=n[r]:delete a[r]})}}}var a=null;return n}()},parseSquareBracketedMarkup:{value:function(e){function t(){return d>=e.source.length?u:e.source[d++]}function r(){return d>=e.source.length?u:e.source[d]}function n(t){return t<1||d+t>=e.source.length?u:e.source[d+t]}function a(){return{error:String.format.apply(String,arguments),pos:d}}function i(){c=d}function o(t){var r=e.source.slice(c,d).trim();if(""===r)throw new Error("malformed wiki "+(h?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(l.forceInternal=!0,l.link=r.slice(1)):l[t]=r,c=d}function s(e){++d;e:for(;;){switch(r()){case"\\":++d;var t=r();if(t!==u&&"\n"!==t)break;case u:case"\n":return u;case e:break e}++d}return d}var u=-1,l={},c=e.matchStart,d=c+1,f=void 0,p=void 0,h=void 0,g=void 0;if(g=r(),"["===g)h=l.isLink=!0;else{switch(h=!1,g){case"<":l.align="left",++d;break;case">":l.align="right",++d}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(d,d+3)))return a("malformed square-bracketed wiki markup");d+=3,l.isImage=!0}if("["!==t())return a("malformed wiki {0}",h?"link":"image");f=1,p=0,i();try{e:for(;;){switch(g=r()){case u:case"\n":return a("unterminated wiki {0}",h?"link":"image");case'"':if(s(g)===u)return a("unterminated double quoted string in wiki {0}",h?"link":"image");break;case"'":if((4===p||3===p&&h)&&s(g)===u)return a("unterminated single quoted string in wiki {0}",h?"link":"image");break;case"|":0===p&&(o(h?"text":"title"),++c,p=1);break;case"-":0===p&&">"===n(1)&&(o(h?"text":"title"),++d,c+=2,p=1);break;case"<":0===p&&"-"===n(1)&&(o(h?"link":"source"),++d,c+=2,p=2);break;case"[":if(p===-1)return a("unexpected left square bracket '['");++f,1===f&&(i(),++c);break;case"]":if(--f,0===f){switch(p){case 0:case 1:o(h?"link":"source"),p=3;break;case 2:o(h?"text":"title"),p=3;break;case 3:h?(o("setter"),p=-1):(o("link"),p=4);break;case 4:o("setter"),p=-1}if(++d,"]"===r()){++d;break e}--d}}++d}}catch(e){return a(e.message)}return l.pos=d,l}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){return Wikifier.helpers.hasBlockContext(e.output.childNodes)?void e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator):void jQuery(e.output).append(document.createTextNode(e.matchText))}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,n=e.matchLength,a=void 0,i=void 0;do{if(n>r)for(i=r;i<n;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(n<r)for(i=r;i>n;--i)t.pop();r=n,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);a=o&&o.index===e.nextMatch,a&&(n=o[0].length,e.nextMatch+=o[0].length)}while(a)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,n=this.working.source,a=this.working.name,i=this.working.arguments,o=void 0;try{if(o=Macro.get(a),!o){if(Macro.tags.has(a)){var s=Macro.tags.get(a);return throwError(e.output,"child tag <<"+a+">> was found outside of a call to its parent macro"+(1===s.length?"":"s")+" <<"+s.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+a+">> does not exist",e.source.slice(t,e.nextMatch))}var u=null;if(o.hasOwnProperty("tags")&&(u=this.parseBody(e,o),!u))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+a+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof o.handler)return throwError(e.output,"macro <<"+a+">> handler function "+(o.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var l=u?u[0].args:this.createArgs(i,o.hasOwnProperty("skipArgs")&&!!o.skipArgs||o.hasOwnProperty("skipArg0")&&!!o.skipArg0);if(o.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({parent:this.context,macro:o,name:a,args:l,payload:u,parser:e,source:n});try{o.handler.call(this.context)}finally{this.context=this.context.parent}}else{var c=e._rawArgs;e._rawArgs=i;try{o.handler(e.output,a,l,e,u)}finally{e._rawArgs=c}}}catch(r){return throwError(e.output,"cannot execute "+(o&&o.isWidget?"widget":"macro")+" <<"+a+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,n="/"+r,a="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,f=this.working.name,p=this.working.arguments,h=e.nextMatch;(e.matchStart=e.source.indexOf(this.match,e.nextMatch))!==-1;)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,y=this.working.arguments,v=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case a:case n:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:f,arguments:p,args:this.createArgs(p,s||0===o.length&&u),contents:e.source.slice(h,v)}),d=g,f=m,p=y,h=b)}if(0===c){o.push({source:d,name:f,arguments:p,args:this.createArgs(p,s||0===o.length&&u),contents:e.source.slice(h,v)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return l!==-1?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){for(var t=new RegExp(this.argsPattern,"gm"),r=[],n=new RegExp("^"+Patterns.variable),a=void 0;null!==(a=t.exec(e));){var i=void 0;if(a[1])i=undefined;else if(a[2]){i=a[2];try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(a[3])i="";else if(a[4]){i=a[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(a[5]){i=a[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(a[6]){i=a[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(a[7])if(i=a[7],n.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(a[8]){var u=void 0;switch(a[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"prettyLink",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),n=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"wiki-link","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,n,a):Wikifier.createExternalLink(i,r,n)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({
-name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"wiki-image",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,a=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);a=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(a,o,null,n):Wikifier.createExternalLink(a,o),a.classList.add("link-image")}if(a=jQuery(document.createElement("img")).appendTo(a).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(a.setAttribute("data-passage",s.title),i=s.text)}a.src=i,t.hasOwnProperty("title")&&(a.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(a.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),n=r&&r.index===e.nextMatch,a=jQuery(document.createElement(n?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?a.addClass("marked"):(t.classes.forEach(function(e){return a.addClass(e)}),""!==t.id&&a.attr("id",t.id),a.css(t.styles)),n?(e.nextMatch+=r[0].length,e.subWikify(a[0],"\\n?"+this.terminator)):e.subWikify(a[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){return Wikifier.helpers.hasBlockContext(e.output.childNodes)?void e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator):void jQuery(e.output).append(document.createTextNode(e.matchText))}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],n=null,a=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==n&&(n=u,a=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===n?(a.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(a[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(a).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var n=this,a=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{a.lastIndex=e.nextMatch;var u=a.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var a=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],n.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),a.classes.forEach(function(e){return l.addClass(e)}),""!==a.id&&l.attr("id",a.id),s&&u?a.styles["text-align"]="center":s?a.styles["text-align"]="right":u&&(a.styles["text-align"]="left"),l.css(a.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,n=0,a=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(a=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>n)for(i=n;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<n)for(i=n;i>u;--i)t.pop();else u===n&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));n=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(a)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:<!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var n=Story.get(r);n.tags.includes("Twine.image")&&(r=n.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagPattern:"<(\\w+)",voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],nobrElements:["colgroup","datalist","dl","figure","ol","optgroup","select","table","tbody","tfoot","thead","tr","ul"],handler:function(e){var t=new RegExp(this.tagPattern).exec(e.matchText),r=t&&t[1],n=r&&r.toLowerCase();if(n){var a=this.voidElements.includes(n)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(n),o=void 0,s=void 0;if(!a){o="<\\/"+n+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(a||s){var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+n+">: bad evaluation from attribute directive: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c),Config.debug&&(d=new DebugView(e.output,"html-"+n,n,e.matchText),d.modes({block:"img"===n,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild(c)}else throwError(e.output,'HTML tag "'+r+'" is not closed',e.matchText+"…")}},processAttributeDirectives:function(e){for(var t=e.attributes,r=0;r<t.length;++r){var n=t[r],a=n.name,i=n.value,o="@"===a[0];if(o||a.startsWith("sc-eval:")){var s=a.slice(o?1:8);e.setAttribute(s,Scripting.evalTwineScript(i)),e.removeAttribute(a)}}},processDataAttributes:function(e){var t=e.getAttribute("data-passage");if(null!=t){var r=Wikifier.helpers.evalPassageId(t);r!==t&&(t=r,e.setAttribute("data-passage",r)),""!==t&&("IMG"===e.tagName.toUpperCase()?"data:"!==t.slice(0,5)&&Story.has(t)&&(t=Story.get(t),t.tags.includes("Twine.image")&&(e.src=t.text.trim())):!function(){var r=e.getAttribute("data-setter"),n=void 0;null!=r&&(r=String(r).trim(),""!==r&&(n=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(r)))),Story.has(t)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof n&&n.call(this),Engine.play(t)})}())}}})}();var Macro=function(){function e(t,r,a){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,a)});if(!f.test(t))throw new Error('invalid macro name "'+t+'"');if(n(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===("undefined"==typeof r?"undefined":_typeof(r)))c[t]=a?clone(r):r;else{if(!n(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=a?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(n(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function n(e){return c.hasOwnProperty(e)}function a(e){var t=null;return n(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&&macros[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],a=[].concat(r,Array.isArray(t)?t:[]),i=0;i<a.length;++i){var o=a[i];if(n(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);r!==-1&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},f=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:n},get:{value:a},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){var e=function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{parent:{value:r.parent},self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,n=Array(r),a=0;a<r;a++)n[a]=arguments[a];n.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+("undefined"==typeof r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var a=this,i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];"function"==typeof r&&r.apply(this,o),"function"==typeof e&&!function(){var t=Object.keys(n),r=t.length>0?{}:null;try{t.forEach(function(e){var t=e.slice(1),a="$"===e[0]?State.variables:State.temporary;a.hasOwnProperty(t)&&(r[t]=a[t]),a[t]=n[e]}),e.apply(a,o)}finally{t.forEach(function(e){var t=e.slice(1),a="$"===e[0]?State.variables:State.temporary;n[e]=a[t],r.hasOwnProperty(t)?a[t]=r[t]:delete a[t]})}}(),"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e?e:this.name,t?t:this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t?t:this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}();return e}();!function(){Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var n=r[1],a=n.slice(1),i="$"===n[0]?State.variables:State.temporary;i.hasOwnProperty(a)&&(e[a]=i[a]),this.addShadow(n)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),n="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?n[r]=e[r]:delete n[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],n=t[2];r.hasOwnProperty(n)&&delete r[n]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var n=r[1];e[n]=State.variables[n]}return storage.set("remember",e)?void(Config.debug&&this.debugView.modes({hidden:!0})):this.error("unknown error, cannot remember: "+this.args.raw)},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,n=!1;null!==(r=t.exec(this.args.full));){var a=r[1];State.variables.hasOwnProperty(a)&&delete State.variables[a],e&&e.hasOwnProperty(a)&&(n=!0,delete e[a])}return n&&!storage.set("remember",e)?this.error("unknown error, cannot update remember store"):void(Config.debug&&this.debugView.modes({hidden:!0}))}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=0;try{for(var t=Scripting.evalJavaScript,r=this.payload.length,n=!1;e<r;++e){switch(this.payload[e].name){case"else":if(e+1!==r)return this.error("<<else>> must be the final clause");if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||t(this.payload[e].args.full)){n=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<r;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!n,invalid:!n})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===("undefined"==typeof t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length,t=void 0;if(1===e)return this.error("no cases specified");try{t=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}var r=this.debugView,n=1,a=!1;for(Config.debug&&r.modes({nonvoid:!1,hidden:!0});n<e;++n){switch(this.payload[n].name){case"default":if(n+1!==e)return this.error("<<default>> must be the final case");if(this.payload[n].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[n].args.raw);break;default:if(0===this.payload[n].args.length)return this.error("no value(s) specified for <<"+this.payload[n].name+">> (#"+n+")")}if(Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1}),"default"===this.payload[n].name||this.payload[n].args.some(function(e){return e===t})){a=!0,new Wikifier(this.output,this.payload[n].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++n;n<e;++n)this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0,invalid:!0});r.modes({nonvoid:!1,hidden:!0,invalid:!a}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!a})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var n=void 0,a=void 0,i=void 0;if(e.indexOf(";")===-1){if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");a=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");n=o[1],a=o[2].trim(),i=o[3],0===a.length&&(a=!0)}this.self._handleFor.call(this,t,n,a,i)}},_handleFor:function(e,t,r,n){var a=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{a(t)}catch(e){return this.error("bad init expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}for(;a(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(n)try{a(n)}catch(e){return this.error("bad post expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,n){var a=!0,i=void 0;try{i=this.self._toRangeList(n)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,a?e.replace(/^\n/,""):e),a&&(a=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var n=void 0;switch("undefined"==typeof r?"undefined":_typeof(r)){case"string":n=[];for(var a=0;a<r.length;){var i=Util.charAndPosAt(r,a);n.push([a,i.char]),a=1+i.end}break;case"object":if(Array.isArray(r))n=r.map(function(e,t){return[t,e]});else if(r instanceof Set)n=[].concat(_toConsumableArray(r)).map(function(e,t){return[t,e]});else if(r instanceof Map)n=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));n=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+("undefined"==typeof r?"undefined":_typeof(r)))}return n}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){return this.contextHas(function(e){return"for"===e.name})?(TempState.break="continue"===this.name?1:2,void(Config.debug&&this.debugView.modes({hidden:!0}))):this.error("must only be used in conjunction with its parent macro <<for>>")}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var n=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),
-r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),n=this.args[1],a=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?a:n)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,a)):State.setVar(t,n)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),n=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var a=document.createDocumentFragment();new Wikifier(a,e.payload[0].contents),r.append(a)}n&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),n&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),n=this.args[1],a=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(a).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,n)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(a.checked=!0,State.setVar(t,n))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),n=this.args[1],a="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,n),i.textContent=n,a&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),n=this.args[1],a=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),jQuery(a).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,n),a.value=n,i&&(a.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+a.id]=function(e){delete postdisplay[e],setTimeout(function(){return a.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,n=void 0,a=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&a.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&a.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&a.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(n=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):n=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(a||document.createTextNode(n))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,n=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var a=State.length-2;a>=0;--a)if(State.history[a].title!==State.passage){e=a,t=State.history[a].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(e===-1)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||e!==-1?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(n||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,n=void 0,a=void 0;return 1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&n.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&n.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&n.attr("align",this.args[0].align),t=this.args[0].link,a=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,a=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e]?void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(n||document.createTextNode(r)).appendTo(this.output):void jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof a&&a()})).addClass("macro-"+this.name).append(n||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void(this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass())}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var t=document.createDocumentFragment();switch(new Wikifier(t,this.payload[0].contents),this.name){case"replace":e.empty();case"append":e.append(t);break;case"prepend":e.prepend(t)}}else"replace"===this.name&&e.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);return 0===e.length?this.error('no elements matched the selector "'+this.args[0]+'"'):void e.remove()}}),Has.audio?!function(){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){var e=this;if(this.args.length<2){var t=[];return this.args.length<1&&t.push("track or group IDs"),this.args.length<2&&t.push("actions"),this.error("no "+t.join(" or ")+" specified")}var r=Macro.get("cacheaudio").tracks,n=[];try{!function(){var t=function e(t){var n=t.id,o=void 0;switch(n){case":all":o=a;break;case":looped":o=a.filter(function(e){return r[e].isLooped()});break;case":muted":o=a.filter(function(e){return r[e].isMuted()});break;case":paused":o=a.filter(function(e){return r[e].isPaused()});break;case":playing":o=a.filter(function(e){return r[e].isPlaying()});break;default:o=":"===n[0]?i[n]:[n]}return t.hasOwnProperty("not")&&!function(){var r=t.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!r.includes(e)})}(),o},a=Object.freeze(Object.keys(r)),i=Macro.get("cacheaudio").groups;e.self.parseIds(String(e.args[0]).trim()).forEach(function(e){n.push.apply(n,_toConsumableArray(t(e)))}),n.forEach(function(e){if(!r.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}()}catch(e){return this.error(e.message)}for(var a=this.args.slice(1),i=void 0,o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=5,f=void 0,p=void 0;a.length>0;){var h=a.shift();switch(h){case"play":case"pause":case"stop":i=h;break;case"fadein":i="fade",c=1;break;case"fadeout":i="fade",c=0;break;case"fadeto":if(0===a.length)return this.error("fadeto missing required level value");if(i="fade",p=a.shift(),c=Number.parseFloat(p),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse fadeto: "+p);break;case"fadeoverto":if(a.length<2){var g=[];return a.length<1&&g.push("seconds"),a.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(i="fade",p=a.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+p);if(p=a.shift(),c=Number.parseFloat(p),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse fadeoverto: "+p);break;case"volume":if(0===a.length)return this.error("volume missing required level value");if(p=a.shift(),o=Number.parseFloat(p),Number.isNaN(o)||!Number.isFinite(o))return this.error("cannot parse volume: "+p);break;case"mute":case"unmute":s="mute"===h;break;case"time":if(0===a.length)return this.error("time missing required seconds value");if(p=a.shift(),u=Number.parseFloat(p),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse time: "+p);break;case"loop":case"unloop":l="loop"===h;break;case"goto":if(0===a.length)return this.error("goto missing required passage title");if(p=a.shift(),f="object"===("undefined"==typeof p?"undefined":_typeof(p))?p.link:p,!Story.has(f))return this.error('passage "'+f+'" does not exist');break;default:return this.error("unknown action: "+h)}}try{n.forEach(function(e){var t=r[e];switch(null!=o&&(t.volume=o),null!=u&&(t.time=u),null!=s&&(t.mute=s),null!=l&&(t.loop=l),null!=f&&t.one("end",function(){return Engine.play(f)}),i){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"fade":t.fadeWithDuration(d,c)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){function t(e,t){var r=/\S/g,n=/[()]/g,a=void 0;if(r.lastIndex=t,a=r.exec(e),null===a||"("!==a[0])throw new Error('invalid ":not()" syntax: missing parentheticals');n.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(a=n.exec(e));)if("("===a[0]?++s:--s,s<1){o.nextMatch=n.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}for(var r=[],n=/:?[^\s:()]+/g,a=void 0;null!==(a=n.exec(e));){var i=a[0];if(":not"===i){if(0===r.length)throw new Error('invalid negation: no group ID preceded ":not()"');var o=r[r.length-1];if(":"!==o.id[0])throw new Error('invalid negation of track "'+o.id+'": only groups may be negated with ":not()"');var s=t(e,n.lastIndex);if(s.nextMatch===-1)throw new Error('unknown error parsing ":not()"');n.lastIndex=s.nextMatch,o.not=this.parseIds(s.str)}else r.push({id:i})}return r}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim(),r=/^:|\s/;if(r.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var n=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){var t=n.exec(e);return null===t?e:{format:t[1],src:t[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var i=this.self.tracks;i.hasOwnProperty(t)&&i[t].destroy(),i[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim(),r=/^[^:]|\s/;if(r.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var n=Macro.get("cacheaudio").tracks,a=[],i=1,o=this.payload.length;i<o;++i){if(this.payload[i].args.length<1)return this.error("no track ID specified");var s=String(this.payload[i].args[0]).trim();if(!n.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');a.push(s),Config.debug&&this.createDebugView(this.payload[i].name,this.payload[i].source).modes({nonvoid:!1,hidden:!0})}var u=Macro.get("cacheaudio").groups;u.hasOwnProperty(t)&&delete u[t],u[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim(),n=/^:|\s/;if(n.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),i=1,o=this.payload.length;i<o;++i){if(this.payload[i].args.length<2){var s=[];return this.payload[i].args.length<1&&s.push("track ID"),this.payload[i].args.length<2&&s.push("actions"),this.error("no "+s.join(" or ")+" specified")}var u=String(this.payload[i].args[0]).trim();if(!t.hasOwnProperty(u))return this.error('track "'+u+'" does not exist');for(var l=this.payload[i].args.slice(1),c=!1,d=void 0;l.length>0;){var f=l.shift(),p=void 0;switch(f){case"copy":c=!0;break;case"rate":l.length>0&&l.shift();break;case"volume":if(0===l.length)return this.error("volume missing required level value");if(p=l.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse volume: "+p);break;default:return this.error("unknown action: "+f)}}var h=t[u];a.add({copy:c,track:h,volume:null!=d?d:h.volume}),Config.debug&&this.createDebugView(this.payload[i].name,this.payload[i].source).modes({nonvoid:!1,hidden:!0})}var g=this.self.lists;g.hasOwnProperty(r)&&g[r].destroy(),g[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,n=void 0;e.length>0;){var a=e.shift(),i=void 0;switch(a){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===a;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),n=Number.parseFloat(i),Number.isNaN(n)||!Number.isFinite(n))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+a)}}try{null!=r&&(SimpleAudio.mute=r),null!=n&&(SimpleAudio.volume=n),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var n=[];return this.args.length<1&&n.push("list ID"),this.args.length<2&&n.push("actions"),this.error("no "+n.join(" or ")+" specified")}var a=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!a.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=a[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,f=5,p=void 0;r.length>0;){var h=r.shift();switch(h){case"play":case"pause":case"stop":case"skip":o=h;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",p=r.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+p);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",p=r.shift(),f=Number.parseFloat(p),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+p);if(p=r.shift(),d=Number.parseFloat(p),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+p);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(p=r.shift(),s=Number.parseFloat(p),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+p);break;case"mute":case"unmute":u="mute"===h;break;case"loop":case"unloop":l="loop"===h;break;case"shuffle":case"unshuffle":c="shuffle"===h;break;default:return this.error("unknown action: "+h)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(f,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();return e.hasOwnProperty(t)?(e[t].destroy(),delete e[t],void(Config.debug&&this.createDebugView())):this.error('playlist "'+t+'" does not exist')}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var n=t.shift();return n.hasData()?e():void n.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var n=Macro.get("setplaylist").list;null!==n&&n.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var n=0;n<this.args.length;++n){var a=this.args[n];if(!r.hasOwnProperty(a))return this.error('track "'+a+'" does not exist');t.list.add(r[a])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}():Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}}),Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;return e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],Story.has(e)?void setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay):this.error('passage "'+e+'" does not exist')}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var a=n;r&&(a=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(a)),a.append(t),r&&setTimeout(function(){return a.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var n=State.turns,a=this.timers,i=null;i=setInterval(function(){if(n!==State.turns)return clearInterval(i),void a.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{"undefined"!=typeof t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),a.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearInterval(e)}),a.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var n=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=a;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),n&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),n&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,n=this.timers,a=null,i=t.shift(),o=function o(){if(n.delete(a),r===State.turns){var s=i;null!=(i=t.shift())&&(a=setTimeout(o,i.delay),n.add(a)),e.call(this,s)}};a=setTimeout(o,i.delay),n.add(a),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearTimeout(e)}),n.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=this,r=void 0;try{var n=function(){State.variables.hasOwnProperty("args")&&(r=State.variables.args),State.variables.args=[].concat(_toConsumableArray(t.args)),State.variables.args.raw=t.args.raw,State.variables.args.full=t.args.full,t.addShadow("$args");var n=document.createDocumentFragment(),a=[];return new Wikifier(n,e),Array.from(n.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length?{v:t.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")")}:void t.output.appendChild(n)}();if("object"===("undefined"==typeof n?"undefined":_typeof(n)))return n.v}catch(e){return this.error("cannot execute widget: "+e.message)}finally{"undefined"!=typeof r?State.variables.args=r:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var n=t.offsetWidth;r.style.overflow="auto";var a=t.offsetWidth;n===a&&(a=r.clientWidth),document.body.removeChild(r),e=n-a}catch(e){}return e||17}();var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1>'+('<button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'"></button>')+'</div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),f=jQuery(e.find("#ui-dialog").get(0)),p=jQuery(e.find("#ui-dialog-title").get(0)),h=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return f.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return h.hasClass(e)}))}function r(e,t){return h.empty().removeClass(),null!=t&&h.addClass(t),p.empty().append((null!=e?String(e):"")||" "),h.get(0)}function n(){return h.get(0)}function a(){var e;return(e=h).append.apply(e,arguments),Dialog}function i(){var e;return(e=h).wiki.apply(e,arguments),Dialog}function o(e,t,r,n,a){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,a),"function"==typeof n&&n(e)})}function s(e,r){
-var n=jQuery.extend({top:50},e),a=n.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==h[0].querySelector("img")&&h.imagesLoaded().always(function(){return l({data:{top:a}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(a);return f.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:a},jQuery.throttle(40,l)),Has.mutationObserver?(y=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:a}});break}}),y.observe(h[0],{childList:!0,subtree:!0})):h.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:a},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),y?(y.disconnect(),y=null):h.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),f.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),p.empty(),h.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&"undefined"!=typeof e.data.top?e.data.top:50;"block"===f.css("display")&&(f.css({display:"none"}),f.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),n={left:"",right:"",top:"",bottom:""};f.css(n);var a=r.width()-f.outerWidth(!0)-1,i=r.height()-f.outerHeight(!0)-1;return a<=32+m&&(i-=m),i<=32+m&&(a-=m),a<=32?n.left=n.right=16:n.left=n.right=a/2>>0,i<=32?n.top=n.bottom=16:i/2>t?n.top=t:n.top=n.bottom=i/2>>0,Object.keys(n).forEach(function(e){""!==n[e]&&(n[e]+="px")}),n}var d=null,f=null,p=null,h=null,g=null,m=0,y=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:n},append:{value:a},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===("undefined"==typeof e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),Config.debug&&DebugView.init(),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())f();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildDialogAutoload(),UI.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&p(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),window.location.reload()}function n(){return b}function a(){return b===y.Idle}function i(){return b!==y.Idle}function o(){return b===y.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&f(),t}function l(e){var t=State.go(e);return t&&f(),t}function c(){return l(-1)}function d(){return l(1)}function f(){return p(State.passage,!0)}function p(e,t){var r=e;b=y.Playing,TempState={},State.clearTemporary();var n=void 0,a=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{n=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=y.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(v,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},v),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=y.Playing,Story.has("PassageDone"))try{a=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(n),s.prepend(l.output)),null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(a),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(w=Util.now(),g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=y.Idle,s[0]}function h(e,t,r){var n=!1;switch(r){case undefined:break;case"replace":case"back":n=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}p(e,n)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var y=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),v=40,b=y.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:y},minDomActionDelay:{value:v},init:{value:e},start:{value:t},restart:{value:r},state:{get:n},isIdle:{value:a},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:f},play:{value:p},display:{value:h}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i,!function(){var e=/(?:\\n|\\t|\\s|\\|\r)/g,r=new RegExp(e.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});t=function(t){if(null==t)return"";var a=String(t);return a&&r.test(a)?a.replace(e,function(e){return n[e]}):a}}();var r=function(){function r(t,n){var a=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:n||null},tags:{value:Object.freeze(n&&n.hasAttribute("tags")?n.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return a.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch("undefined"==typeof e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){var e=this.text;return(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),this.tags.includes("Twine.image")&&(e="[img["+e+"]]"),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,n=document.createElement("div");return jQuery(n).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:n,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,n,t)}),Story.has("PassageHeader")&&new Wikifier(n,Story.get("PassageHeader").processText()),new Wikifier(n,this.processText()),Story.has("PassageFooter")&&new Wikifier(n,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:n,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,n,t)}),this._excerpt=r.getExcerptFromNode(n),n}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<span class="error" title="'+e+'">'+L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e})+"</span>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var n=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(n)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),n=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*)(?:|[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return n?n[1]+"…":"…"}}]),r}();return r}(),Save=function(){function e(){if("cookie"===storage.name)return n(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),O(e.autosave)&&(t=!0);for(var a=0;a<e.slots.length;++a)O(e.slots[a])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function n(){return storage.delete("saves"),!0}function a(){return i()||d()}function i(){return"cookie"!==storage.name&&"undefined"!=typeof Config.saves.autosave}function o(){var e=r();return null!==e.autosave}function s(){var e=r();return e.autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var n=r(),a={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(a.metadata=t),n.autosave=T(a),C(n)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&P!==-1}function f(){return P+1}function p(){if(!d())return 0;for(var e=r(),t=0,n=0,a=e.slots.length;n<a;++n)null!==e.slots[n]&&++t;return t}function h(){return 0===p()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function y(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function v(e,t,n){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var a=r();if(e>=a.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=n&&(i.metadata=n),a.slots[e]=T(i),C(a)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){function r(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),n=e.getHours(),a=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),n<10&&(n="0"+n),a<10&&(a="0"+a),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+n+a+i}if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void UI.alert(L10n.get("savesDisallowed"));var n=null==e?Story.domId:Util.slugify(e),a=n+"-"+r()+".save",i=null==t?{}:{metadata:t},o=LZString.compressToBase64(JSON.stringify(T(i)));saveAs(new Blob([o],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var n=void 0;try{n=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(n)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(T(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,n=0,a=t.length;n<a;++n)if(null!==t[n]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function O(e){if(null==e||"object"!==("undefined"==typeof e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function T(e){if(null!=e&&"object"!==("undefined"==typeof e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(O(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:n},ok:{value:a},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:f},isEmpty:{value:h},count:{value:p},has:{value:g},get:{value:m},load:{value:y},save:{value:v},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}n(),g.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&g.filter(function(e){return e.type!==m.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function n(){var e=t(),r=storage.get("settings")||t();g.filter(function(e){return e.type!==m.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function a(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)a(),n();else{if(null==e||!f(e))throw new Error('nonexistent setting "'+e+'"');var t=p(e);t.type!==m.Header&&(settings[e]=t.default)}return r()}function o(e,t){g.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var n=[];throw arguments.length<1&&n.push("type"),arguments.length<2&&n.push("name"),arguments.length<3&&n.push("definition"),new Error("missing parameters, no "+n.join(" or ")+" specified")}if("object"!==("undefined"==typeof r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(f(t))throw new Error('cannot clobber existing setting "'+t+'"');var a={type:e,name:t,label:null==r.label?"":String(r.label).trim()};switch(e){case m.Header:break;case m.Toggle:a.default=!!r.default;break;case m.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(a.list=Object.freeze(r.list),null==r.default)a.default=r.list[0];else{var i=r.list.indexOf(r.default);if(i===-1)throw new Error("list does not contain default");a.default=r.list[i]}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(a.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(a.onChange=Object.freeze(r.onChange)),g.push(Object.freeze(a))}function u(e,t){s(m.Header,e,{label:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.List].concat(t))}function d(){return 0===g.length}function f(e){return g.some(function(t){return t.name===e})}function p(e){return g.find(function(t){return t.name===e})}function h(e){f(e)&&delete settings[e];for(var t=0;t<g.length;++t)if(g[t].name===e){g.splice(t,1),h(e);break}}var g=[],m=Util.toEnum({Header:0,Toggle:1,List:2});return Object.freeze(Object.defineProperties({},{Types:{value:m},init:{value:e},create:{value:t},save:{value:r},load:{value:n},clear:{value:a},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},isEmpty:{value:d},has:{value:f},get:{value:p},delete:{value:h}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(n))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return n.includes(e)}).sort().join('", "')+'"')}function t(e){if(a.includes(e.title)&&e.tags.includesAny(n))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return n.includes(e)}).sort().join('", "')+'"')}var n=["widget"],a=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"];!function(){var i=function(e){var t=[].concat(n),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(n.unshift("script","stylesheet"),a.push("StoryTitle"),Config.passages.start=function(){var e="START_AT";return""!==e?(Config.debug=!0,e):"Start"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),n=new Passage(r.attr("tiddler"),this);n.title===Config.passages.start?(e(n),c[n.title]=n):n.tags.includes("stylesheet")?(i(n),d.push(n)):n.tags.includes("script")?(i(n),f.push(n)):n.tags.includes("widget")?(i(n),p.push(n)):(t(n),c[n.title]=n)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage');var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}()}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<f.length;++e)try{Scripting.evalJavaScript(f[e].text)}catch(t){console.error(t),Alert.error(f[e].title,"object"===("undefined"==typeof t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<p.length;++t)try{Wikifier.wikifyEval(p[t].processText())}catch(e){console.error(e),Alert.error(p[t].title,"object"===("undefined"==typeof e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=h=Util.unescape(e),m=Util.slugify(h)}function n(){return h}function a(){return m}function i(){return g}function o(e){var t="undefined"==typeof e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r);case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t="undefined"==typeof e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",n=Object.keys(c),a=[],i=0;i<n.length;++i){var o=c[n[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":for(var s=0,u=o[e].length;s<u;++s)if(o[e][s]==t){a.push(o);break}break;default:o[e]==t&&a.push(o)}}return a.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),a}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),n=[],a=0;a<r.length;++a){var i=c[r[a]];e(i)&&n.push(i)}return n.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),n}var c={},d=[],f=[],p=[],h="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:f},widgets:{value:p},load:{value:e},init:{value:t},title:{get:n},domId:{get:a},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,n=Config.debug;Config.debug=!1;try{null==r&&(r=document.createElement("ul"));var a=document.createDocumentFragment();new Wikifier(a,Story.get(e).processText().trim());var i=[].concat(_toConsumableArray(a.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(/^(?:(?:Uncaught\s+)?Error:\s+)+/,"")});if(i.length>0)throw new Error(i.join("; "));for(;a.hasChildNodes();){var o=a.firstChild;if(o.nodeType===Node.ELEMENT_NODE&&"A"===o.nodeName.toUpperCase()){var s=document.createElement("li");r.appendChild(s),s.appendChild(o)}else a.removeChild(o)}}finally{Config.debug=n}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons">'+('<li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li>")+"</ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function n(){l(),Dialog.open.apply(Dialog,arguments)}function a(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){f(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons">'+('<li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+"</button></li>")+('<li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li>")+"</ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var n=Story.get(State.history[r].title);n&&n.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+n.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons">'+('<li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+"</button></li>")+('<li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li>")+"</ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,n){var a=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&a.addClass(t),n?a.ariaClick(n):a.prop("disabled",!0),jQuery(document.createElement("li")).append(a)}function r(){function e(e,t,r,n,a){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+n).addClass(e).html(r);return t&&i.addClass(t),a?"auto"===n?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return a()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(n+1)},function(){return a(n)}):i.prop("disabled",!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var n=jQuery(document.createElement("td")),a=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(n),t.autosave?(a.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?L10n.get("savesSavedOn")+" "+new Date(t.autosave.date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(a.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(i),i.addClass("empty"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(n).append(a).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),f=jQuery(document.createElement("td")),p=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(f),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?L10n.get("savesSavedOn")+" "+new Date(t.slots[s].date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(f),
-p.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(f),f.addClass("empty"),p.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(f).append(p).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}var n=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&n.append(r()),a||Has.fileAPI){var i=jQuery(document.createElement("ul")).addClass("buttons").appendTo(n);return Has.fileAPI&&(i.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),i.append(e("import",null,L10n.get("savesLabelImport"),function(){return n.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(n)),a&&i.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,n=Util.slugify(r),a=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2")),o=jQuery(document.createElement("p"));return a.attr("id","header-body-"+n).append(i).append(o).appendTo(e),i.attr("id","header-heading-"+n).wiki(r),void o.attr("id","header-label-"+n).wiki(t.label)}var s=t.name,u=Util.slugify(s),l=jQuery(document.createElement("div")),c=jQuery(document.createElement("label")),d=jQuery(document.createElement("div")),f=void 0;switch(l.attr("id","setting-body-"+u).append(c).append(d).appendTo(e),c.attr({id:"setting-label-"+u,for:"setting-control-"+u}).wiki(t.label),null==settings[s]&&(settings[s]=t.default),t.type){case Setting.Types.Toggle:f=jQuery(document.createElement("button")),settings[s]?f.addClass("enabled").text(L10n.get("settingsOn")):f.text(L10n.get("settingsOff")),f.ariaClick(function(){settings[s]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[s]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[s]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default})});break;case Setting.Types.List:f=jQuery(document.createElement("select"));for(var p=0,h=t.list.length;p<h;++p)jQuery(document.createElement("option")).val(p).text(t.list[p]).appendTo(f);f.val(t.list.indexOf(settings[s])).attr("tabindex",0).on("change",function(){settings[s]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default,list:t.list})})}f.attr("id","setting-control-"+u).appendTo(d)}),e.append('<ul class="buttons">'+('<li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+"</button></li>")+('<li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li>")+"</ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function f(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:n},saves:{value:a},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:f},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:f},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),n=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray">'+('<button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button>')+'<div id="ui-bar-history">'+('<button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'">î ¡</button>')+('<button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'">î ¹</button>')+('<button id="history-forward" tabindex="0" title="'+n+'" aria-label="'+n+'">î ¢</button>')+'</div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core">'+('<li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+"</a></li>")+('<li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+"</a></li>")+('<li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+"</a></li>")+('<li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li>")+"</ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.prop("disabled",State.length<2),t.prop("disabled",State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&!function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").prop("disabled",State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").prop("disabled",State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:n},unstow:{value:a},setStoryElements:{value:i}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):n())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function n(){jQuery(document.documentElement).attr("data-init","loading")}function a(){return++s,o.add(s),n(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:n},lock:{value:a},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:22,patch:0,prerelease:null,build:8166,date:new Date("2018-01-01T04:38:54.781Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),UIBar.start(),window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version},LoadScreen.unlock(e)}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);}
+	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),_slicedToArray=function(){function e(e,t){var r=[],a=!0,n=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},errorPrologRegExp=/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,Alert=function(){function e(e,t,r,a){var n="fatal"===e,i="Apologies! "+(n?"A fatal":"An")+" error has occurred.";i+=n?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(errorPrologRegExp,"")+".":": unknown error."),"object"===(void 0===a?"undefined":_typeof(a))&&a.stack&&(i+="\n\nStack Trace:\n"+a.stack),window.alert(i)}function t(t,r,a){e(null,t,r,a)}function r(t,r,a){e("fatal",t,r,a)}return function(e){window.onerror=function(a,n,i,o,s){"complete"===document.readyState?t(null,a,s):(r(null,a,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,a){t.test(a)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",r=t.replace("\\-",""),a="("+t+"+)\\(([^\\)\\|\\n]+)\\):",n="("+t+"+):([^;\\|\\n]+);",i="((?:\\."+t+"+)+);",o="((?:#"+t+"+)+);",s=a+"|"+n+"|"+i+"|"+o;return Object.freeze({space:e,spaceNoTerminator:"[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",lineTerminator:"[\\n\\r\\u2028\\u2029]",anyLetter:t,anyLetterStrict:r,identifierFirstChar:"[$A-Z_a-z]",identifier:"[$A-Z_a-z][$0-9A-Z_a-z]*",variableSigil:"[$_]",variable:"[$_][$A-Z_a-z][$0-9A-Z_a-z]*",macroName:"[A-Za-z][\\w-]*|[=-]",cssImage:"\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",inlineCss:s,url:"(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+"})}();!function(){function e(e,t){var n=String(e);switch(t){case"start":return n&&r.test(n)?n.replace(r,""):n;case"end":return n&&a.test(n)?n.replace(a,""):n;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var a=void 0===t?"":String(t);for(""===a&&(a=" ");a.length<r;){var n=a.length,i=r-n;a+=n>i?a.slice(0,i):a}return a.length>r&&(a=a.slice(0,r)),a}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,a=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var a=this[r];if(t===a||t!==t&&a!==a)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:t(i-n,r)+a}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:a+t(i-n,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,a=void 0;switch(t.length){case 1:r=0,a=e-1;break;case 2:r=0,a=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),a=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r)<0&&(r=0),Number.isNaN(a)?a=0:!Number.isFinite(a)||a>=e?a=e-1:a<0&&(a=e+a)<0&&(a=e-1),_random(r,a)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var a=t+1;if(a>=e.length)throw new Error("high surrogate without trailing low surrogate");var n=e.charCodeAt(a);if(n<56320||n>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(a),start:t,end:a}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){return e[0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1))]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var e=Array.from(this);if(0===arguments.length)return e;var t=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),r=t.length;if(0===r)return e;for(var a=Array.prototype.indexOf,n=Array.prototype.push,i=0;i<r;++i){var o=t[i];-1===a.call(e,o)&&n.call(e,o)}return e}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,a=0;-1!==(r=e.call(this,t,r));)++a,++r;return a}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];if(0==this.length>>>0)return[];for(var e=Array.prototype.indexOf,t=Array.prototype.push,r=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),n=[],i=0,o=a.length;i<o;++i)for(var s=a[i],u=0;-1!==(u=e.call(this,s,u));)t.apply(n,r.call(this,u,1));return n}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),a=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),n=[],i=0,o=r.length;i<o;++i)n[i]=this[r[i]];for(var s=0,u=a.length;s<u;++s)t.call(this,a[s],1);return n}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=Array.prototype.splice,n=[],i=t-1;do{n.push(a.call(this,_random(0,i--),1)[0])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.push,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){return this[0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)))]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=new Map,n=[],i=t-1;do{var o=void 0;do{o=_random(0,i)}while(a.has(o));a.set(o,!0),n.push(this[o])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var a=this[t];this[t]=this[r],this[r]=a}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.unshift,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var a=[],n=0,i=0;i<r.length;++i)a.push(r[i]===undefined?arguments[n++]:r[i]);return t.apply(this,a.concat(e.call(arguments,n)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function(e,t,r){var a=Number(e);return Number.isNaN(a)?NaN:a.clamp(t,r)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var a=String(r);return a&&t.test(a)?a.replace(e,"\\$&"):a}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function a(e,t,r){if(!t)return e;var a=Math.abs(t)-e.length;if(a<1)return e;var n=String(r).repeat(a);return t<0?e+n:n+e}if(arguments.length<2)return 0===arguments.length?"":r;var n=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===n.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=n[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch(void 0===i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return a(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return-1!==String.prototype.indexOf.apply(this,arguments)}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,a=Number(arguments[1])||0,n=0;-1!==(a=t.call(this,e,a));)++n,a+=r;return n}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var a=this.length>>>0;if(0===a)return"";var n=Number(e);Number.isSafeInteger(n)?n<0&&(n+=a)<0&&(n=0):n=0,n>a&&(n=a);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,n);return void 0!==r&&(o+=r),n+i<a&&(o+=this.slice(n+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toLocaleUpperCase()+e.slice(a+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toUpperCase()+e.slice(a+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),a=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),n=!e.includes("opera")&&/msie|trident/.test(e),i=n?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:a,isIE:n,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),a=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),n=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:a,performance:n})}(),_ref3=function(){function e(t){if("object"!==(void 0===t?"undefined":_typeof(t))||null===t)return t;if(t instanceof String)return String(t);if(t instanceof Number)return Number(t);if(t instanceof Boolean)return Boolean(t);if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return t instanceof Array?r=new Array(t.length):t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,a){return r.set(a,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){return r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(a){return r[a]=e(t[a])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),a=void 0;null!==(a=e.firstChild);){if(a.nodeType===Node.ELEMENT_NODE){switch(a.nodeName.toUpperCase()){case"BR":if(null!==a.nextSibling&&a.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===a.nextSibling.nodeName.toUpperCase()){e.removeChild(a.nextSibling),e.removeChild(a),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(a);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(a);continue}}r.appendChild(a)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function a(e,t,r){var a="object"===(void 0===e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==a)return null;var n=Array.isArray(t)?t:[t];jQuery(a).empty();for(var i=0,o=n.length;i<o;++i)if(Story.has(n[i]))return new Wikifier(a,Story.get(n[i]).processText().trim()),a;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(a,s)}return a}function n(e,t,r){var a=jQuery(document.createElement("div")),n=jQuery(document.createElement("button")),i=jQuery(document.createElement("pre")),o=L10n.get("errorTitle")+": "+(t||"unknown error");return n.addClass("error-toggle").ariaClick({label:L10n.get("errorToggle")},function(){n.hasClass("enabled")?(n.removeClass("enabled"),i.attr({"aria-hidden":!0,hidden:"hidden"})):(n.addClass("enabled"),i.removeAttr("aria-hidden hidden"))}).appendTo(a),jQuery(document.createElement("span")).addClass("error").text(o).appendTo(a),jQuery(document.createElement("code")).text(r).appendTo(i),i.addClass("error-source").attr({"aria-hidden":!0,hidden:"hidden"}).appendTo(a),a.addClass("error-view").appendTo(e),console.warn(o+"\n\t"+r.replace(/\n/g,"\n\t")),!1}function i(e,t){var r=i;switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){return"{ "+[].concat(_toConsumableArray(e)).map(function(e){var a=_slicedToArray(e,2),n=a[0],i=a[1];return r(n,t)+" → "+r(i,t)}).join(", ")+" }"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:a},throwError:{value:n},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){var t=jQuery(this);t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments)}}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(a,n){if(0===this.length||0===arguments.length)return this;var i=a,o=n;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0!==r.length){var n=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(n,t,e)});var i=[].concat(_toConsumableArray(n.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0===this.length||0===r.length)return this;var n=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(n,t,e)}),this.append(n),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch(void 0===e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function a(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function n(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&p.test(t)?t.replace(f,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&v.test(t)?t.replace(m,function(e){return y[e.toLowerCase()]}):t}function s(e,t){var r=String(e),a=Math.trunc(t),n=r.charCodeAt(a);if(Number.isNaN(n))return{char:"",start:-1,end:-1};var i={char:r.charAt(a),start:a,end:a};if(n<55296||n>57343)return i;if(n>=55296&&n<=56319){var o=a+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===a)return i;var u=a-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return b.now()}function l(e){var t=w.exec(String(e));if(null===t)throw new SyntaxError('invalid time value syntax: "'+e+'"');var r=Number(t[1]);if(1===t[2].length&&(r*=1e3),Number.isNaN(r)||!Number.isFinite(r))throw new RangeError('invalid time value: "'+e+'"');return r}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var r=void 0;switch(void 0===e?"undefined":_typeof(e)){case"string":r='"'+e+'"';break;case"number":r=String(e);break;default:r=t(e)}throw new Error("invalid milliseconds: "+r)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}return("-ms-"===e.slice(0,4)?e.slice(1):e).split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function h(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),a=_slicedToArray(t,2),n=a[0],i=a[1];r[n]=i});var a=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+a+t.search,pathname:a,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var f=/[&<>"'`]/g,p=new RegExp(f.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,v=new RegExp(m.source,"i"),y=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"}),b=Has.performance?performance:Date,w=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/;return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:a},slugify:{value:n},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c},fromCssProperty:{value:d},parseUrl:{value:h},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},
+evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return f}function a(e){f=Math.clamp(e,.2,5),l("rate",f)}function n(){return p}function i(e){p=Math.clamp(e,0,1),l("volume",p)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");h.set(e,t)}function u(e){h.delete(e)}function l(e,t){h.forEach(function(r){return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(v,[null].concat(t)))}var h=new Map,f=1,p=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,a=/\.([^.\/\\]+)$/,n=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch(void 0===e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(null===(s=r.exec(e)))throw new Error("source data URI missing media type")}else if(null===(s=a.exec(Util.parseUrl(e).pathname)))throw new Error("source URL missing file extension");var u=n(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=n(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+(void 0===e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var a=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return a._error=!1}).on("error",function(){return a._error=!0}).find("source:last-of-type").on("error",function(){return a._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!a.audio)return void SimpleAudio.unsubscribe(a);switch(e){case"mute":a._updateAudioMute();break;case"rate":a._updateAudioRate();break;case"stop":a.stop();break;case"volume":a._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this);var e=this.audio;if(e){for(this.fadeStop(),this.stop(),jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}}},{key:"_updateAudioMute",value:function(){this.audio&&(this.audio.muted=this._mute||SimpleAudio.mute)}},{key:"_updateAudioRate",value:function(){this.audio&&(this.audio.playbackRate=this._rate*SimpleAudio.rate)}},{key:"_updateAudioVolume",value:function(){this.audio&&(this.audio.volume=this._volume*SimpleAudio.volume)}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return!this.audio||this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return!!this.audio&&this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return!!this.audio&&this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!!this.audio&&!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return!!this.audio&&(this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended)}},{key:"isEnded",value:function(){return!this.audio||this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return!!this.audio&&this.audio.loop}},{key:"load",value:function(){this.audio&&("auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load())}},{key:"play",value:function(){this.audio&&this.audio.play()}},{key:"pause",value:function(){this.audio&&this.audio.pause()}},{key:"stop",value:function(){this.audio&&(this.pause(),this.time=0,this._trigger(":stop"))}},{key:"fadeWithDuration",value:function(e,t,r){var a=this;if(this.audio){this.fadeStop();var n=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);n!==i&&(this.volume=n,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;n<i?(t=n,r=i):(t=i,r=n);var o=Number(e);o<1&&(o=1);var s=(i-n)/(o/.025);a._faderId=setInterval(function(){if(!a.isPlaying())return void a.fadeStop();a.volume=Math.clamp(a.volume+s,t,r),0===a.volume&&a.pause(),a.volume===i&&(a.fadeStop(),a._trigger(":fade"))},25)}),this.play())}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(n,r),this}}},{key:"one",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(n,r),this}}},{key:"off",value:function(t,r){if(this.audio){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(n,r),this}}},{key:"duration",get:function(){return this.audio?this.audio.duration:NaN}},{key:"ended",get:function(){return!this.audio||this.audio.ended}},{key:"loop",get:function(){return!!this.audio&&this.audio.loop},set:function(e){this.audio&&(this.audio.loop=!!e)}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return!!this.audio&&this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio?this.audio.duration-this.audio.currentTime:NaN}},{key:"time",get:function(){return this.audio?this.audio.currentTime:NaN},set:function(e){var t=this;if(this.audio)try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var a=document.createElement("audio");r[t]=""!==a.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,a=t.toLowerCase(),n=r.hasOwnProperty(a)?r[a]:"audio/"+a;return e._verifyType(n)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var v=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,a=void 0,n=void 0,i=void 0;if(e instanceof m)r=!0,a=e.clone(),n=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,a=r?e.track.clone():e.track,n=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}a.stop(),a.loop=!1,a.mute=!1,a.volume=n,a.rate=i,a.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:a,volume:n,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var a=Math.clamp(t,0,1)*this.current.volume,n=void 0;null!=r&&(n=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,a,n),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:a},volume:{get:n,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,a){if(r)return r.create(e,a);for(var n=0;n<t.length;++n)if(t[n].init(e,a))return r=t[n],r.create(e,a);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var a=t.getItem(r)===r;return t.removeItem(r),a}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new a(e,t)}var r=!1,a=function(){function e(t,r){_classCallCheck(this,e);var a=t+".",n=null,i=null;r?(n=window.localStorage,i="localStorage"):(n=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:n},_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e){return JSON.stringify(e)}},{key:"_deserialize",value:function(e){return JSON.parse((!e || e[0]=="{")?e:LZString.decompressFromUTF16(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}()),SimpleStore.adapters.push(function(){function e(e){try{var t="_sc_"+String(Date.now());o._setCookie(t,o._serialize(t),undefined),i=o._deserialize(o._getCookie(t))===t,o._setCookie(t,undefined,n)}catch(e){i=!1}return i&&r(e),i}function t(e,t){if(!i)throw new Error("adapter not initialized");return new o(e,t)}function r(e){if(""!==document.cookie)for(var t=e+".",r=new RegExp("^"+RegExp.escape(t)),i=e+"!.",s=e+"*.",u=/\.(?:state|rcWarn)$/,l=document.cookie.split(/;\s*/),c=0;c<l.length;++c){var d=l[c].split("="),h=decodeURIComponent(d[0]);if(r.test(h)){var f=decodeURIComponent(d[1]);""!==f&&function(){var e=!u.test(h);o._setCookie(h,undefined,n),o._setCookie(h.replace(r,function(){return e?i:s}),f,e?a:undefined)}()}}}var a="Tue, 19 Jan 2038 03:14:07 GMT",n="Thu, 01 Jan 1970 00:00:00 GMT",i=!1,o=function(){function e(t,r){_classCallCheck(this,e);var a=t+(r?"!":"*")+".";Object.defineProperties(this,{_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:"cookie"},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){if(""===document.cookie)return[];for(var e=document.cookie.split(/;\s*/),t=[],r=0;r<e.length;++r){var a=e[r].split("="),n=decodeURIComponent(a[0]);if(this._prefixRe.test(n)){""!==decodeURIComponent(a[1])&&t.push(n.replace(this._prefixRe,""))}}return t}},{key:"has",value:function(t){return!("string"!=typeof t||!t)&&null!==e._getCookie(this._prefix+t)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=e._getCookie(this._prefix+t);return null===r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{if(e._setCookie(this._prefix+t,e._serialize(r),this.persistent?a:undefined),!this.has(t))throw new Error("unknown validation error during set")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"delete",value:function(t){if("string"!=typeof t||!t||!this.has(t))return!1;try{if(e._setCookie(this._prefix+t,undefined,n),this.has(t))throw new Error("unknown validation error during delete")}catch(e){throw e.message="cookie error: "+e.message,e}return!0}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_getCookie",value:function(e){if(!e||""===document.cookie)return null;for(var t=document.cookie.split(/;\s*/),r=0;r<t.length;++r){var a=t[r].split("=");if(e===decodeURIComponent(a[0])){return decodeURIComponent(a[1])||null}}return null}},{key:"_setCookie",value:function(e,t,r){if(e){var a=encodeURIComponent(e)+"=";null!=t&&(a+=encodeURIComponent(t)),null!=r&&(a+="; expires="+r),a+="; path=/",document.cookie=a}}},{key:"_serialize",value:function(e){return LZString.compressToBase64(JSON.stringify(e))}},{key:"_deserialize",value:function(e){return JSON.parse(LZString.decompressFromBase64(e))}}]),e}();return Object.freeze(Object.defineProperties({},{init:{value:e},create:{value:t}}))}());var DebugView=function(){return function(){function e(t,r,a,n){_classCallCheck(this,e),Object.defineProperties(this,{parent:{value:t},view:{value:document.createElement("span")},break:{value:document.createElement("wbr")}}),jQuery(this.view).attr({title:n,"aria-label":n,"data-type":null!=r?r:"","data-name":null!=a?a:""}).addClass("debug"),jQuery(this.break).addClass("debug hidden"),this.parent.appendChild(this.view),this.parent.appendChild(this.break)}return _createClass(e,[{key:"append",value:function(e){return jQuery(this.view).append(e),this}},{key:"modes",value:function(e){if(null==e){var t={};return this.view.className.splitOrEmpty(/\s+/).forEach(function(e){"debug"!==e&&(t[e]=!0)}),t}if("object"===(void 0===e?"undefined":_typeof(e)))return Object.keys(e).forEach(function(t){this[e[t]?"addClass":"removeClass"](t)},jQuery(this.view)),this;throw new Error("DebugView.prototype.modes options parameter must be an object or null/undefined")}},{key:"remove",value:function(){var e=jQuery(this.view);this.view.hasChildNodes()&&e.contents().appendTo(this.parent),e.remove(),jQuery(this.break).remove()}},{key:"output",get:function(){return this.view}},{key:"type",get:function(){return this.view.getAttribute("data-type")},set:function(e){this.view.setAttribute("data-type",null!=e?e:"")}},{key:"name",get:function(){return this.view.getAttribute("data-name")},set:function(e){this.view.setAttribute("data-name",null!=e?e:"")}},{key:"title",get:function(){return this.view.title},set:function(e){this.view.title=e}}],[{key:"isEnabled",value:function(){return"enabled"===jQuery(document.documentElement).attr("data-debug-view")}},{key:"enable",value:function(){jQuery(document.documentElement).attr("data-debug-view","enabled"),jQuery.event.trigger(":debugviewupdate")}},{key:"disable",value:function(){jQuery(document.documentElement).removeAttr("data-debug-view"),jQuery.event.trigger(":debugviewupdate")}},{key:"toggle",value:function(){"enabled"===jQuery(document.documentElement).attr("data-debug-view")?e.disable():e.enable()}}]),e}()}(),PRNGWrapper=function(){return function(){function e(t,r){_classCallCheck(this,e),Object.defineProperties(this,new Math.seedrandom(t,r,function(e,t){return{_prng:{value:e},seed:{writable:!0,value:t},pull:{writable:!0,value:0},random:{value:function(){return++this.pull,this._prng()}}}}))}return _createClass(e,null,[{key:"marshal",value:function(e){if(!e||!e.hasOwnProperty("seed")||!e.hasOwnProperty("pull"))throw new Error("PRNG is missing required data");return{seed:e.seed,pull:e.pull}}},{key:"unmarshal",value:function(t){if(!t||!t.hasOwnProperty("seed")||!t.hasOwnProperty("pull"))throw new Error("PRNG object is missing required data");for(var r=new e(t.seed,!1),a=t.pull;a>0;--a)r.random();return r}}]),e}()}(),StyleWrapper=function(){var e=new RegExp(Patterns.cssImage,"g"),t=new RegExp(Patterns.cssImage);return function(){function r(e){if(_classCallCheck(this,r),null==e)throw new TypeError("StyleWrapper style parameter must be an HTMLStyleElement object");Object.defineProperties(this,{style:{value:e}})}return _createClass(r,[{key:"isEmpty",value:function(){return 0===this.style.cssRules.length}},{key:"set",value:function(e){this.clear(),this.add(e)}},{key:"add",value:function(r){var a=r;t.test(a)&&(e.lastIndex=0,a=a.replace(e,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),this.style.styleSheet?this.style.styleSheet.cssText+=a:this.style.appendChild(document.createTextNode(a))}},{key:"clear",value:function(){this.style.styleSheet?this.style.styleSheet.cssText="":jQuery(this.style).empty()}}]),r}()}(),Diff=function(){function e(t,a){for(var n=Object.prototype.toString,i=t instanceof Array,o=[].concat(Object.keys(t),Object.keys(a)).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}),s={},u=void 0,l=function(e){return e===u},c=0,d=o.length;c<d;++c){var h=o[c],f=t[h],p=a[h];if(t.hasOwnProperty(h))if(a.hasOwnProperty(h)){if(f===p)continue;if((void 0===f?"undefined":_typeof(f))===(void 0===p?"undefined":_typeof(p)))if("function"==typeof f)f.toString()!==p.toString()&&(s[h]=[r.Copy,p]);else if("object"!==(void 0===f?"undefined":_typeof(f))||null===f)s[h]=[r.Copy,p];else{var g=n.call(f),m=n.call(p);if(g===m)if(f instanceof Date)Number(f)!==Number(p)&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Map)s[h]=[r.Copy,clone(p)];else if(f instanceof RegExp)f.toString()!==p.toString()&&(s[h]=[r.Copy,clone(p)]);else if(f instanceof Set)s[h]=[r.Copy,clone(p)];else if("[object Object]"!==g)s[h]=[r.Copy,clone(p)];else{var v=e(f,p);null!==v&&(s[h]=v)}else s[h]=[r.Copy,clone(p)]}else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}else if(i&&Util.isNumeric(h)){var y=Number(h);if(!u){u="";do{u+="~"}while(o.some(l));s[u]=[r.SpliceArray,y,y]}y<s[u][1]&&(s[u][1]=y),y>s[u][2]&&(s[u][2]=y)}else s[h]=r.Delete;else s[h]=[r.Copy,"object"!==(void 0===p?"undefined":_typeof(p))||null===p?p:clone(p)]}return Object.keys(s).length>0?s:null}function t(e,a){for(var n=Object.keys(a||{}),i=clone(e),o=0,s=n.length;o<s;++o){var u=n[o],l=a[u];if(l===r.Delete)delete i[u];else if(l instanceof Array)switch(l[0]){case r.SpliceArray:i.splice(l[1],l[2]-l[1]+1);break;case r.Copy:i[u]=clone(l[1]);break;case r.CopyDate:i[u]=new Date(l[1])}else i[u]=t(i[u],l)}return i}var r=Util.toEnum({Delete:0,SpliceArray:1,Copy:2,CopyDate:3});return Object.freeze(Object.defineProperties({},{Op:{value:r},diff:{value:e},patch:{value:t}}))}(),L10n=function(){function e(){r()}function t(e,t){if(!e)return"";var r=function(e){var t=void 0;return e.some(function(e){return!!l10nStrings.hasOwnProperty(e)&&(t=e,!0)}),t}(Array.isArray(e)?e:[e]);if(!r)return"";for(var i=l10nStrings[r],o=0;n.test(i);){if(++o>50)throw new Error("L10n.get exceeded maximum replacement iterations, probable infinite loop");a.lastIndex=0,i=i.replace(a,function(e){var r=e.slice(1,-1);return t&&t.hasOwnProperty(r)?t[r]:l10nStrings.hasOwnProperty(r)?l10nStrings[r]:void 0})}return i}function r(){strings&&Object.keys(strings).length>0&&Object.keys(l10nStrings).forEach(function(e){try{var t=void 0;switch(e){case"identity":t=strings.identity;break;case"aborting":t=strings.aborting;break;case"cancel":t=strings.cancel;break;case"close":t=strings.close;break;case"ok":t=strings.ok;break;case"errorTitle":t=strings.errors.title;break;case"errorNonexistentPassage":t=strings.errors.nonexistentPassage;break;case"errorSaveMissingData":t=strings.errors.saveMissingData;break;case"errorSaveIdMismatch":t=strings.errors.saveIdMismatch;break;case"warningDegraded":t=strings.warnings.degraded;break;case"debugViewTitle":t=strings.debugView.title;break;case"debugViewToggle":t=strings.debugView.toggle;break;case"uiBarToggle":t=strings.uiBar.toggle;break;case"uiBarBackward":t=strings.uiBar.backward;break;case"uiBarForward":t=strings.uiBar.forward;break;case"uiBarJumpto":t=strings.uiBar.jumpto;break;case"jumptoTitle":t=strings.jumpto.title;break;case"jumptoTurn":t=strings.jumpto.turn;break;case"jumptoUnavailable":t=strings.jumpto.unavailable;break;case"savesTitle":t=strings.saves.title;break;case"savesDisallowed":t=strings.saves.disallowed;break;case"savesEmptySlot":t=strings.saves.emptySlot;break;case"savesIncapable":t=strings.saves.incapable;break;case"savesLabelAuto":t=strings.saves.labelAuto;break;case"savesLabelDelete":t=strings.saves.labelDelete;break;case"savesLabelExport":t=strings.saves.labelExport;break;case"savesLabelImport":t=strings.saves.labelImport;break;case"savesLabelLoad":t=strings.saves.labelLoad;break;case"savesLabelClear":t=strings.saves.labelClear;break;case"savesLabelSave":t=strings.saves.labelSave;break;case"savesLabelSlot":t=strings.saves.labelSlot;break;case"savesSavedOn":t=strings.saves.savedOn;break;case"savesUnavailable":t=strings.saves.unavailable;break;case"savesUnknownDate":t=strings.saves.unknownDate;break;case"settingsTitle":t=strings.settings.title;break;case"settingsOff":t=strings.settings.off;break;case"settingsOn":t=strings.settings.on;break;case"settingsReset":t=strings.settings.reset;break;case"restartTitle":t=strings.restart.title;break;case"restartPrompt":t=strings.restart.prompt;break;case"shareTitle":t=strings.share.title;break;case"autoloadTitle":t=strings.autoload.title;break;case"autoloadCancel":t=strings.autoload.cancel;break;case"autoloadOk":t=strings.autoload.ok;break;case"autoloadPrompt":t=strings.autoload.prompt;break;case"macroBackText":t=strings.macros.back.text;break;case"macroReturnText":t=strings.macros.return.text}t&&(l10nStrings[e]=t.replace(/%\w+%/g,function(e){return"{"+e.slice(1,-1)+"}"}))}catch(e){}})}var a=/\{\w+\}/g,n=new RegExp(a.source);return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:t}}))}(),strings={errors:{},warnings:{},debugView:{},uiBar:{},jumpto:{},saves:{},settings:{},restart:{},share:{},autoload:{},macros:{back:{},return:{}}},l10nStrings={identity:"game",aborting:"Aborting",cancel:"Cancel",close:"Close",ok:"OK",errorTitle:"Error",errorToggle:"Toggle the error view",errorNonexistentPassage:'the passage "{passage}" does not exist',errorSaveMissingData:"save is missing required data. Either the loaded file is not a save or the save has become corrupted",errorSaveIdMismatch:"save is from the wrong {identity}",_warningIntroLacking:"Your browser either lacks or has disabled",_warningOutroDegraded:", so this {identity} is running in a degraded mode. You may be able to continue, however, some parts may not work properly.",warningNoWebStorage:"{_warningIntroLacking} the Web Storage API{_warningOutroDegraded}",warningDegraded:"{_warningIntroLacking} some of the capabilities required by this {identity}{_warningOutroDegraded}",debugBarNoWatches:"— no watches set —",debugBarAddWatch:"Add watch",debugBarDeleteWatch:"Delete watch",debugBarWatchAll:"Watch all",debugBarWatchNone:"Delete all",debugBarLabelAdd:"Add",debugBarLabelWatch:"Watch",debugBarLabelTurn:"Turn",debugBarLabelViews:"Views",debugBarViewsToggle:"Toggle the debug views",debugBarWatchToggle:"Toggle the watch panel",uiBarToggle:"Toggle the UI bar",uiBarBackward:"Go backward within the {identity} history",uiBarForward:"Go forward within the {identity} history",uiBarJumpto:"Jump to a specific point within the {identity} history",jumptoTitle:"Jump To",jumptoTurn:"Turn",jumptoUnavailable:"No jump points currently available…",savesTitle:"Saves",savesDisallowed:"Saving has been disallowed on this passage.",savesEmptySlot:"— slot empty —",savesIncapable:"{_warningIntroLacking} the capabilities required to support saves, so saves have been disabled for this session.",savesLabelAuto:"Autosave",savesLabelDelete:"Delete",savesLabelExport:"Save to Disk…",savesLabelImport:"Load from Disk…",savesLabelLoad:"Load",savesLabelClear:"Delete All",savesLabelSave:"Save",savesLabelSlot:"Slot",savesSavedOn:"Saved on",savesUnavailable:"No save slots found…",savesUnknownDate:"unknown",settingsTitle:"Settings",settingsOff:"Off",settingsOn:"On",settingsReset:"Reset to Defaults",restartTitle:"Restart",restartPrompt:"Are you sure that you want to restart? Unsaved progress will be lost.",shareTitle:"Share",autoloadTitle:"Autoload",
+autoloadCancel:"Go to start",autoloadOk:"Load autosave",autoloadPrompt:"An autosave exists. Load it now or go to the start?",macroBackText:"Back",macroReturnText:"Return"},Config=function(){function e(){throw new Error("Config.history.mode has been deprecated and is no longer used by SugarCube, please remove it from your code")}function t(){throw new Error("Config.history.tracking has been deprecated, use Config.history.maxStates instead")}return Object.seal({debug:!1,addVisitedLinkClass:!1,cleanupWikifierOutput:!1,loadDelay:0,history:Object.seal({controls:!0,maxStates:100,get mode(){e()},set mode(t){e()},get tracking(){t()},set tracking(e){t()}}),macros:Object.seal({ifAssignmentError:!0,maxLoopIterations:1e3}),navigation:Object.seal({override:undefined}),passages:Object.seal({descriptions:undefined,displayTitles:!1,nobr:!1,start:undefined,transitionOut:undefined}),saves:Object.seal({autoload:undefined,autosave:undefined,id:"untitled-story",isAllowed:undefined,onLoad:undefined,onSave:undefined,slots:8,version:undefined}),ui:Object.seal({stowBarInitially:800,updateStoryElements:!0}),transitionEndEventName:function(){for(var e=new Map([["transition","transitionend"],["MSTransition","msTransitionEnd"],["WebkitTransition","webkitTransitionEnd"],["MozTransition","transitionend"]]),t=[].concat(_toConsumableArray(e.keys())),r=document.createElement("div"),a=0;a<t.length;++a)if(r.style[t[a]]!==undefined)return e.get(t[a]);return""}()})}(),State=function(){function e(){session.delete("state"),W=[],R=c(),F=-1,B=[],V=null===V?null:new PRNGWrapper(V.seed,!1)}function t(){if(session.has("state")){var e=session.get("state");return null!=e&&(a(e),!0)}return!1}function r(e){var t={index:F};return e?t.history=clone(W):t.delta=A(W),B.length>0&&(t.expired=[].concat(_toConsumableArray(B))),null!==V&&(t.seed=V.seed),t}function a(e,t){if(null==e)throw new Error("state object is null or undefined");if(!e.hasOwnProperty(t?"history":"delta")||0===e[t?"history":"delta"].length)throw new Error("state object has no history or history is empty");if(!e.hasOwnProperty("index"))throw new Error("state object has no index");if(null!==V&&!e.hasOwnProperty("seed"))throw new Error("state object has no seed, but PRNG is enabled");if(null===V&&e.hasOwnProperty("seed"))throw new Error("state object has seed, but PRNG is disabled");W=t?clone(e.history):P(e.delta),F=e.index,B=e.hasOwnProperty("expired")?[].concat(_toConsumableArray(e.expired)):[],e.hasOwnProperty("seed")&&(V.seed=e.seed),g(F)}function n(){return r(!0)}function i(e){return a(e,!0)}function o(){return B}function s(){return B.length+v()}function u(){return B.concat(W.slice(0,v()).map(function(e){return e.title}))}function l(e){return null!=e&&""!==e&&(!!B.includes(e)||!!W.slice(0,v()).some(function(t){return t.title===e}))}function c(e,t){return{title:null==e?"":String(e),variables:null==t?{}:clone(t)}}function d(){return R}function h(){return F}function f(){return R.title}function p(){return R.variables}function g(e){if(null==e)throw new Error("moment activation attempted with null or undefined");switch(void 0===e?"undefined":_typeof(e)){case"object":R=clone(e);break;case"number":if(b())throw new Error("moment activation attempted with index on empty history");if(e<0||e>=y())throw new RangeError("moment activation attempted with out-of-bounds index; need [0, "+(y()-1)+"], got "+e);R=clone(W[e]);break;default:throw new TypeError('moment activation attempted with a "'+(void 0===e?"undefined":_typeof(e))+'"; must be an object or valid history stack index')}return null!==V&&(V=PRNGWrapper.unmarshal({seed:V.seed,pull:R.pull})),session.set("state",r()),jQuery.event.trigger(":historyupdate"),R}function m(){return W}function v(){return F+1}function y(){return W.length}function b(){return 0===W.length}function w(){return W.length>0?W[F]:null}function k(){return W.length>0?W[W.length-1]:null}function S(){return W.length>0?W[0]:null}function E(e){return b()||e<0||e>F?null:W[e]}function x(e){if(b())return null;var t=1+(e?Math.abs(e):0);return t>v()?null:W[v()-t]}function j(e){if(b()||null==e||""===e)return!1;for(var t=F;t>=0;--t)if(W[t].title===e)return!0;return!1}function C(e){if(v()<y()&&W.splice(v(),y()-v()),W.push(c(e,R.variables)),V&&(k().pull=V.pull),Config.history.maxStates>0)for(;y()>Config.history.maxStates;)B.push(W.shift().title);return F=y()-1,g(F),v()}function O(e){return!(null==e||e<0||e>=y()||e===F)&&(F=e,g(F),!0)}function T(e){return null!=e&&0!==e&&O(F+e)}function A(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.diff(e[r-1],e[r]));return t}function P(e){if(!Array.isArray(e))return null;if(0===e.length)return[];for(var t=[clone(e[0])],r=1,a=e.length;r<a;++r)t.push(Diff.patch(t[r-1],e[r]));return t}function _(e,t){if(!b()){var r=void 0;throw r="a script-tagged passage",new Error("State.initPRNG must be called during initialization, within either "+r+" or the StoryInit special passage")}V=new PRNGWrapper(e,t),R.pull=V.pull}function N(){return V?V.random():Math.random()}function D(){U={},TempVariables=U}function M(){return U}function I(e){var t=Q(e);if(null!==t){for(var r=t.names,a=t.store,n=0,i=r.length;n<i;++n){if(void 0===a[r[n]])return;a=a[r[n]]}return a}}function L(e,t){var r=Q(e);if(null===r)return!1;for(var a=r.names,n=a.pop(),i=r.store,o=0,s=a.length;o<s;++o){if(void 0===i[a[o]])return!1;i=i[a[o]]}return i[n]=t,!0}function Q(e){for(var t={store:"$"===e[0]?State.variables:State.temporary,names:[]},r=e,a=void 0;null!==(a=z.exec(r));)r=r.slice(a[0].length),a[1]?t.names.push(a[1]):a[2]?t.names.push(a[2]):a[3]?t.names.push(a[3]):a[4]?t.names.push(a[4]):a[5]?t.names.push(I(a[5])):a[6]&&t.names.push(Number(a[6]));return""===r?t:null}var W=[],R=c(),F=-1,B=[],V=null,U={},z=new RegExp("^(?:"+Patterns.variableSigil+"("+Patterns.identifier+")|\\.("+Patterns.identifier+")|\\[(?:(?:\"((?:\\\\.|[^\"\\\\])+)\")|(?:'((?:\\\\.|[^'\\\\])+)')|("+Patterns.variableSigil+Patterns.identifierFirstChar+".*)|(\\d+))\\])");return Object.freeze(Object.defineProperties({},{reset:{value:e},restore:{value:t},marshalForSave:{value:n},unmarshalForSave:{value:i},expired:{get:o},turns:{get:s},passages:{get:u},hasPlayed:{value:l},active:{get:d},activeIndex:{get:h},passage:{get:f},variables:{get:p},history:{get:m},length:{get:v},size:{get:y},isEmpty:{value:b},current:{get:w},top:{get:k},bottom:{get:S},index:{value:E},peek:{value:x},has:{value:j},create:{value:C},goTo:{value:O},go:{value:T},deltaEncode:{value:A},deltaDecode:{value:P},initPRNG:{value:_},random:{value:N},clearTemporary:{value:D},temporary:{get:M},getVar:{value:I},setVar:{value:L},restart:{value:function(){return Engine.restart()}},backward:{value:function(){return Engine.backward()}},forward:{value:function(){return Engine.forward()}},display:{value:function(){return Engine.display.apply(Engine,arguments)}},show:{value:function(){return Engine.show.apply(Engine,arguments)}},play:{value:function(){return Engine.play.apply(Engine,arguments)}}}))}(),Scripting=function(){function addAccessibleClickHandler(e,t,r,a,n){if(arguments.length<2)throw new Error("addAccessibleClickHandler insufficient number of parameters");var i=void 0,o=void 0;if("function"==typeof t?(i=t,o={namespace:a,one:!!r}):(i=r,o={namespace:n,one:!!a,selector:t}),"function"!=typeof i)throw new TypeError("addAccessibleClickHandler handler parameter must be a function");return jQuery(e).ariaClick(o,i)}function insertElement(e,t,r,a,n,i){var o=jQuery(document.createElement(t));return r&&o.attr("id",r),a&&o.addClass(a),i&&o.attr("title",i),n&&o.text(n),e&&o.appendTo(e),o[0]}function insertText(e,t){jQuery(e).append(document.createTextNode(t))}function removeChildren(e){jQuery(e).empty()}function removeElement(e){jQuery(e).remove()}function fade(e,t){function r(){i+=.05*n,a(o,Math.easeInOut(i)),(1===n&&i>=1||-1===n&&i<=0)&&(e.style.visibility="in"===t.fade?"visible":"hidden",o.parentNode.replaceChild(e,o),o=null,window.clearInterval(s),t.onComplete&&t.onComplete())}function a(e,t){e.style.zoom=1,e.style.filter="alpha(opacity="+Math.floor(100*t)+")",e.style.opacity=t}var n="in"===t.fade?1:-1,i=void 0,o=e.cloneNode(!0),s=void 0;e.parentNode.replaceChild(o,e),"in"===t.fade?(i=0,o.style.visibility="visible"):i=1,a(o,i),s=window.setInterval(r,25)}function scrollWindowTo(e,t){function r(){l+=n,window.scroll(0,i+u*(s*Math.easeInOut(l))),l>=1&&window.clearInterval(c)}function a(e){for(var t=0;e.offsetParent;)t+=e.offsetTop,e=e.offsetParent;return t}var n=null!=t?Number(t):.1;Number.isNaN(n)||!Number.isFinite(n)||n<0?n=.1:n>1&&(n=1);var i=window.scrollY?window.scrollY:document.body.scrollTop,o=function(e){var t=a(e),r=t+e.offsetHeight,n=window.scrollY?window.scrollY:document.body.scrollTop,i=window.innerHeight?window.innerHeight:document.body.clientHeight,o=n+i;return t>=n&&r>o&&e.offsetHeight<i?t-(i-e.offsetHeight)+20:t}(e),s=Math.abs(i-o),u=i>o?-1:1,l=0,c=void 0;c=window.setInterval(r,25)}function either(){if(0!==arguments.length)return Array.prototype.concat.apply([],arguments).random()}function hasVisited(){if(0===arguments.length)throw new Error("hasVisited called with insufficient parameters");if(State.isEmpty())return!1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=0,a=e.length;r<a;++r)if(!t.includes(e[r]))return!1;return!0}function lastVisited(){if(0===arguments.length)throw new Error("lastVisited called with insufficient parameters");if(State.isEmpty())return-1;for(var e=Array.prototype.concat.apply([],arguments),t=State.passages,r=t.length-1,a=State.turns,n=0,i=e.length;n<i&&a>-1;++n){var o=t.lastIndexOf(e[n]);a=Math.min(a,-1===o?-1:r-o)}return a}function passage(){return State.passage}function previous(){var e=State.passages;if(arguments.length>0){var t=Number(arguments[0]);if(!Number.isSafeInteger(t)||t<1)throw new RangeError("previous offset parameter must be a positive integer greater than zero");return e.length>t?e[e.length-1-t]:""}for(var r=e.length-2;r>=0;--r)if(e[r]!==State.passage)return e[r];return""}function random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("random called with insufficient parameters");case 1:e=0,t=Math.trunc(arguments[0]);break;default:e=Math.trunc(arguments[0]),t=Math.trunc(arguments[1])}if(!Number.isInteger(e))throw new Error("random min parameter must be an integer");if(!Number.isInteger(t))throw new Error("random max parameter must be an integer");if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(State.random()*(t-e+1))+e}function randomFloat(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("randomFloat called with insufficient parameters");case 1:e=0,t=Number(arguments[0]);break;default:e=Number(arguments[0]),t=Number(arguments[1])}if(Number.isNaN(e)||!Number.isFinite(e))throw new Error("randomFloat min parameter must be a number");if(Number.isNaN(t)||!Number.isFinite(t))throw new Error("randomFloat max parameter must be a number");if(e>t){var r=[t,e];e=r[0],t=r[1]}return State.random()*(t-e)+e}function tags(){if(0===arguments.length)return Story.get(State.passage).tags.slice(0);for(var e=Array.prototype.concat.apply([],arguments),t=[],r=0,a=e.length;r<a;++r)t=t.concat(Story.get(e[r]).tags);return t}function temporary(){return State.temporary}function time(){return null===Engine.lastPlay?0:Util.now()-Engine.lastPlay}function turns(){return State.turns}function variables(){return State.variables}function visited(){if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],0===arguments.length?[State.passage]:arguments),t=State.passages,r=State.turns,a=0,n=e.length;a<n&&r>0;++a)r=Math.min(r,t.count(e[a]));return r}function visitedTags(){if(0===arguments.length)throw new Error("visitedTags called with insufficient parameters");if(State.isEmpty())return 0;for(var e=Array.prototype.concat.apply([],arguments),t=e.length,r=State.passages,a=new Map,n=0,i=0,o=r.length;i<o;++i){var s=r[i];if(a.has(s))a.get(s)&&++n;else{var u=Story.get(s).tags;if(u.length>0){for(var l=0,c=0;c<t;++c)u.includes(e[c])&&++l;l===t?(++n,a.set(s,!0)):a.set(s,!1)}}}return n}function evalJavaScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,String(code),output)}function evalTwineScript(code,output){return function(code,output){return eval(code)}.call(output?{output:output}:null,parse(String(code)),output)}var _ref8=function(){function e(e){return e.reduce(function(e,t){return e=e.then(t)},Promise.resolve())}function t(e){return Util.parseUrl(e).path.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w]+/g,"-").toLocaleLowerCase()}function r(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("script")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"script-imported-"+t(e),type:"text/javascript",src:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}function a(){function r(e){return new Promise(function(r,a){jQuery(document.createElement("link")).one("load abort error",function(e){jQuery(e.target).off(),"load"===e.type?r(e.target):a(e.target)}).appendTo(document.head).attr({id:"style-imported-"+t(e),rel:"stylesheet",href:e})})}for(var a=arguments.length,n=Array(a),i=0;i<a;i++)n[i]=arguments[i];return Promise.all(n.map(function(t){return Array.isArray(t)?e(t.map(function(e){return function(){return r(e)}})):r(t)}))}return{importScripts:r,importStyles:a}}(),importScripts=_ref8.importScripts,importStyles=_ref8.importStyles,parse=function(){function e(e){if(0!==r.lastIndex)throw new RangeError("Scripting.parse last index is non-zero at start");for(var n=e,i=void 0;null!==(i=r.exec(n));)if(i[5]){var o=i[5];if("$"===o||"_"===o)continue;if(a.test(o))o=o[0];else if("is"===o){var s=r.lastIndex,u=n.slice(s);/^\s+not\b/.test(u)&&(n=n.splice(s,u.search(/\S/)),o="isnot")}t.hasOwnProperty(o)&&(n=n.splice(i.index,o.length,t[o]),r.lastIndex+=t[o].length-o.length)}return n}var t=Object.freeze({$:"State.variables.",_:"State.temporary.",to:"=",eq:"==",neq:"!=",is:"===",isnot:"!==",gt:">",gte:">=",lt:"<",lte:"<=",and:"&&",or:"||",not:"!",def:'"undefined" !== typeof',ndef:'"undefined" === typeof'}),r=new RegExp(["(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","([=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}]+)","([^\"'=+\\-*\\/%<>&\\|\\^~!?:,;\\(\\)\\[\\]{}\\s]+)"].join("|"),"g"),a=new RegExp("^"+Patterns.variable);return e}();return Object.freeze(Object.defineProperties({},{parse:{value:parse},evalJavaScript:{value:evalJavaScript},evalTwineScript:{value:evalTwineScript}}))}(),Wikifier=function(){var e=0,t=function(){function t(r,a,n){_classCallCheck(this,t),t.Parser.Profile.isEmpty()&&t.Parser.Profile.compile(),Object.defineProperties(this,{source:{value:String(a)},options:{writable:!0,value:Object.assign({profile:"all"},n)},nextMatch:{writable:!0,value:0},output:{writable:!0,value:null},_rawArgs:{writable:!0,value:""}}),null==r?this.output=document.createDocumentFragment():r.jquery?this.output=r[0]:this.output=r;try{++e,this.subWikify(this.output),1===e&&Config.cleanupWikifierOutput&&convertBreaks(this.output)}finally{--e}}return _createClass(t,[{key:"subWikify",value:function(e,r,a){var n=this.output,i=void 0;this.output=e,null!=a&&"object"===(void 0===a?"undefined":_typeof(a))&&(i=this.options,this.options=Object.assign({},this.options,a));var o=t.Parser.Profile.get(this.options.profile),s=r?new RegExp("(?:"+r+")",this.options.ignoreTerminatorCase?"gim":"gm"):null,u=void 0,l=void 0;do{if(o.parserRegExp.lastIndex=this.nextMatch,s&&(s.lastIndex=this.nextMatch),l=o.parserRegExp.exec(this.source),(u=s?s.exec(this.source):null)&&(!l||u.index<=l.index))return u.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,u.index),this.matchStart=u.index,this.matchLength=u[0].length,this.matchText=u[0],this.nextMatch=s.lastIndex,this.output=n,void(i&&(this.options=i));if(l){l.index>this.nextMatch&&this.outputText(this.output,this.nextMatch,l.index),this.matchStart=l.index,this.matchLength=l[0].length,this.matchText=l[0],this.nextMatch=o.parserRegExp.lastIndex;for(var c=void 0,d=1,h=l.length;d<h;++d)if(l[d]){c=d-1;break}if(o.parsers[c].handler(this),null!=TempState.break)break}}while(u||l);null==TempState.break?this.nextMatch<this.source.length&&(this.outputText(this.output,this.nextMatch,this.source.length),this.nextMatch=this.source.length):this.output.lastChild&&this.output.lastChild.nodeType===Node.ELEMENT_NODE&&"BR"===this.output.lastChild.nodeName.toUpperCase()&&jQuery(this.output.lastChild).remove(),this.output=n,i&&(this.options=i)}},{key:"outputText",value:function(e,t,r){jQuery(e).append(document.createTextNode(this.source.substring(t,r)))}},{key:"rawArgs",value:function(){return this._rawArgs}},{key:"fullArgs",value:function(){return Scripting.parse(this._rawArgs)}}],[{key:"wikifyEval",value:function(e){var r=document.createDocumentFragment();new t(r,e);var a=r.querySelector(".error");if(null!==a)throw new Error(a.textContent.replace(errorPrologRegExp,""));return r}},{key:"createInternalLink",value:function(e,t,r,a){var n=jQuery(document.createElement("a"));return null!=t&&(n.attr("data-passage",t),Story.has(t)?(n.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&n.addClass("link-visited")):n.addClass("link-broken"),n.ariaClick({one:!0},function(){"function"==typeof a&&a(),Engine.play(t)})),r&&n.append(document.createTextNode(r)),e&&n.appendTo(e),n[0]}},{key:"createExternalLink",value:function(e,t,r){var a=jQuery(document.createElement("a")).attr("target","_blank").addClass("link-external").text(r).appendTo(e);return null!=t&&a.attr({href:t,tabindex:0}),a[0]}},{key:"isExternalLink",value:function(e){return!Story.has(e)&&(new RegExp("^"+Patterns.url,"gim").test(e)||/[\/.?#]/.test(e))}}]),t}();return Object.defineProperty(t,"Parser",{value:function(){function e(){return d}function t(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("Wikifier.Parser.add parser parameter must be an object");if(!e.hasOwnProperty("name"))throw new Error('parser object missing required "name" property');if("string"!=typeof e.name)throw new Error('parser object "name" property must be a string');if(!e.hasOwnProperty("match"))throw new Error('parser object missing required "match" property');if("string"!=typeof e.match)throw new Error('parser object "match" property must be a string');if(!e.hasOwnProperty("handler"))throw new Error('parser object missing required "handler" property');if("function"!=typeof e.handler)throw new Error('parser object "handler" property must be a function');if(e.hasOwnProperty("profiles")&&!Array.isArray(e.profiles))throw new Error('parser object "profiles" property must be an array');if(n(e.name))throw new Error('cannot clobber existing parser "'+e.name+'"');d.push(e)}function r(e){var t=d.find(function(t){return t.name===e});t&&d.delete(t)}function a(){return 0===d.length}function n(e){return!!d.find(function(t){return t.name===e})}function i(e){return d.find(function(t){return t.name===e})||null}function o(){return h}function s(){var e=d,t=e.filter(function(e){return!Array.isArray(e.profiles)||e.profiles.includes("core")});return h=Object.freeze({all:{parsers:e,parserRegExp:new RegExp(e.map(function(e){return"("+e.match+")"}).join("|"),"gm")},core:{parsers:t,parserRegExp:new RegExp(t.map(function(e){return"("+e.match+")"}).join("|"),"gm")}})}function u(){return"object"!==(void 0===h?"undefined":_typeof(h))||0===Object.keys(h).length}function l(e){if("object"!==(void 0===h?"undefined":_typeof(h))||!h.hasOwnProperty(e))throw new Error('nonexistent parser profile "'+e+'"');return h[e]}function c(e){return"object"===(void 0===h?"undefined":_typeof(h))&&h.hasOwnProperty(e)}var d=[],h=void 0;return Object.freeze(Object.defineProperties({},{parsers:{get:e},add:{value:t},delete:{value:r},isEmpty:{value:a},has:{value:n},get:{value:i},Profile:{value:Object.freeze(Object.defineProperties({},{profiles:{get:o},compile:{value:s},isEmpty:{value:u},has:{value:c},get:{value:l}}))}}))}()}),Object.defineProperties(t,{helpers:{value:{}},getValue:{value:State.getVar},setValue:{value:State.setVar},parse:{value:Scripting.parse},evalExpression:{value:Scripting.evalTwineScript},evalStatements:{value:Scripting.evalTwineScript},textPrimitives:{value:Patterns}}),Object.defineProperties(t.helpers,{inlineCss:{value:function(){function e(e){var r={classes:[],id:"",styles:{}},a=void 0;do{t.lastIndex=e.nextMatch;var n=t.exec(e.source);a=n&&n.index===e.nextMatch,a&&(n[1]?r.styles[Util.fromCssProperty(n[1])]=n[2].trim():n[3]?r.styles[Util.fromCssProperty(n[3])]=n[4].trim():n[5]?r.classes=r.classes.concat(n[5].slice(1).split(/\./)):n[6]&&(r.id=n[6].slice(1).split(/#/).pop()),e.nextMatch=t.lastIndex)}while(a);return r}var t=new RegExp(Patterns.inlineCss,"gm");return e}()},evalText:{value:function(e){var t=void 0;try{t=Scripting.evalTwineScript(e),null==t||"function"==typeof t?t=e:(t=String(t),/\[(?:object(?:\s+[^\]]+)?|native\s+code)\]/.test(t)&&(t=e))}catch(r){t=e}return t}},evalPassageId:{value:function(e){return null==e||Story.has(e)?e:t.helpers.evalText(e)}},hasBlockContext:{value:function(e){for(var t="function"==typeof window.getComputedStyle,r=e.length-1;r>=0;--r){var a=e[r];switch(a.nodeType){case Node.ELEMENT_NODE:var n=a.nodeName.toUpperCase();if("BR"===n)return!0;var i=t?window.getComputedStyle(a,null):a.currentStyle;if(i&&i.display){if("none"===i.display)continue;return"block"===i.display}switch(n){case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":return!0}return!1;case Node.COMMENT_NODE:continue;default:return!1}}return!0}},createShadowSetterCallback:{value:function(){function e(){if(!n&&!(n=t.Parser.get("macro")))throw new Error('cannot find "macro" parser');return n}function r(){for(var t=n||e(),r=new Set,a=t.context;null!==a;a=a.parent)a._shadows&&a._shadows.forEach(function(e){return r.add(e)});return[].concat(_toConsumableArray(r))}function a(e){var t={};return r().forEach(function(e){var r=e.slice(1),a="$"===e[0]?State.variables:State.temporary;t[e]=a[r]}),function(){var r=Object.keys(t),a=r.length>0?{}:null;try{return r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;n.hasOwnProperty(r)&&(a[r]=n[r]),n[r]=t[e]}),Scripting.evalJavaScript(e)}finally{r.forEach(function(e){var r=e.slice(1),n="$"===e[0]?State.variables:State.temporary;t[e]=n[r],a.hasOwnProperty(r)?n[r]=a[r]:delete n[r]})}}}var n=null;return a}()},parseSquareBracketedMarkup:{value:function(e){function t(){return c>=e.source.length?s:e.source[c]}function r(t){return t<1||c+t>=e.source.length?s:e.source[c+t]}function a(){return{error:String.format.apply(String,arguments),pos:c}}function n(){l=c}function i(t){var r=e.source.slice(l,c).trim();if(""===r)throw new Error("malformed wiki "+(f?"link":"image")+", empty "+t+" component");"link"===t&&"~"===r[0]?(u.forceInternal=!0,u.link=r.slice(1)):u[t]=r,l=c}function o(e){++c;e:for(;;){switch(t()){case"\\":++c;var r=t();if(r!==s&&"\n"!==r)break;case s:case"\n":return s;case e:break e}++c}return c}var s=-1,u={},l=e.matchStart,c=l+1,d=void 0,h=void 0,f=void 0,p=void 0;if("["===(p=t()))f=u.isLink=!0;else{switch(f=!1,p){case"<":u.align="left",++c;break;case">":u.align="right",++c}if(!/^[Ii][Mm][Gg]$/.test(e.source.slice(c,c+3)))return a("malformed square-bracketed wiki markup");c+=3,u.isImage=!0}if("["!==function(){return c>=e.source.length?s:e.source[c++]}())return a("malformed wiki {0}",f?"link":"image");d=1,h=0,n();try{e:for(;;){switch(p=t()){case s:case"\n":return a("unterminated wiki {0}",f?"link":"image");case'"':if(o(p)===s)return a("unterminated double quoted string in wiki {0}",f?"link":"image");break;case"'":if((4===h||3===h&&f)&&o(p)===s)return a("unterminated single quoted string in wiki {0}",f?"link":"image");break;case"|":0===h&&(i(f?"text":"title"),++l,h=1);break;case"-":0===h&&">"===r(1)&&(i(f?"text":"title"),++c,l+=2,h=1);break;case"<":0===h&&"-"===r(1)&&(i(f?"link":"source"),++c,l+=2,h=2);break;case"[":if(-1===h)return a("unexpected left square bracket '['");++d,1===d&&(n(),++l);break;case"]":if(0===--d){switch(h){case 0:case 1:i(f?"link":"source"),h=3;break;case 2:i(f?"text":"title"),h=3;break;case 3:f?(i("setter"),h=-1):(i("link"),h=4);break;case 4:i("setter"),h=-1}if(++c,"]"===t()){++c;break e}--c}}++c}}catch(e){return a(e.message)}return u.pos=c,u}}}),t}();!function(){function e(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createDocumentFragment()).append(t[1]).appendTo(e.output))}Wikifier.Parser.add({name:"quoteByBlock",profiles:["block"],match:"^<<<\\n",terminator:"^<<<\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("blockquote")).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"quoteByLine",profiles:["block"],match:"^>+",lookahead:/^>+/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=[e.output],r=0,a=e.matchLength,n=void 0,i=void 0;do{if(a>r)for(i=r;i<a;++i)t.push(jQuery(document.createElement("blockquote")).appendTo(t[t.length-1]).get(0));else if(a<r)for(i=r;i>a;--i)t.pop();r=a,e.subWikify(t[t.length-1],this.terminator),jQuery(document.createElement("br")).appendTo(t[t.length-1]),this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);n=o&&o.index===e.nextMatch,n&&(a=o[0].length,e.nextMatch+=o[0].length)}while(n)}}),Wikifier.Parser.add({name:"macro",profiles:["core"],match:"<<",lookahead:new RegExp("<<(/?"+Patterns.macroName+")(?:\\s*)((?:(?:\"(?:\\\\.|[^\"\\\\])*\")|(?:'(?:\\\\.|[^'\\\\])*')|(?:\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)|[^>]|(?:>(?!>)))*)>>","gm"),argsPattern:["(``)","`((?:\\\\.|[^`\\\\])+)`","(\"\"|'')",'("(?:\\\\.|[^"\\\\])+")',"('(?:\\\\.|[^'\\\\])+')","(\\[(?:[<>]?[Ii][Mm][Gg])?\\[[^\\r\\n]*?\\]\\]+)","([^`\"'\\s]+)","(`|\"|')"].join("|"),working:{source:"",name:"",arguments:"",index:0},context:null,handler:function(e){var t=this.lookahead.lastIndex=e.matchStart;if(this.parseTag(e)){var r=e.nextMatch,a=this.working.source,n=this.working.name,i=this.working.arguments,o=void 0;try{if(!(o=Macro.get(n))){if(Macro.tags.has(n)){var s=Macro.tags.get(n);return throwError(e.output,"child tag <<"+n+">> was found outside of a call to its parent macro"+(1===s.length?"":"s")+" <<"+s.join(">>, <<")+">>",e.source.slice(t,e.nextMatch))}return throwError(e.output,"macro <<"+n+">> does not exist",e.source.slice(t,e.nextMatch))}var u=null;if(o.hasOwnProperty("tags")&&!(u=this.parseBody(e,o)))return e.nextMatch=r,throwError(e.output,"cannot find a closing tag for macro <<"+n+">>",e.source.slice(t,e.nextMatch)+"…");if("function"!=typeof o.handler)return throwError(e.output,"macro <<"+n+">> handler function "+(o.hasOwnProperty("handler")?"is not a function":"does not exist"),e.source.slice(t,e.nextMatch));var l=u?u[0].args:this.createArgs(i,o.hasOwnProperty("skipArgs")&&!!o.skipArgs||o.hasOwnProperty("skipArg0")&&!!o.skipArg0);if(o.hasOwnProperty("_MACRO_API")){this.context=new MacroContext({macro:o,name:n,args:l,payload:u,source:a,parent:this.context,parser:e});try{o.handler.call(this.context)}finally{this.context=this.context.parent}}else{var c=e._rawArgs;e._rawArgs=i;try{o.handler(e.output,n,l,e,u)}finally{e._rawArgs=c}}}catch(r){return throwError(e.output,"cannot execute "+(o&&o.isWidget?"widget":"macro")+" <<"+n+">>: "+r.message,e.source.slice(t,e.nextMatch))}finally{this.working.source="",this.working.name="",this.working.arguments="",this.working.index=0}}else e.outputText(e.output,e.matchStart,e.nextMatch)},parseTag:function(e){var t=this.lookahead.exec(e.source);return!(!t||t.index!==e.matchStart||!t[1])&&(e.nextMatch=this.lookahead.lastIndex,this.working.source=e.source.slice(t.index,this.lookahead.lastIndex),this.working.name=t[1],this.working.arguments=t[2],this.working.index=t.index,!0)},parseBody:function(e,t){for(var r=this.working.name,a="/"+r,n="end"+r,i=!!Array.isArray(t.tags)&&t.tags,o=[],s=t.hasOwnProperty("skipArgs")&&t.skipArgs,u=t.hasOwnProperty("skipArg0")&&t.skipArg0,l=-1,c=1,d=this.working.source,h=this.working.name,f=this.working.arguments,p=e.nextMatch;-1!==(e.matchStart=e.source.indexOf(this.match,e.nextMatch));)if(this.parseTag(e)){var g=this.working.source,m=this.working.name,v=this.working.arguments,y=this.working.index,b=e.nextMatch;switch(m){case r:++c;break;case n:case a:--c;break;default:if(1===c&&i)for(var w=0,k=i.length;w<k;++w)m===i[w]&&(o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),d=g,h=m,f=v,p=b)}if(0===c){o.push({source:d,name:h,arguments:f,args:this.createArgs(f,s||0===o.length&&u),contents:e.source.slice(p,y)}),l=b;break}}else this.lookahead.lastIndex=e.nextMatch=e.matchStart+this.match.length;return-1!==l?(e.nextMatch=l,o):null},createArgs:function(e,t){var r=t?[]:this.parseArgs(e);return Object.defineProperties(r,{raw:{value:e},full:{value:Scripting.parse(e)}}),r},parseArgs:function(e){for(var t=new RegExp(this.argsPattern,"gm"),r=[],a=new RegExp("^"+Patterns.variable),n=void 0;null!==(n=t.exec(e));){var i=void 0;if(n[1])i=undefined;else if(n[2]){i=n[2];try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[3])i="";else if(n[4]){i=n[4];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error("unable to parse macro argument '"+i+"': "+e.message)}}else if(n[5]){i=n[5];try{i=Scripting.evalJavaScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}}else if(n[6]){i=n[6];var o=Wikifier.helpers.parseSquareBracketedMarkup({source:i,matchStart:0});if(o.hasOwnProperty("error"))throw new Error('unable to parse macro argument "'+i+'": '+o.error);if(o.pos<i.length)throw new Error('unable to parse macro argument "'+i+'": unexpected character(s) "'+i.slice(o.pos)+'" (pos: '+o.pos+")");o.isLink?(i={isLink:!0},i.count=o.hasOwnProperty("text")?2:1,i.link=Wikifier.helpers.evalPassageId(o.link),i.text=o.hasOwnProperty("text")?Wikifier.helpers.evalText(o.text):i.link,i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null):o.isImage&&(i=function(e){var t={source:e,isImage:!0};if("data:"!==e.slice(0,5)&&Story.has(e)){var r=Story.get(e);r.tags.includes("Twine.image")&&(t.source=r.text,t.passage=r.title)}return t}(Wikifier.helpers.evalPassageId(o.source)),o.hasOwnProperty("align")&&(i.align=o.align),o.hasOwnProperty("title")&&(i.title=Wikifier.helpers.evalText(o.title)),o.hasOwnProperty("link")&&(i.link=Wikifier.helpers.evalPassageId(o.link),i.external=!o.forceInternal&&Wikifier.isExternalLink(i.link)),i.setFn=o.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(o.setter)):null)}else if(n[7])if(i=n[7],a.test(i))i=State.getVar(i);else if(/^(?:settings|setup)[.[]/.test(i))try{i=Scripting.evalTwineScript(i)}catch(e){throw new Error('unable to parse macro argument "'+i+'": '+e.message)}else if("null"===i)i=null;else if("undefined"===i)i=undefined;else if("true"===i)i=!0;else if("false"===i)i=!1;else{var s=Number(i);Number.isNaN(s)||(i=s)}else if(n[8]){var u=void 0;switch(n[8]){case"`":u="backquote expression";break;case'"':u="double quoted string";break;case"'":u="single quoted string"}
+throw new Error("unterminated "+u+" in macro argument string")}r.push(i)}return r}}),Wikifier.Parser.add({name:"prettyLink",profiles:["core"],match:"\\[\\[[^[]",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=Wikifier.helpers.evalPassageId(t.link),a=t.hasOwnProperty("text")?Wikifier.helpers.evalText(t.text):r,n=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,i=(Config.debug?new DebugView(e.output,"wiki-link","[[link]]",e.source.slice(e.matchStart,e.nextMatch)):e).output;t.forceInternal||!Wikifier.isExternalLink(r)?Wikifier.createInternalLink(i,r,a,n):Wikifier.createExternalLink(i,r,a)}}),Wikifier.Parser.add({name:"urlLink",profiles:["core"],match:Patterns.url,handler:function(e){e.outputText(Wikifier.createExternalLink(e.output,e.matchText),e.matchStart,e.nextMatch)}}),Wikifier.Parser.add({name:"image",profiles:["core"],match:"\\[[<>]?[Ii][Mm][Gg]\\[",handler:function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup(e);if(t.hasOwnProperty("error"))return void e.outputText(e.output,e.matchStart,e.nextMatch);e.nextMatch=t.pos;var r=void 0;Config.debug&&(r=new DebugView(e.output,"wiki-image",t.hasOwnProperty("link")?"[img[][link]]":"[img[]]",e.source.slice(e.matchStart,e.nextMatch)),r.modes({block:!0}));var a=t.hasOwnProperty("setter")?Wikifier.helpers.createShadowSetterCallback(Scripting.parse(t.setter)):null,n=(Config.debug?r:e).output,i=void 0;if(t.hasOwnProperty("link")){var o=Wikifier.helpers.evalPassageId(t.link);n=t.forceInternal||!Wikifier.isExternalLink(o)?Wikifier.createInternalLink(n,o,null,a):Wikifier.createExternalLink(n,o),n.classList.add("link-image")}if(n=jQuery(document.createElement("img")).appendTo(n).get(0),i=Wikifier.helpers.evalPassageId(t.source),"data:"!==i.slice(0,5)&&Story.has(i)){var s=Story.get(i);s.tags.includes("Twine.image")&&(n.setAttribute("data-passage",s.title),i=s.text)}n.src=i,t.hasOwnProperty("title")&&(n.title=Wikifier.helpers.evalText(t.title)),t.hasOwnProperty("align")&&(n.align=t.align)}}),Wikifier.Parser.add({name:"monospacedByBlock",profiles:["block"],match:"^\\{\\{\\{\\n",lookahead:/^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){var r=jQuery(document.createElement("pre"));jQuery(document.createElement("code")).text(t[1]).appendTo(r),r.appendTo(e.output),e.nextMatch=this.lookahead.lastIndex}}}),Wikifier.Parser.add({name:"formatByChar",profiles:["core"],match:"''|//|__|\\^\\^|~~|==|\\{\\{\\{",handler:function(e){switch(e.matchText){case"''":e.subWikify(jQuery(document.createElement("strong")).appendTo(e.output).get(0),"''");break;case"//":e.subWikify(jQuery(document.createElement("em")).appendTo(e.output).get(0),"//");break;case"__":e.subWikify(jQuery(document.createElement("u")).appendTo(e.output).get(0),"__");break;case"^^":e.subWikify(jQuery(document.createElement("sup")).appendTo(e.output).get(0),"\\^\\^");break;case"~~":e.subWikify(jQuery(document.createElement("sub")).appendTo(e.output).get(0),"~~");break;case"==":e.subWikify(jQuery(document.createElement("s")).appendTo(e.output).get(0),"==");break;case"{{{":var t=/\{\{\{((?:.|\n)*?)\}\}\}/gm;t.lastIndex=e.matchStart;var r=t.exec(e.source);r&&r.index===e.matchStart&&(jQuery(document.createElement("code")).text(r[1]).appendTo(e.output),e.nextMatch=t.lastIndex)}}}),Wikifier.Parser.add({name:"customStyle",profiles:["core"],match:"@@",terminator:"@@",blockRegExp:/\s*\n/gm,handler:function(e){var t=Wikifier.helpers.inlineCss(e);this.blockRegExp.lastIndex=e.nextMatch;var r=this.blockRegExp.exec(e.source),a=r&&r.index===e.nextMatch,n=jQuery(document.createElement(a?"div":"span")).appendTo(e.output);0===t.classes.length&&""===t.id&&0===Object.keys(t.styles).length?n.addClass("marked"):(t.classes.forEach(function(e){return n.addClass(e)}),""!==t.id&&n.attr("id",t.id),n.css(t.styles)),a?(e.nextMatch+=r[0].length,e.subWikify(n[0],"\\n?"+this.terminator)):e.subWikify(n[0],this.terminator)}}),Wikifier.Parser.add({name:"verbatimText",profiles:["core"],match:'"{3}|<[Nn][Oo][Ww][Ii][Kk][Ii]>',lookahead:/(?:"{3}((?:.|\n)*?)"{3})|(?:<[Nn][Oo][Ww][Ii][Kk][Ii]>((?:.|\n)*?)<\/[Nn][Oo][Ww][Ii][Kk][Ii]>)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex,jQuery(document.createElement("span")).addClass("verbatim").text(t[1]||t[2]).appendTo(e.output))}}),Wikifier.Parser.add({name:"horizontalRule",profiles:["core"],match:"^----+$\\n?|<[Hh][Rr]\\s*/?>\\n?",handler:function(e){jQuery(document.createElement("hr")).appendTo(e.output)}}),Wikifier.Parser.add({name:"emdash",profiles:["core"],match:"--",handler:function(e){jQuery(document.createTextNode("—")).appendTo(e.output)}}),Wikifier.Parser.add({name:"doubleDollarSign",profiles:["core"],match:"\\${2}",handler:function(e){jQuery(document.createTextNode("$")).appendTo(e.output)}}),Wikifier.Parser.add({name:"nakedVariable",profiles:["core"],match:Patterns.variable+"(?:(?:\\."+Patterns.identifier+")|(?:\\[\\d+\\])|(?:\\[\"(?:\\\\.|[^\"\\\\])+\"\\])|(?:\\['(?:\\\\.|[^'\\\\])+'\\])|(?:\\["+Patterns.variable+"\\]))*",handler:function(e){var t=toStringOrDefault(State.getVar(e.matchText),null);null===t?jQuery(document.createTextNode(e.matchText)).appendTo(e.output):new Wikifier((Config.debug?new DebugView(e.output,"variable",e.matchText,e.matchText):e).output,t)}}),Wikifier.Parser.add({name:"heading",profiles:["block"],match:"^!{1,6}",terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.subWikify(jQuery(document.createElement("h"+e.matchLength)).appendTo(e.output).get(0),this.terminator)}}),Wikifier.Parser.add({name:"table",profiles:["block"],match:"^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",lookahead:/^\|([^\n]*)\|([fhck]?)$/gm,rowTerminator:"\\|(?:[cfhk]?)$\\n?",cellPattern:"(?:\\|([^\\n\\|]*)\\|)|(\\|[cfhk]?$\\n?)",cellTerminator:"(?:\\u0020*)\\|",rowTypes:{c:"caption",f:"tfoot",h:"thead","":"tbody"},handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));var t=jQuery(document.createElement("table")).appendTo(e.output).get(0),r=[],a=null,n=null,i=0,o=void 0;e.nextMatch=e.matchStart;do{this.lookahead.lastIndex=e.nextMatch;var s=this.lookahead.exec(e.source);if(o=s&&s.index===e.nextMatch){var u=s[2];"k"===u?(t.className=s[1],e.nextMatch+=s[0].length+1):(u!==a&&(a=u,n=jQuery(document.createElement(this.rowTypes[u])).appendTo(t)),"c"===a?(n.css("caption-side",0===i?"top":"bottom"),e.nextMatch+=1,e.subWikify(n[0],this.rowTerminator)):this.rowHandler(e,jQuery(document.createElement("tr")).appendTo(n).get(0),r),++i)}}while(o)},rowHandler:function(e,t,r){var a=this,n=new RegExp(this.cellPattern,"gm"),i=0,o=1,s=void 0;do{n.lastIndex=e.nextMatch;var u=n.exec(e.source);if(s=u&&u.index===e.nextMatch){if("~"===u[1]){var l=r[i];l&&(++l.rowCount,l.$element.attr("rowspan",l.rowCount).css("vertical-align","middle")),e.nextMatch=u.index+u[0].length-1}else if(">"===u[1])++o,e.nextMatch=u.index+u[0].length-1;else{if(u[2]){e.nextMatch=u.index+u[0].length;break}!function(){++e.nextMatch;for(var n=Wikifier.helpers.inlineCss(e),s=!1,u=!1,l=void 0;" "===e.source.substr(e.nextMatch,1);)s=!0,++e.nextMatch;"!"===e.source.substr(e.nextMatch,1)?(l=jQuery(document.createElement("th")).appendTo(t),++e.nextMatch):l=jQuery(document.createElement("td")).appendTo(t),r[i]={rowCount:1,$element:l},o>1&&(l.attr("colspan",o),o=1),e.subWikify(l[0],a.cellTerminator)," "===e.matchText.substr(e.matchText.length-2,1)&&(u=!0),n.classes.forEach(function(e){return l.addClass(e)}),""!==n.id&&l.attr("id",n.id),s&&u?n.styles["text-align"]="center":s?n.styles["text-align"]="right":u&&(n.styles["text-align"]="left"),l.css(n.styles),e.nextMatch=e.nextMatch-1}()}++i}}while(s)}}),Wikifier.Parser.add({name:"list",profiles:["block"],match:"^(?:(?:\\*+)|(?:#+))",lookahead:/^(?:(\*+)|(#+))/gm,terminator:"\\n",handler:function(e){if(!Wikifier.helpers.hasBlockContext(e.output.childNodes))return void jQuery(e.output).append(document.createTextNode(e.matchText));e.nextMatch=e.matchStart;var t=[e.output],r=null,a=0,n=void 0,i=void 0;do{this.lookahead.lastIndex=e.nextMatch;var o=this.lookahead.exec(e.source);if(n=o&&o.index===e.nextMatch){var s=o[2]?"ol":"ul",u=o[0].length;if(e.nextMatch+=o[0].length,u>a)for(i=a;i<u;++i)t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0));else if(u<a)for(i=a;i>u;--i)t.pop();else u===a&&s!==r&&(t.pop(),t.push(jQuery(document.createElement(s)).appendTo(t[t.length-1]).get(0)));a=u,r=s,e.subWikify(jQuery(document.createElement("li")).appendTo(t[t.length-1]).get(0),this.terminator)}}while(n)}}),Wikifier.Parser.add({name:"commentByBlock",profiles:["core"],match:"(?:/(?:%|\\*))|(?:\x3c!--)",lookahead:/(?:\/(%|\*)(?:(?:.|\n)*?)\1\/)|(?:<!--(?:(?:.|\n)*?)-->)/gm,handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);t&&t.index===e.matchStart&&(e.nextMatch=this.lookahead.lastIndex)}}),Wikifier.Parser.add({name:"lineContinuation",profiles:["core"],match:"\\\\"+Patterns.spaceNoTerminator+"*(?:\\n|$)|(?:^|\\n)"+Patterns.spaceNoTerminator+"*\\\\",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"lineBreak",profiles:["core"],match:"\\n|<[Bb][Rr]\\s*/?>",handler:function(e){e.options.nobr||jQuery(document.createElement("br")).appendTo(e.output)}}),Wikifier.Parser.add({name:"htmlCharacterReference",profiles:["core"],match:"(?:(?:&#?[0-9A-Za-z]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9A-Fa-f]|1D[C-Fc-f][0-9A-Fa-f]|20[D-Fd-f][0-9A-Fa-f]|FE2[0-9A-Fa-f])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[0-9A-Za-z]{2,8};)",handler:function(e){jQuery(document.createDocumentFragment()).append(e.matchText).appendTo(e.output)}}),Wikifier.Parser.add({name:"xmlProlog",profiles:["core"],match:"<\\?[Xx][Mm][Ll][^>]*\\?>",handler:function(e){e.nextMatch=e.matchStart+e.matchLength}}),Wikifier.Parser.add({name:"verbatimHtml",profiles:["core"],match:"<[Hh][Tt][Mm][Ll]>",lookahead:/<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/gm,handler:e}),Wikifier.Parser.add({name:"verbatimSvgTag",profiles:["core"],match:"<[Ss][Vv][Gg][^>]*>",lookahead:/(<[Ss][Vv][Gg][^>]*>(?:.|\n)*?<\/[Ss][Vv][Gg]>)/gm,handler:e}),Wikifier.Parser.add({name:"verbatimScriptTag",profiles:["core"],match:"<[Ss][Cc][Rr][Ii][Pp][Tt][^>]*>",lookahead:/(<[Ss][Cc][Rr][Ii][Pp][Tt]*>(?:.|\n)*?<\/[Ss][Cc][Rr][Ii][Pp][Tt]>)/gm,handler:e}),Wikifier.Parser.add({name:"styleTag",profiles:["core"],match:"<[Ss][Tt][Yy][Ll][Ee][^>]*>",lookahead:/(<[Ss][Tt][Yy][Ll][Ee]*>)((?:.|\n)*?)(<\/[Ss][Tt][Yy][Ll][Ee]>)/gm,imageMarkup:new RegExp(Patterns.cssImage,"g"),hasImageMarkup:new RegExp(Patterns.cssImage),handler:function(e){this.lookahead.lastIndex=e.matchStart;var t=this.lookahead.exec(e.source);if(t&&t.index===e.matchStart){e.nextMatch=this.lookahead.lastIndex;var r=t[2];this.hasImageMarkup.test(r)&&(this.imageMarkup.lastIndex=0,r=r.replace(this.imageMarkup,function(e){var t=Wikifier.helpers.parseSquareBracketedMarkup({source:e,matchStart:0});if(t.hasOwnProperty("error")||t.pos<e.length)return e;var r=t.source;if("data:"!==r.slice(0,5)&&Story.has(r)){var a=Story.get(r);a.tags.includes("Twine.image")&&(r=a.text)}return'url("'+r.replace(/"/g,"%22")+'")'})),jQuery(document.createDocumentFragment()).append(t[1]+r+t[3]).appendTo(e.output)}}}),Wikifier.Parser.add({name:"htmlTag",profiles:["core"],match:"<\\w+(?:\\s+[^\\u0000-\\u001F\\u007F-\\u009F\\s\"'>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*?\"|'[^']*?'|[^\\s\"'=<>`]+))?)*\\s*\\/?>",tagPattern:"<(\\w+)",voidElements:["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],nobrElements:["colgroup","datalist","dl","figure","ol","optgroup","select","table","tbody","tfoot","thead","tr","ul"],handler:function(e){var t=new RegExp(this.tagPattern).exec(e.matchText),r=t&&t[1],a=r&&r.toLowerCase();if(a){var n=this.voidElements.includes(a)||e.matchText.endsWith("/>"),i=this.nobrElements.includes(a),o=void 0,s=void 0;if(!n){o="<\\/"+a+"\\s*>";var u=new RegExp(o,"gim");u.lastIndex=e.matchStart,s=u.exec(e.source)}if(!n&&!s)return throwError(e.output,"cannot find a closing tag for HTML <"+r+">",e.matchText+"…");var l=e.output,c=document.createElement(e.output.tagName),d=void 0;for(c.innerHTML=e.matchText;c.firstChild;)c=c.firstChild;try{this.processAttributeDirectives(c)}catch(t){return throwError(e.output,"<"+a+">: bad evaluation from attribute directive: "+t.message,e.matchText+"…")}c.hasAttribute("data-passage")&&(this.processDataAttributes(c),Config.debug&&(d=new DebugView(e.output,"html-"+a,a,e.matchText),d.modes({block:"img"===a,nonvoid:s}),l=d.output)),s&&(e.subWikify(c,o,{ignoreTerminatorCase:!0,nobr:i}),d&&jQuery(c).find(".debug.block").length>0&&d.modes({block:!0})),l.appendChild(c)}},processAttributeDirectives:function(e){for(var t=e.attributes,r=0;r<t.length;++r){var a=t[r],n=a.name,i=a.value,o="@"===n[0];if(o||n.startsWith("sc-eval:")){var s=n.slice(o?1:8);e.setAttribute(s,Scripting.evalTwineScript(i)),e.removeAttribute(n)}}},processDataAttributes:function(e){var t=e.getAttribute("data-passage");if(null!=t){var r=Wikifier.helpers.evalPassageId(t);if(r!==t&&(t=r,e.setAttribute("data-passage",r)),""!==t)if("IMG"===e.tagName.toUpperCase())"data:"!==t.slice(0,5)&&Story.has(t)&&(t=Story.get(t),t.tags.includes("Twine.image")&&(e.src=t.text.trim()));else{var a=e.getAttribute("data-setter"),n=void 0;null!=a&&""!==(a=String(a).trim())&&(n=Wikifier.helpers.createShadowSetterCallback(Scripting.parse(a))),Story.has(t)?(e.classList.add("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(t)&&e.classList.add("link-visited")):e.classList.add("link-broken"),jQuery(e).ariaClick({one:!0},function(){"function"==typeof n&&n.call(this),Engine.play(t)})}}}})}();var Macro=function(){function e(t,r,n){if(Array.isArray(t))return void t.forEach(function(t){return e(t,r,n)});if(!h.test(t))throw new Error('invalid macro name "'+t+'"');if(a(t))throw new Error("cannot clobber existing macro <<"+t+">>");if(u(t))throw new Error("cannot clobber child tag <<"+t+">> of parent macro"+(1===d[t].length?"":"s")+" <<"+d[t].join(">>, <<")+">>");try{if("object"===(void 0===r?"undefined":_typeof(r)))c[t]=n?clone(r):r;else{if(!a(r))throw new Error("cannot create alias of nonexistent macro <<"+r+">>");c[t]=n?clone(c[r]):c[r]}Object.defineProperty(c,t,{writable:!1}),c[t]._MACRO_API=!0}catch(e){throw"TypeError"===e.name?new Error("cannot clobber protected macro <<"+t+">>"):new Error("unknown error when attempting to add macro <<"+t+">>: ["+e.name+"] "+e.message)}if(c[t].hasOwnProperty("tags"))if(null==c[t].tags)o(t);else{if(!Array.isArray(c[t].tags))throw new Error('bad value for "tags" property of macro <<'+t+">>");o(t,c[t].tags)}}function t(e){if(Array.isArray(e))return void e.forEach(function(e){return t(e)});if(a(e)){c[e].hasOwnProperty("tags")&&s(e);try{Object.defineProperty(c,e,{writable:!0}),delete c[e]}catch(t){throw new Error("unknown error removing macro <<"+e+">>: "+t.message)}}else if(u(e))throw new Error("cannot remove child tag <<"+e+">> of parent macro <<"+d[e]+">>")}function r(){return 0===Object.keys(c).length}function a(e){return c.hasOwnProperty(e)}function n(e){var t=null;return a(e)&&"function"==typeof c[e].handler?t=c[e]:macros.hasOwnProperty(e)&&"function"==typeof macros[e].handler&&(t=macros[e]),t}function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"init";Object.keys(c).forEach(function(t){"function"==typeof c[t][e]&&c[t][e](t)}),Object.keys(macros).forEach(function(t){"function"==typeof macros[t][e]&&macros[t][e](t)})}function o(e,t){if(!e)throw new Error("no parent specified");for(var r=["/"+e,"end"+e],n=[].concat(r,Array.isArray(t)?t:[]),i=0;i<n.length;++i){var o=n[i];if(a(o))throw new Error("cannot register tag for an existing macro");u(o)?d[o].includes(e)||(d[o].push(e),d[o].sort()):d[o]=[e]}}function s(e){if(!e)throw new Error("no parent specified");Object.keys(d).forEach(function(t){var r=d[t].indexOf(e);-1!==r&&(1===d[t].length?delete d[t]:d[t].splice(r,1))})}function u(e){return d.hasOwnProperty(e)}function l(e){return u(e)?d[e]:null}var c={},d={},h=new RegExp("^(?:"+Patterns.macroName+")$");return Object.freeze(Object.defineProperties({},{add:{value:e},delete:{value:t},isEmpty:{value:r},has:{value:a},get:{value:n},init:{value:i},tags:{value:Object.freeze(Object.defineProperties({},{register:{value:o},unregister:{value:s},has:{value:u},get:{value:l}}))},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),MacroContext=function(){return function(){function e(t){_classCallCheck(this,e);var r=Object.assign({parent:null,macro:null,name:"",args:null,payload:null,parser:null,source:""},t);if(null===r.macro||""===r.name||null===r.parser)throw new TypeError("context object missing required properties");Object.defineProperties(this,{self:{value:r.macro},name:{value:r.name},args:{value:r.args},payload:{value:r.payload},source:{value:r.source},parent:{value:r.parent},parser:{value:r.parser},_output:{value:r.parser.output},_shadows:{writable:!0,value:null},_debugView:{writable:!0,value:null},_debugViewEnabled:{writable:!0,value:Config.debug}})}return _createClass(e,[{key:"contextHas",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return!0;return!1}},{key:"contextSelect",value:function(e){for(var t=this;null!==(t=t.parent);)if(e(t))return t;return null}},{key:"contextSelectAll",value:function(e){for(var t=[],r=this;null!==(r=r.parent);)e(r)&&t.push(r);return t}},{key:"addShadow",value:function(){var e=this;this._shadows||(this._shadows=new Set);for(var t=new RegExp("^"+Patterns.variable+"$"),r=arguments.length,a=Array(r),n=0;n<r;n++)a[n]=arguments[n];a.flatten().forEach(function(r){if("string"!=typeof r)throw new TypeError("variable name must be a string; type: "+(void 0===r?"undefined":_typeof(r)));if(!t.test(r))throw new Error('invalid variable name "'+r+'"');e._shadows.add(r)})}},{key:"createShadowWrapper",value:function(e,t,r){var a=this,n=void 0;return"function"==typeof e&&(n={},this.shadowView.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t]})),function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];if("function"==typeof r&&r.apply(this,o),"function"==typeof e){var u=Object.keys(n),l=u.length>0?{}:null,c=Wikifier.Parser.get("macro"),d=void 0;try{u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;r.hasOwnProperty(t)&&(l[t]=r[t]),r[t]=n[e]}),d=c.context,c.context=a,e.apply(this,o)}finally{d!==undefined&&(c.context=d),u.forEach(function(e){var t=e.slice(1),r="$"===e[0]?State.variables:State.temporary;n[e]=r[t],l.hasOwnProperty(t)?r[t]=l[t]:delete r[t]})}}"function"==typeof t&&t.apply(this,o)}}},{key:"createDebugView",value:function(e,t){return this._debugView=new DebugView(this._output,"macro",e||this.name,t||this.source),null!==this.payload&&this.payload.length>0&&this._debugView.modes({nonvoid:!0}),this._debugViewEnabled=!0,this._debugView}},{key:"removeDebugView",value:function(){null!==this._debugView&&(this._debugView.remove(),this._debugView=null),this._debugViewEnabled=!1}},{key:"error",value:function(e,t){return throwError(this._output,"<<"+this.name+">>: "+e,t||this.source)}},{key:"output",get:function(){return this._debugViewEnabled?this.debugView.output:this._output}},{key:"shadows",get:function(){return[].concat(_toConsumableArray(this._shadows))}},{key:"shadowView",get:function(){var e=new Set;return this.contextSelectAll(function(e){return e._shadows}).forEach(function(t){return t._shadows.forEach(function(t){return e.add(t)})}),[].concat(_toConsumableArray(e))}},{key:"debugView",get:function(){return this._debugViewEnabled?null!==this._debugView?this._debugView:this.createDebugView():null}}]),e}()}();!function(){if(Macro.add("capture",{skipArgs:!0,tags:null,handler:function(){if(0===this.args.raw.length)return this.error("no story/temporary variable list specified");var e={};try{for(var t=new RegExp("("+Patterns.variable+")","g"),r=void 0;null!==(r=t.exec(this.args.raw));){var a=r[1],n=a.slice(1),i="$"===a[0]?State.variables:State.temporary;i.hasOwnProperty(n)&&(e[n]=i[n]),this.addShadow(a)}new Wikifier(this.output,this.payload[0].contents)}finally{this.shadows.forEach(function(t){var r=t.slice(1),a="$"===t[0]?State.variables:State.temporary;e.hasOwnProperty(r)?a[r]=e[r]:delete a[r]})}}}),Macro.add("set",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("unset",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story/temporary variable list specified");for(var e=new RegExp("State\\.(variables|temporary)\\.("+Patterns.identifier+")","g"),t=void 0;null!==(t=e.exec(this.args.full));){var r=State[t[1]],a=t[2];r.hasOwnProperty(a)&&delete r[a]}Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("remember",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(var e=storage.get("remember")||{},t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0;null!==(r=t.exec(this.args.full));){var a=r[1];e[a]=State.variables[a]}if(!storage.set("remember",e))return this.error("unknown error, cannot remember: "+this.args.raw);Config.debug&&this.debugView.modes({hidden:!0})},init:function(){var e=storage.get("remember");e&&Object.keys(e).forEach(function(t){return State.variables[t]=e[t]})}}),Macro.add("forget",{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no story variable list specified");for(var e=storage.get("remember"),t=new RegExp("State\\.variables\\.("+Patterns.identifier+")","g"),r=void 0,a=!1;null!==(r=t.exec(this.args.full));){var n=r[1];State.variables.hasOwnProperty(n)&&delete State.variables[n],e&&e.hasOwnProperty(n)&&(a=!0,delete e[n])}if(a&&!storage.set("remember",e))return this.error("unknown error, cannot update remember store");Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("run","set"),Macro.add("script",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();try{Scripting.evalJavaScript(this.payload[0].contents,e),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e),this.source+this.payload[0].contents+"<</"+this.name+">>")}e.hasChildNodes()&&this.output.appendChild(e)}}),Macro.add("include",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');Config.debug&&this.debugView.modes({block:!0}),e=Story.get(e);var t=void 0;t=this.args[1]?jQuery(document.createElement(this.args[1])).addClass(e.domId+" macro-"+this.name).attr("data-passage",e.title).appendTo(this.output):jQuery(this.output),t.wiki(e.processText())}}),Macro.add("nobr",{skipArgs:!0,tags:null,handler:function(){new Wikifier(this.output,this.payload[0].contents.replace(/^\n+|\n+$/g,"").replace(/\n+/g," "))}}),Macro.add(["print","=","-"],{skipArgs:!0,handler:function(){if(0===this.args.full.length)return this.error("no expression specified");try{var e=toStringOrDefault(Scripting.evalJavaScript(this.args.full),null);null!==e&&new Wikifier(this.output,"-"===this.name?Util.escape(e):e)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}),Macro.add("silently",{skipArgs:!0,tags:null,handler:function(){var e=document.createDocumentFragment();if(new Wikifier(e,this.payload[0].contents.trim()),Config.debug)this.debugView.modes({hidden:!0}),this.output.appendChild(e);else{var t=[].concat(_toConsumableArray(e.querySelectorAll(".error"))).map(function(e){return e.textContent});if(t.length>0)return this.error("error"+(1===t.length?"":"s")+" within contents ("+t.join("; ")+")",this.source+this.payload[0].contents+"<</"+this.name+">>")}}}),Macro.add("display","include"),Macro.add("if",{skipArgs:!0,tags:["elseif","else"],handler:function(){var e=void 0;try{var t=this.payload.length;for(e=0;e<t;++e)switch(this.payload[e].name){case"else":if(this.payload[e].args.raw.length>0)return/^\s*if\b/i.test(this.payload[e].args.raw)?this.error('whitespace is not allowed between the "else" and "if" in <<elseif>> clause'+(e>0?" (#"+e+")":"")):this.error("<<else>> does not accept a conditional expression (perhaps you meant to use <<elseif>>), invalid: "+this.payload[e].args.raw);if(e+1!==t)return this.error("<<else>> must be the final clause");break;default:if(0===this.payload[e].args.full.length)return this.error("no conditional expression specified for <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":""));if(Config.macros.ifAssignmentError&&/[^!=&^|<>*\/%+-]=[^=]/.test(this.payload[e].args.full))return this.error("assignment operator found within <<"+this.payload[e].name+">> clause"+(e>0?" (#"+e+")":"")+" (perhaps you meant to use an equality operator: ==, ===, eq, is), invalid: "+this.payload[e].args.raw)}var r=Scripting.evalJavaScript,a=!1;for(e=0;e<t;++e){if(Config.debug&&this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1}),"else"===this.payload[e].name||r(this.payload[e].args.full)){a=!0,new Wikifier(this.output,this.payload[e].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++e;e<t;++e)this.createDebugView(this.payload[e].name,this.payload[e].source).modes({nonvoid:!1,hidden:!0,invalid:!0});this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!a,invalid:!a})}}catch(t){return this.error("bad conditional expression in <<"+(0===e?"if":"elseif")+">> clause"+(e>0?" (#"+e+")":"")+": "+("object"===(void 0===t?"undefined":_typeof(t))?t.message:t))}}}),Macro.add("switch",{skipArg0:!0,tags:["case","default"],handler:function(){if(0===this.args.full.length)return this.error("no expression specified");var e=this.payload.length;if(1===e)return this.error("no cases specified");var t=void 0;for(t=1;t<e;++t)switch(this.payload[t].name){case"default":if(this.payload[t].args.length>0)return this.error("<<default>> does not accept values, invalid: "+this.payload[t].args.raw);if(t+1!==e)return this.error("<<default>> must be the final case");break;default:if(0===this.payload[t].args.length)return this.error("no value(s) specified for <<"+this.payload[t].name+">> (#"+t+")")}var r=void 0;try{r=Scripting.evalJavaScript(this.args.full)}catch(e){return this.error("bad evaluation: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}var a=this.debugView,n=!1;for(Config.debug&&a.modes({nonvoid:!1,hidden:!0}),t=1;t<e;++t){if(Config.debug&&this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1}),"default"===this.payload[t].name||this.payload[t].args.some(function(e){return e===r})){n=!0,new Wikifier(this.output,this.payload[t].contents);break}Config.debug&&this.debugView.modes({hidden:!0,invalid:!0})}if(Config.debug){for(++t;t<e;++t)this.createDebugView(this.payload[t].name,this.payload[t].source).modes({nonvoid:!1,hidden:!0,invalid:!0});a.modes({nonvoid:!1,hidden:!0,invalid:!n}),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0,invalid:!n})}}}),Macro.add("for",{skipArgs:!0,tags:null,_hasRangeRe:new RegExp("^\\S.*?\\s+range\\s+\\S.*?$"),_rangeRe:new RegExp("^(?:State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s*,\\s*)?State\\.(variables|temporary)\\.("+Patterns.identifier+")\\s+range\\s+(\\S.*?)$"),_3PartRe:/^([^;]*?)\s*;\s*([^;]*?)\s*;\s*([^;]*?)$/,handler:function(){var e=this.args.full.trim(),t=this.payload[0].contents.replace(/\n$/,"");if(0===e.length)this.self._handleFor.call(this,t,null,!0,null);else if(this.self._hasRangeRe.test(e)){var r=e.match(this.self._rangeRe);if(null===r)return this.error("invalid range form syntax, format: [index ,] value range collection");this.self._handleForRange.call(this,t,{type:r[1],name:r[2]},{type:r[3],name:r[4]},r[5])}else{var a=void 0,n=void 0,i=void 0;if(-1===e.indexOf(";")){if(/^\S+\s+in\s+\S+/i.test(e))return this.error("invalid syntax, for…in is not supported; see: for…range");if(/^\S+\s+of\s+\S+/i.test(e))return this.error("invalid syntax, for…of is not supported; see: for…range");n=e}else{var o=e.match(this.self._3PartRe);if(null===o)return this.error("invalid 3-part conditional form syntax, format: [init] ; [condition] ; [post]");a=o[1],n=o[2].trim(),i=o[3],0===n.length&&(n=!0)}this.self._handleFor.call(this,t,a,n,i)}},_handleFor:function(e,t,r,a){var n=Scripting.evalJavaScript,i=!0,o=Config.macros.maxLoopIterations;Config.debug&&this.debugView.modes({block:!0});try{if(TempState.break=null,t)try{n(t)}catch(e){return this.error("bad init expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}for(;n(r);){if(--o<0)return this.error("exceeded configured maximum loop iterations ("+Config.macros.maxLoopIterations+")");if(new Wikifier(this.output,i?e.replace(/^\n/,""):e),i&&(i=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}if(a)try{n(a)}catch(e){return this.error("bad post expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}}}catch(e){return this.error("bad conditional expression: "+("object"===(void 0===e?"undefined":_typeof(e))?e.message:e))}finally{TempState.break=null}},_handleForRange:function(e,t,r,a){var n=!0,i=void 0;try{i=this.self._toRangeList(a)}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});try{TempState.break=null;for(var o=0;o<i.length;++o)if(t.name&&(State[t.type][t.name]=i[o][0]),State[r.type][r.name]=i[o][1],new Wikifier(this.output,n?e.replace(/^\n/,""):e),n&&(n=!1),null!=TempState.break)if(1===TempState.break)TempState.break=null;else if(2===TempState.break){TempState.break=null;break}}catch(e){return this.error("object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}finally{TempState.break=null}},_toRangeList:function(e){var t=Scripting.evalJavaScript,r=void 0;try{r=t("{"===e[0]?"("+e+")":e)}catch(e){if("object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("bad range expression: "+e);throw e.message="bad range expression: "+e.message,e}var a=void 0;switch(void 0===r?"undefined":_typeof(r)){case"string":a=[];for(var n=0;n<r.length;){var i=Util.charAndPosAt(r,n);a.push([n,i.char]),n=1+i.end}break;case"object":if(Array.isArray(r))a=r.map(function(e,t){return[t,e]});else if(r instanceof Set)a=[].concat(_toConsumableArray(r)).map(function(e,t){return[t,e]});else if(r instanceof Map)a=[].concat(_toConsumableArray(r.entries()));else{if("Object"!==Util.toStringTag(r))throw new Error("unsupported range expression type: "+Util.toStringTag(r));a=Object.keys(r).map(function(e){return[e,r[e]]})}break;default:throw new Error("unsupported range expression type: "+(void 0===r?"undefined":_typeof(r)))}return a}}),Macro.add(["break","continue"],{skipArgs:!0,handler:function(){if(!this.contextHas(function(e){
+return"for"===e.name}))return this.error("must only be used in conjunction with its parent macro <<for>>");TempState.break="continue"===this.name?1:2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add(["button","link"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no "+("button"===this.name?"button":"link")+" text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("button"===this.name?"button":"a")),r=void 0;if("object"===_typeof(this.args[0]))if(this.args[0].isImage){var a=jQuery(document.createElement("img")).attr("src",this.args[0].source).appendTo(t);this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(r=this.args[0].link),r=this.args[0].link}else t.append(document.createTextNode(this.args[0].text)),r=this.args[0].link;else t.wikiWithOptions({profile:"core"},this.args[0]),r=this.args.length>1?this.args[1]:undefined;null!=r?(t.attr("data-passage",r),Story.has(r)?(t.addClass("link-internal"),Config.addVisitedLinkClass&&State.hasPlayed(r)&&t.addClass("link-visited")):t.addClass("link-broken")):t.addClass("link-internal"),t.addClass("macro-"+this.name).ariaClick({namespace:".macros",one:null!=r},this.createShadowWrapper(""!==this.payload[0].contents?function(){return Wikifier.wikifyEval(e.payload[0].contents.trim())}:null,null!=r?function(){return Engine.play(r)}:null)).appendTo(this.output)}}),Macro.add("checkbox",{handler:function(){if(this.args.length<3){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("unchecked value"),this.args.length<3&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=this.args[2],i=document.createElement("input");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"checkbox",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.checked?n:a)}).appendTo(this.output),this.args.length>3&&"checked"===this.args[3]?(i.checked=!0,State.setVar(t,n)):State.setVar(t,a)}}),Macro.add(["linkappend","linkprepend","linkreplace"],{isAsync:!0,tags:null,handler:function(){var e=this;if(0===this.args.length)return this.error("no link text specified");Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>");var t=jQuery(document.createElement("a")),r=jQuery(document.createElement("span")),a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]);t.wikiWithOptions({profile:"core"},this.args[0]).addClass("link-internal macro-"+this.name).ariaClick({namespace:".macros",one:!0},this.createShadowWrapper(function(){if("linkreplace"===e.name?t.remove():t.wrap('<span class="macro-'+e.name+'"></span>').replaceWith(function(){return t.html()}),""!==e.payload[0].contents){var n=document.createDocumentFragment();new Wikifier(n,e.payload[0].contents),r.append(n)}a&&setTimeout(function(){return r.removeClass("macro-"+e.name+"-in")},Engine.minDomActionDelay)})).appendTo(this.output),r.addClass("macro-"+this.name+"-insert"),a&&r.addClass("macro-"+this.name+"-in"),"linkprepend"===this.name?r.insertBefore(t):r.insertAfter(t)}}),Macro.add("radiobutton",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("checked value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var r=Util.slugify(t),a=this.args[1],n=document.createElement("input");TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(r)||(TempState[this.name][r]=0),jQuery(n).attr({id:this.name+"-"+r+"-"+TempState[this.name][r]++,name:this.name+"-"+r,type:"radio",tabindex:0}).addClass("macro-"+this.name).on("change",function(){this.checked&&State.setVar(t,a)}).appendTo(this.output),this.args.length>2&&"checked"===this.args[2]&&(n.checked=!0,State.setVar(t,a))}}),Macro.add("textarea",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n="autofocus"===this.args[2],i=document.createElement("textarea");jQuery(i).attr({id:this.name+"-"+r,name:this.name+"-"+r,rows:4,tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).appendTo(this.output),State.setVar(t,a),i.textContent=a,n&&(i.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+i.id]=function(e){delete postdisplay[e],setTimeout(function(){return i.focus()},Engine.minDomActionDelay)})}}),Macro.add("textbox",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("variable name"),this.args.length<2&&e.push("default value"),this.error("no "+e.join(" or ")+" specified")}if("string"!=typeof this.args[0])return this.error("variable name argument is not a string");var t=this.args[0].trim();if("$"!==t[0]&&"_"!==t[0])return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');Config.debug&&this.debugView.modes({block:!0});var r=Util.slugify(t),a=this.args[1],n=document.createElement("input"),i=!1,o=void 0;this.args.length>3?(o=this.args[2],i="autofocus"===this.args[3]):this.args.length>2&&("autofocus"===this.args[2]?i=!0:o=this.args[2]),"object"===(void 0===o?"undefined":_typeof(o))&&(o=o.link),jQuery(n).attr({id:this.name+"-"+r,name:this.name+"-"+r,type:"text",tabindex:0}).addClass("macro-"+this.name).on("change",function(){State.setVar(t,this.value)}).on("keypress",function(e){13===e.which&&(e.preventDefault(),State.setVar(t,this.value),null!=o&&Engine.play(o))}).appendTo(this.output),State.setVar(t,a),n.value=a,i&&(n.setAttribute("autofocus","autofocus"),postdisplay["#autofocus:"+n.id]=function(e){delete postdisplay[e],setTimeout(function(){return n.focus()},Engine.minDomActionDelay)})}}),Macro.add("click","link"),Macro.add("actions",{handler:function(){for(var e=jQuery(document.createElement("ul")).addClass(this.name).appendTo(this.output),t=0;t<this.args.length;++t){var r=void 0,a=void 0,n=void 0,i=void 0;"object"===_typeof(this.args[t])?this.args[t].isImage?(n=jQuery(document.createElement("img")).attr("src",this.args[t].source),this.args[t].hasOwnProperty("passage")&&n.attr("data-passage",this.args[t].passage),this.args[t].hasOwnProperty("title")&&n.attr("title",this.args[t].title),this.args[t].hasOwnProperty("align")&&n.attr("align",this.args[t].align),r=this.args[t].link,i=this.args[t].setFn):(a=this.args[t].text,r=this.args[t].link,i=this.args[t].setFn):a=r=this.args[t],State.variables.hasOwnProperty("#actions")&&State.variables["#actions"].hasOwnProperty(r)&&State.variables["#actions"][r]||jQuery(Wikifier.createInternalLink(jQuery(document.createElement("li")).appendTo(e),r,null,function(e,t){return function(){State.variables.hasOwnProperty("#actions")||(State.variables["#actions"]={}),State.variables["#actions"][e]=!0,"function"==typeof t&&t()}}(r,i))).addClass("macro-"+this.name).append(n||document.createTextNode(a))}}}),Macro.add(["back","return"],{handler:function(){if(this.args.length>1)return this.error("too many arguments specified, check the documentation for details");var e=-1,t=void 0,r=void 0,a=void 0;if(1===this.args.length&&("object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),this.args[0].hasOwnProperty("link")&&(t=this.args[0].link)):1===this.args[0].count?t=this.args[0].link:(r=this.args[0].text,t=this.args[0].link):1===this.args.length&&(r=this.args[0])),null==t){for(var n=State.length-2;n>=0;--n)if(State.history[n].title!==State.passage){e=n,t=State.history[n].title;break}if(null==t&&"return"===this.name)for(var i=State.expired.length-1;i>=0;--i)if(State.expired[i]!==State.passage){t=State.expired[i];break}}else{if(!Story.has(t))return this.error('passage "'+t+'" does not exist');if("back"===this.name){for(var o=State.length-2;o>=0;--o)if(State.history[o].title===t){e=o;break}if(-1===e)return this.error('cannot find passage "'+t+'" in the current story history')}}if(null==t)return this.error("cannot find passage");var s=void 0;s="back"!==this.name||-1!==e?jQuery(document.createElement("a")).addClass("link-internal").ariaClick({one:!0},"return"===this.name?function(){return Engine.play(t)}:function(){return Engine.goTo(e)}):jQuery(document.createElement("span")).addClass("link-disabled"),s.addClass("macro-"+this.name).append(a||document.createTextNode(r||L10n.get("macro"+this.name.toUpperFirst()+"Text"))).appendTo(this.output)}}),Macro.add("choice",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=State.passage,t=void 0,r=void 0,a=void 0,n=void 0;if(1===this.args.length?"object"===_typeof(this.args[0])?this.args[0].isImage?(a=jQuery(document.createElement("img")).attr("src",this.args[0].source),this.args[0].hasOwnProperty("passage")&&a.attr("data-passage",this.args[0].passage),this.args[0].hasOwnProperty("title")&&a.attr("title",this.args[0].title),this.args[0].hasOwnProperty("align")&&a.attr("align",this.args[0].align),t=this.args[0].link,n=this.args[0].setFn):(r=this.args[0].text,t=this.args[0].link,n=this.args[0].setFn):r=t=this.args[0]:(t=this.args[0],r=this.args[1]),State.variables.hasOwnProperty("#choice")&&State.variables["#choice"].hasOwnProperty(e)&&State.variables["#choice"][e])return void jQuery(document.createElement("span")).addClass("link-disabled macro-"+this.name).attr("tabindex",-1).append(a||document.createTextNode(r)).appendTo(this.output);jQuery(Wikifier.createInternalLink(this.output,t,null,function(){State.variables.hasOwnProperty("#choice")||(State.variables["#choice"]={}),State.variables["#choice"][e]=!0,"function"==typeof n&&n()})).addClass("macro-"+this.name).append(a||document.createTextNode(r))}}),Macro.add(["addclass","toggleclass"],{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("selector"),this.args.length<2&&e.push("class names"),this.error("no "+e.join(" or ")+" specified")}var t=jQuery(this.args[0]);if(0===t.length)return this.error('no elements matched the selector "'+this.args[0]+'"');switch(this.name){case"addclass":t.addClass(this.args[1].trim());break;case"toggleclass":t.toggleClass(this.args[1].trim())}}}),Macro.add("removeclass",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');this.args.length>1?e.removeClass(this.args[1].trim()):e.removeClass()}}),Macro.add("copy",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');jQuery(this.output).append(e.html())}}),Macro.add(["append","prepend","replace"],{tags:null,handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');if(""!==this.payload[0].contents){var t=document.createDocumentFragment();switch(new Wikifier(t,this.payload[0].contents),this.name){case"replace":e.empty();case"append":e.append(t);break;case"prepend":e.prepend(t)}}else"replace"===this.name&&e.empty()}}),Macro.add("remove",{handler:function(){if(0===this.args.length)return this.error("no selector specified");var e=jQuery(this.args[0]);if(0===e.length)return this.error('no elements matched the selector "'+this.args[0]+'"');e.remove()}}),Has.audio){var e=Object.freeze([":not",":all",":looped",":muted",":paused",":playing"]);Macro.add("audio",{handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track or group IDs"),this.args.length<2&&e.push("actions"),this.error("no "+e.join(" or ")+" specified")}var t=Macro.get("cacheaudio").tracks,r=[];try{var a=function e(r){var a=r.id,o=void 0;switch(a){case":all":o=n;break;case":looped":o=n.filter(function(e){return t[e].isLooped()});break;case":muted":o=n.filter(function(e){return t[e].isMuted()});break;case":paused":o=n.filter(function(e){return t[e].isPaused()});break;case":playing":o=n.filter(function(e){return t[e].isPlaying()});break;default:o=":"===a[0]?i[a]:[a]}if(r.hasOwnProperty("not")){var s=r.not.map(function(t){return e(t)}).flatten();o=o.filter(function(e){return!s.includes(e)})}return o},n=Object.freeze(Object.keys(t)),i=Macro.get("cacheaudio").groups;this.self.parseIds(String(this.args[0]).trim()).forEach(function(e){r.push.apply(r,_toConsumableArray(a(e)))}),r.forEach(function(e){if(!t.hasOwnProperty(e))throw new Error('track "'+e+'" does not exist')})}catch(e){return this.error(e.message)}for(var o=this.args.slice(1),s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=void 0,f=5,p=void 0,g=void 0;o.length>0;){var m=o.shift();switch(m){case"play":case"pause":case"stop":s=m;break;case"fadein":s="fade",h=1;break;case"fadeout":s="fade",h=0;break;case"fadeto":if(0===o.length)return this.error("fadeto missing required level value");if(s="fade",g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeto: "+g);break;case"fadeoverto":if(o.length<2){var v=[];return o.length<1&&v.push("seconds"),o.length<2&&v.push("level"),this.error("fadeoverto missing required "+v.join(" and ")+" value"+(v.length>1?"s":""))}if(s="fade",g=o.shift(),f=Number.parseFloat(g),Number.isNaN(f)||!Number.isFinite(f))return this.error("cannot parse fadeoverto: "+g);if(g=o.shift(),h=Number.parseFloat(g),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+g);break;case"volume":if(0===o.length)return this.error("volume missing required level value");if(g=o.shift(),u=Number.parseFloat(g),Number.isNaN(u)||!Number.isFinite(u))return this.error("cannot parse volume: "+g);break;case"mute":case"unmute":l="mute"===m;break;case"time":if(0===o.length)return this.error("time missing required seconds value");if(g=o.shift(),c=Number.parseFloat(g),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse time: "+g);break;case"loop":case"unloop":d="loop"===m;break;case"goto":if(0===o.length)return this.error("goto missing required passage title");if(g=o.shift(),p="object"===(void 0===g?"undefined":_typeof(g))?g.link:g,!Story.has(p))return this.error('passage "'+p+'" does not exist');break;default:return this.error("unknown action: "+m)}}try{r.forEach(function(e){var r=t[e];switch(null!=u&&(r.volume=u),null!=c&&(r.time=c),null!=l&&(r.mute=l),null!=d&&(r.loop=d),null!=p&&r.one("end",function(){return Engine.play(p)}),s){case"play":r.play();break;case"pause":r.pause();break;case"stop":r.stop();break;case"fade":r.fadeWithDuration(f,h)}}),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing audio action: "+e.message)}},parseIds:function(e){for(var t=[],r=/:?[^\s:()]+/g,a=void 0;null!==(a=r.exec(e));){var n=a[0];if(":not"===n){if(0===t.length)throw new Error('invalid negation: no group ID preceded ":not()"');var i=t[t.length-1];if(":"!==i.id[0])throw new Error('invalid negation of track "'+i.id+'": only groups may be negated with ":not()"');var o=function(e,t){var r=/\S/g,a=/[()]/g,n=void 0;if(r.lastIndex=t,null===(n=r.exec(e))||"("!==n[0])throw new Error('invalid ":not()" syntax: missing parentheticals');a.lastIndex=r.lastIndex;for(var i=r.lastIndex,o={str:"",nextMatch:-1},s=1;null!==(n=a.exec(e));)if("("===n[0]?++s:--s,s<1){o.nextMatch=a.lastIndex,o.str=e.slice(i,o.nextMatch-1);break}return o}(e,r.lastIndex);if(-1===o.nextMatch)throw new Error('unknown error parsing ":not()"');r.lastIndex=o.nextMatch,i.not=this.parseIds(o.str)}else t.push({id:n})}return t}}),Macro.add("cacheaudio",{tracks:{},groups:{},handler:function(){if(this.args.length<2){var e=[];return this.args.length<1&&e.push("track ID"),this.args.length<2&&e.push("sources"),this.error("no "+e.join(" or ")+" specified")}var t=String(this.args[0]).trim();if(/^:|\s/.test(t))return this.error('invalid track ID "'+t+'": track IDs may not start with a colon or contain whitespace');var r=/^format:\s*([\w-]+)\s*;\s*(\S.*)$/i,a=void 0;try{a=SimpleAudio.create(this.args.slice(1).map(function(e){var t=r.exec(e);return null===t?e:{format:t[1],src:t[2]}}))}catch(e){return this.error('error during track initialization for "'+t+'": '+e.message)}if(Config.debug&&!a.hasSource())return this.error('no supported audio sources found for "'+t+'"');var n=this.self.tracks;n.hasOwnProperty(t)&&n[t].destroy(),n[t]=a,Config.debug&&this.createDebugView()}}),Macro.add("createaudiogroup",{tags:["track"],handler:function(){if(0===this.args.length)return this.error("no group ID specified");var t=String(this.args[0]).trim();if(/^[^:]|\s/.test(t))return this.error('invalid group ID "'+t+'": group IDs must start with a colon and may not contain whitespace');if(e.includes(t))return this.error('cannot clobber special group ID "'+t+'"');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var r=Macro.get("cacheaudio").tracks,a=[],n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<1)return this.error("no track ID specified");var o=String(this.payload[n].args[0]).trim();if(!r.hasOwnProperty(o))return this.error('track "'+o+'" does not exist');a.push(o),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var s=Macro.get("cacheaudio").groups;s.hasOwnProperty(t)&&delete s[t],s[t]=a,this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("createplaylist",{tags:["track"],lists:{},handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("playlist");if(null!==e.from&&"createplaylist"!==e.from)return this.error("a playlist has already been defined with <<setplaylist>>");var t=Macro.get("cacheaudio").tracks,r=String(this.args[0]).trim();if(/^:|\s/.test(r))return this.error('invalid list ID "'+r+'": list IDs may not start with a colon or contain whitespace');if(1===this.payload.length)return this.error("no tracks defined via <<track>>");Config.debug&&this.debugView.modes({nonvoid:!1,hidden:!0});for(var a=SimpleAudio.createList(),n=1,i=this.payload.length;n<i;++n){if(this.payload[n].args.length<2){var o=[];return this.payload[n].args.length<1&&o.push("track ID"),this.payload[n].args.length<2&&o.push("actions"),this.error("no "+o.join(" or ")+" specified")}var s=String(this.payload[n].args[0]).trim();if(!t.hasOwnProperty(s))return this.error('track "'+s+'" does not exist');for(var u=this.payload[n].args.slice(1),l=!1,c=void 0;u.length>0;){var d=u.shift(),h=void 0;switch(d){case"copy":l=!0;break;case"rate":u.length>0&&u.shift();break;case"volume":if(0===u.length)return this.error("volume missing required level value");if(h=u.shift(),c=Number.parseFloat(h),Number.isNaN(c)||!Number.isFinite(c))return this.error("cannot parse volume: "+h);break;default:return this.error("unknown action: "+d)}}var f=t[s];a.add({copy:l,track:f,volume:null!=c?c:f.volume}),Config.debug&&this.createDebugView(this.payload[n].name,this.payload[n].source).modes({nonvoid:!1,hidden:!0})}var p=this.self.lists;p.hasOwnProperty(r)&&p[r].destroy(),p[r]=a,null===e.from&&(e.from="createplaylist"),this.createDebugView("/"+this.name,"<</"+this.name+">>").modes({nonvoid:!1,hidden:!0})}}),Macro.add("masteraudio",{handler:function(){if(0===this.args.length)return this.error("no actions specified");for(var e=this.args.slice(0),t=!1,r=void 0,a=void 0;e.length>0;){var n=e.shift(),i=void 0;switch(n){case"stop":t=!0;break;case"mute":case"unmute":r="mute"===n;break;case"volume":if(0===e.length)return this.error("volume missing required level value");if(i=e.shift(),a=Number.parseFloat(i),Number.isNaN(a)||!Number.isFinite(a))return this.error("cannot parse volume: "+i);break;default:return this.error("unknown action: "+n)}}try{null!=r&&(SimpleAudio.mute=r),null!=a&&(SimpleAudio.volume=a),t&&SimpleAudio.stop(),Config.debug&&this.createDebugView()}catch(e){return this.error("error executing master audio action: "+e.message)}}}),Macro.add("playlist",{from:null,handler:function(){var e=this.self.from;if(null===e)return this.error("no playlists have been created");var t=void 0,r=void 0;if("createplaylist"===e){if(this.args.length<2){var a=[];return this.args.length<1&&a.push("list ID"),this.args.length<2&&a.push("actions"),this.error("no "+a.join(" or ")+" specified")}var n=Macro.get("createplaylist").lists,i=String(this.args[0]).trim();if(!n.hasOwnProperty(i))return this.error('playlist "'+i+'" does not exist');t=n[i],r=this.args.slice(1)}else{if(0===this.args.length)return this.error("no actions specified");t=Macro.get("setplaylist").list,r=this.args.slice(0)}for(var o=void 0,s=void 0,u=void 0,l=void 0,c=void 0,d=void 0,h=5,f=void 0;r.length>0;){var p=r.shift();switch(p){case"play":case"pause":case"stop":case"skip":o=p;break;case"fadein":o="fade",d=1;break;case"fadeout":o="fade",d=0;break;case"fadeto":if(0===r.length)return this.error("fadeto missing required level value");if(o="fade",f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeto: "+f);break;case"fadeoverto":if(r.length<2){var g=[];return r.length<1&&g.push("seconds"),r.length<2&&g.push("level"),this.error("fadeoverto missing required "+g.join(" and ")+" value"+(g.length>1?"s":""))}if(o="fade",f=r.shift(),h=Number.parseFloat(f),Number.isNaN(h)||!Number.isFinite(h))return this.error("cannot parse fadeoverto: "+f);if(f=r.shift(),d=Number.parseFloat(f),Number.isNaN(d)||!Number.isFinite(d))return this.error("cannot parse fadeoverto: "+f);break;case"volume":if(0===r.length)return this.error("volume missing required level value");if(f=r.shift(),s=Number.parseFloat(f),Number.isNaN(s)||!Number.isFinite(s))return this.error("cannot parse volume: "+f);break;case"mute":case"unmute":u="mute"===p;break;case"loop":case"unloop":l="loop"===p;break;case"shuffle":case"unshuffle":c="shuffle"===p;break;default:return this.error("unknown action: "+p)}}try{switch(null!=s&&(t.volume=s),null!=u&&(t.mute=u),null!=l&&(t.loop=l),null!=c&&(t.shuffle=c),o){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"skip":t.skip();break;case"fade":t.fadeWithDuration(h,d)}Config.debug&&this.createDebugView()}catch(e){return this.error("error playing audio: "+e.message)}}}),Macro.add("removeplaylist",{handler:function(){if(0===this.args.length)return this.error("no list ID specified");var e=Macro.get("createplaylist").lists,t=String(this.args[0]).trim();if(!e.hasOwnProperty(t))return this.error('playlist "'+t+'" does not exist');e[t].destroy(),delete e[t],Config.debug&&this.createDebugView()}}),Macro.add("waitforaudio",{skipArgs:!0,queue:[],handler:function(){function e(){if(0===t.length)return LoadScreen.unlock(r);var a=t.shift();if(a.hasData())return e();a.one("canplay.waitforaudio error.waitforaudio",function(){jQuery(this).off(".waitforaudio"),e()}).load()}var t=this.self.queue,r=void 0;t.length>0||(this.self.fillQueue(t),t.length>0&&(r=LoadScreen.lock(),e()))},fillQueue:function(e){var t=Macro.get("cacheaudio").tracks;Object.keys(t).forEach(function(r){return e.push(t[r])});var r=Macro.get("createplaylist").lists;if(Object.keys(r).map(function(e){return r[e].tracks}).flatten().filter(function(e){return e.copy}).forEach(function(t){return e.push(t.track)}),Macro.has("setplaylist")){var a=Macro.get("setplaylist").list;null!==a&&a.tracks.forEach(function(t){return e.push(t.track)})}}}),Macro.add("setplaylist",{list:null,handler:function(){if(0===this.args.length)return this.error("no track ID(s) specified");var e=Macro.get("playlist");if(null!==e.from&&"setplaylist"!==e.from)return this.error("playlists have already been defined with <<createplaylist>>");var t=this.self,r=Macro.get("cacheaudio").tracks;null!==t.list&&t.list.destroy(),t.list=SimpleAudio.createList();for(var a=0;a<this.args.length;++a){var n=this.args[a];if(!r.hasOwnProperty(n))return this.error('track "'+n+'" does not exist');t.list.add(r[n])}null===e.from&&(e.from="setplaylist"),Config.debug&&this.createDebugView()}}),Macro.add("stopallaudio",{skipArgs:!0,handler:function(){var e=Macro.get("cacheaudio").tracks;Object.keys(e).forEach(function(t){return e[t].stop()}),Config.debug&&this.createDebugView()}})}else Macro.add(["audio","cacheaudio","createaudiogroup","createplaylist","masteraudio","playlist","removeplaylist","waitforaudio","setplaylist","stopallaudio"],{skipArgs:!0,handler:function(){}});Macro.add("goto",{handler:function(){if(0===this.args.length)return this.error("no passage specified");var e=void 0;if(e="object"===_typeof(this.args[0])?this.args[0].link:this.args[0],!Story.has(e))return this.error('passage "'+e+'" does not exist');setTimeout(function(){return Engine.play(e)},Engine.minDomActionDelay)}}),Macro.add("repeat",{isAsync:!0,tags:null,timers:new Set,handler:function(){var e=this;if(0===this.args.length)return this.error("no time value specified");var t=void 0;try{t=Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0]))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var r=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),a=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerInterval(this.createShadowWrapper(function(){var t=document.createDocumentFragment();new Wikifier(t,e.payload[0].contents);var n=a;r&&(n=jQuery(document.createElement("span")).addClass("macro-repeat-insert macro-repeat-in").appendTo(n)),n.append(t),r&&setTimeout(function(){return n.removeClass("macro-repeat-in")},Engine.minDomActionDelay)}),t)},registerInterval:function(e,t){var r=this;if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var a=State.turns,n=this.timers,i=null;i=setInterval(function(){if(a!==State.turns)return clearInterval(i),void n.delete(i);var t=void 0;try{TempState.break=null,TempState.hasOwnProperty("repeatTimerId")&&(t=TempState.repeatTimerId),TempState.repeatTimerId=i,e.call(r)}finally{void 0!==t?TempState.repeatTimerId=t:delete TempState.repeatTimerId,TempState.break=null}},t),n.add(i),prehistory.hasOwnProperty("#repeat-timers-cleanup")||(prehistory["#repeat-timers-cleanup"]=function(e){delete prehistory[e],n.forEach(function(e){return clearInterval(e)}),n.clear()})}}),Macro.add("stop",{skipArgs:!0,handler:function(){if(!TempState.hasOwnProperty("repeatTimerId"))return this.error("must only be used in conjunction with its parent macro <<repeat>>");var e=Macro.get("repeat").timers,t=TempState.repeatTimerId;clearInterval(t),e.delete(t),TempState.break=2,Config.debug&&this.debugView.modes({hidden:!0})}}),Macro.add("timed",{isAsync:!0,tags:["next"],timers:new Set,handler:function(){if(0===this.args.length)return this.error("no time value specified in <<timed>>");var e=[];try{e.push({name:this.name,source:this.source,delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.args[0])),content:this.payload[0].contents})}catch(e){return this.error(e.message+" in <<timed>>")}if(this.payload.length>1){var t=void 0;try{var r=void 0;for(t=1,r=this.payload.length;t<r;++t)e.push({name:this.payload[t].name,source:this.payload[t].source,delay:0===this.payload[t].args.length?e[e.length-1].delay:Math.max(Engine.minDomActionDelay,Util.fromCssTime(this.payload[t].args[0])),content:this.payload[t].contents})}catch(e){return this.error(e.message+" in <<next>> (#"+t+")")}}Config.debug&&this.debugView.modes({block:!0});var a=this.args.length>1&&/^(?:transition|t8n)$/.test(this.args[1]),n=jQuery(document.createElement("span")).addClass("macro-"+this.name).appendTo(this.output);this.self.registerTimeout(this.createShadowWrapper(function(e){var t=document.createDocumentFragment();new Wikifier(t,e.content);var r=n;Config.debug&&"next"===e.name&&(r=jQuery(new DebugView(r[0],"macro",e.name,e.source).output)),a&&(r=jQuery(document.createElement("span")).addClass("macro-timed-insert macro-timed-in").appendTo(r)),r.append(t),a&&setTimeout(function(){return r.removeClass("macro-timed-in")},Engine.minDomActionDelay)}),e)},registerTimeout:function(e,t){if("function"!=typeof e)throw new TypeError("callback parameter must be a function");var r=State.turns,a=this.timers,n=null,i=t.shift(),o=function o(){if(a.delete(n),r===State.turns){var s=i;null!=(i=t.shift())&&(n=setTimeout(o,i.delay),a.add(n)),e.call(this,s)}};n=setTimeout(o,i.delay),a.add(n),prehistory.hasOwnProperty("#timed-timers-cleanup")||(prehistory["#timed-timers-cleanup"]=function(e){delete prehistory[e],a.forEach(function(e){return clearTimeout(e)}),a.clear()})}}),Macro.add("widget",{tags:null,handler:function(){if(0===this.args.length)return this.error("no widget name specified");var e=this.args[0];if(Macro.has(e)){if(!Macro.get(e).isWidget)return this.error('cannot clobber existing macro "'+e+'"');Macro.delete(e)}try{Macro.add(e,{isWidget:!0,handler:function(e){return function(){var t=void 0;try{State.variables.hasOwnProperty("args")&&(t=State.variables.args),State.variables.args=[].concat(_toConsumableArray(this.args)),State.variables.args.raw=this.args.raw,State.variables.args.full=this.args.full,this.addShadow("$args");var r=document.createDocumentFragment(),a=[];if(new Wikifier(r,e),Array.from(r.querySelectorAll(".error")).forEach(function(e){a.push(e.textContent)}),0!==a.length)return this.error("error"+(a.length>1?"s":"")+" within widget contents ("+a.join("; ")+")");this.output.appendChild(r)}catch(e){return this.error("cannot execute widget: "+e.message)}finally{void 0!==t?State.variables.args=t:delete State.variables.args}}}(this.payload[0].contents)}),Config.debug&&this.createDebugView(this.name,this.source+this.payload[0].contents+"<</"+this.name+">>")}catch(t){return this.error('cannot create widget macro "'+e+'": '+t.message)}}})}();var Dialog=function(){function e(){m=function(){var e=void 0;try{var t=document.createElement("p"),r=document.createElement("div");t.style.width="100%",t.style.height="200px",r.style.position="absolute",r.style.left="0px",r.style.top="0px",r.style.width="100px",r.style.height="100px",r.style.visibility="hidden",r.style.overflow="hidden",r.appendChild(t),document.body.appendChild(r);var a=t.offsetWidth;r.style.overflow="auto";var n=t.offsetWidth;a===n&&(n=r.clientWidth),document.body.removeChild(r),e=a-n}catch(e){}return e||17}()
+;var e=jQuery(document.createDocumentFragment()).append('<div id="ui-overlay" class="ui-close"></div><div id="ui-dialog" tabindex="0" role="dialog" aria-labelledby="ui-dialog-title"><div id="ui-dialog-titlebar"><h1 id="ui-dialog-title"></h1><button id="ui-dialog-close" class="ui-close" tabindex="0" aria-label="'+L10n.get("close")+'"></button></div><div id="ui-dialog-body"></div></div>');d=jQuery(e.find("#ui-overlay").get(0)),h=jQuery(e.find("#ui-dialog").get(0)),f=jQuery(e.find("#ui-dialog-title").get(0)),p=jQuery(e.find("#ui-dialog-body").get(0)),e.insertBefore("#store-area")}function t(e){return h.hasClass("open")&&(!e||e.splitOrEmpty(/\s+/).every(function(e){return p.hasClass(e)}))}function r(e,t){return p.empty().removeClass(),null!=t&&p.addClass(t),f.empty().append((null!=e?String(e):"")||" "),p.get(0)}function a(){return p.get(0)}function n(){var e;return(e=p).append.apply(e,arguments),Dialog}function i(){var e;return(e=p).wiki.apply(e,arguments),Dialog}function o(e,t,r,a,n){return jQuery(e).ariaClick(function(e){e.preventDefault(),"function"==typeof r&&r(e),s(t,n),"function"==typeof a&&a(e)})}function s(e,r){var a=jQuery.extend({top:50},e),n=a.top;t()||(g=safeActiveElement()),jQuery(document.documentElement).attr("data-dialog","open"),d.addClass("open"),null!==p[0].querySelector("img")&&p.imagesLoaded().always(function(){return l({data:{top:n}})}),jQuery("body>:not(script,#store-area,#ui-bar,#ui-overlay,#ui-dialog)").attr("tabindex",-3).attr("aria-hidden",!0),jQuery("#ui-bar,#story").find("[tabindex]:not([tabindex^=-])").attr("tabindex",-2).attr("aria-hidden",!0);var i=c(n);return h.css(i).addClass("open").focus(),jQuery(window).on("resize.dialog-resize",null,{top:n},jQuery.throttle(40,l)),Has.mutationObserver?(v=new MutationObserver(function(e){for(var t=0;t<e.length;++t)if("childList"===e[t].type){l({data:{top:n}});break}}),v.observe(p[0],{childList:!0,subtree:!0})):p.on("DOMNodeInserted.dialog-resize DOMNodeRemoved.dialog-resize",null,{top:n},jQuery.throttle(40,l)),jQuery(document).on("click.dialog-close",".ui-close",{closeFn:r},u).on("keypress.dialog-close",".ui-close",function(e){13!==e.which&&32!==e.which||jQuery(this).trigger("click")}),setTimeout(function(){return jQuery.event.trigger(":dialogopen")},Engine.minDomActionDelay),Dialog}function u(e){return jQuery(document).off(".dialog-close"),v?(v.disconnect(),v=null):p.off(".dialog-resize"),jQuery(window).off(".dialog-resize"),h.removeClass("open").css({left:"",right:"",top:"",bottom:""}),jQuery("#ui-bar,#story").find("[tabindex=-2]").removeAttr("aria-hidden").attr("tabindex",0),jQuery("body>[tabindex=-3]").removeAttr("aria-hidden").removeAttr("tabindex"),f.empty(),p.empty().removeClass(),d.removeClass("open"),jQuery(document.documentElement).removeAttr("data-dialog"),null!==g&&(jQuery(g).focus(),g=null),e&&e.data&&"function"==typeof e.data.closeFn&&e.data.closeFn(e),setTimeout(function(){return jQuery.event.trigger(":dialogclose")},Engine.minDomActionDelay),Dialog}function l(e){var t=e&&e.data&&void 0!==e.data.top?e.data.top:50;"block"===h.css("display")&&(h.css({display:"none"}),h.css(jQuery.extend({display:""},c(t))))}function c(e){var t=null!=e?e:50,r=jQuery(window),a={left:"",right:"",top:"",bottom:""};h.css(a);var n=r.width()-h.outerWidth(!0)-1,i=r.height()-h.outerHeight(!0)-1;return n<=32+m&&(i-=m),i<=32+m&&(n-=m),a.left=a.right=n<=32?16:n/2>>0,a.top=i<=32?a.bottom=16:i/2>t?t:a.bottom=i/2>>0,Object.keys(a).forEach(function(e){""!==a[e]&&(a[e]+="px")}),a}var d=null,h=null,f=null,p=null,g=null,m=0,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},isOpen:{value:t},setup:{value:r},body:{value:a},append:{value:n},wiki:{value:i},addClickHandler:{value:o},open:{value:s},close:{value:u},resize:{value:function(e){return l("object"===(void 0===e?"undefined":_typeof(e))?{data:e}:undefined)}}}))}(),Engine=function(){function e(){jQuery("#init-no-js,#init-lacking").remove(),function(){var e=jQuery(document.createDocumentFragment()),t=Story.has("StoryInterface")&&Story.get("StoryInterface").text.trim();if(t){if(UIBar.destroy(),jQuery(document.head).find("#style-core-display").remove(),e.append(t),0===e.find("#passages").length)throw new Error('no element with ID "passages" found within "StoryInterface" special passage')}else e.append('<div id="story" role="main"><div id="passages"></div></div>');e.insertBefore("#store-area")}(),S=new StyleWrapper(function(){return jQuery(document.createElement("style")).attr({id:"style-aria-outlines",type:"text/css"}).appendTo(document.head).get(0)}()),jQuery(document).on("mousedown.aria-outlines keydown.aria-outlines",function(e){return"keydown"===e.type?m():g()})}function t(){if(Story.has("StoryInit"))try{var e=Wikifier.wikifyEval(Story.get("StoryInit").text);if(Config.debug){var t=new DebugView(document.createDocumentFragment(),"special","StoryInit","StoryInit");t.modes({hidden:!0}),t.append(e),k=t.output}}catch(e){console.error(e),Alert.error("StoryInit",e.message)}if(Config.history.maxStates=Math.max(0,Config.history.maxStates),Number.isSafeInteger(Config.history.maxStates)||(Config.history.maxStates=100),1===Config.history.maxStates&&(Config.history.controls=!1),null==Config.passages.start)throw new Error("starting passage not selected");if(!Story.has(Config.passages.start))throw new Error('starting passage ("'+Config.passages.start+'") not found');if(jQuery(document.documentElement).focus(),State.restore())h();else{var r=!0;switch(_typeof(Config.saves.autoload)){case"boolean":Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!Save.autosave.load());break;case"string":"prompt"===Config.saves.autoload&&Save.autosave.ok()&&Save.autosave.has()&&(r=!1,UI.buildDialogAutoload(),UI.open());break;case"function":Save.autosave.ok()&&Save.autosave.has()&&Config.saves.autoload()&&(r=!Save.autosave.load())}r&&f(Config.passages.start)}}function r(){LoadScreen.show(),window.scroll(0,0),State.reset(),jQuery.event.trigger(":enginerestart"),window.location.reload()}function a(){return b}function n(){return b===v.Idle}function i(){return b!==v.Idle}function o(){return b===v.Rendering}function s(){return w}function u(e){var t=State.goTo(e);return t&&h(),t}function l(e){var t=State.go(e);return t&&h(),t}function c(){return l(-1)}function d(){return l(1)}function h(){return f(State.passage,!0)}function f(e,t){var r=e;b=v.Playing,TempState={},State.clearTemporary();var a=void 0,n=void 0;if("function"==typeof Config.navigation.override)try{var i=Config.navigation.override(r);i&&(r=i)}catch(e){}var o=Story.get(r);if(jQuery.event.trigger({type:":passageinit",passage:o}),Object.keys(prehistory).forEach(function(e){"function"==typeof prehistory[e]&&prehistory[e].call(this,e)},o),t||State.create(o.title),w=Util.now(),document.body.className&&(document.body.className=""),Object.keys(predisplay).forEach(function(e){"function"==typeof predisplay[e]&&predisplay[e].call(this,e)},o),Story.has("PassageReady"))try{a=Wikifier.wikifyEval(Story.get("PassageReady").text)}catch(e){console.error(e),Alert.error("PassageReady",e.message)}b=v.Rendering;var s=jQuery(o.render()),u=document.getElementById("passages");if(u.hasChildNodes()&&("number"==typeof Config.passages.transitionOut||"string"==typeof Config.passages.transitionOut&&""!==Config.passages.transitionOut&&""!==Config.transitionEndEventName?[].concat(_toConsumableArray(u.childNodes)).forEach(function(e){var t=jQuery(e);if(e.nodeType===Node.ELEMENT_NODE&&t.hasClass("passage")){if(t.hasClass("passage-out"))return;t.attr("id","out-"+t.attr("id")).addClass("passage-out"),"string"==typeof Config.passages.transitionOut?t.on(Config.transitionEndEventName,function(e){e.originalEvent.propertyName===Config.passages.transitionOut&&t.remove()}):setTimeout(function(){return t.remove()},Math.max(y,Config.passages.transitionOut))}else t.remove()}):jQuery(u).empty()),s.addClass("passage-in").appendTo(u),setTimeout(function(){return s.removeClass("passage-in")},y),Config.passages.displayTitles&&o.title!==Config.passages.start&&(document.title=o.title+" | "+Story.title),window.scroll(0,0),b=v.Playing,Story.has("PassageDone"))try{n=Wikifier.wikifyEval(Story.get("PassageDone").text)}catch(e){console.error(e),Alert.error("PassageDone",e.message)}if(jQuery.event.trigger({type:":passagedisplay",passage:o}),Object.keys(postdisplay).forEach(function(e){"function"==typeof postdisplay[e]&&postdisplay[e].call(this,e)},o),Config.ui.updateStoryElements&&UIBar.setStoryElements(),Config.debug){var l=void 0;null!=a&&(l=new DebugView(document.createDocumentFragment(),"special","PassageReady","PassageReady"),l.modes({hidden:!0}),l.append(a),s.prepend(l.output)),null!=n&&(l=new DebugView(document.createDocumentFragment(),"special","PassageDone","PassageDone"),l.modes({hidden:!0}),l.append(n),s.append(l.output)),1===State.turns&&null!=k&&s.prepend(k)}switch(g(),jQuery("#story").find("a[href]:not(.link-external)").addClass("link-external").end().find("a,link,button,input,select,textarea").not("[tabindex]").attr("tabindex",0),_typeof(Config.saves.autosave)){case"boolean":Config.saves.autosave&&Save.autosave.save();break;case"string":o.tags.includes(Config.saves.autosave)&&Save.autosave.save();break;case"object":Array.isArray(Config.saves.autosave)&&o.tags.some(function(e){return Config.saves.autosave.includes(e)})&&Save.autosave.save()}return jQuery.event.trigger({type:":passageend",passage:o}),b=v.Idle,w=Util.now(),s[0]}function p(e,t,r){var a=!1;switch(r){case undefined:break;case"replace":case"back":a=!0;break;default:throw new Error('Engine.display option parameter called with obsolete value "'+r+'"; please notify the developer')}f(e,a)}function g(){S.set("*:focus{outline:none}")}function m(){S.clear()}var v=Util.toEnum({Idle:"idle",Playing:"playing",Rendering:"rendering"}),y=40,b=v.Idle,w=null,k=null,S=null;return Object.freeze(Object.defineProperties({},{States:{value:v},minDomActionDelay:{value:y},init:{value:e},start:{value:t},restart:{value:r},state:{get:a},isIdle:{value:n},isPlaying:{value:i},isRendering:{value:o},lastPlay:{get:s},goTo:{value:u},go:{value:l},backward:{value:c},forward:{value:d},show:{value:h},play:{value:f},display:{value:p}}))}(),Passage=function(){var e=void 0,t=void 0;e=/^(?:debug|nobr|passage|script|stylesheet|widget|twine\..*)$/i;var r=/(?:\\n|\\t|\\s|\\|\r)/g,a=new RegExp(r.source),n=Object.freeze({"\\n":"\n","\\t":"\t","\\s":"\\","\\":"\\","\r":""});return t=function(e){if(null==e)return"";var t=String(e);return t&&a.test(t)?t.replace(r,function(e){return n[e]}):t},function(){function r(t,a){var n=this;_classCallCheck(this,r),Object.defineProperties(this,{title:{value:Util.unescape(t)},element:{value:a||null},tags:{value:Object.freeze(a&&a.hasAttribute("tags")?a.getAttribute("tags").trim().splitOrEmpty(/\s+/).sort().filter(function(e,t,r){return 0===t||r[t-1]!==e}):[])},_excerpt:{writable:!0,value:null}}),Object.defineProperties(this,{domId:{value:"passage-"+Util.slugify(this.title)},classes:{value:Object.freeze(0===this.tags.length?[]:function(){return n.tags.filter(function(t){return!e.test(t)}).map(function(e){return Util.slugify(e)})}())}})}return _createClass(r,[{key:"description",value:function(){var e=Config.passages.descriptions;if(null!=e)switch(void 0===e?"undefined":_typeof(e)){case"boolean":if(e)return this.title;break;case"object":if(e instanceof Map&&e.has(this.title))return e.get(this.title);if(e.hasOwnProperty(this.title))return e[this.title];break;case"function":var t=e.call(this);if(t)return t;break;default:throw new TypeError("Config.passages.descriptions must be a boolean, object, or function")}return null===this._excerpt&&(this._excerpt=r.getExcerptFromText(this.text)),this._excerpt}},{key:"processText",value:function(){var e=this.text;return this.tags.includes("Twine.image")?e="[img["+e+"]]":(Config.passages.nobr||this.tags.includes("nobr"))&&(e=e.replace(/^\n+|\n+$/g,"").replace(/\n+/g," ")),e}},{key:"render",value:function(){var e=this,t=this.tags.length>0?this.tags.join(" "):null,a=document.createElement("div");return jQuery(a).attr({id:this.domId,"data-passage":this.title,"data-tags":t}).addClass("passage "+this.className),jQuery(document.body).attr("data-tags",t).addClass(this.className),jQuery(document.documentElement).attr("data-tags",t),jQuery.event.trigger({type:":passagestart",content:a,passage:this}),Object.keys(prerender).forEach(function(t){"function"==typeof prerender[t]&&prerender[t].call(e,a,t)}),Story.has("PassageHeader")&&new Wikifier(a,Story.get("PassageHeader").processText()),new Wikifier(a,this.processText()),Story.has("PassageFooter")&&new Wikifier(a,Story.get("PassageFooter").processText()),jQuery.event.trigger({type:":passagerender",content:a,passage:this}),Object.keys(postrender).forEach(function(t){"function"==typeof postrender[t]&&postrender[t].call(e,a,t)}),this._excerpt=r.getExcerptFromNode(a),a}},{key:"className",get:function(){return this.classes.join(" ")}},{key:"text",get:function(){if(null==this.element){var e=Util.escape(this.title);return'<span class="error" title="'+e+'">'+L10n.get("errorTitle")+": "+L10n.get("errorNonexistentPassage",{passage:e})+"</span>"}return t(this.element.textContent)}}],[{key:"getExcerptFromNode",value:function(e,t){if(!e.hasChildNodes())return"";var r=e.textContent.trim();if(""!==r){var a=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})");r=r.replace(/\s+/g," ").match(a)}return r?r[1]+"…":"…"}},{key:"getExcerptFromText",value:function(e,t){if(""===e)return"";var r=new RegExp("(\\S+(?:\\s+\\S+){0,"+(t>0?t-1:7)+"})"),a=e.replace(/<<.*?>>/g," ").replace(/<.*?>/g," ").trim().replace(/^\s*\|.*\|.*?$/gm,"").replace(/\[[<>]?img\[[^\]]*\]\]/g,"").replace(/\[\[([^|\]]*)(?:|[^\]]*)?\]\]/g,"$1").replace(/^\s*!+(.*?)$/gm,"$1").replace(/'{2}|\/{2}|_{2}|@{2}/g,"").trim().replace(/\s+/g," ").match(r);return a?a[1]+"…":"…"}}]),r}()}(),Save=function(){function e(){if("cookie"===storage.name)return a(),Config.saves.autosave=undefined,Config.saves.slots=0,!1;Config.saves.slots=Math.max(0,Config.saves.slots),Number.isSafeInteger(Config.saves.slots)||(Config.saves.slots=8);var e=r(),t=!1;Array.isArray(e)&&(e={autosave:null,slots:e},t=!0),Config.saves.slots!==e.slots.length&&(Config.saves.slots<e.slots.length?(e.slots.reverse(),e.slots=e.slots.filter(function(e){return!(null===e&&this.count>0)||(--this.count,!1)},{count:e.slots.length-Config.saves.slots}),e.slots.reverse()):Config.saves.slots>e.slots.length&&x(e.slots,Config.saves.slots-e.slots.length),t=!0),O(e.autosave)&&(t=!0);for(var n=0;n<e.slots.length;++n)O(e.slots[n])&&(t=!0);return j(e)&&(storage.delete("saves"),t=!1),t&&C(e),P=e.slots.length-1,!0}function t(){return{autosave:null,slots:x([],Config.saves.slots)}}function r(){var e=storage.get("saves");return null===e?t():e}function a(){return storage.delete("saves"),!0}function n(){return i()||d()}function i(){return"cookie"!==storage.name&&void 0!==Config.saves.autosave}function o(){return null!==r().autosave}function s(){return r().autosave}function u(){var e=r();return null!==e.autosave&&A(e.autosave)}function l(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return!1;var a=r(),n={title:e||Story.get(State.passage).description(),date:Date.now()};return null!=t&&(n.metadata=t),a.autosave=T(n),C(a)}function c(){var e=r();return e.autosave=null,C(e)}function d(){return"cookie"!==storage.name&&-1!==P}function h(){return P+1}function f(){if(!d())return 0;for(var e=r(),t=0,a=0,n=e.slots.length;a<n;++a)null!==e.slots[a]&&++t;return t}function p(){return 0===f()}function g(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])}function m(e){if(e<0||e>P)return null;var t=r();return e>=t.slots.length?null:t.slots[e]}function v(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length||null===t.slots[e])&&A(t.slots[e])}function y(e,t,a){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),!1;if(e<0||e>P)return!1;var n=r();if(e>=n.slots.length)return!1;var i={title:t||Story.get(State.passage).description(),date:Date.now()};return null!=a&&(i.metadata=a),n.slots[e]=T(i),C(n)}function b(e){if(e<0||e>P)return!1;var t=r();return!(e>=t.slots.length)&&(t.slots[e]=null,C(t))}function w(e,t){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return void UI.alert(L10n.get("savesDisallowed"));var r=null==e?Story.domId:Util.slugify(e),a=r+"-"+function(){var e=new Date,t=e.getMonth()+1,r=e.getDate(),a=e.getHours(),n=e.getMinutes(),i=e.getSeconds();return t<10&&(t="0"+t),r<10&&(r="0"+r),a<10&&(a="0"+a),n<10&&(n="0"+n),i<10&&(i="0"+i),""+e.getFullYear()+t+r+"-"+a+n+i}()+".save",n=null==t?{}:{metadata:t},i=LZString.compressToBase64(JSON.stringify(T(n)));saveAs(new Blob([i],{type:"text/plain;charset=UTF-8"}),a)}function k(e){var t=e.target.files[0],r=new FileReader;jQuery(r).on("load",function(e){var r=e.currentTarget;if(r.result){var a=void 0;try{a=JSON.parse(/\.json$/i.test(t.name)||/^\{/.test(r.result)?r.result:LZString.decompressFromBase64(r.result))}catch(e){}A(a)}}),r.readAsText(t)}function S(e){if("function"==typeof Config.saves.isAllowed&&!Config.saves.isAllowed())return UI.alert(L10n.get("savesDisallowed")),null;var t=null==e?{}:{metadata:e};return LZString.compressToBase64(JSON.stringify(T(t)))}function E(e){var t=void 0;try{t=JSON.parse(LZString.decompressFromBase64(e))}catch(e){}return A(t)?t.metadata:null}function x(e,t){for(var r=0;r<t;++r)e.push(null);return e}function j(e){for(var t=e.slots,r=!0,a=0,n=t.length;a<n;++a)if(null!==t[a]){r=!1;break}return null===e.autosave&&r}function C(e){return j(e)?(storage.delete("saves"),!0):storage.set("saves",e)}function O(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))return!1;var t=!1;return e.hasOwnProperty("state")&&e.state.hasOwnProperty("delta")&&e.state.hasOwnProperty("index")||(e.hasOwnProperty("data")?(delete e.mode,e.state={delta:State.deltaEncode(e.data)},delete e.data):e.state.hasOwnProperty("delta")?e.state.hasOwnProperty("index")||delete e.state.mode:(delete e.state.mode,e.state.delta=State.deltaEncode(e.state.history),delete e.state.history),e.state.index=e.state.delta.length-1,t=!0),e.state.hasOwnProperty("rseed")&&(e.state.seed=e.state.rseed,delete e.state.rseed,e.state.delta.forEach(function(e,t,r){r[t].hasOwnProperty("rcount")&&(r[t].pull=r[t].rcount,delete r[t].rcount)}),t=!0),(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired||e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.hasOwnProperty("expired")&&"number"==typeof e.state.expired&&delete e.state.expired,(e.state.hasOwnProperty("unique")||e.state.hasOwnProperty("last"))&&(e.state.expired=[],e.state.hasOwnProperty("unique")&&(e.state.expired.push(e.state.unique),delete e.state.unique),e.state.hasOwnProperty("last")&&(e.state.expired.push(e.state.last),delete e.state.last)),t=!0),t}function T(e){if(null!=e&&"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("supplemental parameter must be an object");var t=Object.assign({},e,{id:Config.saves.id,state:State.marshalForSave()});return Config.saves.version&&(t.version=Config.saves.version),"function"==typeof Config.saves.onSave&&Config.saves.onSave(t),t.state.delta=State.deltaEncode(t.state.history),delete t.state.history,t}function A(e){try{if(O(e),!e||!e.hasOwnProperty("id")||!e.hasOwnProperty("state"))throw new Error(L10n.get("errorSaveMissingData"));if(e.state.history=State.deltaDecode(e.state.delta),delete e.state.delta,"function"==typeof Config.saves.onLoad&&Config.saves.onLoad(e),e.id!==Config.saves.id)throw new Error(L10n.get("errorSaveIdMismatch"));State.unmarshalForSave(e.state),Engine.show()}catch(e){return UI.alert(e.message.toUpperFirst()+".</p><p>"+L10n.get("aborting")+"."),!1}return!0}var P=-1;return Object.freeze(Object.defineProperties({},{init:{value:e},get:{value:r},clear:{value:a},ok:{value:n},autosave:{value:Object.freeze(Object.defineProperties({},{ok:{value:i},has:{value:o},get:{value:s},load:{value:u},save:{value:l},delete:{value:c}}))},slots:{value:Object.freeze(Object.defineProperties({},{ok:{value:d},length:{get:h},isEmpty:{value:p},count:{value:f},has:{value:g},get:{value:m},load:{value:v},save:{value:y},delete:{value:b}}))},export:{value:w},import:{value:k},serialize:{value:S},deserialize:{value:E}}))}(),Setting=function(){function e(){if(storage.has("options")){var e=storage.get("options");null!==e&&(window.SugarCube.settings=settings=Object.assign(t(),e)),r(),storage.delete("options")}a(),g.forEach(function(e){if(e.hasOwnProperty("onInit")){var t={name:e.name,value:settings[e.name],default:e.default};e.hasOwnProperty("list")&&(t.list=e.list),e.onInit.call(t)}})}function t(){return Object.create(null)}function r(){var e=t();return Object.keys(settings).length>0&&g.filter(function(e){return e.type!==m.Header&&settings[e.name]!==e.default}).forEach(function(t){return e[t.name]=settings[t.name]}),0===Object.keys(e).length?(storage.delete("settings"),!0):storage.set("settings",e)}function a(){var e=t(),r=storage.get("settings")||t();g.filter(function(e){return e.type!==m.Header}).forEach(function(t){return e[t.name]=t.default}),window.SugarCube.settings=settings=Object.assign(e,r)}function n(){return window.SugarCube.settings=settings=t(),storage.delete("settings"),!0}function i(e){if(0===arguments.length)n(),a();else{if(null==e||!h(e))throw new Error('nonexistent setting "'+e+'"');var t=f(e);t.type!==m.Header&&(settings[e]=t.default)}return r()}function o(e,t){g.forEach(e,t)}function s(e,t,r){if(arguments.length<3){var a=[];throw arguments.length<1&&a.push("type"),arguments.length<2&&a.push("name"),arguments.length<3&&a.push("definition"),new Error("missing parameters, no "+a.join(" or ")+" specified")}if("object"!==(void 0===r?"undefined":_typeof(r)))throw new TypeError("definition parameter must be an object");if(h(t))throw new Error('cannot clobber existing setting "'+t+'"');var n={type:e,name:t,label:null==r.label?"":String(r.label).trim()};switch(e){case m.Header:break;case m.Toggle:n.default=!!r.default;break;case m.List:if(!r.hasOwnProperty("list"))throw new Error("no list specified");if(!Array.isArray(r.list))throw new TypeError("list must be an array");if(0===r.list.length)throw new Error("list must not be empty");if(n.list=Object.freeze(r.list),null==r.default)n.default=r.list[0];else{var i=r.list.indexOf(r.default);if(-1===i)throw new Error("list does not contain default");n.default=r.list[i]}break;default:throw new Error("unknown Setting type: "+e)}"function"==typeof r.onInit&&(n.onInit=Object.freeze(r.onInit)),"function"==typeof r.onChange&&(n.onChange=Object.freeze(r.onChange)),g.push(Object.freeze(n))}function u(e,t){s(m.Header,e,{label:t})}function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.Toggle].concat(t))}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s.apply(undefined,[m.List].concat(t))}function d(){return 0===g.length}function h(e){return g.some(function(t){return t.name===e})}function f(e){return g.find(function(t){return t.name===e})}function p(e){h(e)&&delete settings[e];for(var t=0;t<g.length;++t)if(g[t].name===e){g.splice(t,1),p(e);break}}var g=[],m=Util.toEnum({Header:0,Toggle:1,List:2});return Object.freeze(Object.defineProperties({},{Types:{value:m},init:{value:e},create:{value:t},save:{value:r},load:{value:a},clear:{value:n},reset:{value:i},forEach:{value:o},add:{value:s},addHeader:{value:u},addToggle:{value:l},addList:{value:c},isEmpty:{value:d},has:{value:h},get:{value:f},delete:{value:p}}))}(),Story=function(){function e(){function e(e){if(e.tags.includesAny(a))throw new Error('starting passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}function t(e){if(n.includes(e.title)&&e.tags.includesAny(a))throw new Error('special passage "'+e.title+'" contains illegal tags; invalid: "'+e.tags.filter(function(e){return a.includes(e)}).sort().join('", "')+'"')}var a=["widget"],n=["PassageDone","PassageFooter","PassageHeader","PassageReady","StoryAuthor","StoryBanner","StoryCaption","StoryInit","StoryMenu","StoryShare","StorySubtitle"],i=function(e){var t=[].concat(a),r=[];if(e.tags.forEach(function(e){t.includes(e)&&r.push.apply(r,_toConsumableArray(t.delete(e)))}),r.length>1)throw new Error('code passage "'+e.title+'" contains multiple code tags; invalid: "'+r.sort().join('", "')+'"')};if(a.unshift("script","stylesheet"),n.push("StoryTitle"),Config.passages.start=function(){return Config.debug=!0,"START_AT"}(),jQuery("#store-area").children(':not([tags~="Twine.private"],[tags~="annotation"])').each(function(){var r=jQuery(this),a=new Passage(r.attr("tiddler"),this);a.title===Config.passages.start?(e(a),c[a.title]=a):a.tags.includes("stylesheet")?(i(a),d.push(a)):a.tags.includes("script")?(i(a),h.push(a)):a.tags.includes("widget")?(i(a),f.push(a)):(t(a),c[a.title]=a)}),!c.hasOwnProperty("StoryTitle"))throw new Error('cannot find the "StoryTitle" special passage');var o=document.createDocumentFragment();new Wikifier(o,c.StoryTitle.processText().trim()),r(o.textContent.trim()),Config.saves.id=Story.domId}function t(){!function(){var e=document.createElement("style");new StyleWrapper(e).add(d.map(function(e){return e.text.trim()}).join("\n")),jQuery(e).appendTo(document.head).attr({id:"style-story",type:"text/css"})}();for(var e=0;e<h.length;++e)try{Scripting.evalJavaScript(h[e].text)}catch(t){console.error(t),Alert.error(h[e].title,"object"===(void 0===t?"undefined":_typeof(t))?t.message:t)}for(var t=0;t<f.length;++t)try{Wikifier.wikifyEval(f[t].processText())}catch(e){console.error(e),Alert.error(f[t].title,"object"===(void 0===e?"undefined":_typeof(e))?e.message:e)}}function r(e){if(null==e||""===e)throw new Error("story title cannot be null or empty");document.title=p=Util.unescape(e),m=Util.slugify(p)}function a(){return p}function n(){return m}function i(){return g}function o(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r);case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.has title parameter cannot be "+t)}function s(e){var t=void 0===e?"undefined":_typeof(e);switch(t){case"number":case"string":var r=String(e);return c.hasOwnProperty(r)?c[r]:new Passage(r||"(unknown)");case"boolean":case"function":t="a "+t;break;case"undefined":break;default:t=null===e?"null":"an "+t}throw new TypeError("Story.get title parameter cannot be "+t)}function u(e,t){for(var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"title",a=Object.keys(c),n=[],i=0;i<a.length;++i){var o=c[a[i]];if(o.hasOwnProperty(e))switch(_typeof(o[e])){case"undefined":break;case"object":for(var s=0,u=o[e].length;s<u;++s)if(o[e][s]==t){n.push(o);break}break;default:o[e]==t&&n.push(o)}}return n.sort(function(e,t){return e[r]==t[r]?0:e[r]<t[r]?-1:1}),n}function l(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"title";if("function"!=typeof e)throw new Error("Story.lookupWith filter parameter must be a function");for(var r=Object.keys(c),a=[],n=0;n<r.length;++n){var i=c[r[n]];e(i)&&a.push(i)}return a.sort(function(e,r){return e[t]==r[t]?0:e[t]<r[t]?-1:1}),a}var c={},d=[],h=[],f=[],p="",g="",m="";return Object.freeze(Object.defineProperties({},{passages:{value:c},styles:{value:d},scripts:{value:h},widgets:{value:f},load:{value:e},init:{value:t},title:{get:a},domId:{get:n},ifId:{get:i},has:{value:o},get:{value:s},lookup:{value:u},lookupWith:{value:l}}))}(),UI=function(){function e(e,t){var r=t,a=Config.debug,n=Config.cleanupWikifierOutput;Config.debug=!1,Config.cleanupWikifierOutput=!1;try{null==r&&(r=document.createElement("ul"));var i=document.createDocumentFragment();new Wikifier(i,Story.get(e).processText().trim());var o=[].concat(_toConsumableArray(i.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(o.length>0)throw new Error(o.join("; "));for(;i.hasChildNodes();){var s=i.firstChild;if(s.nodeType===Node.ELEMENT_NODE&&"A"===s.nodeName.toUpperCase()){var u=document.createElement("li");r.appendChild(u),u.appendChild(s)}else i.removeChild(s)}}finally{Config.cleanupWikifierOutput=n,Config.debug=a}return r}function t(e){jQuery(Dialog.setup("Alert","alert")).append("<p>"+e+'</p><ul class="buttons"><li><button id="alert-ok" class="ui-close">'+L10n.get(["alertOk","ok"])+"</button></li></ul>");for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];Dialog.open.apply(Dialog,r)}function r(){u(),Dialog.open.apply(Dialog,arguments)}function a(){l(),Dialog.open.apply(Dialog,arguments)}function n(){c(),Dialog.open.apply(Dialog,arguments)}function i(){d(),Dialog.open.apply(Dialog,arguments)}function o(){h(),Dialog.open.apply(Dialog,arguments)}function s(){return jQuery(Dialog.setup(L10n.get("autoloadTitle"),"autoload")).append("<p>"+L10n.get("autoloadPrompt")+'</p><ul class="buttons"><li><button id="autoload-ok" class="ui-close">'+L10n.get(["autoloadOk","ok"])+'</button></li><li><button id="autoload-cancel" class="ui-close">'+L10n.get(["autoloadCancel","cancel"])+"</button></li></ul>"),jQuery(document).one("click.autoload",".ui-close",function(e){var t="autoload-ok"===e.target.id;jQuery(document).one(":dialogclose",function(){t&&Save.autosave.load()||Engine.play(Config.passages.start)})}),!0}function u(){var e=document.createElement("ul");jQuery(Dialog.setup(L10n.get("jumptoTitle"),"jumpto list")).append(e);for(var t=State.expired.length,r=State.size-1;r>=0;--r)if(r!==State.activeIndex){var a=Story.get(State.history[r].title);a&&a.tags.includes("bookmark")&&jQuery(document.createElement("li")).append(jQuery(document.createElement("a")).ariaClick({one:!0},function(e){return function(){return jQuery(document).one(":dialogclose",function(){return Engine.goTo(e)})}}(r)).addClass("ui-close").text(L10n.get("jumptoTurn")+" "+(t+r+1)+": "+a.description())).appendTo(e)}e.hasChildNodes()||jQuery(e).append("<li><a><em>"+L10n.get("jumptoUnavailable")+"</em></a></li>")}function l(){return jQuery(Dialog.setup(L10n.get("restartTitle"),"restart")).append("<p>"+L10n.get("restartPrompt")+'</p><ul class="buttons"><li><button id="restart-ok">'+L10n.get(["restartOk","ok"])+'</button></li><li><button id="restart-cancel" class="ui-close">'+L10n.get(["restartCancel","cancel"])+"</button></li></ul>").find("#restart-ok").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){return Engine.restart()}),Dialog.close()}),!0}function c(){function e(e,t,r,a){var n=jQuery(document.createElement("button")).attr("id","saves-"+e).html(r);return t&&n.addClass(t),a?n.ariaClick(a):n.prop("disabled",!0),jQuery(document.createElement("li")).append(n)}var r=jQuery(Dialog.setup(L10n.get("savesTitle"),"saves")),a=Save.ok();if(a&&r.append(function(){function e(e,t,r,a,n){var i=jQuery(document.createElement("button")).attr("id","saves-"+e+"-"+a).addClass(e).html(r);return t&&i.addClass(t),n?"auto"===a?i.ariaClick({label:r+" "+L10n.get("savesLabelAuto")},function(){return n()}):i.ariaClick({label:r+" "+L10n.get("savesLabelSlot")+" "+(a+1)},function(){return n(a)}):i.prop("disabled",!0),i}var t=Save.get(),r=jQuery(document.createElement("tbody"));if(Save.autosave.ok()){var a=jQuery(document.createElement("td")),n=jQuery(document.createElement("td")),i=jQuery(document.createElement("td")),o=jQuery(document.createElement("td"));jQuery(document.createElement("b")).attr({title:L10n.get("savesLabelAuto"),"aria-label":L10n.get("savesLabelAuto")}).text("A").appendTo(a),t.autosave?(n.append(e("load","ui-close",L10n.get("savesLabelLoad"),"auto",function(){jQuery(document).one(":dialogclose",function(){return Save.autosave.load()})})),jQuery(document.createElement("div")).text(t.autosave.title).appendTo(i),
+jQuery(document.createElement("div")).addClass("datestamp").html(t.autosave.date?L10n.get("savesSavedOn")+" "+new Date(t.autosave.date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(i),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto",function(){Save.autosave.delete(),c()}))):(n.append(e("load",null,L10n.get("savesLabelLoad"),"auto")),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(i),i.addClass("empty"),o.append(e("delete",null,L10n.get("savesLabelDelete"),"auto"))),jQuery(document.createElement("tr")).append(a).append(n).append(i).append(o).appendTo(r)}for(var s=0,u=t.slots.length;s<u;++s){var l=jQuery(document.createElement("td")),d=jQuery(document.createElement("td")),h=jQuery(document.createElement("td")),f=jQuery(document.createElement("td"));l.append(document.createTextNode(s+1)),t.slots[s]?(d.append(e("load","ui-close",L10n.get("savesLabelLoad"),s,function(e){jQuery(document).one(":dialogclose",function(){return Save.slots.load(e)})})),jQuery(document.createElement("div")).text(t.slots[s].title).appendTo(h),jQuery(document.createElement("div")).addClass("datestamp").html(t.slots[s].date?L10n.get("savesSavedOn")+" "+new Date(t.slots[s].date).toLocaleString():L10n.get("savesSavedOn")+" <em>"+L10n.get("savesUnknownDate")+"</em>").appendTo(h),f.append(e("delete",null,L10n.get("savesLabelDelete"),s,function(e){Save.slots.delete(e),c()}))):(d.append(e("save","ui-close",L10n.get("savesLabelSave"),s,Save.slots.save)),jQuery(document.createElement("em")).text(L10n.get("savesEmptySlot")).appendTo(h),h.addClass("empty"),f.append(e("delete",null,L10n.get("savesLabelDelete"),s))),jQuery(document.createElement("tr")).append(l).append(d).append(h).append(f).appendTo(r)}return jQuery(document.createElement("table")).attr("id","saves-list").append(r)}()),a||Has.fileAPI){var n=jQuery(document.createElement("ul")).addClass("buttons").appendTo(r);return Has.fileAPI&&(n.append(e("export","ui-close",L10n.get("savesLabelExport"),function(){return Save.export()})),n.append(e("import",null,L10n.get("savesLabelImport"),function(){return r.find("#saves-import-file").trigger("click")})),jQuery(document.createElement("input")).css({display:"block",visibility:"hidden",position:"fixed",left:"-9999px",top:"-9999px",width:"1px",height:"1px"}).attr({type:"file",id:"saves-import-file",tabindex:-1,"aria-hidden":!0}).on("change",function(e){jQuery(document).one(":dialogclose",function(){return Save.import(e)}),Dialog.close()}).appendTo(r)),a&&n.append(e("clear",null,L10n.get("savesLabelClear"),Save.autosave.has()||!Save.slots.isEmpty()?function(){Save.clear(),c()}:null)),!0}return t(L10n.get("savesIncapable")),!1}function d(){var e=jQuery(Dialog.setup(L10n.get("settingsTitle"),"settings"));return Setting.forEach(function(t){if(t.type===Setting.Types.Header){var r=t.name,a=Util.slugify(r),n=jQuery(document.createElement("div")),i=jQuery(document.createElement("h2")),o=jQuery(document.createElement("p"));return n.attr("id","header-body-"+a).append(i).append(o).appendTo(e),i.attr("id","header-heading-"+a).wiki(r),void o.attr("id","header-label-"+a).wiki(t.label)}var s=t.name,u=Util.slugify(s),l=jQuery(document.createElement("div")),c=jQuery(document.createElement("label")),d=jQuery(document.createElement("div")),h=void 0;switch(l.attr("id","setting-body-"+u).append(c).append(d).appendTo(e),c.attr({id:"setting-label-"+u,for:"setting-control-"+u}).wiki(t.label),null==settings[s]&&(settings[s]=t.default),t.type){case Setting.Types.Toggle:h=jQuery(document.createElement("button")),settings[s]?h.addClass("enabled").text(L10n.get("settingsOn")):h.text(L10n.get("settingsOff")),h.ariaClick(function(){settings[s]?(jQuery(this).removeClass("enabled").text(L10n.get("settingsOff")),settings[s]=!1):(jQuery(this).addClass("enabled").text(L10n.get("settingsOn")),settings[s]=!0),Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default})});break;case Setting.Types.List:h=jQuery(document.createElement("select"));for(var f=0,p=t.list.length;f<p;++f)jQuery(document.createElement("option")).val(f).text(t.list[f]).appendTo(h);h.val(t.list.indexOf(settings[s])).attr("tabindex",0).on("change",function(){settings[s]=t.list[Number(this.value)],Setting.save(),t.hasOwnProperty("onChange")&&t.onChange.call({name:s,value:settings[s],default:t.default,list:t.list})})}h.attr("id","setting-control-"+u).appendTo(d)}),e.append('<ul class="buttons"><li><button id="settings-ok" class="ui-close">'+L10n.get(["settingsOk","ok"])+'</button></li><li><button id="settings-reset">'+L10n.get("settingsReset")+"</button></li></ul>").find("#settings-reset").ariaClick({one:!0},function(){jQuery(document).one(":dialogclose",function(){Setting.reset(),window.location.reload()}),Dialog.close()}),!0}function h(){try{jQuery(Dialog.setup(L10n.get("shareTitle"),"share list")).append(e("StoryShare"))}catch(e){return console.error(e),Alert.error("StoryShare",e.message),!1}return!0}return Object.freeze(Object.defineProperties({},{assembleLinkList:{value:e},alert:{value:t},jumpto:{value:r},restart:{value:a},saves:{value:n},settings:{value:i},share:{value:o},buildAutoload:{value:s},buildJumpto:{value:u},buildRestart:{value:l},buildSaves:{value:c},buildSettings:{value:d},buildShare:{value:h},stow:{value:function(){return UIBar.stow()}},unstow:{value:function(){return UIBar.unstow()}},setStoryElements:{value:function(){return UIBar.setStoryElements()}},isOpen:{value:function(){return Dialog.isOpen.apply(Dialog,arguments)}},body:{value:function(){return Dialog.body()}},setup:{value:function(){return Dialog.setup.apply(Dialog,arguments)}},addClickHandler:{value:function(){return Dialog.addClickHandler.apply(Dialog,arguments)}},open:{value:function(){return Dialog.open.apply(Dialog,arguments)}},close:{value:function(){return Dialog.close.apply(Dialog,arguments)}},resize:{value:function(){return Dialog.resize()}},buildDialogAutoload:{value:s},buildDialogJumpto:{value:u},buildDialogRestart:{value:l},buildDialogSaves:{value:c},buildDialogSettings:{value:d},buildDialogShare:{value:h},buildLinkListFromPassage:{value:e}}))}(),UIBar=function(){function e(){o||document.getElementById("ui-bar")||(!function(){var e=L10n.get("uiBarToggle"),t=L10n.get("uiBarBackward"),r=L10n.get("uiBarJumpto"),a=L10n.get("uiBarForward");jQuery(document.createDocumentFragment()).append('<div id="ui-bar"><div id="ui-bar-tray"><button id="ui-bar-toggle" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><div id="ui-bar-history"><button id="history-backward" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="history-jumpto" tabindex="0" title="'+r+'" aria-label="'+r+'"></button><button id="history-forward" tabindex="0" title="'+a+'" aria-label="'+a+'"></button></div></div><div id="ui-bar-body"><header id="title" role="banner"><div id="story-banner"></div><h1 id="story-title"></h1><div id="story-subtitle"></div><div id="story-title-separator"></div><p id="story-author"></p></header><div id="story-caption"></div><nav id="menu" role="navigation"><ul id="menu-story"></ul><ul id="menu-core"><li id="menu-item-saves"><a tabindex="0">'+L10n.get("savesTitle")+'</a></li><li id="menu-item-settings"><a tabindex="0">'+L10n.get("settingsTitle")+'</a></li><li id="menu-item-restart"><a tabindex="0">'+L10n.get("restartTitle")+'</a></li><li id="menu-item-share"><a tabindex="0">'+L10n.get("shareTitle")+"</a></li></ul></nav></div></div>").insertBefore("#store-area")}(),jQuery(document).on(":historyupdate.ui-bar",function(e,t){return function(){e.prop("disabled",State.length<2),t.prop("disabled",State.length===State.size)}}(jQuery("#history-backward"),jQuery("#history-forward"))))}function t(){if(!o){var e=jQuery("#ui-bar");("boolean"==typeof Config.ui.stowBarInitially?Config.ui.stowBarInitially:jQuery(window).width()<=Config.ui.stowBarInitially)&&function(){var t=jQuery(e).add("#story");t.addClass("no-transition"),e.addClass("stowed"),setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}(),jQuery("#ui-bar-toggle").ariaClick({label:L10n.get("uiBarToggle")},function(){return e.toggleClass("stowed")}),Config.history.controls?(jQuery("#history-backward").prop("disabled",State.length<2).ariaClick({label:L10n.get("uiBarBackward")},function(){return Engine.backward()}),Story.lookup("tags","bookmark").length>0?jQuery("#history-jumpto").ariaClick({label:L10n.get("uiBarJumpto")},function(){return UI.jumpto()}):jQuery("#history-jumpto").remove(),jQuery("#history-forward").prop("disabled",State.length===State.size).ariaClick({label:L10n.get("uiBarForward")},function(){return Engine.forward()})):jQuery("#ui-bar-history").remove(),setPageElement("story-title","StoryTitle",Story.title),Story.has("StoryCaption")||jQuery("#story-caption").remove(),Story.has("StoryMenu")||jQuery("#menu-story").remove(),Config.ui.updateStoryElements||i(),Dialog.addClickHandler("#menu-item-saves a",null,UI.buildSaves).text(L10n.get("savesTitle")),Setting.isEmpty()?jQuery("#menu-item-settings").remove():Dialog.addClickHandler("#menu-item-settings a",null,UI.buildSettings).text(L10n.get("settingsTitle")),Dialog.addClickHandler("#menu-item-restart a",null,UI.buildRestart).text(L10n.get("restartTitle")),Story.has("StoryShare")?Dialog.addClickHandler("#menu-item-share a",null,UI.buildShare).text(L10n.get("shareTitle")):jQuery("#menu-item-share").remove()}}function r(){o||(jQuery(document).off(".ui-bar"),jQuery("#ui-bar").remove(),jQuery(document.head).find("#style-ui-bar").remove(),Config.ui.updateStoryElements=!1,o=!0)}function a(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.addClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function n(e){if(!o){var t=jQuery("#ui-bar");e&&t.addClass("no-transition"),t.removeClass("stowed"),e&&setTimeout(function(){return t.removeClass("no-transition")},Engine.minDomActionDelay)}}function i(){if(!o){setPageElement("story-banner","StoryBanner"),setPageElement("story-subtitle","StorySubtitle"),setPageElement("story-author","StoryAuthor"),setPageElement("story-caption","StoryCaption");var e=document.getElementById("menu-story");if(null!==e&&(jQuery(e).empty(),Story.has("StoryMenu")))try{UI.assembleLinkList("StoryMenu",e)}catch(e){console.error(e),Alert.error("StoryMenu",e.message)}}}var o=!1;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},destroy:{value:r},stow:{value:a},unstow:{value:n},setStoryElements:{value:i}}))}(),DebugBar=function(){function e(){var e=L10n.get("debugBarAddWatch"),t=L10n.get("debugBarWatchAll"),n=L10n.get("debugBarWatchNone"),o=L10n.get("debugBarWatchToggle"),d=L10n.get("debugBarViewsToggle"),h=jQuery(document.createDocumentFragment()).append('<div id="debug-bar"><div id="debug-bar-watch" aria-hidden="true" hidden="hidden"><div>'+L10n.get("debugBarNoWatches")+'</div>></div><div><button id="debug-bar-watch-toggle" tabindex="0" title="'+o+'" aria-label="'+o+'">'+L10n.get("debugBarLabelWatch")+'</button><label id="debug-bar-watch-label" for="debug-bar-watch-input">'+L10n.get("debugBarLabelAdd")+'</label><input id="debug-bar-watch-input" name="debug-bar-watch-input" type="text" list="debug-bar-watch-list" tabindex="0"><datalist id="debug-bar-watch-list" aria-hidden="true" hidden="hidden"></datalist><button id="debug-bar-watch-add" tabindex="0" title="'+e+'" aria-label="'+e+'"></button><button id="debug-bar-watch-all" tabindex="0" title="'+t+'" aria-label="'+t+'"></button><button id="debug-bar-watch-none" tabindex="0" title="'+n+'" aria-label="'+n+'"></button></div><div><button id="debug-bar-views-toggle" tabindex="0" title="'+d+'" aria-label="'+d+'">'+L10n.get("debugBarLabelViews")+'</button><label id="debug-bar-turn-label" for="debug-bar-turn-select">'+L10n.get("debugBarLabelTurn")+'</label><select id="debug-bar-turn-select" tabindex="0"></select></div></div>');g=jQuery(h.find("#debug-bar-watch").get(0)),m=jQuery(h.find("#debug-bar-watch-list").get(0)),v=jQuery(h.find("#debug-bar-turn-select").get(0));var f=jQuery(h.find("#debug-bar-watch-toggle").get(0)),p=jQuery(h.find("#debug-bar-watch-input").get(0)),y=jQuery(h.find("#debug-bar-watch-add").get(0)),b=jQuery(h.find("#debug-bar-watch-all").get(0)),w=jQuery(h.find("#debug-bar-watch-none").get(0)),k=jQuery(h.find("#debug-bar-views-toggle").get(0));h.appendTo("body"),f.ariaClick(function(){g.attr("hidden")?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),s()}),p.on(":addwatch",function(){r(this.value.trim()),this.value=""}).on("keypress",function(e){13===e.which&&(e.preventDefault(),p.trigger(":addwatch"))}),y.ariaClick(function(){return p.trigger(":addwatch")}),b.ariaClick(a),w.ariaClick(i),v.on("change",function(){Engine.goTo(Number(this.value))}),k.ariaClick(function(){DebugView.toggle(),s()}),jQuery(document).on(":historyupdate.debug-bar",c).on(":passageend.debug-bar",function(){u(),l()}).on(":enginerestart.debug-bar",function(){session.delete("debugState")})}function t(){o(),c(),u(),l()}function r(e){h.test(e)&&(p.pushUnique(e),p.sort(),u(),l(),s())}function a(){Object.keys(State.variables).map(function(e){return p.pushUnique("$"+e)}),Object.keys(State.temporary).map(function(e){return p.pushUnique("_"+e)}),p.sort(),u(),l(),s()}function n(e){p.delete(e),u(),l(),s()}function i(){for(var e=p.length-1;e>=0;--e)p.pop();u(),l(),s()}function o(){if(session.has("debugState")){var e=session.get("debugState");p.push.apply(p,_toConsumableArray(e.watchList)),e.watchEnabled?g.removeAttr("aria-hidden hidden"):g.attr({"aria-hidden":!0,hidden:"hidden"}),e.viewsEnabled?DebugView.enable():DebugView.disable()}}function s(){session.set("debugState",{watchList:p,watchEnabled:!g.attr("hidden"),viewsEnabled:DebugView.isEnabled()})}function u(){if(0===p.length)return void g.empty().append("<div>"+L10n.get("debugBarNoWatches")+"</div>");for(var e=L10n.get("debugBarDeleteWatch"),t=jQuery(document.createElement("table")),r=jQuery(document.createElement("tbody")),a=0,i=p.length;a<i;++a)!function(t,a){var i=p[t],o=i.slice(1),s="$"===i[0]?State.variables:State.temporary,u=jQuery(document.createElement("tr")),l=jQuery(document.createElement("button")),c=jQuery(document.createElement("code"));l.addClass("watch-delete").attr("data-name",i).ariaClick({one:!0,label:e},function(){return n(i)}),c.text(d(s[o])),jQuery(document.createElement("td")).append(l).appendTo(u),jQuery(document.createElement("td")).text(i).appendTo(u),jQuery(document.createElement("td")).append(c).appendTo(u),u.appendTo(r)}(a);t.append(r),g.empty().append(t)}function l(){var e=Object.keys(State.variables),t=Object.keys(State.temporary);if(0===e.length&&0===t.length)return void m.empty();var r=[].concat(_toConsumableArray(e.map(function(e){return"$"+e})),_toConsumableArray(t.map(function(e){return"_"+e}))).sort(),a=document.createDocumentFragment();r.delete(p);for(var n=0,i=r.length;n<i;++n)jQuery(document.createElement("option")).val(r[n]).appendTo(a);m.empty().append(a)}function c(){for(var e=State.size,t=State.expired.length,r=document.createDocumentFragment(),a=0;a<e;++a)jQuery(document.createElement("option")).val(a).text(t+a+1+". "+Util.escape(State.history[a].title)).appendTo(r);v.empty().prop("disabled",e<2).append(r).val(State.activeIndex)}function d(e){if(null===e)return"null";switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return"NaN";if(!Number.isFinite(e))return"Infinity";case"boolean":case"symbol":case"undefined":return String(e);case"string":return JSON.stringify(e);case"function":return"Function"}var t=Util.toStringTag(e);if("Date"===t)return"Date {"+e.toLocaleString()+"}";if("RegExp"===t)return"RegExp "+e.toString();var r=[];if(e instanceof Array||e instanceof Set){for(var a=e instanceof Array?e:Array.from(e),n=0,i=a.length;n<i;++n)r.push(a.hasOwnProperty(n)?d(a[n]):"<empty>");return Object.keys(a).filter(function(e){return!f.test(e)}).forEach(function(e){return r.push(d(e)+": "+d(a[e]))}),t+"("+a.length+") ["+r.join(", ")+"]"}return e instanceof Map?(e.forEach(function(e,t){return r.push(d(t)+" → "+d(e))}),t+"("+e.size+") {"+r.join(", ")+"}"):(Object.keys(e).forEach(function(t){return r.push(d(t)+": "+d(e[t]))}),t+" {"+r.join(", ")+"}")}var h=new RegExp("^"+Patterns.variable+"$"),f=/^\d+$/,p=[],g=null,m=null,v=null;return Object.freeze(Object.defineProperties({},{init:{value:e},start:{value:t},watch:{value:r},watchAll:{value:a},unwatch:{value:n},unwatchAll:{value:i}}))}(),LoadScreen=function(){function e(){jQuery(document).on("readystatechange.SugarCube",function(){o.size>0||("complete"===document.readyState?"loading"===jQuery(document.documentElement).attr("data-init")&&(Config.loadDelay>0?setTimeout(function(){0===o.size&&r()},Math.max(Engine.minDomActionDelay,Config.loadDelay)):r()):a())})}function t(){jQuery(document).off("readystatechange.SugarCube"),o.clear(),r()}function r(){jQuery(document.documentElement).removeAttr("data-init")}function a(){jQuery(document.documentElement).attr("data-init","loading")}function n(){return++s,o.add(s),a(),s}function i(e){if(null==e)throw new Error("LoadScreen.unlock called with a null or undefined ID");o.has(e)&&o.delete(e),0===o.size&&jQuery(document).trigger("readystatechange")}var o=new Set,s=0;return Object.freeze(Object.defineProperties({},{init:{value:e},clear:{value:t},hide:{value:r},show:{value:a},lock:{value:n},unlock:{value:i}}))}(),version=Object.freeze({title:"SugarCube",major:2,minor:23,patch:4,prerelease:null,build:8478,date:new Date("2018-02-02T03:16:09.116Z"),extensions:{},toString:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.major+"."+this.minor+"."+this.patch+e+"+"+this.build},short:function(){var e=this.prerelease?"-"+this.prerelease:"";return this.title+" (v"+this.major+"."+this.minor+"."+this.patch+e+")"},long:function(){return this.title+" v"+this.toString()+" ("+this.date.toUTCString()+")"}}),TempState={},macros={},postdisplay={},postrender={},predisplay={},prehistory={},prerender={},session=null,settings={},setup={},storage=null,browser=Browser,config=Config,has=Has,History=State,state=State,tale=Story,TempVariables=State.temporary;window.SugarCube={},jQuery(function(){try{var e=LoadScreen.lock();LoadScreen.init(),document.normalize&&document.normalize(),Story.load(),storage=SimpleStore.create(Story.domId,!0),session=SimpleStore.create(Story.domId,!1),Dialog.init(),UIBar.init(),Engine.init(),Story.init(),L10n.init(),session.has("rcWarn")||"cookie"!==storage.name||(session.set("rcWarn",1),window.alert(L10n.get("warningNoWebStorage"))),Save.init(),Setting.init(),Macro.init(),Engine.start(),UIBar.start(),Config.debug&&(DebugBar.init(),DebugBar.start()),window.SugarCube={Browser:Browser,Config:Config,Dialog:Dialog,DebugView:DebugView,Engine:Engine,Has:Has,L10n:L10n,Macro:Macro,Passage:Passage,Save:Save,Scripting:Scripting,Setting:Setting,SimpleAudio:SimpleAudio,State:State,Story:Story,UI:UI,UIBar:UIBar,DebugBar:DebugBar,Util:Util,Wikifier:Wikifier,macros:macros,session:session,settings:settings,setup:setup,storage:storage,version:version},LoadScreen.unlock(e)}catch(e){return console.error(e),LoadScreen.clear(),Alert.fatal(null,e.message,e)}})}(window,window.document,jQuery);}
 	</script>
 </body>
 </html>
diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/sugarcube-2.py b/devTools/tweeGo/storyFormats/sugarcube-2/sugarcube-2.py
index b37dd0a705da6dc506dd4792137f1262316a1c95..4ce658d03d301e93706d3eb1a95ed90bc26b78eb 100644
--- a/devTools/tweeGo/storyFormats/sugarcube-2/sugarcube-2.py
+++ b/devTools/tweeGo/storyFormats/sugarcube-2/sugarcube-2.py
@@ -2,7 +2,7 @@
 #
 # sugarcube-2.py
 #
-# Copyright (c) 2013-2017 Thomas Michael Edwards <thomasmedwards@gmail.com>. All rights reserved.
+# Copyright (c) 2013-2018 Thomas Michael Edwards <thomasmedwards@gmail.com>. All rights reserved.
 # Use of this source code is governed by a BSD 2-clause "Simplified" License, which may be found in the LICENSE file.
 #
 ########################################################################################################################
diff --git a/readme.txt b/readme.txt
index e99451bff0a1a6bc46d925470c57cfa152c3c3c1..2a6eb9c5b69774bc0cf1b4c99978a6f7a0151d5a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,11 +1,15 @@
 Common problems:
 
+How do I start the game?
+-Run the compile file, go to folder "bin", click the "FC_Pregmod" and play. (Reccomendation: Drag it into incongito mode)
+
 I get a error on gamestart.
 -clear cookies
 
 I can't save more than once or twice.
 -Known issue caused by sugarcube level changes. Save to file doesn't have this problem and will likely avoid the first problem as well.
 
+
 How to mod (basic doc):
 
 1. All sources now in the src subdir, in separate files. 1 passage = 1 file.
@@ -18,7 +22,7 @@ How to mod (basic doc):
     - src/pregmod 		- I put all pregmod-only passages here.
     - .gitignore 		- special file for git - to ignore some files. For example - compilation results.
     
-3. Compilation:
+3. Compilation: 
     
     Windows:
     Run compile.bat - result will be file bin/FC_pregmod.html
@@ -31,8 +35,8 @@ How to mod (basic doc):
     compile-git will produce the same result file but with current commit hash in filename.
 
     Mac: 
-    Don't supported directly (I don't have access to Mac for testing). 
-    But potentially can be used linux compilation script if you download tweego for mac from here: https://bitbucket.org/tmedwards/tweego/downloads/ and replace linux executable with mac executable in ./devTools/tweeGo/ folder. This is not tested though.
+    Not supported directly (I don't have access to Mac for testing). 
+    But you can use linux compilation script if you download tweego for mac from here: https://bitbucket.org/tmedwards/tweego/downloads/ and replace linux executable with mac executable in ./devTools/tweeGo/ folder. This is not tested though, so be warned.
     
 4. Simple comparing and merging with original FC:
 
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 4ee2dc551d86d223c66561dd05a100d42009e6cf..4fb8d911e9100b7656281a7ac94db36f7cdc1289 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -956,6 +956,11 @@ nipple are pierced
 1 - yes
 2 - heavily
 
+nipplesAccessory:
+
+what accessory, if any, or on her nipples
+"none"
+
 areolae:
 
 slave areolae
@@ -1236,8 +1241,13 @@ Who sired her pregnancy
 pregType:
 
 number of children
-1,2,3,4,5,10-19,20-29,50*
-50 - permanantly pregnant
+
+broodmother
+
+has the slave been turned into a broodmother
+0 - no
+1 - standard 1 birth/week
+2 - black market 12 births/week
 
 labor:
 
@@ -2625,7 +2635,7 @@ How to set up your own hero slave.
 
 -The default slave template used:
 
-<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", eyewear: "none", origHColor: "brown", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, underArmHStyle: "waxed", bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillST: 0, skillMM: 0, skillWA: 0, tankBaby: 0}>>
+<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", eyewear: "none", origHColor: "brown", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, nipplesAccessory: "none", areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, broodmother: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, underArmHStyle: "waxed", bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillST: 0, skillMM: 0, skillWA: 0, tankBaby: 0}>>
 
 Making your slave; add their name to the following, then go down the documentation adding in your changes.
 -each variable must be seperated from the last by a comma followed by a space
diff --git a/src/SecExp/SecExpBackwardCompatibility.tw b/src/SecExp/SecExpBackwardCompatibility.tw
index 063e79d6b0f03cc1e2b4fb6d50279b17b0af28a2..dbd4f433a89770b6265bce830f864889923cdcc7 100644
--- a/src/SecExp/SecExpBackwardCompatibility.tw
+++ b/src/SecExp/SecExpBackwardCompatibility.tw
@@ -109,6 +109,9 @@
 <<if ndef $rebellionSpeed>>
 <<set $rebellionSpeed = 1>>
 <</if>>
+<<if ndef $majorBattleMult>>
+<<set $majorBattleMult = 1>>
+<</if>>
 
 /* edicts */
 <<if ndef $edictsUpkeep>>
@@ -516,9 +519,6 @@
 <<if ndef $collaborationRoute>>
 <<set $collaborationRoute = 0>>
 <</if>>
-<<if ndef $hostileRoute>>
-<<set $hostileRoute = 0>>
-<</if>>
 <<if ndef $smilingManWeek>>
 <<set $smilingManWeek = 0>>
 <</if>>
diff --git a/src/SecExp/attackGenerator.tw b/src/SecExp/attackGenerator.tw
index b9931a6cd48b12a2992d423e59ae8c3b542fd92e..f4c4c620a8246049d91da36ca9466f11b5742c51 100644
--- a/src/SecExp/attackGenerator.tw
+++ b/src/SecExp/attackGenerator.tw
@@ -234,8 +234,13 @@
 	<<if ($week >= 120 && $attackType != "none") || ($forceMajorBattle == 1 && $foughtThisWeek == 0)>>
 		<<if random(1,100) >= 50 || $forceMajorBattle == 1>>
 			<<set $majorBattle = 1>>
-			<<set $attackTroops *= random(4,6)>>
-			<<set $attackEquip = either(3,4)>>
+			<<if $securityForceCreate == 1>>
+				<<set $attackTroops = Math.trunc($attackTroops * random(4,6) * $majorBattleMult)>>
+				<<set $attackEquip = either(3,4)>>
+			<<else>>
+				<<set $attackTroops = Math.trunc($attackTroops * random(2,3) * $majorBattleMult)>>
+				<<set $attackEquip = either(2,3,4)>>
+			<</if>>
 			<<set $estimatedMen = Math.round($attackTroops * (1 + either(-1,1) * (random(3,4) - $recon) * 0.1))>>
 			<<if $recon == 3>>
 				<<set $expectedEquip = $attackEquip + random(-1,1)>>
diff --git a/src/SecExp/attackHandler.tw b/src/SecExp/attackHandler.tw
index 969309e85a6b6ec0a1bfd4d404a04fcfab30c47a..1b704c89678592bcc429672518e407844d211305 100644
--- a/src/SecExp/attackHandler.tw
+++ b/src/SecExp/attackHandler.tw
@@ -22,31 +22,43 @@
 	<</if>>
 <</for>>
 
-<<if $battleResult == 1>>	/* bribery check */
-	<<if $showBattleStatistics == 1>>bribery chosen<</if>>
-	<<if $cash >= $bribeCost>>						/* if there's enough cash there's a 10% chance bribery fails. If there isn't there's instead a 50% chance it fails */
-		<<if random(1,100) <= 10>>
-			<<set $battleResult = 0>>
-		<</if>>
+<<if $battleResult == 1 || $battleResult == -1>>	/* bribery/surrender check */
+	<<if $showBattleStatistics == 1>>
+		bribery chosen
 	<<else>>
-		<<if random(1,100) <= 50>>
-			<<set $battleResult = 0>>
-		<</if>>
+		Surrender chosen
 	<</if>>
-	<<if $showBattleStatistics == 1>>
-		<<if $battleResult == 0>>
-			<br>Bribery failed!
+	<<if $battleResult == 1>>
+		<<if $cash >= $bribeCost>>						/* if there's enough cash there's a 10% chance bribery fails. If there isn't there's instead a 50% chance it fails */
+			<<if $attackType == "freedom fighters">>
+				<<if random(1,100) <= 50>>
+					<<set $battleResult = 0>>
+				<</if>>
+			<<elseif random(1,100) <= 10>>
+				<<set $battleResult = 0>>
+			<</if>>
 		<<else>>
-			<br>Bribery Successful!
+			<<if random(1,100) <= 50>>
+				<<set $battleResult = 0>>
+			<</if>>
 		<</if>>
-		<br><br>
-		<<link "proceed">>
+		<<if $showBattleStatistics == 1>>
+			<<if $battleResult == 0>>
+				<br>Bribery failed!
+			<<else>>
+				<br>Bribery Successful!
+			<</if>>
+			<br><br>
+			<<link "proceed">>
+				<<goto "attackReport">>
+			<</link>>
+		<<else>>
 			<<goto "attackReport">>
-		<</link>>
+		<</if>>
 	<<else>>
 		<<goto "attackReport">>
 	<</if>>
-
+	
 <<else>>
 
 /*Init*/
diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw
index d73903db7fef444cc81df628d5bff7dee11dc247..7a6d524b9c742128a449396ddc674d8cdda83462 100644
--- a/src/SecExp/attackReport.tw
+++ b/src/SecExp/attackReport.tw
@@ -131,7 +131,7 @@
 
 <<if $attackType == "raiders">>
 	Today, the _day of _month _year, our arcology was attacked by a band of wild raiders, $attackTroops men strong.
-	<<if $battleResult != 1 || $battleResult != 0 || $battleResult != -1>>
+	<<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>>
 		Our defense forces, $troopCount strong, clashed with them
 		<<if $battleTerrain == "urban">>
 			in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>,
@@ -149,9 +149,9 @@
 			in the wastelands outside the free city territory,
 		<</if>>
 		<<if $enemyLosses != $attackTroops>>
-			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves.
+			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves.
 		<<else>>
-			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>>.
+			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>>
 		<</if>>
 	<</if>>
 	<<if $battleResult == 3>>
@@ -197,7 +197,7 @@
 	<</if>>
 <<elseif $attackType == "free city">>
 	Today, the _day of _month _year, our arcology was attacked by a contingent of mercenaries hired by a competing free city, $attackTroops men strong.
-	<<if $battleResult != 1 || $battleResult != 0 || $battleResult != -1>>
+	<<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>>
 		Our defense forces, $troopCount strong, clashed with them
 		<<if $battleTerrain == "urban">>
 			in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>,
@@ -215,9 +215,9 @@
 			in the wastelands outside the free city territory,
 		<</if>>
 		<<if $enemyLosses != $attackTroops>>
-			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves.
+			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves.
 		<<else>>
-			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>>.
+			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty .<<else>> zero casualties.<</if>>
 		<</if>>
 	<</if>>
 	<<if $battleResult == 3>>
@@ -263,7 +263,7 @@
 	<</if>>
 <<elseif $attackType == "freedom fighters">>
 	Today, the _day of _month _year, our arcology was attacked by a group of freedom fighters bent on the destruction of the institution of slavery, $attackTroops men strong.
-	<<if $battleResult != 1 || $battleResult != 0 || $battleResult != -1>>
+	<<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>>
 		Our defense forces, $troopCount strong, clashed with them
 		<<if $battleTerrain == "urban">>
 			in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>,
@@ -281,9 +281,9 @@
 			in the wastelands outside the free city territory,
 		<</if>>
 		<<if $enemyLosses != $attackTroops>>
-			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves.
+			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves.
 		<<else>>
-			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>>.
+			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>>
 		<</if>>
 	<</if>>
 	<<if $battleResult == 3>>
@@ -329,7 +329,7 @@
 	<</if>>
 <<elseif $attackType == "old world">>
 	Today, the _day of _month _year, our arcology was attacked by an old world nation boasting a misplaced sense of superiority, $attackTroops men strong.
-	<<if $battleResult != 1 || $battleResult != 0 || $battleResult != -1>>
+	<<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>>
 		Our defense forces, $troopCount strong, clashed with them
 		<<if $battleTerrain == "urban">>
 			in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>,
@@ -347,9 +347,9 @@
 			in the wastelands outside the free city territory,
 		<</if>>
 		<<if $enemyLosses != $attackTroops>>
-			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves.
+			inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves.
 		<<else>>
-			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>>.
+			completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>>
 		<</if>>
 	<</if>>
 	<<if $battleResult == 3>>
@@ -677,10 +677,18 @@
 	<<set $cash -= $bribeCost>>
 <</if>>
 <<if !isInt($ACitizens)>>
-	<br>@@.red;Error: ACitizens is Nan, please report this issue@@
+	<<if isNaN($ACitizens)>>
+		<br>@@.red;Error: ACitizens is NaN, please report this issue@@
+	<<else>>
+		<<set $ACitizens = Math.clamp(Math.trunc($ACitizens),100,$ACitizenLimit)>>
+	<</if>>
 <</if>>
 <<if !isInt($ASlaves)>>
-	<br>@@.red;Error: ASlaves is Nan, please report this issue@@
+	<<if isNaN($ASlaves)>>
+		<br>@@.red;Error: ASlaves is NaN, please report this issue@@
+	<<else>>
+		<<set $ASlaves = Math.clamp(Math.trunc($ASlaves),1000,$ASlaveLimit)>>
+	<</if>>
 <</if>>
 
 <br><br>
@@ -954,7 +962,7 @@
 								<<elseif $slaves[_j].prestige == 2>>
 									<<set $slaves[_j].prestigeDesc = "She is famous for being an incredible commander.">>
 								<<elseif $slaves[_j].prestige == 3>>
-									<<set $slaves[_j].prestigeDesc = "She is is known as a legendary commander all over the world.">>
+									<<set $slaves[_j].prestigeDesc = "She is known as a legendary commander all over the world.">>
 								<</if>>
 								<<set $slaveVictories[_i].victories = 0>>
 								<<set $slaveIncreasedPrestige = 1>>
@@ -1102,7 +1110,7 @@
 								<<elseif $slaves[_j].prestige == 2>>
 									<<set $slaves[_j].prestigeDesc = "She is famous for being an incredible commander.">>
 								<<elseif $slaves[_j].prestige == 3>>
-									<<set $slaves[_j].prestigeDesc = "She is is known as a legendary commander all over the world.">>
+									<<set $slaves[_j].prestigeDesc = "She is known as a legendary commander all over the world.">>
 								<</if>>
 								<<set $slaveVictories[_i].victories = 0>>
 								<<set $slaveIncreasedPrestige = 1>>
diff --git a/src/SecExp/proclamations.tw b/src/SecExp/proclamations.tw
index b2bf95c9604b37d5c3c1922c54ed85cb86f1ee43..25971da698845be9a8f55952d4cf8fec78bd0e21 100644
--- a/src/SecExp/proclamations.tw
+++ b/src/SecExp/proclamations.tw
@@ -34,7 +34,7 @@ You will use <<print $proclamationCurrency>> to enact it<<if $proclamationType !
 <br>
 <br>
 <<link "Issue a proclamation about security">>
-	<<set $personalAttention = "proclamation", $personalAttentionChanged = 1, $proclamationType = "security">>
+	<<set $personalAttention = "proclamation", $proclamationType = "security">>
 	<<goto "Main">>
 <</link>>
 <br>//You will use your <<if $proclamationCurrency == "authority">>control over the arcology<<elseif $proclamationCurrency == "reputation">>great influence<<elseif $proclamationCurrency == "cash">> vast financial means<</if>>
@@ -42,7 +42,7 @@ to force citizens to give up on sensitive information for the good of the arcolo
 <br>
 <br>
 <<link "Issue a proclamation about crime">>
-	<<set $personalAttention = "proclamation", $personalAttentionChanged = 1, $proclamationType = "crime">>
+	<<set $personalAttention = "proclamation", $proclamationType = "crime">>
 	<<goto "Main">>
 <</link>>
 <br>//You will use your <<if $proclamationCurrency == "authority">>control over the arcology<<elseif $proclamationCurrency == "reputation">>great influence<<elseif $proclamationCurrency == "cash">> vast financial means<</if>>
diff --git a/src/SecExp/rebellionGenerator.tw b/src/SecExp/rebellionGenerator.tw
index 3134e57c7064ce5e2f2c0ba88d5965af1d3da39c..41e445f99956c4f4eaf46da0a23e485f8c763ae1 100644
--- a/src/SecExp/rebellionGenerator.tw
+++ b/src/SecExp/rebellionGenerator.tw
@@ -2,7 +2,7 @@
 
 <<set _slave = 0>>
 <<set _citizen = 0>>
-<<set _CSratio = $ACitizens / $ASlaves>>
+<<set _CSratio = $ACitizens / ($ASlaves + $helots)>>
 
 <strong>Slaves security analysis:</strong>
 <<if $authority <= 3000>>
@@ -17,6 +17,8 @@
 	Your high authority does not allow slaves to think too freely.<<set _slave += 10>>
 <<elseif $authority <= 18000>>
 	Your very high authority does not allow slaves to think too freely.<<set _slave += 5>>
+<<else>>
+	Your absolute authority does not allow slaves to have a single free thought.<<set _slave += 1>>
 <</if>>
 <<if _CSratio <= 0.2>>
 	There are a lot more slaves than citizens, making some doubt their masters are strong enough to stop them.<<set _slave += 30>>
@@ -30,6 +32,8 @@
 	There are less slaves than citizens, making some doubt they would be strong enough to defeat their masters.<<set _slave += 10>>
 <<elseif _CSratio >= 1.2>>
 	There are less slaves than citizens, making some doubt they would be strong enough to defeat their masters.<<set _slave -= 5>>
+<<else>>
+	Citizen and slave population is sufficiently balanced not to cause problems either way.<<set _slave -= 1>>
 <</if>>
 <<if $security <= 10>>
 	The very low security of the arcology leaves free space for slaves to organize and agitate.<<set _slave += 30>>
@@ -39,6 +43,8 @@
 	The moderate security of the arcology does not allow free space for slaves to organize and agitate.<<set _slave += 10>>
 <<elseif $security >= 90>>
 	The high security of the arcology does not allow free space for slaves to organize and agitate.<<set _slave -= 5>>
+<<else>>
+	The high security of the arcology does not allow free space for slaves to organize and agitate.<<set _slave -= 1>>
 <</if>>
 <<if $arcologies[0].FSDegradationist != "unset">>
 	Many slaves are so disgusted by your degradationist society, that are willing to rise up against their masters to escape.<<set _slave += 30>>
@@ -69,6 +75,8 @@
 	Your high authority does not allow your citizens to think too freely.<<set _citizen += 10>>
 <<elseif $authority <= 18000>>
 	Your very high authority does not allow your citizens to think too freely.<<set _citizen += 5>>
+<<else>>
+	Your absolute authority does not allow your citizens to have a single free thought.<<set _citizen += 1>>
 <</if>>
 <<if $crime >= 90>>
 	The very high crime level of the arcology breeds extreme discontent between your citizens.<<set _citizen += 30>>
diff --git a/src/SecExp/secExpOptions.tw b/src/SecExp/secExpOptions.tw
index bb0b92cbdeaaaee5109fc365ff08ce1313c8b213..cef1467d494d52c8d7195deb2655f39645c198ee 100644
--- a/src/SecExp/secExpOptions.tw
+++ b/src/SecExp/secExpOptions.tw
@@ -349,6 +349,49 @@ __Battles frequency__:
 <</link>>
 <br>
 <br>
+__Major battle multiplier__:
+<br>Major battle multiplier is set to:<span id="majorBattleMult">
+<<if $majorBattleMult == 0.5>>
+	@@.green;Very low@@
+<<elseif $majorBattleMult == 0.75>>
+	@@.limegreen;Low@@
+<<elseif $majorBattleMult == 1>>
+	@@.yellow;Normal@@
+<<elseif $majorBattleMult == 1.25>>
+	@@.red;high@@
+<<else>>
+	@@.darkred;Very high@@
+<</if>>
+</span>
+<br>
+<<link "Very low">>
+	<<set $majorBattleMult = 0.5>>
+	<<replace "#majorBattleMult">>
+		@@.green;Very low@@
+	<</replace>>
+<</link>> | <<link "Low">>
+	<<set $majorBattleMult = 0.75>>
+	<<replace "#majorBattleMult">>
+		@@.limegreen;Low@@
+	<</replace>>
+<</link>> | <<link "Normal">>
+	<<set $majorBattleMult = 1>>
+	<<replace "#majorBattleMult">>
+		@@.yellow;Normal@@
+	<</replace>>
+<</link>> | <<link "High">>
+	<<set $majorBattleMult = 1.25>>
+	<<replace "#majorBattleMult">>
+		@@.red;High@@
+	<</replace>>
+<</link>> | <<link "Very high">>
+	<<set $majorBattleMult = 1.5>>
+	<<replace "#majorBattleMult">>
+		@@.darkred;Very high@@
+	<</replace>>
+<</link>>
+<br>
+<br>
 __Rebellions buildup speed__:
 <br>Rebellion speed is set to:<span id="rebellionSpeed">
 <<if $rebellionSpeed == 0.5>>
diff --git a/src/SecExp/secExpSmilingMan.tw b/src/SecExp/secExpSmilingMan.tw
index 63d2fe0479960a50922c090ab4dd9cdfddd5466e..7312a76a1a4330aeba4127fb0cd969981eb17084 100644
--- a/src/SecExp/secExpSmilingMan.tw
+++ b/src/SecExp/secExpSmilingMan.tw
@@ -18,51 +18,39 @@
 	<br>
 	<span id="result">
 	<br>
-	<<link "Devote funds to the search for this dangerous criminal">>
-		<<if $cash >= 10000>>
-			<<set $cash -= 10000>>
+	<<if $cash >= 10000>>
+		<<link "Devote funds to the search for this dangerous criminal">>
 			<<set $investedFunds = 1>>
-		<<else>>
-			<<set $investedFunds += cash>>
-			<<set $cash = 0>>
-		<</if>>
-		<<set $relationshipLM += 1>>
-		<<set $smilingManProgress += 1>>
-		<<replace "#result">>
-			You devote funds to capture and neutralize the threat. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
-		<</replace>>
-	<</link>>
-	<br>
-	<<link "Attempt to contact the mysterious figure, whatever it takes">>
-		<<if $cash >= 10000>>
+			<<set $cash -= 10000>>
+			<<set $relationshipLM += 1>>
+			<<set $smilingManProgress += 1>>
+			<<replace "#result">>
+				You devote funds to capture and neutralize the threat. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
+			<</replace>>
+		<</link>>
+		<br>
+		<<link "Attempt to contact the mysterious figure, whatever it takes">>
 			<<set $cash -= 10000>>
 			<<set $investedFunds = 1>>
-		<<else>>
-			<<set $investedFunds += cash>>
-			<<set $cash = 0>>
-		<</if>>
-		<<set $relationshipLM += 2>>
-		<<set $smilingManProgress += 1>>
-		<<replace "#result">>
-			You devote funds to the attempt at communicating with the smiling man. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
-		<</replace>>
-	<</link>>
-	<br>
-	<<link "Invest funds to increase the cyber-security of the arcology">>
-		<<if $cash >= 10000>>
+			<<set $relationshipLM += 2>>
+			<<set $smilingManProgress += 1>>
+			<<replace "#result">>
+				You devote funds to the attempt at communicating with the smiling man. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
+			<</replace>>
+		<</link>>
+		<br>
+		<<link "Invest funds to increase the cyber-security of the arcology">>
 			<<set $cash -= 10000>>
 			<<set $investedFunds = 1>>
-		<<else>>
-			<<set $investedFunds += cash>>
-			<<set $cash = 0>>
-		<</if>>
-		<<set $relationshipLM += random(5,10)>>
-		<<set $hostileRoute -= 1>>
-		<<set $smilingManProgress += 1>>
-		<<replace "#result">>
-			You devote funds to the improvement of the cyber-security of your arcology. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
-		<</replace>>
-	<</link>>
+			<<set $relationshipLM += random(5,10)>>
+			<<set $smilingManProgress += 1>>
+			<<replace "#result">>
+				You devote funds to the improvement of the cyber-security of your arcology. You cannot help but wonder what is the end game of the laughing man. Money? Fame? Or is he on an ideological crusade?
+			<</replace>>
+		<</link>>
+	<<else>>
+		Not enough funds to take further action.
+	<</if>>
 	<br>
 	<<link "Ignore the issue">>
 		<<set $smilingManProgress += 1>>
@@ -87,7 +75,7 @@
 	<br>The lights flickered once more and an instant later your assistant returned to her usual self.
 	<br>"I... I... I couldn't stop him! I'm sorry <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>>."
 	<br>Without wasting time you rush the console and check your finances. It's as you feared, @@.red;you have been robbed@@.
-	<<set _lostCash = 200000>>
+	<<set _lostCash = Math.clamp(50000 * Math.trunc($week / 20), 50000, 1000000)>>
 	<<if $assistantPower == 1>>
 		<<set _lostCash -= 20000>>
 		<br>Fortunately the computing power available to $assistantName allowed her to somewhat limit the losses.
diff --git a/src/SecExp/secInit.tw b/src/SecExp/secInit.tw
index 4cf11973a3bdf77dd4232ee3be34c7fe826677d0..b2a07a44c577185a96cfefa4fcc2b12c64fe8f40 100644
--- a/src/SecExp/secInit.tw
+++ b/src/SecExp/secInit.tw
@@ -37,6 +37,7 @@
 <<set $allowPrestigeFromBattles = 1>>
 <<set $battleFrequency = 1>>
 <<set $rebellionSpeed = 1>>
+<<set $majorBattleMult = 1>>
 
 /* edicts */
 <<set $edictsUpkeep = 0>>
@@ -177,7 +178,6 @@
 <<set $relationshipLM = 0>>
 <<set $captureRoute = 0>>
 <<set $collaborationRoute = 0>>
-<<set $hostileRoute = 0>>
 <<set $smilingManWeek = 0>>
 <<set $globalCrisisWeeks = 0>>
 <<set $smilingManFate = 4>>
diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw
index 975fc7e9bca0c3668d2446e3d1b53c619265ea79..b3b38ffbf1ad036581c5d56f389b87e44966718e 100644
--- a/src/SecExp/securityReport.tw
+++ b/src/SecExp/securityReport.tw
@@ -12,7 +12,7 @@
 <<set _recruits = 0>>
 <<set _newMercs = 0>>
 
-<<if $useTabs == 0>>__Security__<</if>>
+<<if $useTabs == 0>>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>__Security__<</if>>
 <br>
 
 <strong>Security</strong>:
@@ -172,8 +172,6 @@
 <<set $security = Math.clamp(_newSec, 0, 100)>>
 
 <br>
-<br>
-
 <strong>Crime</strong>:
 /* crime modifiers */
 <<if $week < 30>>
@@ -251,13 +249,10 @@
 <</if>>
 <<set $crime = Math.clamp(_newCrime,0,100)>>
 
-
-
 <<if $militiaFounded == 1 || $activeUnits >= 1>>
-	<br>
 	<br>
 	/* militia */
-	<strong>Military</strong>:
+	<strong> Military</strong>:
 	<<if $recruitVolunteers == 1>>
 		Your militia accepts only volunteering citizens, ready to defend their arcology.
 		<<set _recruits = random(1,2)>>
@@ -361,6 +356,7 @@
 		<<else>>
 			There are not many more citizens able to join the arcology armed forces. You'll need to enact higher recruitment edicts if you need more manpower.
 		<</if>>
+		<br>
 	<</if>>
 
 	/* mercs */
@@ -401,129 +397,132 @@
 			<<set $mercTotalManpower -= $mercFreeManpower - 2000>>
 			<<set $mercFreeManpower = 2000>>
 		<</if>>
-	<</if>>
-	<br>
-	/* loyalty and training */
-	<<set _sL = $slaveUnits.length>>
-	<<for _i = 0; _i < _sL; _i++>>
-		<<set _loyaltyChange = 0>>
 		<br>
-		<br>$slaveUnits[_i].platoonName:
-		<<if $secBarracksUpgrades.loyaltyMod >= 1>>
-			<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
-			is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
-		<</if>>
-		<<if $slaveUnits[_i].commissars >= 1>>
-			The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
-			<<set _loyaltyChange += 2 * $slaveUnits[_i].commissars>>
-		<</if>>
-		<<if $soldierWages == 2>>
-			The slaves greatly appreciate the generous wage given to them for their service as soldiers. Occasions to earn money for a slave are scarce after all.
-			<<set _loyaltyChange += random(5,10)>>
-		<<elseif $soldierWages == 1>>
-			The slaves appreciate the wage given to them for their service as soldiers, despite it being just adequate. Occasions to earn money for a slave are scarce after all.
-			<<set _loyaltyChange += random(-5,5)>>
-		<<else>>
-			The slaves do not appreciate the low wage given to them for their service as soldiers, but occasions to earn money for a slave are scarce, so they're not too affected by it.
-			<<set _loyaltyChange -= random(5,10)>>
-		<</if>>
-		<<if $slaveSoldierPrivilege == 1>>
-			Allowing them to hold material possessions earns you their devotion and loyalty.
-			<<set _loyaltyChange += random(1,2)>>
-		<</if>>
-		<<if _loyaltyChange > 0>>
-			The loyalty of this unit @@.green;increased@@ this week.
-		<<elseif _loyaltyChange == 0>>
-			The loyalty of this unit @@.yellow;did not change@@ this week.
-		<<else>>
-			The loyalty of this unit @@.red;decreased@@ this week.
-		<</if>>
-		<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty + _loyaltyChange,0,100)>>
-		<<if $slaveUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
-			<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
-			<<set $slaveUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
-		<</if>>
-	<</for>>
-	<<set _mL = $militiaUnits.length>>
-	<<for _i = 0; _i < _mL; _i++>>
-		<br>
-		<br>$militiaUnits[_i].platoonName:
-		<<set _loyaltyChange = 0>>
-		<<if $secBarracksUpgrades.loyaltyMod >= 1>>
-			<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
-			is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
-		<</if>>
-		<<if $militiaUnits[_i].commissars >= 1>>
-			The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
-			<<set _loyaltyChange += 2 * $militiaUnits[_i].commissars>>
-		<</if>>
-		<<if $soldierWages == 2>>
-			The soldiers greatly appreciate the generous wage given to them for their service. They are proud to defend their homes while making a small fortune out of it.
-			<<set _loyaltyChange += random(5,10)>>
-		<<elseif $soldierWages == 1>>
-			The soldiers appreciate the wage given to them for their service, despite it being just adequate. They are proud to defend their homes, though at the cost of possible financial gains.
-			<<set _loyaltyChange += random(-5,5)>>
-		<<else>>
-			The soldiers do not appreciate the low wage given to them for their service. Their sense of duty keeps them proud of their role as defenders of the arcology, but many do feel its financial weight.
-			<<set _loyaltyChange -= random(5,10)>>
-		<</if>>
-		<<if $militiaSoldierPrivilege == 1>>
-			Allowing them to avoid rent payment for their military service earns you their happiness and loyalty.
-			<<set _loyaltyChange += random(1,2)>>
-		<</if>>
-		<<if _loyaltyChange > 0>>
-			The loyalty of this unit @@.green;increased@@ this week.
-		<<elseif _loyaltyChange == 0>>
-			The loyalty of this unit @@.yellow;did not change@@ this week.
-		<<else>>
-			The loyalty of this unit @@.red;decreased@@ this week.
-		<</if>>
-		<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty + _loyaltyChange,0,100)>>
-		<<if $militiaUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
-			<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
-			<<set $militiaUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
-		<</if>>
-	<</for>>
-	<<set _meL = $mercUnits.length>>
-	<<for _i = 0; _i < _meL; _i++>>
-		<br>
-		<br>$mercUnits[_i].platoonName:
-		<<set _loyaltyChange = 0>>
-		<<if $secBarracksUpgrades.loyaltyMod >= 1>>
-			<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
-			is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
-		<</if>>
-		<<if $mercUnits[_i].commissars >= 1>>
-			The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
-			<<set _loyaltyChange += 2 * $mercUnits[_i].commissars>>
-		<</if>>
-		<<if $soldierWages == 2>>
-			The mercenaries greatly appreciate the generous wage given to them for their service. After all coin is the fastest way to reach their hearts.
-			<<set _loyaltyChange += random(5,10)>>
-		<<elseif $soldierWages == 1>>
-			The mercenaries do not appreciate the barely adequate wage given to them for their service. Still their professionalism keeps them determined to finish their contract.
-			<<set _loyaltyChange += random(-5,5)>>
-		<<else>>
-			The mercenaries do not appreciate the low wage given to them for their service.Their skill would be better served by a better contract and this world does not lack demand for guns for hire.
-			<<set _loyaltyChange -= random(5,10)>>
-		<</if>>
-		<<if $mercSoldierPrivilege == 1>>
-			Allowing them to keep part of the loot gained from your enemies earns you their trust and loyalty.
-			<<set _loyaltyChange += random(1,2)>>
-		<</if>>
-		<<if _loyaltyChange > 0>>
-			The loyalty of this unit @@.green;increased@@ this week.
-		<<elseif _loyaltyChange == 0>>
-			The loyalty of this unit @@.yellow;did not change@@ this week.
-		<<else>>
-			The loyalty of this unit @@.red;decreased@@ this week.
-		<</if>>
-		<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty + _loyaltyChange,0,100)>>
-		<<if $mercUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
-			<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
-			<<set $mercUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
-		<</if>>
-	<</for>>
+	<</if>>
+	
+	<<if $activeUnits > 0>>
+		/* loyalty and training */
+		<<set _sL = $slaveUnits.length>>
+		<<for _i = 0; _i < _sL; _i++>>
+			<<set _loyaltyChange = 0>>
+			<br>
+			<br> $slaveUnits[_i].platoonName:
+			<<if $secBarracksUpgrades.loyaltyMod >= 1>>
+				<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
+				is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
+			<</if>>
+			<<if $slaveUnits[_i].commissars >= 1>>
+				The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
+				<<set _loyaltyChange += 2 * $slaveUnits[_i].commissars>>
+			<</if>>
+			<<if $soldierWages == 2>>
+				The slaves greatly appreciate the generous wage given to them for their service as soldiers. Occasions to earn money for a slave are scarce after all.
+				<<set _loyaltyChange += random(5,10)>>
+			<<elseif $soldierWages == 1>>
+				The slaves appreciate the wage given to them for their service as soldiers, despite it being just adequate. Occasions to earn money for a slave are scarce after all.
+				<<set _loyaltyChange += random(-5,5)>>
+			<<else>>
+				The slaves do not appreciate the low wage given to them for their service as soldiers, but occasions to earn money for a slave are scarce, so they're not too affected by it.
+				<<set _loyaltyChange -= random(5,10)>>
+			<</if>>
+			<<if $slaveSoldierPrivilege == 1>>
+				Allowing them to hold material possessions earns you their devotion and loyalty.
+				<<set _loyaltyChange += random(1,2)>>
+			<</if>>
+			<<if _loyaltyChange > 0>>
+				The loyalty of this unit @@.green;increased@@ this week.
+			<<elseif _loyaltyChange == 0>>
+				The loyalty of this unit @@.yellow;did not change@@ this week.
+			<<else>>
+				The loyalty of this unit @@.red;decreased@@ this week.
+			<</if>>
+			<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty + _loyaltyChange,0,100)>>
+			<<if $slaveUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
+				<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
+				<<set $slaveUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
+			<</if>>
+		<</for>>
+		<<set _mL = $militiaUnits.length>>
+		<<for _i = 0; _i < _mL; _i++>>
+			<br>
+			<br>$militiaUnits[_i].platoonName:
+			<<set _loyaltyChange = 0>>
+			<<if $secBarracksUpgrades.loyaltyMod >= 1>>
+				<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
+				is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
+			<</if>>
+			<<if $militiaUnits[_i].commissars >= 1>>
+				The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
+				<<set _loyaltyChange += 2 * $militiaUnits[_i].commissars>>
+			<</if>>
+			<<if $soldierWages == 2>>
+				The soldiers greatly appreciate the generous wage given to them for their service. They are proud to defend their homes while making a small fortune out of it.
+				<<set _loyaltyChange += random(5,10)>>
+			<<elseif $soldierWages == 1>>
+				The soldiers appreciate the wage given to them for their service, despite it being just adequate. They are proud to defend their homes, though at the cost of possible financial gains.
+				<<set _loyaltyChange += random(-5,5)>>
+			<<else>>
+				The soldiers do not appreciate the low wage given to them for their service. Their sense of duty keeps them proud of their role as defenders of the arcology, but many do feel its financial weight.
+				<<set _loyaltyChange -= random(5,10)>>
+			<</if>>
+			<<if $militiaSoldierPrivilege == 1>>
+				Allowing them to avoid rent payment for their military service earns you their happiness and loyalty.
+				<<set _loyaltyChange += random(1,2)>>
+			<</if>>
+			<<if _loyaltyChange > 0>>
+				The loyalty of this unit @@.green;increased@@ this week.
+			<<elseif _loyaltyChange == 0>>
+				The loyalty of this unit @@.yellow;did not change@@ this week.
+			<<else>>
+				The loyalty of this unit @@.red;decreased@@ this week.
+			<</if>>
+			<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty + _loyaltyChange,0,100)>>
+			<<if $militiaUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
+				<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
+				<<set $militiaUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
+			<</if>>
+		<</for>>
+		<<set _meL = $mercUnits.length>>
+		<<for _i = 0; _i < _meL; _i++>>
+			<br>
+			<br>$mercUnits[_i].platoonName:
+			<<set _loyaltyChange = 0>>
+			<<if $secBarracksUpgrades.loyaltyMod >= 1>>
+				<<set _loyaltyChange += 2 * $secBarracksUpgrades.loyaltyMod>>
+				is periodically sent to the indoctrination facility in the barracks for thought correction therapy.
+			<</if>>
+			<<if $mercUnits[_i].commissars >= 1>>
+				The commissars attached to the unit carefully monitor the officers and grunts for signs of insubordination.
+				<<set _loyaltyChange += 2 * $mercUnits[_i].commissars>>
+			<</if>>
+			<<if $soldierWages == 2>>
+				The mercenaries greatly appreciate the generous wage given to them for their service. After all coin is the fastest way to reach their hearts.
+				<<set _loyaltyChange += random(5,10)>>
+			<<elseif $soldierWages == 1>>
+				The mercenaries do not appreciate the barely adequate wage given to them for their service. Still their professionalism keeps them determined to finish their contract.
+				<<set _loyaltyChange += random(-5,5)>>
+			<<else>>
+				The mercenaries do not appreciate the low wage given to them for their service.Their skill would be better served by a better contract and this world does not lack demand for guns for hire.
+				<<set _loyaltyChange -= random(5,10)>>
+			<</if>>
+			<<if $mercSoldierPrivilege == 1>>
+				Allowing them to keep part of the loot gained from your enemies earns you their trust and loyalty.
+				<<set _loyaltyChange += random(1,2)>>
+			<</if>>
+			<<if _loyaltyChange > 0>>
+				The loyalty of this unit @@.green;increased@@ this week.
+			<<elseif _loyaltyChange == 0>>
+				The loyalty of this unit @@.yellow;did not change@@ this week.
+			<<else>>
+				The loyalty of this unit @@.red;decreased@@ this week.
+			<</if>>
+			<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty + _loyaltyChange,0,100)>>
+			<<if $mercUnits[_i].training < 100 && $secBarracksUpgrades.training >= 1>>
+				<br>The unit is able to make use of the training facilities to better prepare its soldiers, slowing increasing their experience level.
+				<<set $mercUnits[_i].training += random(2,4) * 1.5 * $secBarracksUpgrades.training>>
+			<</if>>
+		<</for>>
+	<</if>>
 <</if>>
 
 
diff --git a/src/SecExp/unitsRebellionReport.tw b/src/SecExp/unitsRebellionReport.tw
index 970d536de5c89a4d8fa2bb54bd5406545f533a4c..b7ace3bf5505634e18abeacb7e8077f483ac1eaa 100644
--- a/src/SecExp/unitsRebellionReport.tw
+++ b/src/SecExp/unitsRebellionReport.tw
@@ -480,7 +480,7 @@
 				suffered.
 				<<set _med = Math.round(Math.clamp(_loss * $mercUnits[_j].medics * 0.25,1,_loss))>>
 				<<if $mercUnits[_j].medics == 1 && _loss > 0>>
-					Some men were saved by their medics.p
+					Some men were saved by their medics.
 				<</if>>
 				<<set $mercUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$mercUnits[_j].maxTroops))>>
 				<<set $mercEmployedManpower -= Math.trunc(_loss - _med)>>
diff --git a/src/art/artWidgets.tw b/src/art/artWidgets.tw
index 5626b80aa09011c27834555a13854f056d112bec..a8de527c14205b46822537418fc8b1b5aed2082a 100644
--- a/src/art/artWidgets.tw
+++ b/src/art/artWidgets.tw
@@ -551,7 +551,53 @@ vector art added later is drawn over previously added art
 	<<= "<img class='paperdoll' src=" + _folderLoc + "/hair/" + _hairStyle + " front.svg'" + " style='" + _hairFilter + "'/>">>
 <</if>>
 
+<<elseif $imageChoice == 3>> /* VECTOR ART REVAMP*/
 
+<<if ndef $seeVectorArtHighlights>>
+	<<set $seeVectorArtHighlights = 1>>
+<</if>>
+
+<<set _artSlave to $args[0] >>
+<<silently>>
+/* prepare HTML colour codes for slave display */
+/* note: latex clothing is mostly emulated by rubber colour for skin (and shoes) */
+/* TODO: consistently use american "color" instead of "colour" for all identifiers */
+<<include Art_Vector_Revamp_Set_Colour_Outfit_>> 
+<<include Art_Vector_Revamp_Set_Colour_Skin_>> 
+<<include Art_Vector_Revamp_Set_Colour_Hair_>>
+<<include Art_Vector_Revamp_Set_Colour_Shoe_>>
+
+<<include Art_Vector_Revamp_Body_Clothing_Control_>> /*Controls which body parts should be shown depending on clothing*/
+<</silently>>
+<<include Art_Vector_Revamp_Generate_Stylesheet_>>
+/* 
+each passage adds one layer of vector art
+vector art added later is drawn over previously added art
+(what is listed on the bottom in the code appears on the top of the image)
+*/
+
+
+<<include Art_Vector_Revamp_Arm_>>
+<<include Art_Vector_Revamp_Hair_Back_>>
+<<include Art_Vector_Revamp_Butt_>>
+<<include Art_Vector_Revamp_Leg_>>
+<<include Art_Vector_Revamp_Feet_>> /* includes shoes */
+<<include Art_Vector_Revamp_Torso_>>
+<<include Art_Vector_Revamp_Chastity_Belt_>>
+<<include Art_Vector_Revamp_Pussy_>>
+<<include Art_Vector_Revamp_Pubic_Hair_>>
+<<include Art_Vector_Revamp_Pussy_Piercings_>>
+<<include Art_Vector_Revamp_Torso_Outfit_>> /* note: clothing covers chastity belts */
+<<include Art_Vector_Revamp_Belly_>> /* includes navel piercing and belly-related clothing options */
+<<include Art_Vector_Revamp_Balls_>>
+<<include Art_Vector_Revamp_Penis_>> /* for dicks behind boobs */
+<<include Art_Vector_Revamp_Boob_>> /* includes areolae and piercings */
+<<include Art_Vector_Revamp_Penis_>> /* for dicks in front of boobs */
+<<include Art_Vector_Revamp_Boob_Addons_>> /* piercings always appear in front of boobs AND dick */
+<<include Art_Vector_Revamp_Clavicle>>
+<<include Art_Vector_Revamp_Collar_>>
+<<include Art_Vector_Revamp_Head_>> /* includes glasses */
+<<include Art_Vector_Revamp_Hair_Fore_>>
 <<else>> /* RENDERED IMAGES BY SHOKUSHU */
 
 <<if $args[0].vagina > -1>>
diff --git a/src/art/vector/Body_Clothing_Control.tw b/src/art/vector/Body_Clothing_Control.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ed662e74fcf8bf060a938cf0957d4b6753d02584
--- /dev/null
+++ b/src/art/vector/Body_Clothing_Control.tw
@@ -0,0 +1,100 @@
+:: Art_Vector_Body_Clothing_Control_ [nobr]
+
+<<set _eyeBallColor = "#ffffff">>
+
+<<if _artSlave.eyeColor neq "">>
+	<<if _artSlave.eyeColor.split(" ").length > 1>>
+		<<set _eyeLens = _artSlave.eyeColor.split(" ")[0]>>
+		
+		<<if _eyeLens == "demonic">>
+			<<set _eyeBallColor = _eyeColor>>
+		<<elseif _eyeLens == "devilish">>
+			<<set _eyeBallColor = "#000000">>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<set _muscles_value = _artSlave.muscles + 101>>
+<<set _art_muscle_visibility = 0.910239*Math.log(0.02*_muscles_value) >>
+
+<<set _showEyes = 1>>
+<<set _showLips = 1>>
+<<set _showMouth = 1>>
+<<set _showPubic = 1>>
+<<set _showPussy = _artSlave.vagina >= 0>>
+<<set _showArmHair = 1>>
+<<set _showHair = _artSlave.hStyle != "shaved">>
+<<set _showBoobs = 1>>
+<<set _showNipples = 1>>
+<<set _showArmHighlight = 0>>
+<<set _showTorsoHighlight = 0>>
+<<set _showLegHighlight = 0>>
+<<set _showBoobsHighlight = 0>>
+<<set _showEyesHighlight = 1>>
+<<set _showHeadHighlight = 1>>
+<<set _showBellyPiercings = 1>>
+<<set _showNipplePiercings = 1>>
+<<set _chastityAnal = _artSlave.dickAccessory == "anal chastity" || _artSlave.dickAccessory == "combined chastity" || _artSlave.vaginalAccessory == "anal chastity" || _artSlave.vaginalAccessory == "combined chastity" >>
+
+<<set _chastityVaginal = _artSlave.vaginalAccessory == "chastity belt" || _artSlave.vaginalAccessory == "combined chastity">>
+
+<<if _artSlave.fuckdoll > 0>>
+	<<set _showEyes = 0>>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showHair = 0>>	
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showBoobsHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+<</if>>
+
+<<if _artSlave.clothes == "a nice maid outfit">>
+	<<set _showPubic = 0>>
+	<<set _showBoobs = 0>>
+	<<set _showBellyPiercings = 0>>
+	<<set _showNipplePiercings = 0>>
+	<<set _showNipples = 0>>
+<</if>>
+
+<<if _artSlave.clothes == "a slutty maid outfit">>
+	<<set _showBellyPiercings = 0>>
+<</if>>
+
+<<if _artSlave.clothes == "restrictive latex">>
+	<<set _showEyes = 0>>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showHair = 0>>
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+	<<set _showBellyPiercings = 0>>
+<</if>>
+
+<<if _artSlave.clothes == "a latex catsuit">>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showBoobsHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+	<<set _showBellyPiercings = 0>>
+	<<set _showNipplePiercings = 0>>
+	<<set _chastityAnal = 0>>
+	<<set _chastityVaginal = 0>>
+<</if>>
+
+<<if $showBodyMods == 0>>
+	<<set _showNipplePiercings = 0>>
+<</if>>
+
+<<if $seeVectorArtHighlights == 1>>
+	<<set _showArmHighlight = 0>>
+	<<set _showTorsoHighlight = 0>>
+	<<set _showLegHighlight = 0>>
+	<<set _showBoobsHighlight = 0>>
+<</if>>
\ No newline at end of file
diff --git a/src/art/vector_revamp/Arm.tw b/src/art/vector_revamp/Arm.tw
new file mode 100644
index 0000000000000000000000000000000000000000..2d91a469b99d0235759ba7e0c6aa3c686f785e36
--- /dev/null
+++ b/src/art/vector_revamp/Arm.tw
@@ -0,0 +1,44 @@
+:: Art_Vector_Revamp_Arm_ [nobr]
+
+/* Arms position switch courtesy of Nov-X */
+
+<<if _artSlave.amp != 1>>
+	<<if _artSlave.devotion > 50>>
+		<<set _leftArmType = "High">>
+		<<set _rightArmType = "High">>
+	<<elseif _artSlave.trust >= -20>>
+		<<if _artSlave.devotion < -20>>
+			<<set _leftArmType = "Low">>
+			<<set _rightArmType = "Low">>
+		<<elseif _artSlave.devotion <= 20>>
+			<<set _leftArmType = "Low">>
+			<<set _rightArmType = "Low">>
+		<<else>>
+			<<set _leftArmType = "Mid">>
+			<<set _rightArmType = "High">>
+		<</if>>
+	<<else>>
+		<<set _leftArmType = "Mid">>
+		<<set _rightArmType = "Mid">>
+	<</if>>
+	
+	<<set _art = "Art_Vector_Revamp_Arm_Right_"+_rightArmType >>
+	<<include _art>>
+	<<set _art = "Art_Vector_Revamp_Arm_Left_"+_leftArmType >>
+	<<include _art>>
+<<else>>
+	<<include Art_Vector_Revamp_Arm_Stump>>
+<</if>>
+
+<<if _showArmHair == 1>>
+	<<if _artSlave.amp == 1 || _leftArmType == "High">>
+		<<switch _artSlave.underArmHStyle>>
+			<<case "bushy">>
+			  <<include Art_Vector_Revamp_Arm_Up_Hair_Bushy >>
+			<<case "neat">>
+			  <<include Art_Vector_Revamp_Arm_Up_Hair_Neat >>
+			<<default>>
+			  /* armpit hair style not supported - don't display anything*/
+		<</switch>>
+	<</if>>
+<</if>>
\ No newline at end of file
diff --git a/src/art/vector_revamp/Balls.tw b/src/art/vector_revamp/Balls.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6bb19d768077307c24f801662c027366568a749a
--- /dev/null
+++ b/src/art/vector_revamp/Balls.tw
@@ -0,0 +1,17 @@
+:: Art_Vector_Revamp_Balls_ [nobr]
+
+<<if _showBalls == 1 && _artSlave.scrotum > 0 && _artSlave.balls > 0 >>
+	<<if _artSlave.scrotum >= 6>>
+		<<set _ballSize = 4>>
+	<<elseif _artSlave.scrotum >= 4>>
+		<<set _ballSize = 3>>
+	<<elseif _artSlave.scrotum >= 3>>
+		<<set _ballSize = 2>>
+	<<elseif _artSlave.scrotum >= 2>>
+		<<set _ballSize = 1>>
+	<<else>>
+		<<set _ballSize = 0>>
+	<</if>>
+  <<set _art = "Art_Vector_Revamp_Balls_"+_ballSize>>
+  <<include _art>>
+<</if>>
diff --git a/src/art/vector_revamp/Belly.tw b/src/art/vector_revamp/Belly.tw
new file mode 100644
index 0000000000000000000000000000000000000000..934de93cc998cec5d60d0f42a8918fbb1fd706a9
--- /dev/null
+++ b/src/art/vector_revamp/Belly.tw
@@ -0,0 +1,28 @@
+:: Art_Vector_Revamp_Belly_ [nobr]
+
+
+<<if _bellyLevel > 0>>
+	<<set _art = "Art_Vector_Revamp_Belly_" + _bellyLevel >>
+	<<include _art>>
+	<<if _showBellyPiercings>>
+		/* belly piercings */
+		<<if _artSlave.navelPiercing >= 1>>
+			<<set _art = "Art_Vector_Revamp_Belly_" + _bellyLevel + "_Piercing">>
+			<<include _art>>
+		<</if>>
+		<<if _artSlave.navelPiercing == 2>>
+			<<set _art = "Art_Vector_Revamp_Belly_" + _bellyLevel + "_Piercing_Heavy">>
+			<<include _art>>
+		<</if>>
+	<</if>>
+<<else>>
+	/* flat midriff piercings */
+	<<if _showBellyPiercings>>
+		<<if _artSlave.navelPiercing >= 1>>
+			<<include Art_Vector_Revamp_Navel_Piercing>>
+		<</if>>
+		<<if _artSlave.navelPiercing == 2>>
+			<<include Art_Vector_Revamp_Navel_Piercing_Heavy>>
+		<</if>>
+	<</if>>
+<</if>>
diff --git a/src/art/vector_revamp/Body_Clothing_Control.tw b/src/art/vector_revamp/Body_Clothing_Control.tw
new file mode 100644
index 0000000000000000000000000000000000000000..b697adf697b980701003a5c9fb70e1ba04858bfa
--- /dev/null
+++ b/src/art/vector_revamp/Body_Clothing_Control.tw
@@ -0,0 +1,182 @@
+:: Art_Vector_Revamp_Body_Clothing_Control_ [nobr]
+
+<<set _eyeBallColor = "#ffffff">>
+
+<<if _artSlave.eyeColor neq "">>
+	<<if _artSlave.eyeColor.split(" ").length > 1>>
+		<<set _eyeLens = _artSlave.eyeColor.split(" ")[0]>>
+		
+		<<if _eyeLens == "demonic">>
+			<<set _eyeBallColor = _eyeColor>>
+		<<elseif _eyeLens == "devilish">>
+			<<set _eyeBallColor = "#000000">>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<set _lipsColor = "#da8c7f">>
+<<set _lipsOpacity = "0.3">>
+<<switch _artSlave.makeup>>
+	<<case 1>>
+		/*Nice*/
+		<<set _lipsColor = "#ff69b4">>
+		<<set _lipsOpacity = "0.5">>
+	<<case 2>>
+		/*Gorgeous*/
+		<<set _lipsColor = "#8b008b">>
+		<<set _lipsOpacity = "0.7">>
+	<<case 3>>
+		/*Hair coordinated*/
+		<<set _lipsColor = _hairColour>>
+	<<case 4>>
+		/*Slutty*/
+		<<set _lipsColor = "#ff0000">>
+		<<set _lipsOpacity = "1.0">>
+	<<case 5>>
+		/*Neon*/
+		<<set _lipsColor = "#DC143C">>
+		<<set _lipsOpacity = "1.0">>
+	<<case 6>>
+		/*Neon hair coordinated*/
+		<<set _lipsColor = _hairColour>>
+		<<set _lipsOpacity = "1.0">>
+	<<case 7>>
+		/*Metallic*/
+		<<set _lipsColor = "#b22222">>
+		<<set _lipsOpacity = "0.7">>
+	<<case 8>>
+		/*Metallic hair coordinated*/
+		<<set _lipsColor = _hairColour>>
+		<<set _lipsOpacity = "0.7">>
+	<<default>>
+		
+<</switch>>
+
+<<set _hairLength = "Short">>
+
+<<if $activeSlave.hLength >= 80>>
+	<<set _hairLength = "Long">>
+<<elseif $activeSlave.hLength >= 40>>
+	<<set _hairLength = "Medium">>
+<<else>>
+	<<set _hairLength = "Short">>
+<</if>>
+		
+
+<<set _muscles_value = _artSlave.muscles + 100>>
+<<set _art_muscle_visibility = 0.910239*Math.log(0.02*_muscles_value) >>
+
+<<set _bellyLevel = 0>>
+
+<<if _artSlave.belly >= 120000>>
+	<<set _bellyLevel = 7>>
+<<elseif _artSlave.belly >= 30000>>
+	<<set _bellyLevel = 6>>
+<<elseif _artSlave.belly >= 15000>>
+	<<set _bellyLevel = 5>>
+<<elseif _artSlave.belly >= 10000>>
+	<<set _bellyLevel = 4>>
+<<elseif _artSlave.belly >= 5000>>
+	<<set _bellyLevel = 3>>
+<<elseif _artSlave.belly >= 1500>>
+	<<set _bellyLevel = 2>>
+<<elseif _artSlave.belly >= 500>>
+	<<set _bellyLevel = 1>>
+<</if>>
+
+<<set _showEyes = 1>>
+<<set _showLips = 1>>
+<<set _showMouth = 1>>
+<<set _showPubic = 1>>
+<<set _showPussy = _artSlave.vagina >= 0>>
+<<set _showArmHair = 1>>
+<<set _showHair = _artSlave.hStyle != "shaved">>
+<<set _showBoobs = 1>>
+<<set _showNipples = 1>>
+<<set _showPenis = 1>>
+<<set _showBalls = 1>>
+<<set _showArmHighlight = 0>>
+<<set _showTorsoHighlight = 0>>
+<<set _showLegHighlight = 0>>
+<<set _showBoobsHighlight = 0>>
+<<set _showEyesHighlight = 1>>
+<<set _showHeadHighlight = 0>>
+<<set _showBellyPiercings = 1>>
+<<set _showNipplePiercings = 1>>
+<<set _showPussyPiercings = 1>>
+<<set _bellyDetailsOpacity = 1>>
+<<set _bellyColor = _skinColour>>
+<<set _bellyUpperColor = _skinColour>>
+<<set _chastityAnal = _artSlave.dickAccessory == "anal chastity" || _artSlave.dickAccessory == "combined chastity" || _artSlave.vaginalAccessory == "anal chastity" || _artSlave.vaginalAccessory == "combined chastity" >>
+
+<<set _chastityVaginal = _artSlave.vaginalAccessory == "chastity belt" || _artSlave.vaginalAccessory == "combined chastity">>
+
+<<if _artSlave.fuckdoll > 0>>
+	<<set _showEyes = 0>>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showHair = 0>>	
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showBoobsHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+<</if>>
+
+<<if _artSlave.clothes == "a nice maid outfit">>
+	<<set _showPubic = 0>>
+	<<set _showBoobs = 0>>
+	<<set _showBellyPiercings = 0>>
+	<<set _showNipplePiercings = 0>>
+	<<set _showNipples = 0>>
+	<<set _showPenis = 0>>
+	<<set _showBalls = 0>>
+	<<set _bellyDetailsOpacity = 0>>
+	<<set _bellyColor = "#FFFFFF">>
+	<<set _bellyUpperColor = _bellyColor>>
+<</if>>
+
+<<if _artSlave.clothes == "a slutty maid outfit">>
+	<<set _showBellyPiercings = 0>>
+	<<set _bellyDetailsOpacity = 0>>
+	<<set _bellyColor = "#FFFFFF">>
+<</if>>
+
+<<if _artSlave.clothes == "restrictive latex">>
+	<<set _showEyes = 0>>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showHair = 0>>
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+	<<set _showBellyPiercings = 0>>
+<</if>>
+
+<<if _artSlave.clothes == "a latex catsuit">>
+	<<set _showPubic = 0>>
+	<<set _showArmHair = 0>>
+	<<set _showArmHighlight = 1>>
+	<<set _showTorsoHighlight = 1>>
+	<<set _showLegHighlight = 1>>
+	<<set _showBoobsHighlight = 1>>
+	<<set _showHeadHighlight = 1>>
+	<<set _showBellyPiercings = 0>>
+	<<set _showNipplePiercings = 0>>
+	<<set _chastityAnal = 0>>
+	<<set _chastityVaginal = 0>>
+<</if>>
+
+<<if $showBodyMods == 0>>
+	<<set _showNipplePiercings = 0>>
+	<<set _showBellyPiercings = 0>>
+	<<set _showPussyPiercings = 0>>
+<</if>>
+
+<<if $seeVectorArtHighlights == 1>>
+	<<set _showArmHighlight = 0>>
+	<<set _showTorsoHighlight = 0>>
+	<<set _showLegHighlight = 0>>
+	<<set _showBoobsHighlight = 0>>
+<</if>>
\ No newline at end of file
diff --git a/src/art/vector_revamp/Boob.tw b/src/art/vector_revamp/Boob.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3769f4950c5ab754b83518862ac652a44f504196
--- /dev/null
+++ b/src/art/vector_revamp/Boob.tw
@@ -0,0 +1,58 @@
+:: Art_Vector_Revamp_Boob_ [nobr]
+
+/* BEWARE: _art_have_boobs and _art_scale_factor interfere with Art_Vector_Revamp_Penis_ */
+<<set _art_have_boobs to true>>
+
+/* BEWARE: _art_boob_transform is also read by Art_Vector_Revamp_Boob_Addons_ */
+
+/* 
+Prepare SVG transform matrix for continuous boob scaling.
+This transform affects boobs, areolae and piercings.
+The parameters were fit by points (300,0.75) and (15000,1.5).
+See https://www.wolframalpha.com/input/?i=log+fit+%7B%7B300,1%7D,%7B15000,2.5%7D%7D .
+Boobs start at 300cc as of "flesh description widgets".
+Upper value was discussed at https://github.com/Free-Cities/Free-Cities/issues/950#issuecomment-321359466 .
+*/
+
+<<set _art_scale_factor = 0.255622*Math.log(0.0626767*_artSlave.boobs) >>
+
+<<set _art_translation_x = -283.841*_art_scale_factor+280.349 >>
+<<set _art_translation_y = -198.438*_art_scale_factor+208.274 >>
+<<set _art_boob_transform = "matrix(" + _art_scale_factor +",0,0," + _art_scale_factor + "," + _art_translation_x + "," + _art_translation_y + ")">>
+
+/*
+_art_boob_transform is for internal program usage.
+_art_transform will affect the display.
+*/
+<<set _art_transform = _art_boob_transform>>
+
+<<if _artSlave.boobs < 300 >> 
+	/* BEWARE: this threshold may be used in other art-related code, too */
+	/* boobs too small - draw areolae directly onto torso */
+	<<set _art_scale_factor = 1 >>
+	<<set _art_translation_x = 0 >> /* a little shift to the right is needed due to perspective */
+	<<set _art_translation_y = 0 >>
+	<<set _art_boob_transform = "matrix(" + _art_scale_factor +",0,0," + _art_scale_factor + "," + _art_translation_x + "," + _art_translation_y + ")">>
+	<<set _art_transform = _art_boob_transform>>
+	<<if _showNipples>>
+		<<include Art_Vector_Revamp_Boob_Areola_NoBoob>>
+	<</if>>
+<<else>>
+	<<if _showBoobs == 1>>
+	  <<include Art_Vector_Revamp_Boob>>
+	  <<if _showNipples>>
+		<<include Art_Vector_Revamp_Boob_Areola>>
+	  <</if>>
+	<</if>>
+	/* shiny clothings */
+	<<if $seeVectorArtHighlights == 1>>
+		<<if _showBoobsHighlight == 1>>
+			<<include Art_Vector_Revamp_Boob_Highlights1>>
+			<<include Art_Vector_Revamp_Boob_Highlights2>>
+		<</if>>
+	<</if>>
+<</if>>
+
+
+/* set _art_transform to empty string so stray SVG groups in other passages are not affected */
+<<set _art_transform = "">>
diff --git a/src/art/vector_revamp/Boob_Addons.tw b/src/art/vector_revamp/Boob_Addons.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1445dfba4d0d9181d1c0dc77d567284720418a0a
--- /dev/null
+++ b/src/art/vector_revamp/Boob_Addons.tw
@@ -0,0 +1,59 @@
+:: Art_Vector_Revamp_Boob_Addons_ [nobr]
+
+/* BEWARE: _art_boob_transform is set by Art_Vector_Revamp_Boob_ */
+
+/* load _art_transform from _art_boob_transform */
+<<set _art_transform = _art_boob_transform>>
+
+/* this outfit is worn under the piercings */
+<<if _artSlave.clothes == "uncomfortable straps">>
+	<<if _artSlave.boobs < 300 >>
+		/* BEWARE: this threshold should be kept in sync with the one in Art_Vector_Revamp_Boob_ */
+		/* boobs too small - have straps on torso only */
+	<<else>>
+		<<include Art_Vector_Revamp_Boob_Outfit_Straps>>
+	<</if>>
+<</if>>
+
+<<if _showNipplePiercings>>
+	<<if _artSlave.nipplesPiercing == 1>>
+		<<if _artSlave.boobs < 300 >>
+			<<include Art_Vector_Revamp_Boob_Piercing_NoBoob>>
+		<<else>>
+			<<include Art_Vector_Revamp_Boob_Piercing>>
+		<</if>>
+	<<elseif _artSlave.nipplesPiercing == 2>>
+		<<if _artSlave.boobs < 300 >>
+			<<include Art_Vector_Revamp_Boob_Piercing_NoBoob_Heavy>>
+		<<else>>
+			<<include Art_Vector_Revamp_Boob_Piercing_Heavy>>
+		<</if>>
+	<</if>>
+	<<if _artSlave.areolaePiercing == 1>>
+		<<if _artSlave.boobs < 300 >>
+			<<include Art_Vector_Revamp_Boob_Areola_Piercing_NoBoob>>
+		<<else>>
+			<<include Art_Vector_Revamp_Boob_Areola_Piercing>>
+		<</if>>
+	<<elseif _artSlave.areolaePiercing == 2>>
+		<<if _artSlave.boobs < 300 >>
+			<<include Art_Vector_Revamp_Boob_Areola_Piercing_NoBoob_Heavy>>
+		<<else>>
+			<<include Art_Vector_Revamp_Boob_Areola_Piercing_Heavy>>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<if _artSlave.clothes == "a nice maid outfit">>
+	<<if _artSlave.boobs >= 300 >>
+		<<include Art_Vector_Revamp_Boob_Outfit_Maid>>
+	<</if>>
+	
+<<elseif _artSlave.clothes == "a slutty maid outfit">>
+	/*<<if _artSlave.boobs >= 300 >>
+		<<include Art_Vector_Revamp_Boob_Outfit_Maid_Lewd>>
+	<</if>>*/
+<</if>>
+
+/* set _art_transform to empty string so stray SVG groups in other passages are not affected */
+<<set _art_transform = "">>
diff --git a/src/art/vector_revamp/Butt.tw b/src/art/vector_revamp/Butt.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6221b425a5531437bba5dcf30426e30c7e626df3
--- /dev/null
+++ b/src/art/vector_revamp/Butt.tw
@@ -0,0 +1,17 @@
+:: Art_Vector_Revamp_Butt_ [nobr]
+
+/* BEWARE: _buttSize is also used in Art_Vector_Revamp_Leg_ */
+
+<<if _artSlave.amp != 1>>
+	<<if _artSlave.butt > 6>>
+		<<set _buttSize = 3>>
+	<<elseif _artSlave.butt > 4>>
+		<<set _buttSize = 2>>
+	<<elseif _artSlave.butt > 2>>
+		<<set _buttSize = 1>>
+	<<else>>
+		<<set _buttSize = 0>>
+	<</if>>
+	<<set _art = "Art_Vector_Revamp_Butt_"+_buttSize >>
+	<<include _art >>
+<</if>>
diff --git a/src/art/vector_revamp/Chastity_Belt.tw b/src/art/vector_revamp/Chastity_Belt.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3668b4d43a4c37426a7ed92b5fbbf8fed005301e
--- /dev/null
+++ b/src/art/vector_revamp/Chastity_Belt.tw
@@ -0,0 +1,16 @@
+:: Art_Vector_Revamp_Chastity_Belt_ [nobr]
+
+/* note: penile chastity is handled by penis display */
+
+<<if _chastityAnal>>
+	<<include Art_Vector_Revamp_Chastity_Anus>>
+<</if>>
+
+<<if _chastityVaginal>>
+	<<include Art_Vector_Revamp_Chastity_Vagina>>
+<</if>>
+
+<<if _chastityAnal || _chastityVaginal >>
+	<<include Art_Vector_Revamp_Chastity_Base>>
+<</if>>
+
diff --git a/src/art/vector_revamp/Collar.tw b/src/art/vector_revamp/Collar.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1cbd18fc258101c4da1889b3d44358448a7ef7e1
--- /dev/null
+++ b/src/art/vector_revamp/Collar.tw
@@ -0,0 +1,28 @@
+:: Art_Vector_Revamp_Collar_ [nobr]
+
+/* TODO: find out where "uncomfortable leather" collar art went */
+
+<<switch _artSlave.collar>>
+<<case "leather with cowbell">>
+	<<include Art_Vector_Revamp_Collar_Cowbell >>
+<<case "heavy gold">>
+	<<include Art_Vector_Revamp_Collar_Gold_Heavy >>
+<<case "neck corset">>
+	<<include Art_Vector_Revamp_Collar_Neck_Corset >>
+<<case "pretty jewelry">>
+	<<include Art_Vector_Revamp_Collar_Pretty_Jewelry >>
+<<case "cruel retirement counter">>
+	<<include Art_Vector_Revamp_Collar_Retirement_Cruel >>
+<<case "nice retirement counter">>
+	<<include Art_Vector_Revamp_Collar_Retirement_Nice >>
+<<case "satin choker">>
+	<<include Art_Vector_Revamp_Collar_Satin_Choker >>
+<<case "shock punishment">>
+	<<include Art_Vector_Revamp_Collar_Shock_Punishment >>
+<<case "stylish leather">>
+	<<include Art_Vector_Revamp_Collar_Stylish_Leather >>
+<<case "tight steel">>
+	<<include Art_Vector_Revamp_Collar_Tight_Steel >>
+<<default>>
+/* collar not supported - don't display anything */
+<</switch>>
diff --git a/src/art/vector_revamp/Feet.tw b/src/art/vector_revamp/Feet.tw
new file mode 100644
index 0000000000000000000000000000000000000000..43a21d84476f7c72a73221471631c9d0480e9e84
--- /dev/null
+++ b/src/art/vector_revamp/Feet.tw
@@ -0,0 +1,19 @@
+:: Art_Vector_Revamp_Feet_ [nobr]
+
+/* BEWARE: Uses _legSize set by Art_Vector_Revamp_Leg_ */
+
+<<if _artSlave.amp != 1>>
+	<<switch _artSlave.shoes>>
+	<<case "heels">>
+		<<include Art_Vector_Revamp_Shoes_Heel>>
+	<<case "extreme heels">>
+		<<include Art_Vector_Revamp_Shoes_Exterme_Heel>>
+	<<case "boots">>
+		<<include Art_Vector_Revamp_Shoes_Boot>>
+	<<case "flats">>
+		<<include Art_Vector_Revamp_Shoes_Flat>>
+	<<default>>
+		<<include Art_Vector_Revamp_Feet>>
+	<</switch>>
+<</if>>
+
diff --git a/src/art/vector_revamp/Generate_Stylesheet.tw b/src/art/vector_revamp/Generate_Stylesheet.tw
new file mode 100644
index 0000000000000000000000000000000000000000..8cea981163ed66f7f005f91b4459ce45ea75f14d
--- /dev/null
+++ b/src/art/vector_revamp/Generate_Stylesheet.tw
@@ -0,0 +1,55 @@
+:: Art_Vector_Revamp_Generate_Stylesheet_ [nobr]
+
+/* _art_display_class is the style class for this display */
+<<if _art_display_id > 0 >>
+	<<set _art_display_id += 1>>
+<<else>>
+	<<set _art_display_id = 1>>
+<</if>>
+<<set _art_display_class = "ad"+_art_display_id >>
+
+<<print "<style>."+_art_display_class+" {
+    position: absolute;
+    height: 100%;
+    margin-left: auto;
+    margin-right: auto;
+    left: 0;
+    right: 0;
+}
+."+_art_display_class+" .white   { fill:#FFFFFF; }
+."+_art_display_class+" .skin    { fill:"+_skinColour+"; }
+."+_art_display_class+" .head    { "+_headSkinStyle+"; }
+."+_art_display_class+" .torso   { "+_torsoSkinStyle+"; }
+."+_art_display_class+" .boob    { "+_boobSkinStyle+"; }
+."+_art_display_class+" .penis   { "+_penisSkinStyle+"; }
+."+_art_display_class+" .scrotum { "+_scrotumSkinStyle+"; }
+."+_art_display_class+" .areola  { "+_areolaStyle+"; }
+."+_art_display_class+" .labia   { "+_labiaStyle+"; }
+."+_art_display_class+" .hair    { fill:"+_hairColour+"; }
+."+_art_display_class+" .shoe    { fill:"+_shoeColour+"; }
+."+_art_display_class+" .shoe_shadow    { fill:"+_shoeShadowColour+"; }
+."+_art_display_class+" .smart_piercing { fill:#4DB748; }
+."+_art_display_class+" .steel_piercing { fill:#787878; }
+."+_art_display_class+" .steel_chastity { fill:#BABABA; }
+."+_art_display_class+" .outfit_base  { fill:"+_outfitBaseColour+"; }
+."+_art_display_class+" .gag     { fill:#BF2126; }
+."+_art_display_class+" .shadow  { fill:#010101; }
+."+_art_display_class+" .muscle_tone  { fill:#010101;fill-opacity:"+_art_muscle_visibility+";}
+."+_art_display_class+" .glasses { fill:#010101; }
+."+_art_display_class+" .lips{ fill:"+_lipsColor+";fill-opacity:"+_lipsOpacity+"; }
+."+_art_display_class+" .eyeball { fill:"+_eyeBallColor+"; }
+."+_art_display_class+" .iris { fill:"+_eyeColor+"; }
+."+_art_display_class+" .highlight1{fill:#ffffff;opacity:0.9;mix-blend-mode:soft-light;}
+."+_art_display_class+" .highlight2{fill:#ffffff;opacity:0.9;mix-blend-mode:soft-light;}
+."+_art_display_class+" .highlight3{fill:#ffffff;fill-opacity:0.9;mix-blend-mode:soft-light;}
+."+_art_display_class+" .highlightStrong{fill:#ffffff;}
+."+_art_display_class+" .shade1{fill:#623729;fill-opacity:0.1;mix-blend-mode:screen;}
+."+_art_display_class+" .shade2{fill:#764533;fill-opacity:0.1;mix-blend-mode:screen;}
+."+_art_display_class+" .shade3{fill:#88503a;fill-opacity:0.1;mix-blend-mode:screen;}
+."+_art_display_class+" .shade4{fill:#574b6f;fill-opacity:0.1;mix-blend-mode:screen;}
+."+_art_display_class+" .armpit_hair{fill:"+_underArmHColor+";}
+."+_art_display_class+" .pubic_hair{fill:"+_pubicColor+";}
+."+_art_display_class+"	.belly_details{fill-opacity:" + _bellyDetailsOpacity + ";}
+."+_art_display_class+"	.belly.skin{fill:" + _bellyColor + ";}
+."+_art_display_class+" .belly_upper.skin{fill:" + _bellyUpperColor + ";}
+</style>" >>
diff --git a/src/art/vector_revamp/Hair_Back.tw b/src/art/vector_revamp/Hair_Back.tw
new file mode 100644
index 0000000000000000000000000000000000000000..25807322b5fb3629d585300e227538e6434b30c5
--- /dev/null
+++ b/src/art/vector_revamp/Hair_Back.tw
@@ -0,0 +1,25 @@
+:: Art_Vector_Revamp_Hair_Back_ [nobr]
+
+/*Default _hairArt value and fallback incase it is not set before calling include*/
+<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Messy_Short">>
+
+<<if _showHair == 1>>
+	<<switch _artSlave.hStyle>>
+	<<case "neat">>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Neat_" + _hairLength >>
+	<<case "bun" "up">>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Bun_" + _hairLength >>
+	<<case "tails">>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Tails_" + _hairLength >>
+	<<case "ponytail">>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Ponytail_" + _hairLength >>
+	<<case "braided">>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Braids_" + _hairLength >>
+	<<default>>
+		<<set _hairBackArt = "Art_Vector_Revamp_Hair_Back_Messy_" + _hairLength >>
+	<</switch>>
+	
+	<<if _hairBackArt != "">>
+		<<include _hairBackArt>>
+	<</if>>
+<</if>>
\ No newline at end of file
diff --git a/src/art/vector_revamp/Hair_Fore.tw b/src/art/vector_revamp/Hair_Fore.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4fe0cfc0380ea5c6ee6591d264dc0bbb60c743a0
--- /dev/null
+++ b/src/art/vector_revamp/Hair_Fore.tw
@@ -0,0 +1,25 @@
+:: Art_Vector_Revamp_Hair_Fore_ [nobr]
+
+/*Default _hairArt value and fallback incase it is not set before calling include*/
+<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Messy_Short">>
+
+<<if _showHair == 1>>
+	<<switch _artSlave.hStyle>>
+	<<case "neat">>
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Neat">>
+	<<case "bun" "up">>
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Bun">>
+	<<case "braided">>
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Braids">>
+	<<case "tails">>
+		/*No special art for fore tails use fore bun*/
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Bun">>
+	<<case "ponytail">>
+		/*No special art for fore ponytail use fore bun*/
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Bun">>
+	<<default>>
+		<<set _hairForeArt = "Art_Vector_Revamp_Hair_Fore_Messy">>
+	<</switch>>
+	
+	<<include _hairForeArt >>
+<</if>>
diff --git a/src/art/vector_revamp/Head.tw b/src/art/vector_revamp/Head.tw
new file mode 100644
index 0000000000000000000000000000000000000000..581020e4225762f27f51458cffb04139ae025a11
--- /dev/null
+++ b/src/art/vector_revamp/Head.tw
@@ -0,0 +1,59 @@
+:: Art_Vector_Revamp_Head_ [nobr]
+
+
+<<include Art_Vector_Revamp_Head>>
+
+<<if _showEyes == 1>>
+	<<if _artSlave.devotion > 50>>
+		<<include Art_Vector_Revamp_Eyes_Happy>>
+		<<if _showEyesHighlight == 1>>
+			<<include Art_Vector_Revamp_Eyes_Happy_Highlights>>
+		<</if>>
+	<<elseif _artSlave.devotion >= 0>>
+		<<include Art_Vector_Revamp_Eyes_Shy>>
+		<<if _showEyesHighlight == 1>>
+			<<include Art_Vector_Revamp_Eyes_Shy_Highlights>>
+		<</if>>
+	<<elseif _artSlave.devotion >= -50>>
+		<<include Art_Vector_Revamp_Eyes_Closed>>
+	<<else>>
+		<<include Art_Vector_Revamp_Eyes_Angry>>
+		<<if _showEyesHighlight == 1>>
+			<<include Art_Vector_Revamp_Eyes_Angry_Highlights>>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<if _showMouth == 1>>
+	<<if _artSlave.trust > 20>>
+		<<include Art_Vector_Revamp_Makeup_Mouth_Happy>>
+		<<include Art_Vector_Revamp_Mouth_Happy>>
+		<<include Art_Vector_Revamp_Mouth_Happy_Highlights>>
+		
+	<<else>>
+		<<include Art_Vector_Revamp_Makeup_Mouth_Angry>>
+		
+		<<include Art_Vector_Revamp_Mouth_Angry>>
+		<<include Art_Vector_Revamp_Mouth_Angry_Highlights>>
+	<</if>>
+<</if>>
+
+<<if _showHeadHighlight == 1>>
+	<<include Art_Vector_Revamp_Face_Highlights>>
+<</if>>
+
+/* ADDONS */
+
+<<switch _artSlave.collar>>
+	<<case "dildo gag">>
+		<<include Art_Vector_Revamp_Dildo_Gag>>
+	<<case "bit gag">>
+		<<include Art_Vector_Revamp_Bit_Gag>>
+	<<case "ball gag">>
+		<<include Art_Vector_Revamp_Ball_Gag>>
+	<<default>>
+	<</switch>>
+
+<<if _artSlave.eyewear == "corrective glasses" or _artSlave.eyewear == "glasses" or _artSlave.eyewear == "blurring glasses">>
+  <<include Art_Vector_Revamp_Glasses>>
+<</if>>
diff --git a/src/art/vector_revamp/Leg.tw b/src/art/vector_revamp/Leg.tw
new file mode 100644
index 0000000000000000000000000000000000000000..8f8f3d11f6fad71d3ccb613099904fce79b8b6b1
--- /dev/null
+++ b/src/art/vector_revamp/Leg.tw
@@ -0,0 +1,35 @@
+:: Art_Vector_Revamp_Leg_ [nobr]
+
+/* Leg wideness switch courtesy of Nov-X */
+
+/* BEWARE: _legSize is also used in Art_Vector_Revamp_Feet_ */
+/* BEWARE: _buttSize set by Art_Vector_Revamp_Butt_ */
+
+<<if _artSlave.amp != 1>>
+	<<set _legSize = "Normal">>
+	<<if _artSlave.hips < 0>>
+		<<if _artSlave.weight > 95>>
+			<<set _legSize = "Normal">>
+		<<else>>
+			<<set _legSize = "Narrow">>
+		<</if>>
+	<<elseif _artSlave.hips == 0>>
+		<<if _artSlave.weight > 95>>
+			<<set _legSize = "Wide">>
+		<<else>>
+			<<set _legSize = "Normal">>
+		<</if>>
+	<<elseif _artSlave.hips > 0>>
+		<<set _legSize = "Wide">>
+	<</if>>
+	<<set _art = "Art_Vector_Revamp_Leg_"+_legSize >>
+	<<include _art >>
+	<<if _showLegHighlight == 1>>
+		<<include Art_Vector_Revamp_Leg_Highlights1>>
+		<<include Art_Vector_Revamp_Leg_Highlights2>>
+	<</if>>
+<<else>>
+  <<set _art = "Art_Vector_Revamp_Stump" >>
+  <<include _art >>
+<</if>>
+
diff --git a/src/art/vector_revamp/Penis.tw b/src/art/vector_revamp/Penis.tw
new file mode 100644
index 0000000000000000000000000000000000000000..fc3089656d8e877e7c64f5966999c2790027b9e2
--- /dev/null
+++ b/src/art/vector_revamp/Penis.tw
@@ -0,0 +1,45 @@
+:: Art_Vector_Revamp_Penis_ [nobr]
+
+/* BEWARE: _art_have_boobs and _art_scale_factor interfere with Art_Vector_Revamp_Boob_ */
+
+<<if _artSlave.dick >= 8>>
+  <<set _penisSize = 6>>
+<<elseif _artSlave.dick >= 7>>
+  <<set _penisSize = 5>>
+<<elseif _artSlave.dick >= 6>>
+  <<set _penisSize = 4>>
+<<elseif _artSlave.dick >= 5>>
+  <<set _penisSize = 3>>
+<<elseif _artSlave.dick >= 4>>
+  <<set _penisSize = 2>>
+<<elseif _artSlave.dick >= 2>>
+  <<set _penisSize = 1>>
+<<elseif _artSlave.dick >= 1>>
+  <<set _penisSize = 0>>
+<<else>>
+  <<set _penisSize = -1>>
+<</if>>
+
+<<if _penisSize >= 0 && _showPenis == 1>>
+  <<if canAchieveErection(_artSlave) && (_artSlave.dickAccessory != "chastity") && (_artSlave.dickAccessory != "combined chastity") >>
+    <<if (def _art_have_boobs) && (_art_scale_factor < 2.6)>>
+      /* only draw erect penis over boobs if boobs do not hide the penis' base */
+      <<set _art = "Art_Vector_Revamp_Penis_"+_penisSize>>
+      <<include _art>>
+    <</if>>
+  <<else>>
+    <<if ndef _art_have_boobs >>
+      /* flaccid penises are always drawn behind the boobs */
+      <<set _art = "Art_Vector_Revamp_Flaccid_"+_penisSize>>
+      <<include _art>>
+      <<if (_artSlave.dickAccessory == "chastity") || (_artSlave.dickAccessory == "combined chastity") >>
+        /* this draws chastity OVER latex catsuit. prndev finds this alright. */
+        <<set _art = "Art_Vector_Revamp_Chastity_Cage_"+_penisSize>>
+        <<include _art>>
+      <</if>>
+    <</if>>
+  <</if>>
+<</if>>
+ 
+/* unset the variable for the next display */
+<<unset _art_have_boobs >>
diff --git a/src/art/vector_revamp/Pubic_Hair.tw b/src/art/vector_revamp/Pubic_Hair.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1c2d19a61479c2c7bef90327f8343f0eb8da01f4
--- /dev/null
+++ b/src/art/vector_revamp/Pubic_Hair.tw
@@ -0,0 +1,27 @@
+:: Art_Vector_Revamp_Pubic_Hair_ [nobr]
+<<if _showPubic == 1>>
+  <<if $showBodyMods == 1>>
+    <<if _artSlave.vaginaTat == "rude words">>
+      <<if _artSlave.dick != 0>>
+        <<set _art_pussy_tattoo_text to "Useless" >>
+      <<else>>
+        <<set _art_pussy_tattoo_text to "Fucktoy" >>
+      <</if>>
+      <<include Art_Vector_Revamp_Pussy_Tattoo>>
+    <</if>>
+  <</if>>
+
+  <<switch _artSlave.pubicHStyle>>
+    <<case "strip" "in a strip">>
+      <<include Art_Vector_Revamp_Pubic_Hair_Strip >>
+    <<case "bushy" "bushy in the front and neat in the rear" "very bushy">>
+      <<include Art_Vector_Revamp_Pubic_Hair_Bush >>
+    <<case "neat">>
+      <<include Art_Vector_Revamp_Pubic_Hair_Neat >>
+    <<case "waxed">>
+      /* no hair to display */
+    <<default>>
+      /* pubic hair style not supported - don't display anything*/
+  <</switch>>
+
+<</if>>
diff --git a/src/art/vector_revamp/Pussy.tw b/src/art/vector_revamp/Pussy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a1effb7a367c2acf927bde0cb6d7277b310bc4e3
--- /dev/null
+++ b/src/art/vector_revamp/Pussy.tw
@@ -0,0 +1,6 @@
+:: Art_Vector_Revamp_Pussy_ [nobr]
+
+<<if _chastityVaginal == 0 && _showPussy>>
+	<<include Art_Vector_Revamp_Pussy>>
+<</if>>
+
diff --git a/src/art/vector_revamp/Pussy_Piercings.tw b/src/art/vector_revamp/Pussy_Piercings.tw
new file mode 100644
index 0000000000000000000000000000000000000000..53ca7997aeb64ce92fff83248567bf96dc741717
--- /dev/null
+++ b/src/art/vector_revamp/Pussy_Piercings.tw
@@ -0,0 +1,17 @@
+:: Art_Vector_Revamp_Pussy_Piercings_ [nobr]
+
+<<if _showPussy == 1 && _showPussyPiercings == 1>>
+    <<if _artSlave.vaginaPiercing == 1>>
+      <<include Art_Vector_Revamp_Pussy_Piercing>>
+    <<elseif _artSlave.vaginaPiercing == 2>>
+      <<include Art_Vector_Revamp_Pussy_Piercing_Heavy>>
+    <</if>>
+
+    <<if _artSlave.clitPiercing == 1>>
+      <<include Art_Vector_Revamp_Clit_Piercing>>
+    <<elseif _artSlave.clitPiercing == 2>>
+      <<include Art_Vector_Revamp_Clit_Piercing_Heavy>>
+    <<elseif _artSlave.clitPiercing == 3>>
+      <<include Art_Vector_Revamp_Clit_Piercing_Smart>>
+    <</if>>
+<</if>>
diff --git a/src/art/vector_revamp/Set_Colour_Hair.tw b/src/art/vector_revamp/Set_Colour_Hair.tw
new file mode 100644
index 0000000000000000000000000000000000000000..bb415763c465e96b04e5a0a0d7680cdba349b62f
--- /dev/null
+++ b/src/art/vector_revamp/Set_Colour_Hair.tw
@@ -0,0 +1,230 @@
+:: Art_Vector_Revamp_Set_Colour_Hair_ [nobr]
+
+/* 
+"Free-Cities Dyes (taken from Cosmetic Rules Assistant Settings)"-
+to-"HTML Color"-Map
+courtesy of Nov-X */
+
+<<switch _artSlave.hColor>>
+<<case "auburn">>
+  <<set _hairColour to "#7e543e">>
+<<case "black">>
+  <<set _hairColour to "#3F4040">>
+<<case "blonde">>
+  <<set _hairColour to "#F4F1A3">>
+<<case "blue">>
+  <<set _hairColour to "#4685C5">>
+<<case "brown">>
+  <<set _hairColour to "#8D4F21">>
+<<case "burgundy">>
+  <<set _hairColour to "#5f3946">>
+<<case "chestnut">>
+  <<set _hairColour to "#663622">>
+<<case "chocolate">>
+  <<set _hairColour to "#6e4937">>
+<<case "copper">>
+  <<set _hairColour to "#a16145">>
+<<case "dark brown">>
+  <<set _hairColour to "#463325">>
+<<case "ginger">>
+  <<set _hairColour to "#da822d">>
+<<case "golden">>
+  <<set _hairColour to "#ffdf31">>
+<<case "green">>
+  <<set _hairColour to "#5FBA46">>
+<<case "grey">>
+  <<set _hairColour to "#9e9fa4">>
+<<case "hazel">>
+  <<set _hairColour to "#8d6f1f">>
+<<case "pink">>
+  <<set _hairColour to "#D18CBC">>
+<<case "platinum blonde">>
+  <<set _hairColour to "#fcf3c1">>
+<<case "red">>
+  <<set _hairColour to "#BB2027">>
+<<case "silver">>
+  <<set _hairColour to "#cdc9c6">>
+<<case "strawberry-blonde">>
+  <<set _hairColour to "#e5a88c">>
+<<case "blazing red">>
+  <<set _hairColour to "#E00E2B">>
+<<case "neon green">>
+  <<set _hairColour to "#25d12b">>
+<<case "neon blue">>
+  <<set _hairColour to "#2284C3">>
+<<case "neon pink">>
+  <<set _hairColour to "#cc26aa">>
+<<default>>
+  /* everything else: assume it already is HTML compliant color name or value */
+  <<set _hairColour to extractHairColor(_artSlave.hColor) >>
+<</switch>> 
+
+<<set _eyeColor to "fill:#F4F1A3;" >>
+
+<<switch _artSlave.eyeColor>>
+<<case "auburn">>
+  <<set _eyeColor to "#7e543e">>
+<<case "black">>
+  <<set _eyeColor to "#3F4040">>
+<<case "blonde">>
+  <<set _eyeColor to "#F4F1A3">>
+<<case "blue">>
+  <<set _eyeColor to "#4685C5">>
+<<case "brown">>
+  <<set _eyeColor to "#8D4F21">>
+<<case "burgundy">>
+  <<set _eyeColor to "#5f3946">>
+<<case "chestnut">>
+  <<set _eyeColor to "#663622">>
+<<case "chocolate">>
+  <<set _eyeColor to "#6e4937">>
+<<case "copper">>
+  <<set _eyeColor to "#a16145">>
+<<case "dark brown">>
+  <<set _eyeColor to "#463325">>
+<<case "ginger">>
+  <<set _eyeColor to "#da822d">>
+<<case "golden">>
+  <<set _eyeColor to "#ffdf31">>
+<<case "green">>
+  <<set _eyeColor to "#5FBA46">>
+<<case "grey">>
+  <<set _eyeColor to "#9e9fa4">>
+<<case "hazel">>
+  <<set _eyeColor to "#8d6f1f">>
+<<case "pink">>
+  <<set _eyeColor to "#D18CBC">>
+<<case "platinum blonde">>
+  <<set _eyeColor to "#fcf3c1">>
+<<case "red">>
+  <<set _eyeColor to "#BB2027">>
+<<case "silver">>
+  <<set _eyeColor to "#cdc9c6">>
+<<case "strawberry-blonde">>
+  <<set _eyeColor to "#e5a88c">>
+<<case "blazing red">>
+  <<set _eyeColor to "#E00E2B">>
+<<case "neon green">>
+  <<set _eyeColor to "#25d12b">>
+<<case "neon blue">>
+  <<set _eyeColor to "#2284C3">>
+<<case "neon pink">>
+  <<set _eyeColor to "#cc26aa">>
+<<default>>
+  /* everything else: assume it already is HTML compliant color name or value */
+  <<set _eyeColor to extractHairColor(_artSlave.eyeColor) >>
+<</switch>> 
+
+
+<<set _pubicColor to "fill:#3F4040;" >>
+
+<<switch _artSlave.pubicHColor>>
+<<case "auburn">>
+  <<set _pubicColor to "#7e543e">>
+<<case "black">>
+  <<set _pubicColor to "#3F4040">>
+<<case "blonde">>
+  <<set _pubicColor to "#F4F1A3">>
+<<case "blue">>
+  <<set _pubicColor to "#4685C5">>
+<<case "brown">>
+  <<set _pubicColor to "#8D4F21">>
+<<case "burgundy">>
+  <<set _pubicColor to "#5f3946">>
+<<case "chestnut">>
+  <<set _pubicColor to "#663622">>
+<<case "chocolate">>
+  <<set _pubicColor to "#6e4937">>
+<<case "copper">>
+  <<set _pubicColor to "#a16145">>
+<<case "dark brown">>
+  <<set _pubicColor to "#463325">>
+<<case "ginger">>
+  <<set _pubicColor to "#da822d">>
+<<case "golden">>
+  <<set _pubicColor to "#ffdf31">>
+<<case "green">>
+  <<set _pubicColor to "#5FBA46">>
+<<case "grey">>
+  <<set _pubicColor to "#9e9fa4">>
+<<case "hazel">>
+  <<set _pubicColor to "#8d6f1f">>
+<<case "pink">>
+  <<set _pubicColor to "#D18CBC">>
+<<case "platinum blonde">>
+  <<set _pubicColor to "#fcf3c1">>
+<<case "red">>
+  <<set _pubicColor to "#BB2027">>
+<<case "silver">>
+  <<set _pubicColor to "#cdc9c6">>
+<<case "strawberry-blonde">>
+  <<set _pubicColor to "#e5a88c">>
+<<case "blazing red">>
+  <<set _pubicColor to "#E00E2B">>
+<<case "neon green">>
+  <<set _pubicColor to "#25d12b">>
+<<case "neon blue">>
+  <<set _pubicColor to "#2284C3">>
+<<case "neon pink">>
+  <<set _pubicColor to "#cc26aa">>
+<<default>>
+  /* everything else: assume it already is HTML compliant color name or value */
+  <<set _pubicColor to extractHairColor(_artSlave.pubicHColor) >>
+<</switch>> 
+
+<<set _underArmHColor to "fill:#3F4040;" >>
+
+<<switch _artSlave.underArmHColor>>
+<<case "auburn">>
+  <<set _underArmHColor to "#7e543e">>
+<<case "black">>
+  <<set _underArmHColor to "#3F4040">>
+<<case "blonde">>
+  <<set _underArmHColor to "#F4F1A3">>
+<<case "blue">>
+  <<set _underArmHColor to "#4685C5">>
+<<case "brown">>
+  <<set _underArmHColor to "#8D4F21">>
+<<case "burgundy">>
+  <<set _underArmHColor to "#5f3946">>
+<<case "chestnut">>
+  <<set _underArmHColor to "#663622">>
+<<case "chocolate">>
+  <<set _underArmHColor to "#6e4937">>
+<<case "copper">>
+  <<set _underArmHColor to "#a16145">>
+<<case "dark brown">>
+  <<set _underArmHColor to "#463325">>
+<<case "ginger">>
+  <<set _underArmHColor to "#da822d">>
+<<case "golden">>
+  <<set _underArmHColor to "#ffdf31">>
+<<case "green">>
+  <<set _underArmHColor to "#5FBA46">>
+<<case "grey">>
+  <<set _underArmHColor to "#9e9fa4">>
+<<case "hazel">>
+  <<set _underArmHColor to "#8d6f1f">>
+<<case "pink">>
+  <<set _underArmHColor to "#D18CBC">>
+<<case "platinum blonde">>
+  <<set _underArmHColor to "#fcf3c1">>
+<<case "red">>
+  <<set _underArmHColor to "#BB2027">>
+<<case "silver">>
+  <<set _underArmHColor to "#cdc9c6">>
+<<case "strawberry-blonde">>
+  <<set _underArmHColor to "#e5a88c">>
+<<case "blazing red">>
+  <<set _underArmHColor to "#E00E2B">>
+<<case "neon green">>
+  <<set _underArmHColor to "#25d12b">>
+<<case "neon blue">>
+  <<set _underArmHColor to "#2284C3">>
+<<case "neon pink">>
+  <<set _underArmHColor to "#cc26aa">>
+<<default>>
+  /* everything else: assume it already is HTML compliant color name or value */
+  <<set _underArmHColor to extractHairColor(_artSlave.underArmHColor) >>
+<</switch>> 
+
diff --git a/src/art/vector_revamp/Set_Colour_Outfit.tw b/src/art/vector_revamp/Set_Colour_Outfit.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e2310cb00a444a742e8e079012ff32693e227ba0
--- /dev/null
+++ b/src/art/vector_revamp/Set_Colour_Outfit.tw
@@ -0,0 +1,14 @@
+:: Art_Vector_Revamp_Set_Colour_Outfit_
+
+/* BEWARE: _outfitBaseColour is used by Art_Vector_Revamp_Set_Colour_Skin_ */
+/* BEWARE: _outfitBaseColour is read by Wardrobe Use */
+
+<<unset _outfitBaseColour>>
+
+<<if _artSlave.fuckdoll != 0 || _artSlave.clothes == "restrictive latex" ||  _artSlave.clothes == "a latex catsuit">>
+  <<set _outfitBaseColour = "#515351" >> /* standard "black rubber" latex colour */
+  <<if def _artSlave.clothingBaseColor>>
+    <<set _outfitBaseColour = _artSlave.clothingBaseColor >> /* latex colour selected by user */
+    /* TODO: rewrite all textual descriptions not to explicitly mention the latex being of black colour. */
+  <</if>>
+<</if>>
diff --git a/src/art/vector_revamp/Set_Colour_Shoe.tw b/src/art/vector_revamp/Set_Colour_Shoe.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f40595370de8e8ae463be0164bf8d23b933ab0b3
--- /dev/null
+++ b/src/art/vector_revamp/Set_Colour_Shoe.tw
@@ -0,0 +1,34 @@
+:: Art_Vector_Revamp_Set_Colour_Shoe_ [nobr]
+
+/* courtesy of Nov-X */
+
+/* BEWARE: _shoeColour is read by Wardrobe Use */
+
+/* note: only heels use this shadow */
+<<set _shoeShadowColour to "#15406D">>
+
+<<switch _artSlave.shoes>>
+  <<case "heels" "extreme heels">>
+    <<set _shoeColour to "#3E65B0">>
+  <<case "boots">>
+    <<set _shoeColour to "#8F8F8E">>
+  <<case "flats">>
+    <<set _shoeColour to "#65AD45">>
+  <<case "pumps">>
+    <<set _shoeColour to "#4F6AB2">>
+  <<default>>
+    /* use colour for "heels" by default */
+    <<set _shoeColour to "#3E65B0">>
+<</switch>>
+
+<<if def _artSlave.shoeColor>>
+  <<set _shoeColour = _artSlave.shoeColor >> /* shoe colour selected by user */
+  <<set _shoeShadowColour to _shoeColour+";opacity: 0.5">> /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+<</if>>
+
+/* override colour in case of full body latex outfit */
+<<if _artSlave.fuckdoll != 0 || _artSlave.clothes == "restrictive latex" >>
+  <<set _shoeColour to _skinColour>>
+  <<set _shoeShadowColour to _shoeColour+";opacity: 0.5">> /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+<</if>>
+	
diff --git a/src/art/vector_revamp/Set_Colour_Skin.tw b/src/art/vector_revamp/Set_Colour_Skin.tw
new file mode 100644
index 0000000000000000000000000000000000000000..36b7e1fcaed4cfd14bf3ecbd50bf9caa5b34bd99
--- /dev/null
+++ b/src/art/vector_revamp/Set_Colour_Skin.tw
@@ -0,0 +1,80 @@
+:: Art_Vector_Revamp_Set_Colour_Skin_
+
+/* BEWARE: _outfitBaseColour is set by Art_Vector_Revamp_Set_Colour_Outfit_ */
+
+<<set _areolaStyle to "fill:#d76b93;" >> /* this is the default and can be customized later */
+<<set _labiaStyle to _areolaStyle >> /* this is the default and can be customized later */
+/* todo: introduce one "flesh" CSS class */
+
+<<unset _headSkinStyle>>
+<<unset _torsoSkinStyle >>
+<<unset _boobSkinStyle>>
+<<unset _penisSkinStyle>>
+<<unset _scrotumSkinStyle>>
+
+<<switch _artSlave.skin>>
+<<case "light" "white" "fair" "lightened" >>
+  <<set _skinColour to "#F6E0E8">>
+<<case "extremely pale">>
+  <<set _skinColour to "#f4eaf0">>
+<<case "pale">>
+  <<set _skinColour to "#f9ebf0">>
+<<case "tanned" "natural">>
+  <<set _skinColour to "#F4C7A5">>
+<<case "olive">>
+  <<set _skinColour to "#a07c48">>
+<<case "light brown" "dark">>
+  <<set _skinColour to "#C97631">>
+  /* darker areolae and labia for more contrast to skin */
+  <<set _areolaStyle to "fill:#ba3549;" >>
+  <<set _labiaStyle to _areolaStyle >>
+<<case "brown" >>
+  <<set _skinColour to "#763818">>
+<<case "black">>
+  <<set _skinColour to "#3f3b3a">>
+<<case "camouflage patterned">>
+  <<set _skinColour to "#78875a">>
+<<case "red dyed" "dyed red">>
+  <<set _skinColour to "#bc4949">>
+<<case "green dyed" "dyed green">>
+  <<set _skinColour to "#A6C373">>
+<<case "blue dyed" "dyed blue">>
+  <<set _skinColour to "#5b8eb7">>
+<<case "tiger striped">>
+  <<set _skinColour to "#e2d75d">>
+<<default>>
+  <<set _skinColour to _artSlave.skin>>
+<</switch>> 
+
+/* BEGIN SKIN COLOUR OVERRIDES FOR LATEX CLOTHING EMULATION */
+
+<<if _artSlave.fuckdoll != 0>>
+  /* slave is a fuckdoll - display all skin as if it was black rubber */
+  <<set _skinColour to _outfitBaseColour>>
+  <<set _areolaStyle to "fill:rgba(0,0,0,0.3);">>
+  <<set _labiaStyle to _areolaStyle >>
+<</if>>
+
+/* slave wears restrictive latex - display most skin as if it was rubber */
+<<if _artSlave.clothes == "restrictive latex">>
+  /* nice latex does not cover any privates. */
+
+  <<set _torsoSkinStyle to _outfitBaseColour>>
+  <<set _boobSkinStyle to "fill:"+_skinColour+";">>
+  <<set _penisSkinStyle to _torsoSkinStyle>>
+  <<set _scrotumSkinStyle to _torsoSkinStyle>>
+  /* rest of body is covered in latex */
+  <<set _skinColour to _outfitBaseColour>>
+<</if>>
+<<if _artSlave.clothes == "a latex catsuit">>
+  /* nice latex does not cover head. */
+  <<set _headSkinStyle to "fill:"+_skinColour+";">>
+  /* rest of body is covered in latex */
+  <<set _skinColour to _outfitBaseColour>>
+  /* catsuit covers areolae and crotch, too */
+  <<set _areolaStyle to "fill:rgba(0,0,0,0.3);">> /* areolae are represented by a darker area */ 
+  /* todo: gain control over piercings to do the same with them ^^ */
+  <<set _labiaStyle to _areolaStyle >>
+<</if>>
+
+/* END SKIN COLOUR OVERRIDES FOR LATEX CLOTHING EMULATION */
diff --git a/src/art/vector_revamp/Torso.tw b/src/art/vector_revamp/Torso.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7f96570868d379816ecbf74da8103a20e828111e
--- /dev/null
+++ b/src/art/vector_revamp/Torso.tw
@@ -0,0 +1,40 @@
+:: Art_Vector_Revamp_Torso_ [nobr]
+
+/* Torso size switch courtesy of Nov-X */
+
+/* BEWARE: _torsoSize might be used in torso outfit */
+
+<<if _artSlave.waist < -40>>
+	<<if _artSlave.weight > 30>>
+		<<set _torsoSize = "Hourglass">>
+	<<else>>
+		<<set _torsoSize = "Unnatural">>
+	<</if>>
+<<elseif _artSlave.waist <= 10>>
+	<<if _artSlave.weight > 30>>
+		<<set _torsoSize = "Normal">>
+	<<else>>
+		<<set _torsoSize = "Hourglass">>
+	<</if>>
+<<else>>
+	<<set _torsoSize = "Normal">>
+<</if>>
+
+<<set _art = "Art_Vector_Revamp_Torso_"+_torsoSize >>
+<<include _art >>
+
+<<if _showTorsoHighlight == 1>>
+	<<include Art_Vector_Revamp_Torso_Highlights2 >>
+	<<include Art_Vector_Revamp_Torso_Highlights1 >>
+<</if>>
+
+<<if _showArmHair == 1>>
+	<<switch _artSlave.underArmHStyle>>
+		<<case "bushy">>
+		  <<include Art_Vector_Revamp_Arm_Down_Hair_Bushy >>
+		<<case "neat">>
+		  <<include Art_Vector_Revamp_Arm_Down_Hair_Neat >>
+		<<default>>
+		  /* pubic hair style not supported - don't display anything*/
+	<</switch>>
+<</if>>
\ No newline at end of file
diff --git a/src/art/vector_revamp/Torso_Outfit.tw b/src/art/vector_revamp/Torso_Outfit.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1e819506913f0ffb6fe424c28996361608a0e28c
--- /dev/null
+++ b/src/art/vector_revamp/Torso_Outfit.tw
@@ -0,0 +1,43 @@
+:: Art_Vector_Revamp_Torso_Outfit_ [nobr]
+
+/* BEWARE: _torsoSize is set by Art_Vector_Revamp_Torso_ */
+
+/* TODO: latex catsuit should cover vagina and its piercings, too */
+
+<<set _art = false >>
+
+<<switch _artSlave.clothes>>
+	<<case "uncomfortable straps">>
+		<<set _art = "Art_Vector_Revamp_Torso_Outfit_Straps_" >>
+	<<default>>
+		/* do nothing */
+<</switch>>
+
+<<if _art >>
+	<<set _art = _art+_torsoSize >>
+	<<include _art >>
+<</if>>
+
+<<if _artSlave.clothes == "a nice maid outfit">>
+	<<set _art = "Art_Vector_Revamp_Torso_Outfit_Maid_"+_torsoSize >>
+	<<include _art >>
+
+<<elseif _artSlave.clothes == "a slutty maid outfit">>
+	<<set _art = "Art_Vector_Revamp_Torso_Outfit_Maid_Lewd_"+_torsoSize >>
+	<<include _art >>
+<</if>>
+
+/* shiny clothings */
+<<if $seeVectorArtHighlights == 1>>
+	<<if _showTorsoHighlight == 1>>
+		<<if _artSlave.amp != 0>>
+			/* this shiny shoulder only looks sensible on amputees */
+			/*<<include Art_Vector_Revamp_Torso_Outfit_Shine_Shoulder>>*/
+		<</if>>
+		<<if _artSlave.preg <= 0>>
+			/* the hip can be hidden by pregnant belly */
+			/*<<set _art = "Art_Vector_Revamp_Torso_Outfit_Shine_"+_torsoSize >>*/
+			/*<<include _art >>*/
+		<</if>>
+	<</if>>
+<</if>>
diff --git a/src/art/vector_revamp/layers/Arm_Down_Hair_Bushy.tw b/src/art/vector_revamp/layers/Arm_Down_Hair_Bushy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..209c2cad35b6c04918baf170c07ef1e6ce715d26
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Down_Hair_Bushy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Down_Hair_Bushy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccc" id="path1099" class="armpit_hair" d="m 360.24347,231.86792 0.62233,4.65711 c 0.55578,0.2551 -7.99816,5.95284 -3.27038,-0.65737 -3.09359,5.37627 2.92909,-0.003 2.17022,-2.14111 -1.53423,0.28812 -5.71284,3.52639 -5.25133,8.12415 -0.98363,-3.5058 2.9824,-9.77272 4.83736,-11.83806 -0.18244,1.45667 -8.26869,-0.51242 -3.88775,5.73641 -5.3105,-5.44303 2.41392,-7.14507 3.39202,-9.43961 0.45356,1.56568 -1.24519,3.2832 -7.4966,4.08414 3.46772,-0.44603 7.11012,-4.45071 7.06734,-6.77892 -2.40629,-0.74554 -6.1703,2.17421 -5.81219,4.21371 -0.25259,-2.66244 3.06309,-5.85365 5.67489,-7.08339 -0.9377,1.02012 -4.71933,0.89387 -3.06732,-2.07507 -0.83642,1.71326 1.4865,2.34105 2.34002,-0.14383 -1.70746,-1.70745 -3.52581,-1.63585 -3.89757,0.0658 0.97561,-3.83828 3.37716,-1.67017 4.2302,-1.64816 -0.32331,-0.41565 -0.17879,-0.76893 -0.0751,-1.12765 -2.01181,0.29687 -4.33853,-2.08468 -4.3297,-2.13619 1.72132,0.72587 4.20901,1.47818 4.21081,0.17288 0,0 -0.11184,-2.03629 -0.16497,-3.11735 1.19043,6.54449 2.70769,21.13294 2.70769,21.13294 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Down_Hair_Neat.tw b/src/art/vector_revamp/layers/Arm_Down_Hair_Neat.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a76b1dbf76b1a7d2f1dc78d10be5b7e97a4227d1
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Down_Hair_Neat.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Down_Hair_Neat [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="path3325" class="armpit_hair" d="m 360.64122,234.43118 c -1.78847,-3.72504 -3.61047,-12.89756 -3.19383,-24.4475 1.19043,6.54449 2.6192,20.32885 3.19383,24.4475 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Hair.tw b/src/art/vector_revamp/layers/Arm_Hair.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ad422060e7f555fcf7c4f8931db9bbed1e49d2c5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Hair.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Hair [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"style="display:inline" inkscape:label="Arm_Down_Hair_Neat" id="Arm_Down_Hair_Neat" inkscape:groupmode="layer"><path sodipodi:nodetypes="ccc" id="path3325" class="armpit_hair" d="m 360.64122,234.43118 c -1.78847,-3.72504 -3.61047,-12.89756 -3.19383,-24.4475 1.19043,6.54449 2.6192,20.32885 3.19383,24.4475 z"/></g><g transform="'+_art_transform+'"inkscape:label="Arm_Down_Hair_Bushy" id="Arm_Down_Hair_Bushy" inkscape:groupmode="layer" style="display:inline"><path sodipodi:nodetypes="cccccccccccccccccccccc" id="path1099" class="armpit_hair" d="m 360.24347,231.86792 0.62233,4.65711 c 0.55578,0.2551 -7.99816,5.95284 -3.27038,-0.65737 -3.09359,5.37627 2.92909,-0.003 2.17022,-2.14111 -1.53423,0.28812 -5.71284,3.52639 -5.25133,8.12415 -0.98363,-3.5058 2.9824,-9.77272 4.83736,-11.83806 -0.18244,1.45667 -8.26869,-0.51242 -3.88775,5.73641 -5.3105,-5.44303 2.41392,-7.14507 3.39202,-9.43961 0.45356,1.56568 -1.24519,3.2832 -7.4966,4.08414 3.46772,-0.44603 7.11012,-4.45071 7.06734,-6.77892 -2.40629,-0.74554 -6.1703,2.17421 -5.81219,4.21371 -0.25259,-2.66244 3.06309,-5.85365 5.67489,-7.08339 -0.9377,1.02012 -4.71933,0.89387 -3.06732,-2.07507 -0.83642,1.71326 1.4865,2.34105 2.34002,-0.14383 -1.70746,-1.70745 -3.52581,-1.63585 -3.89757,0.0658 0.97561,-3.83828 3.37716,-1.67017 4.2302,-1.64816 -0.32331,-0.41565 -0.17879,-0.76893 -0.0751,-1.12765 -2.01181,0.29687 -4.33853,-2.08468 -4.3297,-2.13619 1.72132,0.72587 4.20901,1.47818 4.21081,0.17288 0,0 -0.11184,-2.03629 -0.16497,-3.11735 1.19043,6.54449 2.70769,21.13294 2.70769,21.13294 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Arm_Up_Hair_Neat" inkscape:label="Arm_Up_Hair_Neat" style="display:inline"><path d="m 361.07872,235.74368 c -0.94878,-8.80737 -2.85473,-24.59569 2.37908,-28.8536 2.1627,9.19615 -2.2466,10.90217 -2.37908,28.8536 z" class="armpit_hair" id="XMLID_590_-04-8-9-4-9" sodipodi:nodetypes="ccc"/></g><g transform="'+_art_transform+'"style="display:inline" inkscape:groupmode="layer" id="Arm_Up_Hair_Bushy" inkscape:label="Arm_Up_Hair_Bushy"><path d="m 360.53365,236.48083 c -0.55578,0.2551 1.01548,-0.63209 3.04941,3.3643 -0.97228,-3.1532 -2.70812,-4.02467 -1.94925,-6.16278 1.53423,0.28812 5.80123,-1.42335 5.33972,3.17441 0.98363,-3.5058 -3.07079,-4.82298 -4.92575,-6.88832 0.18244,1.45667 11.2297,-1.04275 6.84876,5.20608 5.3105,-5.44303 -2.41392,-7.14507 -3.39202,-9.43961 -0.45356,1.56568 -1.45066,-1.04783 4.80075,-0.24689 -3.46772,-0.44603 -8.11396,-3.23134 -7.33132,-5.42448 2.51841,0.0603 4.53675,2.08298 3.54725,3.90196 1.08804,-2.44307 -0.41883,-4.58012 -2.50244,-6.5782 0.56364,1.26579 4.18828,2.35147 3.56874,-0.98917 0.24672,1.8905 -2.15515,1.74514 -2.17213,-0.88218 2.16264,-1.07417 3.58587,0.37498 2.70189,1.87578 1.89339,-3.4784 -1.34178,-3.52056 -1.98242,-4.08425 0.51967,-0.0851 0.6538,-0.44246 0.82158,-0.77605 1.2738,1.58522 4.59918,1.41997 4.62772,1.37618 -1.75593,-0.63763 -4.09192,-1.77678 -3.206,-2.73539 0,0 -0.30162,-0.93139 0.47217,-1.6882 -1.17562,0.12647 -1.50552,0.39685 -2.29732,1.39659 0.43889,-0.74403 0.22952,-1.36458 0.27651,-2.03396 -0.19789,1.53736 -0.94588,2.69608 -2.74427,3.1318 0.29183,-1.13068 -0.21459,-1.42216 -0.71523,-1.71972 0.596,1.32079 -0.14863,1.44588 -1.07278,1.41086 -0.87655,-1.71928 0.22738,-2.55256 0.83323,-3.60866 -1.93061,0.6298 -3.38367,1.69073 -3.81887,3.67055 -0.70564,-0.81459 -0.56273,-1.73524 -0.459,-2.651 -0.65736,0.85385 -1.14327,1.8183 -1.15811,3.08668 l 1.88893,15.25586 c 0,0 1.15763,7.50544 0.95025,9.05781 z" class="armpit_hair" id="path3321" sodipodi:nodetypes="cccccccccccccccccccccccccccccc"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Hightlights1.tw b/src/art/vector_revamp/layers/Arm_Hightlights1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c8f3d3a20f58001b7320508f40a39655d4091622
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Hightlights1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Hightlights1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 264.02548,194.63655 c -2.42677,0.3965 -4.07691,2.49696 -4.68327,3.78258 1.45536,-0.87497 3.7861,-2.37251 4.68327,-3.78258 z" class="highlight1" id="path1141-07" sodipodi:nodetypes="ccc"/><path d="m 387.27371,191.22429 c -1.20741,-3.25929 -4.94338,-5.47961 -6.89118,-5.97258 1.60807,1.78204 4.69195,5.10987 6.89118,5.97258 z" class="highlight1" id="path1141-07-4" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Hightlights2.tw b/src/art/vector_revamp/layers/Arm_Hightlights2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..371c44d76aa763388129ec3ffebb58e3c8aa04ba
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Hightlights2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Hightlights2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7" class="highlight2" d="m 265.77944,193.45942 c -4.10072,1.03769 -6.4965,4.8075 -7.88783,5.69551 1.54928,-0.0618 6.54674,-0.73329 7.88783,-5.69551 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7" class="highlight2" d="m 376.43971,182.92074 c 1.39814,3.96435 9.20533,8.8149 11.5112,9.59607 -0.012,-1.47027 -4.46242,-9.07782 -11.5112,-9.59607 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9" class="highlight2" d="m 376.65484,195.65209 c -0.43813,1.40732 0.73929,4.4073 1.22362,5.11026 0.30485,-0.41575 0.64886,-3.48691 -1.22362,-5.11026 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0" class="highlight2" d="m 393.88595,237.77147 c -0.32539,0.74013 0.13184,2.44777 0.35259,2.86072 0.19174,-0.20786 0.56818,-1.86069 -0.35259,-2.86072 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4" class="highlight2" d="m 385.14008,263.75716 c -0.78222,2.40877 0.79804,8.13462 1.18455,9.61072 0.30165,-0.60698 1.05052,-6.02219 -1.18455,-9.61072 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2" class="highlight2" d="m 395.8318,320.41341 c -0.78222,2.40877 0.26679,5.72837 0.6533,7.20447 0.30165,-0.60698 1.58177,-3.61594 -0.6533,-7.20447 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3" class="highlight2" d="m 403.73963,350.27896 c -0.78222,2.40877 7.11689,32.90779 7.5034,34.38389 0.30165,-0.60698 -5.26833,-30.79536 -7.5034,-34.38389 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9" class="highlight2" d="m 401.89462,412.05807 c -0.78222,2.40877 1.74189,13.28279 2.1284,14.75889 0.30165,-0.60698 0.10667,-11.17036 -2.1284,-14.75889 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9" class="highlight2" d="m 426.17396,448.15929 c -0.29986,0.92338 0.66774,5.09182 0.8159,5.65767 0.11563,-0.23268 0.0409,-4.28204 -0.8159,-5.65767 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9" class="highlight2" d="m 419.66199,478.73368 c -0.29986,0.92338 0.16774,2.27932 0.3159,2.84517 0.11563,-0.23268 0.5409,-1.46954 -0.3159,-2.84517 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7" class="highlight2" d="m 224.70264,318.95995 c 0.32134,5.04063 -7.00595,19.45209 -8.15426,21.83013 -0.30999,-1.13135 3.20436,-18.68405 8.15426,-21.83013 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5" class="highlight2" d="m 212.63145,385.55078 c 1.44309,8.15138 -3.97322,45.41148 -7.54093,49.38775 2.98356,-1.72687 4.87317,-42.0146 7.54093,-49.38775 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-5" class="highlight2" d="m 206.90405,453.66964 c 1.84328,3.70775 1.06078,14.41863 -0.7066,16.30014 1.40444,-0.81288 -0.54919,-12.82939 0.7066,-16.30014 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Left_High.tw b/src/art/vector_revamp/layers/Arm_Left_High.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4e40bb5c9e87610d3588f9ca01920941ef9ffaa0
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Left_High.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Left_High [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccscccccccc" id="path3228" class="shadow" d="m 416.96515,136.81346 c 32.11702,-0.95542 12.44417,5.83226 -8.86061,-0.84231 -13.17517,-3.55885 -22.10975,-11.35491 -32.16663,-14.92538 -26.00796,-7.28693 -35.18199,-5.36422 -35.15592,-5.52718 -5.7001,-0.621 -8.60045,-1.23038 -8.1843,-1.25056 -2.1832,0.69779 -4.14081,1.89142 -6.17593,2.9871 -4.21706,4.76934 -8.18639,10.39866 -13.57388,12.35835 -1.92294,1.53597 -4.68187,1.38752 -6.42427,1.56556 -3.17523,1.49929 -6.0303,5.71999 -10.25413,1.05927 -0.71753,-0.67242 -1.08803,-1.79537 -1.17931,-2.88952 -2.44492,-0.27198 -4.8582,-0.24109 -7.22331,-0.265 -2.49592,-2.52948 -4.91084,-5.18137 -5.29842,-10.2787 -0.57251,-2.93616 -1.19034,-5.8172 1.73934,-8.15351 -0.63334,-3.27898 0.8596,-5.81144 3.36731,-7.9988 0.0414,-3.142308 0.47692,-6.148001 4.81868,-7.881954 -0.35575,-2.53162 0.83749,-2.644437 1.40361,-3.677788 8.67897,-0.933389 17.44184,-1.860384 33.40821,0.707292 0.76908,-0.432375 1.18909,-0.984061 2.97187,-1.064521 2.02588,0.323394 2.29331,2.593018 4.17997,2.916577 0.017,-0.122533 11.07469,-0.519229 28.23967,2.846153 22.33718,4.993821 38.1414,6.556701 50.90227,11.342701 15.98778,2.32201 35.44598,17.35468 35.9125,31.34547 0.25313,7.59105 -9.11293,16.51703 -12.98971,17.78179 -6.90871,5.56547 -40.15715,34.83106 -68.08145,53.02535 -12.76935,11.09792 1.0322,34.94142 -18.21974,33.80336 -11.42113,-1.91438 -15.90619,-47.50408 -15.80696,-47.55692 8.12889,-3.15008 13.68165,-10.49055 19.97602,-16.62467 6.29362,-1.56423 11.88648,-5.46072 17.60239,-8.94768 24.72621,-14.49206 27.79345,-19.88621 45.07272,-33.85449 z"/><path d="m 416.34015,137.87596 c 27.19781,0.73794 6.76862,2.55782 -8.23561,-1.90481 -12.93847,-3.90325 -22.17008,-11.8098 -32.16663,-14.92538 -27.21775,-8.48286 -35.15592,-5.52718 -35.15592,-5.52718 -4.43404,-0.99709 -8.59402,-1.23228 -8.1843,-1.25056 -2.51009,0.47312 -4.29552,1.78509 -6.17593,2.9871 -4.50142,4.17994 -8.35339,10.0525 -13.57388,12.35835 -1.86742,1.32643 -4.6509,1.27068 -6.42427,1.56556 -3.17523,1.49929 -5.84837,5.36864 -10.25413,1.05927 -0.56736,-0.68182 -0.85844,-1.80974 -1.17931,-2.88952 -2.40238,-0.47006 -4.81155,-0.45831 -7.22331,-0.265 -2.2793,-2.88904 -4.539,-5.79859 -5.29842,-10.2787 -0.26857,-2.7479 -0.67956,-5.50083 1.73934,-8.15351 -0.23326,-3.18411 1.20628,-5.72923 3.36731,-7.9988 0.31255,-3.064215 1.08954,-5.971585 4.81868,-7.881954 0.11652,-2.52493 0.88382,-2.643795 1.40361,-3.677788 8.70196,-0.809319 17.4938,-1.580034 33.40821,0.707292 0.86624,-0.406652 1.55594,-0.886827 2.97187,-1.064521 1.97166,0.503435 2.26133,2.699256 4.17997,2.916577 0,0 11.28571,-1.354883 28.23967,2.846153 21.50866,5.329651 36.63325,6.513511 50.90227,11.342701 15.63351,5.29098 29.05276,12.30963 35.49429,28.83661 3.29595,8.45637 -8.6973,18.99285 -12.5715,20.29065 -7.2367,5.35747 -42.11286,34.38128 -68.08145,53.02535 -12.79099,11.05725 0.8543,34.6073 -18.21974,33.80336 -11.12304,-2.0731 -15.80696,-47.55692 -15.80696,-47.55692 3.13687,-5.26914 2.81848,-10.8608 20.30706,-17.24004 6.29362,-1.56423 11.55545,-4.84533 17.27136,-8.33229 18.03877,-8.34635 27.48335,-18.28231 44.44772,-32.792 z" class="skin" id="path3230" sodipodi:nodetypes="ccsccccccccccccccccsssccccccc"/><path d="m 295.18882,129.21753 c 5.34665,-3.49364 4.94695,-6.10534 5.3092,-7.81066 -0.937,2.89145 -1.33607,3.38261 -5.3092,7.81066 z" class="shadow" id="path3234" sodipodi:nodetypes="ccc"/><path d="m 300.37099,121.58603 c -4.87738,-0.98168 -4.57091,-0.48934 -6.46034,0.11744 1.79618,-0.32021 1.5622,-0.45178 6.46034,-0.11744 z" class="shadow" id="path3236" sodipodi:nodetypes="ccc"/><path d="m 304.25086,124.04729 c -3.73519,-3.29389 -7.7306,-6.63208 -10.0306,-6.82802 2.14005,0.77849 6.26034,4.08751 10.0306,6.82802 z" class="shadow" id="path3242" sodipodi:nodetypes="ccc"/><path d="m 293.91881,121.74899 c -2.2385,-0.52137 -2.5242,-0.52537 -4.84179,-0.25747 2.24964,0.0618 2.53867,0.0349 4.84179,0.25747 z" class="shadow" id="path3244" sodipodi:nodetypes="ccc"/><path d="m 293.8827,123.52006 c -1.50826,1.75414 -2.66361,2.30138 -4.6134,3.12696 2.46702,-0.46549 3.21838,-1.14883 4.6134,-3.12696 z" class="shadow" id="path3246" sodipodi:nodetypes="ccc"/><path d="m 294.93289,112.54791 c -4.05406,-2.84524 -8.44042,-1.75817 -10.74039,-1.95411 2.22191,0.51402 6.97014,-0.78639 10.74039,1.95411 z" class="shadow" id="path3248" sodipodi:nodetypes="ccc"/><path d="m 296.36587,104.19814 c -3.97505,-2.90663 -6.59037,-1.31213 -8.89036,-1.50807 2.2402,0.3267 5.12011,-1.23244 8.89036,1.50807 z" class="shadow" id="path3250" sodipodi:nodetypes="ccc"/><path d="m 299.03763,96.545358 c -4.03843,-2.845022 -4.24231,-1.560849 -6.5423,-1.756785 2.22279,0.451523 2.77205,-0.983725 6.5423,1.756785 z" class="shadow" id="path3252" sodipodi:nodetypes="ccc"/><path d="m 415.57013,138.34367 c 4.33424,-2.83585 8.46725,1.10257 16.32437,-3.88923 -8.00202,4.48396 -11.55736,0.31819 -16.32437,3.88923 z" class="shadow" id="path3232" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Left_Low.tw b/src/art/vector_revamp/layers/Arm_Left_Low.tw
new file mode 100644
index 0000000000000000000000000000000000000000..2514f7b2248f7557a523aa51dca5a9461fb2799c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Left_Low.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Left_Low [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccccccccccc" id="path6856" class="shadow" d="m 376.26653,307.61106 c -2.14507,6.09632 0.95143,14.58239 5.2492,26.09205 1.87591,8.39384 1.26226,16.44062 3.6408,24.0503 3.37217,13.22418 9.98815,25.21016 12.07785,36.18157 4.14241,28.63267 6.86059,41.11676 7.02391,41.093 0.54035,5.7083 1.10863,8.61698 1.13471,8.20116 -0.72861,2.17311 -1.94979,4.11365 -3.07415,6.13307 -4.82849,4.1492 -10.51338,8.03853 -12.54906,13.39776 -1.56301,1.90103 -1.45359,4.66179 -1.65625,6.40149 -1.54405,3.15371 -5.8047,5.94881 -1.20417,10.23813 0.6622,0.72696 1.77977,1.11335 2.87256,1.22005 0.23741,2.44851 0.17236,4.86112 0.16282,7.22633 2.49394,2.53144 5.1114,4.98363 10.20275,5.44325 2.92776,0.61397 5.79979,1.27248 8.17729,-1.62387 3.26969,0.67965 5.82302,-0.77733 8.04562,-3.25386 3.14258,0.003 6.15413,-0.38994 7.94931,-4.70674 2.52633,0.39151 2.65601,-0.8 3.69726,-1.35146 1.05602,-8.6649 2.10684,-17.41379 -0.23479,-33.41487 0.44323,-0.76288 1.00078,-1.17506 1.10644,-2.95652 -0.2947,-2.03025 -0.53754,-3.92631 -0.8344,-5.81736 0.12272,-0.0153 -0.91142,-10.19582 -4.03375,-27.40667 -2.39433,-20.31058 -0.58347,-46.56592 -3.56145,-61.93369 -4.11097,-24.76433 -12.78003,-33.88061 -16.17665,-44.92823 -0.74024,-9.33448 -6.11497,-43.94368 -10.48131,-76.21312 1.72012,-16.83036 4.13085,-26.81911 -7.88563,-41.90342 -8.14189,-8.2351 -27.22056,-9.16634 -27.20662,-9.05478 2.10557,8.45982 -0.69822,17.22648 -2.08866,25.9048 2.34527,6.04617 2.38024,12.86244 2.82089,19.54348 2.09144,28.37203 6.68148,62.46708 16.82548,83.43815 z"/><path d="m 376.26653,307.61106 c -1.88158,6.09632 1.78864,14.58239 5.2492,26.09205 2.46473,8.19757 1.44095,16.36694 3.6408,24.0503 3.71989,12.99237 10.12989,25.00635 12.07785,36.18157 4.97043,28.51471 7.02391,41.093 7.02391,41.093 0.93429,4.44769 1.11063,8.61058 1.13471,8.20116 -0.50858,2.50315 -1.84566,4.26985 -3.07415,6.13307 -4.24317,4.44186 -10.16962,8.21041 -12.54906,13.39776 -1.35273,1.84846 -1.33633,4.63248 -1.65625,6.40149 -1.54405,3.15371 -5.45081,5.77187 -1.20417,10.23813 0.67374,0.57695 1.79742,0.88394 2.87256,1.22005 0.43604,2.40878 0.39022,4.81755 0.16282,7.22633 2.85652,2.31993 5.73383,4.62055 10.20275,5.44325 2.74382,0.3074 5.49067,0.75728 8.17729,-1.62387 3.18049,0.27826 5.74573,-1.12514 8.04562,-3.25386 3.06833,-0.26918 5.98639,-1.00499 7.94931,-4.70674 2.52633,-0.0808 2.65601,-0.84635 3.69726,-1.35146 0.93229,-8.68965 1.82726,-17.46971 -0.23479,-33.41487 0.41885,-0.86041 0.90873,-1.54325 1.10644,-2.95652 -0.4755,-1.97859 -0.64423,-3.89583 -0.8344,-5.81736 0,0 -1.32658,-10.15105 -4.03375,-27.40667 -3.28397,-20.9322 -0.61749,-47.35642 -3.56145,-61.93369 -5.07086,-25.10879 -12.88754,-33.92208 -16.17665,-44.92823 -1.06963,-9.28742 -6.90951,-43.83017 -10.48131,-76.21312 1.6744,-16.82464 3.75524,-26.77216 -7.88563,-41.90342 -8.1,-7.9 -27.20662,-9.05478 -27.20662,-9.05478 -2.50151,5.59877 -7.25637,8.55837 -2.40116,26.5298 2.34527,6.04617 2.69274,12.23744 3.13339,18.91848 3.16851,28.04891 8.85591,61.81475 16.82548,83.43815 z" class="skin" id="L" sodipodi:nodetypes="csssccccccccccccccccssccccccc"/><path d="m 400.21324,339.59811 c 2.28724,-7.90419 0.16428,-14.75962 4.08426,-29.01888 -3.08119,14.24267 -0.8821,20.11482 -4.08426,29.01888 z" class="shadow" id="XMLID_511_-7" sodipodi:nodetypes="ccc"/><path d="m 389.91598,480.42287 c 3.56887,-5.29673 6.17469,-4.86012 7.88496,-5.19822 -2.90441,0.89603 -3.40117,1.2881 -7.88496,5.19822 z" class="shadow" id="XMLID_511_-7-7" sodipodi:nodetypes="ccc"/><path d="m 397.62,475.34913 c 0.91262,4.89077 0.42469,4.57738 -0.20879,6.45803 0.34559,-1.79147 0.47383,-1.55565 0.20879,-6.45803 z" class="shadow" id="XMLID_511_-7-7-1" sodipodi:nodetypes="ccc"/><path d="m 389.94651,480.42726 c 3.74075,0.1564 3.34657,0.40551 5.66621,1.39553 -2.29503,-0.79147 -2.60429,-0.71189 -5.66621,-1.39553 z" class="shadow" id="XMLID_511_-7-7-1-5" sodipodi:nodetypes="ccc"/><path d="m 395.58875,481.81007 c 0.81106,-0.0584 1.11219,0.0383 1.83027,-0.0263 -0.74815,-0.0766 -0.92069,-0.19236 -1.83027,0.0263 z" class="shadow" id="XMLID_511_-7-7-1-5-7" sodipodi:nodetypes="ccc"/><path d="m 395.21385,471.43485 c 3.24075,3.78139 6.52211,7.82362 6.6855,10.12614 -0.74816,-2.15084 -3.99858,-6.31751 -6.6855,-10.12614 z" class="shadow" id="XMLID_511_-7-7-1-3" sodipodi:nodetypes="ccc"/><path d="m 397.36582,481.79837 c 0.48966,2.24565 0.48961,2.53137 0.18896,4.84494 -0.03,-2.25028 9.9e-4,-2.53891 -0.18896,-4.84494 z" class="shadow" id="XMLID_511_-7-7-1-3-8" sodipodi:nodetypes="ccc"/><path d="m 395.59441,481.80942 c -1.77529,1.48331 -2.33881,2.63081 -3.19189,4.56873 0.50033,-2.4602 1.19423,-3.20182 3.19189,-4.56873 z" class="shadow" id="XMLID_511_-7-7-1-3-8-6" sodipodi:nodetypes="ccc"/><path d="m 406.58031,480.91449 c 2.78763,4.09389 1.63865,8.46444 1.80204,10.76696 -0.48254,-2.22896 0.88488,-6.95833 -1.80204,-10.76696 z" class="shadow" id="XMLID_511_-7-7-1-3-83" sodipodi:nodetypes="ccc"/><path d="m 414.94951,479.59973 c 2.85013,4.01576 1.21881,6.60828 1.3822,8.9108 -0.29504,-2.24459 1.30472,-5.10217 -1.3822,-8.9108 z" class="shadow" id="XMLID_511_-7-7-1-3-83-4" sodipodi:nodetypes="ccc"/><path d="m 422.63931,477.03646 c 2.78763,4.07826 1.5007,4.26397 1.66409,6.56649 -0.42004,-2.22896 1.02283,-2.75786 -1.66409,-6.56649 z" class="shadow" id="XMLID_511_-7-7-1-3-83-43" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Left_Mid.tw b/src/art/vector_revamp/layers/Arm_Left_Mid.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1a8608884f7714bc838a0c76c331a80b6c1ed444
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Left_Mid.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Left_Mid [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 376.26653,307.61106 c -2.14507,6.09632 -0.33627,-1.11766 -8.28781,8.24803 -6.41273,5.73171 -13.73675,9.1208 -19.21976,14.90883 -9.89974,9.39391 -17.1364,21.01569 -25.69503,28.19124 -22.97544,17.58176 -32.54807,26.04377 -32.44767,26.17476 -4.71971,3.25593 -6.98177,5.17073 -6.60604,4.99068 -2.25247,0.42386 -4.54216,0.30428 -6.85349,0.3077 -5.97727,-2.19144 -12.14538,-5.25725 -17.81681,-4.42042 -2.42192,-0.43726 -4.77865,1.00481 -6.39623,1.67643 -3.50625,0.19028 -8.02445,-2.1659 -9.52507,3.94239 -0.31164,0.93267 -0.10386,2.09675 0.336,3.10278 -2.02172,1.40151 -4.15962,2.52147 -6.22906,3.66676 -0.9935,3.41188 -1.85756,6.89293 0.22449,11.56178 0.89202,2.85535 1.71797,5.68378 5.40606,6.34661 1.00146,3.18589 3.51876,4.70427 6.7648,5.43665 1.53016,2.74488 3.34207,5.18227 7.98617,4.64392 0.89042,2.39641 1.99385,1.92846 2.98313,2.56849 8.0794,-3.30439 16.22958,-6.65429 29.05616,-16.50298 0.88216,0.0148 1.51394,0.30053 3.12066,-0.47613 1.62864,-1.24752 3.16542,-2.38431 4.67149,-3.56582 0.0732,0.0997 8.45625,-5.76864 21.95816,-16.88893 16.563,-11.99664 40.36676,-23.22176 52.33009,-33.31707 19.61377,-15.66755 35.65223,-41.26319 32.25561,-52.31081 -0.74024,-9.33448 -6.11497,-43.94368 -10.48131,-76.21312 1.72012,-16.83036 4.13085,-26.81911 -7.88563,-41.90342 -8.14189,-8.2351 -27.22056,-9.16634 -27.20662,-9.05478 2.10557,8.45982 -0.69822,17.22648 -2.08866,25.9048 2.34527,6.04617 2.38024,12.86244 2.82089,19.54348 2.09144,28.37203 6.68148,62.46708 16.82548,83.43815 z" class="shadow" id="path3147" sodipodi:nodetypes="ccccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="csssccccccccccccccccssccccccc" id="path3149" class="skin" d="m 376.26653,307.61106 c -1.88158,6.09632 0.0721,-0.38679 -8.28781,8.24803 -5.95419,6.15001 -13.58527,9.24086 -19.21976,14.90883 -9.52778,9.5844 -16.88934,21.04002 -25.69503,28.19124 -22.4686,18.24708 -32.44767,26.17476 -32.44767,26.17476 -3.42707,2.98497 -6.9752,5.16935 -6.60604,4.99068 -2.43327,0.77692 -4.62773,0.47137 -6.85349,0.3077 -5.94727,-1.53772 -12.12776,-4.87332 -17.81681,-4.42042 -2.27347,-0.27933 -4.69587,1.09288 -6.39623,1.67643 -3.50625,0.19028 -7.69738,-1.94327 -9.52507,3.94239 -0.17505,0.86957 0.10502,2.00026 0.336,3.10278 -1.89015,1.55553 -4.01532,2.6904 -6.22906,3.66676 -0.63201,3.62524 -1.23701,7.25921 0.22449,11.56178 1.06993,2.54525 2.01696,5.16263 5.40606,6.34661 1.30836,2.91224 3.78469,4.46715 6.7648,5.43665 1.73156,2.54731 3.79719,4.73584 7.98617,4.64392 1.30274,2.16604 2.03431,1.90586 2.98313,2.56849 8.04065,-3.42448 16.14203,-6.92564 29.05616,-16.50298 0.95542,-0.054 1.79046,0.0406 3.12066,-0.47613 1.49535,-1.38016 3.08678,-2.46258 4.67149,-3.56582 0,0 8.21468,-6.10923 21.95816,-16.88893 16.67175,-13.07648 41.04026,-23.63702 52.33009,-33.31707 19.4463,-16.67353 35.54472,-41.30466 32.25561,-52.31081 -1.06963,-9.28742 -6.90951,-43.83017 -10.48131,-76.21312 1.6744,-16.82464 3.75524,-26.77216 -7.88563,-41.90342 -8.1,-7.9 -27.20662,-9.05478 -27.20662,-9.05478 -2.50151,5.59877 -7.25637,8.55837 -2.40116,26.5298 2.34527,6.04617 2.69274,12.23744 3.13339,18.91848 3.16851,28.04891 8.85591,61.81475 16.82548,83.43815 z"/><path sodipodi:nodetypes="ccc" id="path3151" class="shadow" d="m 383.41945,309.3693 c 2.28724,-7.90419 0.16428,-14.75962 4.08426,-29.01888 -3.08119,14.24267 -0.8821,20.11482 -4.08426,29.01888 z"/><path sodipodi:nodetypes="ccc" id="path3153" class="shadow" d="m 243.99178,394.75453 c 6.36467,0.53211 7.2545,3.0199 8.38384,4.34803 -2.19884,-2.09847 -2.78341,-2.3409 -8.38384,-4.34803 z"/><path sodipodi:nodetypes="ccc" id="path3155" class="shadow" d="m 252.17869,399.00532 c -3.82444,3.18216 -3.78884,2.60335 -5.7396,2.96762 1.73249,-0.57209 1.58917,-0.34512 5.7396,-2.96762 z"/><path sodipodi:nodetypes="ccc" id="path3157" class="shadow" d="m 389.94651,480.42726 c 3.74075,0.1564 3.34657,0.40551 5.66621,1.39553 -2.29503,-0.79147 -2.60429,-0.71189 -5.66621,-1.39553 z"/><path sodipodi:nodetypes="ccc" id="path3159" class="shadow" d="m 395.58875,481.81007 c 0.81106,-0.0584 1.11219,0.0383 1.83027,-0.0263 -0.74815,-0.0766 -0.92069,-0.19236 -1.83027,0.0263 z"/><path sodipodi:nodetypes="ccc" id="path3161" class="shadow" d="m 254.42221,394.99561 c -1.72043,4.67349 -3.64876,9.50965 -5.57914,10.77534 1.51274,-1.7022 3.5648,-6.57205 5.57914,-10.77534 z"/><path sodipodi:nodetypes="ccc" id="path3163" class="shadow" d="m 246.42463,401.92902 c -1.72159,1.52278 -1.97104,1.6621 -4.1374,2.52807 1.94983,-1.12376 2.21692,-1.23748 4.1374,-2.52807 z"/><path sodipodi:nodetypes="ccc" id="path3165" class="shadow" d="m 245.55098,400.388 c -2.1608,-0.82632 -3.4374,-0.75858 -5.54527,-0.55809 2.39176,-0.76317 3.37763,-0.51913 5.54527,0.55809 z"/><path sodipodi:nodetypes="ccc" id="path3167" class="shadow" d="m 251.69058,409.54203 c -2.21424,4.43034 -6.59008,5.55902 -8.52045,6.8247 1.71049,-1.50842 6.50611,-2.62141 8.52045,-6.8247 z"/><path sodipodi:nodetypes="ccc" id="path3169" class="shadow" d="m 256.9204,416.20694 c -2.11555,4.4468 -5.17445,4.28717 -7.10483,5.55286 1.81559,-1.35236 5.09049,-1.34957 7.10483,-5.55286 z"/><path sodipodi:nodetypes="ccc" id="path3171" class="shadow" d="m 262.90878,421.66979 c -2.2006,4.42272 -2.99042,3.38983 -4.92079,4.65552 1.74097,-1.45386 2.90645,-0.45223 4.92079,-4.65552 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Right_High.tw b/src/art/vector_revamp/layers/Arm_Right_High.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d4c948cb6d9b423105c3896d4db4cfa2d04a2c2c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Right_High.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Right_High [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccsccccccccccccccccccscsscc" id="path3267" d="m 259.39085,219.99261 c 0,0 -11.4994,-9.89625 -19.3512,-17.30477 -13.55495,-10.6354 -16.5421,-12.96229 -23.61491,-19.05855 -7.84581,-5.48263 -11.33539,-8.77242 -14.18124,-11.27461 -1.59426,-0.41862 -14.57996,-10.23511 -15.50675,-17.99531 -0.30105,-2.52075 7.13378,-13.12186 10.18104,-16.29746 10.0981,-12.66515 14.28981,-11.39852 26.56588,-18.49891 20.9156,-10.12621 37.2882,-17.70528 37.28061,-17.28893 1.94149,-0.87834 15.65824,-4.611687 14.74106,-3.976477 2.64756,-0.166485 9.27182,1.396148 9.11158,1.835007 15.92104,-4.527759 22.02179,-3.105036 29.56893,-2.843117 0.53511,0.818414 1.47862,0.628049 1.41733,3.025847 3.51257,1.2406 4.50117,3.47693 4.64203,6.36438 2.11132,1.72264 3.93959,3.50445 3.36111,6.55914 2.5318,1.96802 2.44818,4.26321 1.92693,6.80088 -0.30855,3.98719 -1.98153,6.77689 -4.21016,9.07522 -2.10065,0.1102 -4.15584,0.4605 -6.38828,0.70975 -0.0238,1.09284 -0.29881,2.0174 -0.90926,2.5303 -3.51244,4.3944 -6.24262,0.87047 -9.13633,-0.21053 -1.64333,0.0894 -4.13515,0.43539 -5.76534,-0.89566 -4.8078,-1.15706 -13.18021,-10.80666 -13.15481,-10.96256 -2.13384,0.12843 -4.26201,0.27444 -6.59247,-0.21243 -6.9898,0.45253 -14.36983,2.47734 -17.85002,2.73673 -11.11904,3.05074 -35.45572,28.98109 -46.09657,27.81755 -0.80241,-0.0877 0.70344,1.51406 1.18795,2.30615 8.10171,5.03261 22.54551,16.19148 35.37619,25.48062 6.28262,4.54849 12.39945,5.64348 16.97459,8.35665 1.99185,1.18121 7.93634,5.85615 7.93634,5.85615 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.94240636"/><path d="m 259.39085,219.99261 c 0,0 -11.09917,-10.27939 -19.3512,-17.30477 -12.8911,-10.97488 -15.50869,-12.98224 -22.86491,-18.93355 -7.35622,-5.95133 -12.41012,-9.56779 -15.40224,-11.92994 -0.51549,-0.40696 -14.10708,-9.74715 -14.99488,-17.28574 -0.36683,-3.11486 7.78548,-13.45707 10.63018,-17.00703 7.42929,-9.27118 14.77475,-11.67837 27.41038,-18.23375 17.64518,-9.15434 35.9461,-17.02376 35.9461,-17.02376 0,0 13.0177,-3.417078 14.74106,-3.976477 1.26304,0.05577 8.3248,1.548142 9.11158,1.835007 13.99391,-3.008292 21.8199,-2.945865 29.56893,-2.843117 0.50937,0.842338 1.19497,0.891556 1.41733,3.025847 3.39454,1.3705 4.22052,3.78576 4.64203,6.36438 2.02196,1.78044 3.41759,3.84218 3.36111,6.55914 2.26855,2.08814 2.03529,4.45164 1.92693,6.80088 -0.46156,3.85176 -2.32676,6.4713 -4.21016,9.07522 -2.14619,-0.002 -4.28171,0.14977 -6.38828,0.70975 -0.23338,0.93759 -0.43868,1.91379 -0.90926,2.5303 -3.70065,3.95156 -6.25201,0.84837 -9.13633,-0.21053 -1.58528,-0.13117 -4.04804,0.10436 -5.76534,-0.89566 -4.73466,-1.60596 -13.15481,-10.96256 -13.15481,-10.96256 l -6.59247,-0.21243 c -7.35428,-0.284 -11.09037,1.70346 -16.764,2.56724 l -1.67401,0.29449 c -12.76702,3.05181 -20.62907,14.16069 -31.02434,21.168 -4.3974,2.96423 -13.29629,8.8307 -13.29629,8.8307 0,0 18.92983,14.51195 35.0083,25.85293 6.67662,4.70936 13.08253,5.86673 17.21619,8.21637 1.41226,0.80275 8.86431,5.54352 8.86431,5.54352" id="path3269" sodipodi:nodetypes="csscssscccccccccccccccccccssc" class="skin"/><path d="m 314.8035,130.10722 c -4.91505,-2.78303 -4.69322,-5.15544 -5.10067,-6.66314 0.97688,2.53491 1.35543,2.94959 5.10067,6.66314 z" class="shadow" id="path3271" sodipodi:nodetypes="ccc"/><path d="m 309.82448,123.59658 c 4.27234,-1.20558 4.02571,-0.74304 5.73079,-0.32343 -1.60792,-0.16837 -1.40724,-0.30207 -5.73079,0.32343 z" class="shadow" id="path3273" sodipodi:nodetypes="ccc"/><path d="m 314.80546,130.07947 c -0.098,-3.36849 0.14746,-3.03453 0.87734,-5.19396 -0.55565,2.12164 -0.46563,2.39281 -0.87734,5.19396 z" class="shadow" id="path3275" sodipodi:nodetypes="ccc"/><path d="m 108.68863,19.303827 c -0.49935,0.469172 -0.74546,0.546712 -1.18095,0.97262 0.52753,-0.326257 0.6995,-0.321405 1.18095,-0.97262 z" class="shadow" id="path3277" sodipodi:nodetypes="ccc"/><path d="m 306.51108,126.0649 c 3.14298,-3.2066 6.51432,-6.47026 8.54253,-6.79894 -1.85694,0.84134 -5.34042,4.08708 -8.54253,6.79894 z" class="shadow" id="path3279" sodipodi:nodetypes="ccc"/><path d="m 315.55037,123.31458 c 1.95722,-0.61691 2.21018,-0.63947 4.2775,-0.5527 -1.99038,0.20488 -2.24788,0.19991 -4.2775,0.5527 z" class="shadow" id="path3281" sodipodi:nodetypes="ccc"/><path d="m 315.67213,124.90299 c 1.42546,1.47543 2.47702,1.89027 4.24668,2.50237 -2.20976,-0.25431 -2.91021,-0.81821 -4.24668,-2.50237 z" class="shadow" id="path3283" sodipodi:nodetypes="ccc"/><path d="m 317.19371,115.14694 c 3.28076,-3.02925 4.48915,-1.83384 6.46354,-1.93829 -1.98636,0.18987 -3.26143,-0.77356 -6.46354,1.93829 z" class="shadow" id="path3285" sodipodi:nodetypes="ccc"/><path d="m 314.22671,108.02799 c 3.60791,-2.53496 4.00354,-1.64608 6.07674,-1.33616 -2.01029,-0.14966 -2.54463,-0.84091 -6.07674,1.33616 z" class="shadow" id="path3287" sodipodi:nodetypes="ccc"/><path d="m 310.51892,101.21471 c 3.64838,-2.022538 3.05965,-0.97171 5.11639,-0.89543 -1.9732,0.17927 -1.52109,-0.977392 -5.11639,0.89543 z" class="shadow" id="path3289" sodipodi:nodetypes="ccc"/><path d="m 197.74447,147.63995 c 8.21562,0.67892 11.21099,4.73522 18.47445,5.31502 -5.31009,0.60942 -12.29205,-3.84289 -18.47445,-5.31502 z" class="shadow" id="path3291" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Right_Low.tw b/src/art/vector_revamp/layers/Arm_Right_Low.tw
new file mode 100644
index 0000000000000000000000000000000000000000..231471cfcc9f94c098694f1f02165769ec26bb38
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Right_Low.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Right_Low [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccccccccc" id="path6858" d="m 271.15625,190.83398 c -10e-4,4.6e-4 -8.26074,0.52813 -17.10937,12.11719 -1.95254,1.86976 -4.95834,7.89234 -5.26368,13.1211 -1.71092,6.18845 -0.1326,11.40008 0.002,11.34961 -0.19861,0 -8.95387,22.74833 -10.89063,34.11914 -4.73894,17.98871 -5.67054,26.42171 -7.78906,36.2246 -3.17908,9.89918 -4.89436,15.96148 -5.71485,19.94336 -5.06993,6.85112 -8.10421,13.34386 -8.54687,20.41211 -2.24109,9.40174 -4.38422,26.77908 -4.7832,46.10157 -3.50027,22.27819 -5.65754,42.50139 -5.24317,42.45995 -0.7027,2.24865 -3.2029,17.94008 -2.65136,16.86036 0.0698,2.98489 2.21741,10.2966 2.64062,10.08203 -3.09584,18.22842 -1.13432,24.9636 -0.20117,33.41406 0.86351,0.5359 0.75775,1.60998 3.14258,1.35156 1.54951,3.84452 3.86687,4.77729 6.75781,4.70704 1.90524,2.23359 3.84428,4.14478 6.83789,3.2539 2.18731,2.68613 4.46787,2.41076 6.95117,1.625 3.94723,-0.66167 6.57922,-2.7601 8.67188,-5.44336 -0.0772,-2.36656 0.089,-4.70108 0.13867,-7.22656 1.08731,-0.11312 1.98448,-0.49494 2.44141,-1.2207 4.06786,-4.29003 0.31185,-7.07578 -1.02344,-10.23828 -0.0572,-1.85161 0.0658,-4.67587 -1.40625,-6.40039 -1.58155,-5.30494 -11.94648,-13.93928 -12.09961,-13.89844 -0.062,-2.40524 -0.10595,-4.80553 -0.79883,-7.38281 -0.1713,-7.88139 1.18999,-16.32513 1.13866,-20.25192 6.09926,-36.72474 24.81008,-86.9047 23.00389,-104.64057 7.91689,-17.39493 20.65345,-84.67624 20.02344,-84.86524 0.59049,-15.19144 -1.41369,-30.38287 1.77147,-45.57431 z" style="fill:#000000"/><path d="m 271.15625,190.83398 c 0,0 -6.00932,-0.18284 -17.10937,12.11719 -1.50978,1.67298 -4.34625,7.6203 -5.26368,13.1211 -0.98724,5.91707 0.002,11.34961 0.002,11.34961 0,0 -8.36237,22.74833 -10.89063,34.11914 -3.94958,17.76318 -5.33355,26.32543 -7.78906,36.2246 -2.45551,9.89918 -4.67817,15.96148 -5.71485,19.94336 -0.29595,1.13676 -6.38568,7.78114 -8.54687,20.41211 -2.23481,13.06125 -3.14408,30.49951 -4.7832,46.10157 -2.32818,22.16098 -5.24317,42.45995 -5.24317,42.45995 0,0 -2.24718,14.88177 -2.65136,16.86036 0.16806,1.41327 2.2846,9.22162 2.64062,10.08203 -1.75274,15.94516 -0.99362,24.72441 -0.20117,33.41406 0.88506,0.50511 0.9952,1.27076 3.14258,1.35156 1.66848,3.70176 4.14973,4.43786 6.75781,4.70704 1.95491,2.12872 4.13447,3.53216 6.83789,3.2539 2.28362,2.38115 4.61893,1.9324 6.95117,1.625 3.79859,-0.8227 6.24384,-3.12343 8.67188,-5.44336 -0.19329,-2.40878 -0.23197,-4.81778 0.13867,-7.22656 0.91387,-0.33611 1.86874,-0.64375 2.44141,-1.2207 3.60965,-4.46626 0.289,-7.08457 -1.02344,-10.23828 -0.27193,-1.76901 -0.25643,-4.55193 -1.40625,-6.40039 -2.02253,-5.18735 -12.09961,-13.89844 -12.09961,-13.89844 l -0.79883,-7.38281 c -0.93798,-8.23224 0.71057,-12.58293 1.06641,-19.01954 l 0.1445,-1.90225 c 6.39226,-48.88511 24.38187,-87.12412 22.93164,-103.9707 6.9,-17.7 20.02344,-84.86524 20.02344,-84.86524 z" id="R" sodipodi:nodetypes="ccccsscsscccccccccccccccccccc" class="skin"/><path d="m 238.37545,485.13693 c -3.21198,-5.29673 -5.55722,-4.86012 -7.09647,-5.19822 2.61397,0.89603 3.06106,1.2881 7.09647,5.19822 z" class="shadow" id="XMLID_511_-7-7-2" sodipodi:nodetypes="ccc"/><path d="m 231.44183,480.06319 c -0.82136,4.89077 -0.38222,4.57738 0.18791,6.45803 -0.31103,-1.79147 -0.42645,-1.55565 -0.18791,-6.45803 z" class="shadow" id="XMLID_511_-7-7-1-8" sodipodi:nodetypes="ccc"/><path d="m 238.34797,485.14132 c -3.36667,0.1564 -3.01191,0.40551 -5.09959,1.39553 2.06553,-0.79147 2.34386,-0.71189 5.09959,-1.39553 z" class="shadow" id="XMLID_511_-7-7-1-5-6" sodipodi:nodetypes="ccc"/><path d="m 233.26996,486.52413 c -0.72996,-0.0584 -1.00098,0.0383 -1.64725,-0.0263 0.67334,-0.0766 0.82862,-0.19236 1.64725,0.0263 z" class="shadow" id="XMLID_511_-7-7-1-5-7-8" sodipodi:nodetypes="ccc"/><path d="m 233.60737,476.14891 c -2.91668,3.78139 -5.8699,7.82362 -6.01695,10.12614 0.67334,-2.15084 3.59872,-6.31751 6.01695,-10.12614 z" class="shadow" id="XMLID_511_-7-7-1-3-1" sodipodi:nodetypes="ccc"/><path d="m 231.67059,486.51243 c -0.44069,2.24565 -0.44065,2.53137 -0.17006,4.84494 0.027,-2.25028 -8.9e-4,-2.53891 0.17006,-4.84494 z" class="shadow" id="XMLID_511_-7-7-1-3-8-1" sodipodi:nodetypes="ccc"/><path d="m 233.26486,486.52348 c 1.59776,1.48331 2.10493,2.63081 2.8727,4.56873 -0.45029,-2.4602 -1.0748,-3.20182 -2.8727,-4.56873 z" class="shadow" id="XMLID_511_-7-7-1-3-8-6-8" sodipodi:nodetypes="ccc"/><path d="m 223.67488,489.00293 c -2.72762,3.92201 -1.42836,5.1838 -1.35666,7.4082 0.0124,-2.24458 -1.06157,-3.59957 1.35666,-7.4082 z" class="shadow" id="XMLID_511_-7-7-1-3-83-47" sodipodi:nodetypes="ccc"/><path d="m 216.31402,486.23566 c -2.20575,4.25013 -1.28443,4.62391 -0.79086,6.92643 -0.32821,-2.24459 -1.06488,-2.78968 0.79086,-6.92643 z" class="shadow" id="XMLID_511_-7-7-1-3-83-4-5" sodipodi:nodetypes="ccc"/><path d="m 209.19191,482.61276 c -1.69128,4.25504 -0.69622,3.5111 -0.43702,5.81362 0.003,-2.22896 -1.10982,-1.62999 0.43702,-5.81362 z" class="shadow" id="XMLID_511_-7-7-1-3-83-43-5" sodipodi:nodetypes="ccc"/><path d="m 236.64537,334.13444 c 7.06021,-9.58357 6.87062,-4.51245 12.64676,-12.89388 -5.95381,6.59708 -7.27909,4.1666 -12.64676,12.89388 z" class="shadow" id="XMLID_511_-7-2" sodipodi:nodetypes="ccc"/><path d="m 226.7125,330.8948 c 2.03004,-7.72779 -0.11206,-3.27501 -0.69988,-11.9658 -0.56212,8.05549 2.57621,4.47596 0.69988,11.9658 z" class="shadow" id="XMLID_511_-7-2-0" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Right_Mid.tw b/src/art/vector_revamp/layers/Arm_Right_Mid.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d0982371528cb85b474fead094ebd8e9fc68bfa7
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Right_Mid.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Right_Mid [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path style="display:inline;opacity:1;fill:#000000" d="m 271.15625,190.83398 c -10e-4,4.6e-4 -8.26074,0.52813 -17.10937,12.11719 -1.95254,1.86976 -4.95834,7.89234 -5.26368,13.1211 -1.71092,6.18845 -0.1326,11.40008 0.002,11.34961 -0.19861,0 -8.95387,22.74833 -10.89063,34.11914 -4.73894,17.98871 -5.67054,26.42171 -7.78906,36.2246 -3.17908,9.89918 -4.89436,15.96148 -5.71485,19.94336 -5.06993,6.85112 -3.83658,27.45999 1.73218,31.83549 6.46958,7.18051 19.56181,18.80628 35.24542,30.09973 16.35743,15.52431 31.7849,28.77666 31.98592,28.41196 1.45277,1.85464 12.9542,12.81771 12.37815,11.75086 2.49735,1.63637 9.73647,4.01722 9.79996,3.54699 13.25237,12.89318 19.91118,15.10009 27.39877,19.12712 0.93127,-0.4069 1.75565,0.28969 2.89619,-1.82061 4.04485,0.9058 6.12792,-0.47298 7.7106,-2.89323 2.92029,-0.30127 5.5943,-0.81332 6.55954,-3.78379 3.45298,-0.27672 4.52039,-2.31078 5.2826,-4.80141 1.69512,-3.6256 1.46086,-6.98356 0.43901,-10.22932 -1.99242,-1.27938 -3.82034,-2.741 -5.87162,-4.21503 0.52388,-0.95948 0.7186,-1.91488 0.38031,-2.70296 -1.22399,-5.78391 -5.64919,-4.27207 -9.01091,-4.96722 -1.55706,-1.00364 -3.81274,-2.7076 -6.06804,-2.47414 -5.26554,-1.70815 -18.25679,1.92653 -18.31006,2.0758 -2.01565,-1.31386 -4.01697,-2.63976 -6.53228,-3.53178 -6.58669,-4.3314 -12.76672,-10.24385 -16.02915,-12.42993 -26.77777,-25.86229 -53.20972,-51.69811 -55.01591,-69.43398 7.91689,-17.39493 20.65345,-84.67624 20.02344,-84.86524 0.59049,-15.19144 -1.41369,-30.38287 1.77147,-45.57431 z" id="path3186" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/><path class="skin" sodipodi:nodetypes="ccccsscsscccccccccccccccccccc" id="path3188" d="m 271.15625,190.83398 c 0,0 -6.00932,-0.18284 -17.10937,12.11719 -1.50978,1.67298 -4.34625,7.6203 -5.26368,13.1211 -0.98724,5.91707 0.002,11.34961 0.002,11.34961 0,0 -8.36237,22.74833 -10.89063,34.11914 -3.94958,17.76318 -5.33355,26.32543 -7.78906,36.2246 -2.45551,9.89918 -4.67817,15.96148 -5.71485,19.94336 -0.29595,1.13676 -7.44168,22.88828 1.73218,31.83549 9.48636,9.252 23.32893,19.89639 35.24542,30.09973 16.92605,14.49271 31.98592,28.41196 31.98592,28.41196 0,0 10.97835,10.29527 12.37815,11.75086 1.25905,0.66361 8.88947,3.35187 9.79996,3.54699 12.13452,10.4916 19.79407,14.8485 27.39877,19.12712 0.91815,-0.44211 1.61108,-0.0983 2.89619,-1.82061 3.99482,0.72683 6.00895,-0.89851 7.7106,-2.89323 2.86213,-0.40168 5.25455,-1.3999 6.55954,-3.78379 3.25651,-0.52908 4.21224,-2.70662 5.2826,-4.80141 1.47818,-3.59459 0.97138,-6.91359 0.43901,-10.22932 -2.09307,-1.20775 -4.09857,-2.54294 -5.87162,-4.21503 0.24184,-0.94321 0.5304,-1.90402 0.38031,-2.70296 -1.62912,-5.50663 -5.66939,-4.25824 -9.01091,-4.96722 -1.6109,-0.77996 -3.89354,-2.37194 -6.06804,-2.47414 -5.41896,-1.27832 -18.31006,2.0758 -18.31006,2.0758 l -6.53228,-3.53178 c -7.31065,-3.89922 -9.95748,-7.72551 -15.05541,-11.6711 l -1.4843,-1.19845 c -36.62429,-33.00419 -53.05512,-52.14778 -54.50535,-68.99436 6.9,-17.7 20.02344,-84.86524 20.02344,-84.86524 z"/><path sodipodi:nodetypes="ccc" id="path3190" class="shadow" d="m 359.96083,414.41916 c -6.184,-0.36101 -7.15535,1.81781 -8.30722,2.89336 2.22113,-1.64386 2.79767,-1.7895 8.30722,-2.89336 z"/><path sodipodi:nodetypes="ccc" id="path3192" class="shadow" d="m 351.84852,417.24907 c 3.56093,3.45167 3.55208,2.91224 5.42413,3.51001 -1.65158,-0.7605 -1.52291,-0.53165 -5.42413,-3.51001 z"/><path sodipodi:nodetypes="ccc" id="path3194" class="shadow" d="m 359.94885,414.44428 c -1.78171,2.86085 -1.37528,2.7101 -1.7448,4.99089 0.52044,-2.14988 0.74391,-2.33389 1.7448,-4.99089 z"/><path sodipodi:nodetypes="ccc" id="path3196" class="shadow" d="m 233.26996,486.52413 c -0.72996,-0.0584 -1.00098,0.0383 -1.64725,-0.0263 0.67334,-0.0766 0.82862,-0.19236 1.64725,0.0263 z"/><path sodipodi:nodetypes="ccc" id="path3198" class="shadow" d="m 349.8544,413.24474 c 1.45845,4.5474 3.11093,9.27291 4.92336,10.7006 -1.38888,-1.77496 -3.15963,-6.54816 -4.92336,-10.7006 z"/><path sodipodi:nodetypes="ccc" id="path3200" class="shadow" d="m 357.2886,420.72046 c 1.59897,1.6372 1.83425,1.79931 3.89279,2.88939 -1.83755,-1.2992 -2.09103,-1.44003 -3.89279,-2.88939 z"/><path sodipodi:nodetypes="ccc" id="path3202" class="shadow" d="m 358.2024,419.41402 c 2.12802,-0.47385 3.36067,-0.24028 5.39203,0.22725 -2.28124,-1.02532 -3.24627,-0.93195 -5.39203,-0.22725 z"/><path sodipodi:nodetypes="ccc" id="path3204" class="shadow" d="m 354.80193,428.71736 c 1.68152,4.47153 3.45776,4.11776 5.33,5.321 -1.84113,-1.28394 -3.56627,-1.16856 -5.33,-5.321 z"/><path sodipodi:nodetypes="ccc" id="path3206" class="shadow" d="m 348.34631,433.20791 c 2.24783,4.22802 3.07842,3.68152 5.25439,4.58173 -2.03443,-1.00349 -2.90129,-0.70625 -5.25439,-4.58173 z"/><path sodipodi:nodetypes="ccc" id="path3208" class="shadow" d="m 341.32165,437.01632 c 2.54382,3.8072 2.49593,2.56571 4.5389,3.6589 -1.83361,-1.26734 -1.97191,-0.0112 -4.5389,-3.6589 z"/><path sodipodi:nodetypes="ccc" id="path3212" class="shadow" d="m 232.75946,324.12197 c 6.44272,2.56904 8.97124,6.42201 15.31369,1.22631 -5.23343,2.95476 -7.65007,0.91512 -15.31369,-1.22631 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Stump.tw b/src/art/vector_revamp/layers/Arm_Stump.tw
new file mode 100644
index 0000000000000000000000000000000000000000..80c4788ddb233c9bf2bbbec20d0a816d3ac5637c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Stump.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Stump [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="scsas" id="path1420" d="m 358.5887,178.95455 c 14.62279,-1.68069 26.43944,8.01522 27.2351,21.9566 -0.56595,12.09082 -14.60862,20.72368 -26.56495,23.43702 -7.62636,1.73071 -15.19855,5.71989 -18.80847,0.59021 -9.48283,-13.47506 1.76879,-44.10237 18.13832,-45.98383 z" class="shadow"/><path class="skin" d="m 358.5887,178.95455 c 11.27433,-2.97859 26.97612,10.29832 27.2351,21.9566 0.26225,11.80571 -15.58625,19.08828 -26.56495,23.43702 -5.83173,2.31 -15.19855,5.71989 -18.80847,0.59021 -9.48283,-13.47506 2.20761,-41.77507 18.13832,-45.98383 z" id="path62-3" sodipodi:nodetypes="aaaaa"/><path sodipodi:nodetypes="ccccc" id="path1429" d="m 266.62049,190.96644 c 14.7851,-4.44494 28.94581,4.9963 30.24031,16.38814 1.33327,11.7331 -14.82389,22.17579 -26.56495,23.43702 -7.77555,0.83525 -18.48928,-3.87003 -20.48786,-11.43061 -2.96217,-11.75747 1.80873,-22.72825 16.8125,-28.39455 z" class="shadow"/><path class="skin" d="m 266.62049,190.96644 c 11.05043,-3.05578 28.94581,4.9963 30.24031,16.38814 1.33327,11.7331 -14.82389,22.17579 -26.56495,23.43702 -7.77555,0.83525 -18.44985,-3.88056 -20.48786,-11.43061 -2.86655,-10.61946 6.21083,-25.46287 16.8125,-28.39455 z" id="path62-3-9" sodipodi:nodetypes="aaaaa"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Up_Hair_Bushy.tw b/src/art/vector_revamp/layers/Arm_Up_Hair_Bushy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e42001566af398d69e2195879f7c10107b06a50a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Up_Hair_Bushy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Up_Hair_Bushy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 360.53365,236.48083 c -0.55578,0.2551 1.01548,-0.63209 3.04941,3.3643 -0.97228,-3.1532 -2.70812,-4.02467 -1.94925,-6.16278 1.53423,0.28812 5.80123,-1.42335 5.33972,3.17441 0.98363,-3.5058 -3.07079,-4.82298 -4.92575,-6.88832 0.18244,1.45667 11.2297,-1.04275 6.84876,5.20608 5.3105,-5.44303 -2.41392,-7.14507 -3.39202,-9.43961 -0.45356,1.56568 -1.45066,-1.04783 4.80075,-0.24689 -3.46772,-0.44603 -8.11396,-3.23134 -7.33132,-5.42448 2.51841,0.0603 4.53675,2.08298 3.54725,3.90196 1.08804,-2.44307 -0.41883,-4.58012 -2.50244,-6.5782 0.56364,1.26579 4.18828,2.35147 3.56874,-0.98917 0.24672,1.8905 -2.15515,1.74514 -2.17213,-0.88218 2.16264,-1.07417 3.58587,0.37498 2.70189,1.87578 1.89339,-3.4784 -1.34178,-3.52056 -1.98242,-4.08425 0.51967,-0.0851 0.6538,-0.44246 0.82158,-0.77605 1.2738,1.58522 4.59918,1.41997 4.62772,1.37618 -1.75593,-0.63763 -4.09192,-1.77678 -3.206,-2.73539 0,0 -0.30162,-0.93139 0.47217,-1.6882 -1.17562,0.12647 -1.50552,0.39685 -2.29732,1.39659 0.43889,-0.74403 0.22952,-1.36458 0.27651,-2.03396 -0.19789,1.53736 -0.94588,2.69608 -2.74427,3.1318 0.29183,-1.13068 -0.21459,-1.42216 -0.71523,-1.71972 0.596,1.32079 -0.14863,1.44588 -1.07278,1.41086 -0.87655,-1.71928 0.22738,-2.55256 0.83323,-3.60866 -1.93061,0.6298 -3.38367,1.69073 -3.81887,3.67055 -0.70564,-0.81459 -0.56273,-1.73524 -0.459,-2.651 -0.65736,0.85385 -1.14327,1.8183 -1.15811,3.08668 l 1.88893,15.25586 c 0,0 1.15763,7.50544 0.95025,9.05781 z" class="armpit_hair" id="path3321" sodipodi:nodetypes="cccccccccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Arm_Up_Hair_Neat.tw b/src/art/vector_revamp/layers/Arm_Up_Hair_Neat.tw
new file mode 100644
index 0000000000000000000000000000000000000000..541e8092eb7c64205bc3ec428bd2efcaf5ddfb3f
--- /dev/null
+++ b/src/art/vector_revamp/layers/Arm_Up_Hair_Neat.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Arm_Up_Hair_Neat [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 361.07872,235.74368 c -0.94878,-8.80737 -2.85473,-24.59569 2.37908,-28.8536 2.1627,9.19615 -2.2466,10.90217 -2.37908,28.8536 z" class="armpit_hair" id="XMLID_590_-04-8-9-4-9" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Ball_Gag.tw b/src/art/vector_revamp/layers/Ball_Gag.tw
new file mode 100644
index 0000000000000000000000000000000000000000..063b9ec508e8fc824dedb729dc90343780c9c576
--- /dev/null
+++ b/src/art/vector_revamp/layers/Ball_Gag.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Ball_Gag [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path transform="translate(-220)" style="fill:#070505" d="m 523.375,164.2125 -2.6,-6.8 c 12.75713,-2.94492 23.23175,-9.45485 32.075,-18.5625 l -2.2375,8.65 c -7.51195,8.76554 -17.68909,12.0982 -27.2375,16.7125 z" id="XMLID_892_" sodipodi:nodetypes="ccccc"/><path style="display:inline;fill:#070505" d="m 293.22989,164.19677 -0.18125,-6.175 c -9.86299,-0.39059 -15.54142,-2.51766 -23.98953,-7.65228 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 5.59927,3.72945 11.74667,3.21777 18.30936,4.77953 z" id="XMLID_892_-2" sodipodi:nodetypes="ccccc"/><ellipse ry="8.6999998" rx="7.5999999" cy="161.16251" cx="298.51154" class="gag" id="XMLID_893_"/><path d="m 306.02067,162.97491 -2.0677,2.89842 -5.39788,1.58688 -2.82555,-0.10895 -1.88734,-0.62251 -1.38183,-1.34784 -1.2286,-1.56979 1.06304,4.39723 6.7635,2.54005 5.76357,-2.47077 z" class="skin" id="path6092-9-0" sodipodi:nodetypes="ccccccccccc"/><path d="m 302.62164,169.71603 c -1.74238,0.53615 -2.60522,0.4584 -4.21391,0.59078 1.90231,1.18953 3.69017,1.02552 4.21391,-0.59078 z" class="shadow" id="path6086" sodipodi:nodetypes="ccc" inkscape:transform-center-x="-0.11271335" inkscape:transform-center-y="0.18012958"/><path d="m 304.91055,156.29042 -2.41768,-3.28171 -5.11224,-1.06107 -5.04732,2.60438 -0.83575,3.32702 1.24872,-0.83125 8.84286,-1.44319 1.18295,-0.0262 z" class="skin" id="path6092-9" sodipodi:nodetypes="ccccccccc"/><path d="m 295.20052,154.26071 c -2.3361,0.18741 -2.33066,0.35817 -4.0167,1.55377 1.655,-0.6968 2.23834,-1.20495 4.0167,-1.55377 z" class="shadow" id="path6090" sodipodi:nodetypes="ccc"/><path d="m 304.161,154.50746 c -2.57764,-0.30209 -3.84681,-1.5219 -6.16236,-0.68113 1.75915,-0.36046 4.35011,0.67624 6.16236,0.68113 z" class="shadow" id="path6092" sodipodi:nodetypes="ccc"/><path d="m 299.04326,167.07067 c -0.13152,0.022 -0.40257,0.12733 -0.53126,0.14693 -0.43426,0.066 -0.66116,0.11591 -0.9949,0.11275 -0.32669,-0.003 -0.64714,-0.0906 -0.9716,-0.12883 -0.39646,-0.0467 -0.8023,-0.0332 -1.19129,-0.1229 -0.4284,-0.0988 -0.70933,-0.26528 -1.2387,-0.45306 -0.77848,-0.27614 -2.88068,-2.86681 -2.88068,-2.86681 0,0 1.49812,2.61596 2.79901,3.13737 3.08136,1.23506 6.83182,0.62648 9.92721,-0.79502 0.85817,-0.39411 2.09247,-3.26423 2.09247,-3.26423 0,0 -1.38905,2.28638 -2.22782,2.75017 -0.83878,0.46378 -1.81847,0.80943 -2.77091,1.08765 -0.65596,0.19162 -1.81889,0.36368 -2.01153,0.39598 z" class="shadow" id="path6088-1" sodipodi:nodetypes="ssaaascasccas"/><path d="m 301.42603,155.31779 c -1.28714,0.38629 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.28226,-0.0804 -1.68445,0.0447 -0.56144,0.17459 -1.39365,1.2375 -1.39365,1.2375 0,0 1.11202,-0.73807 1.36276,-0.82425 0.25074,-0.0862 5.13658,0.10226 8.25323,-1.27205 0.8774,-0.3869 2.03092,-0.18331 3.83075,0.45061 -1.71452,-1.0529 -3.04021,-1.10941 -3.43218,-0.99177 z" class="shadow" id="path6088-5" sodipodi:nodetypes="ssssssssczscs"/><path d="m 306.00314,162.68917 c 0.82424,1.59261 -0.25293,4.15034 -0.18904,5.79891 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 1.24547,-4.2508 0.019,-5.7455 z" class="highlightStrong" id="path6086-7" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/><path d="m 291.15378,163.72407 c -0.16856,1.30377 1.45269,2.69973 1.87939,4.09263 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 -1.83304,-2.52165 -1.51758,-4.48872 z" class="highlightStrong" id="path6086-7-7" sodipodi:nodetypes="cscssc" inkscape:transform-center-x="-0.45383565" inkscape:transform-center-y="0.091816717"/><path d="m 305.98681,162.86279 c 0.3563,1.7575 -1.38048,3.92219 -1.77075,5.52517 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 2.27663,-3.9109 1.50666,-5.68446 z" class="highlightStrong" id="path6086-7-0" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Balls_0.tw b/src/art/vector_revamp/layers/Balls_0.tw
new file mode 100644
index 0000000000000000000000000000000000000000..10cef6da79b7676c611412c783e23d83caf9e263
--- /dev/null
+++ b/src/art/vector_revamp/layers/Balls_0.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Balls_0 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 280.8,465.675 c 0.7,2 1.6,2.3 2.3,2.5 1.4,0.4 2.2,-0.1 4.6,0.6 1.1,0.4 1.8,1.2 3.6,1.2 0.4,0 2.9,0.4 5,-1.5 1.3,-1.2 1.2,-3 1.2,-5.7 0,-2 -0.4,-3.3 -0.7,-4.1 -0.5,-1.3 -0.8,-2.1 -1.5,-2.6 -1.7,-1.1 -4.2,0.1 -5.5,0.7 -1.4,0.7 -3.1,-0.2 -4.7,1.3 -2.6,2.1 -5.2,5.2 -4.3,7.6 z" class="shadow" id="XMLID_876_" sodipodi:nodetypes="cscscsccccc"/><path d="m 280.9,463.575 c -0.1,1.2 0.4,2.7 1.5,3.5 1.2,0.9 2,0.1 4.5,0.7 2,0.5 1.9,1.2 3.5,1.3 0.4,0.1 3.3,0.4 5.1,-1.3 1.3,-1.3 1.2,-3.2 1.2,-5.9 0,-2 -0.4,-3.4 -0.7,-4.2 -0.5,-1.4 -1.37452,-4.32132 -2.17452,-4.82132 -1.7,-1.2 -4.4,0.1 -5.6,0.7 -1.4,0.7 -1.72548,3.52132 -3.32548,5.02132 -2.7,2.3 -3.9,3.5 -4,5 z" class="skin scrotum" id="XMLID_877_" sodipodi:nodetypes="cccccsccscc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Balls_1.tw b/src/art/vector_revamp/layers/Balls_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..b7b70755abbd9643d94471018da5a4355969535a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Balls_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Balls_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 272.075,472.6 c 1.2,3.4 2.8,3.9 3.9,4.3 2.5,0.7 3.8,-0.3 7.9,1.1 1.9,0.5 3.1,2.1 6.3,2.1 0.6,0 5,0.8 8.5,-2.7 2.2,-2.2 2.1,-5.3 2,-9.9 -0.1,-3.4 -0.8,-5.7 -1.2,-7 -0.9,-2.3 -1.3,-3.6 -2.7,-4.5 -2.9,-1.9 -7.3,0.2 -9.5,1.2 -2.4,1.2 -4.7,-0.7 -7.5,1.8 -4,3.8 -9.1,9.6 -7.7,13.6 z" class="shadow" id="XMLID_874_" sodipodi:nodetypes="cccsscccccc"/><path d="m 272.075,469.5 c -0.2,2.1 0.7,4.7 2.6,6.1 2.1,1.5 3.6,0.2 8.1,1.3 3.5,0.9 3.4,2 6.1,2.4 0.6,0.1 5.8,0.8 8.9,-2.4 2.3,-2.4 2.2,-5.6 2.1,-10.5 -0.1,-3.6 -0.8,-6 -1.3,-7.4 -0.9,-2.5 -1.75355,-4.91647 -3.15355,-5.81647 -3.1,-2 -7.7,0.2 -10,1.3 -2.6,1.2 -3.64645,3.61647 -6.54645,6.21647 -4.4,4 -6.6,6.1 -6.8,8.8 z" class="skin scrotum" id="XMLID_875_" sodipodi:nodetypes="ccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Balls_2.tw b/src/art/vector_revamp/layers/Balls_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..95c0d8a00115aabbeaa80486c86e7b94f4eab3c5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Balls_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Balls_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 259.2,478.275 c 2,5.2 4.4,6.1 6.1,6.7 3.9,1.2 6,-0.4 12.4,1.6 2.9,0.9 4.9,3.3 9.8,3.3 0.9,0 7.8,1.3 13.3,-4.1 3.5,-3.4 3.3,-8.3 3.2,-15.5 -0.1,-5.3 -1.2,-8.9 -2,-10.9 -1.3,-3.6 -2.1,-5.8 -4.2,-7.1 -4.5,-2.9 -11.4,0.3 -14.8,2 -3.7,1.8 -6.8,-0.8 -11.2,3.2 -6.3,5.8 -14.9,14.5 -12.6,20.8 z" class="shadow" id="XMLID_872_" sodipodi:nodetypes="cccsccccccc"/><path d="m 259.2,473.675 c -0.2,3.4 1.2,7.6 4.2,9.7 3.3,2.4 5.8,0.3 12.8,2 5.5,1.4 5.3,3.1 9.7,3.8 1,0.2 9.2,1.3 14.2,-3.8 3.6,-3.7 3.6,-8.9 3.5,-16.6 -0.1,-5.7 -1.2,-9.6 -2,-11.7 -1.4,-3.9 -2.3,-6.1 -4.5,-7.6 -4.9,-3.2 -12.3,0.4 -15.9,2 -4.1,2 -6.4,4.1 -11.1,8.3 -7.1,6.4 -10.7,9.6 -10.9,13.9 z" class="skin scrotum" id="XMLID_873_" sodipodi:nodetypes="ccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Balls_3.tw b/src/art/vector_revamp/layers/Balls_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..206c2d22d222de96d3b0e8af3bfceb50a5e08978
--- /dev/null
+++ b/src/art/vector_revamp/layers/Balls_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Balls_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 252.4,487.475 c 2.5,6.8 5.7,8 8,8.7 5.1,1.5 7.8,-0.5 16.1,2.1 3.8,1.2 6.4,4.3 12.7,4.3 1.2,0 10.2,1.7 17.4,-5.3 4.5,-4.4 4.3,-10.8 4.2,-20.2 -0.1,-7 -1.5,-11.6 -2.5,-14.3 -1.7,-4.8 -2.8,-7.5 -5.4,-9.3 -5.9,-3.8 -14.8,0.3 -19.4,2.5 -4.9,2.3 -8.9,-1 -14.6,4.2 -8.3,7.7 -19.5,19 -16.5,27.3 z" class="shadow" id="XMLID_870_" sodipodi:nodetypes="cccsccccccc"/><path d="m 252.4,481.375 c -0.2,4.4 1.5,9.9 5.4,12.6 4.3,3.1 7.5,0.3 16.7,2.7 7.2,1.9 7,4.1 12.6,5 1.3,0.2 12.1,1.7 18.5,-5 4.8,-4.9 4.6,-11.6 4.5,-21.7 -0.1,-7.4 -1.6,-12.5 -2.7,-15.3 -1.9,-5.1 -3,-8 -5.9,-10 -6.4,-4.2 -16,0.5 -20.7,2.7 -5.3,2.5 -8.3,5.3 -14.5,10.8 -8.9,8.5 -13.5,12.7 -13.9,18.2 z" class="skin scrotum" id="XMLID_871_" sodipodi:nodetypes="ccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Balls_4.tw b/src/art/vector_revamp/layers/Balls_4.tw
new file mode 100644
index 0000000000000000000000000000000000000000..26a0258484bb84fe4cdb1da68e129d3d8dc171d5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Balls_4.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Balls_4 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 243.6,499.375 c 3.3,8.9 7.4,10.4 10.4,11.3 6.6,2 10.1,-0.6 21,2.7 5,1.5 8.3,5.6 16.6,5.6 1.5,0 13.3,2.3 22.7,-7 5.9,-5.7 5.6,-14.1 5.4,-26.3 -0.2,-9.1 -2,-15.1 -3.3,-18.6 -2.3,-6.2 -3.6,-9.8 -7.1,-12.1 -7.7,-5 -19.3,0.5 -25.2,3.3 -6.3,3 -11.6,-1.4 -19,5.4 -10.8,10.2 -25.4,25 -21.5,35.7 z" class="shadow" id="XMLID_868_" sodipodi:nodetypes="cccsccccccc"/><path d="m 243.6,491.575 c -0.3,5.7 2,12.8 7.1,16.5 5.6,4.1 9.8,0.5 21.8,3.5 9.4,2.4 9.1,5.3 16.5,6.5 1.7,0.3 15.7,2.3 24.2,-6.5 6.2,-6.3 6,-15.1 5.9,-28.3 -0.2,-9.7 -2.1,-16.3 -3.5,-19.9 -2.4,-6.6 -3.9,-10.4 -7.7,-13 -8.3,-5.4 -20.9,0.6 -27.1,3.5 -7,3.3 -10.9,7 -18.9,14.1 -11.8,10.9 -17.8,16.3 -18.3,23.6 z" class="skin scrotum" id="XMLID_869_" sodipodi:nodetypes="ccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_1.tw b/src/art/vector_revamp/layers/Belly_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f75b12e46179da950c03fe48fca0c6a669c6f7b4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 302.84403,354.15 -12.63017,-60.20736 -37.52737,-2.12133 c -12.96875,29.21542 -5.13048,55.52152 -4.91149,57.42869 z" class="shadow" id="path2628" sodipodi:nodetypes="ccccc"/><path d="M 313.39832,319.9501 C 312.01747,308.83082 305.19485,299.34566 290.7,289.7 c -7.77048,-3.19091 -35.55141,-8.21311 -38.01351,-0.0884 -4.28211,14.49271 -6.07039,23.77421 -6.62938,31.8923 23.89342,8.62747 51.22199,5.92886 67.34121,-1.5538 z" id="path1489" sodipodi:nodetypes="ccccc" class="skin belly_upper"/><path d="m 246.05711,321.5039 c -0.61116,8.87594 0.24722,16.36113 0.92239,27.7461 6.15265,52.7894 49.41907,27.05844 58.60457,5.87227 5.91143,-13.90369 9.05319,-25.19567 7.81425,-35.17217 -19.84031,5.31308 -40.82072,8.52894 -67.34121,1.5538 z" id="path2620" sodipodi:nodetypes="ccccc" class="skin belly"/><path d="m 275.78689,344.77751 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1459-5" class="muscle_tone belly_details" d="m 275.21415,335.53199 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 10e-4,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_1_Piercing.tw b/src/art/vector_revamp/layers/Belly_1_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..8a93c70bbea82ef25c457087e5d5eeab78f7c342
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_1_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_1_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle id="XMLID_547_" class="steel_piercing" r="1.2" cy="334.39999" cx="275.04645"/><circle id="XMLID_548_" class="steel_piercing" cx="275.9808" cy="345.96753" r="1.2"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_1_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_1_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..858894b97e000f90873f70528cdce2f4b8e20cd2
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_1_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_1_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1482" class="steel_piercing" d="m 275.63783,340.94567 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1491" class="steel_piercing" d="m 275.73783,365.94567 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_2.tw b/src/art/vector_revamp/layers/Belly_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7449cd60dfa7b875779f9b14aeb1f1c814e68340
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccc" id="path2636" class="shadow" d="m 311.24092,364.98969 c 11.30701,-29.22957 5.62876,-44.8886 -21.51319,-63.23975 -10.03554,1.53363 -24.20431,-1.41111 -37.04124,-2.13834 -10.20832,30.79084 -11.51166,37.84205 -10.21479,59.6384 15.6102,44.12734 52.77782,22.59483 68.76922,5.73969 z"/><path d="M 312.20931,320.36893 C 307.83085,313.09392 300.72435,306.37075 290.7,299.7 c -15.73274,-8.16624 -36.32471,-6.9694 -38.01351,-0.0884 -2.58984,8.76527 -4.68802,15.62433 -6.33127,21.47269 26.87923,9.94581 47.10701,4.48006 65.85409,-0.71536 z" id="path1495" sodipodi:nodetypes="ccccc" class="skin belly_upper"/><path d="m 246.35522,321.08429 c -4.04438,14.39398 -5.33307,22.66562 -4.41385,38.16571 6.15265,52.7894 60.11405,28.03071 69.29955,6.84454 7.94348,-18.68306 8.60144,-33.04291 0.96839,-45.72561 -20.32569,4.14782 -40.69316,8.19515 -65.85409,0.71536 z" id="path2632" sodipodi:nodetypes="ccccc" class="skin belly"/><path d="m 273.24018,345.52181 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-0" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1459-5-0" class="muscle_tone belly_details" d="m 272.66744,336.27629 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_2_Piercing.tw b/src/art/vector_revamp/layers/Belly_2_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..63d6c99e56f6d0c642993f4c3f6d8c81968c2382
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_2_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_2_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle id="circle1541" class="steel_piercing" cx="272.67145" cy="336.39999" r="1.2"/><circle id="circle1543" class="steel_piercing" cx="273.16516" cy="345.68719" r="1.2"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_2_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_2_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..caa2ea7b919ac246c45333053166d7a3f3e0a766
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_2_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_2_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1497" class="steel_piercing" d="m 272.98618,342.71344 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1501" class="steel_piercing" d="m 273.08618,367.71344 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_3.tw b/src/art/vector_revamp/layers/Belly_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..708cf986d97d0822bd012f6ed09d3311e0cf8b11
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 309.64993,374.76916 c 12.5,-29.4 8.55007,-52.64416 -18.94993,-70.94416 -6.5,-4.3 -36.31351,-11.16339 -38.01351,-2.9634 -10.79598,30.33834 -20.73387,40.93304 -19.14201,62.73091 8.72791,49.95203 66.91995,32.36282 76.10545,11.17665 z" class="shadow" id="path2644" sodipodi:nodetypes="ccccc"/><path d="M 310.31221,320.49239 C 305.88414,313.29324 299.38792,306.73141 290.7,300.95 c -5.20612,-5.0539 -35.64473,-12.8791 -38.01351,-0.0884 -2.21146,7.48465 -4.5755,13.76762 -6.86281,19.3136 23.33155,10.12967 44.19234,6.76521 64.48853,0.31719 z" id="path1500" sodipodi:nodetypes="ccccc" class="skin belly_upper"/><path d="m 245.82368,320.1752 c -6.98412,16.93416 -13.25298,26.9971 -12.2792,43.41731 11.65265,51.4144 68.51094,32.36282 77.69644,11.17665 8.55095,-20.11183 8.65947,-38.68835 -0.92871,-54.27677 -23.1485,5.53162 -45.32224,7.73758 -64.48853,-0.31719 z" id="path2640" sodipodi:nodetypes="ccccc" class="skin belly"/><path d="m 267.14919,359.30734 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1459-5-05" class="muscle_tone belly_details" d="m 266.57645,350.06182 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 10e-4,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_3_Piercing.tw b/src/art/vector_revamp/layers/Belly_3_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..800a0ff076fe466931ae25e7e6f51a26ac83d442
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_3_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_3_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="348.77499" cx="266.54645" class="steel_piercing" id="circle1535"/><circle r="1.2" cy="359.7251" cx="267.29773" class="steel_piercing" id="circle1537"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_3_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_3_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..bbb5b99fe6bb16313727eb558ad4f0bdc8ef79d9
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_3_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_3_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1505" class="steel_piercing" d="m 266.62221,357.20913 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1507" class="steel_piercing" d="m 266.72221,382.20913 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_4.tw b/src/art/vector_revamp/layers/Belly_4.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ebc234488e5ea1ec5ac03daf7f50730aa18bbef0
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_4.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_4 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="sscccs" id="path2666" class="shadow" d="m 274.33657,404.45507 c 15.98049,1.5e-4 37.2717,-10.28977 47.55679,-32.57525 10.42451,-22.58756 -3.38822,-62.55399 -31.19336,-80.85399 -6.5,-4.3 -36.31351,-9.61422 -38.01351,-1.41423 -3.04373,11.64438 -34.24697,29.97538 -28.97985,78.50362 -1.03288,28.54814 34.54738,36.3397 50.62993,36.33985 z"/><path d="M 316.06623,319.50333 C 310.17266,307.69899 301.5397,296.91333 290.7,289.7 c -14.38458,-7.74548 -36.44206,-7.01039 -38.01351,-0.0884 -1.40311,6.26004 -10.51478,14.4182 -18.18379,28.27017 17.24262,20.43098 54.17377,10.86007 81.56353,1.62156 z" id="path2754" class="skin belly_upper" sodipodi:nodetypes="ccccc"/><path d="m 234.5027,317.88177 c -6.54184,11.81606 -12.03392,27.77521 -10.79606,50.23345 1.38291,26.7363 34.64962,36.26302 50.62993,36.33985 15.98031,0.0768 37.95324,-9.9877 47.55679,-32.57525 5.81811,-13.6842 3.2311,-34.23356 -5.82713,-52.37649 -46.49014,10.13848 -63.48936,9.79881 -81.56353,-1.62156 z" id="path2656" class="skin belly" sodipodi:nodetypes="cccscc"/><path d="m 256.74018,369.64681 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5-1" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1459-5-05-8" class="muscle_tone belly_details" d="m 256.16744,360.40129 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_4_Piercing.tw b/src/art/vector_revamp/layers/Belly_4_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1ddf5f17093d73ebfe241a4e922784e680290f88
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_4_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_4_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="360.14999" cx="256.04645" class="steel_piercing" id="circle1547"/><circle r="1.2" cy="370.43719" cx="256.66516" class="steel_piercing" id="circle1549"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_4_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_4_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..0396574af4e711201e9c3eefbe61e0e30ba618fb
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_4_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_4_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1511" class="steel_piercing" d="m 256.72272,367.10862 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1513" class="steel_piercing" d="m 256.82272,392.10862 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_5.tw b/src/art/vector_revamp/layers/Belly_5.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6133503acc0a553571c04a359d487ea29a5d44ca
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_5.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_5 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 274.60566,422.83985 c 22.57794,-0.26377 46.60878,-13.93918 55.8851,-38.27994 C 342.66728,358.01673 318.39072,310.625 290.7,292.325 c -6.5,-4.3 -36.31351,-10.91339 -38.01351,-2.7134 -3.51304,11.351 -42.37199,32.74894 -37.57725,90.52444 1.27823,33.49959 34.99365,42.99006 59.49642,42.70381 z" class="shadow" id="path2660" sodipodi:nodetypes="sccccs"/><path d="M 317.68774,319.64465 C 310.20815,307.23395 300.71424,296.36402 290.7,289.7 c -7.88983,-2.76619 -35.90441,-9.18137 -38.01351,-0.0884 -1.28853,5.74885 -11.30533,13.95251 -20.698,27.7441 -9.1774,45.16184 76.92585,16.40846 85.69925,2.28895 z" id="path2758" class="skin belly_upper" sodipodi:nodetypes="ccccc"/><path d="m 231.98849,317.3557 c -9.55984,14.03704 -18.47314,33.86269 -16.87925,62.78034 1.62509,31.41845 35.08606,42.43563 59.49642,42.70381 22.57812,0.24804 44.59974,-11.73678 55.8851,-38.27994 7.17575,-16.87737 0.25701,-43.24508 -12.80302,-64.91526 -56.44664,26.3136 -88.62673,21.13211 -85.69925,-2.28895 z" id="path2648" class="skin belly" sodipodi:nodetypes="ccsscc"/><path d="m 251.74018,381.39681 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,10e-4 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow belly_details" id="path1454-6-5-5" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1459-5-05-5" class="muscle_tone belly_details" d="m 251.16744,372.15129 c -2.33392,-7.76332 0.81606,-35.04811 0.81606,-35.04811 l 0.001,0.003 c 0,0 -3.96483,25.46463 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_5_Piercing.tw b/src/art/vector_revamp/layers/Belly_5_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a50475e2d2a6192fd95363e68c5309c536afc347
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_5_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_5_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="371.27499" cx="251.17145" class="steel_piercing" id="circle1553"/><circle r="1.2" cy="381.56219" cx="251.79016" class="steel_piercing" id="circle1555"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_5_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_5_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a0f6a79e1690703563624e3b6b23e98ca13e0676
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_5_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_5_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1517" class="steel_piercing" d="m 251.41942,378.06878 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1519" class="steel_piercing" d="m 251.51942,403.06878 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_6.tw b/src/art/vector_revamp/layers/Belly_6.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1565b79601a6de88e3f43ad16b0f0ea6fe89b875
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_6.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_6 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path1353" class="shadow" d="m 274.8,433.8 c 21.7045,0.8035 49.46622,-12.07771 61.9,-42.4 13.35711,-25.50652 -13.60539,-70.14322 -27.1735,-84.40895 C 307.9828,305.36798 290.7,289.7 290.7,289.7 l -38.01351,-0.0884 c -3.72119,10.50526 0.65099,5.14821 -10.23287,13.02156 C 225.22398,315.09704 205.23454,348.37128 208.9,386.5 c 2.04357,37.62359 45.18214,47.07566 65.9,47.3 z" sodipodi:nodetypes="ccsccscc"/><path d="M 318.791,319.36764 C 310.33514,306.83651 300.30412,296.09111 290.7,289.7 c -8.08424,-10.14091 -38.38826,-4.40804 -38.01351,-0.0884 -1.42593,6.36184 -15.51064,15.78815 -27.36287,33.47894 -12.55487,27.69028 83.64205,25.89039 93.46738,-3.7229 z" id="path2762" class="skin belly_upper" sodipodi:nodetypes="ccccc"/><path d="m 225.32362,323.09054 c -9.7588,14.5661 -18.0041,34.73504 -16.42362,63.40946 1.8,34.8 45.1,47.2 65.9,47.3 20.8,0.1 49.4,-13 61.9,-42.4 8.13449,-19.13232 -2.15273,-48.68244 -17.909,-72.03236 -50.10077,20.10102 -91.83376,21.17543 -93.46738,3.7229 z" id="XMLID_544_" class="skin belly" sodipodi:nodetypes="ccsscc"/><path sodipodi:nodetypes="cccc" id="path1329" class="shadow belly_details" d="m 247.11813,400.93648 c 0.6843,-3.19765 0.13727,-8.57118 -0.57274,-9.24552 l -0.0242,10e-4 c -1.11133,4.1119 -0.35187,6.27483 0.59697,9.24433 z"/><path d="m 246.54539,391.69096 c -2.73244,-11.59717 3.64449,-55.02388 3.64449,-55.02388 l 0.001,0.003 c -3.20829,21.99827 -7.36761,44.34013 -3.67011,55.02232 z" class="muscle_tone belly_details" id="path1463" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_6_Piercing.tw b/src/art/vector_revamp/layers/Belly_6_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..52218ab13489117560e9d8969c84b6a6d682f4d6
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_6_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_6_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="390.89999" cx="246.54645" class="steel_piercing" id="circle1559"/><circle r="1.2" cy="401.18719" cx="247.16516" class="steel_piercing" id="circle1561"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_6_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_6_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5b373737ad3663ce69932552d0c4f04f733a6887
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_6_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_6_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 247,396.1 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z" class="steel_piercing" id="path1529" sodipodi:nodetypes="ccscc"/><path d="m 247.1,421.1 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" class="steel_piercing" id="path1531"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_7.tw b/src/art/vector_revamp/layers/Belly_7.tw
new file mode 100644
index 0000000000000000000000000000000000000000..cef7ce29b2b9a8e1f73c43cc5f089a877e7cb37c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_7.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_7 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccsccscc" d="m 279.4638,479.2097 c 30.33614,1.12304 69.13838,-16.88088 86.51694,-59.26201 18.66908,-35.65017 -19.0161,-98.03839 -37.9801,-117.97744 -2.15761,-2.26855 -26.31359,-24.16751 -26.31359,-24.16751 L 248.556,277.67919 c -5.20107,14.68308 0.90988,7.19559 -14.30237,18.20009 -24.08168,17.42062 -52.02069,63.92765 -46.89752,117.21974 2.85628,52.58607 63.15057,65.79712 92.10769,66.11068 z" class="shadow" id="path2668"/><path d="m 341.09982,319.49191 c -11.85,-17.61012 -25.93225,-32.7185 -39.41277,-41.68917 -9.08497,-6.01006 -50.75498,-11.58459 -53.13105,-0.12355 -2.09226,9.33472 -23.68382,23.38988 -40.6941,50.57436 -35.7971,77.89658 152.23681,38.14407 133.23792,-8.76164 z" id="path2766" class="skin belly_upper" sodipodi:nodetypes="ccccc"/><path d="m 207.8619,328.25355 c -12.53436,20.03142 -22.58119,47.19177 -20.50579,84.84547 2.51584,48.63957 63.03576,65.97091 92.10769,66.11068 29.07193,0.13977 69.04583,-18.16996 86.51694,-59.26201 11.3436,-26.68015 -2.94351,-67.8549 -24.88092,-100.45578 -54.64309,34.99223 -153.31807,74.86703 -133.23792,8.76164 z" id="path2670" class="skin belly" sodipodi:nodetypes="ccsscc"/><path sodipodi:nodetypes="ccccc" id="path1329-7" class="shadow belly_details" d="m 229.73798,426.38469 c 0.6843,-3.19765 0.13727,-8.57118 -0.57274,-9.24552 l -0.0242,0.001 c -1.11133,4.1119 -0.35187,6.27483 0.59697,9.24433 z"/><path d="m 229.16524,417.13917 c -2.73244,-11.59717 3.64449,-55.02388 3.64449,-55.02388 l 0.001,0.003 c -3.20829,21.99827 -7.36761,44.34013 -3.67011,55.02232 z" class="muscle_tone belly_details" id="path1463-4" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_7_Piercing.tw b/src/art/vector_revamp/layers/Belly_7_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..da396a3cf94dc5eb324e57c8f847b2df6376715a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_7_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_7_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="416.26746" cx="228.95717" class="steel_piercing" id="circle1565"/><circle r="1.2" cy="426.55466" cx="229.57588" class="steel_piercing" id="circle1567"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_7_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Belly_7_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..89526eb58900ef415b7a7b1be8cb765656b1f9e5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_7_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_7_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccscc" id="path1523" class="steel_piercing" d="m 229.5,422.1 c -0.2,0 -1.6,2.1 -1.5,11.7 0.1,12.7 1.56039,13.34321 1.7,13.2 0.35325,-0.36234 0.35906,-16.24229 1.2,-15.9 -0.82281,-3.89532 -1.12121,-9.06465 -1.4,-9 z"/><path id="path1525" class="steel_piercing" d="m 229.6,447.1 c -0.5,0 -1,2.4 -0.8,4.4 0.2,1.3 0.6,3 1.2,3 0.4,0 0.7,-1.8 0.8,-3 -0.1,-2 -0.7,-4.4 -1.2,-4.4 z" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_Outfit_Maid.tw b/src/art/vector_revamp/layers/Belly_Outfit_Maid.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e48ffbaf42edc1e53a7f03445738a79442179f4c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_Outfit_Maid.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_Outfit_Maid [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccsccscc" d="m 274.8,433.8 c 21.7045,0.8035 49.46622,-12.07771 61.9,-42.4 13.35711,-25.50652 -13.60539,-70.14322 -27.1735,-84.40895 C 307.9828,305.36798 290.7,289.7 290.7,289.7 h -40.4 c -3.72119,10.50526 0.56261,6.65081 -10.32125,14.52416 C 222.74911,316.68803 205.23454,348.37128 208.9,386.5 c 2.04357,37.62359 45.18214,47.07566 65.9,47.3 z" class="shadow" id="path1436"/><path style="display:inline;fill:#ffffff" id="path1438" d="m 274.8,433.8 c 20.8,0.1 49.4,-13 61.9,-42.4 12.5,-29.4 -18.5,-83.4 -46,-101.7 -6.5,-4.3 -38.7,-8.2 -40.4,0 -2.6,11.6 -44.9,33.3 -41.4,96.8 1.8,34.8 45.1,47.2 65.9,47.3 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Belly_Outfit_Maid_Lewd.tw b/src/art/vector_revamp/layers/Belly_Outfit_Maid_Lewd.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1ffee62fcb03300e0ec821b9a323b3dd59753465
--- /dev/null
+++ b/src/art/vector_revamp/layers/Belly_Outfit_Maid_Lewd.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Belly_Outfit_Maid_Lewd [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 274.8,433.8 c 20.8,0.1 49.4,-13 61.9,-42.4 12.5,-29.4 -18,-72.7 -18,-72.7 -31.1469,1.14566 -64.65766,7.56452 -91.9,0 -17.21627,24.22829 -18.42262,47.68549 -17.9,67.8 1.8,34.8 45.1,47.2 65.9,47.3 z" id="path1450" style="display:inline;fill:#ffffff" sodipodi:nodetypes="sscccs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Bit_Gag.tw b/src/art/vector_revamp/layers/Bit_Gag.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a0650c565e7be3384a9933961704e8d939c0a503
--- /dev/null
+++ b/src/art/vector_revamp/layers/Bit_Gag.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Bit_Gag [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccc" id="path1228" d="m 529.28859,160.06078 -1.00625,-4.3 c 13.50884,-2.39103 21.6049,-8.96251 24.56766,-16.91078 l -2.2375,8.65 c -4.5049,6.14649 -11.54337,7.7443 -21.32391,12.56078 z" style="fill:#070505" transform="translate(-220)"/><path sodipodi:nodetypes="ccccc" id="path1230" d="m 287.60397,163.73515 -0.11875,-4.39375 c -11.01207,0.032 -15.30758,-3.90726 -18.42611,-8.97191 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 4.97651,1.7366 6.12074,2.75612 12.68344,4.31791 z" style="display:inline;fill:#070505"/><path d="m 307.0697,162.35378 -2.15252,-6.06594 -9.84101,-0.30977 -5.04732,2.60438 -0.39381,4.12252 1.91163,3.10203 12.51098,0.36877 1.18295,-0.0262 z" class="skin" id="path6092-9-1" sodipodi:nodetypes="ccccccccc"/><path inkscape:transform-center-y="0.18012958" inkscape:transform-center-x="0.11270875" sodipodi:nodetypes="cscsscc" id="path1248" class="highlightStrong" d="m 303.88182,159.68397 c 0.82424,1.59261 1.86839,7.15554 1.93228,8.80411 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 -0.87585,-7.256 -2.10232,-8.7507 z"/><path inkscape:transform-center-y="0.091816717" inkscape:transform-center-x="-0.45383565" sodipodi:nodetypes="cscssc" id="path1250" class="highlightStrong" d="m 293.18671,161.47017 c -0.16856,1.30377 -0.58024,4.95363 -0.15354,6.34653 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 0.19989,-4.77555 0.51535,-6.74262 z"/><path inkscape:transform-center-y="0.18012958" inkscape:transform-center-x="0.11270875" sodipodi:nodetypes="cscsscc" id="path1252" class="highlightStrong" d="m 303.755,159.65871 c 0.3563,1.7575 0.85133,7.12627 0.46106,8.72925 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 0.0448,-7.11498 -0.72515,-8.88854 z"/><circle id="circle1133-2" class="steel_piercing" cx="308.61899" cy="157.93527" r="2.25"/><circle id="circle1133-7" class="steel_piercing" cx="287.7959" cy="161.52223" r="2.25"/><path sodipodi:nodetypes="ccccc" id="path1230-5" d="m 307.69511,158.62698 -0.17297,-0.81105 -3.86456,1.21173 c -0.0334,0.23738 -0.086,0.48025 0.0798,0.66071 z" class="steel_piercing"/><path class="steel_piercing" d="m 293.26019,161.53274 c 0.0776,-0.2002 0.0362,-0.38058 -0.0625,-0.55141 l -4.4735,0.3679 0.15998,0.64652 z" id="path1323" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccc" id="path1374" class="shadow" d="m 300.67907,164.2443 c -1.74079,0.54129 -2.60386,0.46609 -4.21215,0.60322 1.90581,1.1839 3.69318,1.01462 4.21215,-0.60322 z"/><path sodipodi:nodetypes="assssssssaassaa" id="path1376" class="shadow" d="m 304.16836,158.89728 c -0.65754,-0.15935 -1.25886,0.90901 -1.72778,1.06512 -1.27505,0.42448 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.26351,0.0593 -1.68445,0.0447 -0.26066,-0.009 -0.48867,-0.56649 -0.76394,-0.45611 -0.17938,0.0719 -0.27191,0.40524 -0.15456,0.5588 0.19626,0.2568 0.83404,-0.025 0.96964,-0.004 2.70837,0.41982 6.3844,-0.15314 9.47979,-1.57468 0.85817,-0.39411 1.04035,0.0106 1.1865,-0.37786 0.0838,-0.2227 -0.13749,-0.55517 -0.36874,-0.61121 z"/><path sodipodi:nodetypes="ccc" id="path1378" class="shadow" d="m 301.37797,158.85176 c -1.48115,-0.33094 -1.90064,-0.66259 -3.53037,0.43264 0.92533,-0.58981 2.22192,-0.63997 3.53037,-0.43264 z"/><path d="m 297.00827,159.30416 c -1.14969,-0.43141 -1.46342,-0.22949 -2.47508,0.37718 0.97221,-0.32418 1.20482,-0.53261 2.47508,-0.37718 z" class="shadow" id="path1380" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob.tw b/src/art/vector_revamp/layers/Boob.tw
new file mode 100644
index 0000000000000000000000000000000000000000..69bda411c8a13bb050049fc0c2391aa0094b7c22
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1065"><path sodipodi:nodetypes="cccccccc" id="path1056" class="shadow" d="m 270.34578,196.55707 c -12.11058,4.47607 -21.33353,10.38476 -27.42519,17.04587 -12.80622,2.09756 -20.32972,7.4459 -28.75481,12.23956 -3.26563,12.08634 -5.14611,24.17711 3.20444,36.14887 5.15461,10.33009 14.73224,11.95658 25.07247,9.77599 12.30515,-2.59845 22.51491,-12.16054 31.77186,-26.40779 2.55546,-15.31136 11.88781,-30.84621 8.29579,-40.31411 -1.93843,-3.02612 -7.62333,-5.27685 -12.16456,-8.48839 z"/><path d="m 270.34578,196.55707 c -10.88689,5.21029 -20.86401,10.66647 -27.42519,17.04587 -11.65071,2.84039 -19.91205,7.7144 -28.75481,12.23956 -2.67807,12.04962 -3.90036,24.09925 3.20444,36.14887 6.4429,9.38534 15.09934,11.68738 25.07247,9.77599 11.51523,-3.31656 22.0236,-12.60719 31.77186,-26.40779 0.22345,-1.05729 4.92073,-9.04451 4.92073,-9.04451 0,0 -0.41676,-3.88071 1.50778,-14.12355 1.3857,-6.23043 2.34993,-12.6411 1.86728,-17.14605 -0.96883,-4.15211 -3.23773,-9.62848 -12.16456,-8.48839 z" class="skin boob" id="XMLID_588_" sodipodi:nodetypes="cccccccccc"/></g><g transform="'+_art_transform+'"id="g1069"><path d="m 348.02261,248.51896 c 8.65355,-12.30579 11.43144,-30.88254 -0.97284,-43.4189 -14.67089,-12.96908 -28.30339,-7.92276 -38.99561,-8.00176 -24.21445,12.16832 -31.98806,25.58323 -28.88571,44.91992 6.30867,31.25913 54.29562,32.66603 68.85416,6.50074 z" class="shadow" id="path1050" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="csccc" id="path1042" class="skin boob" d="m 348.02261,248.51896 c 7.65465,-13.28462 11.02267,-29.82946 -0.97284,-43.4189 -13.16154,-14.9104 -25.83696,-10.05 -38.46528,-8.66467 -23.32793,11.82921 -31.64375,27.39415 -29.41604,45.58283 9.02747,30.88382 54.47239,31.60541 68.85416,6.50074 z"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola.tw b/src/art/vector_revamp/layers/Boob_Areola.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ee04e34ee13938b4b98dde5484ff2e64da4b009c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1027" transform="matrix(1.0036748,0,0,1.0036748,-0.82340761,-0.81073623)"><path id="XMLID_592_" class="areola" d="m 224.06836,220.86839 c 0,0 -0.39131,3.31112 -2.35082,6.67438 -1.9595,3.36326 -9.06529,7.55149 -9.06529,7.55149 0,0 -0.24448,-6.64388 0.46015,-8.06326 0.70464,-1.41938 1.13831,-2.19079 3.06684,-3.56226 2.42539,-1.72481 7.88912,-2.60035 7.88912,-2.60035 z" sodipodi:nodetypes="czczsc"/><path id="path3138" class="shadow" d="m 213.5671,226.66466 c 0,0 -1.9262,-1.30979 -1.44901,-2.97247 0.72632,-2.03671 3.90583,-3.99822 5.40947,-2.60058 0.64103,0.66345 0.91915,1.64032 0.91915,1.64032 -0.84654,2.52287 -2.28501,3.51024 -4.87961,3.93273 z" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" d="m 213.5671,226.66466 c 0,0 -1.91057,-1.4426 -1.44901,-2.97247 0.64038,-1.86093 4.03474,-3.95134 5.40947,-2.60058 0.55119,0.59704 0.91915,1.64032 0.91915,1.64032 -0.80357,2.35099 -2.35142,3.51024 -4.87961,3.93273 z" class="areola" id="XMLID_592_-5"/><path id="path3138-3" class="shadow" d="m 213.01263,222.46595 c 0.75085,-0.36944 1.35215,-0.13684 2.65343,0.43025 -1.21381,-0.3264 -1.67129,-0.78189 -2.65343,-0.43025 z" sodipodi:nodetypes="ccc"/><path id="path3138-3-7" class="shadow" d="m 214.0315,222.35507 c 0.054,-0.31278 0.30778,-0.85942 1.02206,-0.7758 -0.84623,0.0699 -0.82527,0.44046 -1.02206,0.7758 z" sodipodi:nodetypes="ccc"/><path id="path3138-3-7-4" class="shadow" d="m 214.73116,227.20469 c 2.09105,-0.65605 3.58115,-2.24941 3.44394,-3.80315 0.0522,0.95271 -0.13777,2.92874 -3.44394,3.80315 z" sodipodi:nodetypes="ccc"/></g><g transform="'+_art_transform+'"id="g1036" transform="matrix(1.0212835,0,0,1.0212835,-6.4679552,-4.3556102)"><path id="XMLID_593_" d="m 314.17289,222.1657 c -5.09999,-0.56255 -10.25389,-4.32121 -10.27808,-7.69008 -0.0309,-4.29936 6.47452,-8.78659 12.1893,-8.53652 5.37398,0.23516 10.98206,3.74015 9.88043,8.95113 -1.10163,5.21098 -5.6937,7.9481 -11.79165,7.27547 z" class="areola" sodipodi:nodetypes="sssss"/><path id="path989" d="m 310.66882,210.47597 c -0.72765,-0.9361 -0.60753,-2.39965 -0.40684,-3.08293 0.48386,-1.83702 2.61601,-2.7715 4.4734,-2.74561 1.62871,0.0227 2.55147,0.26096 3.28224,1.71217 0.79333,0.61754 0.84585,1.67252 0.80454,1.72014 -0.21669,1.5267 -1.22761,3.71824 -4.19389,3.59586 -2.37989,0.11991 -3.19283,-0.0317 -3.95945,-1.19963 z" class="shadow" sodipodi:nodetypes="ccscccc"/><path sodipodi:nodetypes="csscccc" class="areola" d="m 310.66882,210.47597 c -0.49696,-0.95917 -0.60188,-2.41088 -0.40684,-3.08293 0.51036,-1.75854 2.81349,-2.72569 4.4734,-2.74561 1.63641,-0.0196 2.56087,0.48653 3.28224,1.71217 0.66484,0.73435 0.82922,1.68764 0.80454,1.72014 -0.28461,1.4286 -1.29226,3.62486 -4.19389,3.59586 -2.24349,0.003 -3.12877,-0.0866 -3.95945,-1.19963 z" id="XMLID_593_-8"/><path id="path3990-3" d="m 311.71553,206.60898 c 1.5946,-0.62 3.11448,0.2184 4.10335,1.04883 -1.18741,-0.57935 -2.70593,-1.37335 -4.10335,-1.04883 z" class="shadow" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccc" class="shadow" d="m 313.5577,206.59854 c 0.90959,-0.79125 1.45758,-1.00189 2.8221,-0.87304 -1.2758,0.0449 -1.85557,0.27784 -2.8221,0.87304 z" id="path3990-3-1"/><path id="path3990-3-0" d="m 311.13963,210.57541 c 7.68349,1.59713 7.01758,-3.72676 6.8783,-4.2566 0.46399,3.23262 -1.47339,5.97095 -6.8783,4.2566 z" class="shadow" sodipodi:nodetypes="ccc"/><path id="path3138-3-7-4-8" class="shadow" d="m 312.99355,212.30782 c 4.05401,-0.41435 5.26872,-1.30083 5.69395,-3.68596 -0.0494,2.76521 -2.25496,3.48343 -5.69395,3.68596 z" sodipodi:nodetypes="ccc"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola_NoBoob.tw b/src/art/vector_revamp/layers/Boob_Areola_NoBoob.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f1d0120faef2906fdfecabd1d4bd6056edb0cf73
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola_NoBoob.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola_NoBoob [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path1074" d="m 312.6125,241.81215 c -2.0933,-0.29336 -4.20874,-2.25346 -4.21867,-4.01028 -0.0126,-2.24206 2.65749,-4.58209 5.00314,-4.45169 2.20577,0.12263 4.50762,1.95044 4.05546,4.6679 -0.45217,2.71747 -2.337,4.14484 -4.83993,3.79407 z" class="areola" sodipodi:nodetypes="sssss"/><path id="path1082" d="m 313.47573,239.66032 c -1.94762,-0.0319 -2.30525,-0.47307 -2.84254,-1.38769 -0.0692,-0.11498 -0.14074,-0.6753 -0.039,-1.04629 0.26998,-0.9844 1.38054,-1.82945 2.49788,-1.77138 1.83776,0.0955 2.2692,2.11008 2.25662,2.11245 -0.19082,0.92279 -0.63028,2.09291 -1.87298,2.09291 z" class="shadow" sodipodi:nodetypes="ccsscsc"/><path sodipodi:nodetypes="ccsscsc" class="areola" d="m 313.47573,239.66032 c -1.94762,-0.0319 -2.40618,-0.60407 -2.84254,-1.38769 -0.0133,0.01 -0.14074,-0.6753 -0.039,-1.04629 0.26998,-0.9844 1.53307,-1.84755 2.49788,-1.77138 1.78528,0.14096 2.2692,2.11008 2.25662,2.11245 -0.15647,0.78536 -0.63028,2.09291 -1.87298,2.09291 z" id="path1084"/><path id="path1086" d="m 311.35893,236.87262 c 0.87662,-0.34085 1.71217,0.12006 2.25579,0.57658 -0.65277,-0.31849 -1.48757,-0.75499 -2.25579,-0.57658 z" class="shadow" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccc" class="shadow" d="m 312.37165,236.86687 c 0.50004,-0.43498 0.80129,-0.55077 1.55144,-0.47994 -0.70137,0.0247 -1.0201,0.15274 -1.55144,0.47994 z" id="path1088"/><path id="path1074-8" d="m 247.22158,244.74921 c -1.54529,-0.29336 -3.10693,-2.25346 -3.11426,-4.01028 -0.009,-2.24206 1.96178,-4.58209 3.69336,-4.45169 1.62832,0.12263 3.32757,1.95044 2.99378,4.6679 -0.33379,2.71747 -1.72519,4.14484 -3.57288,3.79407 z" class="areola" sodipodi:nodetypes="sssss"/><path id="path1082-6" d="m 246.84943,242.44113 c -1.78297,-0.0319 -2.11037,-0.47307 -2.60223,-1.38769 -0.0634,-0.11498 -0.12885,-0.6753 -0.0357,-1.04629 0.24716,-0.9844 1.26383,-1.82945 2.28672,-1.77138 1.68239,0.0955 2.07736,2.11008 2.06584,2.11245 -0.17469,0.92279 -0.57699,2.09291 -1.71464,2.09291 z" class="shadow" sodipodi:nodetypes="ccsscsc"/><path sodipodi:nodetypes="ccsscsc" class="areola" d="m 246.84943,242.44113 c -1.78297,-0.0319 -2.20276,-0.60407 -2.60223,-1.38769 -0.0122,0.01 -0.12885,-0.6753 -0.0357,-1.04629 0.24716,-0.9844 1.40347,-1.84755 2.28672,-1.77138 1.63435,0.14096 2.07736,2.11008 2.06584,2.11245 -0.14324,0.78536 -0.57699,2.09291 -1.71464,2.09291 z" id="path1084-7"/><path id="path1086-5" d="m 244.21552,240.06223 c 0.80251,-0.34085 1.56743,0.12006 2.06509,0.57658 -0.59758,-0.31849 -1.36181,-0.75499 -2.06509,-0.57658 z" class="shadow" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccc" class="shadow" d="m 245.14263,240.05648 c 0.45777,-0.43498 0.73355,-0.55077 1.42028,-0.47994 -0.64208,0.0247 -0.93386,0.15274 -1.42028,0.47994 z" id="path1088-1"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola_Piercing.tw b/src/art/vector_revamp/layers/Boob_Areola_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c1699c4cd8098f66b6388710a3bd64543e86d447
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1412" transform="matrix(1.0263785,0,0,1.0263785,-8.6733354,-5.3910578)"><circle id="circle1208" class="steel_piercing" cx="326.55273" cy="211.96944" r="2.25"/><circle r="2.25" id="circle1210" class="steel_piercing" cx="321.75674" cy="206.62288"/><circle id="circle1208-7" class="steel_piercing" cx="323.89911" cy="218.82379" r="2.25"/><circle id="circle1208-0" class="steel_piercing" cx="311.17117" cy="221.07768" r="2.25"/><circle id="circle1208-06" class="steel_piercing" cx="303.65814" cy="214.8905" r="2.25"/><circle id="circle1208-8" class="steel_piercing" cx="307.76822" cy="206.93555" r="2.25"/></g><g transform="'+_art_transform+'"id="g1417" transform="matrix(1.0228023,0,0,1.0228023,-5.1326497,-5.0109358)"><ellipse id="ellipse1212" transform="rotate(-166.16108)" class="steel_piercing" cx="-268.83929" cy="-169.38443" rx="1.350039" ry="1.8000519"/><ellipse id="ellipse1212-6" transform="rotate(-166.16108)" class="steel_piercing" cx="-270.20932" cy="-161.59186" rx="1.3500389" ry="1.8000519"/><ellipse id="ellipse1212-3" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.35574" cy="-176.55655" rx="1.3500389" ry="1.8000519"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Boob_Areola_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a73ab67800f7e88832d2b89ab55ec7fd6a85660e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1650" transform="matrix(1.0049807,0,0,1.0049807,-1.6578337,-0.99661844)"><path id="XMLID_525_-4" class="steel_piercing" d="m 322.98091,222.29698 c -0.0685,0.18791 2.92054,1.91584 5.23684,0.52488 1.80351,-1.1521 2.89046,-3.84255 1.65317,-5.99641 -1.27152,-2.05991 -3.88556,-2.4804 -5.77426,-1.67865 -2.30753,1.07485 -2.83075,3.97075 -2.7368,4.00499 0.24763,0.19668 1.27486,-2.62197 3.30847,-2.94518 1.20471,-0.0931 2.61403,0.42049 3.24541,1.6085 0.75081,1.4444 0.16871,3.04163 -0.80592,3.96365 -1.42769,1.28906 -4.15239,0.29607 -4.12691,0.51822 z"/><path id="XMLID_525_-4-3" class="steel_piercing" d="m 328.13387,215.2046 c 0.0611,0.19045 3.48187,-0.27678 4.45916,-2.79569 0.71859,-2.01584 -0.072,-4.80779 -2.36992,-5.75095 -2.26737,-0.84795 -4.59038,0.42234 -5.59106,2.21361 -1.16415,2.26379 0.19777,4.87246 0.29299,4.84192 0.31621,0.004 -0.60016,-2.85303 0.80837,-4.35506 0.89471,-0.81209 2.323,-1.27029 3.55012,-0.71876 1.47865,0.68088 1.99792,2.29963 1.79314,3.62556 -0.33771,1.89365 -3.09911,2.77948 -2.9428,2.93937 z"/><path id="XMLID_525_-4-3-0" class="steel_piercing" d="m 323.33923,208.9427 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z"/><path id="XMLID_525_-4-3-0-5" class="steel_piercing" d="m 309.36246,208.08395 c 0.19032,0.0615 1.80589,-2.98979 0.32972,-5.25274 -1.21839,-1.75941 -3.94741,-2.74553 -6.05375,-1.42899 -2.01118,1.34726 -2.33415,3.97514 -1.46271,5.83271 1.15995,2.26596 4.07331,2.68109 4.10403,2.58593 0.18767,-0.25452 -2.66757,-1.17644 -3.06618,-3.19664 -0.13786,-1.20042 0.32296,-2.62786 1.48666,-3.303 1.41547,-0.80402 3.03325,-0.28173 3.99089,0.65792 1.34128,1.37873 0.45032,4.1385 0.67136,4.10479 z"/><path id="XMLID_525_-4-3-0-5-5" class="steel_piercing" d="m 304.98758,215.27739 c 0.19977,-0.01 0.62842,-3.43587 -1.55424,-5.02835 -1.76308,-1.21307 -4.66444,-1.16745 -6.1671,0.81042 -1.40278,1.97285 -0.77296,4.5445 0.70052,5.97238 1.88805,1.70742 4.75931,1.06255 4.7543,0.96268 0.0852,-0.30453 -2.91139,-0.15412 -4.00043,-1.90172 -0.55456,-1.07354 -0.62982,-2.57163 0.21887,-3.61553 1.0384,-1.25368 2.73626,-1.33896 3.96487,-0.79993 1.743,0.81355 1.8885,3.70992 2.08323,3.60002 z"/><path id="XMLID_525_-4-3-0-5-5-8" class="steel_piercing" d="m 313.00196,221.4571 c 0.19355,-0.0505 -0.0844,-3.49184 -2.54562,-4.60649 -1.97317,-0.82862 -4.80444,-0.19314 -5.87285,2.04928 -0.97165,2.21717 0.16865,4.60668 1.90203,5.70459 2.19618,1.28717 4.87596,0.0711 4.85072,-0.0256 0.0214,-0.3155 -2.88178,0.44197 -4.30387,-1.04725 -0.76155,-0.93812 -1.1403,-2.38949 -0.52197,-3.58434 0.76135,-1.43887 2.40627,-1.8681 3.7189,-1.59056 1.87215,0.44157 2.6044,3.24762 2.77267,3.10037 z"/></g><g transform="'+_art_transform+'"id="g1655" transform="matrix(1.0106254,0,0,1.0106254,-2.44532,-2.2864495)"><path id="XMLID_525_-4-3-0-3" class="steel_piercing" d="m 226.23976,224.03419 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z"/><path id="XMLID_525_-4-3-0-3-2" class="steel_piercing" d="m 221.79512,232.06967 c 0.012,0.19964 3.44203,0.59373 5.01243,-1.60487 1.19522,-1.77523 1.12034,-4.67598 -0.87259,-6.15861 -1.9869,-1.38283 -4.55207,-0.7271 -5.96501,0.76071 -1.6883,1.90518 -1.0145,4.76979 -0.91468,4.76376 0.30537,0.0822 0.12474,-2.91279 1.86128,-4.0194 1.06788,-0.56535 2.56514,-0.65573 3.61755,0.18239 1.26409,1.02571 1.36649,2.72263 0.83988,3.9566 -0.79593,1.75113 -3.69069,1.92583 -3.57883,2.11943 z"/><path id="XMLID_525_-4-3-0-3-2-9" class="steel_piercing" d="m 213.61151,237.5937 c -0.072,0.1866 2.88498,1.969 5.22636,0.62068 1.8243,-1.11889 2.96033,-3.78898 1.76269,-5.96513 -1.23358,-2.08285 -3.8395,-2.55114 -5.74256,-1.78411 -2.32683,1.03243 -2.90298,3.91827 -2.80966,3.95422 0.24369,0.20154 1.32263,-2.59818 3.36185,-2.88408 1.20621,-0.071 2.60589,0.46828 3.21542,1.66764 0.72424,1.45791 0.11298,3.04422 -0.87836,3.94824 -1.45103,1.26272 -4.15711,0.21999 -4.13571,0.44256 z"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob.tw b/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob.tw
new file mode 100644
index 0000000000000000000000000000000000000000..afd567c0228a589621d94bb08457a44317c3f341
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola_Piercing_NoBoob [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle id="circle1125" class="steel_piercing" cx="309.05273" cy="242.34444" r="2.25"/><ellipse id="ellipse1129" transform="rotate(-166.16108)" class="steel_piercing" cx="-301.22406" cy="-172.02744" rx="1.350039" ry="1.8000519"/><circle id="circle1131" class="steel_piercing" cx="317.02411" cy="242.44879" r="2.25"/><circle id="circle1133" class="steel_piercing" cx="317.17117" cy="233.57768" r="2.25"/><circle id="circle1135" class="steel_piercing" cx="308.90814" cy="233.703" r="2.25"/><ellipse id="ellipse1139" transform="rotate(-166.16108)" class="steel_piercing" cx="-295.81207" cy="-170.41136" rx="1.3500389" ry="1.8000519"/><ellipse id="ellipse1141" transform="rotate(-166.16108)" class="steel_piercing" cx="-298.56195" cy="-178.63326" rx="1.3500389" ry="1.8000519"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob_Heavy.tw b/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..859ef8336712c4c6bb04593290c8471b2fb1fe41
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Areola_Piercing_NoBoob_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Areola_Piercing_NoBoob_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"transform="matrix(1.0049807,0,0,1.0049807,-1.6578337,-0.99661844)" id="g1669"><path d="m 316.57531,244.4989 c -0.0685,0.18791 2.92054,1.91584 5.23684,0.52488 1.80351,-1.1521 2.89046,-3.84255 1.65317,-5.99641 -1.27152,-2.05991 -3.88556,-2.4804 -5.77426,-1.67865 -2.30753,1.07485 -2.83075,3.97075 -2.7368,4.00499 0.24763,0.19668 1.27486,-2.62197 3.30847,-2.94518 1.20471,-0.0931 2.61403,0.42049 3.24541,1.6085 0.75081,1.4444 0.16871,3.04163 -0.80592,3.96365 -1.42769,1.28906 -4.15239,0.29607 -4.12691,0.51822 z" class="steel_piercing" id="path1657"/><path d="m 319.35905,235.62231 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" class="steel_piercing" id="path1661"/><path d="m 310.91722,234.39042 c 0.19032,0.0615 1.80589,-2.98979 0.32972,-5.25274 -1.21839,-1.75941 -3.94741,-2.74553 -6.05375,-1.42899 -2.01118,1.34726 -2.33415,3.97514 -1.46271,5.83271 1.15995,2.26596 4.07331,2.68109 4.10403,2.58593 0.18767,-0.25452 -2.66757,-1.17644 -3.06618,-3.19664 -0.13786,-1.20042 0.32296,-2.62786 1.48666,-3.303 1.41547,-0.80402 3.03325,-0.28173 3.99089,0.65792 1.34128,1.37873 0.45032,4.1385 0.67136,4.10479 z" class="steel_piercing" id="path1663"/><path d="m 311.4472,242.66397 c 0.19355,-0.0505 -0.0844,-3.49184 -2.54562,-4.60649 -1.97317,-0.82862 -4.80444,-0.19314 -5.87285,2.04928 -0.97165,2.21717 0.16865,4.60668 1.90203,5.70459 2.19618,1.28717 4.87596,0.0711 4.85072,-0.0256 0.0214,-0.3155 -2.88178,0.44197 -4.30387,-1.04725 -0.76155,-0.93812 -1.1403,-2.38949 -0.52197,-3.58434 0.76135,-1.43887 2.40627,-1.8681 3.7189,-1.59056 1.87215,0.44157 2.6044,3.24762 2.77267,3.10037 z" class="steel_piercing" id="path1667"/></g><g transform="'+_art_transform+'"transform="matrix(1.0106254,0,0,1.0106254,-2.44532,-2.2864495)" id="g1677"><path d="m 247.14266,237.14488 c 0.096,0.17545 3.36662,-0.93057 3.84966,-3.58889 0.3242,-2.11539 -0.98036,-4.70732 -3.41522,-5.19867 -2.38685,-0.40364 -4.42756,1.28324 -5.07125,3.23148 -0.7148,2.44317 1.1161,4.74704 1.20382,4.69903 0.31125,-0.0559 -1.12913,-2.68794 -0.0302,-4.42934 0.72489,-0.96671 2.04069,-1.68687 3.35,-1.37748 1.58077,0.38881 2.39693,1.88008 2.44673,3.2208 0.0267,1.92334 -2.51724,3.31564 -2.33351,3.44307 z" class="steel_piercing" id="path1671"/><path d="m 252.84025,241.53163 c 0.012,0.19964 3.44203,0.59373 5.01243,-1.60487 1.19522,-1.77523 1.12034,-4.67598 -0.87259,-6.15861 -1.9869,-1.38283 -4.55207,-0.7271 -5.96501,0.76071 -1.6883,1.90518 -1.0145,4.76979 -0.91468,4.76376 0.30537,0.0822 0.12474,-2.91279 1.86128,-4.0194 1.06788,-0.56535 2.56514,-0.65573 3.61755,0.18239 1.26409,1.02571 1.36649,2.72263 0.83988,3.9566 -0.79593,1.75113 -3.69069,1.92583 -3.57883,2.11943 z" class="steel_piercing" id="path1673"/><path d="m 247.50142,247.79778 c -0.072,0.1866 2.88498,1.969 5.22636,0.62068 1.8243,-1.11889 2.96033,-3.78898 1.76269,-5.96513 -1.23358,-2.08285 -3.8395,-2.55114 -5.74256,-1.78411 -2.32683,1.03243 -2.90298,3.91827 -2.80966,3.95422 0.24369,0.20154 1.32263,-2.59818 3.36185,-2.88408 1.20621,-0.071 2.60589,0.46828 3.21542,1.66764 0.72424,1.45791 0.11298,3.04422 -0.87836,3.94824 -1.45103,1.26272 -4.15711,0.21999 -4.13571,0.44256 z" class="steel_piercing" id="path1675"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Highlights1.tw b/src/art/vector_revamp/layers/Boob_Highlights1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d862a90161b3faedcb3ed3252a7e465b772a1912
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Highlights1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Highlights1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g2210" transform="matrix(1.0060951,0,0,1.0060951,-1.9605124,-1.2116124)"><path d="m 321.562,198.7844 c -2.25111,1.2044 -2.83496,3.23381 -2.89058,4.67945 1.40005,-0.6336 3.43888,-2.80656 2.89058,-4.67945 z" class="highlight1" id="path1139" sodipodi:nodetypes="ccc"/><path d="m 313.22303,216.21843 c -1.68861,1.7669 -1.74121,4.42131 -1.45308,5.80445 1.40005,-1.16485 2.00138,-3.93156 1.45308,-5.80445 z" class="highlight1" id="path1141" sodipodi:nodetypes="ccc"/><path d="m 250.26522,218.00147 c -4.7273,0.75979 -7.83647,2.53916 -10.64479,3.98691 4.08319,1.14699 9.56562,1.06857 10.64479,-3.98691 z" class="highlight1" id="path1143" sodipodi:nodetypes="ccc"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Highlights2.tw b/src/art/vector_revamp/layers/Boob_Highlights2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f7fbc692aea0b897022a402499dec56ec07a5e84
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Highlights2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Highlights2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g2226" transform="matrix(0.99843271,0,0,0.99843271,0.51131944,0.3030066)"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9" class="highlight2" d="m 324.062,195.87815 c -2.25111,1.2044 -7.45996,3.89006 -5.39058,7.5857 4.2438,-0.0711 5.93888,-5.71281 5.39058,-7.5857 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7" class="highlight2" d="m 313.22303,216.21843 c -3.53236,3.2669 -5.77246,8.35881 -1.89058,10.3357 2.9938,-1.10235 3.78263,-5.83781 1.89058,-10.3357 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7" class="highlight2" d="m 256.23397,214.34522 c -7.63355,-1.99021 -15.11772,5.91416 -17.80104,7.67441 4.08319,1.14699 17.25312,2.91232 17.80104,-7.67441 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4" class="highlight2" d="m 313.50007,212.81652 c -1.45423,1.22002 -0.55371,1.5776 -0.29683,2.05444 0.91567,-0.49297 1.12638,-0.75968 0.29683,-2.05444 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-70" class="highlight2" d="m 325.92076,193.33159 c -0.70431,0.21003 -1.91359,0.15565 -1.19213,1.55319 2.16667,-0.20368 1.45317,-1.07242 1.19213,-1.55319 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5" class="highlight2" d="m 262.30677,208.04077 c -0.95431,-0.17346 -2.05373,0.57643 -1.9822,1.36001 0.65204,0.10878 1.99495,0.29667 1.9822,-1.36001 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1" class="highlight2" d="m 237.28097,221.17554 c -0.88687,-0.39276 -2.13167,0.0779 -2.2462,0.85637 0.60825,0.25889 1.86945,0.75696 2.2462,-0.85637 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9" class="highlight2" d="m 224.57022,224.30732 c -0.73318,-0.21518 -5.16322,0.19765 -5.64135,0.25254 0.7532,0.71279 5.59616,1.42803 5.64135,-0.25254 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-6" class="highlight2" d="m 214.65463,231.123 c -1.28043,3.08678 -0.887,13.93661 0.52713,15.49899 0.17285,-0.32564 -0.27027,-14.54836 -0.52713,-15.49899 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-4" class="highlight2" d="m 214.66568,228.54869 c -0.95299,0.64524 -0.46869,1.54719 -0.0583,1.90701 0.59665,-0.3531 0.32534,-1.4005 0.0583,-1.90701 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-62-3" class="highlight2" d="m 214.96934,223.37407 c -0.59995,0.17051 -1.09864,0.3604 -1.5163,0.72315 0.72663,0.2153 1.41533,0.1382 1.5163,-0.72315 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4-2" class="highlight2" d="m 315.14231,208.27176 c -1.11469,-1.53646 -2.19765,-0.93953 -2.69138,-0.71684 0.55133,0.56169 1.58949,0.72014 2.69138,0.71684 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-4-2-1" class="highlight2" d="m 315.01568,205.51285 c -1.29777,-0.23638 -1.89173,0.15908 -2.19786,0.60584 1.13578,0.21924 1.34362,0.27207 2.19786,-0.60584 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-5-1-0-9-62-3-9" class="highlight2" d="m 214.99712,221.61733 c -0.26984,0.0314 -0.84473,0.21024 -0.92476,0.7089 0.27569,-0.29941 0.86343,-0.25926 0.92476,-0.7089 z"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Outfit_Maid.tw b/src/art/vector_revamp/layers/Boob_Outfit_Maid.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1ee7b7356921ce26d670950beea024b0251587f5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Outfit_Maid.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Outfit_Maid [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"style="display:inline;opacity:1" id="g2134" transform="matrix(0.99515665,0,0,0.99515665,1.6400838,0.96959443)"><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2120" d="m 226.34766,216.85742 c 2.98619,-0.62315 5.85031,-1.4204 8.64453,-2.38086 2.79422,-0.96045 5.51818,-2.08363 8.22656,-3.35742 2.70838,-1.27379 5.40024,-2.69856 8.12891,-4.26172 2.72867,-1.56316 5.49451,-3.2652 8.34961,-5.09375 -11.79723,6.74895 -21.9632,11.76361 -33.34961,15.09375 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2122" d="m 210.87305,229.81641 c 0.0451,-0.71382 0.22536,-1.51018 0.23047,-2.16797 0.006,-0.73749 0.0162,-1.44067 0.0996,-2.11719 0.0834,-0.67652 0.23899,-1.32563 0.53516,-1.95117 0.29618,-0.62554 0.73278,-1.22795 1.37695,-1.8125 0.64418,-0.58456 1.4957,-1.15152 2.62305,-1.70508 1.12735,-0.55356 2.52969,-1.0944 4.27539,-1.62695 1.74571,-0.53255 3.83474,-1.0566 6.33399,-1.57813 -18.80751,3.15763 -15.50638,7.20888 -15.47461,12.95899 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2124" d="m 217.95898,264.23438 c -1.87038,-2.59224 -3.45412,-5.21814 -4.73046,-7.86329 -1.27635,-2.64515 -2.24524,-5.30915 -2.88672,-7.97461 -0.32074,-1.33272 -0.56048,-2.66635 -0.71485,-3.99804 -0.15437,-1.33169 -0.22414,-2.66171 -0.20703,-3.98828 0.0171,-1.32658 0.12272,-2.64941 0.31641,-3.9668 0.19369,-1.31739 0.47619,-2.62947 0.85156,-3.93359 -3.41169,10.57894 -1.27171,21.77042 7.37109,31.72461 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2126" d="m 235.44727,272.8418 c -1.78236,-0.10142 -3.49568,-0.27493 -5.13086,-0.58203 -1.63519,-0.30711 -3.19249,-0.74733 -4.66211,-1.38282 -1.46962,-0.63548 -2.85106,-1.46617 -4.13672,-2.55273 -1.28566,-1.08657 -2.47529,-2.42951 -3.5586,-4.08984 4.0232,7.19252 9.64374,9.47305 17.48829,8.60742 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2128" d="m 352.21094,243.07812 c -0.86728,1.85762 -1.81754,3.59094 -2.84961,5.20508 -1.03208,1.61415 -2.14654,3.10879 -3.33985,4.49219 -1.19331,1.3834 -2.46542,2.65492 -3.8164,3.82031 -1.35099,1.16539 -2.78006,2.22544 -4.28516,3.18555 -1.5051,0.96011 -3.08653,1.82033 -4.74219,2.58789 -1.65565,0.76756 -3.38485,1.44155 -5.1875,2.0293 -1.80264,0.58774 -3.67891,1.08911 -5.625,1.50976 -1.94608,0.42066 -3.96287,0.76104 -6.04882,1.02735 17.12494,-2.04297 30.70536,-8.64667 35.89453,-23.85743 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/><path sodipodi:nodetypes="ccsscccsscccccssscccccccscsccccscsccccccccsc" transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2130" d="m 339.94922,198.16016 c -32.0958,-3.67156 -54.13039,-3.02574 -80.25195,3.60351 -2.8551,1.82855 -5.62094,3.53059 -8.34961,5.09375 -2.72867,1.56316 -5.42053,2.98793 -8.12891,4.26172 -2.70838,1.27379 -5.43234,2.39697 -8.22656,3.35742 -2.79422,0.96046 -5.65834,1.75771 -8.64453,2.38086 -2.49925,0.52153 -4.58828,1.04558 -6.33399,1.57813 -1.7457,0.53255 -3.14804,1.07339 -4.27539,1.62695 -1.12735,0.55356 -1.97887,1.12052 -2.62305,1.70508 -0.64417,0.58455 -1.08077,1.18696 -1.37695,1.8125 -0.29617,0.62554 -0.4518,1.27465 -0.53516,1.95117 -0.0834,0.67652 -0.0939,1.3797 -0.0996,2.11719 -0.005,0.65779 -0.1854,1.45415 -0.23047,2.16797 0.005,0.86012 -0.0584,1.75431 -0.28516,2.69336 -0.37537,1.30412 -0.65787,2.6162 -0.85156,3.93359 -0.19369,1.31739 -0.2993,2.64022 -0.31641,3.9668 -0.0171,1.32657 0.0527,2.65659 0.20703,3.98828 0.15437,1.33169 0.39411,2.66532 0.71485,3.99804 0.64148,2.66546 1.61037,5.32946 2.88672,7.97461 1.27634,2.64515 2.86008,5.27105 4.73046,7.86329 1.08331,1.66033 2.27294,3.00327 3.5586,4.08984 1.28566,1.08656 2.6671,1.91725 4.13672,2.55273 1.46962,0.63549 3.02692,1.07571 4.66211,1.38282 1.63518,0.3071 3.3485,0.48061 5.13086,0.58203 6.92666,-0.0668 16.98116,-4.96122 24.06579,-9.98486 10.21409,-7.24271 18.92639,-25.59132 18.92639,-25.59132 0,0 -0.76705,11.91966 12.59961,22.70899 6.80046,5.48921 18.84722,7.23767 25.27735,6.96094 2.08595,-0.26631 4.10274,-0.60669 6.04882,-1.02735 1.94609,-0.42065 3.82236,-0.92202 5.625,-1.50976 1.80265,-0.58775 3.53185,-1.26174 5.1875,-2.0293 1.65566,-0.76756 3.23709,-1.62778 4.74219,-2.58789 1.5051,-0.96011 2.93417,-2.02016 4.28516,-3.18555 1.35098,-1.16539 2.62309,-2.43691 3.8164,-3.82031 1.19331,-1.3834 2.30777,-2.87804 3.33985,-4.49219 1.03207,-1.61414 1.98233,-3.34746 2.84961,-5.20508 0.91196,-2.53191 1.61912,-4.98945 2.13086,-7.37109 0.51173,-2.38164 0.82888,-4.68757 0.96093,-6.91211 0.13206,-2.22453 0.0786,-4.3691 -0.14843,-6.42969 -0.22709,-2.06059 -0.62768,-4.03792 -1.19336,-5.92773 -0.56569,-1.88981 -1.29595,-3.6921 -2.17969,-5.4043 -0.88374,-1.71219 -1.92226,-3.33358 -3.10352,-4.86132 -1.18125,-1.52775 -2.50661,-2.96042 -3.96484,-4.29688 -1.45823,-1.33646 -3.04901,-2.57651 -4.76367,-3.71484 z" style="display:inline;opacity:1;fill:#ffffff;stroke-width:0.99515665"/><path transform="matrix(1.0048669,0,0,1.0048669,-1.648066,-0.97431337)" id="path2132" d="m 339.94922,198.16016 c 1.71466,1.13833 3.30544,2.37838 4.76367,3.71484 1.45823,1.33646 2.78359,2.76913 3.96484,4.29688 1.18126,1.52774 2.21978,3.14913 3.10352,4.86132 0.88374,1.7122 1.614,3.51449 2.17969,5.4043 0.56568,1.88981 0.96627,3.86714 1.19336,5.92773 0.22708,2.06059 0.28049,4.20516 0.14843,6.42969 -0.13205,2.22454 -0.4492,4.53047 -0.96093,6.91211 -0.51174,2.38164 -1.2189,4.83918 -2.13086,7.37109 9.47613,-21.16383 1.84382,-35.97308 -12.26172,-44.91796 z" style="display:inline;opacity:1;fill:#000000;stroke-width:0.99515665"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Outfit_Straps.tw b/src/art/vector_revamp/layers/Boob_Outfit_Straps.tw
new file mode 100644
index 0000000000000000000000000000000000000000..71f4987a253906cab21f202140c090ae82e6e9df
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Outfit_Straps.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Outfit_Straps [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g4822" transform="matrix(1.0017766,0,0,1.0017766,-0.63254292,-0.30724415)"><path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9" class="shadow" d="m 222.31309,230.41353 c 27.62761,-2.84004 54.98628,-6.21798 80.98167,-12.32247 l -1.38826,-3.79634 c -24.90326,5.69686 -50.40708,10.1926 -77.19019,12.12975 z"/><path sodipodi:nodetypes="ccacccacc" id="XMLID_511_-1-8-2" class="shadow" d="m 212.5985,231.94358 c -0.26979,1.40375 -1.14168,4.52761 -0.71231,6.04134 4.21188,-1.0921 8.69472,-3.92289 11.42312,-7.59136 2.22607,-2.99304 3.41407,-7.35824 3.25049,-10.70782 -1.0224,-0.0113 -3.74679,0.90991 -4.05819,1.48623 l 1.54493,-0.28257 c -0.80164,3.27918 -1.61019,5.62444 -3.35983,7.88176 -2.06572,2.66511 -6.05614,5.00466 -8.0223,6.1622 z"/><path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-8" class="shadow" d="m 326.40919,217.07208 c 9.16891,0.60183 19.58559,1.46163 28.7545,6.66542 l -0.76326,-3.96821 c -7.37379,-4.43842 -17.0551,-5.84118 -25.58802,-6.68627 z"/><path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-2" class="shadow" d="m 319.33812,223.52443 c 3.13149,14.52631 2.89341,28.68012 -4.75134,43.25235 l -4.21669,-0.17242 c 8.29737,-13.11032 9.07293,-28.18441 5.62601,-43.09152 z"/><path sodipodi:nodetypes="cszzzsccszssscc" id="XMLID_511_-1-8-2-8" class="shadow" d="m 311.78146,205.54126 c 0,0 -4.06911,0.83634 -4.75478,1.23338 -3.06248,1.77333 -6.34186,4.91937 -4.95242,9.39071 1.38944,4.47134 9.79756,8.93051 15.3809,8.32756 5.58334,-0.60295 11.38232,-6.15933 12.03225,-10.55334 0.64993,-4.39401 -2.92629,-6.78148 -5.99024,-8.33911 -1.53648,-0.7811 -6.39247,-0.64798 -6.39247,-0.64798 0.43132,0.28882 0.76656,0.59341 1.0155,0.9021 0,0 2.86473,0.19978 4.09027,1.15267 2.09399,1.62813 4.90222,3.22496 4.36182,6.65545 -0.5404,3.43049 -5.49858,7.36518 -9.65134,7.74193 -4.54706,0.41253 -10.62186,-2.21016 -12.22062,-6.41495 -0.98964,-2.60278 1.92904,-5.99888 3.85457,-7.00098 0.68954,-0.35886 1.99763,-0.90354 1.99763,-0.90354 0.26018,-0.62451 0.61169,-1.00862 1.22893,-1.5439 z"/><path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-2-1" class="shadow" d="m 213.87832,237.17918 c -2.24796,16.04054 3.36292,28.33477 21.43031,35.21675 l -1.9186,0.0485 C 218.02546,272.2753 210.15789,252.8513 211.92692,237.85504 Z"/><path sodipodi:nodetypes="ccccc" id="XMLID_511_-1-8-2-9-28" class="shadow" d="m 248.16035,269.85576 64.35095,-3.16234 -15.11323,-3.41196 -42.937,2.58394 z"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Piercing.tw b/src/art/vector_revamp/layers/Boob_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d26f808a7c72f03fdc583614a55f68d305fea9ee
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1366" transform="matrix(1.0081159,0,0,1.0081159,-2.6203467,-1.6676415)"><circle id="circle1102" class="steel_piercing" cx="308.05627" cy="208.32812" r="2.25"/><circle id="circle1104" class="steel_piercing" cy="207.72774" cx="320.6149" r="2.25"/><ellipse id="ellipse1106" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.7442" cy="-165.79219" rx="1.350039" ry="1.8000519"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Boob_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4553c20663ebf03fe819fbe10f9f86f98d5d2661
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"id="g1374" transform="matrix(1.0017178,0,0,1.0017178,-0.55263244,-0.3529705)"><path id="XMLID_610_" class="steel_piercing" d="m 309.90865,207.70517 c 0.21478,0 -1.07387,3.63006 -1.07387,8.81578 0,4.66721 1.07387,10.37151 3.65116,12.44583 3.00683,2.07431 6.22843,-4.66714 7.08751,-10.37151 0.8591,-5.70435 -0.64431,-10.37152 -0.42954,-10.8901 0.42954,-0.51857 2.36251,6.22293 1.93296,12.44584 -0.42955,7.26006 -3.65115,16.07583 -7.73184,14.52011 -3.00683,-1.03716 -6.01366,-6.74151 -6.01366,-14.52011 -0.42954,-7.26009 2.36251,-12.96441 2.57728,-12.44584 z" sodipodi:nodetypes="cscsccccc"/><path sodipodi:nodetypes="ccscccc" id="XMLID_611_" class="steel_piercing" d="m 211.74093,240.94933 c 1.60318,2.00397 4.01575,-3.05165 4.55014,-7.8612 0.53439,-4.40874 -0.17813,-8.0159 0,-8.4167 0.17813,-0.40078 1.06879,4.80954 0.89066,9.6191 -0.35627,5.61111 -3.06571,12.09415 -5.38141,11.29257 -1.05341,-1.99943 -0.215,-4.83345 -0.0594,-4.63377 z"/><path sodipodi:nodetypes="scccs" id="XMLID_612_" class="steel_piercing" d="m 212.62757,245.06158 c 0.12894,-0.24264 18.44383,30.27982 43.52882,29.12099 26.8292,-1.45432 58.8088,-41.66451 59.11592,-41.49573 0.32354,0.3868 -29.85403,43.84637 -57.84606,45.49774 -26.95814,1.69698 -44.92761,-32.88035 -44.79868,-33.123 z"/><circle id="circle1192" class="steel_piercing" cx="309.49377" cy="207.85938" r="2.25"/><circle r="2.25" id="circle1194" class="steel_piercing" cx="319.45865" cy="207.72774"/><ellipse id="ellipse1196" transform="rotate(-166.16108)" class="steel_piercing" cx="-263.7442" cy="-165.79219" rx="1.350039" ry="1.8000519"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Piercing_NoBoob.tw b/src/art/vector_revamp/layers/Boob_Piercing_NoBoob.tw
new file mode 100644
index 0000000000000000000000000000000000000000..29ae9d3e763e84f385686551e3c9bcc5cbb007a4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Piercing_NoBoob.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Piercing_NoBoob [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle id="XMLID_622_" class="steel_piercing" cx="308.27518" cy="237.54713" r="2.25"/><circle id="XMLID_623_" class="steel_piercing" cy="237.5405" cx="317.5838" r="2.25"/><ellipse id="XMLID_626_" transform="rotate(-166.16108)" class="steel_piercing" cx="-299.35211" cy="-174.46425" rx="1.350039" ry="1.8000519"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Boob_Piercing_NoBoob_Heavy.tw b/src/art/vector_revamp/layers/Boob_Piercing_NoBoob_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..cc4876bd461ac0103096611d5f132979aafec903
--- /dev/null
+++ b/src/art/vector_revamp/layers/Boob_Piercing_NoBoob_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Boob_Piercing_NoBoob_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path1111" class="steel_piercing" d="m 308.53365,237.83017 c 0.21478,0 -1.07387,3.63006 -1.07387,8.81578 0,4.66721 1.07387,10.37151 3.65116,12.44583 3.00683,2.07431 6.22843,-4.66714 7.08751,-10.37151 0.8591,-5.70435 -0.64431,-10.37152 -0.42954,-10.8901 0.42954,-0.51857 2.36251,6.22293 1.93296,12.44584 -0.42955,7.26006 -3.65115,16.07583 -7.73184,14.52011 -3.00683,-1.03716 -6.01366,-6.74151 -6.01366,-14.52011 -0.42954,-7.26009 2.36251,-12.96441 2.57728,-12.44584 z" sodipodi:nodetypes="cscsccccc"/><path sodipodi:nodetypes="ccscccc" id="path1113" class="steel_piercing" d="m 243.0687,257.31608 c 1.60318,2.00397 4.95325,-3.11415 5.48764,-7.9237 0.53439,-4.40874 -0.17813,-8.0159 0,-8.4167 0.17813,-0.40078 1.06879,4.80954 0.89066,9.6191 -0.35627,5.61111 -4.00321,12.15665 -6.31891,11.35507 -1.05341,-1.99943 -0.215,-4.83345 -0.0594,-4.63377 z"/><path sodipodi:nodetypes="scccs" id="path1115" class="steel_piercing" d="m 243.42593,260.51411 c 0.12894,-0.24264 6.59979,33.10825 31.68478,31.94942 26.8292,-1.45432 38.47948,-29.82047 38.7866,-29.65169 0.32354,0.3868 -9.52471,32.00233 -37.51674,33.6537 -26.95814,1.69698 -33.08357,-35.70878 -32.95464,-35.95143 z"/><circle id="circle1117" class="steel_piercing" cx="308.29556" cy="237.84074" r="2.25"/><circle r="2.25" id="circle1119" class="steel_piercing" cx="317.58649" cy="237.63176"/><ellipse id="ellipse1121" transform="rotate(-166.16108)" class="steel_piercing" cx="-298.97275" cy="-173.90553" rx="1.350039" ry="1.8000519"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Butt_0.tw b/src/art/vector_revamp/layers/Butt_0.tw
new file mode 100644
index 0000000000000000000000000000000000000000..69df5cf98ad0a282dc6d446e1933c4377c12b111
--- /dev/null
+++ b/src/art/vector_revamp/layers/Butt_0.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Butt_0 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" d="m 266.49148,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path6961"/><path id="path6963" class="skin" d="m 266.49148,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z"/><path id="path882" class="shadow" d="m 361.11649,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" sodipodi:nodetypes="cccccc"/><path d="m 361.11649,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path884"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Butt_1.tw b/src/art/vector_revamp/layers/Butt_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9fae61e7446caf7b05c48a9f52792b6d999e3756
--- /dev/null
+++ b/src/art/vector_revamp/layers/Butt_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Butt_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path1037" class="shadow" d="m 267.81731,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" sodipodi:nodetypes="cccccc"/><path d="m 267.81731,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1039"/><path sodipodi:nodetypes="cccccc" d="m 362.44232,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1041"/><path id="path1043" class="skin" d="m 362.44232,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Butt_2.tw b/src/art/vector_revamp/layers/Butt_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ab5705e7c6e3c99642040922cac8b806cb399a93
--- /dev/null
+++ b/src/art/vector_revamp/layers/Butt_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Butt_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" d="m 269.58507,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1049"/><path id="path1051" class="skin" d="m 269.58507,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z"/><path id="path1053" class="shadow" d="m 364.21008,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" sodipodi:nodetypes="cccccc"/><path d="m 364.21008,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1055"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Butt_3.tw b/src/art/vector_revamp/layers/Butt_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..48232b9aaef8639c90f821e18dda25e6e44c4178
--- /dev/null
+++ b/src/art/vector_revamp/layers/Butt_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Butt_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path1073" class="shadow" d="m 272.32511,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" sodipodi:nodetypes="cccccc"/><path d="m 272.32511,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="skin" id="path1075"/><path sodipodi:nodetypes="cccccc" d="m 366.95012,381.808 c 10.52433,-3.11217 26.75409,16.82296 31.8,30.1 11.42013,21.24004 7.31087,42.00362 5.3,52.2 -1.17392,13.81004 -5.34217,23.46418 -9.5,32.6 -6.39988,20.30005 -15.53381,39.62837 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z" class="shadow" id="path1077"/><path id="path1079" class="skin" d="m 366.95012,381.808 c 10.1,-2.9 25.4,17.5 31.8,30.1 10.4,20.9 7,41.9 5.3,52.2 -2.1,13.3 -5.7,22.8 -9.5,32.6 -7.8,19.7 -15.6,39.6 -21.9,39.1 -16.7,-1.3 -30.4,-146.9 -5.7,-154 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Anus.tw b/src/art/vector_revamp/layers/Chastity_Anus.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9e23d1f4ebd0a4af98d2528a73f2485108e74584
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Anus.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Anus [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccc" id="path3080" d="m 259.57075,420.99587 5.54092,2.13857 c 6.84074,12.92695 13.83515,25.67806 22.99206,38.15507 5.87262,1.49226 8.72636,0.53435 16.49875,-0.30496 2.72601,-20.54453 6.03555,-29.03633 14.92521,-48.24503 l 2.28574,-0.5993 c -5.31308,16.34941 -11.3981,32.06023 -16.22393,50.16815 -5.02246,3.8981 -10.47949,6.02978 -18.59375,0.25 -12.04308,-13.27369 -19.00846,-27.47246 -27.425,-41.5625 z" class="shadow"/><path class="steel_chastity" d="m 259.57075,420.99587 5.54092,2.13857 c 6.43322,12.76394 13.40942,25.50777 22.99206,38.15507 5.46252,1.69783 9.56792,1.06871 16.49875,-0.30496 3.07852,-20.54453 6.67016,-29.03633 14.92521,-48.24503 l 2.28574,-0.5993 c -5.68796,16.34941 -11.85486,32.06023 -16.22393,50.16815 -5.07591,3.55067 -10.54368,5.61252 -18.59375,0.25 -11.7304,-13.58637 -18.82904,-27.65188 -27.425,-41.5625 z" id="path7-06" sodipodi:nodetypes="ccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Base.tw b/src/art/vector_revamp/layers/Chastity_Base.tw
new file mode 100644
index 0000000000000000000000000000000000000000..0f260f9b52ec2ebb7d646612a2e2792b124b9946
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Base.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Base [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 234.14215,411.65829 c 9.83963,2.44592 24.11909,4.87598 41.29544,3.79314 14.82928,-1.00347 25.26976,-4.22856 41.10914,-9.24736 31.67875,-10.0376 59.89552,-24.27204 59.89552,-24.27204 0,0 3.77627,-1.52869 6.22097,3.2396 2.4447,4.76829 -3.82372,5.48812 -3.82372,5.48812 -11.21596,5.27692 -21.47914,9.58762 -30.87638,13.25027 -5.87529,2.27682 -13.83348,5.40046 -24.7826,8.91127 -11.47387,3.69784 -21.23826,6.81251 -34.64102,8.90022 -4.327,0.70671 -10.41184,1.70053 -17.99393,2.02697 -8.40953,0.36025 -21.89647,0.23256 -38.00184,-4.0271 -3.4127,0.35474 -6.02754,-2.05529 -6.27918,-4.44599 -0.0582,-1.20639 0.39848,-3.51013 2.76794,-4.30243 1.7256,-0.48449 3.58016,-0.17944 5.10966,0.68533 z" id="path5" sodipodi:nodetypes="ccscsccccccccc"/><path class="steel_chastity" d="m 232.02342,410.58579 c 4.2276,1.23469 10.00709,2.62122 17.0904,3.49082 0,0 10.92765,1.45762 23.47433,0.92828 15.58596,-0.62043 54.91755,-11.40132 101.73537,-34.14536 0,0 3.77627,-1.52869 6.22097,3.2396 2.4447,4.76829 -3.82371,5.48811 -3.82371,5.48811 -11.21597,5.27692 -21.47915,9.58763 -30.87638,13.25028 -7.17912,2.79374 -15.01821,5.7966 -24.7826,8.91127 -14.53555,4.50187 -30.64536,9.56484 -50.60668,10.59591 -9.08562,0.47068 -23.26478,0.35472 -39.87878,-3.61922 -3.4127,0.35474 -6.02754,-2.05529 -6.27918,-4.44599 -0.0582,-1.20639 0.39848,-3.51013 2.76794,-4.30243 1.59039,-0.4624 3.42882,-0.25604 4.95832,0.60873 z" id="path7-0" sodipodi:nodetypes="ccccscccccccc"/><rect x="227.62526" y="439.7114" transform="rotate(-6.7781878)" width="10.100405" height="20.000801" id="rect9"/><rect x="227.61998" y="439.71948" transform="rotate(-6.7781878)" class="steel_chastity" width="9.1003647" height="19.400776" id="rect11-4"/><circle transform="rotate(-96.778188)" id="ellipse13" r="2.9001162" cy="232.19637" cx="-445.93915"/><rect x="231.53053" y="445.11972" transform="rotate(-6.7781878)" width="1.400056" height="9.8003931" id="rect15"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_0.tw b/src/art/vector_revamp/layers/Chastity_Cage_0.tw
new file mode 100644
index 0000000000000000000000000000000000000000..114bdb86a26fd474aa8083bb58eeb425c316acb6
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_0.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_0 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9" ry="0.30001223" rx="1.8000734" cy="467.29907" cx="279.54913" transform="rotate(-0.51733349)"/><ellipse id="ellipse11" ry="0.30001223" rx="1.8000734" cy="467.39847" cx="279.54852" class="steel_chastity" transform="rotate(-0.51733349)"/><ellipse transform="rotate(-17.980187)" cx="134.75592" cy="518.57367" rx="0.30001158" ry="2.3000886" id="ellipse17"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="134.67969" cy="518.55194" rx="0.30001158" ry="2.3000886" id="ellipse19"/><ellipse transform="rotate(-26.992949)" cx="50.34901" cy="533.17877" rx="0.30001268" ry="2.6001096" id="ellipse23"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="50.286343" cy="533.13831" rx="0.30001268" ry="2.6001096" id="ellipse25"/><ellipse transform="rotate(-54.237185)" cx="-202.58504" cy="496.51791" rx="0.29998401" ry="2.7998507" id="ellipse29"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-202.6292" cy="496.42209" rx="0.29998401" ry="2.699856" id="ellipse31"/><ellipse transform="rotate(-80.822144)" cx="-406.91" cy="353.02335" rx="0.30000064" ry="2.7000055" id="ellipse35"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-406.96771" cy="352.9758" rx="0.30000064" ry="2.6000051" id="ellipse37"/><ellipse transform="rotate(-0.44004565)" cx="280.09009" cy="464.81555" rx="0.30000886" ry="2.4000709" id="ellipse41"/><ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="279.99078" cy="464.71503" rx="0.30000886" ry="2.4000709" id="ellipse43"/><path id="path49" d="m 286.3375,462.5375 c -0.1,1.3 -0.8,2.3 -0.9,2.3 -0.2,0 0.2,-1.1 0.3,-2.4 0.1,-1.3 -0.1,-2.3 0.1,-2.3 0.2,0 0.7,1.1 0.5,2.4 z"/><path id="path932" d="m 286.3375,462.4375 c -0.1,1.3 -0.7,2.3 -0.9,2.3 -0.1,0 0.2,-1 0.3,-2.4 0.1,-1.3 -0.1,-2.3 0,-2.3 0.2,0.1 0.7,1.1 0.6,2.4 z" class="steel_chastity"/><path id="path57" d="m 281.6375,462.6375 c 0.1,1.3 0.5,2.2 0.3,2.4 -0.1,0.1 -0.8,-0.8 -1,-2.3 -0.1,-1.5 0.4,-2.8 0.6,-2.6 0.2,0 0,1.2 0.1,2.5 z"/><path id="path59" d="m 281.7375,462.6375 c 0.1,1.2 0.5,2.2 0.3,2.3 -0.1,0.1 -0.8,-0.8 -0.9,-2.2 -0.1,-1.5 0.4,-2.7 0.6,-2.5 0.1,0 -0.2,1.2 0,2.4 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="182.3781" cy="504.23175" rx="0.1999971" ry="2.0999694" id="ellipse63"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="182.29442" cy="504.11957" rx="0.1999971" ry="2.0999694" id="ellipse65"/><ellipse transform="rotate(-0.51733119)" cx="279.46997" cy="464.99747" rx="2.4000978" ry="0.30001223" id="ellipse69"/><ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="279.36935" cy="465.09668" rx="2.3000937" ry="0.30001223" id="ellipse71"/><path id="path73" d="M 287.9375,456.8375"/><ellipse transform="rotate(-41.042549)" cx="-82.119583" cy="529.44684" rx="0.29999119" ry="2.6999207" id="ellipse77"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-82.168976" cy="529.37885" rx="0.29999119" ry="2.6999207" id="ellipse79"/><ellipse transform="rotate(-68.216677)" cx="-318.22693" cy="433.1188" rx="0.30000198" ry="2.8000183" id="ellipse83"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-318.27298" cy="432.99356" rx="0.30000198" ry="2.7000179" id="ellipse85"/><path id="path87" d="m 290.5375,450.9375 c 0,0.1 -1.5,0.4 -3.2,1.6 -0.6,0.4 -1.3,0.9 -2,1.7 -0.9,1.1 -1.2,2.1 -1.3,2.4 -0.2,0.7 -0.3,1.4 -0.3,2 -0.1,0.6 -0.1,1.4 -0.1,1.4 0,0 0,0 0,0 v 0 c 0,0 0.1,0 0.1,0 0,0 -0.1,0 -0.2,0 -0.1,0 -0.1,-0.2 -0.1,-0.3 -0.1,-0.8 0,-1 0,-1 -0.1,-0.4 0,-0.8 0.2,-1.5 0.1,-0.4 0.2,-1 0.5,-1.8 0.2,-0.5 0.5,-1.1 1.1,-1.8 0.5,-0.5 1.3,-1.1 2.3,-1.6 1.6,-0.9 3,-1.2 3,-1.1 z"/><path id="path89" d="m 290.6375,450.9375 c 0,0.1 -1,0.3 -2.3,0.9 -0.2,0.1 -0.3,0.2 -0.6,0.3 -0.6,0.3 -1.9,1.1 -2.9,2.6 0,0.1 -0.2,0.3 -0.3,0.6 -1.3,2.5 -0.7,5.1 -1,5.1 -0.1,0 -0.1,-0.2 -0.2,-0.4 -0.1,-0.4 -0.4,-1.6 0.4,-4 0.1,-0.4 0.4,-1 0.7,-1.6 0.4,-0.6 0.8,-1 1.1,-1.3 0,0 0,0 0.1,-0.1 1.5,-1.4 4,-2.1 4,-2.1 0.5,0 0.9,-0.1 1,0 z" class="steel_chastity"/><path id="path91" d="M 283.2375,451.9375" class="steel_chastity"/><path id="path93" d="M 280.9375,452.5375"/><path id="path95" d="M 282.9375,452.0375" class="steel_chastity"/><path id="path97" d="M 281.4375,451.1375"/><ellipse transform="rotate(-87.809755)" cx="-448.97247" cy="301.0705" rx="0.30000919" ry="2.5000765" id="ellipse101"/><ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-449.04303" cy="301.01602" rx="0.30000919" ry="2.5000765" id="ellipse103"/><ellipse transform="rotate(-1.8915592)" cx="275.81781" cy="460.21146" rx="0.20000899" ry="2.0000899" id="ellipse107"/><ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.72015" cy="460.20984" rx="0.20000899" ry="2.0000899" id="ellipse109"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_1.tw b/src/art/vector_revamp/layers/Chastity_Cage_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6787c0e9bb920a23a9e48aaae2ae2a49a570ec49
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-6" ry="0.60002446" rx="3.3001344" cy="479.44797" cx="273.82657" transform="rotate(-0.51733349)"/><ellipse id="ellipse11-1" ry="0.50002038" rx="3.2001305" cy="479.54684" cx="273.72546" class="steel_chastity" transform="rotate(-0.51733349)"/><ellipse transform="rotate(-17.980187)" cx="132.69135" cy="519.04468" rx="0.50001931" ry="4.3001661" id="ellipse17-9"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="132.53522" cy="518.90448" rx="0.50001931" ry="4.2001619" id="ellipse19-2"/><ellipse transform="rotate(-26.992949)" cx="46.941521" cy="533.22223" rx="0.60002536" ry="4.900207" id="ellipse23-2"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="46.810341" cy="533.04767" rx="0.5000211" ry="4.8002028" id="ellipse25-3"/><ellipse transform="rotate(-54.237185)" cx="-208.40569" cy="494.58987" rx="0.59996802" ry="5.0997276" id="ellipse29-5"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-208.50229" cy="494.41287" rx="0.49997333" ry="5.0997276" id="ellipse31-9"/><ellipse transform="rotate(-80.822144)" cx="-414.28348" cy="348.33478" rx="0.60000128" ry="4.9000101" id="ellipse35-2"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-414.40549" cy="348.16217" rx="0.50000101" ry="4.9000101" id="ellipse37-8"/><ellipse transform="rotate(-0.44004565)" cx="274.2977" cy="475.17117" rx="0.60001773" ry="4.5001326" id="ellipse41-7"/><ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="274.09903" cy="474.97028" rx="0.50001472" ry="4.4001298" id="ellipse43-3"/><path id="path49-2" d="m 282.925,472.9375 c -0.2,2.5 -1.5,4.3 -1.7,4.3 -0.3,0 0.4,-1.9 0.6,-4.4 0.2,-2.4 -0.2,-4.3 0.2,-4.3 0.2,0 1.1,1.9 0.9,4.4 z"/><path id="path51-9" d="m 282.725,472.7375 c -0.2,2.5 -1.4,4.3 -1.6,4.2 -0.3,0 0.4,-1.9 0.6,-4.3 0.2,-2.4 -0.2,-4.3 0.1,-4.3 0.3,0 1.1,2 0.9,4.4 z" class="steel_chastity"/><path id="path57-9" d="m 274.125,473.0375 c 0.2,2.3 0.9,4.1 0.6,4.4 -0.2,0.3 -1.6,-1.4 -1.8,-4.3 -0.2,-2.8 0.8,-5.1 1.1,-4.9 0.3,0.2 -0.1,2.4 0.1,4.8 z"/><path id="path59-4" d="m 274.325,473.0375 c 0.2,2.3 0.8,4 0.6,4.2 -0.2,0.3 -1.5,-1.4 -1.7,-4.1 -0.2,-2.7 0.8,-4.9 1,-4.7 0.3,0.1 -0.2,2.3 0.1,4.6 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="181.5271" cy="504.76035" rx="0.39999419" ry="3.8999434" id="ellipse63-8"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="181.45718" cy="504.53781" rx="0.39999419" ry="3.8999434" id="ellipse65-4"/><ellipse transform="rotate(-0.51733119)" cx="273.56509" cy="475.14505" rx="4.4001794" ry="0.60002446" id="ellipse69-0"/><ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="273.36389" cy="475.34351" rx="4.3001757" ry="0.50002038" id="ellipse71-3"/><ellipse transform="rotate(-41.042549)" cx="-86.744507" cy="528.60522" rx="0.59998238" ry="4.9998531" id="ellipse75"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-86.951141" cy="528.47955" rx="0.49998531" ry="4.9998531" id="ellipse77-6"/><ellipse transform="rotate(-68.216677)" cx="-324.80972" cy="429.86664" rx="0.60000396" ry="5.1000333" id="ellipse81"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-324.91003" cy="429.63513" rx="0.50000328" ry="5.1000333" id="ellipse83-1"/><path id="path85" d="m 290.725,451.4375 c 0,0.1 -2.7,0.7 -5.9,2.9 -1.2,0.8 -2.4,1.6 -3.6,3.1 -1.6,2 -2.2,3.9 -2.4,4.4 -0.4,1.3 -0.5,2.7 -0.6,3.6 -0.1,1.1 -0.2,2.6 -0.2,2.6 0,0 0,0 0,0 v 0 c 0,0 0.1,0 0.1,0.1 0,0 -0.2,0.1 -0.3,0 -0.2,-0.1 -0.2,-0.3 -0.2,-0.5 -0.2,-1.4 -0.1,-1.9 -0.1,-1.9 -0.1,-0.8 0,-1.5 0.3,-2.9 0.1,-0.7 0.4,-1.9 1,-3.4 0.4,-0.9 1,-2 1.9,-3.2 0.9,-0.8 2.4,-2 4.3,-3 2.9,-1.4 5.6,-1.9 5.7,-1.8 z"/><path id="path87-0" d="m 290.725,451.3375 c 0,0.1 -1.8,0.5 -4.3,1.7 -0.3,0.2 -0.6,0.3 -1.1,0.5 -1.1,0.6 -3.5,2 -5.3,4.8 -0.1,0.1 -0.3,0.5 -0.6,1.1 -2.3,4.7 -1.4,9.4 -1.8,9.4 -0.1,0 -0.3,-0.4 -0.3,-0.7 -0.2,-0.7 -0.8,-3 0.7,-7.3 0.3,-0.8 0.7,-1.8 1.3,-3 0.7,-1.1 1.4,-1.9 1.9,-2.4 0,0 0.1,-0.1 0.1,-0.1 2.7,-2.7 7.3,-3.8 7.3,-3.8 1.2,-0.1 2.1,-0.2 2.1,-0.2 z" class="steel_chastity"/><ellipse transform="rotate(-87.809755)" cx="-457.5112" cy="295.76151" rx="0.60001838" ry="4.6001406" id="ellipse91"/><ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-457.65686" cy="295.57602" rx="0.50001532" ry="4.6001406" id="ellipse93"/><ellipse transform="rotate(-1.8915592)" cx="276.09088" cy="460.72162" rx="0.40001798" ry="3.6001616" id="ellipse97"/><ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.99527" cy="460.51865" rx="0.40001798" ry="3.6001616" id="ellipse99"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_2.tw b/src/art/vector_revamp/layers/Chastity_Cage_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..31948a1754d5b999fe8a0f43ee81b77d8e9ec85d
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-3" ry="0.80003262" rx="4.6001873" cy="490.9444" cx="267.79684" transform="rotate(-0.51733349)"/><ellipse id="ellipse11-2" ry="0.80003262" rx="4.6001873" cy="491.14282" cx="267.59525" class="steel_chastity" transform="rotate(-0.51733349)"/><ellipse transform="rotate(-17.980187)" cx="129.94711" cy="519.67291" rx="0.70002699" ry="6.100235" id="ellipse17-1"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="129.70938" cy="519.41577" rx="0.70002699" ry="6.0002313" id="ellipse19-5"/><ellipse transform="rotate(-26.992949)" cx="42.951714" cy="533.26959" rx="0.80003381" ry="6.9002914" id="ellipse23-4"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="42.74955" cy="533.06342" rx="0.80003381" ry="6.8002872" id="ellipse25-7"/><ellipse transform="rotate(-54.237185)" cx="-214.39348" cy="492.40952" rx="0.79995733" ry="7.199616" id="ellipse29-56"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-214.64661" cy="492.15811" rx="0.79995733" ry="7.199616" id="ellipse31-93"/><ellipse transform="rotate(-80.822144)" cx="-421.52307" cy="343.36212" rx="0.80000162" ry="7.0000143" id="ellipse35-4"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-421.71213" cy="343.17468" rx="0.80000162" ry="6.9000144" id="ellipse37-5"/><ellipse transform="rotate(-0.44004565)" cx="268.19629" cy="485.07492" rx="0.80002362" ry="6.4001889" id="ellipse41-5"/><ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="267.99811" cy="484.87354" rx="0.80002362" ry="6.3001862" id="ellipse43-4"/><path id="path49-4" d="m 279,482.7875 c -0.3,3.5 -2.1,6.1 -2.5,6.1 -0.4,-0.1 0.6,-2.8 0.9,-6.2 0.3,-3.5 -0.2,-6.2 0.2,-6.1 0.5,0 1.7,2.7 1.4,6.2 z"/><path id="path51-3" d="m 278.8,482.5875 c -0.3,3.5 -1.9,6.1 -2.3,6 -0.4,-0.1 0.6,-2.7 0.8,-6.2 0.3,-3.4 -0.3,-6.1 0.1,-6.1 0.4,0.1 1.7,2.8 1.4,6.3 z" class="steel_chastity"/><path id="path57-8" d="m 266.5,482.9875 c 0.3,3.3 1.2,5.8 0.8,6.2 -0.4,0.4 -2.2,-2 -2.5,-6.1 -0.3,-4 1.1,-7.2 1.6,-6.9 0.4,0.3 -0.2,3.4 0.1,6.8 z"/><path id="path59-6" d="m 266.8,482.8875 c 0.3,3.2 1.2,5.7 0.8,6 -0.3,0.4 -2.1,-2 -2.4,-5.9 -0.3,-3.9 1.1,-7 1.5,-6.7 0.3,0.4 -0.3,3.4 0.1,6.6 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="180.00468" cy="505.48141" rx="0.59999132" ry="5.4999199" id="ellipse63-84"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="179.84734" cy="505.24936" rx="0.49999273" ry="5.4999199" id="ellipse65-3"/><ellipse transform="rotate(-0.51733119)" cx="267.35156" cy="484.94016" rx="6.2002525" ry="0.80003262" id="ellipse69-4"/><ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="267.14996" cy="485.13806" rx="6.2002525" ry="0.80003262" id="ellipse71-9"/><ellipse transform="rotate(-41.042549)" cx="-91.814835" cy="527.70331" rx="0.79997647" ry="7.1997881" id="ellipse75-0"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-91.98201" cy="527.42474" rx="0.79997647" ry="7.099791" id="ellipse77-68"/><ellipse transform="rotate(-68.216677)" cx="-331.52155" cy="426.40738" rx="0.80000526" ry="7.200047" id="ellipse81-2"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-331.67984" cy="426.07828" rx="0.80000526" ry="7.200047" id="ellipse83-6"/><path id="path85-6" d="m 290,452.2875 c 0.1,0.2 -3.8,1.1 -8.4,4.1 -1.6,1.1 -3.4,2.3 -5.2,4.5 -2.3,2.8 -3.1,5.6 -3.4,6.3 -0.6,1.9 -0.8,3.8 -0.9,5.2 -0.2,1.5 -0.3,3.7 -0.3,3.7 0,0 0,0 0,0 v 0 c 0,0 0.2,0 0.2,0.1 0,0 -0.2,0.1 -0.4,0 -0.2,-0.1 -0.3,-0.5 -0.3,-0.7 -0.2,-2 -0.1,-2.6 -0.1,-2.6 -0.2,-1.1 0,-2.1 0.4,-4.1 0.2,-1 0.5,-2.7 1.4,-4.8 0.5,-1.2 1.4,-2.9 2.8,-4.6 1.3,-1.2 3.3,-2.8 6.1,-4.2 4.2,-2.4 8.1,-3.1 8.1,-2.9 z"/><path id="path87-4" d="m 290.1,452.1875 c 0,0.1 -2.6,0.7 -6.1,2.5 -0.4,0.2 -0.9,0.4 -1.5,0.8 -1.5,0.9 -5,2.9 -7.5,6.8 -0.1,0.2 -0.4,0.7 -0.8,1.5 -3.3,6.7 -2,13.4 -2.6,13.4 -0.2,0 -0.4,-0.6 -0.5,-1 -0.3,-1 -1.1,-4.3 0.9,-10.4 0.4,-1.1 1,-2.6 1.9,-4.3 1,-1.5 2,-2.6 2.8,-3.4 0,0 0.1,-0.1 0.1,-0.1 3.9,-3.8 10.4,-5.4 10.4,-5.4 1.6,-0.3 2.9,-0.5 2.9,-0.4 z" class="steel_chastity"/><ellipse transform="rotate(-87.809755)" cx="-465.82806" cy="290.11841" rx="0.80002451" ry="6.5001988" id="ellipse91-5"/><ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-465.95081" cy="289.81277" rx="0.80002451" ry="6.5001988" id="ellipse93-0"/><ellipse transform="rotate(-1.8915592)" cx="275.63971" cy="461.45648" rx="0.60002697" ry="5.2002335" id="ellipse97-8"/><ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="275.54593" cy="461.25238" rx="0.50002247" ry="5.1002293" id="ellipse99-7"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_3.tw b/src/art/vector_revamp/layers/Chastity_Cage_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c386eea1608f25de0eb60f46ef19b5da4e7f036e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-7" ry="1.300053" rx="7.2002935" cy="507.01486" cx="260.22626" transform="rotate(-0.51733349)"/><ellipse id="ellipse11-27" ry="1.2000489" rx="7.1002893" cy="507.31244" cx="259.92389" class="steel_chastity" transform="rotate(-0.51733349)"/><ellipse transform="rotate(-17.980187)" cx="129.64604" cy="517.00818" rx="1.1000425" ry="9.3003588" id="ellipse17-6"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="129.44194" cy="516.61993" rx="1.0000386" ry="9.3003588" id="ellipse19-1"/><ellipse transform="rotate(-26.992949)" cx="41.019997" cy="530.41113" rx="1.3000548" ry="10.700452" id="ellipse23-1"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="40.770897" cy="530.04755" rx="1.2000507" ry="10.600448" id="ellipse25-5"/><ellipse transform="rotate(-54.237185)" cx="-219.3932" cy="488.16318" rx="1.2999306" ry="11.199403" id="ellipse29-4"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-219.66667" cy="487.7753" rx="1.199936" ry="11.099408" id="ellipse31-90"/><ellipse transform="rotate(-80.822144)" cx="-429.20181" cy="336.93039" rx="1.3000026" ry="10.700022" id="ellipse35-1"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-429.53076" cy="336.53275" rx="1.2000026" ry="10.600022" id="ellipse37-7"/><ellipse transform="rotate(-0.44004565)" cx="260.47058" cy="498.15396" rx="1.3000383" ry="9.8002892" id="ellipse41-1"/><ellipse transform="rotate(-0.44004565)" class="steel_chastity" cx="260.1734" cy="497.75186" rx="1.2000355" ry="9.7002859" id="ellipse43-1"/><path id="path49-7" d="m 275.275,495.825 c -0.5,5.4 -3.2,9.5 -3.8,9.3 -0.6,-0.1 1,-4.3 1.4,-9.6 0.5,-5.3 -0.4,-9.5 0.4,-9.4 0.6,0 2.5,4.3 2,9.7 z"/><path id="path51-7" d="m 274.975,495.425 c -0.4,5.4 -3,9.4 -3.5,9.3 -0.6,-0.1 1,-4.2 1.3,-9.5 0.4,-5.3 -0.5,-9.4 0.2,-9.3 0.5,-0.1 2.4,4.2 2,9.5 z" class="steel_chastity"/><path id="path57-6" d="m 256.075,496.025 c 0.4,5.1 1.9,9 1.3,9.6 -0.5,0.6 -3.4,-3.1 -3.9,-9.4 -0.5,-6.2 1.8,-11.2 2.4,-10.7 0.6,0.5 -0.3,5.4 0.2,10.5 z"/><path id="path59-5" d="m 256.375,496.025 c 0.4,5 1.8,8.7 1.3,9.3 -0.5,0.6 -3.2,-3.1 -3.7,-9 -0.5,-6 1.7,-10.8 2.2,-10.3 0.6,0.3 -0.3,5 0.2,10 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="181.56415" cy="502.50012" rx="0.89998686" ry="8.5998755" id="ellipse63-3"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="181.42993" cy="502.25079" rx="0.79998839" ry="8.499876" id="ellipse65-9"/><ellipse transform="rotate(-0.51733119)" cx="259.6106" cy="497.70834" rx="9.6003914" ry="1.300053" id="ellipse69-8"/><ellipse transform="rotate(-0.51733119)" class="steel_chastity" cx="259.20819" cy="497.90512" rx="9.5003872" ry="1.2000489" id="ellipse71-1"/><path id="path73-2" d="M 281.575,472.525"/><ellipse transform="rotate(-41.042549)" cx="-95.2099" cy="524.43323" rx="1.2999617" ry="11.099674" id="ellipse77-3"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-95.505165" cy="524.05786" rx="1.1999648" ry="10.999677" id="ellipse79-9"/><ellipse transform="rotate(-68.216677)" cx="-337.76065" cy="421.32883" rx="1.3000085" ry="11.200073" id="ellipse83-8"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-338.04218" cy="420.92136" rx="1.2000079" ry="11.100074" id="ellipse85-8"/><path id="path87-5" d="m 292.275,448.625 c 0.1,0.2 -5.9,1.6 -13,6.3 -2.5,1.7 -5.3,3.5 -8,6.9 -3.5,4.4 -4.8,8.6 -5.2,9.7 -0.9,2.9 -1.2,5.9 -1.4,8 -0.2,2.3 -0.4,5.8 -0.5,5.8 0,0 0,0 0,-0.1 v 0 c 0,0 0.3,0.1 0.3,0.1 0,0.1 -0.4,0.2 -0.6,0.1 -0.4,-0.2 -0.4,-0.8 -0.5,-1 -0.3,-3 -0.2,-4.1 -0.2,-4.1 -0.3,-1.7 0,-3.2 0.6,-6.3 0.3,-1.5 0.8,-4.2 2.2,-7.4 0.8,-1.9 2.1,-4.4 4.3,-7.1 2,-1.8 5.2,-4.3 9.3,-6.5 6.7,-3.4 12.6,-4.6 12.7,-4.4 z"/><path id="path89-0" d="m 292.375,448.625 c 0.1,0.2 -4,1.1 -9.4,3.8 -0.7,0.3 -1.4,0.7 -2.3,1.2 -2.4,1.3 -7.8,4.4 -11.5,10.5 -0.2,0.2 -0.7,1.1 -1.3,2.3 -5.1,10.3 -3,20.6 -3.9,20.7 -0.3,0 -0.6,-0.9 -0.7,-1.5 -0.4,-1.6 -1.7,-6.6 1.5,-16 0.6,-1.7 1.5,-4 2.9,-6.6 1.6,-2.3 3.1,-4.1 4.3,-5.2 0.1,-0.1 0.1,-0.1 0.2,-0.2 6,-5.9 16,-8.3 16,-8.3 2.2,-0.6 4.2,-0.9 4.2,-0.7 z" class="steel_chastity"/><path id="path91-9" d="M 262.575,452.925" class="steel_chastity"/><path id="path93-6" d="M 253.375,455.025"/><path id="path95-3" d="M 261.475,453.025" class="steel_chastity"/><path id="path97-8" d="M 255.075,449.625"/><ellipse transform="rotate(-87.809755)" cx="-475.63037" cy="282.90826" rx="1.3000398" ry="10.100309" id="ellipse101-6"/><ellipse transform="rotate(-87.809755)" class="steel_chastity" cx="-475.91144" cy="282.58267" rx="1.2000368" ry="10.000306" id="ellipse103-1"/><ellipse transform="rotate(-1.8915592)" cx="278.33359" cy="457.88177" rx="0.90004039" ry="8.0003595" id="ellipse107-5"/><ellipse transform="rotate(-1.8915592)" class="steel_chastity" cx="278.14319" cy="457.57538" rx="0.80003595" ry="7.9003549" id="ellipse109-9"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_4.tw b/src/art/vector_revamp/layers/Chastity_Cage_4.tw
new file mode 100644
index 0000000000000000000000000000000000000000..922643d102511ec3f129e9b7533f434c6e224695
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_4.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_4 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-1" ry="1.6000652" rx="8.8003588" cy="520.67523" cx="252.42801" transform="rotate(-0.51731229)"/><ellipse id="ellipse11-0" ry="1.5000612" rx="8.7003546" cy="521.0719" cx="252.02472" class="steel_chastity" transform="rotate(-0.51731229)"/><ellipse transform="rotate(-17.980187)" cx="125.4729" cy="517.88269" rx="1.3000501" ry="11.300436" id="ellipse17-4"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="125.20676" cy="517.48279" rx="1.2000463" ry="11.300436" id="ellipse19-4"/><ellipse transform="rotate(-26.992949)" cx="35.382034" cy="530.53302" rx="1.6000676" ry="13.000548" id="ellipse23-47"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="35.150055" cy="530.14703" rx="1.5000633" ry="12.900544" id="ellipse25-6"/><ellipse transform="rotate(-54.237185)" cx="-227.30109" cy="485.23416" rx="1.5999147" ry="13.599275" id="ellipse29-1"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-227.65594" cy="484.66739" rx="1.49992" ry="13.49928" id="ellipse31-7"/><ellipse transform="rotate(-80.822144)" cx="-438.15033" cy="330.48074" rx="1.6000032" ry="13.000027" id="ellipse35-9"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-438.50885" cy="329.97794" rx="1.5000031" ry="12.900026" id="ellipse37-6"/><ellipse transform="rotate(-0.44003305)" cx="252.6046" cy="509.92383" rx="1.6000472" ry="11.900351" id="ellipse41-78"/><ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="252.20842" cy="509.42105" rx="1.5000442" ry="11.800348" id="ellipse43-5"/><path id="path49-5" d="m 269.90039,507.65445 c -0.6,6.6 -3.9,11.6 -4.6,11.3 -0.7,-0.1 1.2,-5.2 1.7,-11.7 0.6,-6.5 -0.5,-11.6 0.5,-11.5 0.7,0 3,5.3 2.4,11.9 z"/><path id="path51-97" d="m 269.50039,507.15445 c -0.5,6.6 -3.7,11.5 -4.3,11.3 -0.7,-0.1 1.2,-5.1 1.6,-11.6 0.5,-6.5 -0.6,-11.5 0.2,-11.3 0.7,-0.1 3,5.1 2.5,11.6 z" class="steel_chastity"/><path id="path57-88" d="m 246.50039,507.85445 c 0.5,6.2 2.3,11 1.6,11.7 -0.6,0.7 -4.1,-3.8 -4.8,-11.5 -0.6,-7.6 2.2,-13.6 2.9,-13 0.8,0.6 -0.3,6.6 0.3,12.8 z"/><path id="path59-3" d="m 246.80039,507.85445 c 0.5,6.1 2.2,10.6 1.6,11.3 -0.6,0.7 -3.9,-3.8 -4.5,-11 -0.6,-7.3 2.1,-13.2 2.7,-12.5 0.7,0.4 -0.4,6.1 0.2,12.2 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="178.68761" cy="503.60449" rx="1.099984" ry="10.499847" id="ellipse63-89"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="178.55089" cy="503.26062" rx="0.99998546" ry="10.399848" id="ellipse65-6"/><ellipse transform="rotate(-0.51731)" cx="251.73035" cy="509.36749" rx="11.700477" ry="1.6000652" id="ellipse69-3"/><ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="251.22815" cy="509.56305" rx="11.600473" ry="1.5000612" id="ellipse71-38"/><ellipse transform="rotate(-41.042549)" cx="-102.11347" cy="523.11237" rx="1.5999529" ry="13.499603" id="ellipse75-04"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-102.40156" cy="522.6637" rx="1.4999559" ry="13.399606" id="ellipse77-8"/><ellipse transform="rotate(-68.216677)" cx="-346.17831" cy="416.71124" rx="1.6000105" ry="13.60009" id="ellipse81-8"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-346.53287" cy="416.18054" rx="1.5000099" ry="13.500089" id="ellipse83-9"/><path id="path85-7" d="m 290.60039,450.05445 c 0.1,0.2 -7.2,1.9 -15.8,7.7 -3,2.1 -6.5,4.3 -9.7,8.4 -4.3,5.4 -5.8,10.5 -6.3,11.8 -1.1,3.5 -1.5,7.2 -1.7,9.7 -0.2,2.8 -0.5,7.1 -0.6,7.1 0,0 0,0 0,-0.1 v 0 l 0.4,0.1 c 0,0.1 -0.5,0.2 -0.7,0.1 -0.5,-0.2 -0.5,-1 -0.6,-1.2 -0.4,-3.7 -0.2,-5 -0.2,-5 -0.4,-2.1 0,-3.9 0.7,-7.7 0.4,-1.8 1,-5.1 2.7,-9 1,-2.3 2.6,-5.4 5.2,-8.7 2.4,-2.2 6.3,-5.2 11.3,-7.9 8,-4 15.2,-5.5 15.3,-5.3 z"/><path id="path87-7" d="m 290.70039,450.05445 c 0.1,0.2 -4.9,1.3 -11.5,4.6 -0.9,0.4 -1.7,0.9 -2.8,1.5 -2.9,1.6 -9.5,5.4 -14,12.8 -0.2,0.2 -0.9,1.3 -1.6,2.8 -6.2,12.5 -3.7,25.1 -4.8,25.2 -0.4,0 -0.7,-1.1 -0.9,-1.8 -0.5,-1.9 -2.1,-8 1.8,-19.5 0.7,-2.1 1.8,-4.9 3.5,-8 1.9,-2.8 3.8,-5 5.2,-6.3 0.1,-0.1 0.1,-0.1 0.2,-0.2 7.3,-7.2 19.5,-10.1 19.5,-10.1 3,-0.8 5.4,-1.2 5.4,-1 z" class="steel_chastity"/><ellipse transform="rotate(-87.809822)" cx="-485.53848" cy="275.55014" rx="1.6000489" ry="12.300376" id="ellipse91-4"/><ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-485.8714" cy="275.1265" rx="1.5000458" ry="12.200373" id="ellipse93-3"/><ellipse transform="rotate(-1.8914744)" cx="276.81354" cy="459.26169" rx="1.1000494" ry="9.7004356" id="ellipse97-3"/><ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="276.6257" cy="458.95389" rx="1.0000449" ry="9.6004314" id="ellipse99-0"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_5.tw b/src/art/vector_revamp/layers/Chastity_Cage_5.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3b101563e0c8cb47c3c17ae16bb427340454d5b6
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_5.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_5 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-4" ry="2.1000855" rx="11.400464" cy="541.96863" cx="235.52405" transform="rotate(-0.51731229)"/><ellipse id="ellipse11-05" ry="1.9000775" rx="11.200457" cy="542.46442" cx="235.01974" class="steel_chastity" transform="rotate(-0.51731229)"/><ellipse transform="rotate(-17.980187)" cx="115.03899" cy="516.97107" rx="1.7000656" ry="14.700566" id="ellipse17-69"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="114.71255" cy="516.34155" rx="1.6000618" ry="14.700566" id="ellipse19-22"/><ellipse transform="rotate(-26.992949)" cx="23.069269" cy="527.79224" rx="2.1000886" ry="16.900713" id="ellipse23-7"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="22.687128" cy="527.2511" rx="1.9000802" ry="16.700706" id="ellipse25-54"/><ellipse transform="rotate(-54.237185)" cx="-241.71759" cy="476.30286" rx="2.0998878" ry="17.699057" id="ellipse29-12"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-242.1998" cy="475.69751" rx="1.8998986" ry="17.499067" id="ellipse31-8"/><ellipse transform="rotate(-80.822144)" cx="-452.28793" cy="315.5076" rx="2.1000042" ry="16.900034" id="ellipse35-6"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-452.80457" cy="314.9664" rx="1.9000039" ry="16.700035" id="ellipse37-80"/><ellipse transform="rotate(-0.44003305)" cx="235.55316" cy="528.23846" rx="2.1000619" ry="15.500457" id="ellipse41-51"/><ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="235.05798" cy="527.53479" rx="1.900056" ry="15.300451" id="ellipse43-10"/><path id="path49-0" d="m 256.88999,525.89899 c -0.8,8.5 -5.1,15 -6,14.7 -0.9,-0.2 1.6,-6.8 2.2,-15.2 0.8,-8.4 -0.6,-15 0.6,-14.9 1,0.1 4,6.9 3.2,15.4 z"/><path id="path51-6" d="m 256.48999,525.29899 c -0.6,8.5 -4.7,14.9 -5.5,14.7 -0.9,-0.2 1.6,-6.6 2.1,-15 0.6,-8.4 -0.8,-14.9 0.3,-14.7 0.7,-0.2 3.7,6.6 3.1,15 z" class="steel_chastity"/><path id="path57-2" d="m 226.58999,526.19899 c 0.6,8.1 3,14.2 2.1,15.2 -0.8,0.9 -5.4,-4.9 -6.2,-14.9 -0.8,-9.8 2.8,-17.7 3.8,-16.9 0.9,0.8 -0.5,8.5 0.3,16.6 z"/><path id="path59-58" d="m 227.08999,526.19899 c 0.6,7.9 2.8,13.7 2.1,14.7 -0.7,1 -5.1,-4.9 -5.8,-14.2 -0.8,-9.5 2.7,-17.1 3.5,-16.3 0.8,0.5 -0.6,7.9 0.2,15.8 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="170.42334" cy="503.39645" rx="1.3999796" ry="13.599803" id="ellipse63-847"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="170.20547" cy="502.93967" rx="1.299981" ry="13.399805" id="ellipse65-2"/><ellipse transform="rotate(-0.51731)" cx="234.55676" cy="527.25861" rx="15.20062" ry="2.1000855" id="ellipse69-6"/><ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="233.85391" cy="527.55292" rx="15.000611" ry="1.9000775" id="ellipse71-2"/><ellipse transform="rotate(-41.042549)" cx="-115.63295" cy="517.47675" rx="2.0999382" ry="17.499485" id="ellipse75-9"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-116.05816" cy="516.92462" rx="1.8999441" ry="17.399488" id="ellipse77-0"/><ellipse transform="rotate(-68.216677)" cx="-360.61716" cy="404.87231" rx="2.1000137" ry="17.700117" id="ellipse81-3"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-360.99899" cy="404.15442" rx="1.9000125" ry="17.500114" id="ellipse83-11"/><path id="path85-0" d="m 283.78999,451.29899 c 0.2,0.3 -9.3,2.5 -20.5,10 -3.9,2.7 -8.4,5.5 -12.6,10.9 -5.5,7 -7.6,13.6 -8.2,15.3 -1.4,4.6 -1.9,9.3 -2.2,12.6 -0.3,3.6 -0.6,9.2 -0.8,9.2 0,0 0,0 0,-0.2 v 0 l 0.5,0.2 c 0,0.2 -0.6,0.3 -0.9,0.2 -0.6,-0.3 -0.6,-1.3 -0.8,-1.6 -0.5,-4.7 -0.3,-6.5 -0.3,-6.5 -0.5,-2.7 0,-5.1 0.9,-10 0.5,-2.4 1.3,-6.6 3.5,-11.7 1.3,-3 3.3,-7 6.8,-11.2 3.2,-2.8 8.2,-6.8 14.7,-10.3 10.4,-5.3 19.7,-7.2 19.9,-6.9 z"/><path id="path87-3" d="m 283.98999,451.29899 c 0.2,0.3 -6.3,1.7 -14.9,6 -1.1,0.5 -2.2,1.1 -3.6,1.9 -3.8,2.1 -12.3,7 -18.2,16.6 -0.3,0.3 -1.1,1.7 -2.1,3.6 -8.1,16.3 -4.7,32.5 -6.2,32.7 -0.5,0 -0.9,-1.4 -1.1,-2.4 -0.6,-2.5 -2.7,-10.4 2.4,-25.3 0.9,-2.7 2.4,-6.3 4.6,-10.4 2.5,-3.6 4.9,-6.5 6.8,-8.2 0.2,-0.2 0.2,-0.2 0.3,-0.3 9.5,-9.3 25.3,-13.1 25.3,-13.1 3.5,-0.9 6.7,-1.4 6.7,-1.1 z" class="steel_chastity"/><ellipse transform="rotate(-87.809822)" cx="-500.91162" cy="259.28619" rx="2.100064" ry="16.000488" id="ellipse91-0"/><ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-501.42453" cy="258.74768" rx="1.900058" ry="15.800483" id="ellipse93-39"/><ellipse transform="rotate(-1.8914744)" cx="270.36884" cy="460.1936" rx="1.4000628" ry="12.600566" id="ellipse97-9"/><ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="270.08469" cy="459.78339" rx="1.3000582" ry="12.500561" id="ellipse99-6"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Cage_6.tw b/src/art/vector_revamp/layers/Chastity_Cage_6.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9bee3058e19d2db989d1bd146382f28de3f22966
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Cage_6.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Cage_6 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><ellipse id="ellipse9-5" ry="2.5001018" rx="14.00057" cy="563.46527" cx="223.78876" transform="rotate(-0.51731229)"/><ellipse id="ellipse11-6" ry="2.3000937" rx="13.800563" cy="564.05988" cx="223.18347" class="steel_chastity" transform="rotate(-0.51731229)"/><ellipse transform="rotate(-17.980187)" cx="109.78678" cy="517.46411" rx="2.100081" ry="18.100698" id="ellipse17-0"/><ellipse transform="rotate(-17.980187)" class="steel_chastity" cx="109.40092" cy="516.70447" rx="1.9000733" ry="18.100698" id="ellipse19-46"/><ellipse transform="rotate(-26.992949)" cx="15.549369" cy="527.31976" rx="2.5001056" ry="20.900883" id="ellipse23-6"/><ellipse transform="rotate(-26.992949)" class="steel_chastity" cx="15.118171" cy="526.62225" rx="2.300097" ry="20.700874" id="ellipse25-75"/><ellipse transform="rotate(-54.237185)" cx="-253.00562" cy="471.60324" rx="2.4998667" ry="21.798836" id="ellipse29-8"/><ellipse transform="rotate(-54.237185)" class="steel_chastity" cx="-253.51361" cy="470.8566" rx="2.2998772" ry="21.598848" id="ellipse31-72"/><ellipse transform="rotate(-80.822144)" cx="-465.65756" cy="305.72757" rx="2.500005" ry="20.900042" id="ellipse35-29"/><ellipse transform="rotate(-80.822144)" class="steel_chastity" cx="-466.23138" cy="304.94336" rx="2.3000047" ry="20.700043" id="ellipse37-9"/><ellipse transform="rotate(-0.44003305)" cx="223.67113" cy="546.64923" rx="2.5000737" ry="19.100563" id="ellipse41-0"/><ellipse transform="rotate(-0.44003305)" class="steel_chastity" cx="223.07713" cy="545.84473" rx="2.3000679" ry="18.900557" id="ellipse43-2"/><path id="path49-21" d="m 249.25,544.3 c -1,10.5 -6.2,18.5 -7.4,18.1 -1.2,-0.2 1.9,-8.4 2.7,-18.7 1,-10.3 -0.8,-18.5 0.8,-18.3 1.2,-0.1 4.9,8.3 3.9,18.9 z"/><path id="path51-5" d="m 248.65,543.5 c -0.8,10.5 -5.8,18.3 -6.8,18.1 -1.2,-0.2 1.9,-8.2 2.5,-18.5 0.8,-10.3 -1,-18.3 0.4,-18.1 1,-0.2 4.7,8.1 3.9,18.5 z" class="steel_chastity"/><path id="path57-1" d="m 211.85,544.6 c 0.8,9.9 3.7,17.5 2.5,18.7 -1,1.2 -6.6,-6 -7.6,-18.3 -1,-12.1 3.5,-21.8 4.7,-20.9 1.2,1.1 -0.6,10.6 0.4,20.5 z"/><path id="path59-49" d="m 212.45,544.6 c 0.8,9.7 3.5,17 2.5,18.1 -1,1.2 -6.2,-6 -7.2,-17.5 -1,-11.7 3.3,-21 4.3,-20.1 1.1,0.6 -0.6,9.8 0.4,19.5 z" class="steel_chastity"/><ellipse transform="rotate(-12.809092)" cx="167.35036" cy="504.03577" rx="1.7999737" ry="16.799755" id="ellipse63-7"/><ellipse transform="rotate(-12.809092)" class="steel_chastity" cx="167.05159" cy="503.56573" rx="1.5999768" ry="16.599758" id="ellipse65-5"/><ellipse transform="rotate(-0.51731)" cx="222.5524" cy="545.35284" rx="18.700764" ry="2.5001018" id="ellipse69-7"/><ellipse transform="rotate(-0.51731)" class="steel_chastity" cx="221.74893" cy="545.74579" rx="18.500753" ry="2.3000937" id="ellipse71-0"/><ellipse transform="rotate(-41.042549)" cx="-125.04724" cy="515.07556" rx="2.4999266" ry="21.599365" id="ellipse75-8"/><ellipse transform="rotate(-41.042549)" class="steel_chastity" cx="-125.60838" cy="514.41785" rx="2.2999322" ry="21.39937" id="ellipse77-04"/><ellipse transform="rotate(-68.216677)" cx="-372.95468" cy="397.76074" rx="2.5000165" ry="21.800142" id="ellipse81-9"/><ellipse transform="rotate(-68.216677)" class="steel_chastity" cx="-373.46225" cy="396.95178" rx="2.3000152" ry="21.600143" id="ellipse83-61"/><path id="path85-04" d="m 282.35,452.3 c 0.2,0.4 -11.5,3.1 -25.3,12.3 -4.9,3.3 -10.3,6.8 -15.6,13.4 -6.8,8.6 -9.4,16.8 -10.1,18.9 -1.8,5.7 -2.3,11.5 -2.7,15.6 -0.4,4.5 -0.8,11.3 -1,11.3 0,0 0,0 0,-0.2 v 0 l 0.6,0.2 c 0,0.2 -0.8,0.4 -1.2,0.2 -0.8,-0.4 -0.8,-1.6 -1,-1.9 -0.6,-5.8 -0.4,-8 -0.4,-8 -0.6,-3.3 0,-6.2 1.2,-12.3 0.6,-2.9 1.6,-8.2 4.3,-14.4 1.6,-3.7 4.1,-8.6 8.4,-13.8 3.9,-3.5 10.1,-8.4 18.1,-12.7 13,-6.7 24.5,-9 24.7,-8.6 z"/><path id="path87-2" d="m 282.55,452.3 c 0.2,0.4 -7.8,2.1 -18.3,7.4 -1.4,0.6 -2.7,1.4 -4.5,2.3 -4.7,2.5 -15.2,8.6 -22.4,20.5 -0.4,0.4 -1.4,2.1 -2.5,4.5 -9.9,20.1 -5.8,40.1 -7.6,40.3 -0.6,0 -1.2,-1.8 -1.4,-2.9 -0.8,-3.1 -3.3,-12.9 2.9,-31.2 1.2,-3.3 2.9,-7.8 5.7,-12.9 3.1,-4.5 6,-8 8.4,-10.1 0.2,-0.2 0.2,-0.2 0.4,-0.4 11.7,-11.5 31.2,-16.2 31.2,-16.2 4.2,-1.1 8.1,-1.7 8.1,-1.3 z" class="steel_chastity"/><ellipse transform="rotate(-87.809822)" cx="-516.20825" cy="248.2253" rx="2.5000763" ry="19.700602" id="ellipse91-2"/><ellipse transform="rotate(-87.809822)" class="steel_chastity" cx="-516.70093" cy="247.56767" rx="2.3000703" ry="19.500595" id="ellipse93-05"/><ellipse transform="rotate(-1.8914744)" cx="269.29996" cy="461.05957" rx="1.8000808" ry="15.6007" id="ellipse97-2"/><ellipse transform="rotate(-1.8914744)" class="steel_chastity" cx="268.91949" cy="460.44696" rx="1.6000718" ry="15.400691" id="ellipse99-9"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Chastity_Vagina.tw b/src/art/vector_revamp/layers/Chastity_Vagina.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f6f9d1c5e941e8aa1b8d94fd2fd0573a6c200e20
--- /dev/null
+++ b/src/art/vector_revamp/layers/Chastity_Vagina.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Chastity_Vagina [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path3078" d="m 246.27344,419.55409 38.26539,1.65534 50.70034,-17.16757 c -9.527,20.69304 -26.8295,38.13961 -29.60049,58.02694 -3.81473,4.94851 -11.42323,6.76119 -18.77833,0.13792 -12.59782,-13.26169 -20.10126,-26.49351 -40.58691,-42.65263 z" class="shadow"/><path class="steel_chastity" d="m 246.27344,419.55409 38.26539,1.65534 50.70034,-17.16757 c -10.62636,19.22723 -27.00876,37.9006 -29.60049,58.02694 -4.44975,4.2738 -12.12093,6.01989 -18.77833,0.13792 -12.1636,-13.34853 -19.37318,-26.63913 -40.58691,-42.65263 z" id="path7-68" sodipodi:nodetypes="cccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Clavicle.tw b/src/art/vector_revamp/layers/Clavicle.tw
new file mode 100644
index 0000000000000000000000000000000000000000..deb07a5799631c02c1be90f5457b9a4dfcdd04dd
--- /dev/null
+++ b/src/art/vector_revamp/layers/Clavicle.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Clavicle [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 309.9875,184.0875 c 14.75,-2.5125 17.4,-1.9875 45.45,-5.375 -27.27187,3.9625 -35,4.3375 -45.45,5.375 z" class="shadow" id="XMLID_511_" sodipodi:nodetypes="ccc"/><path d="m 297.39343,185.90351 c -10.35625,0.46563 -15.06859,3.45066 -23.39359,4.91628 7.69063,-2.24062 15.15922,-4.91628 23.39359,-4.91628 z" class="shadow" id="XMLID_546_" sodipodi:nodetypes="ccc"/><path d="m 313.8375,183.4375 c 10.06542,-14.75429 4.91406,-12.50942 11.3875,-27.5625 -4.64445,12.75714 -1.92662,15.28512 -11.3875,27.5625 z" class="shadow" id="XMLID_511_-1" sodipodi:nodetypes="ccc"/><path d="m 302.62124,184.29159 c -0.67705,-3.9108 -0.64175,-6.21768 -2.35616,-8.91389 1.38684,2.4846 1.37673,4.45479 2.35616,8.91389 z" class="shadow" id="XMLID_511_-1-8" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Clit_Piercing.tw b/src/art/vector_revamp/layers/Clit_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7f53443727af934c471d87303c4e70f702fdffeb
--- /dev/null
+++ b/src/art/vector_revamp/layers/Clit_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Clit_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="450.47501" cx="291.67499" class="steel_piercing" id="XMLID_537_"/><circle r="1.2" cy="450.97501" cx="286.97501" class="steel_piercing" id="XMLID_538_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Clit_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Clit_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a8d9180e34f6bdf75c01c63629af088e2b0ad9bf
--- /dev/null
+++ b/src/art/vector_revamp/layers/Clit_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Clit_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="449.35001" cx="291.67499" class="steel_piercing" id="XMLID_534_"/><circle r="1.2" cy="449.85001" cx="286.97501" class="steel_piercing" id="XMLID_535_"/><path d="m 287.375,450.15 c -0.1,-0.1 -3.5,1.9 -3.2,5.1 0.3,2.7 2.9,4.5 5.6,4.4 2.6,-0.2 4.9,-2.4 4.9,-4.9 0,-3.2 -3.6,-5 -3.7,-4.8 -0.1,0.2 2.5,2.1 2.1,4.5 -0.2,1.6 -1.9,3.6 -4.1,3.6 -2,-0.1 -3.4,-1.7 -3.6,-3.2 -0.4,-2.6 2.1,-4.7 2,-4.7 z" class="steel_piercing" id="XMLID_536_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Clit_Piercing_Smart.tw b/src/art/vector_revamp/layers/Clit_Piercing_Smart.tw
new file mode 100644
index 0000000000000000000000000000000000000000..53fb015923ced8f261a25052128e343be79c53c1
--- /dev/null
+++ b/src/art/vector_revamp/layers/Clit_Piercing_Smart.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Clit_Piercing_Smart [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="1.2" cy="450.0957" cx="291.85547" class="steel_piercing" id="XMLID_539_"/><circle r="1.2" cy="450.5957" cx="287.15549" class="steel_piercing" id="XMLID_540_"/><path d="m 287.35549,450.69569 c -0.1,-0.1 -2.3,3.3 -1.1,5.5 1.4,2.7 6.4,2.1 7.4,-0.8 0.8,-2.4 -1.6,-5.4 -1.8,-5.3 -0.1,0.1 1.4,2.5 0.5,4.4 -1,2.1 -3.6,2.3 -4.9,0.3 -1.2,-1.8 0,-4 -0.1,-4.1 z" class="steel_piercing" id="XMLID_541_"/><rect height="7.3005033" width="7.3005033" class="smart_piercing" transform="rotate(41.517924)" y="149.45445" x="519.35999" id="XMLID_542_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Cowbell.tw b/src/art/vector_revamp/layers/Collar_Cowbell.tw
new file mode 100644
index 0000000000000000000000000000000000000000..fa7e679ab41f23da64037dced55848dcc555823b
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Cowbell.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Cowbell [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path9-8" d="m 300.925,176.875 c 1.8,1 23.0875,-2.8375 32.6875,-8.3375 0.3,-0.2 0.6,0 0.7,0.3 l 1.8875,2.71875 c 0,0.2 -0.1,0.4 -0.2,0.5 -5.6,3.3 -26.1375,9.51875 -29.4375,9.51875 -5.2,0 -6.5375,0.2 -7.0375,-0.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.4 l 0.9,-3.4 c 0,-0.4 0.3,-0.5 0.6,-0.4 z" sodipodi:nodetypes="cccccscccc"/><path d="m 297.17442,186.03142 9.80069,2.63749 2.01146,23.34275 -22.06661,-4.46708 -2.81659,-5.63621 z" id="polygon12"/><path id="path14" d="m 304.28395,193.89936 -6.61047,-1.70345 2.965,-11.16552 6.59411,1.80211 z m -5.23045,-2.69116 4.37409,1.13019 2.35903,-8.73184 -4.37409,-1.13019 z"/><path id="path16" d="m 303.97048,192.73243 -6.79143,-1.8348 2.73557,-10.39263 6.79143,1.8348 z m -5.34545,-2.60885 4.47274,1.14653 2.14596,-8.0576 -4.47275,-1.14653 z" class="steel_chastity"/><path style="fill:#bababa" d="m 297.07576,186.01507 9.32377,2.45711 1.11893,18.32943 -23.41509,-4.89324 z" id="polygon18"/><path d="m 302.32515,180.06063 -0.85064,3.30581 2.90499,0.74858 0.85064,-3.3058 z" id="line20"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Gold_Heavy.tw b/src/art/vector_revamp/layers/Collar_Gold_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..aa0038027aaed7b99ea9aee207289f8e65add815
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Gold_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Gold_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 342.07604,173.74841 c 7.7e-4,0.44722 -0.1327,0.84994 -0.1768,1.20779 -2.98271,7.87613 -33.43077,15.30497 -36.83077,15.00497 -6.1,-0.5 -7.7,-5.8 -7.9,-6.3 -0.7,-2.1 -0.5,-5.2 0.8,-6.4 1.3,-1.4 2.5,-1.4 3.3,0.7 -0.90837,0.3063 19.4784,5.06534 35.16441,-8.98819 0.62323,-1.65577 2.32272,-1.61399 3.84618,0.0828 1.12036,1.33971 1.83915,3.21676 1.79698,4.69264" id="path7-2" style="fill:#f2f24c" sodipodi:nodetypes="ccccccccc"/><path d="m 305.36847,189.56117 c -6,0 -7.8,-4.9 -8,-5.3 -0.8,-1.9 -0.7,-4.8 0.5,-6.1 1.2,-1.4 2.4,-1.5 3.2,0.4 -0.48772,0.48643 14.15539,5.63962 34.55935,-9.63152 1.35866,-1.01687 2.18848,-1.65847 3.66668,-0.27467 1.52307,1.47317 2.28751,3.88681 1.75364,5.4977 -2.58037,7.786 -32.37967,15.40849 -35.67967,15.40849 z" id="path9-88" style="fill:#f7d548" sodipodi:nodetypes="scccscss"/><path d="m 305.03588,194.23829 c -0.35,0 -0.7,-0.05 -1.0375,-0.1375 -0.3375,-0.0875 -0.6625,-0.2125 -0.9625,-0.3625 -0.65,-0.35 -1.15,-0.875 -1.4875,-1.4875 -0.3375,-0.6125 -0.5125,-1.3125 -0.5125,-2.0125 0,-0.35 0.05,-0.7 0.1375,-1.0375 0.0875,-0.3375 0.2125,-0.6625 0.3625,-0.9625 0.2,-0.35 0.45,-0.675 0.7375,-0.95 0.2875,-0.275 0.6125,-0.5 0.9625,-0.65 0.1,-0.05 0.225,-0.05 0.35,-0.0125 0.125,0.0375 0.25,0.1125 0.35,0.2125 0.05,0.1 0.05,0.225 0.0125,0.35 -0.0375,0.125 -0.1125,0.25 -0.2125,0.35 -0.25,0.15 -0.5,0.325 -0.725,0.525 -0.225,0.2 -0.425,0.425 -0.575,0.675 -0.15,0.25 -0.25,0.5 -0.3125,0.75 -0.0625,0.25 -0.0875,0.5 -0.0875,0.75 0,0.55 0.15,1.075 0.4125,1.5375 0.2625,0.4625 0.6375,0.8625 1.0875,1.1625 0.25,0.15 0.5,0.25 0.75,0.3125 0.25,0.0625 0.5,0.0875 0.75,0.0875 0.55,0 1.075,-0.15 1.5375,-0.4125 0.4625,-0.2625 0.8625,-0.6375 1.1625,-1.0875 0.15,-0.25 0.25,-0.5 0.3125,-0.75 0.0625,-0.25 0.0875,-0.5 0.0875,-0.75 0,-0.55 -0.15,-1.075 -0.4125,-1.5375 -0.2625,-0.4625 -0.6375,-0.8625 -1.0875,-1.1625 -0.1,-0.05 -0.175,-0.15 -0.2125,-0.275 -0.0375,-0.125 -0.0375,-0.275 0.0125,-0.425 0.05,-0.1 0.15,-0.175 0.275,-0.2125 0.125,-0.0375 0.275,-0.0375 0.425,0.0125 0.65,0.35 1.15,0.875 1.4875,1.4875 0.3375,0.6125 0.5125,1.3125 0.5125,2.0125 0,0.35 -0.05,0.7 -0.1375,1.0375 -0.0875,0.3375 -0.2125,0.6625 -0.3625,0.9625 -0.4,0.6 -0.925,1.1 -1.5375,1.45 -0.6125,0.35 -1.3125,0.55 -2.0625,0.55 z" id="path11-8" style="fill:#fefff2" sodipodi:nodetypes="sscssscscscscssssscssscssscscscssscss"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Maid.tw b/src/art/vector_revamp/layers/Collar_Maid.tw
new file mode 100644
index 0000000000000000000000000000000000000000..8a19b8d254b080abc6b4232a5dc286bacfb0083c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Maid.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Maid [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1313" class="shadow" d="m 331.85675,162.02243 1.93544,5.9919 c 0.0226,0.004 0.34362,1.06634 -0.055,1.40725 -0.38339,0.53019 -1.38615,0.29933 -1.37171,0.26757 0.054,0 0.46202,1.5678 -0.081,2.03434 -0.5322,0.56735 -2.02139,-0.001 -2.00889,-0.0302 0.037,0 0.38254,2.10628 -0.42608,2.60581 -0.78793,0.53523 -2.40476,-0.4653 -2.37303,-0.48513 0.0384,0.006 0.2673,1.80307 -0.43822,2.20841 -0.62218,0.58415 -2.41384,-0.43536 -2.42937,-0.46642 0.0803,0.0301 -0.0134,1.84831 -0.78489,2.15506 -0.80428,0.38323 -2.20648,-0.66689 -2.17531,-0.67858 0.0329,-0.007 0.0424,1.7723 -0.78489,2.08566 -0.84412,0.36119 -2.00797,-0.92447 -2.00797,-0.92447 0.0267,0.0419 -0.14902,1.64182 -0.81051,1.80958 -0.7509,0.31434 -1.99714,-0.81291 -1.94526,-0.84626 0.0447,0.0149 -0.27635,1.5613 -1.02005,1.7147 -0.73481,0.23969 -1.84326,-0.86986 -1.8042,-0.89089 0.0219,0.0188 -0.56384,1.18152 -1.17391,1.26017 -0.59199,0.16577 -1.4985,-0.60773 -1.4798,-0.62228 0.0272,0.0204 -0.72132,1.21882 -1.3999,1.28632 -0.6705,0.15933 -1.69372,-0.67933 -1.66134,-0.70288 0.0336,0.0336 -0.76566,1.10921 -1.41643,1.15247 -0.72271,0.15706 -1.81336,-0.69065 -1.78527,-0.70937 0.0206,0.0112 -0.93563,1.11098 -1.68979,1.08277 -0.59807,0.0713 -1.44494,-0.80263 -1.43635,-0.81265 0.0325,0.013 -0.27324,0.85093 -0.68009,0.76955 -0.29439,-0.0184 -0.34132,-0.69275 -0.30755,-0.71205 l -0.19939,-6.02293 c -0.003,0 -0.13477,-0.32166 0.032,-0.36489 0.17113,-0.0761 0.32878,0.27634 0.30666,0.29109 -0.0345,-0.0115 0.28294,-0.64768 0.6928,-0.6998 0.57869,0.27858 1.97754,0.7297 1.97754,0.7297 0,0 1.62702,-1.34485 2.2488,-1.76753 0.31994,0.0903 0.45771,0.27246 0.45497,0.27442 -0.008,-0.001 0.2782,-0.88845 0.71952,-0.99561 0.43595,-0.14269 1.12798,0.42903 1.11321,0.43747 -0.0137,0 0.0724,-1.00959 0.51286,-1.15604 0.46773,-0.19935 1.28089,0.57501 1.26076,0.59917 -0.0138,-0.0111 0.12563,-1.17419 0.61384,-1.32805 0.56719,-0.23879 1.61963,0.58765 1.57985,0.61252 -0.0346,0.002 0.1956,-1.47265 0.90107,-1.71051 0.68508,-0.29172 1.96956,0.70712 1.95558,0.72389 -0.0142,0 0.34612,-1.822 1.14808,-2.09134 0.81177,-0.31928 2.17473,0.8304 2.14422,0.85074 -0.0128,0.003 0.0174,-1.62685 0.71557,-1.9026 0.70359,-0.28524 1.8785,0.81789 1.83908,0.83103 -0.0322,-0.0138 0.0235,-1.70274 0.76143,-1.95615 0.72075,-0.31561 2.02146,0.63985 1.97329,0.65017 -0.0347,-0.008 -0.072,-1.35954 0.51405,-1.61896 0.56598,-0.34388 1.72256,0.36114 1.69497,0.38567 -0.0272,0.006 -0.16412,-1.28353 0.39216,-1.62524 0.53723,-0.37554 1.7904,0.19188 1.77026,0.20627 -0.0208,-0.0115 -0.16702,-1.19259 0.30242,-1.43107 0.44979,-0.29501 1.37419,0.20433 1.34972,0.21657 -0.0104,-0.001 -0.16864,-1.03615 0.25185,-1.27595 0.39853,-0.29034 1.22742,0.17064 1.2032,0.19217 -0.0264,-0.0192 -0.0519,-0.94646 0.35068,-1.09934 0.24481,-0.22205 0.8515,-0.0374 1.03033,0.0948 z"/><path d="m 331.85675,162.02243 1.93544,5.9919 c 0,0 0.2505,1.05082 -0.055,1.40725 -0.30317,0.35371 -1.37171,0.26757 -1.37171,0.26757 0,0 0.41185,1.5678 -0.081,2.03434 -0.48636,0.4604 -2.00889,-0.0302 -2.00889,-0.0302 0,0 0.29857,2.10628 -0.42608,2.60581 -0.66474,0.45823 -2.37303,-0.48513 -2.37303,-0.48513 0,0 0.1843,1.78924 -0.43822,2.20841 -0.68398,0.46055 -2.42937,-0.46642 -2.42937,-0.46642 0,0 -0.0997,1.81595 -0.78489,2.15506 -0.68075,0.33691 -2.17531,-0.67858 -2.17531,-0.67858 0,0 -0.0978,1.80346 -0.78489,2.08566 -0.68161,0.27994 -2.00797,-0.92447 -2.00797,-0.92447 0,0 -0.19423,1.57078 -0.81051,1.80958 -0.65935,0.25549 -1.94526,-0.84626 -1.94526,-0.84626 0,0 -0.38234,1.52597 -1.02005,1.7147 -0.64315,0.19034 -1.8042,-0.89089 -1.8042,-0.89089 0,0 -0.61261,1.13972 -1.17391,1.26017 -0.5232,0.11227 -1.4798,-0.62228 -1.4798,-0.62228 0,0 -0.77548,1.1782 -1.3999,1.28632 -0.59249,0.10259 -1.66134,-0.70288 -1.66134,-0.70288 0,0 -0.8148,1.06007 -1.41643,1.15247 -0.63292,0.0972 -1.78527,-0.70937 -1.78527,-0.70937 0,0 -1.02107,1.06438 -1.68979,1.08277 -0.54989,0.0151 -1.43635,-0.81265 -1.43635,-0.81265 0,0 -0.34202,0.82342 -0.68009,0.76955 -0.25532,-0.0407 -0.30755,-0.71205 -0.30755,-0.71205 l -0.19939,-6.02293 c 0,0 -0.0822,-0.32166 0.032,-0.36489 0.13181,-0.0499 0.30666,0.29109 0.30666,0.29109 0,0 0.37519,-0.61693 0.6928,-0.6998 0.57869,0.27858 1.97754,0.7297 1.97754,0.7297 0,0 1.62702,-1.34485 2.2488,-1.76753 0.25782,0.13468 0.45497,0.27442 0.45497,0.27442 0,0 0.32661,-0.88038 0.71952,-0.99561 0.38258,-0.1122 1.11321,0.43747 1.11321,0.43747 0,0 0.11755,-1.00959 0.51286,-1.15604 0.43632,-0.16165 1.26076,0.59917 1.26076,0.59917 0,0 0.16167,-1.14536 0.61384,-1.32805 0.52368,-0.21159 1.57985,0.61252 1.57985,0.61252 0,0 0.29924,-1.48005 0.90107,-1.71051 0.64912,-0.24857 1.95558,0.72389 1.95558,0.72389 0,0 0.39983,-1.822 1.14808,-2.09134 0.7235,-0.26043 2.14422,0.85074 2.14422,0.85074 0,0 0.0897,-1.64291 0.71557,-1.9026 0.62134,-0.25782 1.83908,0.83103 1.83908,0.83103 0,0 0.12856,-1.6577 0.76143,-1.95615 0.62639,-0.29539 1.97329,0.65017 1.97329,0.65017 0,0 0.0226,-1.33772 0.51405,-1.61896 0.5029,-0.28781 1.69497,0.38567 1.69497,0.38567 0,0 -0.0649,-1.30643 0.39216,-1.62524 0.48727,-0.33985 1.77026,0.20627 1.77026,0.20627 0,0 -0.0995,-1.15508 0.30242,-1.43107 0.37563,-0.25793 1.34972,0.21657 1.34972,0.21657 0,0 -0.10379,-1.02804 0.25185,-1.27595 0.33319,-0.23226 1.2032,0.19217 1.2032,0.19217 0,0 0.03,-0.88689 0.35068,-1.09934 0.28751,-0.19049 1.03033,0.0948 1.03033,0.0948 z" class="shadow" id="path1311" sodipodi:nodetypes="ccacacacacacacacacacacacacaccacccccacacacacacacacacacacacacc"/><path d="m 331.97234,162.2961 c 1.04474,1.70444 1.78177,3.48654 1.74481,5.48322 -4.80523,6.73958 -20.24123,13.2466 -33.48864,14.05592 -0.33393,-1.8002 -0.45469,-3.6478 -0.19853,-5.57779 0.85173,-0.3414 1.73617,-0.50846 2.29254,-0.58193 0.359,0.079 0.73339,0.22405 0.73339,0.22405 0,0 0.51119,-0.41895 0.73589,-0.60563 19.93433,-5.50204 22.69697,-9.57458 28.18054,-12.99784 z" class="shadow" id="path1309" sodipodi:nodetypes="cccccccc"/><path sodipodi:nodetypes="cccccccc" id="path1108-7-2-3" class="shadow" d="m 331.97234,162.2961 c 0.90255,1.73604 1.6591,3.5138 1.74481,5.48322 -5.06089,6.56914 -20.09695,12.90821 -33.48864,14.05592 -0.2453,-1.81793 -0.33592,-3.67155 -0.19853,-5.57779 0.68574,-0.17541 1.64124,-0.41353 2.29254,-0.58193 0.359,0.079 0.73339,0.22405 0.73339,0.22405 0,0 0.51119,-0.41895 0.73589,-0.60563 20.41701,-5.32652 22.8144,-9.53188 28.18054,-12.99784 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Neck_Corset.tw b/src/art/vector_revamp/layers/Collar_Neck_Corset.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9f8b960ec91990baa7a83715532914d7b7a85eee
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Neck_Corset.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Neck_Corset [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 355.58016,177.90382 c -16.75489,-1.68047 -24.26783,-1.85552 -25.04266,-28.06007 l 0.0614,-2.54085 c -4.44209,8.81484 -9.17434,14.60849 -14.23043,18.88685 -4.61614,3.90609 -9.48739,6.51233 -13.25962,9.74301 l -2.79922,-0.84568 0.24144,6.93439 c -5.15857,4.49938 -19.55545,5.94373 -26.62292,8.06291 -0.5,0.3 -0.26562,0.32812 0.23438,0.52812 4.47439,0.22267 8.86726,0.68988 12.875,2.3125 1.1,0.6 1.9,1.6 2.3,2.8 -2.64855,5.11669 -3.20471,10.23338 -4.70413,15.35007 5.7721,-5.57757 11.41269,-11.23251 19.12659,-15.66784 1.4,-0.8 2.9,-1.4 4.4,-1.8 16.28714,-6.9193 28.71122,-10.2157 47.6202,-14.30341 0.7,-0.2 0.6,-1.3 -0.2,-1.4 z" id="path1012" sodipodi:nodetypes="cccsccccccccccccc"/><path class="steel_chastity" d="m 305.2,184.4 c -0.7,0 -1.4,-0.2 -2,-0.5 -1.3,-0.7 -2,-2.1 -2,-3.5 0,-0.7 0.2,-1.4 0.5,-2 0.4,-0.7 1,-1.3 1.7,-1.6 0.2,-0.1 0.5,0 0.7,0.2 0.1,0.2 0,0.5 -0.2,0.7 -0.5,0.3 -1,0.7 -1.3,1.2 -0.3,0.5 -0.4,1 -0.4,1.5 0,1.1 0.6,2.1 1.5,2.7 0.5,0.3 1,0.4 1.5,0.4 1.1,0 2.1,-0.6 2.7,-1.5 0.3,-0.5 0.4,-1 0.4,-1.5 0,-1.1 -0.6,-2.1 -1.5,-2.7 -0.2,-0.1 -0.3,-0.4 -0.2,-0.7 0.1,-0.2 0.4,-0.3 0.7,-0.2 1.3,0.7 2,2.1 2,3.5 0,0.7 -0.2,1.4 -0.5,2 -0.8,1.2 -2.2,2 -3.6,2 z" id="path8-4"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Pretty_Jewelry.tw b/src/art/vector_revamp/layers/Collar_Pretty_Jewelry.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4370b8bf6012f170815556c2e8d955d6c7b4dd4d
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Pretty_Jewelry.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Pretty_Jewelry [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 299.76916,182.31783 c 0,0 -0.1,0 -0.1,0 -0.3,-0.2 -0.7,-1.3 -0.7,-1.7 -0.1,-0.3 -0.4,-1.5 -0.2,-1.8 v -0.1 l 0.1,-0.1 c 0.1,0 0.1,0 0.2,0 0.3,0.2 0.7,1.3 0.7,1.7 v 0 c 0.1,0.3 0.4,1.5 0.2,1.8 v 0.1 l -0.2,0.1 c 0,0 0,0 0,0 z m -0.7,-2.8 c 0,0.3 0.1,0.6 0.2,1 0.1,0.4 0.2,0.8 0.3,1 0,-0.3 -0.1,-0.6 -0.2,-1 v 0 c -0.1,-0.5 -0.2,-0.8 -0.3,-1 z" id="path7-4"/><path d="m 300.56916,185.71783 c -0.6,0 -1.2,-0.7 -1.5,-1.8 -0.4,-1.2 -0.2,-2.4 0.5,-2.7 0.7,-0.3 1.5,0.5 1.8,1.7 v 0 c 0.4,1.2 0.2,2.4 -0.5,2.7 -0.1,0 -0.2,0.1 -0.3,0.1 z m -0.8,-4.2 c -0.1,0 -0.1,0 -0.2,0 -0.5,0.2 -0.6,1.2 -0.3,2.2 0.3,1 1,1.7 1.4,1.5 0.5,-0.2 0.6,-1.2 0.3,-2.2 v 0 c -0.2,-0.9 -0.8,-1.5 -1.2,-1.5 z" id="path9-49"/><path d="m 301.96916,189.21783 c -0.2,0 -0.4,-0.2 -0.9,-2.1 -0.6,-2.2 -0.4,-2.2 -0.3,-2.3 0.2,-0.1 0.3,0.2 0.5,0.7 0.1,0.4 0.3,0.9 0.4,1.4 0.7,2.2 0.5,2.2 0.3,2.3 0,0 0,0 0,0 z" id="path11-9"/><path d="m 303.16916,192.61783 c -0.6,0 -1.4,-0.7 -1.8,-1.8 -0.2,-0.6 -0.3,-1.2 -0.3,-1.6 0.1,-0.5 0.3,-0.9 0.6,-1 0.4,-0.1 0.8,0 1.2,0.3 0.4,0.3 0.7,0.8 0.9,1.4 0.5,1.2 0.3,2.4 -0.4,2.7 0,0 -0.1,0 -0.2,0 z m -1.1,-4.1 c -0.1,0 -0.1,0 -0.1,0 -0.2,0.1 -0.3,0.3 -0.4,0.7 0,0.4 0,0.9 0.2,1.5 0.4,1.1 1.2,1.7 1.6,1.5 0.4,-0.2 0.6,-1.1 0.2,-2.2 -0.2,-0.5 -0.5,-1 -0.8,-1.2 -0.3,-0.2 -0.5,-0.3 -0.7,-0.3 z" id="path13-3"/><path d="m 313.01655,195.31378 c -0.29028,-0.0758 -0.45854,-0.22303 -0.62681,-0.3703 -0.45428,-0.63532 0.0423,-1.74591 1.16566,-2.48621 1.12337,-0.7403 2.28873,-0.84954 2.74301,-0.21422 0.45428,0.63531 -0.0423,1.74591 -1.16566,2.48621 -0.75733,0.52578 -1.53565,0.73604 -2.1162,0.58452 z m 2.55404,-3.05399 c -0.48379,-0.12628 -1.16536,0.10923 -1.80068,0.56352 -0.87934,0.59729 -1.3254,1.51436 -1.01413,1.90566 0.28602,0.48805 1.25786,0.3283 2.13721,-0.26899 0.87934,-0.59729 1.3254,-1.51437 1.01413,-1.90566 -0.0463,-0.21877 -0.14301,-0.24403 -0.33653,-0.29453 z" id="path15"/><path d="m 318.44839,190.73719 c -0.19352,-0.0505 -0.29028,-0.0758 -0.36178,-0.19777 -0.47954,-0.53856 -0.10498,-1.57765 0.85012,-2.46522 0.95511,-0.88756 2.07422,-1.21557 2.55375,-0.67701 0.23977,0.26928 0.23551,0.68156 0.10924,1.16536 -0.22303,0.45854 -0.54281,0.89182 -0.95936,1.29985 -0.41655,0.40803 -0.9046,0.69405 -1.3674,0.88331 -0.31553,0.021 -0.63106,0.042 -0.82457,-0.009 z m 2.48254,-3.176 c -0.38704,-0.10101 -1.06861,0.1345 -1.75443,0.78229 -0.83309,0.81606 -1.15714,1.66164 -0.82061,1.95617 0.16826,0.14727 0.36178,0.19778 0.70256,0.08 0.43754,-0.0925 0.82884,-0.40377 1.22013,-0.71504 0.41654,-0.40803 0.71108,-0.74456 0.81209,-1.13159 0.10102,-0.38704 0.15153,-0.58056 -0.0167,-0.72782 0.0505,-0.19352 -0.0462,-0.21877 -0.14301,-0.24403 z" id="path17"/><path d="m 315.41907,192.84034 v 0 c -0.16827,-0.14727 -0.40804,-0.41655 1.42641,-1.90141 0.41655,-0.40803 0.9046,-0.69404 1.27064,-0.90856 0.48805,-0.28602 0.70682,-0.33227 0.87508,-0.185 l 0.0968,0.0253 -0.0253,0.0967 c -0.004,0.41229 -1.17814,1.34611 -1.54417,1.56062 -0.4418,0.50479 -1.71244,1.41335 -2.09947,1.31234 z m 2.64228,-2.20416 c -0.24402,0.14301 -0.61006,0.35752 -0.90459,0.69405 -0.3913,0.31127 -0.66058,0.55104 -0.92986,0.7908 0.24403,-0.143 0.61007,-0.35752 0.9046,-0.69404 0.39129,-0.31128 0.66057,-0.55104 0.92985,-0.79081 z" id="path19"/><path d="m 324.34303,185.97135 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21"/><path d="m 321.26745,187.85573 -0.0715,-0.12202 0.0253,-0.0968 c 0.0505,-0.19351 0.58907,-0.67305 1.64094,-1.53536 0.75733,-0.52579 1.66192,-1.21983 1.88069,-1.26608 l 0.0968,0.0252 0.0715,0.12201 -0.0253,0.0968 c -0.0505,0.19352 -0.58906,0.67305 -1.64093,1.53537 v 0 c -0.68582,0.64779 -1.56517,1.24508 -1.97746,1.24083 z" id="path23"/><path d="m 310.45428,196.81537 -0.0715,-0.12201 0.0253,-0.0968 c 0.0253,-0.0968 -0.021,-0.31553 1.30014,-1.41761 v 0 c 1.49367,-1.3671 1.56517,-1.24509 1.73344,-1.09782 0.16826,0.14726 0.23976,0.26928 -1.2539,1.63638 -1.4179,1.07682 -1.63667,1.12307 -1.73343,1.09782 z" id="path27"/><path d="m 304.16916,195.81783 v 0 c -0.2,-0.1 -0.5,-0.8 -0.8,-2 -0.5,-2.1 -0.4,-2.2 -0.2,-2.2 v 0 c 0.2,0 0.3,-0.1 0.9,2 0.3,1.2 0.4,1.9 0.3,2.1 v 0.1 z" id="path29"/><path id="path33" d="m 311.56916,198.41783 c -0.5,2.1 -2.9,4.3 -5.7,5.9 -1.7,-2 -3.1,-5.4 -2.8,-7.8 0.3,-2 2.7,-3.6 4.3,1.1 3,-4.5 4.7,-1.1 4.2,0.8 z"/><path id="path35" d="m 310.96916,198.11783 c -0.5,2 -2.8,4.1 -5.4,5.6 -1.6,-1.9 -2.9,-5.1 -2.6,-7.3 0.2,-1.9 2.5,-3.4 4,1 2.8,-4.3 4.4,-1.1 4,0.7 z" class="steel_chastity"/><rect x="337.68442" y="139.20795" transform="rotate(10.64922)" width="0.40000939" height="1.8000422" id="rect39"/><circle r="0.79999298" transform="rotate(-83.724979)" cx="-164.25607" cy="326.31647" id="ellipse41-6"/><path d="m 326.43427,183.10662 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43"/><path style="display:inline" d="m 328.8365,181.40598 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21-36"/><path style="display:inline" d="m 330.92774,178.54125 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43-6"/><path style="display:inline" d="m 333.24275,177.15598 c -0.19352,-0.0505 -0.29028,-0.0758 -0.45854,-0.22302 -0.23977,-0.26928 -0.33227,-0.70683 -0.206,-1.19062 0.12627,-0.48379 0.3493,-0.94233 0.74059,-1.2536 0.83309,-0.81607 1.95221,-1.14408 2.43174,-0.60552 0.23977,0.26928 0.33227,0.70683 0.206,1.19062 -0.12627,0.48379 -0.3493,0.94233 -0.74059,1.2536 v 0 c -0.41655,0.40803 -0.80784,0.71931 -1.24539,0.81181 -0.21877,0.0462 -0.5343,0.0672 -0.72781,0.0167 z m 2.07025,-3.18026 c -0.38704,-0.10101 -1.0686,0.1345 -1.63242,0.71079 -0.29453,0.33653 -0.61432,0.76981 -0.69008,1.06009 -0.0758,0.29027 -0.0548,0.6058 0.1135,0.75307 0.16826,0.14727 0.45853,0.22303 0.79932,0.10528 0.34078,-0.11776 0.80358,-0.30702 1.09811,-0.64355 0.29454,-0.33652 0.61432,-0.76981 0.69009,-1.06008 0.0758,-0.29028 0.0548,-0.60581 -0.1135,-0.75307 -0.0968,-0.0253 -0.16826,-0.14727 -0.26502,-0.17253 z" id="path21-34"/><path style="display:inline" d="m 335.33399,174.29125 c 0,0 -0.0715,-0.12201 -0.0715,-0.12201 -0.021,-0.31553 0.83735,-1.22835 1.00987,-1.49337 0.26928,-0.23977 1.12763,-1.15259 1.44316,-1.17358 l 0.0968,0.0252 0.0968,0.0252 c 0.0967,0.0253 0.0715,0.12202 0.0462,0.21878 0.021,0.31553 -0.83736,1.22835 -1.00988,1.49337 v 0 c -0.26928,0.23976 -1.12762,1.15258 -1.44315,1.17358 l -0.0968,-0.0252 -0.0715,-0.12202 c -0.0253,0.0968 0,0 0,0 z m 2.08274,-2.04015 c -0.24403,0.14301 -0.41655,0.40803 -0.80784,0.7193 -0.29454,0.33653 -0.56382,0.5763 -0.71108,0.74456 0.24402,-0.14301 0.41654,-0.40803 0.80784,-0.7193 v 0 c 0.26928,-0.23977 0.56381,-0.5763 0.71108,-0.74456 z" id="path43-0"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Retirement_Cruel.tw b/src/art/vector_revamp/layers/Collar_Retirement_Cruel.tw
new file mode 100644
index 0000000000000000000000000000000000000000..976c4a40b989e2f8e937d3ba24becc7a275e8654
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Retirement_Cruel.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Retirement_Cruel [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="steel_chastity" d="m 305.66645,184.3391 c -6.28524,0 -8.23193,-2.44977 -8.1875,-2.63125 -0.8,-0.8 -0.7,-2 0.5,-2.5 1.2,-0.6 2.51153,-0.69778 3.2,0.2 0.95461,1.24484 24.33056,-1.66153 35.65,-6.85 1.2,-0.5 2.7,-0.2 3.4,0.6 0.7,0.8 0.28345,2.06988 0.28345,2.06988 -1.41696,5.52614 -31.75546,9.11137 -34.84594,9.11137 z" id="path13-33" sodipodi:nodetypes="sccscscss"/><path d="m 302.07895,180.40785 h 7.2 l -0.5,2.9 h -6.2 z" id="polygon17"/><path id="path19-8" d="m 308.77895,180.90785 v 2.4 h -6.1 v -2.4 h 6.1 m 0.5,-0.5 -7.3,-0.1 0.2,3 h 7.1 z" class="steel_chastity"/><text id="text21" name="Collar_Text" x="302.81207" y="183.04065" style="font-size:1.96150005px;line-height:0%;font-family:sans-serif;fill:#ff0000">8888</text></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Retirement_Nice.tw b/src/art/vector_revamp/layers/Collar_Retirement_Nice.tw
new file mode 100644
index 0000000000000000000000000000000000000000..20c01876fef2a9f5c1653229ee8402cf6ca4b9f2
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Retirement_Nice.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Retirement_Nice [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 300.64144,184.10882 c 0,0 -0.1,0 -0.1,0 -0.3,-0.2 -0.7,-1.3 -0.7,-1.7 -0.1,-0.3 -0.4,-1.5 -0.2,-1.8 v -0.1 l 0.1,-0.1 c 0.1,0 0.1,0 0.2,0 0.3,0.2 0.7,1.3 0.7,1.7 v 0 c 0.1,0.3 0.4,1.5 0.2,1.8 v 0.1 l -0.2,0.1 c 0,0 0,0 0,0 z m -0.7,-2.8 c 0,0.3 0.1,0.6 0.2,1 0.1,0.4 0.2,0.8 0.3,1 0,-0.3 -0.1,-0.6 -0.2,-1 v 0 c -0.1,-0.5 -0.2,-0.8 -0.3,-1 z" id="path7-5"/><path d="m 301.44144,187.50882 c -0.6,0 -1.2,-0.7 -1.5,-1.8 -0.4,-1.2 -0.2,-2.4 0.5,-2.7 0.7,-0.3 1.5,0.5 1.8,1.7 v 0 c 0.4,1.2 0.2,2.4 -0.5,2.7 -0.1,0 -0.2,0.1 -0.3,0.1 z m -0.8,-4.2 c -0.1,0 -0.1,0 -0.2,0 -0.5,0.2 -0.6,1.2 -0.3,2.2 0.3,1 1,1.7 1.4,1.5 0.5,-0.2 0.6,-1.2 0.3,-2.2 v 0 c -0.2,-0.9 -0.8,-1.5 -1.2,-1.5 z" id="path9-02"/><path d="m 302.84144,191.00882 c -0.2,0 -0.4,-0.2 -0.9,-2.1 -0.6,-2.2 -0.4,-2.2 -0.3,-2.3 0.2,-0.1 0.3,0.2 0.5,0.7 0.1,0.4 0.3,0.9 0.4,1.4 0.7,2.2 0.5,2.2 0.3,2.3 0,0 0,0 0,0 z" id="path11-94"/><path d="m 304.04144,194.40882 c -0.6,0 -1.4,-0.7 -1.8,-1.8 -0.2,-0.6 -0.3,-1.2 -0.3,-1.6 0.1,-0.5 0.3,-0.9 0.6,-1 0.4,-0.1 0.8,0 1.2,0.3 0.4,0.3 0.7,0.8 0.9,1.4 0.5,1.2 0.3,2.4 -0.4,2.7 0,0 -0.1,0 -0.2,0 z m -1.1,-4.1 c -0.1,0 -0.1,0 -0.1,0 -0.2,0.1 -0.3,0.3 -0.4,0.7 0,0.4 0,0.9 0.2,1.5 0.4,1.1 1.2,1.7 1.6,1.5 0.4,-0.2 0.6,-1.1 0.2,-2.2 -0.2,-0.5 -0.5,-1 -0.8,-1.2 -0.3,-0.2 -0.5,-0.3 -0.7,-0.3 z" id="path13-35"/><path d="m 313.78193,195.91021 c -0.29138,-0.0714 -0.46183,-0.21615 -0.63228,-0.36089 -0.46373,-0.62844 0.0161,-1.74634 1.12834,-2.50337 1.11216,-0.75702 2.27576,-0.88368 2.73949,-0.25523 0.46374,0.62845 -0.0161,1.74635 -1.12833,2.50337 -0.74938,0.53706 -1.52447,0.75894 -2.10722,0.61612 z m 2.50807,-3.09186 c -0.48564,-0.11901 -1.16361,0.12666 -1.79205,0.59039 -0.87031,0.61038 -1.3026,1.53403 -0.98551,1.92062 0.29329,0.48372 1.26263,0.30945 2.13294,-0.30093 0.87031,-0.61038 1.3026,-1.53403 0.98551,-1.92062 -0.0495,-0.21806 -0.14664,-0.24186 -0.34089,-0.28946 z" id="path15-1"/><path d="m 319.14469,191.25287 c -0.19425,-0.0477 -0.29137,-0.0714 -0.3647,-0.19234 -0.48754,-0.53133 -0.12857,-1.5759 0.81315,-2.47766 0.94172,-0.90175 2.0558,-1.24647 2.54333,-0.71515 0.24378,0.26567 0.24568,0.67797 0.12666,1.1636 -0.21614,0.46182 -0.52941,0.89984 -0.9398,1.31407 -0.4104,0.41421 -0.89412,0.7075 -1.35403,0.90366 -0.31518,0.0257 -0.63036,0.0514 -0.82461,0.004 z m 2.43475,-3.21279 c -0.38851,-0.0952 -1.06648,0.15046 -1.74253,0.80846 -0.8208,0.82843 -1.13215,1.67875 -0.79126,1.96822 0.17045,0.14473 0.3647,0.19234 0.70369,0.0695 0.43611,-0.099 0.8227,-0.41613 1.20929,-0.73322 0.41039,-0.41422 0.69986,-0.75511 0.79508,-1.14362 0.0952,-0.3885 0.14282,-0.58275 -0.0276,-0.72748 0.0476,-0.19426 -0.0495,-0.21806 -0.14664,-0.24186 z" id="path17-7"/><path d="m 316.14717,193.4011 v 0 c -0.17044,-0.14474 -0.41421,-0.41039 1.39781,-1.92253 0.4104,-0.41422 0.89412,-0.7075 1.25691,-0.92747 0.48372,-0.29329 0.70177,-0.34281 0.87222,-0.19807 l 0.0971,0.0238 -0.0238,0.0971 c 0.002,0.4123 -1.15786,1.36358 -1.52065,1.58354 -0.4342,0.51134 -1.6673,1.34168 -2.0796,1.3436 z m 2.60902,-2.24344 c -0.24186,0.14664 -0.60465,0.36661 -0.89411,0.7075 -0.38659,0.31709 -0.65226,0.56086 -0.91792,0.80463 0.24186,-0.14664 0.60465,-0.36661 0.89411,-0.7075 0.38659,-0.3171 0.65226,-0.56087 0.91792,-0.80463 z" id="path19-4"/><path d="m 324.96737,186.39938 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3"/><path d="m 321.92033,188.32955 -0.0733,-0.12093 0.0238,-0.0971 c 0.0476,-0.19427 0.57892,-0.6818 1.61777,-1.55975 0.74938,-0.53706 1.64349,-1.24456 1.86155,-1.29408 l 0.0971,0.0238 0.0733,0.12092 -0.0238,0.0971 c -0.0476,0.19425 -0.57894,0.68178 -1.61779,1.55974 v 0 c -0.67605,0.65799 -1.64348,1.24456 -1.95866,1.27028 z" id="path23-1"/><path d="m 311.24241,197.44996 -0.0733,-0.12093 0.0238,-0.0971 c 0.0238,-0.0971 -0.0257,-0.31518 1.27879,-1.43691 v 0 c 1.47305,-1.38929 1.54638,-1.26836 1.71681,-1.12363 0.17045,0.14474 0.24378,0.26567 -1.22927,1.65496 -1.40163,1.09792 -1.61969,1.14743 -1.71681,1.12363 z" id="path25-4"/><path d="m 305.04144,197.50882 v 0 c -0.2,-0.1 -0.5,-0.8 -0.8,-2 -0.5,-2.1 -0.4,-2.2 -0.2,-2.2 v 0 c 0.2,0 0.3,-0.1 0.9,2 0.3,1.2 0.4,1.9 0.3,2.1 v 0.1 z" id="path27-6"/><path d="m 329.69595,180.96886 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9"/><path d="m 329.0675,181.43259 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31"/><path d="m 304.24144,196.80882 7.3,0.5 -0.2,3.5 -7.3,-0.4 z" id="polygon35"/><path id="path37-4" d="m 304.74144,197.40882 6.3,0.4 -0.1,2.5 -6.3,-0.4 0.1,-2.5 m -0.5,-0.6 -0.2,3.6 7.3,0.4 0.2,-3.6 z"/><rect id="rect41" height="3.399874" width="7.0997367" transform="rotate(3.3047751)" y="178.83395" x="315.06049"/><path id="path43-2" d="m 304.74144,197.30882 6.1,0.4 -0.1,2.4 -6.1,-0.4 0.1,-2.4 m -0.5,-0.6 -0.2,3.4 7.1,0.4 0.2,-3.4 z" class="steel_chastity"/><text transform="rotate(3.3047751)" name="Collar_Text" x="315.78552" y="181.51642" style="font-size:1.96150005px;line-height:0%;font-family:sans-serif;fill:#ff0000" id="text1009">8888</text><path style="display:inline" d="m 329.50389,181.73735 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3-5"/><path style="display:inline" d="m 334.23247,176.30683 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9-9"/><path style="display:inline" d="m 333.60402,176.77056 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31-3"/><path style="display:inline" d="m 333.76864,177.5389 c -0.19425,-0.0477 -0.29138,-0.0714 -0.46183,-0.21615 -0.24376,-0.26566 -0.3428,-0.70177 -0.22379,-1.1874 0.11901,-0.48563 0.33517,-0.94746 0.72176,-1.26454 0.82079,-0.82844 1.93487,-1.17316 2.42241,-0.64182 0.24377,0.26565 0.3428,0.70177 0.22378,1.18739 -0.11901,0.48563 -0.33516,0.94745 -0.72175,1.26455 v 0 c -0.4104,0.41421 -0.79698,0.7313 -1.23309,0.83034 -0.21806,0.0495 -0.53324,0.0752 -0.72749,0.0276 z m 2.02244,-3.21088 c -0.3885,-0.0952 -1.06647,0.15046 -1.6216,0.73513 -0.28947,0.34089 -0.60274,0.77891 -0.67414,1.07029 -0.0715,0.29137 -0.0457,0.60656 0.12474,0.75129 0.17045,0.14473 0.46183,0.21614 0.80081,0.0933 0.33899,-0.12285 0.7989,-0.31901 1.08837,-0.6599 0.28946,-0.3409 0.60273,-0.77892 0.67415,-1.0703 0.0714,-0.29137 0.0457,-0.60655 -0.12475,-0.75129 -0.0971,-0.0238 -0.17045,-0.14473 -0.26758,-0.16853 z" id="path21-3-7"/><path style="display:inline" d="m 338.49722,172.10838 c 0.0257,0.31518 -0.81888,1.24073 -0.98742,1.50831 v 0 c -0.26566,0.24377 -1.11026,1.16933 -1.42543,1.19505 l -0.0971,-0.0238 -0.0971,-0.0238 c 0,0 0,0 -0.0971,-0.0238 0,0 -0.0733,-0.12094 -0.0733,-0.12094 -0.0258,-0.31517 0.81888,-1.24073 0.98741,-1.5083 0.26566,-0.24378 1.11025,-1.16933 1.42544,-1.19504" id="path29-9-7"/><path style="display:inline" d="m 337.86877,172.57211 c -0.24186,0.14665 -0.41039,0.41422 -0.79698,0.73131 -0.28947,0.3409 -0.55514,0.58467 -0.69986,0.75512 0.24185,-0.14665 0.41039,-0.41422 0.79698,-0.73132 v 0 c 0.26566,-0.24376 0.55513,-0.58466 0.69986,-0.75511 z" id="path31-6"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Satin_Choker.tw b/src/art/vector_revamp/layers/Collar_Satin_Choker.tw
new file mode 100644
index 0000000000000000000000000000000000000000..866bc99456f6b40ff1919c4c42ae9a453b04efa5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Satin_Choker.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Satin_Choker [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path9-9" d="m 300.45955,176.79435 c 5.75393,4.57809 15.10826,-1.25778 32.69185,-10.78675 0.25346,-0.26166 0.59427,-0.13296 0.75882,0.13764 l 1.45752,3.26042 c 0.0437,0.19518 -0.0117,0.41252 -0.0889,0.53226 -4.82606,4.46138 -25.17723,13.55643 -28.52657,13.55643 -5.27775,0 -6.06553,-1.19062 -6.573,-1.89062 -0.1015,-0.1 -0.1015,-0.3 -0.1015,-0.4 l -0.22717,-4.00938 c 0,-0.4 0.30448,-0.6 0.60897,-0.4 z" style="stroke-width:1.00744832" sodipodi:nodetypes="cccccsccccc"/><path id="path13-6" d="m 299.96797,179.10998 c 7.00222,2.06304 7.82277,2.97274 34.52324,-11.76259 l 0.27371,0.75854 c -4.77068,4.24404 -24.96781,13.18842 -28.11416,13.18842 -5.07476,0 -6.87776,-1.28437 -6.67477,-1.28437" class="steel_chastity" sodipodi:nodetypes="cccsc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Shock_Punishment.tw b/src/art/vector_revamp/layers/Collar_Shock_Punishment.tw
new file mode 100644
index 0000000000000000000000000000000000000000..72b0d32ecd225434acc8bf2bc45d8c13f8cb6668
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Shock_Punishment.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Shock_Punishment [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path9-4" d="m 306.15,183.8375 c -5.4,0 -7.7,-3.1 -7.8,-3.3 -0.5,-0.7 -0.3,-1.6 0.4,-2.1 0.7,-0.5 1.6,-0.3 2.1,0.4 0.2,0.3 5.3375,5.475 34.275,-9.625 0.7,-0.4 1.6,-0.2 2.1,0.5 0.4,0.7 0.2,1.6 -0.5,2.1 -5.7,3.4 -27.375,12.025 -30.575,12.025 z" sodipodi:nodetypes="scsccccs"/><rect x="299.67276" y="183.13045" transform="rotate(-1.1601983)" width="6.3000274" height="10.500045" id="rect11"/><rect x="299.66086" y="183.14191" transform="rotate(-1.1601983)" class="steel_chastity" width="6.0000257" height="10.100043" id="rect13-0"/><circle cx="288.78955" cy="208.56601" r="1.3" id="circle15" style="fill:#ce5b5b" transform="rotate(-5.1341055)"/><circle style="fill:#d13737" cx="288.78955" cy="208.466" r="1.2" id="circle17" transform="rotate(-5.1341055)"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Stylish_Leather.tw b/src/art/vector_revamp/layers/Collar_Stylish_Leather.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1779a7f98419e6e1d6b6120dca96b9068400e6a1
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Stylish_Leather.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Stylish_Leather [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path9-3" d="m 300.325,177.925 c -0.10721,3.72459 23.52313,-0.3129 34.7073,-8.01083 0.19654,-0.30228 0.55115,-0.23713 0.76157,-0.001 l 2.02623,2.93844 c 0.079,0.18372 0.0662,0.40696 0.0139,0.53834 -3.83995,5.24449 -28.00898,11.23512 -31.30898,11.23512 -5.2,0 -7.1,-1.8 -7.6,-2.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.4 l 0.9,-3.4 c 0,-0.4 0.3,-0.6 0.6,-0.4 z" sodipodi:nodetypes="cccccscccc"/><path style="fill:#ffffff" d="m 303.00781,184.69339 h 3.4 v -0.6 h 1 v 1.5 h -5.4 v -7 h 5.4 v 1.3 l -1,0.1 v -0.5 h -3.4 z" id="polygon11"/><rect x="-172.36217" y="307.03809" transform="rotate(-88.080303)" class="white" width="0.9999612" height="2.499903" id="rect13"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Collar_Tight_Steel.tw b/src/art/vector_revamp/layers/Collar_Tight_Steel.tw
new file mode 100644
index 0000000000000000000000000000000000000000..16444a28b55b238f61e1056f7c6a82eb43cc656f
--- /dev/null
+++ b/src/art/vector_revamp/layers/Collar_Tight_Steel.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Collar_Tight_Steel [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 338.84761,173.73169 c -0.2,0.2 -0.4,0.3 -0.7,0.4 -6,2.3 -29.80237,10.05946 -33.20237,9.95946 -5.9,-0.2 -7.5,-2.3 -7.7,-2.5 -0.7,-0.8 -0.4,-2.1 0.8,-2.6 1.3,-0.5 2.5,-0.5 3.2,0.3 0.009,3.44028 22.58334,-3.43594 34.70237,-8.25946 1.2,-0.5 2.7,-0.1 3.3,0.7 0.5,0.6 0.3,1.4 -0.4,2" id="path11-0" sodipodi:nodetypes="ccccccccc"/><path class="steel_chastity" d="m 305.44524,184.09115 c -6,0 -7.8,-2 -8,-2.1 -0.8,-0.8 -0.7,-2 0.5,-2.5 1.2,-0.6 2.76576,-0.84472 3.2,0.2 1.15585,2.7808 23.09391,-3.71229 34.60237,-8.75946 1.2,-0.5 2.7,-0.2 3.4,0.6 0.7,0.8 0.3,1.9 -0.9,2.3 -5.7,2.3 -29.40237,10.25946 -32.80237,10.25946 z" id="path13" sodipodi:nodetypes="sccscscs"/><circle r="3.5999207" transform="rotate(-59.999272)" style="fill:none;stroke:#fefff2;stroke-linecap:round;stroke-miterlimit:10;stroke-dasharray:19" cx="-7.6341872" cy="357.4375" id="ellipse15"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Dildo_Gag.tw b/src/art/vector_revamp/layers/Dildo_Gag.tw
new file mode 100644
index 0000000000000000000000000000000000000000..725d0c53073bdf0d7a448014ce9595c8cc9a35a5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Dildo_Gag.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Dildo_Gag [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path transform="translate(-220)" style="fill:#070505" d="m 523.375,164.2125 -2.6,-6.8 c 12.75713,-2.94492 23.23175,-9.45485 32.075,-18.5625 l -2.2375,8.65 c -7.51195,8.76554 -17.68909,12.0982 -27.2375,16.7125 z" id="path1259" sodipodi:nodetypes="ccccc"/><path style="display:inline;fill:#070505" d="m 293.22989,164.19677 -0.18125,-6.175 c -9.86299,-0.39059 -15.54142,-2.51766 -23.98953,-7.65228 1.68204,3.01591 3.32107,6.03183 5.86142,9.04775 5.59927,3.72945 11.74667,3.21777 18.30936,4.77953 z" id="path1261" sodipodi:nodetypes="ccccc"/><ellipse ry="8.6999998" rx="7.5999999" cy="161.16251" cx="298.51154" class="gag" id="ellipse1263"/><path d="m 306.02067,162.97491 -2.0677,2.89842 -5.39788,1.58688 -2.82555,-0.10895 -1.88734,-0.62251 -1.38183,-1.34784 -1.2286,-1.56979 1.06304,4.39723 6.7635,2.54005 5.76357,-2.47077 z" class="skin" id="path1265" sodipodi:nodetypes="ccccccccccc"/><path d="m 302.62164,169.71603 c -1.74238,0.53615 -2.60522,0.4584 -4.21391,0.59078 1.90231,1.18953 3.69017,1.02552 4.21391,-0.59078 z" class="shadow" id="path1267" sodipodi:nodetypes="ccc" inkscape:transform-center-x="-0.11271335" inkscape:transform-center-y="0.18012958"/><path d="m 304.91055,156.29042 -2.41768,-3.28171 -5.11224,-1.06107 -5.04732,2.60438 -0.83575,3.32702 1.24872,-0.83125 8.84286,-1.44319 1.18295,-0.0262 z" class="skin" id="path1269" sodipodi:nodetypes="ccccccccc"/><path d="m 295.20052,154.26071 c -2.3361,0.18741 -2.33066,0.35817 -4.0167,1.55377 1.655,-0.6968 2.23834,-1.20495 4.0167,-1.55377 z" class="shadow" id="path1271" sodipodi:nodetypes="ccc"/><path d="m 304.161,154.50746 c -2.57764,-0.30209 -3.84681,-1.5219 -6.16236,-0.68113 1.75915,-0.36046 4.35011,0.67624 6.16236,0.68113 z" class="shadow" id="path1273" sodipodi:nodetypes="ccc"/><path d="m 299.04326,167.07067 c -0.13152,0.022 -0.40257,0.12733 -0.53126,0.14693 -0.43426,0.066 -0.66116,0.11591 -0.9949,0.11275 -0.32669,-0.003 -0.64714,-0.0906 -0.9716,-0.12883 -0.39646,-0.0467 -0.8023,-0.0332 -1.19129,-0.1229 -0.4284,-0.0988 -0.70933,-0.26528 -1.2387,-0.45306 -0.77848,-0.27614 -2.88068,-2.86681 -2.88068,-2.86681 0,0 1.49812,2.61596 2.79901,3.13737 3.08136,1.23506 6.83182,0.62648 9.92721,-0.79502 0.85817,-0.39411 2.09247,-3.26423 2.09247,-3.26423 0,0 -1.38905,2.28638 -2.22782,2.75017 -0.83878,0.46378 -1.81847,0.80943 -2.77091,1.08765 -0.65596,0.19162 -1.81889,0.36368 -2.01153,0.39598 z" class="shadow" id="path1275" sodipodi:nodetypes="ssaaascasccas"/><path d="m 301.42603,155.31779 c -1.28714,0.38629 -2.48719,0.72941 -3.60885,0.9432 -0.19845,0.0378 -0.36644,-0.0156 -0.55908,0.0167 -0.13152,0.022 -0.28928,0.13121 -0.41797,0.15079 -0.43426,0.066 -0.85211,0.11837 -1.2517,0.15887 -0.18968,0.0192 -0.37524,-0.0526 -0.55649,-0.0385 -0.18537,0.0144 -0.36623,0.11468 -0.54237,0.1242 -0.77914,0.0421 -1.28226,-0.0804 -1.68445,0.0447 -0.56144,0.17459 -1.39365,1.2375 -1.39365,1.2375 0,0 1.11202,-0.73807 1.36276,-0.82425 0.25074,-0.0862 5.13658,0.10226 8.25323,-1.27205 0.8774,-0.3869 2.03092,-0.18331 3.83075,0.45061 -1.71452,-1.0529 -3.04021,-1.10941 -3.43218,-0.99177 z" class="shadow" id="path1277" sodipodi:nodetypes="ssssssssczscs"/><path d="m 306.00314,162.68917 c 0.82424,1.59261 -0.25293,4.15034 -0.18904,5.79891 0.0911,2.35063 0.32668,3.5911 0.37952,5.03581 1.6367,0.3233 0.5575,-1.65754 0.30956,-2.60214 -0.29108,-1.10897 -0.42575,-1.27143 -0.51903,-2.48708 -0.1298,-1.69155 1.24547,-4.2508 0.019,-5.7455 z" class="highlightStrong" id="path1279" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/><path d="m 291.15378,163.72407 c -0.16856,1.30377 1.45269,2.69973 1.87939,4.09263 0.53262,1.73866 0.85951,3.42387 1.37577,4.68809 -1.35851,0.96837 -1.26851,-1.95297 -1.43138,-2.91589 -0.11777,-0.69625 -0.20232,-0.84009 -0.3062,-1.37611 -0.29951,-1.54531 -1.83304,-2.52165 -1.51758,-4.48872 z" class="highlightStrong" id="path1281" sodipodi:nodetypes="cscssc" inkscape:transform-center-x="-0.45383565" inkscape:transform-center-y="0.091816717"/><path d="m 305.98681,162.86279 c 0.3563,1.7575 -1.38048,3.92219 -1.77075,5.52517 -0.55648,2.28563 -0.79481,6.07442 -1.13986,7.47832 1.31025,1.89023 1.36569,-0.045 1.29978,-1.65992 -0.0468,-1.14558 -0.13923,-4.46443 0.10418,-5.65911 0.33867,-1.66238 2.27663,-3.9109 1.50666,-5.68446 z" class="highlightStrong" id="path1283" sodipodi:nodetypes="cscsscc" inkscape:transform-center-x="0.11270875" inkscape:transform-center-y="0.18012958"/><path d="m 319.68491,173.84249 c 0.57969,-4.07993 0.531,-7.45638 -0.21061,-10.62401 1.11705,2.93421 1.43241,7.45321 0.21061,10.62401 z" class="shadow" id="XMLID_511_-1-84" sodipodi:nodetypes="ccc"/><path d="m 313.35681,181.56712 c -5.6537,3.26843 -5.7874,1.7965 -10.91614,0.7136 5.28746,2.43499 5.52276,3.14938 10.91614,-0.7136 z" class="shadow" id="XMLID_511_-1-84-6" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Angry.tw b/src/art/vector_revamp/layers/Eyes_Angry.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6eaec7b44f7fa48525727c57b746c1c61d1b5817
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Angry.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Angry [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 307.10947,134.55307 c -2.14996,-0.21128 -3.4884,-1.89949 -3.24482,-3.7169 0.90501,-3.62549 5.40258,-8.3911 5.85861,-8.3191 4.86402,-0.7642 5.54559,-1.15495 14.48347,-0.67268 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -1.89128,4.05864 -4.62305,4.52956 -13.41602,5.14749 z" class="shadow" id="path1272" sodipodi:nodetypes="ccccccc"/><path sodipodi:nodetypes="ccccc" id="path1274" class="eyeball" d="m 307.10947,134.55307 c -1.87469,-0.40868 -3.30955,-2.02174 -3.24482,-3.70585 6.28282,-6.69771 12.58105,-6.52676 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -2.6457,5.43786 -9.03811,4.15868 -13.41602,5.14749 z"/><path d="m 310.42091,134.12686 c -3.67367,-1.48686 -4.27487,-3.07746 -3.1319,-6.32664 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 2.99107,2.5491 2.10558,6.05001 -0.68069,8.79811 -1.41133,0.79838 -4.36294,1.09099 -6.51272,1.21812 z" class="shadow" id="path1276" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1278" class="iris" d="m 310.42091,134.12686 c -3.31639,-1.90368 -3.88249,-3.53524 -3.1319,-6.32664 3.29831,-1.48 6.34788,-3.25731 10.32531,-3.68959 1.97318,2.65914 1.62432,6.10204 -0.68069,8.79811 -2.63874,0.78543 -4.65878,1.07777 -6.51272,1.21812 z"/><path d="m 312.95436,125.34937 c 1.10576,-0.11043 1.2531,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12293 0.74332,-3.2328 z" class="shadow" id="path1285" sodipodi:nodetypes="aaaaa"/><path sodipodi:nodetypes="cccc" id="path1287" class="shadow" d="m 317.65086,114.80093 c -7.68644,3.55278 -16.95996,9.88357 -21.12863,10.22739 -0.50012,-0.83277 -0.541,-1.08655 -0.54648,-1.94262 4.52321,-0.46314 11.95535,-5.79083 21.67511,-8.28477 z"/><path d="m 317.65086,114.80093 c -7.80434,3.41386 -15.03783,8.63815 -21.12863,10.22739 -0.4503,-0.83989 -0.48773,-1.09416 -0.54648,-1.94262 4.62053,-0.16073 12.07485,-5.67553 21.67511,-8.28477 z" class="hair" id="path1289" sodipodi:nodetypes="cccc"/><path d="m 274.44284,139.61902 c -3.77011,-1.33495 -4.55682,-6.00874 -4.41296,-6.17657 l -2.12826,-0.77244 c 2.10867,-1.74524 4.33093,-3.42232 8.17537,-4.1261 3.31352,1.95033 6.40829,4.86888 6.94086,6.58701 0.70038,0.99444 1.14834,1.97959 1.20977,3.09041 -0.11063,0.6088 -0.16261,0.79325 -1.19487,1.03043 -2.0078,1.16001 -6.00188,0.26906 -8.58991,0.36726 z" class="shadow" id="path1291" sodipodi:nodetypes="cccccccc"/><path sodipodi:nodetypes="cccccc" id="path1293" class="eyeball" d="m 274.44284,139.61902 c -3.10223,-2.11414 -3.60251,-3.82535 -4.41296,-6.17657 4.81902,-5.82796 9.04523,0.53115 13.13641,2.39159 0.7155,0.74756 0.79828,1.35208 1.06133,2.38729 -0.18602,0.58367 -0.41907,0.70776 -1.19487,1.03043 -2.25853,0.56739 -6.04492,0.16732 -8.58991,0.36726 z"/><path sodipodi:nodetypes="ccccc" id="path1295" class="shadow" d="m 277.24269,139.56084 c -3.75163,-1.66167 -4.05213,-6.2542 -3.89825,-8.44963 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.35859,1.15724 0.43496,2.38079 -0.22192,3.68282 0.0631,0.0631 -2.54258,0.40292 -5.45861,0.23181 z"/><path d="m 277.24269,139.56084 c -3.52398,-2.02728 -3.57865,-6.00853 -3.89825,-8.44963 4.6668,-0.10393 6.50004,2.02537 9.57878,4.535 0.0721,1.2479 -0.002,2.49742 -0.22192,3.68282 0.0434,0.0916 -2.69968,0.48355 -5.45861,0.23181 z" class="iris" id="path1297" sodipodi:nodetypes="ccccc"/><path d="m 278.79463,132.40661 c 0.7753,-0.12567 0.96972,1.30423 1.11402,2.07628 0.14378,0.76921 0.47663,2.16241 -0.28777,2.32986 -0.76786,0.16821 -1.09139,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.3869,-2.27094 0.4148,-2.40088 z" class="shadow" id="path1299" sodipodi:nodetypes="aaaaa"/><path sodipodi:nodetypes="cccc" id="path1301" class="shadow" d="m 268.39389,124.29164 c 4.03739,0.7803 9.33495,3.23319 13.41954,4.36469 -0.22533,-0.68817 -0.22859,-1.82011 -0.992,-2.30772 -4.47886,-0.46046 -8.54751,-2.12495 -12.42754,-2.05697 z"/><path d="m 268.39389,124.29164 c 4.14998,0.71944 9.36197,3.16113 13.41954,4.36469 -0.29393,-0.68817 -0.32561,-1.82011 -0.992,-2.30772 -4.43766,-0.34078 -8.31978,-2.00468 -12.42754,-2.05697 z" class="hair" id="path1303" sodipodi:nodetypes="cccc"/><path d="m 314.20378,120.03142 c -6.05866,2.28691 -9.91789,5.31957 -11.60213,12.97625 1.05717,-5.02699 1.21906,-5.81731 1.21906,-5.81731 -0.0166,0.18218 3.35758,-5.46132 10.38307,-7.15894 z" class="shadow" id="path1431" sodipodi:nodetypes="cccc"/><path d="m 283.68032,134.64216 c -2.29173,-3.19341 -6.45228,-8.28346 -11.63652,-5.8299 5.27592,-2.57386 9.21676,1.98688 9.21676,1.98688 0,0 0.78358,1.28953 2.41976,3.84302 z" class="shadow" id="path1433" sodipodi:nodetypes="cccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Angry_Highlights.tw b/src/art/vector_revamp/layers/Eyes_Angry_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7942a8b4d08dc1ff0448b2afae802923b9041d24
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Angry_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Angry_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 276.31935,138.03596 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z" class="highlight1" id="path1406" sodipodi:nodetypes="ccc"/><path d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z" class="highlight1" id="path1408" sodipodi:nodetypes="aaaaa"/><path d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z" class="highlight1" id="path1410" sodipodi:nodetypes="aaaaa"/><path d="m 310.10154,134.01083 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z" class="highlight1" id="path1412" sodipodi:nodetypes="ccc"/><path d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z" class="highlight1" id="path1414" sodipodi:nodetypes="aaaaa"/><path d="m 321.00393,127.22871 c -4.30477,3.52286 -10.19709,4.94055 -15.78334,6.32872 1.62696,1.45996 11.01913,0.36266 12.83524,-1.28593 0.16245,0.19855 3.12965,-2.46418 2.9481,-5.04279 z" class="highlight2" id="path1416" sodipodi:nodetypes="cccc"/><path d="m 283.12848,136.19405 c 0.0421,0.92348 -6.53131,0.97784 -11.80589,0.2897 0.37816,1.02046 3.14838,3.09154 3.14838,3.09154 2.95098,-0.14535 5.96765,0.44056 8.57173,-0.35388 1.67495,-0.40155 1.15179,-1.67781 0.0858,-3.02736 z" class="highlight2" id="path1418" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Closed.tw b/src/art/vector_revamp/layers/Eyes_Closed.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f1fdf00b9f107073aac901aff93516fb1ff34fca
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Closed.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Closed [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 302.16296,131.24318 c 2.57167,-0.52673 5.58238,0.006 9.33942,-0.69862 2.58668,-0.4848 5.43996,-1.74164 9.09976,-3.58177 l -2.13661,2.38519 c -4.04644,3.14664 -11.31128,2.34686 -16.30257,1.8952 z" class="shadow" id="path1266" sodipodi:nodetypes="csccc"/><path sodipodi:nodetypes="cccc" id="path1316" class="shadow" d="m 314.07752,117.274 c -6.46523,0.2848 -13.00456,1.26106 -19.23505,-0.64511 l -0.54648,-1.94262 c 6.66634,2.35597 13.21476,2.28288 19.78153,2.58773 z"/><path d="m 314.07752,117.274 c -6.30971,0.1139 -12.52917,1.16848 -19.23505,-0.64511 -0.11296,-0.62159 -0.35966,-1.29334 -0.54648,-1.94262 6.39298,2.42643 13.10866,2.34048 19.78153,2.58773 z" class="hair" id="path1318" sodipodi:nodetypes="cccc"/><path d="m 269.949,137.67138 c 0.73177,-0.37643 0.86265,-1.21509 1.07486,-1.99119 3.59562,2.03489 7.47707,0.76228 11.35725,-0.49555 -5.4811,2.92985 -9.73399,4.45824 -12.43211,2.48674 z" class="shadow" id="path1320" sodipodi:nodetypes="cccc"/><path sodipodi:nodetypes="cccc" id="path1330" class="shadow" d="m 268.39113,125.24474 c 3.63876,-0.89851 6.76925,-2.25327 10.18168,-4.73608 -0.62683,-0.53103 -0.61519,-0.89808 -0.76402,-1.63693 -2.88076,2.79444 -5.97516,5.03497 -9.41766,6.37301 z"/><path d="m 268.39113,125.24474 c 3.984,-0.95362 7.05184,-2.69915 10.18168,-4.73608 -0.69182,-0.47535 -0.69569,-0.82906 -0.76402,-1.63693 -2.61352,2.58433 -5.48274,4.94492 -9.41766,6.37301 z" class="hair" id="path1332" sodipodi:nodetypes="cccc"/><path d="m 316.03784,127.49081 c -4.30281,1.05938 -7.95357,2.3998 -14.53503,2.477 0.44427,-0.21168 0.43707,-0.6506 0.30235,-1.15169 6.72552,0.42105 9.85993,-0.72177 14.23268,-1.32531 z" class="shadow" id="path1305" sodipodi:nodetypes="cccc"/><path d="m 284.71888,133.33632 c -4.35972,0.4276 -3.84243,1.28326 -12.01845,1.57179 3.11507,-0.36955 6.44566,-1.01385 8.97997,-2.27702 0.46806,0.45298 1.88596,0.52604 3.03848,0.70523 z" class="shadow" id="path1307" sodipodi:nodetypes="cccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Happy.tw b/src/art/vector_revamp/layers/Eyes_Happy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..aea84b6e67bb3d4d6fc33824758d111fca853e86
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Happy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Happy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path6045" class="shadow" d="m 307.10671,134.50075 c -2.14996,-0.21128 -3.4884,-1.89949 -3.24482,-3.7169 5.61251,-12.66418 20.17095,-9.17457 20.34208,-8.99178 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -1.92253,5.79302 -5.27149,5.56862 -13.41602,5.14749 z"/><path d="m 307.10671,134.50075 c -1.87469,-0.40868 -3.30955,-2.02174 -3.24482,-3.70585 6.37333,-6.81838 12.60798,-6.56266 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -2.65086,5.61858 -6.10961,5.14951 -13.41602,5.14749 z" class="eyeball" id="XMLID_511_-4-2" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path6043" class="shadow" d="m 310.44159,134.49641 c -3.67367,-1.48686 -4.29831,-3.49933 -3.15534,-6.74851 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 2.99107,2.5491 2.13293,6.70626 -0.65334,9.45436 -2.61876,1.10509 -4.65424,0.97852 -6.51663,0.98374 z"/><path d="m 310.44159,134.49641 c -3.31639,-1.90368 -3.90593,-3.95711 -3.15534,-6.74851 2.69791,-2.16227 6.05502,-3.5901 10.32531,-3.68959 1.97318,2.65914 1.65167,6.75829 -0.65334,9.45436 -2.61876,1.10509 -4.65424,0.97852 -6.51663,0.98374 z" class="iris" id="XMLID_511_-4-2-3" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="aaaaa" id="path836-0" class="shadow" d="m 312.9516,125.29705 c 1.10576,-0.11043 1.2531,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12293 0.74332,-3.2328 z"/><path d="m 317.67935,111.63924 c -7.50966,2.24905 -13.60059,5.38357 -18.28488,9.05551 -0.50012,-0.83277 -0.541,-1.08655 -0.54648,-1.94262 2.10133,-1.86939 9.26628,-5.39235 18.83136,-7.11289 z" class="shadow" id="path898" sodipodi:nodetypes="cccc"/><path sodipodi:nodetypes="cccc" id="path836-0-8-5-8" class="hair" d="m 317.67935,111.63924 c -7.62756,2.19852 -13.77221,5.31002 -18.28488,9.05551 -0.4503,-0.83989 -0.48773,-1.09416 -0.54648,-1.94262 1.80803,-1.6451 8.85545,-5.07818 18.83136,-7.11289 z"/><path sodipodi:nodetypes="cccscccc" id="path6039" class="shadow" d="m 274.44008,140.2959 c -3.77011,-1.33495 -4.55682,-6.73794 -4.41296,-6.90577 l -2.12826,-0.77244 c 0,0 4.27612,-4.61357 8.17537,-4.1261 3.11408,0.38931 5.88666,4.99929 6.94086,6.58701 0.70038,0.99444 1.14834,1.97959 1.20977,3.09041 -0.11063,0.6088 -0.16261,0.79325 -1.19487,1.03043 -2.0078,1.16001 -6.00188,0.99826 -8.58991,1.09646 z"/><path d="m 274.44008,140.2959 c -3.10223,-2.11414 -3.60251,-4.55455 -4.41296,-6.90577 6.75267,-6.49147 10.05247,0.18553 13.13641,2.39159 0.7155,0.74756 0.79828,1.35208 1.06133,2.38729 -0.18602,0.58367 -0.41907,0.70776 -1.19487,1.03043 -2.25853,0.56739 -6.04492,0.89652 -8.58991,1.09646 z" class="eyeball" id="XMLID_511_-4-2-6" sodipodi:nodetypes="cccccc"/><path d="m 277.23993,140.0554 c -3.75163,-1.66167 -4.05213,-6.80108 -3.89825,-8.99651 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.35859,1.15724 0.43496,2.38638 -0.22192,3.68841 0,0 -2.91362,0.57316 -5.45861,0.7731 z" class="shadow" id="path6037" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path2346" class="iris" d="m 277.23993,140.0554 c -3.52398,-2.02728 -3.57865,-6.55541 -3.89825,-8.99651 4.41482,-1.71661 6.48962,1.95868 9.57878,4.535 0.0721,1.2479 -0.002,2.50301 -0.22192,3.68841 0,0 -2.91362,0.57316 -5.45861,0.7731 z"/><path sodipodi:nodetypes="aaaaa" id="path836-0-1" class="shadow" d="m 278.79187,132.35429 c 0.7753,-0.12567 0.96972,1.30423 1.11402,2.07628 0.14378,0.76921 0.47663,2.16241 -0.28777,2.32986 -0.76786,0.16821 -1.09139,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.3869,-2.27094 0.4148,-2.40088 z"/><path d="m 268.39113,125.24474 c 3.84956,-1.23054 7.58928,-1.35196 11.67387,-0.22046 -0.22533,-0.68817 -0.47718,-1.38369 -1.24059,-1.8713 -3.84357,-0.72563 -7.95641,0.48803 -10.43328,2.09176 z" class="shadow" id="path900" sodipodi:nodetypes="cccc"/><path sodipodi:nodetypes="cccc" id="path836-0-8-5-8-4" class="hair" d="m 268.39113,125.24474 c 3.88481,-1.32454 7.6163,-1.42402 11.67387,-0.22046 -0.29393,-0.68817 -0.5742,-1.38369 -1.24059,-1.8713 -3.82999,-0.617 -7.94966,0.54201 -10.43328,2.09176 z"/><path sodipodi:nodetypes="cccc" id="path836-0-8-5" class="shadow" d="m 314.20378,119.09392 c -6.05866,2.28691 -11.22162,5.0986 -12.90586,12.75528 0.30717,-4.71449 0.75031,-5.81731 0.75031,-5.81731 0,0 5.19124,-5.91333 12.15555,-6.93797 z"/><path sodipodi:nodetypes="cccc" id="path836-0-8-5-6" class="shadow" d="m 283.68032,132.67341 c -2.29173,-3.19341 -6.81165,-7.67408 -11.63652,-4.4549 4.04155,-3.32386 9.21676,0.61188 9.21676,0.61188 0,0 0.78358,1.28953 2.41976,3.84302 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Happy_Highlights.tw b/src/art/vector_revamp/layers/Eyes_Happy_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c03e137de7dee928baac596c80262d03f1ca57c2
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Happy_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Happy_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="path1358" class="highlight1" d="m 276.31935,138.03596 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z"/><path sodipodi:nodetypes="aaaaa" id="path1360" class="highlight1" d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z"/><path sodipodi:nodetypes="aaaaa" id="path1362" class="highlight1" d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z"/><path sodipodi:nodetypes="ccc" id="path1364" class="highlight1" d="m 310.10154,134.01083 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z"/><path sodipodi:nodetypes="aaaaa" id="path1366" class="highlight1" d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z"/><path sodipodi:nodetypes="cccc" id="path1368" class="highlight2" d="m 321.00393,127.22871 c -4.30477,3.52286 -10.19709,4.94055 -15.78334,6.32872 1.62696,1.45996 10.61033,1.15816 12.42644,-0.49043 0,0 3.43904,-3.38118 3.3569,-5.83829 z"/><path sodipodi:nodetypes="ccccc" id="path1370" class="highlight2" d="m 283.12848,136.19405 c 0.0421,0.92348 -6.38287,1.60284 -11.65745,0.9147 0.37816,1.02046 2.99994,3.12279 2.99994,3.12279 2.95098,-0.14535 5.87909,-0.37074 8.66548,-1.09216 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Shy.tw b/src/art/vector_revamp/layers/Eyes_Shy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..991329f5761e91b77f330c7ce5437ecf12d69f46
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Shy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Shy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 307.10671,133.23513 c -2.14996,-0.21128 -3.4884,-0.63387 -3.24482,-2.45128 5.61251,-12.66418 20.17095,-9.17457 20.34208,-8.99178 l -2.84372,2.07583 c 0,0 0.49128,3.89972 -0.83752,5.48536 -4.6569,4.69927 -4.74024,3.03737 -13.41602,3.88187 z" class="shadow" id="path1383" sodipodi:nodetypes="cccccc"/><path sodipodi:nodetypes="ccccc" id="path1385" class="eyeball" d="m 307.10671,133.23513 c -1.87469,-0.40868 -3.30955,-0.75612 -3.24482,-2.44023 6.37333,-6.81838 12.60798,-6.56266 17.49836,-6.927 -0.089,1.78171 -0.22231,3.81052 -0.83752,5.48536 -4.63523,3.72796 -4.96899,2.80576 -13.41602,3.88187 z"/><path d="m 310.44159,132.82454 c -2.37038,-2.40092 -2.27065,-3.28058 -0.76472,-6.52976 2.69791,-2.16227 5.44322,-2.2007 9.71351,-2.30019 1.02447,3.36359 0.96171,4.79101 -0.65334,6.72697 -2.10986,1.90314 -6.35887,2.21411 -8.29545,2.10298 z" class="shadow" id="path1387" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1389" class="iris" d="m 310.44159,132.80891 c -2.06639,-2.49743 -1.51531,-3.72273 -0.76472,-6.51413 3.39397,-1.8971 5.44322,-2.2007 9.71351,-2.30019 0.91996,3.36377 0.44572,5.40578 -0.65334,6.71134 -2.09074,1.5744 -4.38813,2.04437 -8.29545,2.10298 z"/><path d="m 314.67793,125.49592 c 1.10576,-0.11043 1.25309,1.93253 1.3748,3.0371 0.10786,0.97889 0.37016,2.74199 -0.60312,2.89222 -1.01892,0.15728 -1.36813,-1.67605 -1.515,-2.69652 -0.15752,-1.09444 -0.35693,-3.12292 0.74332,-3.2328 z" class="shadow" id="path1391" sodipodi:nodetypes="aaaaa"/><path sodipodi:nodetypes="cccc" id="path1393" class="shadow" d="m 316.5303,114.40138 c -6.66941,0.72065 -12.03275,1.96548 -21.48896,0.96797 -0.0572,-0.64754 -0.32141,-1.29508 -0.54648,-1.94262 7.94186,0.96275 14.90918,0.88375 22.03544,0.97465 z"/><path d="m 316.5303,114.40138 c -6.85014,0.90399 -13.36209,1.48406 -21.48896,0.96797 0.0949,-0.51969 -0.28129,-1.25676 -0.54648,-1.94262 7.70775,1.30604 14.79826,0.94191 22.03544,0.97465 z" class="hair" id="path1395" sodipodi:nodetypes="cccc"/><path d="m 274.44008,139.12475 c -3.77011,-1.33495 -4.55682,-5.56679 -4.41296,-5.73462 l -2.12826,-0.77244 c 0,0 4.27612,-3.56396 8.17537,-3.07649 3.11408,0.38931 4.98068,3.73976 6.94086,5.5374 0.70038,0.99444 0.6622,0.90788 0.72363,2.0187 -0.11063,0.6088 0.14384,0.65866 -0.70873,0.93099 -2.0078,1.16001 -6.00188,0.99826 -8.58991,1.09646 z" class="shadow" id="path1397" sodipodi:nodetypes="cccscccc"/><path sodipodi:nodetypes="cccccc" id="path1399" class="eyeball" d="m 274.44008,139.12475 c -3.10223,-2.11414 -3.60251,-3.3834 -4.41296,-5.73462 6.75267,-6.49147 10.05247,0.18553 13.13641,2.39159 0.36003,0.38428 0.18323,0.27256 0.44628,1.30777 -0.18602,0.58367 -0.1204,0.39348 -0.57982,0.9388 -2.25853,0.56739 -6.04492,0.89652 -8.58991,1.09646 z"/><path sodipodi:nodetypes="ccccc" id="path1401" class="shadow" d="m 277.23993,138.8953 c -3.23601,-2.56011 -2.26384,-6.08103 -2.10996,-8.27646 4.33748,0.018 4.70133,2.39873 7.79049,4.97505 0.35859,1.15724 0.43496,1.22628 -0.22192,2.52831 0,0 -2.91362,0.57316 -5.45861,0.7731 z"/><path d="m 277.23993,138.90635 c -3.19586,-2.9179 -1.97786,-5.79953 -2.10996,-8.28751 3.93974,0.22794 4.70133,2.39873 7.79049,4.97505 1.19438,0.83852 0.73936,2.31119 -0.22192,2.53936 0,0 -2.91362,0.57316 -5.45861,0.7731 z" class="iris" id="path1403" sodipodi:nodetypes="ccccc"/><path d="m 280.24499,132.97929 c 0.77531,-0.12566 0.96972,1.30423 1.11402,2.07628 0.14378,0.7692 0.47663,2.16241 -0.28777,2.32986 -0.76787,0.16821 -1.09138,-1.23356 -1.24105,-2.00526 -0.15462,-0.79729 -0.38688,-2.27094 0.4148,-2.40088 z" class="shadow" id="path1405" sodipodi:nodetypes="aaaaa"/><path sodipodi:nodetypes="cccc" id="path1407" class="shadow" d="m 266.88853,124.93538 c 5.14281,-2.35048 8.8204,-4.54964 11.7733,-6.94902 -0.64858,-0.54081 -1.09249,-1.15385 -1.24059,-1.8713 -3.15256,3.1591 -6.34148,6.29597 -10.53271,8.82032 z"/><path d="m 266.71175,125.01272 c 4.28394,-1.97306 8.31478,-4.40496 11.95008,-7.02636 -0.59259,-0.44063 -1.10195,-0.96639 -1.24059,-1.8713 -3.0006,3.32594 -6.50676,6.48064 -10.70949,8.89766 z" class="hair" id="path1409" sodipodi:nodetypes="cccc"/><path d="m 315.90526,120.41975 c -7.90241,3.58378 -11.88871,4.3252 -14.9167,11.98188 0.30717,-4.71449 0.75031,-4.84504 0.75031,-4.84504 0,0 7.35676,-6.00172 14.16639,-7.13684 z" class="shadow" id="path1411" sodipodi:nodetypes="cccc"/><path d="m 283.68032,134.28278 c -2.29173,-3.19341 -6.45739,-7.99776 -13.10527,-5.22052 5.93085,-3.26862 10.68551,1.3775 10.68551,1.3775 0,0 0.78358,1.28953 2.41976,3.84302 z" class="shadow" id="path1413" sodipodi:nodetypes="cccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Eyes_Shy_Highlights.tw b/src/art/vector_revamp/layers/Eyes_Shy_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..454476103b533ab04022f177ba72e66654fb9635
--- /dev/null
+++ b/src/art/vector_revamp/layers/Eyes_Shy_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Eyes_Shy_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="path1422" class="highlight1" d="m 276.31935,136.60153 c -1.74948,-1.08152 -2.82634,-0.70082 -4.14058,-0.83618 1.46255,1.3039 2.31388,1.58407 4.14058,0.83618 z"/><path sodipodi:nodetypes="aaaaa" id="path1424" class="highlight1" d="m 283.0156,136.69833 c 0.33283,-0.52775 -0.16277,-1.40573 -0.68949,-1.74018 -0.5567,-0.35349 -1.62751,-0.43801 -1.97452,0.12275 -0.33312,0.53831 0.20098,1.41744 0.74031,1.7489 0.54759,0.33653 1.58085,0.41218 1.9237,-0.13147 z"/><path sodipodi:nodetypes="aaaaa" id="path1426" class="highlight1" d="m 319.26713,128.31283 c 0.40208,-0.65326 0.15902,-1.79617 -0.45511,-2.25581 -0.76332,-0.57128 -2.3685,-0.57543 -2.84953,0.24775 -0.47889,0.81956 0.31823,2.19001 1.17781,2.59266 0.66581,0.31188 1.74144,0.0415 2.12683,-0.5846 z"/><path sodipodi:nodetypes="ccc" id="path1428" class="highlight1" d="m 308.9531,132.21396 c -1.95261,-0.58152 -3.31071,-0.68519 -4.64058,-1.07055 1.46255,1.3039 2.81388,1.81844 4.64058,1.07055 z"/><path sodipodi:nodetypes="aaaaa" id="path1430" class="highlight1" d="m 309.12579,132.53462 c 0.22973,-0.28484 0.11628,-0.86094 -0.17386,-1.08393 -0.32114,-0.24683 -0.95451,-0.19244 -1.2089,0.12275 -0.21702,0.26887 -0.14841,0.8069 0.11531,1.03015 0.32294,0.27338 1.00184,0.26038 1.26745,-0.069 z"/><path sodipodi:nodetypes="ccccc" id="path1432" class="highlight2" d="m 321.26909,125.30626 c -4.30477,3.52286 -11.2025,5.59241 -16.78875,6.98058 0.42493,0.38132 2.61485,0.92369 2.61485,0.92369 3.74766,-0.56824 8.59308,-0.25714 11.14846,-2.06598 0,0 2.93081,-1.48083 3.02544,-5.83829 z"/><path sodipodi:nodetypes="cccccc" id="path1434" class="highlight2" d="m 283.12848,135.7569 c 0.0421,0.92348 -6.71985,0.86812 -11.99443,0.17998 0.37816,1.02046 3.3093,3.19461 3.3093,3.19461 2.95098,-0.14535 5.90671,-0.44256 8.6931,-1.16398 0.9821,-1.2502 0.32176,-1.64424 -0.008,-2.21061 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Face_Highlights.tw b/src/art/vector_revamp/layers/Face_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..845e2a2c3806edfcf53f4eda171654d07596759a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Face_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Face_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5" class="highlight2" d="m 275.19669,144.91885 c -0.45504,-0.57446 -1.58115,-0.6711 -2.43843,-0.69755 0.35064,0.57872 1.68753,1.54395 2.43843,0.69755 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-7" class="highlight2" d="m 325.10727,135.45519 c -1.5378,0.39782 -2.70811,0.94199 -3.38861,1.31329 0.35064,0.57872 2.6819,0.15183 3.38861,-1.31329 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4-8" class="highlight2" d="m 287.40684,166.81779 c -0.37424,-0.72047 -8.60195,-6.72222 -9.45432,-6.6478 0.1152,0.76888 7.07094,6.64629 9.45432,6.6478 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Feet.tw b/src/art/vector_revamp/layers/Feet.tw
new file mode 100644
index 0000000000000000000000000000000000000000..56097223f49eab2216527d1715ca04713f72c5c5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Feet.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Feet [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccc" id="path1094" class="shadow" d="m 238.95,872.025 c -0.48582,4.8674 0.15294,9.06839 -0.0125,13.6 2.22973,9.99408 1.7936,14.49404 2.1125,20.825 0.022,5.27636 -1.31474,9.10565 -4.425,9.7625 -3.67413,1.13135 -6.74815,2.63651 -14.39869,1.5302 -9.18145,2.47145 -15.2613,8.08123 -19.65088,12.66319 -5.99441,11.15878 -13.47376,7.21014 -20.43229,8.63526 -2.26339,1.53969 -4.48245,2.64592 -5.92759,3.92125 -8.08027,1.27814 -9.78952,-1.14984 -9.34055,-4.7749 -4.73388,-0.59152 -3.07859,-2.61348 -3.4875,-4.1125 -2.1797,-0.86783 -3.38524,-2.25017 -1.8875,-5.5125 -1.64492,-1.58194 -0.59193,-3.0027 1.0125,-4.4125 -0.047,-1.41206 -0.0626,-2.02062 1.85427,-3.5987 2.47354,-1.16931 5.2035,-1.82041 6.88323,-3.0263 9.61678,-4.02794 17.69545,-9.58214 24.9375,-15.6 6.764,-7.70672 11.93927,-16.77333 16.725,-26.1125 0.38886,-5.72349 1.1106,-11.50246 2.49687,-17.39219 8.29195,1.78724 16.46415,2.06569 24.4617,0.1436 0.0134,4.46773 -0.288,9.28647 -0.92107,13.46109 z"/><path d="m 238.95,872.025 c -0.78366,4.8674 -0.0123,9.06839 -0.0125,13.6 1.96104,9.99408 1.6598,14.49404 2.1125,20.825 -0.33122,5.1439 -1.39649,9.075 -4.425,9.7625 -3.7164,0.94114 -6.82187,2.30479 -14.39869,1.5302 -9.54221,2.255 -15.48251,7.9485 -19.65088,12.66319 -5.99441,10.40697 -13.47376,7.11956 -20.43229,8.63526 -2.68208,1.30708 -4.5396,2.61417 -5.92759,3.92125 -7.45032,0.85817 -9.58295,-1.28756 -9.34055,-4.7749 -4.44919,-0.9711 -3.04844,-2.65368 -3.4875,-4.1125 -1.9584,-0.90471 -3.25864,-2.27127 -1.8875,-5.5125 -1.25464,-1.53858 -0.48809,-2.99116 1.0125,-4.4125 0.0921,-1.45 0.40705,-2.1487 1.85427,-3.5987 2.78612,-0.81208 5.26912,-1.74541 6.88323,-3.0263 10.38085,-4.02794 18.06828,-9.58214 24.9375,-15.6 7.28492,-7.70672 12.23858,-16.77333 16.725,-26.1125 l 2.49687,-17.39219 24.4617,0.1436 c -0.20353,4.43674 -0.48332,9.25857 -0.92107,13.46109 z" class="skin" id="XMLID_463_" sodipodi:nodetypes="ccccccccccccccccccc"/><path sodipodi:nodetypes="cccccccccccccccccccc" id="path1096" class="shadow" d="m 375.58471,902.04597 c 0.52386,-4.42278 1.19018,-8.77106 2.62778,-13.11184 -0.18418,-4.15006 -1.53153,-7.58074 -2.24386,-11.19255 1.41187,-3.81106 3.55196,-7.41574 3.75747,-11.68734 l 9.5403,1.19132 11.39699,0.54305 c -0.13161,5.61968 0.61689,10.96792 1.61199,16.17184 -0.39734,2.28591 -1.32892,4.4142 -1.48163,6.5833 0.49368,10.63259 0.94138,21.12141 0.78125,31.41875 1.02096,6.09599 4.65404,10.88578 -0.98008,20.3093 1.08539,5.03478 -0.79793,7.36352 -3.88112,9.44835 -0.76646,0.77233 -1.5056,1.34202 -2.34991,0.25285 -1.29478,4.61758 -3.69222,4.6425 -6.30536,3.64975 -1.58037,3.04176 -4.00867,3.2139 -7.08388,1.97332 -3.5406,3.44729 -7.70644,0.0206 -7.31963,-0.63385 -4.38119,2.60045 -6.80232,1.14845 -7.60246,-4.0751 0.35561,-2.38229 1.37471,-4.40392 1.37081,-7.1661 -0.32501,-1.77042 -0.20542,-3.64462 -0.12828,-5.82926 2.01476,-4.1624 4.14533,-8.22545 5.26725,-12.21996 2.26819,-8.61114 1.87934,-17.08855 3.02237,-25.62583 z"/><path d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 0.89521,6.14315 4.16056,11.07084 -0.98008,20.3093 0.80111,5.03478 -1.4045,7.36352 -3.88112,9.44835 -0.7833,0.60391 -1.56661,0.73191 -2.34991,0.25285 -1.50732,4.13937 -3.80652,4.38532 -6.30536,3.64975 -1.64076,2.4379 -4.02654,3.0352 -7.08388,1.97332 -3.47099,3.02964 -7.70217,-0.005 -7.31963,-0.63385 -4.31272,2.15538 -6.70519,0.51711 -7.60246,-4.0751 0.46976,-2.38229 1.66083,-4.40392 1.37081,-7.1661 -0.0428,-1.77042 -0.0855,-3.64462 -0.12828,-5.82926 2.29215,-4.04352 4.45099,-8.09445 5.26725,-12.21996 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z" class="skin" id="XMLID_510_" sodipodi:nodetypes="cccccccccccccccccccc"/><path d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5" sodipodi:nodetypes="ccc"/><path d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-3" sodipodi:nodetypes="ccc"/><path d="m 395.69892,943.48628 c -0.6807,3.78292 -1.85845,3.72528 -1.22527,8.57452 -1.10247,-5.75622 0.27648,-4.68977 1.22527,-8.57452 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34" sodipodi:nodetypes="ccc"/><path d="m 389.12868,946.23737 c -0.6807,3.78292 -1.77006,4.43239 -1.13688,9.28163 -1.10247,-5.75622 0.18809,-5.39688 1.13688,-9.28163 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6" sodipodi:nodetypes="ccc"/><path d="m 382.17591,947.91674 c -0.6807,3.78292 -1.37231,4.91853 -1.20317,9.74567 -0.74892,-5.60154 0.25438,-5.86092 1.20317,-9.74567 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8" sodipodi:nodetypes="ccc"/><path d="m 375.34424,947.66262 c -0.6807,3.78292 -1.70377,4.56498 -1.79979,9.37002 -0.35118,-5.49105 0.851,-5.48527 1.79979,-9.37002 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0" sodipodi:nodetypes="ccc"/><path d="m 233.85987,866.45583 c 0.20162,3.58528 1.78152,8.46827 1.27913,12.44825 -0.33424,2.64785 -1.53099,3.78741 -2.39316,6.67724 0.49516,-2.71172 1.67721,-3.99993 2.00285,-6.68659 0.49663,-4.09741 -0.91468,-9.23845 -0.88882,-12.4389 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-4" sodipodi:nodetypes="cscsc"/><path d="m 174.52487,930.47124 c -0.6807,3.78292 -7.54752,3.28373 -7.64354,8.08877 -0.35118,-5.49105 6.69475,-4.20402 7.64354,-8.08877 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9" sodipodi:nodetypes="ccc"/><path d="m 171.50081,927.25578 c -0.6807,3.78292 -7.92317,3.54889 -8.01919,8.35393 -0.35118,-5.49105 7.0704,-4.46918 8.01919,-8.35393 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0" sodipodi:nodetypes="ccc"/><path d="m 170.10938,922.88554 c -1.57133,3.50167 -6.25131,2.72077 -8.61295,5.86956 2.43007,-3.53793 6.80478,-2.48481 8.61295,-5.86956 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0-3" sodipodi:nodetypes="ccc"/><path d="m 169.29085,920.33085 c -1.75883,3.47042 -4.50131,0.78327 -6.86295,3.93206 2.43007,-3.53793 4.92978,-0.57856 6.86295,-3.93206 z" class="shadow" id="XMLID_590_-04-8-55-8-75-5-34-6-8-0-9-0-3-1" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_0.tw b/src/art/vector_revamp/layers/Flaccid_0.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c88af10dd20ca88bc035991c78db6470e4c72338
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_0.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_0 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path6" d="m 285.17635,460.26374 c 0,0.1 0.2,0.1 0.3,0.1 1.1,0.1 1.1,1.7 0.8,2.7 0,0.1 0,0.2 -0.1,0.3 -0.3,1.2 -0.8,1.7 -0.8,1.7 -0.1,0.1 -0.5,0.5 -0.9,0.6 -0.1,0 -0.2,0.1 -0.4,0.1 -1.5,-0.1 -2.2,-1.5 -2.4,-2.8 0,-0.1 -0.1,-0.3 -0.1,-0.4 -0.1,-0.6 -0.11527,-1.2161 0.2,-1.5 l 0.2,-0.2 0.2,-0.2" sodipodi:nodetypes="cccccccccscc"/><path id="path8" d="m 281.87635,458.56374 v -0.8 c 0,-0.2 0,-0.8 0.2,-1.7 0.1,-0.5 0.2,-1 0.2,-1.1 0.6,-2.8 2.6,-4.3 2.6,-4.3 0.2,-0.2 0.8,-0.5 1,-0.7 0.5,-0.3 1.9,-1 3.9,-0.3 0.3,0.1 2.2,0.9 2.6,1.4 0.4,0.7 -0.3,-0.4 -0.4,-0.3 -0.1,0.1 -0.2,0.1 -0.3,0.3 -0.2,0.2 -0.2,0.4 -0.3,0.5 -0.2,0.4 -0.6,0.5 -1.1,0.7 -0.7,0.3 -1.2,0.5 -1.7,0.8 -0.3,0.3 -0.6,0.5 -1,1.1 -0.4,0.5 -0.6,0.8 -0.8,1.2 -0.1,0.1 -0.2,0.5 -0.4,1.1 -0.1,0.4 -0.2,0.5 -0.2,0.7 -0.1,0.3 -0.2,0.6 -0.2,0.8 -0.1,0.5 -0.4,1.4 -1.3,2.2 -0.4,0.4 -0.9,0.9 -1.5,0.7 -1,0 -1.3,-2.1 -1.3,-2.3 z" sodipodi:nodetypes="ssccccccscccccccccccs"/><path id="path10" d="m 288.57635,449.56374 c 1,-0.1 3.3,0.7 3.7,1.5 0.3,0.7 0.2,-0.2 -0.4,0.4 -0.3,0.1 -0.8,0.3 -1.4,0.6 -1.4,0.6 -1.6,0.6 -2.1,1 -0.5,0.4 -0.9,0.9 -1.1,1.1 -0.2,0.2 -0.4,0.5 -0.6,0.9 -0.1,0.1 -0.1,0.2 -0.2,0.3 -0.1,0.1 -0.1,0.2 -0.1,0.3 -0.4,1.3 -1,2.5 -0.8,3.7 v 0.3 0.3 c -0.3,0.6 0.5,0.5 0.7,1 0.1,0.7 0,1.3 -0.1,1.9 0,0.1 -0.1,0.2 -0.1,0.3 -0.3,1 -0.8,1.4 -0.8,1.4 -0.1,0.1 -0.3,0.3 -0.6,0.5 -0.1,0.1 -0.2,0.1 -0.3,0.1 -1.6,0.5 -2.3,-1.3 -2.6,-2.5 0,-0.1 -0.1,-0.3 -0.1,-0.4 -0.1,-0.5 -0.1,-1.1 0.2,-1.4 l 0.2,-0.2 c 0.1,-0.1 0.1,-0.1 0.1,-0.2 -0.5,-1.7 -0.1,-3.3 0.1,-4.9 0,-0.1 0,-0.2 0.1,-0.3 0.1,-0.8 0.1,-1 0.4,-1.7 0.1,-0.3 0.5,-1.4 1.5,-2.4 1.9,-1.6 3.2,-1.5 4.3,-1.6 z" class="skin penis" sodipodi:nodetypes="ccccsscsccccccccccccsscccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_1.tw b/src/art/vector_revamp/layers/Flaccid_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f685b274c8671768e6047ecabf723b346d51d2fc
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path6-3" d="m 280.78125,468.36875 c 0,0.1 0.3,0.2 0.5,0.3 1.9,0.2 1.9,3.1 1.5,4.9 0,0.2 -0.1,0.3 -0.1,0.5 -0.6,2.2 -1.6,3.1 -1.6,3.1 -0.2,0.2 -0.9,0.9 -1.7,1.2 -0.2,0.1 -0.4,0.1 -0.7,0.2 -2.8,-0.1 -4,-2.7 -4.4,-5.1 -0.1,-0.2 -0.1,-0.5 -0.2,-0.8 -0.2,-1 -0.2,-2.1 0.4,-2.7 0.1,-0.1 0.3,-0.2 0.4,-0.3 0.1,-0.1 0.2,-0.2 0.3,-0.4" sodipodi:nodetypes="cccccccccssc"/><path id="path8-6" d="m 274.78125,465.26875 v -1.5 c 0,-0.3 0.1,-1.5 0.3,-3.2 0.1,-1 0.3,-1.8 0.3,-2 1,-5.2 4.8,-7.8 4.8,-7.8 0.4,-0.3 1.4,-0.9 1.8,-1.3 0.8,-0.5 3.4,-1.7 7,-0.6 0.5,0.2 4.1,1.7 4.7,2.6 0.7,1.2 -0.5,-0.8 -0.7,-0.5 l -0.6,0.6 c -0.3,0.4 -0.4,0.8 -0.5,0.9 -0.3,0.6 -1,0.8 -2.1,1.3 -1.4,0.5 -2.2,0.9 -3.1,1.5 -0.6,0.5 -1,1 -1.9,2 -0.7,0.9 -1.2,1.4 -1.6,2.3 -0.1,0.3 -0.3,0.8 -0.7,2 -0.3,0.7 -0.4,1 -0.5,1.3 -0.2,0.6 -0.3,1.1 -0.4,1.5 -0.2,0.9 -0.8,2.6 -2.3,4.1 -0.7,0.7 -1.7,1.6 -2.7,1.4 -1.4,-0.5 -1.8,-4.3 -1.8,-4.6 z" sodipodi:nodetypes="ssccccccccccccccscscs"/><path id="path10-7" d="m 286.98125,448.86875 c 1.9,-0.1 6.1,1.2 6.8,2.8 0.6,1.3 0.3,-0.4 -0.7,0.8 -0.6,0.2 -1.5,0.6 -2.6,1.1 -2.5,1 -3,1.1 -3.9,1.8 -1,0.7 -1.7,1.6 -2,2 -0.3,0.4 -0.7,0.9 -1.1,1.6 l -0.3,0.6 c -0.1,0.2 -0.2,0.3 -0.3,0.5 -0.7,2.3 -1.8,4.6 -1.4,6.8 v 0.6 0.6 c -0.6,1.2 0.9,0.9 1.2,1.9 0.3,1.3 0,2.3 -0.1,3.6 -0.1,0.2 -0.1,0.4 -0.2,0.6 -0.6,1.8 -1.4,2.5 -1.4,2.5 -0.2,0.2 -0.5,0.5 -1,0.8 -0.2,0.1 -0.3,0.2 -0.5,0.3 -2.9,0.9 -4.2,-2.4 -4.8,-4.5 -0.1,-0.2 -0.1,-0.5 -0.2,-0.7 -0.2,-1 -0.2,-2 0.4,-2.5 0.1,-0.1 0.3,-0.2 0.4,-0.3 0.1,-0.1 0.2,-0.2 0.3,-0.4 -1,-3.1 -0.2,-6 0.2,-8.9 0,-0.2 0.1,-0.4 0.1,-0.6 0.2,-1.4 0.2,-1.8 0.8,-3.2 0.2,-0.5 0.9,-2.6 2.8,-4.5 3.1,-3.4 5.5,-3.2 7.5,-3.3 z" class="skin penis" sodipodi:nodetypes="cccccscscccccccccccccscccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_2.tw b/src/art/vector_revamp/layers/Flaccid_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4742a2dd9aca6404e23a7a501718013564bb506f
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path6-5" d="m 275.575,476.125 c 0.1,0.1 0.4,0.3 0.8,0.4 2.8,0.3 2.8,4.4 2.2,7 -0.1,0.2 -0.1,0.5 -0.2,0.7 -0.9,3.1 -2.2,4.4 -2.2,4.4 -0.3,0.3 -1.2,1.2 -2.4,1.7 -0.3,0.1 -0.6,0.2 -1,0.2 -4,-0.1 -5.8,-3.9 -6.3,-7.3 -0.1,-0.4 -0.2,-0.7 -0.2,-1.1 -0.3,-1.5 -0.2,-3.1 0.6,-3.9 0.2,-0.2 0.4,-0.3 0.6,-0.5 0.2,-0.1 0.3,-0.3 0.4,-0.6" sodipodi:nodetypes="cccccccccscc"/><path id="path8-3" d="m 266.875,471.725 c 0,-0.5 0,-1.2 0.1,-2.1 0,-0.4 0.1,-2.1 0.5,-4.5 0.2,-1.4 0.4,-2.5 0.5,-2.8 1.5,-7.5 6.9,-11.2 6.9,-11.2 0.6,-0.5 2,-1.3 2.6,-1.8 1.2,-0.8 4.9,-2.5 10.1,-0.9 0.7,0.2 5.9,2.4 6.7,3.8 1,1.8 -0.7,-1.1 -1,-0.8 -0.2,0.1 -0.5,0.4 -0.8,0.8 -0.4,0.6 -0.6,1.1 -0.7,1.3 -0.4,0.9 -1.5,1.2 -3,1.8 -2,0.8 -3.2,1.3 -4.4,2.2 -0.9,0.7 -1.5,1.4 -2.7,2.9 -1.1,1.3 -1.7,2 -2.2,3.2 -0.2,0.4 -0.5,1.2 -1.1,2.8 -0.4,1 -0.5,1.4 -0.7,1.9 -0.3,0.9 -0.4,1.6 -0.5,2.2 -0.3,1.3 -1.2,3.8 -3.4,5.8 -1.1,1 -2.5,2.3 -3.9,1.9 -2.4,-0.6 -2.9,-6.1 -3,-6.5 z" sodipodi:nodetypes="cccccccccccsccccccscc"/><path id="path10-5" d="m 284.475,448.125 c 2.7,-0.2 8.7,1.7 9.7,4 0.9,1.9 0.4,-0.6 -0.9,1.1 -0.8,0.4 -2.1,0.9 -3.7,1.6 -3.6,1.4 -4.3,1.6 -5.6,2.5 -1.4,1 -2.4,2.3 -2.9,2.9 -0.4,0.5 -1,1.3 -1.6,2.3 -0.2,0.3 -0.3,0.6 -0.5,0.8 -0.2,0.2 -0.3,0.5 -0.4,0.7 -1.1,3.3 -2.5,6.6 -2,9.7 v 0.9 c 0,0.3 0,0.6 -0.1,0.9 -0.9,1.7 1.3,1.3 1.7,2.8 0.4,1.8 0,3.3 -0.1,5.1 -0.1,0.3 -0.1,0.6 -0.2,0.8 -0.8,2.6 -2,3.6 -2,3.6 -0.2,0.2 -0.8,0.8 -1.5,1.2 -0.2,0.1 -0.5,0.3 -0.8,0.4 -4.2,1.3 -6,-3.5 -6.9,-6.5 -0.1,-0.3 -0.2,-0.7 -0.2,-1 -0.2,-1.4 -0.2,-2.8 0.5,-3.6 0.2,-0.2 0.4,-0.3 0.5,-0.4 0.2,-0.1 0.3,-0.3 0.4,-0.5 -1.4,-4.5 -0.3,-8.6 0.2,-12.8 0,-0.3 0.1,-0.6 0.1,-0.9 0.3,-2.1 0.3,-2.6 1.2,-4.6 0.3,-0.7 1.3,-3.7 4,-6.4 4.8,-4.7 8.2,-4.4 11.1,-4.6 z" class="skin penis" sodipodi:nodetypes="cccccccsccsccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_3.tw b/src/art/vector_revamp/layers/Flaccid_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9f70e71fa681ef16889257cd86bd5c2241e7f6cc
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 269.6625,486.0125 c 0.1,0.2 0.6,0.4 1.1,0.6 4,0.4 4,6.4 3.2,10.1 -0.1,0.3 -0.2,0.7 -0.2,1 -1.2,4.5 -3.2,6.3 -3.2,6.3 -0.4,0.4 -1.8,1.8 -3.5,2.5 -0.4,0.2 -0.9,0.3 -1.4,0.3 -5.8,-0.2 -8.4,-5.7 -9.2,-10.6 -0.1,-0.5 -0.2,-1 -0.3,-1.6 -0.4,-2.2 -0.3,-4.4 0.8,-5.7 0.3,-0.3 0.6,-0.5 0.8,-0.7 0.3,-0.2 0.5,-0.4 0.6,-0.8" id="path8-62" sodipodi:nodetypes="cccccccccccc"/><path d="m 257.1625,479.7125 c 0,-0.7 0,-1.8 0.1,-3 0,-0.6 0.2,-3 0.7,-6.6 0.3,-2.1 0.6,-3.7 0.7,-4.1 2.2,-10.8 10,-16.3 10,-16.3 0.9,-0.7 2.9,-1.9 3.8,-2.6 1.8,-1.1 7.2,-3.6 14.6,-1.3 1.1,0.3 8.5,3.5 9.7,5.5 1.5,2.5 -1,-1.6 -1.5,-1.1 -0.2,0.2 -0.7,0.5 -1.2,1.2 -0.6,0.8 -0.9,1.6 -1,1.9 -0.6,1.3 -2.1,1.7 -4.3,2.6 -2.8,1.1 -4.6,1.9 -6.4,3.2 -1.3,1 -2.2,2 -3.9,4.2 -1.5,1.9 -2.4,2.9 -3.2,4.7 -0.3,0.5 -0.7,1.7 -1.5,4.1 -0.5,1.4 -0.7,2.1 -0.9,2.8 -0.4,1.3 -0.6,2.4 -0.7,3.1 -0.5,1.9 -1.7,5.5 -4.9,8.4 -1.6,1.4 -3.6,3.3 -5.6,2.8 -3.6,-0.9 -4.4,-8.9 -4.5,-9.5 z" id="path10-9" sodipodi:nodetypes="cccccccssccccccccccsc"/><path class="skin penis" d="m 282.6625,445.5125 c 3.9,-0.2 12.6,2.5 14.1,5.8 1.3,2.8 0.6,-0.9 -1.4,1.6 -1.2,0.5 -3,1.3 -5.4,2.3 -5.2,2.1 -6.2,2.3 -8.1,3.7 -2,1.5 -3.5,3.3 -4.2,4.2 -0.6,0.8 -1.5,1.9 -2.3,3.3 -0.3,0.4 -0.5,0.8 -0.7,1.2 -0.2,0.4 -0.4,0.7 -0.5,1 -1.5,4.8 -3.7,9.6 -2.9,14.1 v 1.3 c 0,0.4 0,0.9 -0.1,1.3 -1.2,2.4 1.9,1.9 2.5,4 0.5,2.7 0,4.8 -0.2,7.4 l -0.3,1.2 c -1.2,3.7 -2.9,5.3 -2.9,5.3 -0.3,0.3 -1.1,1.1 -2.2,1.7 -0.3,0.2 -0.7,0.4 -1.1,0.6 -6,1.9 -8.7,-5 -10,-9.4 l -0.3,-1.5 c -0.3,-2 -0.3,-4.1 0.8,-5.2 0.3,-0.3 0.5,-0.4 0.8,-0.6 0.2,-0.2 0.4,-0.4 0.6,-0.8 -2,-6.5 -0.4,-12.4 0.3,-18.5 0.1,-0.5 0.1,-0.9 0.2,-1.3 0.5,-3 0.4,-3.8 1.7,-6.6 0.5,-1.1 1.9,-5.3 5.8,-9.3 6.6,-6.9 11.6,-6.6 15.8,-6.8 z" id="path12" sodipodi:nodetypes="cccccccsccscccccccccsccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_4.tw b/src/art/vector_revamp/layers/Flaccid_4.tw
new file mode 100644
index 0000000000000000000000000000000000000000..645233116e76bb2aa0e794a50a6e6ca4c06b127a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_4.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_4 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path id="path6-1" d="m 262.35248,496.07062 c 0.1,0.3 0.7,0.5 1.4,0.7 5.2,0.5 5.2,8.1 4.1,12.9 -0.1,0.4 -0.2,0.9 -0.3,1.3 -1.6,5.7 -4.1,8.1 -4.1,8.1 -0.5,0.5 -2.3,2.3 -4.5,3.1 -0.6,0.2 -1.1,0.4 -1.8,0.4 -7.4,-0.3 -10.7,-7.2 -11.7,-13.5 -0.2,-0.7 -0.3,-1.3 -0.4,-2 -0.5,-2.8 -0.4,-5.7 1,-7.3 0.3,-0.4 0.7,-0.6 1,-0.9 0.3,-0.3 0.6,-0.6 0.8,-1.1" sodipodi:nodetypes="ccccccccccsc"/><path id="path8-2" d="m 246.45248,488.07062 c 0,-0.9 0,-2.3 0.1,-3.9 0,-0.8 0.2,-3.9 0.9,-8.4 0.4,-2.6 0.8,-4.7 0.9,-5.2 2.8,-13.8 12.7,-20.7 12.7,-20.8 1.1,-0.9 3.7,-2.4 4.8,-3.3 2.2,-1.4 9.1,-4.6 18.7,-1.7 1.4,0.4 10.9,4.4 12.4,7 1.9,3.2 -1.2,-2.1 -1.9,-1.4 -0.3,0.3 -0.8,0.7 -1.5,1.5 -0.8,1.1 -1.1,2 -1.3,2.4 -0.8,1.7 -2.7,2.2 -5.5,3.4 -3.6,1.4 -5.9,2.4 -8.1,4 -1.6,1.2 -2.8,2.6 -5,5.3 -2,2.4 -3.1,3.8 -4.1,6 -0.3,0.7 -0.9,2.2 -2,5.2 -0.7,1.8 -0.9,2.6 -1.2,3.5 -0.5,1.6 -0.8,3 -0.9,4 -0.6,2.4 -2.1,7 -6.2,10.7 -2,1.8 -4.6,4.3 -7.1,3.6 -4.6,-1 -5.6,-11.2 -5.7,-11.9 z" sodipodi:nodetypes="ccccccccscccccccccccc"/><path id="path10-70" d="m 278.85248,444.47062 c 5,-0.3 16,3.1 18,7.4 1.6,3.5 0.7,-1.2 -1.7,2 -1.5,0.7 -3.9,1.7 -6.8,2.9 -6.6,2.7 -7.9,2.9 -10.3,4.7 -2.6,1.9 -4.4,4.2 -5.4,5.4 -0.8,1 -1.9,2.4 -3,4.2 l -0.9,1.5 c -0.3,0.5 -0.5,0.9 -0.7,1.3 -2,6.1 -4.7,12.2 -3.6,18 v 1.7 c 0,0.6 -0.1,1.1 -0.1,1.7 -1.6,3.1 2.5,2.4 3.1,5.1 0.7,3.4 0,6.1 -0.3,9.4 -0.1,0.5 -0.3,1 -0.4,1.5 -1.5,4.7 -3.7,6.7 -3.7,6.7 -0.4,0.4 -1.4,1.4 -2.8,2.2 -0.4,0.3 -0.9,0.5 -1.4,0.7 -7.7,2.4 -11.1,-6.4 -12.8,-12 -0.2,-0.6 -0.3,-1.2 -0.4,-1.9 -0.4,-2.5 -0.4,-5.2 1,-6.7 0.3,-0.3 0.7,-0.6 1,-0.8 0.3,-0.2 0.6,-0.5 0.7,-1 -2.6,-8.3 -0.6,-15.8 0.4,-23.6 0.1,-0.6 0.2,-1.1 0.3,-1.7 0.6,-3.8 0.5,-4.8 2.1,-8.4 0.6,-1.3 2.4,-6.8 7.4,-11.8 8.6,-8.7 15,-8.2 20.3,-8.5 z" class="skin penis" sodipodi:nodetypes="cccccccsccsccccccccccscccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_5.tw b/src/art/vector_revamp/layers/Flaccid_5.tw
new file mode 100644
index 0000000000000000000000000000000000000000..af1cbadfc473b69cab382253556d51207a256ce3
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_5.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_5 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 248.15,510.825 c 0.1,0.4 1,0.7 1.8,0.9 6.7,0.6 6.7,10.6 5.3,16.7 -0.1,0.6 -0.3,1.1 -0.4,1.7 -2.1,7.4 -5.3,10.5 -5.3,10.5 -0.6,0.6 -2.9,3 -5.9,4.1 -0.7,0.3 -1.5,0.5 -2.3,0.6 -9.6,-0.4 -13.9,-9.4 -15.2,-17.5 -0.2,-0.8 -0.4,-1.7 -0.6,-2.6 -0.6,-3.6 -0.5,-7.4 1.3,-9.4 0.4,-0.5 0.9,-0.8 1.3,-1.1 0.4,-0.4 0.8,-0.7 1,-1.4" id="path7" sodipodi:nodetypes="cccccccccccc"/><path d="m 227.45,500.425 c 0,-1.2 0,-2.9 0.1,-5.1 0.1,-1.1 0.3,-5 1.1,-10.9 0.5,-3.4 1,-6.1 1.1,-6.7 3.6,-17.9 16.5,-26.9 16.5,-27 1.4,-1.2 4.8,-3.2 6.2,-4.3 2.9,-1.8 11.9,-6 24.2,-2.2 1.8,0.5 14.1,5.8 16.1,9.1 2.5,4.2 -1.6,-2.7 -2.5,-1.8 -0.4,0.4 -1.1,0.9 -1.9,2 -1.1,1.4 -1.5,2.6 -1.7,3.1 -1,2.2 -3.5,2.9 -7.2,4.4 -4.7,1.9 -7.7,3.1 -10.6,5.3 -2.1,1.6 -3.6,3.4 -6.5,6.9 -2.6,3.1 -4,4.9 -5.3,7.8 -0.4,0.9 -1.1,2.8 -2.6,6.7 -0.9,2.4 -1.2,3.4 -1.6,4.6 -0.6,2.1 -1,3.9 -1.2,5.2 -0.8,3.1 -2.8,9.1 -8,14 -2.6,2.4 -6,5.5 -9.3,4.6 -5.4,-1.5 -6.8,-14.7 -6.9,-15.7 z" id="path9" sodipodi:nodetypes="ccccccccscccccccccccc"/><path class="skin penis" d="m 269.65,443.725 c 6.5,-0.4 20.8,4.1 23.4,9.6 2.1,4.6 1,-1.5 -2.3,2.6 -1.9,0.8 -5,2.2 -8.9,3.7 -8.6,3.5 -10.3,3.8 -13.4,6.1 -3.3,2.5 -5.7,5.5 -7,7 -1.1,1.3 -2.5,3.2 -3.9,5.5 -0.4,0.7 -0.8,1.4 -1.1,2 -0.3,0.6 -0.6,1.2 -0.9,1.7 -2.6,7.9 -6.1,15.8 -4.7,23.3 v 2.2 c 0,0.7 -0.1,1.4 -0.2,2.2 -2.1,4 3.2,3.1 4.1,6.6 0.9,4.4 0,7.9 -0.3,12.3 -0.2,0.7 -0.4,1.3 -0.6,1.9 -2,6.1 -4.8,8.7 -4.8,8.7 -0.6,0.5 -1.9,1.8 -3.6,2.9 -0.6,0.3 -1.2,0.7 -1.8,0.9 -10,3.1 -14.4,-8.3 -16.6,-15.6 -0.2,-0.8 -0.4,-1.6 -0.5,-2.4 -0.6,-3.3 -0.5,-6.8 1.3,-8.7 0.4,-0.4 0.9,-0.7 1.3,-1.1 0.4,-0.3 0.7,-0.7 0.9,-1.3 -3.4,-10.8 -0.7,-20.5 0.5,-30.7 0.1,-0.8 0.2,-1.5 0.3,-2.2 0.8,-4.9 0.7,-6.3 2.8,-10.9 0.8,-1.8 3.1,-8.8 9.7,-15.3 11.1,-11.2 19.3,-10.6 26.3,-11 z" id="path11" sodipodi:nodetypes="cccccccsccsccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Flaccid_6.tw b/src/art/vector_revamp/layers/Flaccid_6.tw
new file mode 100644
index 0000000000000000000000000000000000000000..96c762dbe5694d0d3f144b76bf4a94bc5e656105
--- /dev/null
+++ b/src/art/vector_revamp/layers/Flaccid_6.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Flaccid_6 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 238.2,524.475 c 0.2,0.4 1.2,0.8 2.3,1.2 8.3,0.8 8.3,13 6.5,20.7 -0.2,0.7 -0.3,1.4 -0.5,2 -2.5,9.1 -6.6,13 -6.6,13 -0.8,0.8 -3.6,3.6 -7.2,5 -0.9,0.3 -1.8,0.6 -2.8,0.7 -11.9,-0.4 -17.2,-11.6 -18.7,-21.6 -0.3,-1 -0.5,-2.1 -0.7,-3.2 -0.8,-4.4 -0.7,-9.1 1.7,-11.7 0.5,-0.6 1.1,-1 1.7,-1.4 0.5,-0.4 1,-0.9 1.2,-1.7" id="path7-6" sodipodi:nodetypes="ccccccccsccc"/><path d="m 212.7,511.675 c 0,-1.5 0,-3.6 0.2,-6.2 0.1,-1.3 0.3,-6.2 1.4,-13.5 0.6,-4.2 1.2,-7.5 1.4,-8.3 4.3,-22.1 20.3,-33.3 20.3,-33.3 1.8,-1.4 5.9,-3.9 7.7,-5.3 3.6,-2.3 14.6,-7.4 29.9,-2.7 2.2,0.7 17.4,7.1 19.9,11.2 3.1,5.2 -1.9,-3.3 -3.1,-2.2 -0.5,0.4 -1.3,1.1 -2.4,2.4 -1.3,1.7 -1.8,3.2 -2.1,3.9 -1.2,2.7 -4.3,3.6 -8.9,5.4 -5.8,2.3 -9.4,3.8 -13,6.5 -2.6,2 -4.4,4.2 -8,8.6 -3.1,3.9 -4.9,6 -6.6,9.6 -0.5,1.1 -1.4,3.5 -3.2,8.3 -1.1,3 -1.5,4.2 -1.9,5.7 -0.8,2.6 -1.2,4.8 -1.5,6.4 -1,3.9 -3.4,11.2 -9.9,17.2 -3.2,2.9 -7.3,6.8 -11.4,5.7 -7.1,-1.9 -8.7,-18.2 -8.8,-19.4 z" id="path9-0" sodipodi:nodetypes="csccccccccccccccccccc"/><path class="skin penis" d="m 264.7,441.675 c 8,-0.5 25.7,5 28.8,11.9 2.6,5.6 1.2,-1.9 -2.8,3.3 -2.4,1 -6.2,2.7 -10.9,4.6 -10.6,4.3 -12.7,4.7 -16.5,7.5 -4.1,3.1 -7.1,6.7 -8.7,8.7 -1.3,1.6 -3,3.9 -4.8,6.8 -0.5,0.9 -1,1.7 -1.4,2.4 -0.4,0.8 -0.8,1.5 -1.1,2.1 -3.2,9.8 -7.5,19.5 -5.8,28.8 v 2.7 c 0,0.9 -0.1,1.8 -0.2,2.7 -2.5,4.9 4,3.8 5,8.2 1.1,5.4 0,9.8 -0.4,15.1 -0.2,0.8 -0.4,1.6 -0.7,2.4 -2.4,7.5 -5.9,10.8 -5.9,10.8 -0.7,0.7 -2.3,2.3 -4.4,3.6 -0.7,0.4 -1.5,0.8 -2.3,1.1 -12.3,3.9 -17.8,-10.2 -20.5,-19.3 -0.2,-1 -0.5,-2 -0.7,-3 -0.7,-4.1 -0.6,-8.3 1.6,-10.7 0.5,-0.6 1.1,-0.9 1.6,-1.3 0.5,-0.4 0.9,-0.8 1.1,-1.6 -4.2,-13.4 -0.9,-25.3 0.7,-37.9 0.1,-0.9 0.3,-1.8 0.4,-2.7 1,-6.1 0.9,-7.7 3.4,-13.5 1,-2.2 3.9,-10.8 11.9,-18.9 13.9,-14 24,-13.3 32.6,-13.8 z" id="path11-6" sodipodi:nodetypes="ccccccccccsccccccccccscccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Glasses.tw b/src/art/vector_revamp/layers/Glasses.tw
new file mode 100644
index 0000000000000000000000000000000000000000..58dc928038fa9c901024535bcf97171baa6fb461
--- /dev/null
+++ b/src/art/vector_revamp/layers/Glasses.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Glasses [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="glasses" d="m 263.69962,134.32933 c -0.0223,1.17276 0.2728,5.95704 1.9373,7.41 1.64409,1.33977 5.69174,1.26671 10.28071,0.7898 5.04176,-0.55856 7.66562,-0.91484 9.00537,-2.55894 1.7313,-2.06531 1.42698,-7.54917 1.14121,-9.13387 1.01873,-0.18372 1.92428,-0.34702 2.92261,-0.64391 1.13194,-0.20413 2.15068,-0.38784 3.16942,-0.57154 -0.0334,1.75914 0.23938,7.71618 2.70552,9.72582 1.08925,0.85544 2.8985,1.8148 13.13787,-0.3823 12.27685,-2.5645 13.66856,-4.56858 14.05081,-5.68939 0.87772,-2.26202 -0.0241,-7.17061 -0.78309,-8.78686 6.45204,-1.1635 12.88364,-2.44019 19.33566,-3.60368 l 0.42866,2.37706 -17.67859,3.07111 c 0.35816,1.3379 0.70515,5.76219 -0.12056,7.66422 -0.47504,1.25441 -2.0319,3.6389 -14.80235,6.05866 -11.16533,2.2472 -13.26218,0.98908 -14.37186,0.0204 -1.93171,-1.63851 -2.49398,-6.60836 -2.57378,-8.34709 -1.01872,0.18371 -3.0562,0.55114 -4.07495,0.73484 0.11132,1.26554 0.1596,5.97746 -1.13934,7.84794 -1.59771,2.1581 -4.44794,2.55521 -10.05565,3.21583 -4.92857,0.53814 -9.29539,0.78561 -11.00071,-0.89372 -1.26369,-1.17462 -1.56988,-5.37253 -1.64039,-6.41167 0.0316,-0.47318 0.0427,-1.05957 0.12613,-1.89275 z" id="path654" sodipodi:nodetypes="ccccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back.tw b/src/art/vector_revamp/layers/Hair_Back.tw
new file mode 100644
index 0000000000000000000000000000000000000000..20d94c93cf0186a6366372e040ea493bd4ebc457
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Messy_Long" style="display:inline;opacity:1" id="Hair_Back_Messy_Long" inkscape:groupmode="layer"><path d="m 421.87059,380.64019 c -3.03932,-10.30913 -9.46748,-10.1725 -8.79674,-10.39608 0.23534,0.13448 2.92804,10.12384 -5.13652,35.06773 -0.19265,-12.65113 -1.39153,-18.17452 -1.10525,-18.17452 -0.80906,6.16431 -3.24786,12.32862 -5.40429,18.49293 -0.31569,0.0631 -2.84325,-22.24577 -6.38175,-31.06232 1.07206,32.23049 -11.29172,28.6502 -22.01985,71.4037 -3.11413,-22.86314 -9.78122,-43.52203 -27.98178,-55.87624 0.19108,23.73437 -8.55182,48.16911 -14.86805,72.55526 -0.69179,-19.66776 -2.29541,-38.20757 -10.91812,-57.30319 -8.18294,30.36817 -7.31895,56.19246 -9.12147,83.66249 -21.24105,-27.54033 -32.39645,-61.8785 -31.23223,-62.34419 0.10172,0 -2.31867,12.83066 -1.28918,34.16797 -14.16717,-23.22985 -22.2415,-46.6547 -22.05217,-46.6547 0.0924,-0.0154 1.70696,11.68726 4.68664,25.8105 -8.59184,-7.307 -7.83012,-10.87296 -10.32722,-15.58366 -0.1751,-0.0253 2.68498,3.12926 3.75456,13.89608 -19.92627,-30.5886 -28.65562,-15.47991 -24.35435,-43.16885 -10.65147,19.83717 -6.24376,6.79378 -13.86024,26.48185 -6.76637,-6.9709 -13.05685,-20.88704 -12.23473,-21.19533 -9.24512,9.57871 -26.87321,1.49526 -40.73803,1.01752 16.37583,-11.81298 31.52325,-23.05585 40.14109,-39.39778 -9.51484,7.5241 -22.36985,2.36874 -34.56653,-0.40769 18.64585,-12.27798 44.4496,-23.9482 53.66771,-37.52503 -9.2005,3.6783 -19.23458,0.43997 -28.584,-1.40301 0.17169,0.65668 37.68393,-15.97874 46.49568,-27.65372 24.73057,-43.66884 50.52764,-99.82402 9.58512,-190.47002 1.14234,-17.233142 9.01803,-31.460135 34.18225,-36.980603 41.82243,-10.669378 50.24886,8.449223 57.16719,32.812573 19.37318,86.49691 14.71251,132.59324 27.23157,168.84013 14.47083,22.63607 36.61138,32.79608 39.04005,30.95185 -8.68358,5.61468 -12.8343,4.49561 -22.91967,2.88806 6.80741,8.23021 18.48981,15.10769 42.87102,27.466 -5.85435,-0.46802 -14.70362,5.45731 -23.59846,1.74413 7.2716,11.43882 18.97913,15.24091 30.08299,17.54135 -3.69405,3.76789 -3.34336,7.19019 -16.21577,9.37904 1.34942,0.45017 5.67537,9.21611 4.80053,21.41777 z" class="shadow" id="path1498" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" id="path1499" class="hair" d="m 421.87059,380.64019 c -1.02958,-10.97904 -8.79674,-10.39608 -8.79674,-10.39608 0,0 1.66148,9.40009 -5.13652,35.06773 0.84246,-12.65113 -1.10525,-18.17452 -1.10525,-18.17452 l -5.40429,18.49293 c 0,0 -2.02922,-22.40858 -6.38175,-31.06232 -0.59834,31.89641 -11.85761,28.53702 -22.01985,71.4037 -2.7663,-23.17619 -7.97885,-45.14416 -27.98178,-55.87624 -2.20443,23.5501 -8.91857,48.1409 -14.86805,72.55526 -0.65879,-19.68426 -1.05601,-38.82727 -10.91812,-57.30319 -9.97899,29.96905 -7.4072,56.17285 -9.12147,83.66249 -20.04831,-28.01742 -31.23223,-62.34419 -31.23223,-62.34419 0,0 -3.88832,12.83066 -1.28918,34.16797 -12.46527,-23.22985 -22.05217,-46.6547 -22.05217,-46.6547 0,0 0.54521,11.88089 4.68664,25.8105 -7.43887,-7.63642 -7.40852,-10.99342 -10.32722,-15.58366 -0.1864,-0.0205 1.14793,3.788 3.75456,13.89608 -18.23729,-31.52692 -28.44807,-15.59521 -24.35435,-43.16885 -12.0896,19.11811 -6.52831,6.6515 -13.86024,26.48185 -5.7091,-7.36737 -12.23473,-21.19533 -12.23473,-21.19533 -11.28163,8.76411 -26.94357,1.46712 -40.73803,1.01752 17.13558,-12.08113 34.48693,-24.10185 40.14109,-39.39778 -10.85755,5.84571 -22.81243,1.81552 -34.56653,-0.40769 20.34647,-12.27798 47.17568,-23.9482 53.66771,-37.52503 -8.79536,2.46288 -18.93606,-0.45559 -28.584,-1.40301 0.7423,0.71374 41.3653,-15.6106 46.49568,-27.65372 26.24092,-43.81988 55.3088,-100.30214 9.58512,-190.47002 2.26233,-17.326474 10.70197,-31.600464 34.18225,-36.980603 39.30416,-9.662072 49.42012,8.780721 57.16719,32.812573 14.32491,86.95584 12.72243,132.77416 27.23157,168.84013 12.95686,23.47717 36.11894,33.06966 39.04005,30.95185 -9.48627,5.05897 -14.96268,3.02211 -22.91967,2.88806 6.34664,8.35588 16.55376,15.6357 42.87102,27.466 -6.46155,-0.83234 -16.34753,4.47097 -23.59846,1.74413 5.47163,11.88881 17.00945,15.73333 30.08299,17.54135 -4.18673,3.52155 -4.65397,6.53488 -16.21577,9.37904 0.82532,0.45017 4.59252,9.21611 4.80053,21.41777 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Messy_Medium" style="display:inline;opacity:1" inkscape:label="Hair_Back_Messy_Medium"><path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path1496" class="shadow" d="m 400.25741,267.99455 c -11.0391,4.75356 -21.42382,4.45462 -29.39691,-1.06248 11.99558,8.22175 31.67957,20.57196 43.77186,23.67781 -25.34777,7.67072 -31.71384,-0.74056 -42.68544,-5.12293 8.06557,12.95509 40.30743,24.97691 39.92518,25.07247 -0.75771,1.13657 -61.39721,-10.63099 -60.40683,-22.3126 10.52229,19.93937 8.55693,12.29087 0.92036,36.26495 -2.3639,-13.17942 -0.39323,-25.82155 -10.94162,-32.43915 -0.0284,13.78585 -4.66423,27.99505 -8.6317,42.12222 -0.73947,-11.29796 -1.96344,-22.05027 -6.33855,-33.26758 -4.7478,17.39864 -4.14565,32.61135 -5.29551,48.57056 -12.33426,-15.87942 -18.93522,-35.7479 -18.13198,-36.19414 0.0536,0 -1.2759,7.44888 -0.74844,19.83633 -8.16491,-13.22098 -12.91768,-27.05263 -12.80246,-27.08555 0.0379,0.0142 1.47184,7.33074 2.72084,14.98438 -5.0872,-4.43335 -4.44221,-6.38227 -5.99551,-9.04715 -0.10536,-0.0115 1.96411,2.36135 2.17973,8.06742 -12.12957,-17.82865 -10.35734,-18.74922 -13.9362,-34.19576 1.73015,14.36775 -1.94837,10.98234 -0.34703,24.50806 -10.15948,-21.5303 13.98608,-102.33862 -22.50808,-204.15985 -0.62954,-17.783404 6.81983,-32.924264 32.68555,-38.612273 39.1485,-9.773407 49.43023,8.088636 55.85824,30.363795 -3.74598,183.408478 57.53126,171.595068 60.1045,170.031468 z"/><path d="m 400.25741,267.99455 c -12.05816,3.93831 -22.05114,3.95276 -29.39691,-1.06248 11.38837,8.46463 29.91227,21.27888 43.77186,23.67781 -25.34777,5.81926 -31.71384,-1.21063 -42.68544,-5.12293 6.58811,13.32446 39.92518,25.07247 39.92518,25.07247 0,0 -60.49103,-11.99025 -60.40683,-22.3126 9.60598,19.98519 6.27009,12.40521 0.92036,36.26495 -1.60599,-13.45502 0.67115,-26.2086 -10.94162,-32.43915 -1.27979,13.67209 -5.17771,27.94837 -8.6317,42.12222 -0.38246,-11.42778 -0.61307,-22.54131 -6.33855,-33.26758 -5.79334,17.39864 -4.30028,32.61135 -5.29551,48.57056 -11.63912,-16.26561 -18.13198,-36.19414 -18.13198,-36.19414 0,0 -2.25738,7.44888 -0.74844,19.83633 -7.23676,-13.48617 -12.80246,-27.08555 -12.80246,-27.08555 0,0 0.31652,6.89749 2.72084,14.98438 -4.31866,-4.43335 -4.30104,-6.38227 -5.99551,-9.04715 -0.10821,-0.0119 0.66644,2.19914 2.17973,8.06742 -10.58772,-18.30307 -9.84723,-18.90618 -13.9362,-34.19576 0.7811,14.17794 -2.65866,10.84028 -0.34703,24.50806 -9.05199,-21.84673 18.95307,-103.75776 -22.50808,-204.15985 0.80658,-17.962919 9.11222,-33.210813 32.68555,-38.612273 36.05048,-8.862226 48.89504,8.246046 55.85824,30.363795 -9.70279,180.284238 55.46944,170.693618 60.1045,170.031468 z" class="hair" id="path1493" sodipodi:nodetypes="ccccccccccccccccccccccc"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Messy_Short" style="display:inline;opacity:1" id="Hair_Back_Messy_Short" inkscape:groupmode="layer"><path d="m 344.30213,163.49241 c -0.62532,-4.17031 -0.84807,-3.85928 -0.84705,-3.85979 0.0498,-0.0207 0.91983,3.55309 -2.00341,13.67755 0.2185,-4.91233 -0.45712,-7.08344 -0.43108,-7.08865 -0.57955,2.40428 -1.35935,4.80856 -2.10785,7.21284 -0.0209,0.003 -0.92981,-8.71701 -2.48909,-12.11531 -0.0451,12.50339 -4.62485,11.13036 -8.58845,27.84975 -1.13435,-9.03155 -3.32768,-17.57687 -10.9138,-21.79354 -0.67059,9.21684 -3.43836,18.7832 -5.79902,28.2989 -0.2739,-7.66902 -0.6167,-15.04148 -4.25842,-22.3501 -3.63359,11.75353 -2.84586,21.92003 -3.55767,32.63108 -7.97552,-10.84968 -12.35861,-24.22774 -12.18158,-24.31625 0.0152,0 -1.23598,5.00437 -0.50282,13.32661 -5.01363,-8.99968 -8.64441,-18.1795 -8.60106,-18.19684 0.0244,0.0105 0.44784,4.73472 1.82794,10.06693 -3.04966,-2.91491 -3.03295,-4.22634 -4.02795,-6.07813 -0.0681,-0.0119 0.66962,1.29253 1.4644,5.41992 -7.34076,-12.23961 -8.43093,-12.67841 -11.0848,-22.97368 0.70411,9.55503 -0.008,7.29224 1.48892,16.46521 -11.9477,-26.61774 -45.88518,-98.846887 12.60533,-112.069623 81.94109,-21.019875 64.37946,92.935353 60.00746,95.893123 z" class="shadow" id="path1690" sodipodi:nodetypes="ccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccc" id="path1692" class="hair" d="m 344.30213,163.49241 c -0.40157,-4.28218 -0.84705,-3.85979 -0.84705,-3.85979 0,0 0.64803,3.66634 -2.00341,13.67755 0.32859,-4.93435 -0.43108,-7.08865 -0.43108,-7.08865 l -2.10785,7.21284 c 0,0 -0.79146,-8.74007 -2.48909,-12.11531 -0.23337,12.44063 -4.62485,11.13036 -8.58845,27.84975 -1.07895,-9.03946 -3.11201,-17.60768 -10.9138,-21.79354 -0.8598,9.1853 -3.47853,18.77651 -5.79902,28.2989 -0.25695,-7.6775 -0.41188,-15.14389 -4.25842,-22.3501 -3.89213,11.6889 -2.88905,21.90923 -3.55767,32.63108 -7.81949,-10.9277 -12.18158,-24.31625 -12.18158,-24.31625 0,0 -1.51657,5.00437 -0.50282,13.32661 -4.86186,-9.06039 -8.60106,-18.19684 -8.60106,-18.19684 0,0 0.21265,4.63393 1.82794,10.06693 -2.9014,-2.97845 -2.88956,-4.28779 -4.02795,-6.07813 -0.0727,-0.008 0.44773,1.47744 1.4644,5.41992 -7.11313,-12.29652 -8.33772,-12.70171 -11.0848,-22.97368 0.52476,9.52514 -0.0641,7.28281 1.48892,16.46521 -11.31512,-26.61774 -45.10202,-98.846887 12.60533,-112.069623 81.43385,-20.018738 63.40041,92.478433 60.00746,95.893123 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Tails_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Tails_Long"><path sodipodi:nodetypes="cccccc" id="path1492" class="shadow" d="m 328.65638,84.008358 c -0.60861,0.173889 -1.34272,-10.225449 2.66101,-13.323049 10.65634,-9.764922 29.44024,-10.595761 38.87664,-1.492806 88.46562,71.536397 61.69463,241.721077 32.68739,331.054337 -5.27944,-95.72009 -0.92016,-272.88945 -71.03624,-311.874658 -1.38046,-1.335535 -3.07243,-2.554256 -3.1888,-4.363824 z"/><path d="m 328.65638,84.008358 c 0,0 -0.78513,-10.384761 2.66101,-13.323049 9.86833,-8.414052 29.10128,-10.014694 38.87664,-1.492806 83.58531,72.867387 59.4595,242.330657 32.68739,331.054337 -1.93705,-97.39129 3.69397,-275.19652 -71.03624,-311.874658 z" class="hair" id="path3021-5" sodipodi:nodetypes="caaccc"/><path sodipodi:nodetypes="cccccc" id="path1494" class="shadow" d="m 272.06498,92.747415 c 0.6403,0.365888 3.32747,-12.250142 -2.66102,-16.710417 -9.58816,-9.475485 -27.12426,-7.551531 -35.34249,1.894561 -87.00172,79.526411 -41.40357,242.195391 -27.97997,336.871331 9.07082,-156.21304 5.00878,-280.4322 62.79467,-317.691653 2.13956,-1.147001 3.37977,-2.550959 3.18881,-4.363822 z"/><path d="m 272.06498,92.747415 c 0,0 1.72594,-13.165303 -2.66102,-16.710417 -9.17611,-7.415242 -26.87886,-6.324544 -35.34249,1.894561 -80.83393,78.498451 -40.30634,242.012521 -27.97997,336.871331 4.97451,-156.21304 -0.20009,-280.4322 62.79467,-317.691653 z" class="hair" id="path3021-5-2" sodipodi:nodetypes="caaccc"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Tails_Medium" style="display:inline;opacity:1" id="Hair_Back_Tails_Medium" inkscape:groupmode="layer"><path d="m 324.77453,81.645628 c -0.57274,-1.155617 -1.42602,-8.619228 2.23666,-11.198381 8.15392,-8.197687 24.28459,-9.064664 32.67686,-1.254744 61.17299,48.237107 52.97834,150.824207 27.678,226.259667 9.36744,-69.24717 -10.70689,-156.85175 -59.91124,-210.138631 -1.26333,-1.074675 -1.99649,-2.361419 -2.68028,-3.667911 z" class="shadow" id="path1488" sodipodi:nodetypes="cccccc"/><path sodipodi:nodetypes="caaccc" id="path1365" class="hair" d="m 324.77453,81.645628 c 0,0 -0.65991,-8.728672 2.23666,-11.198381 8.2946,-7.072235 24.3775,-8.321392 32.67686,-1.254744 57.85178,49.259017 50.18068,151.685027 27.678,226.259667 10.60254,-69.95294 -8.68368,-158.00787 -59.91124,-210.138631 z"/><path d="m 277.20794,88.99104 c 0.32753,-0.05459 1.8295,-11.128924 -2.23666,-14.045554 -8.01899,-6.998292 -22.68576,-5.638047 -29.70631,1.592429 -59.85993,54.894195 -34.87469,151.867435 -23.31454,231.149005 7.11993,-79.08768 -8.43148,-145.84586 52.57724,-215.027969 1.42001,-1.047108 2.32091,-2.267253 2.68027,-3.667911 z" class="shadow" id="path1490" sodipodi:nodetypes="cccccc"/><path sodipodi:nodetypes="caaccc" id="path1371" class="hair" d="m 277.20794,88.99104 c 0,0 1.4507,-11.065791 -2.23666,-14.045554 -7.71276,-6.232711 -22.53169,-5.25288 -29.70631,1.592429 -56.02955,53.457805 -33.6752,151.417625 -23.31454,231.149005 6.24619,-79.16711 -14.16715,-146.36728 52.57724,-215.027969 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Tails_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Tails_Short"><path sodipodi:nodetypes="cccccc" id="path1484" class="shadow" d="m 322.1441,80.017241 c -0.22946,0.114728 -1.03417,-7.357022 1.94419,-9.734066 6.69408,-7.05028 20.69609,-7.895526 28.40399,-1.090672 46.32656,35.458847 44.97339,100.720647 24.05879,165.634097 9.05174,-60.69199 -11.23833,-103.75229 -52.07717,-151.621069 -1.24274,-0.862991 -1.90887,-1.973098 -2.3298,-3.18829 z"/><path d="m 322.1441,80.017241 c 0,0 -0.57362,-7.587299 1.94419,-9.734066 7.20998,-6.14746 21.12116,-7.151656 28.40399,-1.090672 42.88292,35.688427 43.61899,100.810937 24.05879,165.634097 9.21613,-60.8058 -7.54819,-106.307 -52.07717,-151.621069 z" class="hair" id="path1375" sodipodi:nodetypes="caaccc"/><path sodipodi:nodetypes="cccccc" id="path1486" class="shadow" d="m 280.79738,86.402157 c 0.18696,0 2.55762,-9.618814 -1.94419,-12.208939 -7.3895,-6.3314 -19.88325,-4.977968 -25.82188,1.384201 -46.22232,40.053051 -30.31427,100.819071 -20.2659,169.884101 5.44046,-68.8121 -7.26687,-94.81189 45.70217,-155.871073 1.19633,-0.882879 1.95838,-1.95188 2.3298,-3.18829 z"/><path d="m 280.79738,86.402157 c 0,0 1.261,-9.618814 -1.94419,-12.208939 -6.70424,-5.417713 -19.53151,-4.508985 -25.82188,1.384201 -41.61849,38.990631 -29.27178,100.578501 -20.2659,169.884101 5.42943,-68.81511 -12.31463,-96.18855 45.70217,-155.871073 z" class="hair" id="path1382" sodipodi:nodetypes="caaccc"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Ponytail_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Ponytail_Long"><path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5562" class="shadow" d="m 332.94933,94.02731 c 17.27669,32.48945 13.30386,265.18306 -0.6879,344.31836 0.46562,-0.17913 -0.6066,-87.24091 -1.38425,-148.09611 2.11883,73.87269 -2.63208,155.4846 -5.34536,181.43828 2.72921,-39.87427 -3.25886,-136.77668 -2.82638,-137.09264 0.5491,88.95688 5.78273,151.71155 -9.45767,249.29895 3.00486,-62.09738 3.83821,-146.22862 4.16739,-192.90676 5.9e-4,2.8e-4 0.72386,74.38533 -2.87525,117.5229 -5.8805,-31.46063 -7.18552,-79.69691 -7.11894,-79.70772 0.44432,47.92286 7.31736,118.97368 7.06362,128.19124 C 293.43105,450.92642 295.20434,340.6002 295.48956,340.6002 c -0.26489,-0.056 -0.6132,35.84766 -0.81516,65.26497 -16.40012,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 -0.20532,-5.382828 -12.8599,-21.321318 -10.4857,-24.878968 -4.31449,-2.515892 -19.09896,12.488664 -19.28673,12.394779 5.81896,-6.205175 10.33125,-18.959562 25.79967,-19.773427 -1.8017,-1.483244 -3.58993,-1.87202 -7.13755,-2.352763 5.26883,-2.793482 12.66192,-2.926127 16.11639,-1.238467 -6.68656,-7.058297 -26.40436,1.594429 -26.38295,1.42318 11.57761,-8.4204 22.50014,-13.150886 36.58411,-1.291488 3.13514,-8.583566 13.10108,-10.010897 13.10829,-10.009586 0.0411,0.01173 -5.71444,5.790045 -5.10834,12.68234 16.45893,-6.003872 24.93693,4.755208 24.94718,4.762666 0,0 -6.38542,-6.222061 -19.70984,-1.49918 45.67475,6.014913 22.28213,73.400377 24.16334,98.663287 -3.71842,-8.29723 -3.08472,-55.04749 -14.72037,-70.734675 z"/><path d="m 332.94933,94.02731 c 14.72238,30.35672 13.30386,265.18306 -0.6879,344.31836 0,0 1.14389,-88.692 -1.38425,-148.09611 1.23557,73.75536 -2.94265,155.44335 -5.34536,181.43828 2.96899,-40.04945 -2.82638,-137.09264 -2.82638,-137.09264 0.11982,48.22947 3.06925,129.14991 -2.98976,194.81382 -3.68786,33.76857 -6.46791,54.48513 -6.46791,54.48513 3.47636,-62.2122 4.33445,-146.34947 4.16739,-192.90676 0,0 -0.25103,73.9105 -2.87525,117.5229 -4.65895,-31.65895 -7.11894,-79.70772 -7.11894,-79.70772 -0.69253,47 7.14652,118.835 7.06362,128.19124 C 295.46406,450.92642 295.48956,340.6002 295.48956,340.6002 c -0.34499,-0.056 -1.25457,35.84766 -0.81516,65.26497 -13.92428,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 0.0196,-5.382828 -12.36271,-21.321318 -10.4857,-24.878968 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 43.13922,6.014913 22.15382,73.400377 24.16334,98.663287 -3.71645,-8.2992 -1.48912,-57.37893 -14.72037,-70.734675 z" class="hair" id="path1361" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Ponytail_Medium" style="display:inline;opacity:1" id="Hair_Back_Ponytail_Medium" inkscape:groupmode="layer"><path d="m 338.73254,99.799649 c 10.70349,13.881381 21.18015,74.868391 5.32699,170.546011 -0.0402,0 0.18797,-32.12345 -1.64844,-91.52756 2.85021,73.44776 -3.49161,98.87198 -6.36554,124.86973 2.90464,-39.69754 -4.22172,-103.86527 -3.3658,-104.34264 1.38041,48.3188 4.72387,96.47706 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.09061,-62.20465 4.24665,-146.20913 4.96276,-192.90676 0.26755,-0.0729 0.5836,73.66986 -3.42401,117.5229 -6.60557,-31.26971 -8.64734,-79.64525 -8.47762,-79.70772 0.52471,46.86202 8.60581,118.82525 8.41174,128.19124 -24.23916,-105.63426 -23.41911,-183.4258 -22.62029,-183.64361 -0.31391,0.0778 -0.62213,4.30116 -0.97074,32.51497 -14.16748,-108.47941 -10.54188,-66.79547 -4.30203,-153.485554 -0.4501,-5.237585 -13.04565,-9.634338 -10.42073,-13.378967 -4.87391,-2.702493 -19.22376,12.438856 -19.28673,12.394779 5.88556,-6.18071 10.77387,-18.799607 25.79967,-19.773427 -1.30947,-1.665866 -3.25819,-1.983686 -7.13755,-2.352763 5.08305,-2.808396 12.49572,-2.734437 16.11639,-1.238467 -10.13128,-6.689678 -26.429,1.437134 -26.38295,1.42318 11.9329,-8.60325 22.28196,-13.30397 36.58411,-1.291488 3.10901,-8.465754 13.07762,-10.012142 13.10829,-10.009586 0.0505,0 -5.72408,5.592785 -5.10834,12.68234 15.62676,-5.986792 24.92023,4.751317 24.94718,4.762666 0,0 -2.43639,-6.374697 -19.70984,-1.49918 27.76771,12.855661 28.98664,49.427407 28.88149,49.357307 -5.32663,-9.22178 -11.2568,-18.133444 -13.65531,-15.656351 z" class="shadow" id="path5560" sodipodi:nodetypes="ccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5552" class="hair" d="m 338.73254,99.799649 c 9.23041,13.640241 19.31221,74.452981 5.32699,170.546011 0,0 1.3622,-32.12345 -1.64844,-91.52756 1.47138,73.75536 -3.50427,98.8748 -6.36554,124.86973 3.53563,-40.04945 -3.3658,-104.34264 -3.3658,-104.34264 0.14268,48.22947 3.65502,96.39991 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.13984,-62.2122 5.16169,-146.34947 4.96276,-192.90676 0,0 -0.29895,73.9105 -3.42401,117.5229 -5.54812,-31.65895 -8.47762,-79.70772 -8.47762,-79.70772 -0.82469,47 8.51046,118.835 8.41174,128.19124 -22.65066,-106.06739 -22.62029,-183.64361 -22.62029,-183.64361 -0.41082,-0.056 -1.494,3.09766 -0.97074,32.51497 -12.59249,-109.00646 -9.13041,-67.2678 -4.30203,-153.485554 0.0234,-5.382828 -12.29774,-9.821317 -10.42073,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -12.21767,-19.947258 -13.65531,-15.656351 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Ponytail_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Ponytail_Short"><path sodipodi:nodetypes="cccccccccccccccccccccccccc" id="path5558" class="shadow" d="m 330.09873,86.89495 c 12.36307,13.85221 20.1684,32.1964 18.91567,88.57067 -8.24083,-39.52779 -11.69258,-54.85417 -22.46798,-67.03445 12.40076,26.29367 11.98884,66.31287 11.67798,66.31287 -3.64807,-23.79811 -10.24947,-27.61087 -15.54992,-42.44145 1.94675,54.15066 4.70881,53.34942 -8.57312,90.85447 7.28201,-33.08774 3.09748,-46.97184 3.77763,-76.18745 0.27299,0.091 1.24216,34.02668 -4.37411,60.5339 -5.25645,-19.25296 -5.53393,-36.7561 -4.68536,-37.07431 -1.25291,21.81818 -2.37871,22.5364 -0.49131,48.14878 -19.14465,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -3.50458,20.44019 -7.87807,27.59716 -10.11392,45.29647 -8.48739,-38.6007 -16.70838,-42.02974 -6.32827,-96.944804 -1.13499,-4.959669 0.5017,-9.590194 3.0143,-13.378967 -4.36941,-2.664614 -19.00718,12.49961 -19.28673,12.394779 5.6354,-6.220942 10.16012,-18.806676 25.79967,-19.773427 -2.08101,-1.488346 -3.53887,-1.963222 -7.13755,-2.352763 5.84771,-2.887216 13.13069,-2.842733 16.11639,-1.238467 -7.84877,-6.724063 -27.01758,1.476544 -26.38295,1.42318 12.09141,-8.715272 21.73199,-13.512615 36.58411,-1.291488 1.94283,-8.878618 13.10795,-10.009659 13.10829,-10.009586 0.0785,0.02415 -5.12511,5.986552 -5.10834,12.68234 16.02724,-6.009741 24.94717,4.762662 24.94718,4.762666 0.005,0.0083 -5.582,-6.399031 -19.70984,-1.49918 27.92573,12.058541 29.0381,49.388627 28.88149,49.357307 -5.98656,-9.41678 -21.24363,-32.636411 -22.28912,-28.56105 z"/><path d="m 330.09873,86.89495 c 11.18351,14.06668 20.15359,32.19909 18.91567,88.57067 -6.73029,-40.2144 -10.62687,-55.33858 -22.46798,-67.03445 10.37413,26.29367 11.67798,66.31287 11.67798,66.31287 -3.12067,-24.16729 -8.55499,-28.797 -15.54992,-42.44145 0.72836,53.62849 4.39271,53.21395 -8.57312,90.85447 7.57065,-33.2032 3.92906,-47.30447 3.77763,-76.18745 0,0 -0.40434,33.47785 -4.37411,60.5339 -4.22321,-19.64042 -4.68536,-37.07431 -4.68536,-37.07431 -2.66069,21.11429 -2.71426,22.36863 -0.49131,48.14878 -17.24159,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -5.06272,19.5903 -8.88723,27.04671 -10.11392,45.29647 -8.21036,-38.74987 -14.25266,-43.35205 -6.32827,-96.944804 0.0287,-5.382828 1.13729,-9.821317 3.0143,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -20.52514,-32.851957 -22.28912,-28.56105 z" class="hair" id="path5555" sodipodi:nodetypes="cccccccccccccccccccccccccc"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Neat_Long" style="display:inline;opacity:1" inkscape:label="Hair_Back_Neat_Long"><path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path5550" class="shadow" d="m 358.07814,397.95037 c 2.06029,-25.49185 -3.6166,-34.50231 -3.57737,-34.51539 0.57852,0 -0.12268,38.95411 -9.36157,50.51595 2.94416,-13.34207 2.10152,-19.2577 0.92061,-32.21283 0.49915,15.01177 -7.54212,27.68072 -16.5353,39.84304 -0.13422,-13.82819 -1.09469,-19.70412 -14.03781,-29.72485 1.80036,17.97553 -2.48299,22.97026 -6.55991,35.64803 0.16408,-16.56301 -2.63476,-19.23847 -7.17038,-31.29684 -2.88738,12.20742 -5.64385,15.53857 -7.29235,33.75129 -5.45453,-20.63331 -8.38563,-27.8309 -6.05982,-35.57691 -3.25259,12.13655 -7.85602,12.25301 -8.58305,25.81575 -4.77458,-12.28743 -9.07475,-20.07486 -5.41312,-32.36229 -7.49205,6.32889 -9.14678,12.2308 -9.50999,23.54625 -14.66474,-19.70778 -12.03859,-29.28377 -12.21811,-44.89434 1e-4,0 -1.09044,7.02297 -1.02255,21.16483 -9.47429,-25.90832 -12.35352,-40.71414 -12.30364,-71.06994 0,0 -0.57095,16.1343 2.0303,48.7201 -50.49484,-119.02333 68.68319,-131.09799 11.59481,-267.43042 4.9082,-12.570198 9.80645,-25.656586 28.33351,-28.681522 35.18785,-9.15612 47.93113,8.298298 59.33287,26.471359 -1.75777,158.087023 77.46025,174.916483 31.58047,274.647853 5.7422,-37.66628 -0.16574,-55.5838 -0.14333,-55.5866 -0.10427,27.51022 -6.97558,75.8488 -14.00427,83.22748 z"/><path d="m 358.07814,397.95037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -8.6859,-25.82072 -11.64275,-40.63517 -12.30364,-71.06994 0,0 -2.22509,15.514 2.0303,48.7201 -46.69666,-117.29689 69.72829,-130.62295 11.59481,-267.43042 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.44154,158.496333 75.22075,175.165313 31.58047,274.647853 6.93183,-37.81498 -0.14333,-55.5866 -0.14333,-55.5866 -1.50132,26.8752 -7.25425,75.72213 -14.00427,83.22748 z" class="hair" id="path5545" sodipodi:nodetypes="ccccccccccccccccccccccc"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Neat_Medium" style="display:inline;opacity:1" id="Hair_Back_Neat_Medium" inkscape:groupmode="layer"><path d="m 358.07814,293.70037 c 2.32187,-24.88272 -3.84806,-34.2447 -3.57737,-34.51539 0.26334,0 -0.0171,38.95411 -9.36157,50.51595 2.98144,-13.42538 2.50577,-19.63436 0.92061,-32.21283 0.63265,14.56249 -7.3412,27.29762 -16.5353,39.84304 0.0505,-14.10383 -1.08433,-20.09273 -14.03781,-29.72485 2.05673,18.33301 -2.43478,23.08531 -6.55991,35.64803 0.35107,-16.3406 -2.78912,-18.96211 -7.17038,-31.29684 -3.22479,12.08626 -5.79925,15.49629 -7.29235,33.75129 -5.50395,-20.72128 -8.31947,-27.91249 -6.05982,-35.57691 -3.67475,11.95167 -7.7352,12.28402 -8.58305,25.81575 -4.87557,-12.28743 -8.99766,-20.07486 -5.41312,-32.36229 -7.80415,5.93811 -9.6963,11.77677 -9.50999,23.54625 -14.64322,-19.70778 -12.69119,-29.28377 -12.21811,-44.89434 0.0716,0.0239 -1.83943,7.29498 -1.02255,21.16483 -30.62799,-83.16717 60.8009,-40.98839 1.32147,-185.53026 4.7355,-12.679504 10.20339,-25.443453 28.33351,-28.681522 34.37088,-9.144768 47.22382,8.487561 59.33287,26.471359 -1.35363,171.744633 39.70977,115.193163 17.43287,198.038733 z" class="shadow" id="path5548" sodipodi:nodetypes="ccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccc" id="path1394" class="hair" d="m 358.07814,293.70037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -29.86111,-82.9902 62.95251,-40.49186 1.32147,-185.53026 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.90942,172.124283 39.22845,115.233273 17.43287,198.038733 z"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Neat_Short" style="display:inline;opacity:1" inkscape:label="Hair_Back_Neat_Short"><path sodipodi:nodetypes="ccccccc" id="path1713" class="shadow" d="m 341.03176,163.49241 c -19.2084,3.76854 -55.46085,5.32927 -62.59166,5.9475 -0.37549,-0.64869 -1.20645,-1.35626 -1.76009,-2.17128 0.32341,0.92552 0.56958,1.85103 0.27442,2.77655 -3.93849,0.62454 -6.85101,1.92929 -8.52918,3.06294 -0.25176,0.036 -45.53604,-90.431971 14.01326,-103.917842 83.39811,-21.246401 59.1124,93.977662 58.59325,94.302132 z"/><path d="m 341.03176,163.49241 c -19.8314,2.62637 -55.8227,4.66587 -62.59166,5.9475 -0.22535,-0.72376 -1.02392,-1.44752 -1.76009,-2.17128 0.18666,0.92552 0.37515,1.85103 0.27442,2.77655 -4.02517,0.30673 -6.88398,1.80839 -8.52918,3.06294 0,0 -43.69409,-90.695106 14.01326,-103.917842 81.43385,-20.018738 58.59325,94.302132 58.59325,94.302132 z" class="hair" id="path1701" sodipodi:nodetypes="ccccccc"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Bun_Long" style="display:inline;opacity:1" id="Hair_Back_Bun_Long" inkscape:groupmode="layer"><path d="m 288.02131,114.19613 c -15.49748,-6.37935 -19.57944,-34.225422 -9.59248,-51.636773 1.63015,-2.287119 6.50866,-4.799229 8.79302,-5.699077 -3.61957,0.741873 -5.44458,2.532532 -7.25958,4.276633 1.18958,-1.995386 2.23622,-4.758417 4.21392,-6.206414 4.31379,-4.298458 11.01303,-6.497788 18.37652,-6.978354 0.86302,-0.165844 13.87736,1.955737 18.24708,4.815012 -4.22116,-2.292549 -4.24504,-2.442429 -14.77619,-4.030846 11.48969,-1.430073 23.48158,1.912693 30.56609,8.387615 0.78748,0.52719 4.33472,10.210431 4.19257,12.701247 -0.0599,-5.045596 -1.73948,-5.976141 -3.25834,-10.422707 1.43642,1.658835 4.7273,4.991198 4.80938,6.674736 1.28552,3.75017 1.44131,7.775494 -0.15344,11.944673 -4.15859,7.273307 -5.70119,7.116531 -7.653,8.957144 2.53112,-1.738906 1.29299,0.708593 6.72633,-7.627152 -6.96731,19.825902 -35.7839,42.026533 -53.23193,34.844263 z" class="shadow" id="path1473" sodipodi:nodetypes="ccccccccccccccccc"/><path d="m 309.7695,69.042417 c 15.64661,-11.129344 18.80312,-11.096436 41.42999,-15.068196 -25.95654,3.774553 -27.9134,4.741971 -41.42999,15.068196 z" class="shadow" id="path1475" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccccccccccccccccc" id="path1479" class="hair" d="m 288.02131,114.19613 c -15.49748,-6.37935 -18.14873,-35.042974 -9.59248,-51.636773 1.78563,-2.176066 6.79293,-4.59619 8.79302,-5.699077 -3.76297,0.61639 -5.55634,2.434736 -7.25958,4.276633 1.26496,-1.995386 2.57328,-4.758417 4.21392,-6.206414 4.49689,-3.968876 11.14843,-6.254099 18.37652,-6.978354 0.73645,-0.0738 13.52908,2.209038 18.24708,4.815012 -4.02174,-2.403337 -4.03718,-2.557904 -14.77619,-4.030846 11.25689,-0.304945 23.47235,1.957338 30.56609,8.387615 0.64767,0.587108 4.15861,10.285903 4.19257,12.701247 0.0369,-5.090239 -1.2955,-6.181051 -3.25834,-10.422707 1.03308,1.546791 4.31605,4.876965 4.80938,6.674736 1.0367,3.777818 0.89956,7.835687 -0.15344,11.944673 -4.05147,6.344853 -5.68648,6.988955 -7.653,8.957144 2.56461,-1.738906 1.74094,0.708593 6.72633,-7.627152 -8.06825,19.825902 -35.7839,42.026533 -53.23193,34.844263 z"/><path d="M 260.50425,64.574619 C 279.75191,62.724051 292.08134,62.15527 307.07034,79.56447 290.54726,59.193487 278.74011,63.32087 260.50425,64.574619 Z" class="shadow" id="path1481" sodipodi:nodetypes="ccc"/><path d="m 304.47634,72.084439 c 19.15256,-1.36324 21.83104,0.307209 43.22048,8.688257 -24.1303,-10.281904 -26.30478,-10.473909 -43.22048,-8.688257 z" class="shadow" id="path1483" sodipodi:nodetypes="ccc"/><path d="m 280.94908,44.659613 c 8.29033,1.735969 8.25754,0.856291 15.47301,6.297637 -7.85279,-6.279679 -8.34136,-4.703535 -15.47301,-6.297637 z" class="shadow" id="path1485" sodipodi:nodetypes="ccc"/><path d="m 318.96089,54.297233 c 7.27417,-4.33932 6.6541,-4.96417 15.64783,-5.849757 -10.03044,0.700683 -9.32206,2.191029 -15.64783,5.849757 z" class="shadow" id="path1487" sodipodi:nodetypes="ccc"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Bun_Medium" style="display:inline;opacity:1" inkscape:label="Hair_Back_Bun_Medium"><path sodipodi:nodetypes="ccccccccccccccccc" id="path1452" class="shadow" d="m 295.39868,97.782137 c -11.23648,-4.625355 -14.19612,-24.815202 -6.95505,-37.439332 1.18194,-1.65828 4.71911,-3.47969 6.37539,-4.132126 -2.62437,0.537896 -3.9476,1.836217 -5.26357,3.10078 0.8625,-1.446758 1.62138,-3.450098 3.0553,-4.499971 3.12773,-3.116604 7.98503,-4.711232 13.32394,-5.059668 0.62573,-0.120246 10.06181,1.418011 13.23007,3.491133 -3.06056,-1.662217 -3.07786,-1.770888 -10.7135,-2.922572 8.33062,-1.036876 17.02537,1.386801 22.162,6.081456 0.57097,0.382239 3.1429,7.40309 3.03983,9.20906 -0.0434,-3.658318 -1.26121,-4.333012 -2.36247,-7.557002 1.04149,1.202742 3.42754,3.618877 3.48706,4.839529 0.93206,2.719068 1.04501,5.637636 -0.11126,8.660507 -3.01519,5.273524 -4.13366,5.159852 -5.54882,6.494393 1.8352,-1.260797 0.93749,0.513765 4.87694,-5.53008 -5.05166,14.374804 -25.94518,30.471406 -38.59591,25.263893 z"/><path sodipodi:nodetypes="ccc" id="path1456" class="shadow" d="m 311.16723,65.043359 c 11.34461,-8.069351 13.63324,-8.04549 30.03889,-10.925222 -18.81983,2.736747 -20.23866,3.438175 -30.03889,10.925222 z"/><path sodipodi:nodetypes="ccc" id="path1458" class="shadow" d="m 276.52502,54.426478 c 14.11556,5.643554 14.33081,4.078369 25.39549,15.938037 C 289.98963,56.824987 288.63645,59.459377 276.52502,54.426478 Z"/><path d="m 295.39868,97.782137 c -11.23648,-4.625355 -13.15877,-25.40797 -6.95505,-37.439332 1.29467,-1.577761 4.92522,-3.332476 6.37539,-4.132126 -2.72835,0.446915 -4.02863,1.76531 -5.26357,3.10078 0.91716,-1.446758 1.86576,-3.450098 3.0553,-4.499971 3.26049,-2.877641 8.08319,-4.534545 13.32394,-5.059668 0.53396,-0.0535 9.80928,1.601667 13.23007,3.491133 -2.91596,-1.742544 -2.92715,-1.854612 -10.7135,-2.922572 8.16183,-0.221101 17.01868,1.419171 22.162,6.081456 0.4696,0.425683 3.01521,7.457811 3.03983,9.20906 0.0267,-3.690687 -0.9393,-4.481582 -2.36247,-7.557002 0.74904,1.121504 3.12936,3.536053 3.48706,4.839529 0.75165,2.739114 0.65222,5.681279 -0.11126,8.660507 -2.93752,4.600346 -4.12299,5.067353 -5.54882,6.494393 1.85948,-1.260797 1.26227,0.513765 4.87694,-5.53008 -5.8499,14.374804 -25.94518,30.471406 -38.59591,25.263893 z" class="hair" id="path1460" sodipodi:nodetypes="ccccccccccccccccc"/><path sodipodi:nodetypes="ccc" id="path1462" class="shadow" d="M 275.44738,61.803974 C 289.40293,60.462216 298.34241,60.04982 309.2102,72.672392 297.23011,57.902375 288.66933,60.894941 275.44738,61.803974 Z"/><path sodipodi:nodetypes="ccc" id="path1465" class="shadow" d="m 307.32942,67.248982 c 13.8866,-0.98842 15.82864,0.222743 31.33708,6.299436 -17.49572,-7.454912 -19.07232,-7.594127 -31.33708,-6.299436 z"/><path sodipodi:nodetypes="ccc" id="path1467" class="shadow" d="m 290.27094,47.364564 c 6.01092,1.258667 5.98714,0.620855 11.21873,4.566113 -5.69368,-4.553093 -6.04792,-3.410307 -11.21873,-4.566113 z"/><path sodipodi:nodetypes="ccc" id="path1469" class="shadow" d="m 317.83147,54.352337 c 5.27414,-3.146232 4.82457,-3.59928 11.34548,-4.241376 -7.27259,0.508031 -6.75898,1.588609 -11.34548,4.241376 z"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Bun_Short" style="display:inline;opacity:1" id="Hair_Back_Bun_Short" inkscape:groupmode="layer"><path d="M 296.71866,97.884396 C 286.62945,93.731299 283.972,75.602879 290.47374,64.267699 c 1.06126,-1.488966 4.23728,-3.124406 5.72445,-3.710227 -2.35642,0.482976 -3.54454,1.648735 -4.72615,2.784184 0.77444,-1.299041 1.45583,-3.097836 2.74335,-4.040515 2.80838,-2.798392 7.16974,-4.230205 11.96353,-4.543065 0.56185,-0.107968 9.03448,1.273229 11.87926,3.134681 -2.74807,-1.492501 -2.76361,-1.590076 -9.61963,-2.624171 7.48004,-0.931009 15.28704,1.245206 19.89921,5.460526 0.51267,0.343212 2.822,6.647219 2.72946,8.268796 -0.039,-3.284796 -1.13244,-3.890602 -2.12126,-6.785416 0.93515,1.079939 3.07758,3.249382 3.13102,4.345403 0.8369,2.441445 0.93832,5.062021 -0.0999,7.77625 -2.70733,4.735086 -3.7116,4.633021 -4.98227,5.831302 1.64782,-1.132067 0.84177,0.461309 4.37899,-4.965447 -4.53587,12.907106 -23.29612,27.36021 -34.65518,22.684396 z" class="shadow" id="path1741" sodipodi:nodetypes="ccccccccccccccccc"/><path d="m 310.87721,68.488317 c 10.1863,-7.245453 12.24126,-7.224029 26.97186,-9.809734 -16.89829,2.457319 -18.17225,3.08713 -26.97186,9.809734 z" class="shadow" id="XMLID_511_-3-7" sodipodi:nodetypes="ccc"/><path d="m 279.77204,58.955442 c 12.67434,5.067335 12.86761,3.661959 22.80256,14.310729 -10.71271,-12.157113 -11.92773,-9.7917 -22.80256,-14.310729 z" class="shadow" id="XMLID_511_-3-7-9-2" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccccccccccccccccc" id="path1723" class="hair" d="m 296.71866,97.884396 c -10.08921,-4.153097 -11.81523,-22.813762 -6.24492,-33.616697 1.16248,-1.416668 4.42234,-2.992223 5.72445,-3.710227 -2.44978,0.401284 -3.6173,1.585068 -4.72615,2.784184 0.82352,-1.299041 1.67526,-3.097836 2.74335,-4.040515 2.92758,-2.583827 7.25788,-4.071558 11.96353,-4.543065 0.47945,-0.04804 8.80774,1.438134 11.87926,3.134681 -2.61824,-1.564626 -2.62829,-1.665252 -9.61963,-2.624171 7.32849,-0.198526 15.28103,1.274271 19.89921,5.460526 0.42165,0.38222 2.70735,6.696353 2.72946,8.268796 0.024,-3.31386 -0.8434,-4.024003 -2.12126,-6.785416 0.67256,1.006996 2.80985,3.175014 3.13102,4.345403 0.67491,2.459444 0.58563,5.101208 -0.0999,7.77625 -2.63759,4.130641 -3.70202,4.549966 -4.98227,5.831302 1.66962,-1.132067 1.13339,0.461309 4.37899,-4.965447 -5.25261,12.907106 -23.29612,27.36021 -34.65518,22.684396 z"/><path d="M 278.80443,65.57968 C 291.33509,64.374918 299.36183,64.004629 309.12,75.338409 298.3631,62.076442 290.67639,64.763461 278.80443,65.57968 Z" class="shadow" id="XMLID_511_-3-7-9" sodipodi:nodetypes="ccc"/><path d="m 307.43125,70.468741 c 12.46875,-0.8875 14.2125,0.2 28.1375,5.65625 -15.70937,-6.69375 -17.125,-6.81875 -28.1375,-5.65625 z" class="shadow" id="XMLID_511_-3" sodipodi:nodetypes="ccc"/><path d="m 292.11448,52.614564 c 5.39719,1.130155 5.37584,0.557465 10.07327,4.099903 -5.11234,-4.088212 -5.43041,-3.062107 -10.07327,-4.099903 z" class="shadow" id="XMLID_511_-3-7-9-2-1" sodipodi:nodetypes="ccc"/><path d="m 316.86102,58.888871 c 4.73564,-2.824995 4.33197,-3.231786 10.18708,-3.808323 -6.53004,0.45616 -6.06887,1.426409 -10.18708,3.808323 z" class="shadow" id="XMLID_511_-3-7-9-2-1-7" sodipodi:nodetypes="ccc"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Braids_Long" inkscape:label="Hair_Back_Braids_Long" style="display:inline"><path sodipodi:nodetypes="ccccccccccccccccccccc" id="path1448" d="m 319.69478,148.38187 c -3.85899,17.48194 0.22348,21.39237 6.69724,28.10971 -5.08409,9.05576 -0.58685,19.93468 1.33442,24.57791 -0.27114,0.16946 -6.99024,14.41492 2.43634,24.76087 -4.87066,15.79899 -3.99392,30.03518 7.61618,41.35662 -11.11868,21.46042 -5.4792,31.14283 5.40273,46.08182 -8.69943,18.05985 1.48612,35.89274 7.90292,39.06616 -3.26418,11.20735 0.51135,22.63072 11.5928,29.58259 -1.15347,9.51542 -3.67834,15.5935 10.25703,27.42694 5.50659,25.84222 2.68939,27.63188 35.97337,69.06479 7.38629,-52.26314 -2.41999,-58.85625 -17.63596,-74.90644 3.99052,-11.78712 -0.95836,-21.8125 -9.88279,-29.34678 0.76644,-12.54685 -0.43275,-21.21513 -10.48388,-28.49841 1.67504,-14.25308 4.34315,-25.41834 -8.17928,-35.63569 8.82974,-13.30228 4.98873,-28.62874 -6.05172,-44.87092 7.84053,-12.61238 7.1083,-26.52316 0.27629,-42.7114 2.99511,-10.49153 -17.60826,-18.40272 -8.42989,-46.00091 4.8458,-12.19535 5.04697,-20.74725 -3.84376,-33.42143 -0.002,-14.98937 0.35919,-16.66176 -13.86985,-24.71382 1.84699,-15.6917 -1.93424,-25.64715 -15.27024,-32.978331 z" class="shadow"/><path d="m 319.69478,148.38187 c -2.73475,17.48194 1.09229,21.39237 6.69724,28.10971 -4.03622,8.95097 0.004,19.87559 1.33442,24.57791 0,0 -6.01507,13.80544 2.43634,24.76087 -3.7396,15.49052 -3.31646,29.85042 7.61618,41.35662 -9.77679,21.10258 -4.32401,30.83478 5.40273,46.08182 -7.56302,17.71893 1.95468,35.75217 7.90292,39.06616 -2.22535,10.77451 1.47189,22.2305 11.5928,29.58259 -0.96642,9.40631 -2.07991,14.66108 10.25703,27.42694 5.94136,25.64899 3.70325,27.18127 35.97337,69.06479 6.003,-52.26314 -3.86971,-58.85625 -17.63596,-74.90644 3.02752,-11.70687 -1.9948,-21.72613 -9.88279,-29.34678 -0.0864,-12.31426 -1.41144,-20.94821 -10.48388,-28.49841 0.77845,-14.18904 2.93136,-25.3175 -8.17928,-35.63569 7.79448,-13.14301 3.85819,-28.45481 -6.05172,-44.87092 7.22822,-12.47631 6.23076,-26.32815 0.27629,-42.7114 1.71282,-10.97239 -17.61232,-18.40424 -8.42989,-46.00091 4.17476,-12.44699 4.38469,-20.9956 -3.84376,-33.42143 1.2712,-8.44863 4.47474,-13.65656 -4.67746,-24.71382 0.99787,-15.05486 -2.3928,-25.303229 -15.27024,-32.978331 z" id="path5581" sodipodi:nodetypes="ccccccccccccccccccccc" class="hair"/><path class="shadow" sodipodi:nodetypes="ccccccccccccccccccc" id="path1471" d="m 273.88271,124.1062 c -7.7554,13.33353 -5.09245,35.54293 1.07182,42.51734 -4.23702,2.65919 -11.35838,12.94301 -5.36124,23.06511 -8.85342,19.913 -8.60986,16.50494 -5.19018,33.88533 -16.31102,23.64299 -12.92386,31.67074 -6.97253,44.12912 -9.51761,10.12931 -17.38685,24.10603 -7.72942,45.65097 -15.30979,15.55055 -10.28689,31.99128 -5.1286,39.00421 -5.303,7.35473 -11.23967,20.115 -4.21878,29.54107 -3.79145,5.93099 -9.08028,10.1845 -4.62123,22.41894 -15.94277,21.42413 -11.47678,46.71014 -9.77133,69.70043 23.46618,-24.39202 35.58003,-50.57015 28.12866,-64.68745 8.91983,-8.44841 6.57573,-17.04407 2.77257,-25.1637 5.74359,-7.23532 8.54953,-19.38381 3.75181,-29.62084 11.15278,-16.34361 14.15686,-22.02024 3.71187,-37.00449 9.63017,-9.53543 22.57528,-21.26879 8.9361,-46.02945 10.78487,-13.55199 16.39551,-15.48463 9.42758,-40.48013 9.98472,-15.85263 10.77003,-17.4868 6.33147,-35.64549 10.25118,-7.04675 6.47954,-23.21975 4.63308,-23.49044 0.63118,0.31559 8.21931,-18.66638 5.68996,-30.84234"/><path d="m 273.88271,124.1062 c -6.48064,13.20605 -4.01361,35.43505 1.07182,42.51734 -3.5883,2.59432 -9.74187,12.78136 -5.36124,23.06511 -7.57811,20.26081 -7.29258,16.8642 -5.19018,33.88533 -14.82913,23.14903 -12.38103,31.4898 -6.97253,44.12912 -8.87403,10.34384 -15.36011,24.78161 -7.72942,45.65097 -13.64034,15.55055 -9.14965,31.99128 -5.1286,39.00421 -4.40118,7.25453 -10.02975,19.98056 -4.21878,29.54107 -3.15949,5.93099 -8.08034,10.1845 -4.62123,22.41894 -14.09913,21.42413 -10.5609,46.71014 -9.77133,69.70043 22.50049,-24.04086 33.98656,-49.99071 28.12866,-64.68745 7.23179,-8.44841 5.73348,-17.04407 2.77257,-25.1637 4.18824,-7.23532 7.537,-19.38381 3.75181,-29.62084 9.33253,-15.60506 13.20916,-21.59918 3.71187,-37.00449 8.2613,-9.44988 20.22913,-21.12216 8.9361,-46.02945 10.11463,-13.91757 14.58872,-16.47015 9.42758,-40.48013 8.49026,-15.85263 9.438,-17.4868 6.33147,-35.64549 7.87011,-6.7066 5.75545,-23.11631 4.63308,-23.49044 0,0 6.18489,-19.68359 5.68996,-30.84234" id="path5583" sodipodi:nodetypes="ccccccccccccccccccc" class="hair"/></g><g transform="'+_art_transform+'"inkscape:label="Hair_Back_Braids_Medium" id="Hair_Back_Braids_Medium" inkscape:groupmode="layer" style="display:inline"><path class="shadow" d="m 329.06447,126.1239 c -8.34788,15.44764 2.62969,27.19559 5.17515,26.87496 -3.96041,9.07705 -0.70039,15.35697 4.47392,20.91966 -3.88891,8.57888 -3.7274,15.92235 2.35534,22.06038 -7.53049,11.39749 -3.94847,16.24517 1.00225,24.45776 -18.44373,33.94518 12.23286,62.65854 23.17338,95.35083 27.8364,-59.36898 -2.72878,-66.68271 -12.76221,-96.27852 6.00792,-6.48764 4.61118,-14.69459 -1.39201,-23.84667 4.95438,-5.82114 6.1798,-12.96104 1.85071,-22.45795 2.75981,-5.73086 7.41381,-9.68159 2.23845,-23.56104 3.53762,-11.66827 1.01227,-21.30883 -8.68769,-26.11779 -0.0289,-16.55876 -5.46391,-18.47592 -13.30959,-26.492386" id="path1474" sodipodi:nodetypes="cccccccccccc"/><path sodipodi:nodetypes="cccccccccccc" id="path5575" d="m 329.06447,126.1239 c -7.06306,15.5904 3.44322,27.28598 5.17515,26.87496 -2.09694,8.21699 0.46535,14.81894 4.47392,20.91966 -2.58577,7.99971 -2.93653,15.57085 2.35534,22.06038 -5.98581,10.71097 -3.50587,16.04846 1.00225,24.45776 -16.02484,33.94518 12.89483,62.65854 23.17338,95.35083 25.54436,-59.36898 -4.16533,-66.68271 -12.76221,-96.27852 4.62517,-6.60287 3.16579,-14.81504 -1.39201,-23.84667 4.40199,-6.28146 5.33151,-13.66795 1.85071,-22.45795 2.29325,-5.73086 5.88378,-9.68159 2.23845,-23.56104 2.31295,-11.51519 0.39566,-21.23175 -8.68769,-26.11779 -1.91645,-16.21557 -6.00556,-18.37744 -13.30959,-26.492386" class="hair"/><path class="shadow" d="m 275.51876,104.36354 c -7.2105,12.10503 -5.82828,23.59024 1.20643,34.79081 -9.57224,19.13787 -0.53963,20.56673 1.0028,28.91716 -13.0209,14.16755 -4.11733,22.96317 1.01185,29.17911 -6.61581,6.72173 -6.72767,15.42593 2.39469,25.63647 -26.88445,13.18272 -25.84521,48.83027 -23.62401,79.33609 37.96839,-32.36348 41.39051,-53.07199 31.97699,-78.58972 6.51909,-6.13236 11.7333,-12.36123 2.16879,-23.50571 9.5148,-8.46379 11.11493,-18.53115 2.81645,-30.52526 7.96781,-7.68882 6.18868,-17.27632 2.30129,-27.27248 9.14423,-9.2226 5.99753,-20.81315 2.55984,-32.40863" id="path1476" sodipodi:nodetypes="ccccccccccc"/><path sodipodi:nodetypes="ccccccccccc" id="path5577" d="m 275.51876,104.36354 c -6.56153,12.10503 -4.62779,23.59024 1.20643,34.79081 -6.87437,19.13787 -0.30941,20.56673 1.0028,28.91716 -11.35238,14.0007 -3.54846,22.90628 1.01185,29.17911 -6.01757,6.49739 -5.4896,14.96165 2.39469,25.63647 -24.69172,14.86943 -25.14333,49.37018 -23.62401,79.33609 36.77738,-33.10786 40.72914,-53.48535 31.97699,-78.58972 5.4667,-6.13236 10.6644,-12.36123 2.16879,-23.50571 7.88594,-8.57238 9.21268,-18.65797 2.81645,-30.52526 6.28053,-7.97003 5.07269,-17.46232 2.30129,-27.27248 7.88469,-9.2226 5.15346,-20.81315 2.55984,-32.40863" class="hair"/></g><g transform="'+_art_transform+'"inkscape:groupmode="layer" id="Hair_Back_Braids_Short" inkscape:label="Hair_Back_Braids_Short" style="display:inline"><path class="hair" sodipodi:nodetypes="cccccccccccc" id="path1480" d="m 335.13237,114.0704 c -0.89834,5.59624 3.61948,8.03643 4.33447,7.65141 -0.1293,2.71709 1.41676,4.46417 3.50964,5.91017 -0.15427,2.76384 0.39856,5.14423 2.98169,6.47497 -1.0436,3.94688 0.15376,5.3409 2.81581,7.3438 -2.03732,12.08181 9.42885,17.90077 16.84364,26.65277 2.43156,-20.87105 -7.82339,-19.9423 -13.76897,-28.00396 1.01077,-2.56527 -0.25409,-4.92225 -2.87175,-7.11773 0.88156,-2.3644 0.48923,-4.70879 -1.74188,-7.02778 0.16107,-1.96634 1.15831,-3.45337 -1.73706,-7.40344 0.71065,-0.26408 0.0334,-6.76692 -3.3595,-7.09399 0.28299,-5.27434 -1.47388,-4.93407 -4.20907,-7.38414"/><path d="m 335.13237,114.0704 c -0.5501,5.47187 3.84934,7.95434 4.33447,7.65141 0.20504,2.71709 1.66289,4.46417 3.50964,5.91017 0.0339,2.70112 0.7043,5.04232 2.98169,6.47497 -0.723,3.87564 0.57998,5.24618 2.81581,7.3438 -1.39454,11.98032 10.35817,17.75403 16.84364,26.65277 1.68314,-20.69834 -8.11338,-19.87538 -13.76897,-28.00396 0.73043,-2.48517 -0.55691,-4.83573 -2.87175,-7.11773 0.69547,-2.3644 0.22024,-4.70879 -1.74188,-7.02778 0.10994,-1.98029 0.7976,-3.55175 -1.73706,-7.40344 0.63941,-0.0741 -0.13645,-6.31409 -3.3595,-7.09399 -0.30155,-5.27434 -1.62567,-4.93407 -4.20907,-7.38414" id="path5566" sodipodi:nodetypes="cccccccccccc" class="hair"/><path class="shadow" sodipodi:nodetypes="ccccccccccc" id="path1478" d="m 260.07577,108.60618 c -2.55176,4.19753 -2.06795,8.18013 0.41834,12.06403 -3.31127,6.23872 -0.22343,7.08193 0.34773,10.02729 -4.47318,4.99586 -1.45674,8.00287 0.35087,10.11812 -2.24601,2.30615 -2.41121,5.3573 0.83038,8.88968 -9.44235,4.67196 -8.9277,17.0046 -8.19184,27.51051 13.12179,-11.5068 14.57739,-18.57897 11.08831,-27.2517 2.16128,-2.17958 4.28884,-4.40454 0.75205,-8.15082 3.19158,-2.92832 4.00734,-6.39117 0.97663,-10.58491 2.53365,-2.86072 2.31069,-6.20568 0.79799,-9.45698 3.20847,-3.19802 2.31209,-7.21715 0.88765,-11.23799"/><path d="m 260.07577,108.60618 c -2.27527,4.19753 -1.60473,8.18013 0.41834,12.06403 -2.38375,6.63623 -0.10729,7.1317 0.34773,10.02729 -3.93654,4.85487 -1.23046,7.94296 0.35087,10.11812 -2.08665,2.25303 -1.90357,5.18809 0.83038,8.88968 -8.56208,5.15611 -8.71868,17.11956 -8.19184,27.51051 12.75289,-11.48045 14.1232,-18.54653 11.08831,-27.2517 1.89563,-2.12645 3.69798,-4.28637 0.75205,-8.15082 2.73452,-2.97255 3.19458,-6.46982 0.97663,-10.58491 2.17783,-2.76368 1.759,-6.05522 0.79799,-9.45698 2.73409,-3.19802 1.78701,-7.21715 0.88765,-11.23799" id="path5572" sodipodi:nodetypes="ccccccccccc" class="hair"/></g></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Braids_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Braids_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5a2dbcfe08f622cab24f1da37c7bd595b5a53bf1
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Braids_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Braids_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccc" id="path1448" d="m 319.69478,148.38187 c -3.85899,17.48194 0.22348,21.39237 6.69724,28.10971 -5.08409,9.05576 -0.58685,19.93468 1.33442,24.57791 -0.27114,0.16946 -6.99024,14.41492 2.43634,24.76087 -4.87066,15.79899 -3.99392,30.03518 7.61618,41.35662 -11.11868,21.46042 -5.4792,31.14283 5.40273,46.08182 -8.69943,18.05985 1.48612,35.89274 7.90292,39.06616 -3.26418,11.20735 0.51135,22.63072 11.5928,29.58259 -1.15347,9.51542 -3.67834,15.5935 10.25703,27.42694 5.50659,25.84222 2.68939,27.63188 35.97337,69.06479 7.38629,-52.26314 -2.41999,-58.85625 -17.63596,-74.90644 3.99052,-11.78712 -0.95836,-21.8125 -9.88279,-29.34678 0.76644,-12.54685 -0.43275,-21.21513 -10.48388,-28.49841 1.67504,-14.25308 4.34315,-25.41834 -8.17928,-35.63569 8.82974,-13.30228 4.98873,-28.62874 -6.05172,-44.87092 7.84053,-12.61238 7.1083,-26.52316 0.27629,-42.7114 2.99511,-10.49153 -17.60826,-18.40272 -8.42989,-46.00091 4.8458,-12.19535 5.04697,-20.74725 -3.84376,-33.42143 -0.002,-14.98937 0.35919,-16.66176 -13.86985,-24.71382 1.84699,-15.6917 -1.93424,-25.64715 -15.27024,-32.978331 z" class="shadow"/><path d="m 319.69478,148.38187 c -2.73475,17.48194 1.09229,21.39237 6.69724,28.10971 -4.03622,8.95097 0.004,19.87559 1.33442,24.57791 0,0 -6.01507,13.80544 2.43634,24.76087 -3.7396,15.49052 -3.31646,29.85042 7.61618,41.35662 -9.77679,21.10258 -4.32401,30.83478 5.40273,46.08182 -7.56302,17.71893 1.95468,35.75217 7.90292,39.06616 -2.22535,10.77451 1.47189,22.2305 11.5928,29.58259 -0.96642,9.40631 -2.07991,14.66108 10.25703,27.42694 5.94136,25.64899 3.70325,27.18127 35.97337,69.06479 6.003,-52.26314 -3.86971,-58.85625 -17.63596,-74.90644 3.02752,-11.70687 -1.9948,-21.72613 -9.88279,-29.34678 -0.0864,-12.31426 -1.41144,-20.94821 -10.48388,-28.49841 0.77845,-14.18904 2.93136,-25.3175 -8.17928,-35.63569 7.79448,-13.14301 3.85819,-28.45481 -6.05172,-44.87092 7.22822,-12.47631 6.23076,-26.32815 0.27629,-42.7114 1.71282,-10.97239 -17.61232,-18.40424 -8.42989,-46.00091 4.17476,-12.44699 4.38469,-20.9956 -3.84376,-33.42143 1.2712,-8.44863 4.47474,-13.65656 -4.67746,-24.71382 0.99787,-15.05486 -2.3928,-25.303229 -15.27024,-32.978331 z" id="path5581" sodipodi:nodetypes="ccccccccccccccccccccc" class="hair"/><path class="shadow" sodipodi:nodetypes="ccccccccccccccccccc" id="path1471" d="m 273.88271,124.1062 c -7.7554,13.33353 -5.09245,35.54293 1.07182,42.51734 -4.23702,2.65919 -11.35838,12.94301 -5.36124,23.06511 -8.85342,19.913 -8.60986,16.50494 -5.19018,33.88533 -16.31102,23.64299 -12.92386,31.67074 -6.97253,44.12912 -9.51761,10.12931 -17.38685,24.10603 -7.72942,45.65097 -15.30979,15.55055 -10.28689,31.99128 -5.1286,39.00421 -5.303,7.35473 -11.23967,20.115 -4.21878,29.54107 -3.79145,5.93099 -9.08028,10.1845 -4.62123,22.41894 -15.94277,21.42413 -11.47678,46.71014 -9.77133,69.70043 23.46618,-24.39202 35.58003,-50.57015 28.12866,-64.68745 8.91983,-8.44841 6.57573,-17.04407 2.77257,-25.1637 5.74359,-7.23532 8.54953,-19.38381 3.75181,-29.62084 11.15278,-16.34361 14.15686,-22.02024 3.71187,-37.00449 9.63017,-9.53543 22.57528,-21.26879 8.9361,-46.02945 10.78487,-13.55199 16.39551,-15.48463 9.42758,-40.48013 9.98472,-15.85263 10.77003,-17.4868 6.33147,-35.64549 10.25118,-7.04675 6.47954,-23.21975 4.63308,-23.49044 0.63118,0.31559 8.21931,-18.66638 5.68996,-30.84234"/><path d="m 273.88271,124.1062 c -6.48064,13.20605 -4.01361,35.43505 1.07182,42.51734 -3.5883,2.59432 -9.74187,12.78136 -5.36124,23.06511 -7.57811,20.26081 -7.29258,16.8642 -5.19018,33.88533 -14.82913,23.14903 -12.38103,31.4898 -6.97253,44.12912 -8.87403,10.34384 -15.36011,24.78161 -7.72942,45.65097 -13.64034,15.55055 -9.14965,31.99128 -5.1286,39.00421 -4.40118,7.25453 -10.02975,19.98056 -4.21878,29.54107 -3.15949,5.93099 -8.08034,10.1845 -4.62123,22.41894 -14.09913,21.42413 -10.5609,46.71014 -9.77133,69.70043 22.50049,-24.04086 33.98656,-49.99071 28.12866,-64.68745 7.23179,-8.44841 5.73348,-17.04407 2.77257,-25.1637 4.18824,-7.23532 7.537,-19.38381 3.75181,-29.62084 9.33253,-15.60506 13.20916,-21.59918 3.71187,-37.00449 8.2613,-9.44988 20.22913,-21.12216 8.9361,-46.02945 10.11463,-13.91757 14.58872,-16.47015 9.42758,-40.48013 8.49026,-15.85263 9.438,-17.4868 6.33147,-35.64549 7.87011,-6.7066 5.75545,-23.11631 4.63308,-23.49044 0,0 6.18489,-19.68359 5.68996,-30.84234" id="path5583" sodipodi:nodetypes="ccccccccccccccccccc" class="hair"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Braids_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Braids_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e0c922c3f543c2dbdd4fcce7e4e6d1958804f9d8
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Braids_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Braids_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="shadow" d="m 329.06447,126.1239 c -8.34788,15.44764 2.62969,27.19559 5.17515,26.87496 -3.96041,9.07705 -0.70039,15.35697 4.47392,20.91966 -3.88891,8.57888 -3.7274,15.92235 2.35534,22.06038 -7.53049,11.39749 -3.94847,16.24517 1.00225,24.45776 -18.44373,33.94518 12.23286,62.65854 23.17338,95.35083 27.8364,-59.36898 -2.72878,-66.68271 -12.76221,-96.27852 6.00792,-6.48764 4.61118,-14.69459 -1.39201,-23.84667 4.95438,-5.82114 6.1798,-12.96104 1.85071,-22.45795 2.75981,-5.73086 7.41381,-9.68159 2.23845,-23.56104 3.53762,-11.66827 1.01227,-21.30883 -8.68769,-26.11779 -0.0289,-16.55876 -5.46391,-18.47592 -13.30959,-26.492386" id="path1474" sodipodi:nodetypes="cccccccccccc"/><path sodipodi:nodetypes="cccccccccccc" id="path5575" d="m 329.06447,126.1239 c -7.06306,15.5904 3.44322,27.28598 5.17515,26.87496 -2.09694,8.21699 0.46535,14.81894 4.47392,20.91966 -2.58577,7.99971 -2.93653,15.57085 2.35534,22.06038 -5.98581,10.71097 -3.50587,16.04846 1.00225,24.45776 -16.02484,33.94518 12.89483,62.65854 23.17338,95.35083 25.54436,-59.36898 -4.16533,-66.68271 -12.76221,-96.27852 4.62517,-6.60287 3.16579,-14.81504 -1.39201,-23.84667 4.40199,-6.28146 5.33151,-13.66795 1.85071,-22.45795 2.29325,-5.73086 5.88378,-9.68159 2.23845,-23.56104 2.31295,-11.51519 0.39566,-21.23175 -8.68769,-26.11779 -1.91645,-16.21557 -6.00556,-18.37744 -13.30959,-26.492386" class="hair"/><path class="shadow" d="m 275.51876,104.36354 c -7.2105,12.10503 -5.82828,23.59024 1.20643,34.79081 -9.57224,19.13787 -0.53963,20.56673 1.0028,28.91716 -13.0209,14.16755 -4.11733,22.96317 1.01185,29.17911 -6.61581,6.72173 -6.72767,15.42593 2.39469,25.63647 -26.88445,13.18272 -25.84521,48.83027 -23.62401,79.33609 37.96839,-32.36348 41.39051,-53.07199 31.97699,-78.58972 6.51909,-6.13236 11.7333,-12.36123 2.16879,-23.50571 9.5148,-8.46379 11.11493,-18.53115 2.81645,-30.52526 7.96781,-7.68882 6.18868,-17.27632 2.30129,-27.27248 9.14423,-9.2226 5.99753,-20.81315 2.55984,-32.40863" id="path1476" sodipodi:nodetypes="ccccccccccc"/><path sodipodi:nodetypes="ccccccccccc" id="path5577" d="m 275.51876,104.36354 c -6.56153,12.10503 -4.62779,23.59024 1.20643,34.79081 -6.87437,19.13787 -0.30941,20.56673 1.0028,28.91716 -11.35238,14.0007 -3.54846,22.90628 1.01185,29.17911 -6.01757,6.49739 -5.4896,14.96165 2.39469,25.63647 -24.69172,14.86943 -25.14333,49.37018 -23.62401,79.33609 36.77738,-33.10786 40.72914,-53.48535 31.97699,-78.58972 5.4667,-6.13236 10.6644,-12.36123 2.16879,-23.50571 7.88594,-8.57238 9.21268,-18.65797 2.81645,-30.52526 6.28053,-7.97003 5.07269,-17.46232 2.30129,-27.27248 7.88469,-9.2226 5.15346,-20.81315 2.55984,-32.40863" class="hair"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Braids_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Braids_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..799b309b2b48980e9a6248f57742f40951c5f567
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Braids_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Braids_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="hair" sodipodi:nodetypes="cccccccccccc" id="path1480" d="m 335.13237,114.0704 c -0.89834,5.59624 3.61948,8.03643 4.33447,7.65141 -0.1293,2.71709 1.41676,4.46417 3.50964,5.91017 -0.15427,2.76384 0.39856,5.14423 2.98169,6.47497 -1.0436,3.94688 0.15376,5.3409 2.81581,7.3438 -2.03732,12.08181 9.42885,17.90077 16.84364,26.65277 2.43156,-20.87105 -7.82339,-19.9423 -13.76897,-28.00396 1.01077,-2.56527 -0.25409,-4.92225 -2.87175,-7.11773 0.88156,-2.3644 0.48923,-4.70879 -1.74188,-7.02778 0.16107,-1.96634 1.15831,-3.45337 -1.73706,-7.40344 0.71065,-0.26408 0.0334,-6.76692 -3.3595,-7.09399 0.28299,-5.27434 -1.47388,-4.93407 -4.20907,-7.38414"/><path d="m 335.13237,114.0704 c -0.5501,5.47187 3.84934,7.95434 4.33447,7.65141 0.20504,2.71709 1.66289,4.46417 3.50964,5.91017 0.0339,2.70112 0.7043,5.04232 2.98169,6.47497 -0.723,3.87564 0.57998,5.24618 2.81581,7.3438 -1.39454,11.98032 10.35817,17.75403 16.84364,26.65277 1.68314,-20.69834 -8.11338,-19.87538 -13.76897,-28.00396 0.73043,-2.48517 -0.55691,-4.83573 -2.87175,-7.11773 0.69547,-2.3644 0.22024,-4.70879 -1.74188,-7.02778 0.10994,-1.98029 0.7976,-3.55175 -1.73706,-7.40344 0.63941,-0.0741 -0.13645,-6.31409 -3.3595,-7.09399 -0.30155,-5.27434 -1.62567,-4.93407 -4.20907,-7.38414" id="path5566" sodipodi:nodetypes="cccccccccccc" class="hair"/><path class="shadow" sodipodi:nodetypes="ccccccccccc" id="path1478" d="m 260.07577,108.60618 c -2.55176,4.19753 -2.06795,8.18013 0.41834,12.06403 -3.31127,6.23872 -0.22343,7.08193 0.34773,10.02729 -4.47318,4.99586 -1.45674,8.00287 0.35087,10.11812 -2.24601,2.30615 -2.41121,5.3573 0.83038,8.88968 -9.44235,4.67196 -8.9277,17.0046 -8.19184,27.51051 13.12179,-11.5068 14.57739,-18.57897 11.08831,-27.2517 2.16128,-2.17958 4.28884,-4.40454 0.75205,-8.15082 3.19158,-2.92832 4.00734,-6.39117 0.97663,-10.58491 2.53365,-2.86072 2.31069,-6.20568 0.79799,-9.45698 3.20847,-3.19802 2.31209,-7.21715 0.88765,-11.23799"/><path d="m 260.07577,108.60618 c -2.27527,4.19753 -1.60473,8.18013 0.41834,12.06403 -2.38375,6.63623 -0.10729,7.1317 0.34773,10.02729 -3.93654,4.85487 -1.23046,7.94296 0.35087,10.11812 -2.08665,2.25303 -1.90357,5.18809 0.83038,8.88968 -8.56208,5.15611 -8.71868,17.11956 -8.19184,27.51051 12.75289,-11.48045 14.1232,-18.54653 11.08831,-27.2517 1.89563,-2.12645 3.69798,-4.28637 0.75205,-8.15082 2.73452,-2.97255 3.19458,-6.46982 0.97663,-10.58491 2.17783,-2.76368 1.759,-6.05522 0.79799,-9.45698 2.73409,-3.19802 1.78701,-7.21715 0.88765,-11.23799" id="path5572" sodipodi:nodetypes="ccccccccccc" class="hair"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Bun_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Bun_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6034a1771d3fb145d09c79eff3bd35fa069d85ef
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Bun_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Bun_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 288.02131,114.19613 c -15.49748,-6.37935 -19.57944,-34.225422 -9.59248,-51.636773 1.63015,-2.287119 6.50866,-4.799229 8.79302,-5.699077 -3.61957,0.741873 -5.44458,2.532532 -7.25958,4.276633 1.18958,-1.995386 2.23622,-4.758417 4.21392,-6.206414 4.31379,-4.298458 11.01303,-6.497788 18.37652,-6.978354 0.86302,-0.165844 13.87736,1.955737 18.24708,4.815012 -4.22116,-2.292549 -4.24504,-2.442429 -14.77619,-4.030846 11.48969,-1.430073 23.48158,1.912693 30.56609,8.387615 0.78748,0.52719 4.33472,10.210431 4.19257,12.701247 -0.0599,-5.045596 -1.73948,-5.976141 -3.25834,-10.422707 1.43642,1.658835 4.7273,4.991198 4.80938,6.674736 1.28552,3.75017 1.44131,7.775494 -0.15344,11.944673 -4.15859,7.273307 -5.70119,7.116531 -7.653,8.957144 2.53112,-1.738906 1.29299,0.708593 6.72633,-7.627152 -6.96731,19.825902 -35.7839,42.026533 -53.23193,34.844263 z" class="shadow" id="path1473" sodipodi:nodetypes="ccccccccccccccccc"/><path d="m 309.7695,69.042417 c 15.64661,-11.129344 18.80312,-11.096436 41.42999,-15.068196 -25.95654,3.774553 -27.9134,4.741971 -41.42999,15.068196 z" class="shadow" id="path1475" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccccccccccccccccc" id="path1479" class="hair" d="m 288.02131,114.19613 c -15.49748,-6.37935 -18.14873,-35.042974 -9.59248,-51.636773 1.78563,-2.176066 6.79293,-4.59619 8.79302,-5.699077 -3.76297,0.61639 -5.55634,2.434736 -7.25958,4.276633 1.26496,-1.995386 2.57328,-4.758417 4.21392,-6.206414 4.49689,-3.968876 11.14843,-6.254099 18.37652,-6.978354 0.73645,-0.0738 13.52908,2.209038 18.24708,4.815012 -4.02174,-2.403337 -4.03718,-2.557904 -14.77619,-4.030846 11.25689,-0.304945 23.47235,1.957338 30.56609,8.387615 0.64767,0.587108 4.15861,10.285903 4.19257,12.701247 0.0369,-5.090239 -1.2955,-6.181051 -3.25834,-10.422707 1.03308,1.546791 4.31605,4.876965 4.80938,6.674736 1.0367,3.777818 0.89956,7.835687 -0.15344,11.944673 -4.05147,6.344853 -5.68648,6.988955 -7.653,8.957144 2.56461,-1.738906 1.74094,0.708593 6.72633,-7.627152 -8.06825,19.825902 -35.7839,42.026533 -53.23193,34.844263 z"/><path d="M 260.50425,64.574619 C 279.75191,62.724051 292.08134,62.15527 307.07034,79.56447 290.54726,59.193487 278.74011,63.32087 260.50425,64.574619 Z" class="shadow" id="path1481" sodipodi:nodetypes="ccc"/><path d="m 304.47634,72.084439 c 19.15256,-1.36324 21.83104,0.307209 43.22048,8.688257 -24.1303,-10.281904 -26.30478,-10.473909 -43.22048,-8.688257 z" class="shadow" id="path1483" sodipodi:nodetypes="ccc"/><path d="m 280.94908,44.659613 c 8.29033,1.735969 8.25754,0.856291 15.47301,6.297637 -7.85279,-6.279679 -8.34136,-4.703535 -15.47301,-6.297637 z" class="shadow" id="path1485" sodipodi:nodetypes="ccc"/><path d="m 318.96089,54.297233 c 7.27417,-4.33932 6.6541,-4.96417 15.64783,-5.849757 -10.03044,0.700683 -9.32206,2.191029 -15.64783,5.849757 z" class="shadow" id="path1487" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Bun_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Bun_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d723bcb53c67e2f3acdece168412f8f0a589b152
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Bun_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Bun_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccc" id="path1452" class="shadow" d="m 295.39868,97.782137 c -11.23648,-4.625355 -14.19612,-24.815202 -6.95505,-37.439332 1.18194,-1.65828 4.71911,-3.47969 6.37539,-4.132126 -2.62437,0.537896 -3.9476,1.836217 -5.26357,3.10078 0.8625,-1.446758 1.62138,-3.450098 3.0553,-4.499971 3.12773,-3.116604 7.98503,-4.711232 13.32394,-5.059668 0.62573,-0.120246 10.06181,1.418011 13.23007,3.491133 -3.06056,-1.662217 -3.07786,-1.770888 -10.7135,-2.922572 8.33062,-1.036876 17.02537,1.386801 22.162,6.081456 0.57097,0.382239 3.1429,7.40309 3.03983,9.20906 -0.0434,-3.658318 -1.26121,-4.333012 -2.36247,-7.557002 1.04149,1.202742 3.42754,3.618877 3.48706,4.839529 0.93206,2.719068 1.04501,5.637636 -0.11126,8.660507 -3.01519,5.273524 -4.13366,5.159852 -5.54882,6.494393 1.8352,-1.260797 0.93749,0.513765 4.87694,-5.53008 -5.05166,14.374804 -25.94518,30.471406 -38.59591,25.263893 z"/><path sodipodi:nodetypes="ccc" id="path1456" class="shadow" d="m 311.16723,65.043359 c 11.34461,-8.069351 13.63324,-8.04549 30.03889,-10.925222 -18.81983,2.736747 -20.23866,3.438175 -30.03889,10.925222 z"/><path sodipodi:nodetypes="ccc" id="path1458" class="shadow" d="m 276.52502,54.426478 c 14.11556,5.643554 14.33081,4.078369 25.39549,15.938037 C 289.98963,56.824987 288.63645,59.459377 276.52502,54.426478 Z"/><path d="m 295.39868,97.782137 c -11.23648,-4.625355 -13.15877,-25.40797 -6.95505,-37.439332 1.29467,-1.577761 4.92522,-3.332476 6.37539,-4.132126 -2.72835,0.446915 -4.02863,1.76531 -5.26357,3.10078 0.91716,-1.446758 1.86576,-3.450098 3.0553,-4.499971 3.26049,-2.877641 8.08319,-4.534545 13.32394,-5.059668 0.53396,-0.0535 9.80928,1.601667 13.23007,3.491133 -2.91596,-1.742544 -2.92715,-1.854612 -10.7135,-2.922572 8.16183,-0.221101 17.01868,1.419171 22.162,6.081456 0.4696,0.425683 3.01521,7.457811 3.03983,9.20906 0.0267,-3.690687 -0.9393,-4.481582 -2.36247,-7.557002 0.74904,1.121504 3.12936,3.536053 3.48706,4.839529 0.75165,2.739114 0.65222,5.681279 -0.11126,8.660507 -2.93752,4.600346 -4.12299,5.067353 -5.54882,6.494393 1.85948,-1.260797 1.26227,0.513765 4.87694,-5.53008 -5.8499,14.374804 -25.94518,30.471406 -38.59591,25.263893 z" class="hair" id="path1460" sodipodi:nodetypes="ccccccccccccccccc"/><path sodipodi:nodetypes="ccc" id="path1462" class="shadow" d="M 275.44738,61.803974 C 289.40293,60.462216 298.34241,60.04982 309.2102,72.672392 297.23011,57.902375 288.66933,60.894941 275.44738,61.803974 Z"/><path sodipodi:nodetypes="ccc" id="path1465" class="shadow" d="m 307.32942,67.248982 c 13.8866,-0.98842 15.82864,0.222743 31.33708,6.299436 -17.49572,-7.454912 -19.07232,-7.594127 -31.33708,-6.299436 z"/><path sodipodi:nodetypes="ccc" id="path1467" class="shadow" d="m 290.27094,47.364564 c 6.01092,1.258667 5.98714,0.620855 11.21873,4.566113 -5.69368,-4.553093 -6.04792,-3.410307 -11.21873,-4.566113 z"/><path sodipodi:nodetypes="ccc" id="path1469" class="shadow" d="m 317.83147,54.352337 c 5.27414,-3.146232 4.82457,-3.59928 11.34548,-4.241376 -7.27259,0.508031 -6.75898,1.588609 -11.34548,4.241376 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Bun_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Bun_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d7cd1d2dd3bbf13b61e95588e229a5cee3425fbb
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Bun_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Bun_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="M 296.71866,97.884396 C 286.62945,93.731299 283.972,75.602879 290.47374,64.267699 c 1.06126,-1.488966 4.23728,-3.124406 5.72445,-3.710227 -2.35642,0.482976 -3.54454,1.648735 -4.72615,2.784184 0.77444,-1.299041 1.45583,-3.097836 2.74335,-4.040515 2.80838,-2.798392 7.16974,-4.230205 11.96353,-4.543065 0.56185,-0.107968 9.03448,1.273229 11.87926,3.134681 -2.74807,-1.492501 -2.76361,-1.590076 -9.61963,-2.624171 7.48004,-0.931009 15.28704,1.245206 19.89921,5.460526 0.51267,0.343212 2.822,6.647219 2.72946,8.268796 -0.039,-3.284796 -1.13244,-3.890602 -2.12126,-6.785416 0.93515,1.079939 3.07758,3.249382 3.13102,4.345403 0.8369,2.441445 0.93832,5.062021 -0.0999,7.77625 -2.70733,4.735086 -3.7116,4.633021 -4.98227,5.831302 1.64782,-1.132067 0.84177,0.461309 4.37899,-4.965447 -4.53587,12.907106 -23.29612,27.36021 -34.65518,22.684396 z" class="shadow" id="path1741" sodipodi:nodetypes="ccccccccccccccccc"/><path d="m 310.87721,68.488317 c 10.1863,-7.245453 12.24126,-7.224029 26.97186,-9.809734 -16.89829,2.457319 -18.17225,3.08713 -26.97186,9.809734 z" class="shadow" id="XMLID_511_-3-7" sodipodi:nodetypes="ccc"/><path d="m 279.77204,58.955442 c 12.67434,5.067335 12.86761,3.661959 22.80256,14.310729 -10.71271,-12.157113 -11.92773,-9.7917 -22.80256,-14.310729 z" class="shadow" id="XMLID_511_-3-7-9-2" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccccccccccccccccc" id="path1723" class="hair" d="m 296.71866,97.884396 c -10.08921,-4.153097 -11.81523,-22.813762 -6.24492,-33.616697 1.16248,-1.416668 4.42234,-2.992223 5.72445,-3.710227 -2.44978,0.401284 -3.6173,1.585068 -4.72615,2.784184 0.82352,-1.299041 1.67526,-3.097836 2.74335,-4.040515 2.92758,-2.583827 7.25788,-4.071558 11.96353,-4.543065 0.47945,-0.04804 8.80774,1.438134 11.87926,3.134681 -2.61824,-1.564626 -2.62829,-1.665252 -9.61963,-2.624171 7.32849,-0.198526 15.28103,1.274271 19.89921,5.460526 0.42165,0.38222 2.70735,6.696353 2.72946,8.268796 0.024,-3.31386 -0.8434,-4.024003 -2.12126,-6.785416 0.67256,1.006996 2.80985,3.175014 3.13102,4.345403 0.67491,2.459444 0.58563,5.101208 -0.0999,7.77625 -2.63759,4.130641 -3.70202,4.549966 -4.98227,5.831302 1.66962,-1.132067 1.13339,0.461309 4.37899,-4.965447 -5.25261,12.907106 -23.29612,27.36021 -34.65518,22.684396 z"/><path d="M 278.80443,65.57968 C 291.33509,64.374918 299.36183,64.004629 309.12,75.338409 298.3631,62.076442 290.67639,64.763461 278.80443,65.57968 Z" class="shadow" id="XMLID_511_-3-7-9" sodipodi:nodetypes="ccc"/><path d="m 307.43125,70.468741 c 12.46875,-0.8875 14.2125,0.2 28.1375,5.65625 -15.70937,-6.69375 -17.125,-6.81875 -28.1375,-5.65625 z" class="shadow" id="XMLID_511_-3" sodipodi:nodetypes="ccc"/><path d="m 292.11448,52.614564 c 5.39719,1.130155 5.37584,0.557465 10.07327,4.099903 -5.11234,-4.088212 -5.43041,-3.062107 -10.07327,-4.099903 z" class="shadow" id="XMLID_511_-3-7-9-2-1" sodipodi:nodetypes="ccc"/><path d="m 316.86102,58.888871 c 4.73564,-2.824995 4.33197,-3.231786 10.18708,-3.808323 -6.53004,0.45616 -6.06887,1.426409 -10.18708,3.808323 z" class="shadow" id="XMLID_511_-3-7-9-2-1-7" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Messy_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Messy_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5686631bc94f3d242fe59d6b9510d9857b9033c4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Messy_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Messy_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 421.87059,380.64019 c -3.03932,-10.30913 -9.46748,-10.1725 -8.79674,-10.39608 0.23534,0.13448 2.92804,10.12384 -5.13652,35.06773 -0.19265,-12.65113 -1.39153,-18.17452 -1.10525,-18.17452 -0.80906,6.16431 -3.24786,12.32862 -5.40429,18.49293 -0.31569,0.0631 -2.84325,-22.24577 -6.38175,-31.06232 1.07206,32.23049 -11.29172,28.6502 -22.01985,71.4037 -3.11413,-22.86314 -9.78122,-43.52203 -27.98178,-55.87624 0.19108,23.73437 -8.55182,48.16911 -14.86805,72.55526 -0.69179,-19.66776 -2.29541,-38.20757 -10.91812,-57.30319 -8.18294,30.36817 -7.31895,56.19246 -9.12147,83.66249 -21.24105,-27.54033 -32.39645,-61.8785 -31.23223,-62.34419 0.10172,0 -2.31867,12.83066 -1.28918,34.16797 -14.16717,-23.22985 -22.2415,-46.6547 -22.05217,-46.6547 0.0924,-0.0154 1.70696,11.68726 4.68664,25.8105 -8.59184,-7.307 -7.83012,-10.87296 -10.32722,-15.58366 -0.1751,-0.0253 2.68498,3.12926 3.75456,13.89608 -19.92627,-30.5886 -28.65562,-15.47991 -24.35435,-43.16885 -10.65147,19.83717 -6.24376,6.79378 -13.86024,26.48185 -6.76637,-6.9709 -13.05685,-20.88704 -12.23473,-21.19533 -9.24512,9.57871 -26.87321,1.49526 -40.73803,1.01752 16.37583,-11.81298 31.52325,-23.05585 40.14109,-39.39778 -9.51484,7.5241 -22.36985,2.36874 -34.56653,-0.40769 18.64585,-12.27798 44.4496,-23.9482 53.66771,-37.52503 -9.2005,3.6783 -19.23458,0.43997 -28.584,-1.40301 0.17169,0.65668 37.68393,-15.97874 46.49568,-27.65372 24.73057,-43.66884 50.52764,-99.82402 9.58512,-190.47002 1.14234,-17.233142 9.01803,-31.460135 34.18225,-36.980603 41.82243,-10.669378 50.24886,8.449223 57.16719,32.812573 19.37318,86.49691 14.71251,132.59324 27.23157,168.84013 14.47083,22.63607 36.61138,32.79608 39.04005,30.95185 -8.68358,5.61468 -12.8343,4.49561 -22.91967,2.88806 6.80741,8.23021 18.48981,15.10769 42.87102,27.466 -5.85435,-0.46802 -14.70362,5.45731 -23.59846,1.74413 7.2716,11.43882 18.97913,15.24091 30.08299,17.54135 -3.69405,3.76789 -3.34336,7.19019 -16.21577,9.37904 1.34942,0.45017 5.67537,9.21611 4.80053,21.41777 z" class="shadow" id="path1498" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" id="path1499" class="hair" d="m 421.87059,380.64019 c -1.02958,-10.97904 -8.79674,-10.39608 -8.79674,-10.39608 0,0 1.66148,9.40009 -5.13652,35.06773 0.84246,-12.65113 -1.10525,-18.17452 -1.10525,-18.17452 l -5.40429,18.49293 c 0,0 -2.02922,-22.40858 -6.38175,-31.06232 -0.59834,31.89641 -11.85761,28.53702 -22.01985,71.4037 -2.7663,-23.17619 -7.97885,-45.14416 -27.98178,-55.87624 -2.20443,23.5501 -8.91857,48.1409 -14.86805,72.55526 -0.65879,-19.68426 -1.05601,-38.82727 -10.91812,-57.30319 -9.97899,29.96905 -7.4072,56.17285 -9.12147,83.66249 -20.04831,-28.01742 -31.23223,-62.34419 -31.23223,-62.34419 0,0 -3.88832,12.83066 -1.28918,34.16797 -12.46527,-23.22985 -22.05217,-46.6547 -22.05217,-46.6547 0,0 0.54521,11.88089 4.68664,25.8105 -7.43887,-7.63642 -7.40852,-10.99342 -10.32722,-15.58366 -0.1864,-0.0205 1.14793,3.788 3.75456,13.89608 -18.23729,-31.52692 -28.44807,-15.59521 -24.35435,-43.16885 -12.0896,19.11811 -6.52831,6.6515 -13.86024,26.48185 -5.7091,-7.36737 -12.23473,-21.19533 -12.23473,-21.19533 -11.28163,8.76411 -26.94357,1.46712 -40.73803,1.01752 17.13558,-12.08113 34.48693,-24.10185 40.14109,-39.39778 -10.85755,5.84571 -22.81243,1.81552 -34.56653,-0.40769 20.34647,-12.27798 47.17568,-23.9482 53.66771,-37.52503 -8.79536,2.46288 -18.93606,-0.45559 -28.584,-1.40301 0.7423,0.71374 41.3653,-15.6106 46.49568,-27.65372 26.24092,-43.81988 55.3088,-100.30214 9.58512,-190.47002 2.26233,-17.326474 10.70197,-31.600464 34.18225,-36.980603 39.30416,-9.662072 49.42012,8.780721 57.16719,32.812573 14.32491,86.95584 12.72243,132.77416 27.23157,168.84013 12.95686,23.47717 36.11894,33.06966 39.04005,30.95185 -9.48627,5.05897 -14.96268,3.02211 -22.91967,2.88806 6.34664,8.35588 16.55376,15.6357 42.87102,27.466 -6.46155,-0.83234 -16.34753,4.47097 -23.59846,1.74413 5.47163,11.88881 17.00945,15.73333 30.08299,17.54135 -4.18673,3.52155 -4.65397,6.53488 -16.21577,9.37904 0.82532,0.45017 4.59252,9.21611 4.80053,21.41777 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Messy_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Messy_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1e62d6ace3efb279d5993759fef7aaec2d0d2f21
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Messy_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Messy_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path1496" class="shadow" d="m 400.25741,267.99455 c -11.0391,4.75356 -21.42382,4.45462 -29.39691,-1.06248 11.99558,8.22175 31.67957,20.57196 43.77186,23.67781 -25.34777,7.67072 -31.71384,-0.74056 -42.68544,-5.12293 8.06557,12.95509 40.30743,24.97691 39.92518,25.07247 -0.75771,1.13657 -61.39721,-10.63099 -60.40683,-22.3126 10.52229,19.93937 8.55693,12.29087 0.92036,36.26495 -2.3639,-13.17942 -0.39323,-25.82155 -10.94162,-32.43915 -0.0284,13.78585 -4.66423,27.99505 -8.6317,42.12222 -0.73947,-11.29796 -1.96344,-22.05027 -6.33855,-33.26758 -4.7478,17.39864 -4.14565,32.61135 -5.29551,48.57056 -12.33426,-15.87942 -18.93522,-35.7479 -18.13198,-36.19414 0.0536,0 -1.2759,7.44888 -0.74844,19.83633 -8.16491,-13.22098 -12.91768,-27.05263 -12.80246,-27.08555 0.0379,0.0142 1.47184,7.33074 2.72084,14.98438 -5.0872,-4.43335 -4.44221,-6.38227 -5.99551,-9.04715 -0.10536,-0.0115 1.96411,2.36135 2.17973,8.06742 -12.12957,-17.82865 -10.35734,-18.74922 -13.9362,-34.19576 1.73015,14.36775 -1.94837,10.98234 -0.34703,24.50806 -10.15948,-21.5303 13.98608,-102.33862 -22.50808,-204.15985 -0.62954,-17.783404 6.81983,-32.924264 32.68555,-38.612273 39.1485,-9.773407 49.43023,8.088636 55.85824,30.363795 -3.74598,183.408478 57.53126,171.595068 60.1045,170.031468 z"/><path d="m 400.25741,267.99455 c -12.05816,3.93831 -22.05114,3.95276 -29.39691,-1.06248 11.38837,8.46463 29.91227,21.27888 43.77186,23.67781 -25.34777,5.81926 -31.71384,-1.21063 -42.68544,-5.12293 6.58811,13.32446 39.92518,25.07247 39.92518,25.07247 0,0 -60.49103,-11.99025 -60.40683,-22.3126 9.60598,19.98519 6.27009,12.40521 0.92036,36.26495 -1.60599,-13.45502 0.67115,-26.2086 -10.94162,-32.43915 -1.27979,13.67209 -5.17771,27.94837 -8.6317,42.12222 -0.38246,-11.42778 -0.61307,-22.54131 -6.33855,-33.26758 -5.79334,17.39864 -4.30028,32.61135 -5.29551,48.57056 -11.63912,-16.26561 -18.13198,-36.19414 -18.13198,-36.19414 0,0 -2.25738,7.44888 -0.74844,19.83633 -7.23676,-13.48617 -12.80246,-27.08555 -12.80246,-27.08555 0,0 0.31652,6.89749 2.72084,14.98438 -4.31866,-4.43335 -4.30104,-6.38227 -5.99551,-9.04715 -0.10821,-0.0119 0.66644,2.19914 2.17973,8.06742 -10.58772,-18.30307 -9.84723,-18.90618 -13.9362,-34.19576 0.7811,14.17794 -2.65866,10.84028 -0.34703,24.50806 -9.05199,-21.84673 18.95307,-103.75776 -22.50808,-204.15985 0.80658,-17.962919 9.11222,-33.210813 32.68555,-38.612273 36.05048,-8.862226 48.89504,8.246046 55.85824,30.363795 -9.70279,180.284238 55.46944,170.693618 60.1045,170.031468 z" class="hair" id="path1493" sodipodi:nodetypes="ccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Messy_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Messy_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6ad04a0648a8fc4ec8d9d4b2be008806b6dc52d3
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Messy_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Messy_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 344.30213,163.49241 c -0.62532,-4.17031 -0.84807,-3.85928 -0.84705,-3.85979 0.0498,-0.0207 0.91983,3.55309 -2.00341,13.67755 0.2185,-4.91233 -0.45712,-7.08344 -0.43108,-7.08865 -0.57955,2.40428 -1.35935,4.80856 -2.10785,7.21284 -0.0209,0.003 -0.92981,-8.71701 -2.48909,-12.11531 -0.0451,12.50339 -4.62485,11.13036 -8.58845,27.84975 -1.13435,-9.03155 -3.32768,-17.57687 -10.9138,-21.79354 -0.67059,9.21684 -3.43836,18.7832 -5.79902,28.2989 -0.2739,-7.66902 -0.6167,-15.04148 -4.25842,-22.3501 -3.63359,11.75353 -2.84586,21.92003 -3.55767,32.63108 -7.97552,-10.84968 -12.35861,-24.22774 -12.18158,-24.31625 0.0152,0 -1.23598,5.00437 -0.50282,13.32661 -5.01363,-8.99968 -8.64441,-18.1795 -8.60106,-18.19684 0.0244,0.0105 0.44784,4.73472 1.82794,10.06693 -3.04966,-2.91491 -3.03295,-4.22634 -4.02795,-6.07813 -0.0681,-0.0119 0.66962,1.29253 1.4644,5.41992 -7.34076,-12.23961 -8.43093,-12.67841 -11.0848,-22.97368 0.70411,9.55503 -0.008,7.29224 1.48892,16.46521 -11.9477,-26.61774 -45.88518,-98.846887 12.60533,-112.069623 81.94109,-21.019875 64.37946,92.935353 60.00746,95.893123 z" class="shadow" id="path1690" sodipodi:nodetypes="ccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccc" id="path1692" class="hair" d="m 344.30213,163.49241 c -0.40157,-4.28218 -0.84705,-3.85979 -0.84705,-3.85979 0,0 0.64803,3.66634 -2.00341,13.67755 0.32859,-4.93435 -0.43108,-7.08865 -0.43108,-7.08865 l -2.10785,7.21284 c 0,0 -0.79146,-8.74007 -2.48909,-12.11531 -0.23337,12.44063 -4.62485,11.13036 -8.58845,27.84975 -1.07895,-9.03946 -3.11201,-17.60768 -10.9138,-21.79354 -0.8598,9.1853 -3.47853,18.77651 -5.79902,28.2989 -0.25695,-7.6775 -0.41188,-15.14389 -4.25842,-22.3501 -3.89213,11.6889 -2.88905,21.90923 -3.55767,32.63108 -7.81949,-10.9277 -12.18158,-24.31625 -12.18158,-24.31625 0,0 -1.51657,5.00437 -0.50282,13.32661 -4.86186,-9.06039 -8.60106,-18.19684 -8.60106,-18.19684 0,0 0.21265,4.63393 1.82794,10.06693 -2.9014,-2.97845 -2.88956,-4.28779 -4.02795,-6.07813 -0.0727,-0.008 0.44773,1.47744 1.4644,5.41992 -7.11313,-12.29652 -8.33772,-12.70171 -11.0848,-22.97368 0.52476,9.52514 -0.0641,7.28281 1.48892,16.46521 -11.31512,-26.61774 -45.10202,-98.846887 12.60533,-112.069623 81.43385,-20.018738 63.40041,92.478433 60.00746,95.893123 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Neat_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Neat_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6e1e28a5b7e6fdb22c686d9fb811df005ed14ead
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Neat_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Neat_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccccc" id="path5550" class="shadow" d="m 358.07814,397.95037 c 2.06029,-25.49185 -3.6166,-34.50231 -3.57737,-34.51539 0.57852,0 -0.12268,38.95411 -9.36157,50.51595 2.94416,-13.34207 2.10152,-19.2577 0.92061,-32.21283 0.49915,15.01177 -7.54212,27.68072 -16.5353,39.84304 -0.13422,-13.82819 -1.09469,-19.70412 -14.03781,-29.72485 1.80036,17.97553 -2.48299,22.97026 -6.55991,35.64803 0.16408,-16.56301 -2.63476,-19.23847 -7.17038,-31.29684 -2.88738,12.20742 -5.64385,15.53857 -7.29235,33.75129 -5.45453,-20.63331 -8.38563,-27.8309 -6.05982,-35.57691 -3.25259,12.13655 -7.85602,12.25301 -8.58305,25.81575 -4.77458,-12.28743 -9.07475,-20.07486 -5.41312,-32.36229 -7.49205,6.32889 -9.14678,12.2308 -9.50999,23.54625 -14.66474,-19.70778 -12.03859,-29.28377 -12.21811,-44.89434 1e-4,0 -1.09044,7.02297 -1.02255,21.16483 -9.47429,-25.90832 -12.35352,-40.71414 -12.30364,-71.06994 0,0 -0.57095,16.1343 2.0303,48.7201 -50.49484,-119.02333 68.68319,-131.09799 11.59481,-267.43042 4.9082,-12.570198 9.80645,-25.656586 28.33351,-28.681522 35.18785,-9.15612 47.93113,8.298298 59.33287,26.471359 -1.75777,158.087023 77.46025,174.916483 31.58047,274.647853 5.7422,-37.66628 -0.16574,-55.5838 -0.14333,-55.5866 -0.10427,27.51022 -6.97558,75.8488 -14.00427,83.22748 z"/><path d="m 358.07814,397.95037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -8.6859,-25.82072 -11.64275,-40.63517 -12.30364,-71.06994 0,0 -2.22509,15.514 2.0303,48.7201 -46.69666,-117.29689 69.72829,-130.62295 11.59481,-267.43042 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.44154,158.496333 75.22075,175.165313 31.58047,274.647853 6.93183,-37.81498 -0.14333,-55.5866 -0.14333,-55.5866 -1.50132,26.8752 -7.25425,75.72213 -14.00427,83.22748 z" class="hair" id="path5545" sodipodi:nodetypes="ccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Neat_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Neat_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..69cc6d5d36ac2321f4c466520e9e8f98fe3d4502
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Neat_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Neat_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 358.07814,293.70037 c 2.32187,-24.88272 -3.84806,-34.2447 -3.57737,-34.51539 0.26334,0 -0.0171,38.95411 -9.36157,50.51595 2.98144,-13.42538 2.50577,-19.63436 0.92061,-32.21283 0.63265,14.56249 -7.3412,27.29762 -16.5353,39.84304 0.0505,-14.10383 -1.08433,-20.09273 -14.03781,-29.72485 2.05673,18.33301 -2.43478,23.08531 -6.55991,35.64803 0.35107,-16.3406 -2.78912,-18.96211 -7.17038,-31.29684 -3.22479,12.08626 -5.79925,15.49629 -7.29235,33.75129 -5.50395,-20.72128 -8.31947,-27.91249 -6.05982,-35.57691 -3.67475,11.95167 -7.7352,12.28402 -8.58305,25.81575 -4.87557,-12.28743 -8.99766,-20.07486 -5.41312,-32.36229 -7.80415,5.93811 -9.6963,11.77677 -9.50999,23.54625 -14.64322,-19.70778 -12.69119,-29.28377 -12.21811,-44.89434 0.0716,0.0239 -1.83943,7.29498 -1.02255,21.16483 -30.62799,-83.16717 60.8009,-40.98839 1.32147,-185.53026 4.7355,-12.679504 10.20339,-25.443453 28.33351,-28.681522 34.37088,-9.144768 47.22382,8.487561 59.33287,26.471359 -1.35363,171.744633 39.70977,115.193163 17.43287,198.038733 z" class="shadow" id="path5548" sodipodi:nodetypes="ccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccc" id="path1394" class="hair" d="m 358.07814,293.70037 c 3.36635,-25.9272 -3.57737,-34.51539 -3.57737,-34.51539 0,0 -0.71081,38.95411 -9.36157,50.51595 3.19408,-13.42538 3.23151,-19.63436 0.92061,-32.21283 -0.12297,14.47853 -8.08556,27.21491 -16.5353,39.84304 0.38276,-14.1513 -0.29176,-20.20595 -14.03781,-29.72485 0.86512,17.97553 -2.81828,22.97026 -6.55991,35.64803 0.90545,-16.3406 -1.71357,-18.96211 -7.17038,-31.29684 -3.93329,11.73201 -6.42296,15.18443 -7.29235,33.75129 -4.51454,-21.05108 -7.84987,-28.06902 -6.05982,-35.57691 -4.3151,11.71154 -8.42776,12.02431 -8.58305,25.81575 -4.13176,-12.28743 -7.76759,-20.07486 -5.41312,-32.36229 -8.57152,5.60924 -10.06457,11.61894 -9.50999,23.54625 -13.87568,-19.70778 -11.32851,-29.28377 -12.21811,-44.89434 0,0 -2.65547,7.02297 -1.02255,21.16483 -29.86111,-82.9902 62.95251,-40.49186 1.32147,-185.53026 5.24941,-12.37116 11.30836,-24.780474 28.33351,-28.681522 32.99151,-8.110243 46.68494,8.891724 59.33287,26.471359 -5.90942,172.124283 39.22845,115.233273 17.43287,198.038733 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Neat_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Neat_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..0a3eaf359c73f4896fe4d974c0153c01a59e8fcf
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Neat_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Neat_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccc" id="path1713" class="shadow" d="m 341.03176,163.49241 c -19.2084,3.76854 -55.46085,5.32927 -62.59166,5.9475 -0.37549,-0.64869 -1.20645,-1.35626 -1.76009,-2.17128 0.32341,0.92552 0.56958,1.85103 0.27442,2.77655 -3.93849,0.62454 -6.85101,1.92929 -8.52918,3.06294 -0.25176,0.036 -45.53604,-90.431971 14.01326,-103.917842 83.39811,-21.246401 59.1124,93.977662 58.59325,94.302132 z"/><path d="m 341.03176,163.49241 c -19.8314,2.62637 -55.8227,4.66587 -62.59166,5.9475 -0.22535,-0.72376 -1.02392,-1.44752 -1.76009,-2.17128 0.18666,0.92552 0.37515,1.85103 0.27442,2.77655 -4.02517,0.30673 -6.88398,1.80839 -8.52918,3.06294 0,0 -43.69409,-90.695106 14.01326,-103.917842 81.43385,-20.018738 58.59325,94.302132 58.59325,94.302132 z" class="hair" id="path1701" sodipodi:nodetypes="ccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Ponytail_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a2026ec542a48664109e979e4b4287f02ee21e3e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Ponytail_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5562" class="shadow" d="m 332.94933,94.02731 c 17.27669,32.48945 13.30386,265.18306 -0.6879,344.31836 0.46562,-0.17913 -0.6066,-87.24091 -1.38425,-148.09611 2.11883,73.87269 -2.63208,155.4846 -5.34536,181.43828 2.72921,-39.87427 -3.25886,-136.77668 -2.82638,-137.09264 0.5491,88.95688 5.78273,151.71155 -9.45767,249.29895 3.00486,-62.09738 3.83821,-146.22862 4.16739,-192.90676 5.9e-4,2.8e-4 0.72386,74.38533 -2.87525,117.5229 -5.8805,-31.46063 -7.18552,-79.69691 -7.11894,-79.70772 0.44432,47.92286 7.31736,118.97368 7.06362,128.19124 C 293.43105,450.92642 295.20434,340.6002 295.48956,340.6002 c -0.26489,-0.056 -0.6132,35.84766 -0.81516,65.26497 -16.40012,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 -0.20532,-5.382828 -12.8599,-21.321318 -10.4857,-24.878968 -4.31449,-2.515892 -19.09896,12.488664 -19.28673,12.394779 5.81896,-6.205175 10.33125,-18.959562 25.79967,-19.773427 -1.8017,-1.483244 -3.58993,-1.87202 -7.13755,-2.352763 5.26883,-2.793482 12.66192,-2.926127 16.11639,-1.238467 -6.68656,-7.058297 -26.40436,1.594429 -26.38295,1.42318 11.57761,-8.4204 22.50014,-13.150886 36.58411,-1.291488 3.13514,-8.583566 13.10108,-10.010897 13.10829,-10.009586 0.0411,0.01173 -5.71444,5.790045 -5.10834,12.68234 16.45893,-6.003872 24.93693,4.755208 24.94718,4.762666 0,0 -6.38542,-6.222061 -19.70984,-1.49918 45.67475,6.014913 22.28213,73.400377 24.16334,98.663287 -3.71842,-8.29723 -3.08472,-55.04749 -14.72037,-70.734675 z"/><path d="m 332.94933,94.02731 c 14.72238,30.35672 13.30386,265.18306 -0.6879,344.31836 0,0 1.14389,-88.692 -1.38425,-148.09611 1.23557,73.75536 -2.94265,155.44335 -5.34536,181.43828 2.96899,-40.04945 -2.82638,-137.09264 -2.82638,-137.09264 0.11982,48.22947 3.06925,129.14991 -2.98976,194.81382 -3.68786,33.76857 -6.46791,54.48513 -6.46791,54.48513 3.47636,-62.2122 4.33445,-146.34947 4.16739,-192.90676 0,0 -0.25103,73.9105 -2.87525,117.5229 -4.65895,-31.65895 -7.11894,-79.70772 -7.11894,-79.70772 -0.69253,47 7.14652,118.835 7.06362,128.19124 C 295.46406,450.92642 295.48956,340.6002 295.48956,340.6002 c -0.34499,-0.056 -1.25457,35.84766 -0.81516,65.26497 -13.92428,-106.74731 -4.06224,-223.50134 0.38743,-309.985563 0.0196,-5.382828 -12.36271,-21.321318 -10.4857,-24.878968 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 43.13922,6.014913 22.15382,73.400377 24.16334,98.663287 -3.71645,-8.2992 -1.48912,-57.37893 -14.72037,-70.734675 z" class="hair" id="path1361" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Ponytail_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c1520c2bcf3e85bb1dd69a525ba2107e1bca8595
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Ponytail_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 338.73254,99.799649 c 10.70349,13.881381 21.18015,74.868391 5.32699,170.546011 -0.0402,0 0.18797,-32.12345 -1.64844,-91.52756 2.85021,73.44776 -3.49161,98.87198 -6.36554,124.86973 2.90464,-39.69754 -4.22172,-103.86527 -3.3658,-104.34264 1.38041,48.3188 4.72387,96.47706 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.09061,-62.20465 4.24665,-146.20913 4.96276,-192.90676 0.26755,-0.0729 0.5836,73.66986 -3.42401,117.5229 -6.60557,-31.26971 -8.64734,-79.64525 -8.47762,-79.70772 0.52471,46.86202 8.60581,118.82525 8.41174,128.19124 -24.23916,-105.63426 -23.41911,-183.4258 -22.62029,-183.64361 -0.31391,0.0778 -0.62213,4.30116 -0.97074,32.51497 -14.16748,-108.47941 -10.54188,-66.79547 -4.30203,-153.485554 -0.4501,-5.237585 -13.04565,-9.634338 -10.42073,-13.378967 -4.87391,-2.702493 -19.22376,12.438856 -19.28673,12.394779 5.88556,-6.18071 10.77387,-18.799607 25.79967,-19.773427 -1.30947,-1.665866 -3.25819,-1.983686 -7.13755,-2.352763 5.08305,-2.808396 12.49572,-2.734437 16.11639,-1.238467 -10.13128,-6.689678 -26.429,1.437134 -26.38295,1.42318 11.9329,-8.60325 22.28196,-13.30397 36.58411,-1.291488 3.10901,-8.465754 13.07762,-10.012142 13.10829,-10.009586 0.0505,0 -5.72408,5.592785 -5.10834,12.68234 15.62676,-5.986792 24.92023,4.751317 24.94718,4.762666 0,0 -2.43639,-6.374697 -19.70984,-1.49918 27.76771,12.855661 28.98664,49.427407 28.88149,49.357307 -5.32663,-9.22178 -11.2568,-18.133444 -13.65531,-15.656351 z" class="shadow" id="path5560" sodipodi:nodetypes="ccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccc" id="path5552" class="hair" d="m 338.73254,99.799649 c 9.23041,13.640241 19.31221,74.452981 5.32699,170.546011 0,0 1.3622,-32.12345 -1.64844,-91.52756 1.47138,73.75536 -3.50427,98.8748 -6.36554,124.86973 3.53563,-40.04945 -3.3658,-104.34264 -3.3658,-104.34264 0.14268,48.22947 3.65502,96.39991 -3.56037,162.06382 -4.3917,33.76857 -7.70233,54.48513 -7.70233,54.48513 4.13984,-62.2122 5.16169,-146.34947 4.96276,-192.90676 0,0 -0.29895,73.9105 -3.42401,117.5229 -5.54812,-31.65895 -8.47762,-79.70772 -8.47762,-79.70772 -0.82469,47 8.51046,118.835 8.41174,128.19124 -22.65066,-106.06739 -22.62029,-183.64361 -22.62029,-183.64361 -0.41082,-0.056 -1.494,3.09766 -0.97074,32.51497 -12.59249,-109.00646 -9.13041,-67.2678 -4.30203,-153.485554 0.0234,-5.382828 -12.29774,-9.821317 -10.42073,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -12.21767,-19.947258 -13.65531,-15.656351 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Ponytail_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..15c237e87e4ac9cc697b51f1a87e1cc60ab4f8ee
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Ponytail_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Ponytail_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccccccc" id="path5558" class="shadow" d="m 330.09873,86.89495 c 12.36307,13.85221 20.1684,32.1964 18.91567,88.57067 -8.24083,-39.52779 -11.69258,-54.85417 -22.46798,-67.03445 12.40076,26.29367 11.98884,66.31287 11.67798,66.31287 -3.64807,-23.79811 -10.24947,-27.61087 -15.54992,-42.44145 1.94675,54.15066 4.70881,53.34942 -8.57312,90.85447 7.28201,-33.08774 3.09748,-46.97184 3.77763,-76.18745 0.27299,0.091 1.24216,34.02668 -4.37411,60.5339 -5.25645,-19.25296 -5.53393,-36.7561 -4.68536,-37.07431 -1.25291,21.81818 -2.37871,22.5364 -0.49131,48.14878 -19.14465,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -3.50458,20.44019 -7.87807,27.59716 -10.11392,45.29647 -8.48739,-38.6007 -16.70838,-42.02974 -6.32827,-96.944804 -1.13499,-4.959669 0.5017,-9.590194 3.0143,-13.378967 -4.36941,-2.664614 -19.00718,12.49961 -19.28673,12.394779 5.6354,-6.220942 10.16012,-18.806676 25.79967,-19.773427 -2.08101,-1.488346 -3.53887,-1.963222 -7.13755,-2.352763 5.84771,-2.887216 13.13069,-2.842733 16.11639,-1.238467 -7.84877,-6.724063 -27.01758,1.476544 -26.38295,1.42318 12.09141,-8.715272 21.73199,-13.512615 36.58411,-1.291488 1.94283,-8.878618 13.10795,-10.009659 13.10829,-10.009586 0.0785,0.02415 -5.12511,5.986552 -5.10834,12.68234 16.02724,-6.009741 24.94717,4.762662 24.94718,4.762666 0.005,0.0083 -5.582,-6.399031 -19.70984,-1.49918 27.92573,12.058541 29.0381,49.388627 28.88149,49.357307 -5.98656,-9.41678 -21.24363,-32.636411 -22.28912,-28.56105 z"/><path d="m 330.09873,86.89495 c 11.18351,14.06668 20.15359,32.19909 18.91567,88.57067 -6.73029,-40.2144 -10.62687,-55.33858 -22.46798,-67.03445 10.37413,26.29367 11.67798,66.31287 11.67798,66.31287 -3.12067,-24.16729 -8.55499,-28.797 -15.54992,-42.44145 0.72836,53.62849 4.39271,53.21395 -8.57312,90.85447 7.57065,-33.2032 3.92906,-47.30447 3.77763,-76.18745 0,0 -0.40434,33.47785 -4.37411,60.5339 -4.22321,-19.64042 -4.68536,-37.07431 -4.68536,-37.07431 -2.66069,21.11429 -2.71426,22.36863 -0.49131,48.14878 -17.24159,-65.80156 -10.32419,-82.55004 -10.32419,-82.55004 -5.06272,19.5903 -8.88723,27.04671 -10.11392,45.29647 -8.21036,-38.74987 -14.25266,-43.35205 -6.32827,-96.944804 0.0287,-5.382828 1.13729,-9.821317 3.0143,-13.378967 -5.33948,-3.028389 -19.28673,12.394779 -19.28673,12.394779 5.93864,-6.160294 11.40047,-18.558606 25.79967,-19.773427 -1.03976,-1.80072 -2.9395,-2.143033 -7.13755,-2.352763 5.21796,-2.437391 12.59538,-2.460369 16.11639,-1.238467 -6.59883,-7.760117 -26.38295,1.42318 -26.38295,1.42318 11.53803,-8.405817 20.50764,-12.416809 36.58411,-1.291488 4.35349,-8.362047 13.10829,-10.009586 13.10829,-10.009586 0,0 -6.40485,5.592785 -5.10834,12.68234 17.65894,-5.131136 24.94718,4.762666 24.94718,4.762666 0,0 -6.12778,-7.38144 -19.70984,-1.49918 25.99187,11.671768 28.88149,49.357307 28.88149,49.357307 -5.54038,-9.55063 -20.52514,-32.851957 -22.28912,-28.56105 z" class="hair" id="path5555" sodipodi:nodetypes="cccccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Tails_Long.tw b/src/art/vector_revamp/layers/Hair_Back_Tails_Long.tw
new file mode 100644
index 0000000000000000000000000000000000000000..cfb66ba7b112c1c96c7f711a52628aaecca62704
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Tails_Long.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Tails_Long [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path1492" class="shadow" d="m 328.65638,84.008358 c -0.60861,0.173889 -1.34272,-10.225449 2.66101,-13.323049 10.65634,-9.764922 29.44024,-10.595761 38.87664,-1.492806 88.46562,71.536397 61.69463,241.721077 32.68739,331.054337 -5.27944,-95.72009 -0.92016,-272.88945 -71.03624,-311.874658 -1.38046,-1.335535 -3.07243,-2.554256 -3.1888,-4.363824 z"/><path d="m 328.65638,84.008358 c 0,0 -0.78513,-10.384761 2.66101,-13.323049 9.86833,-8.414052 29.10128,-10.014694 38.87664,-1.492806 83.58531,72.867387 59.4595,242.330657 32.68739,331.054337 -1.93705,-97.39129 3.69397,-275.19652 -71.03624,-311.874658 z" class="hair" id="path3021-5" sodipodi:nodetypes="caaccc"/><path sodipodi:nodetypes="cccccc" id="path1494" class="shadow" d="m 272.06498,92.747415 c 0.6403,0.365888 3.32747,-12.250142 -2.66102,-16.710417 -9.58816,-9.475485 -27.12426,-7.551531 -35.34249,1.894561 -87.00172,79.526411 -41.40357,242.195391 -27.97997,336.871331 9.07082,-156.21304 5.00878,-280.4322 62.79467,-317.691653 2.13956,-1.147001 3.37977,-2.550959 3.18881,-4.363822 z"/><path d="m 272.06498,92.747415 c 0,0 1.72594,-13.165303 -2.66102,-16.710417 -9.17611,-7.415242 -26.87886,-6.324544 -35.34249,1.894561 -80.83393,78.498451 -40.30634,242.012521 -27.97997,336.871331 4.97451,-156.21304 -0.20009,-280.4322 62.79467,-317.691653 z" class="hair" id="path3021-5-2" sodipodi:nodetypes="caaccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Tails_Medium.tw b/src/art/vector_revamp/layers/Hair_Back_Tails_Medium.tw
new file mode 100644
index 0000000000000000000000000000000000000000..72a8b7b5a46ff84a604a91815faab68e8cbcfd9d
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Tails_Medium.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Tails_Medium [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 324.77453,81.645628 c -0.57274,-1.155617 -1.42602,-8.619228 2.23666,-11.198381 8.15392,-8.197687 24.28459,-9.064664 32.67686,-1.254744 61.17299,48.237107 52.97834,150.824207 27.678,226.259667 9.36744,-69.24717 -10.70689,-156.85175 -59.91124,-210.138631 -1.26333,-1.074675 -1.99649,-2.361419 -2.68028,-3.667911 z" class="shadow" id="path1488" sodipodi:nodetypes="cccccc"/><path sodipodi:nodetypes="caaccc" id="path1365" class="hair" d="m 324.77453,81.645628 c 0,0 -0.65991,-8.728672 2.23666,-11.198381 8.2946,-7.072235 24.3775,-8.321392 32.67686,-1.254744 57.85178,49.259017 50.18068,151.685027 27.678,226.259667 10.60254,-69.95294 -8.68368,-158.00787 -59.91124,-210.138631 z"/><path d="m 277.20794,88.99104 c 0.32753,-0.05459 1.8295,-11.128924 -2.23666,-14.045554 -8.01899,-6.998292 -22.68576,-5.638047 -29.70631,1.592429 -59.85993,54.894195 -34.87469,151.867435 -23.31454,231.149005 7.11993,-79.08768 -8.43148,-145.84586 52.57724,-215.027969 1.42001,-1.047108 2.32091,-2.267253 2.68027,-3.667911 z" class="shadow" id="path1490" sodipodi:nodetypes="cccccc"/><path sodipodi:nodetypes="caaccc" id="path1371" class="hair" d="m 277.20794,88.99104 c 0,0 1.4507,-11.065791 -2.23666,-14.045554 -7.71276,-6.232711 -22.53169,-5.25288 -29.70631,1.592429 -56.02955,53.457805 -33.6752,151.417625 -23.31454,231.149005 6.24619,-79.16711 -14.16715,-146.36728 52.57724,-215.027969 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Back_Tails_Short.tw b/src/art/vector_revamp/layers/Hair_Back_Tails_Short.tw
new file mode 100644
index 0000000000000000000000000000000000000000..054ad4ad39d95d158c5bcb48fa0417d5e0cbab43
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Back_Tails_Short.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Back_Tails_Short [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path1484" class="shadow" d="m 322.1441,80.017241 c -0.22946,0.114728 -1.03417,-7.357022 1.94419,-9.734066 6.69408,-7.05028 20.69609,-7.895526 28.40399,-1.090672 46.32656,35.458847 44.97339,100.720647 24.05879,165.634097 9.05174,-60.69199 -11.23833,-103.75229 -52.07717,-151.621069 -1.24274,-0.862991 -1.90887,-1.973098 -2.3298,-3.18829 z"/><path d="m 322.1441,80.017241 c 0,0 -0.57362,-7.587299 1.94419,-9.734066 7.20998,-6.14746 21.12116,-7.151656 28.40399,-1.090672 42.88292,35.688427 43.61899,100.810937 24.05879,165.634097 9.21613,-60.8058 -7.54819,-106.307 -52.07717,-151.621069 z" class="hair" id="path1375" sodipodi:nodetypes="caaccc"/><path sodipodi:nodetypes="cccccc" id="path1486" class="shadow" d="m 280.79738,86.402157 c 0.18696,0 2.55762,-9.618814 -1.94419,-12.208939 -7.3895,-6.3314 -19.88325,-4.977968 -25.82188,1.384201 -46.22232,40.053051 -30.31427,100.819071 -20.2659,169.884101 5.44046,-68.8121 -7.26687,-94.81189 45.70217,-155.871073 1.19633,-0.882879 1.95838,-1.95188 2.3298,-3.18829 z"/><path d="m 280.79738,86.402157 c 0,0 1.261,-9.618814 -1.94419,-12.208939 -6.70424,-5.417713 -19.53151,-4.508985 -25.82188,1.384201 -41.61849,38.990631 -29.27178,100.578501 -20.2659,169.884101 5.42943,-68.81511 -12.31463,-96.18855 45.70217,-155.871073 z" class="hair" id="path1382" sodipodi:nodetypes="caaccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Fore_Braids.tw b/src/art/vector_revamp/layers/Hair_Fore_Braids.tw
new file mode 100644
index 0000000000000000000000000000000000000000..63c34481c16e192f12f9403e5d6620dcec7ea8d8
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Fore_Braids.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Fore_Braids [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="shadow" sodipodi:nodetypes="ccccccccccccscc" id="path3002" d="m 264.88646,138.13493 c -0.52764,-1.63337 -1.48391,-8.27733 -1.31682,-7.6723 0.30513,1.15766 0.37173,1.50675 1.914,2.53153 -3.96407,-15.09805 1.81719,-12.3309 7.88724,-26.7958 2.8298,11.57838 9.92518,12.0218 27.60831,16.758 -3.99054,-3.61178 -8.84228,-7.05132 -13.36239,-10.55719 3.9384,4.91588 12.03465,7.13938 18.74854,8.80964 -8.40991,-10.41557 -11.92124,-20.75134 -12.08836,-20.78476 8.31197,12.06019 27.07984,1.30209 29.39135,29.96705 0.002,-0.0103 0.7347,-4.02901 0.15609,-9.20689 -0.12091,0.15601 5.55923,9.87437 7.20453,18.1727 2.18373,-3.71145 4.13042,-7.99026 4.99098,-12.5009 4.02388,-19.58149 12.19369,-57.0289 -49.27183,-55.358864 -23.67378,0.643223 -31.6089,21.570597 -35.60368,38.130584 -1.29095,14.17393 5.6023,21.22544 13.74204,28.5072 z"/><path d="m 264.88646,138.13493 c -0.98445,-1.6749 -1.64354,-8.29184 -1.31682,-7.6723 0.52575,0.97381 0.49922,1.40051 1.914,2.53153 -4.08726,-15.18017 0.68037,-13.08878 7.88724,-26.7958 3.14245,11.40693 10.83897,11.52069 27.60831,16.758 L 287.6168,112.39917 c 4.14732,4.78293 12.45786,6.87006 18.74854,8.80964 -9.06395,-10.54638 -12.08836,-20.78476 -12.08836,-20.78476 8.66286,11.92373 28.1487,0.88642 29.39135,29.96705 0,0 -0.15075,-0.32621 0.15609,-9.20689 0.27011,-0.0395 6.30991,9.49903 7.20453,18.1727 2.10074,-3.72989 3.53972,-8.12153 4.99098,-12.5009 3.99167,-19.57075 10.63097,-55.978613 -49.27183,-55.358864 -21.94374,0.227028 -30.68756,21.450422 -35.60368,38.130584 0.13342,13.55077 5.90992,21.09086 13.74204,28.5072 z" id="path3172" sodipodi:nodetypes="ccccccccccccscc" class="hair"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Fore_Bun.tw b/src/art/vector_revamp/layers/Hair_Fore_Bun.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7f50fb72544ea5e9b9238739587727ebd4c53e54
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Fore_Bun.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Fore_Bun [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 257.9291,106.09219 c -0.19133,-0.0554 -2.9316,20.06637 7.31403,35.72092 l 1.2243,1.66065 c -1.0829,-2.32949 -1.59392,-4.89291 -2.54128,-7.42183 0.59713,1.08477 1.16635,0.9431 1.767,1.00595 -0.78883,-1.50187 -1.95045,-2.87782 -2.33322,-4.64904 0.54248,0.17604 1.10893,0.40897 1.45152,-0.54409 -0.74503,-1.60123 -1.2827,-3.22443 -1.6482,-4.86777 0.4416,0.44485 0.15755,0.63606 0.87018,0.19913 -0.30577,-2.8814 -1.28828,-7.29117 -1.08235,-8.64893 0.30773,0.48617 0.61821,0.29966 0.98826,-0.31398 0.20896,-3.75337 0.35878,-7.18569 1.31829,-10.30654 -0.16645,1.41258 -0.19192,2.78556 0.74567,4.05426 0.31931,-2.93001 0.85793,-5.71643 1.92528,-8.06648 0.30682,1.20113 0.62632,2.40082 2.03109,3.21587 0.64977,-3.03472 1.62294,-5.75505 3.39306,-7.710822 0.18461,1.492342 0.70077,2.841392 2.32632,3.777832 0.56266,-2.63176 1.46593,-5.186218 3.35799,-7.648123 0.006,2.011255 1.18198,3.533641 2.99614,4.796803 0.31223,-1.741219 0.45261,-3.524766 1.5581,-5.087975 0.37974,1.56741 1.58666,2.715238 4.02664,3.242071 1.06483,-1.987104 1.90021,-4.047156 3.75035,-5.799213 0.0109,1.964078 1.76048,3.329215 4.48858,4.128202 1.48861,-1.509028 3.53959,-2.817938 3.67916,-4.808874 1.74996,1.119058 3.09148,2.551986 4.30027,4.108084 1.48646,-0.948679 2.60722,-2.044503 2.81784,-3.467529 0.96067,1.141819 1.93284,2.292258 2.38154,3.762186 1.73153,-0.465567 2.89407,-1.311757 3.03223,-2.832939 1.04024,1.093809 2.02314,2.257469 2.32609,4.150576 1.91739,-0.183832 2.181,-1.39483 2.46879,-2.543759 1.08375,1.444497 1.63528,3.120311 1.90186,4.92097 1.25184,0.21524 1.81967,-0.745651 1.97168,-2.072767 0.62613,1.627097 1.84433,2.771787 1.45372,5.479337 0.63533,-0.26651 1.26752,-0.57484 1.07086,-1.71862 0.43597,1.68689 1.24132,3.26727 1.14726,5.31687 0.48364,-0.47133 0.59389,-1.16629 0.39158,-2.09463 0.47434,1.74464 0.69999,3.36521 0.88175,5.03529 0.37208,-0.58229 0.79199,-1.07987 0.66618,-1.97567 -0.003,1.53244 0.10467,3.06487 0.22437,4.59731 0.42098,-0.59521 0.707,-1.21259 0.65467,-2.05091 0.24715,1.6627 0.17111,3.36068 0.1896,5.06453 0.0476,0.64638 0.24021,1.23834 0.45209,1.8231 0.47209,-0.45453 0.57369,-0.93775 0.52728,-1.43381 0.0586,1.55949 0.25949,3.05527 0.2042,4.59115 0.43847,-0.31761 0.40048,-0.77294 0.42885,-1.18558 0.15694,1.27396 0.19877,2.60743 0.2242,4.02794 0.30822,1.56352 0.7166,3.10199 1.19132,4.62388 0.26004,-0.52413 0.57333,-1.00033 0.63651,-1.70163 -0.0369,1.33702 -0.0838,2.67504 0.0816,3.99182 0.46088,1.51424 1.13046,2.88934 1.77109,4.28375 0.39524,-1.05136 0.8384,-2.08675 1.05646,-3.19717 11.90069,-21.27589 7.00195,-64.195469 -37.5191,-61.322495 -15.65245,-1.109698 -36.68517,5.581542 -38.54171,35.892695 z" class="shadow" id="path1728" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1717" class="hair" d="m 257.9291,106.09219 c -0.007,0.006 -1.97567,20.38501 7.31403,35.72092 l 1.2243,1.66065 c -1.10711,-2.32949 -1.79314,-4.89291 -2.54128,-7.42183 0.62095,0.84654 1.184,0.76662 1.767,1.00595 -0.93454,-1.48366 -2.13701,-2.8545 -2.33322,-4.64904 0.52732,0.12299 1.04691,0.1919 1.45152,-0.54409 -0.88984,-1.58675 -1.5469,-3.19801 -1.6482,-4.86777 0.45664,0.29442 0.18353,0.37621 0.87018,0.19913 -0.52127,-2.6659 -1.42219,-7.15726 -1.08235,-8.64893 0.35307,0.36829 0.67669,0.14762 0.98826,-0.31398 0.025,-3.66975 0.33847,-7.17646 1.31829,-10.30654 -0.0544,1.37896 -0.0959,2.75675 0.74567,4.05426 0.2328,-2.94443 0.69913,-5.7429 1.92528,-8.06648 0.39239,1.17546 0.74775,2.36439 2.03109,3.21587 0.59247,-3.07292 1.55541,-5.80007 3.39306,-7.710822 0.30776,1.430762 0.78432,2.799622 2.32632,3.777832 0.53632,-2.64932 1.37507,-5.246793 3.35799,-7.648123 0.14111,1.937462 1.27409,3.483398 2.99614,4.796803 0.26667,-1.769696 0.3381,-3.596335 1.5581,-5.087975 0.45789,1.532677 1.69497,2.667101 4.02664,3.242071 1.01846,-2.01029 1.78624,-4.10414 3.75035,-5.799213 0.0885,1.929566 1.86922,3.280887 4.48858,4.128202 1.44492,-1.525413 3.42384,-2.861344 3.67916,-4.808874 1.86112,1.054215 3.2297,2.471357 4.30027,4.108084 1.44759,-0.96034 2.45275,-2.090843 2.81784,-3.467529 1.0588,1.098207 2.02213,2.252575 2.38154,3.762186 1.67284,-0.502914 2.73401,-1.413613 3.03223,-2.832939 1.11987,1.053994 2.14954,2.19427 2.32609,4.150576 1.869,-0.197658 2.0868,-1.421744 2.46879,-2.543759 1.12659,1.426136 1.73345,3.078236 1.90186,4.92097 1.23123,0.20751 1.68979,-0.794357 1.97168,-2.072767 0.71793,1.600868 1.89588,2.757057 1.45372,5.479337 0.60707,-0.27862 1.16002,-0.62091 1.07086,-1.71862 0.59248,1.65559 1.27676,3.26018 1.14726,5.31687 0.42286,-0.5408 0.50965,-1.26256 0.39158,-2.09463 0.63988,1.67843 0.72087,3.35686 0.88175,5.03529 0.28783,-0.60101 0.68913,-1.10273 0.66618,-1.97567 l 0.22437,4.59731 c 0.39693,-0.62407 0.63258,-1.3019 0.65467,-2.05091 0.29253,1.6627 0.2675,3.36068 0.1896,5.06453 l 0.45209,1.8231 c 0.38638,-0.45453 0.51462,-0.93775 0.52728,-1.43381 0.16555,1.50601 0.36084,3.00459 0.2042,4.59115 0.34432,-0.32807 0.30713,-0.78331 0.42885,-1.18558 0.1847,1.26933 0.28877,2.59243 0.2242,4.02794 l 1.19132,4.62388 0.63651,-1.70163 0.0816,3.99182 1.77109,4.28375 1.05646,-3.19717 c 10.71484,-22.20048 5.99108,-64.270356 -37.5191,-61.322495 -15.38241,-0.812657 -36.14212,6.178893 -38.54171,35.892695 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Fore_Messy.tw b/src/art/vector_revamp/layers/Hair_Fore_Messy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a9ac533aaf5838f4c9e443adc8faa95eb619d811
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Fore_Messy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Fore_Messy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1442" class="shadow" d="m 244.725,110.6 c -4.91846,6.58813 -5.1856,19.3396 -5.13712,19.34401 0.006,0.005 2.56339,-2.84496 5.86993,-6.52894 0.75589,5.71669 1.68662,10.0521 3.60878,14.55916 0.11709,2.53892 -2.03599,4.51642 -2.02049,4.51642 0.0327,0.0196 3.96931,1.5105 5.30212,-1.44385 3.89359,5.86164 3.74368,5.49258 6.92104,8.91681 2.58948,4.51811 1.16151,5.94226 0.0742,7.69745 2.95862,-0.0862 5.2003,-0.59653 4.92955,-2.54612 -0.1956,0.0757 2.64225,3.93947 6.493,4.8944 -1.84572,-7.65225 -4.28847,-15.205 -6.8328,-22.74081 2.57902,6.09202 6.90856,9.26463 12.38979,12.89733 -5.22073,-11.31877 -4.0711,-6.75613 -5.07824,-20.43879 0.4832,0.91527 2.7069,2.31536 2.7374,2.27875 -1.15106,-3.47165 -1.52721,-8.61107 -1.67008,-12.06397 2.13176,-5.16018 3.81014,-8.3053 3.80885,-8.30595 3.27603,6.01178 4.10173,7.73219 8.00158,12.52204 2.2126,1.9484 1.33782,8.25688 0.82769,8.51203 0.62691,0.25475 2.60308,-4.44715 1.07593,-6.55145 3.61917,5.28436 5.58656,7.51529 11.82174,8.78897 -3.57509,-3.20004 -4.37162,-4.07437 -5.00615,-8.27776 3.39223,5.296 7.54667,9.93259 13.44317,13.6813 -2.36666,-4.69377 -6.33548,-11.19644 -6.28172,-18.19703 2.26858,2.68175 6.04717,1.62933 9.10444,-1.29984 -4.65907,1.81471 -8.46193,-0.18817 -9.89206,-8.99767 -0.85238,-6.88284 -2.18852,-5.8924 -2.18852,-5.8924 5.76839,8.55204 7.96169,9.20988 13.10381,14.07105 0,0 -3.37401,-6.25345 -1.71994,-7.35053 4.12299,4.65094 7.58501,4.09563 10.07958,13.21086 -0.37167,5.08777 -2.13213,10.43054 -2.12429,10.43211 0.0702,0.0312 2.3388,-2.08088 3.29281,-2.68415 -0.25505,1.61443 0.13626,9.38515 0.30703,10.92985 0.13896,0.0811 6.82167,-14.16497 6.60844,-23.34903 0.16691,0.002 1.31098,5.08479 2.15859,11.72771 -0.75833,6.60148 -0.28415,6.83605 -2.80224,5.4551 1.33409,2.07559 1.77197,2.44696 2.76408,1.38848 -0.23707,5.64039 -2.57216,11.47522 -2.52258,11.47109 5.24035,-4.04557 10.85672,-13.08882 11.516,-21.36538 7.1891,-5.52505 10.39667,0.18055 10.39164,0.14784 -0.0883,-7.30975 -4.26628,-12.56804 -8.70585,-18.31152 2.90895,-3.32142 5.53645,1.87184 8.48574,4.08963 -1.08924,-7.89902 -3.58727,-14.21058 -9.8139,-16.879752 7.04716,-1.377896 7.56203,-5.402843 7.55169,-5.408413 0.0407,-0.06608 -3.17695,3.387169 -7.36385,0.171386 2.57035,-1.867935 8.78082,-2.021959 13.20489,-3.36606 -6.17494,-4.672645 -12.59125,-6.525266 -19.3725,-6.676498 1.12959,-2.656055 1.47528,-5.428608 0.32899,-9.110782 -1.80442,2.055679 -4.20714,2.33573 -8.82379,-0.361764 -0.40829,-2.1327 3.89219,-2.662655 7.25081,-3.691036 -6.48187,-2.927296 -12.57371,-3.306369 -18.91894,-2.792333 1.56128,-3.867046 -0.33279,-5.536181 -1.10333,-8.216298 -1.06454,3.469481 -2.5964,5.974105 -6.6912,5.948127 -4.03082,-1.130038 -8.68437,-1.824299 -14.61057,-1.656591 -8.79418,-0.4959 -16.89013,0.475898 -23.98768,5.165699 -2.79549,2.499404 -3.6049,-0.728385 -2.49029,-5.343061 -2.54744,3.246638 -4.92985,6.487126 -3.35167,9.848161 -3.51039,-0.684155 -5.05566,0.361144 -6.29022,0.908556 1.07283,1.236569 2.00574,2.598187 1.36187,5.104433 -5.67523,-0.229018 -5.17194,-5.221299 0.23501,-10.976254 -9.60454,3.830836 -12.46718,13.057135 -5.18285,20.796848 -2.14603,-1.980035 -8.35141,-1.55314 -18.49467,4.365873 11.81435,-1.519649 12.91806,-1.80674 15.86633,4.009522 -2.69378,-0.951133 -4.48937,0.711322 -4.491,0.713435 -0.0446,0.02866 1.87442,0.308723 3.31256,4.531752 -3.49059,-0.0554 -3.72984,-1.42541 -6.02498,-4.961831 -0.007,0.0056 -2.71636,7.969211 4.76449,12.689721 z"/><path d="m 244.725,110.6 c -4.39124,6.63606 -5.13712,19.34401 -5.13712,19.34401 0,0 2.1368,-3.1649 5.86993,-6.52894 0.8815,5.71669 1.9087,10.0521 3.60878,14.55916 0.36276,2.53892 -2.02049,4.51642 -2.02049,4.51642 0,0 3.27328,1.37131 5.30212,-1.44385 4.56892,6.4186 3.7172,4.9316 6.92104,8.91681 2.96839,4.43391 1.28395,5.91505 0.0742,7.69745 2.76068,-0.18519 4.82148,-0.78594 4.92955,-2.54612 -0.0787,0.0367 3.0246,3.81202 6.493,4.8944 l -6.8328,-22.74081 c 2.89723,5.94738 7.23848,9.11466 12.38979,12.89733 -5.28575,-11.33377 -4.68815,-6.89853 -5.07824,-20.43879 0.71664,0.63515 2.7374,2.27875 2.7374,2.27875 -1.30172,-3.47165 -1.93893,-8.61107 -1.67008,-12.06397 1.44012,-5.506 3.80885,-8.30595 3.80885,-8.30595 3.32454,5.99685 4.73239,7.53814 8.00158,12.52204 2.4016,1.9484 1.50201,8.25688 0.82769,8.51203 0.52186,0.21973 2.21352,-4.577 1.07593,-6.55145 4.20477,5.02816 5.92996,7.36505 11.82174,8.78897 -4.17531,-3.16669 -4.82789,-4.04902 -5.00615,-8.27776 3.79155,4.94105 7.63535,9.85376 13.44317,13.6813 -2.47716,-4.68149 -6.72174,-11.15352 -6.28172,-18.19703 1.95492,2.32888 5.90341,1.4676 9.10444,-1.29984 -4.89397,1.93216 -8.91847,0.0401 -9.89206,-8.99767 -1.33183,-6.56321 -2.18852,-5.8924 -2.18852,-5.8924 6.00807,8.20964 13.10381,14.07105 13.10381,14.07105 0,0 -3.92454,-6.32685 -1.71994,-7.35053 4.21475,4.57753 8.03273,3.73746 10.07958,13.21086 0.44229,5.25056 -2.12429,10.43211 -2.12429,10.43211 0,0 1.92837,-2.26329 3.29281,-2.68415 0.13585,1.4407 0.23907,9.33946 0.30703,10.92985 0,0 6.3016,-14.46835 6.60844,-23.34903 0.19418,-0.007 1.75387,4.93716 2.15859,11.72771 -0.27749,6.51532 -0.60917,7.16107 -2.80224,5.4551 1.13889,1.56808 1.68093,2.21026 2.76408,1.38848 0.34083,5.59223 -2.52258,11.47109 -2.52258,11.47109 5.19062,-4.07044 10.1678,-13.43328 11.516,-21.36538 7.04519,-6.46044 10.39164,0.14784 10.39164,0.14784 -0.49013,-7.30975 -5.08317,-12.56804 -8.70585,-18.31152 3.27119,-3.63191 5.74903,1.68963 8.48574,4.08963 -1.34658,-7.84183 -4.06535,-14.10434 -9.8139,-16.879752 6.56716,-1.636356 7.55169,-5.408413 7.55169,-5.408413 0,0 -3.43706,3.809856 -7.36385,0.171386 2.3664,-2.377804 8.65552,-2.335198 13.20489,-3.36606 -6.32302,-4.343578 -12.81485,-6.028368 -19.3725,-6.676498 0.64033,-2.753907 1.40149,-5.443367 0.32899,-9.110782 -1.85359,2.22779 -4.39099,2.979194 -8.82379,-0.361764 -0.60149,-2.470796 3.75401,-2.904468 7.25081,-3.691036 -6.59977,-2.691505 -12.7835,-2.886794 -18.91894,-2.792333 1.14102,-3.867046 -0.46186,-5.536181 -1.10333,-8.216298 -0.88139,3.579369 -2.36411,6.113479 -6.6912,5.948127 -4.3431,-0.942669 -9.19501,-1.517915 -14.61057,-1.656591 -8.87477,-0.227256 -17.05335,1.019963 -23.98768,5.165699 -2.88716,2.526905 -4.05267,-0.594053 -2.49029,-5.343061 -2.45723,3.28272 -4.73406,6.565441 -3.35167,9.848161 -4.19343,-0.26382 -5.06869,0.369162 -6.29022,0.908556 1.32459,1.110689 2.34072,2.430696 1.36187,5.104433 -6.01749,-0.229018 -5.27195,-5.221299 0.23501,-10.976254 -9.52886,3.818223 -11.90858,12.964035 -5.18285,20.796848 -2.06874,-1.55492 -8.3139,-1.346843 -18.49467,4.365873 11.89037,-1.861722 12.95731,-1.983362 15.86633,4.009522 -3.26245,-0.211865 -4.491,0.713435 -4.491,0.713435 0,0 2.56106,-0.132686 3.31256,4.531752 -3.73067,0.0646 -3.96113,-1.30976 -6.02498,-4.961831 0,0 -2.12454,7.484991 4.76449,12.689721 z" class="hair" id="path1508" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Hair_Fore_Neat.tw b/src/art/vector_revamp/layers/Hair_Fore_Neat.tw
new file mode 100644
index 0000000000000000000000000000000000000000..38bd2b459456824444fc793e217b17c3e189e2fa
--- /dev/null
+++ b/src/art/vector_revamp/layers/Hair_Fore_Neat.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Hair_Fore_Neat [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccccccccccc" id="path1711" class="shadow" d="m 248.60413,106.18058 c -2.04734,26.40395 6.13148,51.98561 15.97494,70.1677 4.39713,6.72978 7.52187,7.37748 13.18887,11.71429 -1.1884,-0.16181 -8.46893,-29.0279 -8.41476,-28.94744 0.31529,1.07194 0.40623,1.233 1.2243,1.66065 -0.57569,0.34074 -5.13572,-33.2968 -4.5736,-40.02567 0.0682,0.91859 0.28487,1.78907 1.05455,2.47391 0.12279,-1.77728 3.30483,-13.8038 6.31245,-17.02566 3.19925,12.14534 28.96714,0.6572 42.54477,10.93767 -3.15657,-3.47155 -6.95408,-6.9054 -10.57699,-10.34952 3.96079,4.9135 14.62203,11.63192 14.7248,11.55998 -1.62157,-3.30049 -2.95395,-6.2972 -2.01001,-7.84616 0.53325,4.44201 7.68041,9.37749 10.5675,32.53133 0.42131,-0.97927 0.80084,-2.01078 1.05646,-3.19717 -0.17802,0 -0.9094,15.09511 -0.56915,18.22406 -0.85119,8.02927 -2.22823,15.58067 -4.54317,26.28104 6.10335,-4.24216 13.68515,-6.89944 16.71199,-13.48875 10.24425,-4.37842 19.01551,-107.842635 -45.69015,-99.413908 -19.19936,0.410451 -36.53562,-0.758031 -46.9828,34.743648 z"/><path d="m 248.60413,106.18058 c -1.66902,26.21479 6.74136,51.68067 15.97494,70.1677 4.56517,6.26767 7.57687,7.22623 13.18887,11.71429 -1.27999,-0.14349 -8.66373,-28.98894 -8.41476,-28.94744 0.36079,1.05894 0.50254,1.20548 1.2243,1.66065 -1.0537,0.28099 -5.60048,-33.3549 -4.5736,-40.02567 0.16654,0.89401 0.42097,1.75505 1.05455,2.47391 0,-1.81236 3.02827,-13.88282 6.31245,-17.02566 3.14245,11.40693 28.90612,-0.13605 42.54477,10.93767 l -10.57699,-10.34952 c 4.14732,4.78293 14.7248,11.55998 14.7248,11.55998 -1.93032,-3.36224 -3.23417,-6.35324 -2.01001,-7.84616 0.59719,4.40649 8.55665,8.89069 10.5675,32.53133 l 1.05646,-3.19717 c 0,0 -0.41355,15.09511 -0.56915,18.22406 -0.39068,7.85658 -1.74604,15.39985 -4.54317,26.28104 6.00366,-4.292 12.93954,-7.27225 16.71199,-13.48875 8.76503,-5.55068 19.18463,-106.244216 -45.69015,-99.413908 -19.18263,1.258572 -35.55712,-0.07776 -46.9828,34.743648 z" class="hair" id="path1707" sodipodi:nodetypes="ccccccccccccccscccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Head.tw b/src/art/vector_revamp/layers/Head.tw
new file mode 100644
index 0000000000000000000000000000000000000000..902ff509ee792785c07098907b1d1294e3182f9e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Head.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Head [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path4126" class="shadow head" d="m 330.67904,147.05787 c 4.02576,-14.5334 2.40774,-9.56522 4.60772,-24.96522 4.35294,-45.564708 -25.44467,-52.371855 -51.32169,-49.098532 -28.88715,12.369092 -23.56049,37.717112 -21.60625,58.861762 6.66296,29.71585 21.76686,38.584 40.69493,44.03319 8.24106,-6.80961 18.66057,-9.28422 27.62529,-28.8312 z"/><path d="m 330.67904,147.05787 c 3.72059,-14.62059 2.40772,-9.56522 4.60772,-24.96522 4.35294,-45.564708 -27.66288,-52.98142 -51.35294,-49.098532 -28.54575,12.837088 -23.30441,38.335292 -21.575,58.861762 6.84118,29.3 22.26258,37.42731 40.69493,44.03319 8.22825,-6.89931 18.52529,-10.2312 27.62529,-28.8312 z" class="skin head" id="path931" sodipodi:nodetypes="cccccc"/><g transform="'+_art_transform+'"style="display:inline;opacity:1" id="g6985"/><path sodipodi:nodetypes="ccc" id="path836-0-8" class="shadow" d="m 289.19072,140.7229 c -0.58382,3.43317 -0.99352,4.10273 -2.32781,7.22613 0.94543,-2.80397 1.75469,-4.08105 2.32781,-7.22613 z"/><path sodipodi:nodetypes="ccc" id="path836-0-8-3" class="shadow" d="m 289.73258,148.65358 c -1.16267,0.69754 -1.8436,-0.002 -2.85814,-0.73987 0.89019,0.8089 1.8548,1.4671 2.85814,0.73987 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Leg_Highlights1.tw b/src/art/vector_revamp/layers/Leg_Highlights1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..31900d027061a20488c761b677e423bcf7d7079c
--- /dev/null
+++ b/src/art/vector_revamp/layers/Leg_Highlights1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Leg_Highlights1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 251.99197,509.9025 c -5.23668,7.36843 -4.53715,18.6497 -2.744,23.55798 1.47494,-6.06602 4.11072,-17.56782 2.744,-23.55798 z" class="highlight1" id="path1141-07-4-0" sodipodi:nodetypes="ccc"/><path d="m 356.65399,517.81824 c 6.76776,9.52278 5.86371,24.10242 3.54628,30.44576 -1.90617,-7.83958 -5.31259,-22.70422 -3.54628,-30.44576 z" class="highlight1" id="path1141-07-4-0-3" sodipodi:nodetypes="ccc"/><path d="m 360.4759,558.09508 c 0.81932,1.60231 0.35659,3.80443 -0.13802,4.71965 -0.11582,-1.23741 -0.30375,-3.57904 0.13802,-4.71965 z" class="highlight1" id="path1141-07-4-0-3-9" sodipodi:nodetypes="ccc"/><path d="m 247.61623,559.01301 c -0.81932,1.60231 -0.35659,3.80443 0.13802,4.71965 0.11582,-1.23741 0.30375,-3.57904 -0.13802,-4.71965 z" class="highlight1" id="path1141-07-4-0-3-9-2" sodipodi:nodetypes="ccc"/><path d="m 239.97063,629.98426 c -1.13405,1.65477 -0.53336,6.49014 0.13802,7.3759 -0.10399,-1.20078 0.025,-6.18884 -0.13802,-7.3759 z" class="highlight1" id="path1141-07-4-0-3-9-2-6" sodipodi:nodetypes="ccc"/><path d="m 370.086,637.36953 c 1.64444,1.34354 1.87091,6.96776 1.08314,8.01095 -0.0993,-1.27689 -1.05116,-6.87277 -1.08314,-8.01095 z" class="highlight1" id="path1141-07-4-0-3-9-5" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Leg_Highlights2.tw b/src/art/vector_revamp/layers/Leg_Highlights2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..84162eec1a3d7d2ddcba2e2b6082477a2604c4ca
--- /dev/null
+++ b/src/art/vector_revamp/layers/Leg_Highlights2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Leg_Highlights2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6" class="highlight2" d="m 252.40264,490.48989 c 10.07018,29.84487 -3.27803,57.85752 -3.82385,61.89524 -3.30803,-1.62614 -7.09693,-44.45212 3.82385,-61.89524 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0" class="highlight2" d="m 247.84341,555.55395 c 2.9926,8.86913 0.40085,10.94377 0.23865,12.14368 -0.98306,-0.48325 -3.48403,-6.96003 -0.23865,-12.14368 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0-8" class="highlight2" d="m 240.30654,628.14692 c 2.9926,8.86913 0.40085,10.94377 0.23865,12.14368 -0.98306,-0.48325 -3.48403,-6.96003 -0.23865,-12.14368 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-0-0" class="highlight2" d="m 369.91756,635.45313 c -1.97841,9.14894 0.82978,10.91963 1.12561,12.09376 0.92262,-0.59052 2.68097,-7.30704 -1.12561,-12.09376 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6-6-5" class="highlight2" d="m 353.92504,483.09326 c -3.41721,37.99625 7.60129,92.56555 9.59682,99.67367 3.83375,-17.75114 7.1206,-59.60555 -9.59682,-99.67367 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Leg_Narrow.tw b/src/art/vector_revamp/layers/Leg_Narrow.tw
new file mode 100644
index 0000000000000000000000000000000000000000..bd861c75edbfb7fd499293fdd7f2c04dd85c1af7
--- /dev/null
+++ b/src/art/vector_revamp/layers/Leg_Narrow.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Leg_Narrow [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccccccccc" id="path6860" class="shadow" d="m 230.16344,406.75684 c -0.45725,0.19597 -13.71714,52.20295 -12.8877,76.1189 -2.06873,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 C 243.31989,808.28831 292.17696,748.44875 282.3,688.2 c 1.17052,-5.16551 -6.13072,-15.79216 -6.185,-24.33327 1.31033,-7.42825 1.63646,-18.3535 -0.0492,-29.59286 -0.5844,-5.41129 -1.3899,-10.65541 -1.88678,-16.19898 7.43414,-17.32734 10.54386,-39.4311 13.55873,-62.48667 9.12116,-16.1781 17.20545,-81.64845 13.49464,-84.48248 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 30.38462,150.0183 40.86482,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 2.37617,30.85173 9.17797,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 33.05508,-146.87213 -7.38839,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 -2.02672,-44.83468 11.10825,-100.53242 4.16575,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684"/><path d="m 230.16344,406.75684 c 0,0 -12.5877,51.7189 -12.8877,76.1189 -0.36782,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 48.68707,-110.66217 42.45766,-170.90923 0.25772,-5.16551 -6.84658,-15.66345 -6.185,-24.33327 0.61317,-8.03525 0.74534,-18.83014 -0.0492,-29.59286 -0.40774,-5.52344 -2.62982,-10.65541 -1.88678,-16.19898 6.92108,-17.8404 8.86083,-41.11413 13.55873,-62.48667 6.60293,-16.1781 16.66209,-81.64845 13.49464,-84.48248 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 32.27981,149.20607 40.86482,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 3.45796,30.31083 9.17797,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 32.71749,-146.87213 -7.38839,-213.23096 1.59844,-15.40469 -2.8685,-29.85933 -3.83238,-43.53363 -3.17906,-45.1006 8.10954,-101.22443 4.16575,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" class="skin" id="XMLID_464_" sodipodi:nodetypes="cccsccccsscccccccscsscccsccc"/><path d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z" class="shadow" id="XMLID_590_-04-8-55" sodipodi:nodetypes="ccc"/><path d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z" class="shadow" id="XMLID_590_-04-8-55-0" sodipodi:nodetypes="ccc"/><path d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z" class="shadow" id="XMLID_590_-04-8-55-8" sodipodi:nodetypes="ccc"/><path d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z" class="shadow" id="XMLID_590_-04-8-55-8-7" sodipodi:nodetypes="ccc"/><path d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z" class="shadow" id="XMLID_590_-04-8-55-8-75" sodipodi:nodetypes="ccc"/><path d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z" class="shadow" id="XMLID_590_-04-8-55-8-75-3" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Leg_Normal.tw b/src/art/vector_revamp/layers/Leg_Normal.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5983915ddf45ab5a6557428fe9f4dbb2825dac7a
--- /dev/null
+++ b/src/art/vector_revamp/layers/Leg_Normal.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Leg_Normal [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 230.16344,406.75684 c -0.45725,0.19597 -13.76292,52.20295 -12.8877,76.1189 -2.18291,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 3.47755,-50.82092 56.46873,-110.66048 46.04662,-170.90923 1.23512,-5.16551 -2.93357,-15.79216 -2.99085,-24.33327 1.38265,-7.42825 1.72678,-18.3535 -0.0519,-29.59286 -0.61665,-5.41129 -1.46661,-10.65541 -1.99091,-16.19898 8.64254,-21.66379 7.87642,-41.52669 10.77156,-62.48667 9.62459,-16.1781 13.31636,-81.64845 9.60555,-84.48248 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 27.37942,150.0183 37.85962,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 5.38137,30.85173 12.18317,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 37.12094,-146.87213 -3.32253,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 -2.02672,-44.83468 7.04239,-100.53242 0.0999,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 l -148.7328,16.03681" class="shadow" id="path3088" sodipodi:nodetypes="cccccccccccccccccccccccccccc"/><path sodipodi:nodetypes="cccsccccsscccccccscsscccsccc" id="path3090" class="skin" d="m 230.16344,406.75684 c 0,0 -12.57114,51.7189 -12.8877,76.1189 -0.38812,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 52.61985,-110.66217 46.04662,-170.90923 0.27194,-5.16551 -3.68895,-15.66345 -2.99085,-24.33327 0.64701,-8.03525 0.78648,-18.83014 -0.0519,-29.59286 -0.43024,-5.52344 -2.77497,-10.65541 -1.99091,-16.19898 7.30308,-17.8404 5.81436,-41.11413 10.77156,-62.48667 6.96737,-16.1781 12.773,-81.64845 9.60555,-84.48248 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 29.27461,149.20607 37.85962,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 6.46316,30.31083 12.18317,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 36.78335,-146.87213 -3.32253,-213.23096 1.59844,-15.40469 -2.8685,-29.85933 -3.83238,-43.53363 -3.17906,-45.1006 4.04368,-101.22443 0.0999,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 l -148.7328,16.03681"/><path sodipodi:nodetypes="ccc" id="path3092" class="shadow" d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z"/><path sodipodi:nodetypes="ccc" id="path3094" class="shadow" d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z"/><path sodipodi:nodetypes="ccc" id="path3096" class="shadow" d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z"/><path sodipodi:nodetypes="ccc" id="path3098" class="shadow" d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z"/><path sodipodi:nodetypes="ccc" id="path3100" class="shadow" d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z"/><path sodipodi:nodetypes="ccc" id="path3102" class="shadow" d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Leg_Wide.tw b/src/art/vector_revamp/layers/Leg_Wide.tw
new file mode 100644
index 0000000000000000000000000000000000000000..52e737b5832fb40c03650d1d8976f99a2f9281ee
--- /dev/null
+++ b/src/art/vector_revamp/layers/Leg_Wide.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Leg_Wide [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccccccccccccccccccc" id="path3112" class="shadow" d="m 230.16344,406.75684 c -0.45725,0.19597 -13.71714,52.20295 -12.8877,76.1189 -2.06873,32.41749 4.89133,108.27705 14.46929,134.30347 0.0164,4.8235 -4.19061,11.34488 -0.74046,25.66374 0.70559,9.86707 1.46989,9.97145 4.7938,18.63204 -3.04236,59.54886 -15.65675,146.12389 -20.39721,197.05189 7.84194,-4.38266 15.89481,-5.60145 24.44118,0.58235 C 243.31989,808.28831 302.42696,748.44875 292.55,688.2 c 1.17052,-5.16551 -4.63072,-15.79216 -4.685,-24.33327 1.31033,-7.42825 1.63646,-18.3535 -0.0492,-29.59286 -0.5844,-5.41129 -1.3899,-10.65541 -1.88678,-16.19898 7.43414,-17.32734 10.6379,-36.86783 12.06178,-60.7189 9.12116,-16.1781 6.9524,-83.41622 3.24159,-86.25025 -3.95738,-3.4222 -8.61637,-6.669 -13.51105,-9.85687 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -4.79782,15.97069 11.88462,136.6433 35.11482,167.99625 -0.30896,6.54251 1.22253,11.96366 3.58293,16.51999 1.95745,6.2414 7.67144,16.40567 8.31026,16.27188 -0.20808,0.10404 8.12617,30.85173 14.92797,58.18868 2.41014,12.81931 6.35083,28.63924 9.61479,46.06708 2.92205,27.63185 3.1728,57.02446 2.2074,100.15166 6.83065,-3.93915 13.84195,-3.00057 21.00588,2.05882 2.84613,-58.5 49.30508,-148.62213 0.36161,-213.23096 2.21201,-14.63772 -2.15046,-28.96177 -3.83238,-43.53363 10.22328,-45.83468 3.35825,-100.53242 -3.58425,-152.08653 -3.78587,-25.46967 -14.28583,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684"/><path d="m 230.16344,406.75684 c 0,0 -12.5877,51.7189 -12.8877,76.1189 -0.36782,31.77965 6.95433,107.50343 14.46929,134.30347 0.36107,4.69556 -3.03695,10.79151 -0.74046,25.66374 1.36037,8.80989 2.21605,9.30911 4.7938,18.63204 -1.57612,59.1823 -15.41843,146.06431 -20.39721,197.05189 l 24.44118,0.58235 c 2.2,-51.3 58.93707,-110.66217 52.70766,-170.90923 0.25772,-5.16551 -5.34658,-15.66345 -4.685,-24.33327 0.61317,-8.03525 0.74534,-18.83014 -0.0492,-29.59286 -0.40774,-5.52344 -2.62982,-10.65541 -1.88678,-16.19898 6.92108,-17.8404 9.4852,-38.19731 12.06178,-60.7189 6.60293,-16.1781 6.40904,-83.41622 3.24159,-86.25025 l -13.51105,-9.85687 c 0,0 15.5597,-0.57049 15.07622,-0.62421 l 3.14438,0.23429 c -3.40993,15.37588 9.52981,126.20607 35.11482,167.99625 0.38726,6.28143 1.71425,11.94402 3.58293,16.51999 2.67979,6.56225 8.31026,16.27188 8.31026,16.27188 0,0 9.20796,30.31083 14.92797,58.18868 2.6121,12.73068 7.26837,28.37709 9.61479,46.06708 3.65301,27.54048 4.30844,56.8825 2.2074,100.15166 l 21.00588,2.05882 c 0.2,-58.5 48.21749,-148.87213 0.36161,-213.23096 1.59844,-15.40469 -6.10129,-30.01447 -3.83238,-43.53363 7.82094,-46.6006 0.35954,-101.22443 -3.58425,-152.08653 -0.3,-26 -14.75479,-68.54216 -14.75479,-68.54216 L 230.1634,406.75684" class="skin" id="path3114" sodipodi:nodetypes="cccsccccsscccccccscsscccsccc"/><path d="m 247.56984,612.94295 c -1.74439,-1.03364 -2.21606,-1.46317 -4.53268,-2.4083 3.01875,0.65797 2.98097,0.84985 4.53268,2.4083 z" class="shadow" id="path3116" sodipodi:nodetypes="ccc"/><path d="m 236.04758,612.88385 c -0.72877,1.13042 -1.31762,1.55245 -2.06393,2.72451 0.85469,-1.08422 1.39503,-1.32984 2.06393,-2.72451 z" class="shadow" id="path3118" sodipodi:nodetypes="ccc"/><path d="m 254.79184,646.43543 c -1.32454,1.59592 -3.05575,7.57454 -3.82557,16.35213 -0.22953,-7.60634 1.53236,-12.92801 3.82557,-16.35213 z" class="shadow" id="path3120" sodipodi:nodetypes="ccc"/><path d="m 235.79639,660.98019 c 2.95671,5.50217 3.00675,8.23079 3.58068,13.78963 0.42672,-7.66884 -1.31139,-10.80301 -3.58068,-13.78963 z" class="shadow" id="path3122" sodipodi:nodetypes="ccc"/><path d="m 388.88703,650.29137 c -2.16423,9.3299 -1.81831,17.03209 -2.58813,25.80968 0.21241,-9.68346 0.0297,-19.29197 2.58813,-25.80968 z" class="shadow" id="path3124" sodipodi:nodetypes="ccc"/><path d="m 358.71593,661.56392 c 4.38265,5.28303 6.91607,6.62584 9.0525,16.71593 -1.16259,-10.63658 -5.61093,-13.43259 -9.0525,-16.71593 z" class="shadow" id="path3126" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Makeup_Mouth_Angry.tw b/src/art/vector_revamp/layers/Makeup_Mouth_Angry.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f66aafefbb45ecff1e136d335f86f9c0111f2671
--- /dev/null
+++ b/src/art/vector_revamp/layers/Makeup_Mouth_Angry.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Makeup_Mouth_Angry [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 303.21211,160.51 c -0.1196,-0.44204 0.0157,-0.17175 0.0725,-0.73972 -0.45045,-1.43383 -2.50087,-3.65048 -5.17507,-3.87706 -1.31267,-0.11115 -2.14942,0.64259 -2.95604,0.71387 -0.89941,0.0794 -1.93684,-0.22714 -2.47046,0.0983 -2.11887,1.29216 -2.16833,3.5948 -2.56096,5.27793 0.0977,0.14622 0.13405,0.19158 0.24781,0.28458 2.03693,0.66569 2.28731,1.39548 3.57799,1.57204 1.78481,0.24416 3.66458,-0.12881 5.34987,-0.76518 1.45933,-0.55105 1.63305,-1.53502 3.9143,-2.56474 z" class="lips" id="path2167" sodipodi:nodetypes="ccsssccaacc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Makeup_Mouth_Happy.tw b/src/art/vector_revamp/layers/Makeup_Mouth_Happy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..cdaa7ac97be888bb0f9241081c2907fa411b9056
--- /dev/null
+++ b/src/art/vector_revamp/layers/Makeup_Mouth_Happy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Makeup_Mouth_Happy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccsssccaacc" id="path2173" class="lips" d="m 306.2425,158.91338 c 0.0885,-0.52142 -0.3216,-0.52623 -0.53674,-0.90566 -1.91575,0.17329 -3.20151,-0.14738 -5.59157,-0.43958 -1.55764,-0.19043 -2.11895,0.9562 -2.92556,1.02748 -0.89942,0.0794 -1.58137,-0.68617 -2.52047,-0.32593 -2.30484,0.88413 -2.53398,1.90763 -3.41833,2.43189 -0.1583,0.26089 0.0291,0.23235 -0.12857,0.50599 1.8202,1.45612 2.86557,2.8365 4.73104,3.3106 1.76066,0.44746 3.77941,0.17651 5.41525,-0.61354 2.11526,-1.02161 1.78748,-1.80873 4.97488,-4.99126 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Mouth_Angry.tw b/src/art/vector_revamp/layers/Mouth_Angry.tw
new file mode 100644
index 0000000000000000000000000000000000000000..95ba1334c6464189711418ab7c3dcf73cb8050e7
--- /dev/null
+++ b/src/art/vector_revamp/layers/Mouth_Angry.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Mouth_Angry [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="path1342" class="shadow" d="m 299.33045,163.0623 c -2.22683,0.77196 -3.28766,0.91329 -5.47579,0.78419 2.47755,1.53907 4.80113,1.31901 5.47579,-0.78419 z"/><path sodipodi:nodetypes="cssssssssaassaacc" id="path1344" class="shadow" d="m 303.29252,159.74962 c -0.77397,-0.41783 -1.94426,-0.53294 -2.58543,-0.49177 -1.74342,0.11193 -2.32053,-0.0884 -3.77868,0.18949 -0.25799,0.0491 -0.47638,-0.0203 -0.72681,0.0217 -0.17097,0.0286 -0.37606,-0.0325 -0.54336,-0.007 -0.56454,0.0858 -1.03368,0.29437 -1.55315,0.34696 -0.24658,0.025 -0.53089,0.16145 -0.76652,0.17978 -0.24098,0.0187 -0.49192,0.077 -0.70508,0.16146 -0.92748,0.36784 -1.16576,0.90482 -1.58849,1.17427 -0.28593,0.18224 -0.70137,0.0459 -0.85089,0.30787 -0.10881,0.1907 -0.0885,0.5853 0.12207,0.64731 0.40306,0.11869 0.71966,-0.81474 0.8675,-0.91454 3.35817,-2.26716 6.47154,-1.47489 10.53018,-1.64788 1.22653,-0.0523 0.81628,1.10278 1.32302,0.92292 0.29101,-0.10322 0.21263,-0.58462 0.25566,-0.89039 v -2e-5 z"/><path sodipodi:nodetypes="ccc" id="path1346" class="shadow" d="m 300.31348,156.54312 c -2.16558,-0.9782 -2.33357,-1.18382 -4.62348,-0.0559 1.2946,-0.59913 2.52689,-0.84476 4.62348,0.0559 z"/><path d="m 294.63515,156.61859 c -1.56921,-0.29313 -2.09801,-0.19745 -3.08382,1.04091 1.26304,-1.19282 1.42246,-0.95353 3.08382,-1.04091 z" class="shadow" id="path1348" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Mouth_Angry_Highlights.tw b/src/art/vector_revamp/layers/Mouth_Angry_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..fd5796ade3603ae09475a0f98bebd189ca653dc4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Mouth_Angry_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Mouth_Angry_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8" class="highlight2" d="m 301.64789,159.89477 c -2.60544,-0.21224 -3.67604,0.1428 -4.86465,0.77437 0.59706,0.64599 3.22498,-0.0294 4.86465,-0.77437 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4" class="highlight2" d="m 294.48087,160.89481 c -1.88322,-0.56039 -2.25362,0.29676 -3.51638,0.91278 2.02472,-0.35251 2.05407,-0.34279 3.51638,-0.91278 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-0-9-5-8-4-4" class="highlight2" d="m 294.88197,157.11058 c -0.78326,0.45698 -1.4199,0.7394 -2.39837,-0.0329 0.33843,-0.28241 1.31962,-0.35855 2.39837,0.0329 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Mouth_Happy.tw b/src/art/vector_revamp/layers/Mouth_Happy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..728fad5362057074403d5acca98b8bfe1ce30451
--- /dev/null
+++ b/src/art/vector_revamp/layers/Mouth_Happy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Mouth_Happy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 301.27218,163.91304 c -2.02347,0.86053 -3.10624,0.92883 -5.4758,0.64055 2.47756,1.53907 4.80114,1.46264 5.4758,-0.64055 z" class="shadow" id="path1314" sodipodi:nodetypes="ccc"/><path d="m 305.80825,157.94409 c -0.8548,-0.20715 -1.63651,1.18171 -2.24611,1.38466 -1.65756,0.55182 -3.23335,0.94823 -4.6915,1.22616 -0.25799,0.0491 -0.47638,-0.0203 -0.72681,0.0217 -0.17097,0.0286 -0.37606,0.17057 -0.54336,0.19602 -0.56454,0.0858 -1.10774,0.15389 -1.62721,0.20654 -0.24658,0.025 -0.48781,-0.0684 -0.72344,-0.0501 -0.24098,0.0187 -0.4761,0.14908 -0.70508,0.16146 -1.01288,0.0547 -1.64256,0.0771 -2.18978,0.0581 -0.33886,-0.0117 -0.63527,-0.73644 -0.99312,-0.59295 -0.2332,0.0935 -0.35349,0.52681 -0.20093,0.72644 0.25514,0.33384 1.08425,-0.0325 1.26053,-0.005 3.52088,0.54577 8.29972,-0.19908 12.32373,-2.04708 1.11562,-0.51234 1.35245,0.0138 1.54245,-0.49122 0.10894,-0.28951 -0.17874,-0.72172 -0.47937,-0.79457 z" class="shadow" id="path1317" sodipodi:nodetypes="assssssssaassaa"/><path d="m 302.18075,157.88492 c -1.9255,-0.43023 -2.47083,-0.86137 -4.58948,0.56243 1.20293,-0.76676 2.88849,-0.83196 4.58948,-0.56243 z" class="shadow" id="path1319" sodipodi:nodetypes="ccc"/><path sodipodi:nodetypes="ccc" id="path1321" class="shadow" d="m 296.50014,158.47304 c -1.4946,-0.56084 -1.90245,-0.29834 -3.21761,0.49033 1.26388,-0.42143 1.56627,-0.69239 3.21761,-0.49033 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Mouth_Happy_Highlights.tw b/src/art/vector_revamp/layers/Mouth_Happy_Highlights.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1c2c26175ca55f071d47a794002d8cee00dd53c6
--- /dev/null
+++ b/src/art/vector_revamp/layers/Mouth_Happy_Highlights.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Mouth_Happy_Highlights [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 304.37886,159.86327 c -2.57237,0.619 -4.07207,1.20035 -5.28117,1.79175 0.5751,0.66563 4.82493,0.14322 5.28117,-1.79175 z" class="highlight2" id="path1464" sodipodi:nodetypes="ccc"/><path d="m 296.02299,162.37527 c -0.81152,-0.0632 -2.02161,-0.91858 -3.12969,-0.82183 0.45583,0.75233 2.15352,1.92215 3.12969,0.82183 z" class="highlight2" id="path1466" sodipodi:nodetypes="ccc"/><path d="m 296.71391,158.72134 c -0.78327,0.45697 -1.4199,0.7394 -2.39837,-0.0329 0.33843,-0.28242 1.31961,-0.35856 2.39837,0.0329 z" class="highlight2" id="path1468" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Navel_Piercing.tw b/src/art/vector_revamp/layers/Navel_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..a3c21c24aaabb045d182f4ff0e7d5fa1d7fc5000
--- /dev/null
+++ b/src/art/vector_revamp/layers/Navel_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Navel_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><circle r="2.7" cy="336.9996" cx="276.44211" class="steel_piercing" id="XMLID_515_"/><circle r="2.7" cy="346.14935" cx="276.88406" class="steel_piercing" id="XMLID_516_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Navel_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Navel_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..75d20edfeff7f2a9cb45a6ec7c7890912a53323f
--- /dev/null
+++ b/src/art/vector_revamp/layers/Navel_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Navel_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 277.10131,343.99568 c -0.3,-2.7e-4 -1.95,3 -1.8,17.4 0.15,19.05 1.8,19.95 2.1,19.95 0.49818,0 0.33196,-11.1 1.33125,-23.85 -0.75,-5.99289 -1.18125,-13.49959 -1.63125,-13.5 z" class="steel_piercing" id="XMLID_513_" sodipodi:nodetypes="scscs"/><path d="m 277.25964,381.16047 c -0.75,0 -1.5,3.6 -1.2,6.6 0.3,1.95 0.9,4.5 1.8,4.5 0.6,0 1.05,-2.7 1.2,-4.5 0,-3.15 -1.05,-6.6 -1.8,-6.6 z" class="steel_piercing" id="XMLID_514_" sodipodi:nodetypes="scscs"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_0.tw b/src/art/vector_revamp/layers/Penis_0.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3f6c5a0d39c66856fe53c04846a6d02708b66759
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_0.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_0 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 278.4,442.4 c 0.2,0.1 0.2,0.4 0.2,0.5 0,1 1.5,4.4 3.3,6 4.8,4.2 10.2,6.1 9.7,3.9 -0.1,-0.4 0.4,-0.5 0.4,-0.7 0.6,-2.1 -2.1,-5.3 -5.6,-8.3 -2.9,-2.5 -3.4,-2.2 -4,-2.7 -0.1,-0.1 -0.3,-0.2 -0.3,-0.5 -0.1,-0.3 0.2,-0.5 0.2,-0.7 0.1,-0.8 -0.9,-1.3 -1.9,-1.8 -0.7,-0.4 -2.2,-0.8 -3,-0.2 -1.7,1.3 -0.7,5.3 0.4,4.7 0.2,-0.1 0.4,-0.3 0.6,-0.2 z" class="shadow" id="XMLID_890_" sodipodi:nodetypes="ssccccccccccs"/><path d="m 278.5,442.5 c 0.2,0.2 0.2,0.4 0.2,0.5 0,0.6 1.6,3.9 4.8,6.6 2.4,2 6.9,5 8.5,3.6 0.3,-0.3 0.4,-0.5 0.4,-0.8 0.7,-2.3 -2.8,-5.2 -3.7,-6.1 -3.3,-2.8 -5.2,-4.5 -6,-5 -0.1,-0.1 -0.4,-0.3 -0.5,-0.6 -0.1,-0.3 0.1,-0.4 0.1,-0.6 0.1,-0.6 -1,-1.3 -1.8,-1.7 -0.6,-0.3 -2,-0.8 -2.8,-0.2 -1.4,1.1 -0.5,4.2 0.2,4.4 0.2,0 0.4,-0.2 0.6,-0.1 z" class="skin penis" id="XMLID_891_" sodipodi:nodetypes="cscccccscsccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_1.tw b/src/art/vector_revamp/layers/Penis_1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..52b04830b167879a106a902ce3c896335b2680b4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 268,434.4 c 0.4,0.3 0.4,0.8 0.4,1 0,1.8 2.4,7.6 6.3,11.2 9.7,8.8 18.8,11.3 17.9,7.1 -0.2,-0.6 0.8,-1 0.9,-1.3 0.8,-3 -4.1,-10 -10.7,-15.3 -5.5,-4.4 -6,-4.3 -7.3,-5.1 -0.2,-0.1 -0.4,-0.3 -0.5,-0.9 -0.1,-0.4 0.3,-1 0.4,-1.3 0.2,-1.4 -1.8,-2.5 -3.6,-3.4 -1.4,-0.7 -4.2,-1.5 -5.6,-0.4 -3.2,2.6 -1.1,9.7 0.7,8.7 0.3,-0.2 0.7,-0.6 1.1,-0.3 z" class="shadow" id="XMLID_888_" sodipodi:nodetypes="sscccccccsccs"/><path d="m 268,434.6 c 0.4,0.3 0.4,0.9 0.4,1 0,1.2 3,7.3 9,12.4 4.4,3.9 13.1,9.3 16,6.9 0.5,-0.4 0.7,-1.1 0.8,-1.4 1.3,-4.3 -5.1,-9.9 -7,-11.6 -6.2,-5.4 -9.9,-8.5 -11.2,-9.4 -0.2,-0.1 -0.8,-0.5 -1,-1.2 -0.1,-0.5 0.2,-0.8 0.3,-1.2 0.2,-1.2 -1.9,-2.6 -3.4,-3.2 -1.2,-0.4 -3.6,-1.6 -5.3,-0.4 -2.7,2 -1,7.9 0.4,8.1 0.2,0.1 0.7,-0.3 1,0 z" class="skin penis" id="XMLID_889_" sodipodi:nodetypes="csccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_2.tw b/src/art/vector_revamp/layers/Penis_2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..fee0079be29b5d6a3e11eddec2c55df1646c3c4b
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 251.7,421.6 c 0.5,0.4 0.5,1.3 0.5,1.5 0,2.8 5.5,12.7 10.5,17.6 15,14.6 29.9,18.3 28.4,11.7 -0.2,-1 1.2,-1.5 1.4,-2.1 2,-6.3 -7.5,-15.7 -17.9,-24.4 -8.7,-7.3 -9,-6.9 -10.9,-8.3 -0.3,-0.2 -0.7,-0.5 -0.9,-1.5 -0.2,-0.7 0.4,-1.6 0.5,-2.2 0.4,-2.3 -2.8,-4 -5.6,-5.4 -2.2,-1.2 -6.7,-2.5 -9.1,-0.5 -5.2,4.1 -1.2,15.3 1.2,14 0.6,-0.2 1.3,-0.7 1.9,-0.4 z" class="shadow" id="XMLID_886_" sodipodi:nodetypes="csccccccccccc"/><path d="m 252,422.1 c 0.6,0.4 0.5,1.3 0.5,1.5 0,1.9 4.9,11.6 14.3,19.9 7.1,6.2 21,15 25.6,11.1 0.9,-0.7 1.2,-1.7 1.3,-2.3 2.1,-6.9 -8.2,-15.9 -11.3,-18.6 -10,-8.6 -15.7,-13.7 -17.9,-15.1 -0.3,-0.2 -1.3,-0.8 -1.5,-2 -0.2,-0.8 0.3,-1.2 0.4,-2 0.3,-2 -3,-4.2 -5.3,-5.2 -1.8,-0.8 -5.9,-2.6 -8.6,-0.5 -4.3,3.1 -1.5,12.6 0.5,13 0.5,0.3 1.3,-0.2 2,0.2 z" class="skin penis" id="XMLID_887_" sodipodi:nodetypes="csccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_3.tw b/src/art/vector_revamp/layers/Penis_3.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e6b4b5f30aeb98527eac050c05c7dae4e05a511e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_3.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_3 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 235.8,408.5 c 0.7,0.5 0.8,1.9 0.8,2.1 0,4 7.6,17.9 14.7,24.6 21.1,20.4 41.9,25.7 39.8,16.4 -0.3,-1.4 1.8,-2.1 2,-3 2.7,-8.8 -10.5,-22 -25,-34.2 -12.3,-10.2 -12.5,-9.7 -15.4,-11.6 -0.4,-0.3 -1,-0.7 -1.2,-2 -0.2,-1.1 0.7,-2.2 0.8,-3.1 0.4,-3.2 -3.9,-5.5 -7.9,-7.6 -3.1,-1.6 -9.2,-3.5 -12.6,-0.8 -7.2,5.8 -1.6,21.3 1.6,19.6 0.6,-0.3 1.6,-1 2.4,-0.4 z" class="shadow" id="XMLID_884_" sodipodi:nodetypes="csccccccccccc"/><path d="m 235.7,408.5 c 0.8,0.6 0.8,2 0.8,2.1 0.1,2.7 6.8,16.4 20.3,28.1 10.1,8.8 29.6,21.2 36.2,15.6 1.2,-1 1.6,-2.3 1.9,-3.2 3,-9.8 -11.6,-22.4 -15.9,-26.2 -14,-12.2 -22.2,-19.3 -25.4,-21.3 -0.4,-0.3 -1.9,-1.2 -2.1,-2.7 -0.2,-1.2 0.4,-1.8 0.5,-2.7 0.4,-2.8 -4.3,-5.9 -7.6,-7.3 -2.6,-1.1 -8.3,-3.6 -12.2,-0.8 -6,4.4 -2.1,17.9 0.8,18.4 0.8,0.1 1.9,-0.7 2.7,0 z" class="skin penis" id="XMLID_885_" sodipodi:nodetypes="ccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_4.tw b/src/art/vector_revamp/layers/Penis_4.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d4ca509064e6c8ffe7c48ce44e7c9649f31fad30
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_4.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_4 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 218.8,395.4 c 1,0.6 1,2.4 1,2.7 0,5.1 9.7,22.6 18.6,31.2 26.7,25.9 53,32.5 50.4,20.7 -0.4,-1.8 2.2,-2.8 2.6,-3.8 3.5,-11.1 -13.2,-27.9 -31.6,-43.3 -15.5,-12.9 -15.8,-12.3 -19.4,-14.6 -0.5,-0.4 -1.3,-0.9 -1.6,-2.6 -0.3,-1.3 0.9,-2.8 1,-3.9 0.6,-4 -4.9,-7 -10,-9.6 -3.9,-2 -11.7,-4.4 -16,-1 -9.2,7.3 -2,27 2,24.8 0.8,-0.4 2,-1.3 3,-0.6 z" class="shadow" id="XMLID_882_" sodipodi:nodetypes="csccccccccccc"/><path d="m 218.6,395.4 c 1.1,0.7 1.1,2.5 1.1,2.8 0.1,3.5 8.8,21.1 25.9,36 12.9,11.2 37.9,27.2 46.4,20.1 1.5,-1.3 2,-3 2.4,-4.2 3.8,-12.5 -14.8,-28.7 -20.4,-33.6 -18,-15.6 -28.5,-24.7 -32.5,-27.4 -0.5,-0.4 -2.4,-1.5 -2.8,-3.5 -0.3,-1.5 0.5,-2.3 0.7,-3.5 0.4,-3.5 -5.4,-7.5 -9.7,-9.3 -3.3,-1.4 -10.7,-4.6 -15.6,-1.1 -7.7,5.6 -2.8,22.8 1.1,23.5 0.9,0.4 2.3,-0.6 3.4,0.2 z" class="skin penis" id="XMLID_883_" sodipodi:nodetypes="cccccccsccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_5.tw b/src/art/vector_revamp/layers/Penis_5.tw
new file mode 100644
index 0000000000000000000000000000000000000000..e017419125e76bd8562d951557175690ac5daec1
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_5.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_5 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 202.1,382.1 c 1.2,0.8 1.2,2.9 1.2,3.2 0,6.2 11.8,27.5 22.6,38 32.5,31.5 64.6,39.6 61.4,25.2 -0.4,-2.2 2.7,-3.4 3.1,-4.7 4.2,-13.5 -16.1,-34 -38.6,-52.7 -18.8,-15.7 -19.3,-14.9 -23.6,-17.8 -0.6,-0.4 -1.6,-1.1 -1.9,-3.1 -0.3,-1.6 1.1,-3.5 1.2,-4.8 0.8,-4.9 -6,-8.6 -12.1,-11.7 -4.8,-2.4 -14.3,-5.3 -19.5,-1.2 -11.2,8.9 -2.4,32.9 2.5,30.2 1,-0.3 2.6,-1.4 3.7,-0.6 z" class="shadow" id="XMLID_880_" sodipodi:nodetypes="csccccccccccc"/><path d="m 201.9,382.1 c 1.3,0.9 1.3,3 1.3,3.4 0.1,4.2 10.7,25.7 31.6,43.9 15.7,13.6 46.1,33.1 56.5,24.5 1.8,-1.6 2.5,-3.7 2.9,-5.1 4.7,-15.3 -18.1,-35 -24.9,-40.9 -22,-19.1 -34.8,-30.1 -39.6,-33.4 -0.6,-0.4 -2.9,-1.8 -3.4,-4.2 -0.3,-1.8 0.6,-2.8 0.9,-4.2 0.5,-4.2 -6.6,-9.1 -11.8,-11.4 -4,-1.7 -13,-5.6 -19,-1.3 -9.4,6.8 -3.4,27.8 1.3,28.7 1.2,0.3 2.8,-0.9 4.2,0 z" class="skin penis" id="XMLID_881_" sodipodi:nodetypes="ccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Penis_6.tw b/src/art/vector_revamp/layers/Penis_6.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ef4557756aad7dfc421aa8b4e34632e971695ad8
--- /dev/null
+++ b/src/art/vector_revamp/layers/Penis_6.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Penis_6 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 183.2,369.4 c 1.4,0.9 1.4,3.5 1.4,3.9 0,7.5 14.3,33.3 27.4,46 39.3,38.2 78.2,48 74.4,30.6 -0.5,-2.6 3.3,-4.1 3.8,-5.6 5.1,-16.4 -19.5,-41.2 -46.7,-63.9 -22.8,-19 -23.3,-18.1 -28.6,-21.5 -0.8,-0.5 -2,-1.3 -2.4,-3.8 -0.4,-2 1.3,-4.2 1.4,-5.8 0.9,-5.9 -7.2,-10.4 -14.7,-14.2 -5.8,-2.9 -17.3,-6.4 -23.6,-1.4 -13.5,10.8 -2.9,39.9 3,36.6 1.3,-0.6 3.1,-1.9 4.6,-0.9 z" class="shadow" id="XMLID_878_" sodipodi:nodetypes="csccccccccccc"/><path d="m 182.9,369.4 c 1.6,1 1.6,3.7 1.6,4.1 0.1,5.1 13,31.1 38.3,53.1 19,16.5 55.9,40.1 68.5,29.6 2.2,-2 3,-4.5 3.5,-6.2 5.6,-18.5 -21.9,-42.4 -30.2,-49.6 -26.6,-23.1 -42.1,-36.5 -48,-40.4 -0.8,-0.5 -3.5,-2.2 -4.1,-5.1 -0.4,-2.2 0.8,-3.4 1,-5.1 0.7,-5.1 -8,-11 -14.3,-13.8 -4.9,-2.1 -15.7,-6.8 -23,-1.6 -11.4,8.3 -4.1,33.7 1.6,34.8 1.4,0.5 3.4,-1 5.1,0.2 z" class="skin penis" id="XMLID_879_" sodipodi:nodetypes="ccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pubic_Hair_Bush.tw b/src/art/vector_revamp/layers/Pubic_Hair_Bush.tw
new file mode 100644
index 0000000000000000000000000000000000000000..25881d0541d62906e7ab4f6e9be1b8ee69923ea6
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pubic_Hair_Bush.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pubic_Hair_Bush [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 308.13404,461.37031 c -0.42215,-1.28729 0.0816,-2.88322 0.21937,-4.35713 0.83735,-0.9231 3.39354,-0.46675 4.27169,-0.32918 -1.30887,-1.90043 -2.57358,-4.54221 -2.26693,-6.80614 1.738,0.72332 5.26268,-0.10717 6.41461,-0.67323 -0.0359,-0.042 -3.73233,-5.5593 -3.73233,-5.5593 l 9.37697,-2.92546 c -2.29483,-1.16082 -2.9398,-3.27348 -0.88244,-5.06275 2.05735,-1.78926 4.65981,-3.19815 6.96574,-5.50002 2.30592,-2.30188 5.70181,-7.11497 7.1718,-9.21523 -3.30249,2.57531 -8.11937,4.56169 -12.38086,6.76405 3.87939,-4.08083 5.14191,-8.70938 6.56483,-13.30436 -2.75485,4.55035 -5.96287,8.80998 -11.80357,11.38073 0.0795,-2.69081 -1.1771,-5.33024 -2.60799,-7.96296 -0.22411,2.1009 0.65963,4.43504 -1.59857,6.10771 -1.87893,0.66093 -0.47641,0.32561 -1.63156,-0.61901 -1.15515,-0.94462 -1.07324,-2.86249 -0.92674,-4.77175 0.20638,0.15948 -5.2425,3.40307 -10.88069,2.89338 0.39636,-1.77718 -0.0929,-3.59654 -0.547,-5.41423 -1.43947,1.75633 -2.54315,3.7645 -5.73335,4.20778 -2.4605,-0.40363 -2.23191,-1.95973 -2.31051,-3.38418 -1.13808,1.43053 -1.96377,3.07348 -4.50289,3.5513 -1.9104,-1.28206 -0.74793,-2.77125 -0.61109,-4.22119 -1.53049,0.96737 -3.1427,1.90033 -3.58898,3.32421 -0.54093,-1.76679 -2.17255,-2.5156 -3.54365,-3.50756 -0.0389,1.41793 0.87573,3.17815 -1.27914,3.8365 -1.65822,-2.01275 -2.66902,-3.03894 -4.81025,-3.3656 0.25465,1.17773 3.29056,2.50997 -1.24916,3.42134 -2.99547,0.66615 -4.88472,-1.06452 -6.85325,-2.62341 1.01031,2.71963 1.71296,5.80844 3.5463,7.54043 -2.27359,-0.46197 -8.62398,-1.3164 -12.1147,-8.21411 -1.18774,2.82298 -3.39707,5.36503 -1.4599,9.04737 -4.08,-0.2462 -6.1875,-2.55065 -8.40846,-4.73671 0.87978,2.88663 0.68095,5.90808 3.36457,8.56923 -3.64826,0.33795 -6.3127,-1.29171 -9.26707,-2.34153 3.9514,4.60614 8.75627,7.56631 13.86823,9.93423 1.34859,1.27311 6.10477,6.04621 5.62068,7.31932 2.82401,-2.71219 1.92529,-1.87573 4.91302,-0.16768 2.79974,2.66519 2.83014,1.95151 3.16745,4.12421 1.92433,1.50259 3.84866,1.63676 5.77299,0.97623 0,0 -2.01653,2.6409 -4.35182,2.38868 1.74775,0.61934 4.06788,-0.37099 5.9306,-0.0583 1.77365,1.74778 0.43253,3.2124 -1.41503,4.63097 2.73367,-0.28074 5.4652,-0.70503 8.23933,1.72431 1.73622,1.49945 2.78135,3.0373 3.78142,4.57765 1.20741,0.19088 2.97961,-0.0117 1.69438,1.91564 0.94867,-0.32712 2.37843,-0.52377 1.68983,-1.29489 1.14987,0.78895 2.29975,0.66306 3.44962,0.4995 -0.7627,-0.5118 -1.8836,-1.08502 -0.37378,-1.68488 l -1.10478,-0.10762 -0.6613,-0.63638 c -0.0538,-0.38752 0.0965,-0.69562 0.57239,-0.87715 -0.55161,-0.19514 -0.82876,-0.0489 -0.99909,0.22508 0.0467,-0.74904 -0.0233,-1.52988 -0.30014,-2.36715 -0.37451,0.28516 -0.76038,0.25212 -1.16432,-0.28668 0.002,-0.91711 -0.0725,-1.84829 0.23704,-2.70958 -0.16694,0.37927 -0.59322,0.44156 -1.01892,0.50457 0.38567,-0.60697 0.46502,-1.15824 0.53332,-1.7075 -0.4944,0.29755 -1.11943,0.0252 -1.05496,-0.82437 0.33836,-0.10834 0.62446,-0.4585 0.67693,-0.79556 -0.43615,-0.85876 -0.10806,-1.64444 -0.0504,-2.55807 0.27076,0.89645 0.49642,1.81024 1.13611,2.5648 0.13715,-0.65786 0.62993,-1.03497 1.15644,-1.38545 0.48685,0.95084 0.54472,1.96297 0.4514,2.9967 0.23312,-0.65185 0.73464,-0.76691 1.27616,-0.80195 0.12849,0.90282 0.30765,1.81288 -0.27027,2.61479 0.54567,-0.30808 1.13159,-0.3075 1.62165,-1.04187 -0.0858,1.11195 -0.27643,2.20992 -0.67396,3.28031 0.25461,-0.26873 0.6401,-0.4284 0.66867,-0.8855 0.23427,0.66706 0.0246,1.11215 -0.0483,1.62563 0.11494,-0.22262 0.30901,-0.3028 0.63201,-0.15092 -0.23603,0.51298 -0.21479,0.99569 0.25629,1.42548 -0.0542,-0.28824 -0.10088,-0.57291 0.23199,-0.67779 0.40976,0.32368 0.52422,0.69166 0.51908,1.07758 -0.002,0.53232 -0.031,0.73901 0.15212,1.14793 -0.0165,-0.005 1.73831,1.6893 1.73831,1.6893 0.38852,-0.50132 0.92958,-0.77384 1.56782,-0.90059 1.1846,0.75012 2.56975,0.89857 3.88755,1.24905 -0.4332,-1.00083 0.027,-1.15529 0.77386,-1.03816 1.46038,-0.0697 1.24438,0.67559 1.26775,1.30448 1.46259,-1.00786 1.07324,-1.76849 1.50981,-2.14482 0.64839,0.13025 1.1895,0.0102 1.588,-0.44262 z" id="path4354-2" class="pubic_hair" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pubic_Hair_Neat.tw b/src/art/vector_revamp/layers/Pubic_Hair_Neat.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c07a01feafc16b815cf22760a8feb3eb93cd598b
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pubic_Hair_Neat.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pubic_Hair_Neat [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="M 487.94,432.27" class="hair" id="path225"/><path d="m 286.65609,461.98173 c 0.16638,0.005 0.65051,0.34419 0.56084,0.39247 0.19977,0.003 0.32856,-0.0658 0.40338,-0.1882 0.33422,0.12782 0.51696,0.25564 0.58043,0.38346 0.21609,-0.0894 0.4782,-0.15944 1.0133,-0.11503 0.43584,0.10754 0.68692,0.23419 0.82103,0.37294 -0.008,0.0927 0.52663,-0.14421 0.736,-0.32954 -0.90113,-4.11148 -2.10193,-8.21187 -1.94173,-12.36266 2.71856,4.23162 8.61462,12.04671 8.61462,12.04671 0.38989,0.13811 0.74234,0.29026 0.96675,0.49043 0.24847,-0.10956 0.69829,-0.13102 1.10404,-0.17177 0.58751,0.0888 1.10811,0.2044 1.59165,0.33481 0.6335,-0.21513 1.27181,-0.4289 2.23112,-0.55239 0.52527,0.0705 1.01879,0.15999 1.33811,0.35403 0.15476,-0.34455 0.70352,-0.50509 1.09301,-0.76827 0,0 0.44736,-5.11636 0.76594,-5.196 -0.12435,-0.50648 -0.23931,-1.02703 0.0439,-2.14488 l 2.01173,-3.54551 c -0.43128,0.39066 -0.44976,-0.25068 -0.56821,-0.64206 -1.08258,-0.32189 7.91303,-16.94494 10.50549,-18.79352 -0.63953,0.33539 -13.02,1.46541 -13.26141,1.25849 -0.98823,0.039 -1.25854,-0.32319 -1.79438,-0.53699 -1.41965,0.37941 -3.15091,0.48875 -4.77102,0.69443 -0.81811,-0.007 -1.4182,-0.1762 -1.83865,-0.47812 -1.18533,0.5001 -2.60972,0.62168 -3.95727,0.86493 -0.81281,-0.12067 -1.55687,-0.28389 -2.06256,-0.59468 -1.39849,0.35479 -3.03308,0.59666 -5.10777,0.62804 -0.72143,-0.13335 -1.41712,-0.2812 -1.90627,-0.54521 -1.13229,0.38897 -2.62485,0.50346 -4.37547,0.42133 -0.93928,-0.0262 -1.90812,-0.0174 -2.53422,-0.41368 -0.42921,0.26544 -1.18226,0.18798 -1.84402,0.20719 -0.52649,0.46904 -18.28084,2.95756 -19.55531,2.12087 0.66622,-0.3004 16.89738,8.89776 17.23132,10.56747 0.62897,0.18482 2.21565,2.89524 2.70926,3.29872 0.93409,1.06603 1.82894,2.13206 2.47505,3.19809 1.19621,0.89238 2.23683,1.80421 3.09974,2.73825 0.58096,0.62421 0.87351,1.24843 1.06066,1.87264 0.77048,0.99028 1.01013,0.94544 1.39224,1.17839 0.30699,0.2588 0.57315,0.52927 0.59205,0.87038 0.66159,0.27273 0.91436,0.709 1.1695,1.14431 0.0913,0.17244 0.0921,0.30177 -0.0352,0.37012 0.27389,0.19768 0.54396,0.36486 0.79721,0.39746 0.0924,-0.009 0.65123,0.76933 0.6451,1.17255 z" id="path5158" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccc" class="pubic_hair"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pubic_Hair_Strip.tw b/src/art/vector_revamp/layers/Pubic_Hair_Strip.tw
new file mode 100644
index 0000000000000000000000000000000000000000..b22d420ff559544c9790d6a40c198429fcb65c12
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pubic_Hair_Strip.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pubic_Hair_Strip [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 290.07972,451.35547 c -5.26522,-8.42781 -6.8522,-25.02276 -6.40057,-24.40984 l -1.97847,0.0413 c -0.0968,0.0277 0.0996,15.01567 6.42775,24.67062 z" id="path4354" class="pubic_hair" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pussy.tw b/src/art/vector_revamp/layers/Pussy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ddc46ea4ef9d3d162a11c59caa4da3c9107deffe
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pussy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pussy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccc" id="path6854" class="shadow" d="m 299.10498,462.39177 c -2.24833,0.21882 -4.49046,0.45489 -7.09885,0.12501 -0.0824,0.0494 -3.69251,-8.40114 -3.88549,-16.1264 2.52772,6.08878 11.00392,15.97054 10.98435,16.0013 z"/><path d="m 299.10498,462.39177 c -2.33004,0.17457 -4.681,0.27242 -7.09885,0.12501 0,0 -3.56283,-8.47896 -3.88549,-16.1264 2.35055,6.18003 10.98435,16.0013 10.98435,16.0013 z" class="labia" id="Vagina" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="cccscscc" id="path6854-9-8" class="shadow" d="m 292.63216,466.59055 c -1.73061,-0.19437 -7.03001,-3.72505 -5.70219,-9.91665 0.1601,-2.76887 0.0867,-6.16317 1.17318,-10.18253 0.28641,1.03144 0.69131,1.94771 0.91322,2.88009 0.0307,0.12881 -0.12066,0.32495 -0.0898,0.45181 0.72643,2.99258 1.24632,5.58783 1.7703,8.72249 0.22169,1.32631 0.89219,2.60457 1.38619,4.09161 1.34088,1.31773 0.15979,2.63545 0.54911,3.95318 z"/><path d="m 292.63216,466.59055 c -1.86507,-0.54952 -6.66046,-3.79896 -5.70219,-9.91665 0.42844,-2.73531 0.15024,-6.23197 1.19594,-10.25643 0.27357,0.96308 1.3884,2.11196 0.90145,2.97052 -0.27993,0.49354 -0.17918,0.53324 -0.0547,1.05621 0.49134,2.00515 0.99352,3.99243 1.20405,5.86369 0.42793,3.80361 1.81823,6.40782 1.90634,6.32948 1.01304,1.31773 0.0191,2.63545 0.54911,3.95318 z" class="skin" id="path1025" sodipodi:nodetypes="cscscsccc"/><path sodipodi:nodetypes="cccccccc" id="path2716" class="shadow" d="m 290.61167,451.63404 c 0,0 -0.78182,-1.41165 -1.1002,-2.03943 0,0 -0.21834,-0.0813 -0.33065,-0.094 -0.34764,-0.10249 -0.86066,0.44582 -1.06839,0.90358 -0.60478,0.75697 -0.3926,1.36358 -0.28906,1.55988 0.39221,0.71764 2.20573,0.62723 2.6884,-0.0278 0.13288,-0.11236 0.1371,-0.30214 0.0999,-0.30214 z"/><path d="m 290.61167,451.63404 c 0,0 -0.78182,-1.41165 -1.1002,-2.03943 0,0 -0.21834,-0.0813 -0.33065,-0.094 -0.33065,-0.094 -0.79324,0.47954 -1.06839,0.90358 -0.20634,0.31802 -0.57552,1.07272 -0.28906,1.55988 0.5294,0.85571 2.53188,0.35264 2.6884,-0.0278 0.0737,-0.11236 0.1275,-0.30214 0.0999,-0.30214 z" class="labia" id="XMLID_891_-5" sodipodi:nodetypes="cccscccc"/><path sodipodi:nodetypes="ccccscc" id="path6854-9" class="shadow" d="m 301.16804,466.55174 c 0.50134,-2.76742 2.59402,-7.92667 -4.70124,-12.03808 -2.47545,-1.86861 -4.84755,-4.98299 -8.3269,-8.07647 0.37045,0.99586 0.38749,3.21147 0.38749,3.21147 0,0 0.97999,0.0942 1.05319,0.23802 3.11283,6.13944 7.49401,9.79553 9.40544,12.53571 0.14956,1.46264 -1.23066,2.71722 2.18202,4.12935 z"/><path d="m 301.16804,466.55174 c 0.1522,-2.28319 2.8586,-7.43057 -4.70124,-12.03808 -2.8757,-1.75266 -4.90969,-4.97366 -8.34395,-8.08216 0.22774,0.85313 -0.63101,3.51922 0.66276,3.20922 0.4373,-0.10479 0.81609,0.13292 1.09603,0.60885 1.32562,2.37763 3.08839,4.85882 4.4723,6.29919 2.84306,2.95909 4.63208,5.87363 4.63208,5.87363 0.21939,1.35814 -1.02735,2.71722 2.18202,4.12935 z" class="skin" id="path1023" sodipodi:nodetypes="cscscscc"/><path sodipodi:nodetypes="ccc" id="path1126-6" class="shadow" d="m 290.54407,451.69582 c 4.14509,6.87889 3.90142,4.72146 6.65769,10.77769 -3.7205,-6.98985 -3.68107,-4.95515 -6.65769,-10.77769 z"/><path sodipodi:nodetypes="ccc" id="path1126-6-1" class="shadow" d="m 289.4631,452.39396 c 2.38282,6.92091 2.62899,7.89107 3.65068,10.1027 -1.00056,-1.52637 -2.58149,-5.88488 -3.65068,-10.1027 z"/><path d="m 290.73545,453.71977 c 3.55162,5.89401 3.75219,3.56791 6.11383,8.75706 -3.18783,-5.9891 -3.56339,-3.76815 -6.11383,-8.75706 z" class="shadow" id="path2763" sodipodi:nodetypes="ccc"/><path d="m 290.71887,453.74374 c 2.04169,5.93003 1.75231,6.85793 2.62772,8.75292 -0.85731,-1.30784 -1.45577,-5.09919 -2.62772,-8.75292 z" class="shadow" id="path2765" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pussy_Piercing.tw b/src/art/vector_revamp/layers/Pussy_Piercing.tw
new file mode 100644
index 0000000000000000000000000000000000000000..359297234eb22196f6c6979d9f6141a7e9e925b7
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pussy_Piercing.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pussy_Piercing [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 293.62018,454.94004 c 0.1,-0.1 1.3,0.5 1.4,1.7 0.1,0.9 -0.6,2 -1.7,2 -1,0.1 -1.8,-0.7 -2,-1.5 -0.2,-1.1 0.6,-2 0.7,-2 0.1,0 -0.6,1.1 -0.2,1.9 0.3,0.4 0.8,0.8 1.3,0.7 0.7,-0.1 1.2,-0.7 1.2,-1.2 0.1,-0.9 -0.8,-1.6 -0.7,-1.6 z" class="steel_piercing" id="XMLID_528_"/><path d="m 289.93897,455.31149 c 0.1,0 0.7,1.2 0,2.2 -0.5,0.7 -1.7,1.1 -2.6,0.4 -0.8,-0.6 -0.9,-1.7 -0.5,-2.5 0.5,-0.9 1.8,-1.1 1.8,-1 0,0.1 -1.2,0.4 -1.3,1.3 -0.1,0.4 0.1,1.1 0.6,1.4 0.5,0.4 1.3,0.2 1.7,-0.2 0.6,-0.5 0.2,-1.6 0.3,-1.6 z" class="steel_piercing" id="XMLID_529_"/><path d="m 289.58138,459.13801 c 0.1,0 0.8,1.2 0.3,2.2 -0.4,0.8 -1.6,1.2 -2.6,0.7 -0.9,-0.5 -1.1,-1.6 -0.7,-2.4 0.4,-1 1.7,-1.2 1.7,-1.2 0.1,0.1 -1.2,0.5 -1.2,1.4 -0.1,0.4 0.2,1.1 0.7,1.3 0.6,0.3 1.3,0.1 1.7,-0.4 0.5,-0.5 0,-1.6 0.1,-1.6 z" class="steel_piercing" id="XMLID_530_"/><path d="m 297.78934,458.63353 c 0.1,-0.1 1.4,0.4 1.7,1.4 0.2,0.9 -0.4,2 -1.4,2.2 -1,0.3 -1.9,-0.4 -2.1,-1.2 -0.4,-1 0.4,-2 0.4,-2 0.1,0 -0.4,1.2 0.1,1.9 0.3,0.4 0.9,0.7 1.4,0.5 0.6,-0.2 1,-0.9 1,-1.4 0,-0.9 -1.2,-1.4 -1.1,-1.4 z" class="steel_piercing" id="XMLID_531_"/><path d="m 299.47329,463.1065 c 0.1,-0.1 1.4,0.4 1.7,1.5 0.2,0.9 -0.4,2 -1.4,2.2 -1,0.2 -1.9,-0.5 -2.1,-1.2 -0.4,-1 0.4,-2 0.4,-2 0.1,0 -0.4,1.2 0.1,1.9 0.3,0.4 0.9,0.7 1.4,0.5 0.6,-0.2 1,-0.9 1,-1.3 -0.1,-1 -1.1,-1.5 -1.1,-1.6 z" class="steel_piercing" id="XMLID_532_"/><path d="m 290.58817,462.89093 c 0.1,0 0.8,1.2 0.3,2.2 -0.4,0.8 -1.6,1.2 -2.6,0.7 -0.9,-0.5 -1.1,-1.6 -0.7,-2.4 0.4,-1 1.7,-1.2 1.7,-1.2 0.1,0.1 -1.2,0.5 -1.2,1.4 -0.1,0.4 0.2,1.1 0.7,1.3 0.6,0.3 1.3,0.1 1.7,-0.4 0.4,-0.5 0,-1.6 0.1,-1.6 z" class="steel_piercing" id="XMLID_533_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pussy_Piercing_Heavy.tw b/src/art/vector_revamp/layers/Pussy_Piercing_Heavy.tw
new file mode 100644
index 0000000000000000000000000000000000000000..63492737123ae8fcd392d4efbc3f3e24d314435e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pussy_Piercing_Heavy.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pussy_Piercing_Heavy [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 291.54981,461.60083 c 0.2,0 2,2.8 0.8,5.2 -1,2 -3.6,3.1 -6,2 -2.1,-1.1 -2.8,-3.7 -2,-5.6 0.9,-2.4 3.7,-3.1 3.9,-2.9 0.1,0.2 -2.6,1.4 -2.7,3.6 -0.1,1.2 0.5,2.6 1.9,3.1 1.4,0.6 3.1,0 3.9,-1 1.3,-1.7 0.1,-4.3 0.2,-4.4 z" class="steel_piercing" id="XMLID_512_"/><ellipse ry="2.0000744" rx="1.8000669" cy="-502.68118" cx="-218.76495" class="steel_piercing" transform="rotate(172.03924)" id="XMLID_517_"/><ellipse ry="1.8000669" rx="1.7000633" cy="-503.97836" cx="-221.59023" class="steel_piercing" transform="rotate(172.03924)" id="XMLID_518_"/><path d="m 291.24614,458.0085 c 0.2,0 1.7,3 0.1,5.2 -1.2,1.8 -4.1,2.6 -6.1,1.2 -2,-1.4 -2.2,-4.1 -1.2,-5.8 1.2,-2.2 4.2,-2.6 4.3,-2.4 0.1,0.2 -2.8,1.1 -3.1,3.1 -0.2,1.2 0.2,2.6 1.4,3.4 1.3,0.9 3.1,0.4 4,-0.4 1.3,-1.5 0.5,-4.3 0.6,-4.3 z" class="steel_piercing" id="XMLID_519_"/><ellipse ry="2" rx="1.8" cy="461.40851" cx="283.84613" class="steel_piercing" id="XMLID_520_"/><ellipse ry="1.8" rx="1.7" cy="463.7085" cx="285.84613" class="steel_piercing" id="XMLID_521_"/><path d="m 296.04874,461.50971 c -0.2,0 -1.4,3.2 0.4,5.2 1.4,1.7 4.3,2.2 6.2,0.6 1.9,-1.5 1.9,-4.3 0.8,-5.9 -1.3,-2.1 -4.4,-2.2 -4.4,-2 0,0.2 2.8,0.8 3.4,2.8 0.3,1.1 0,2.6 -1.1,3.5 -1.2,1 -3,0.7 -4,-0.2 -1.7,-1.2 -1.1,-4 -1.3,-4 z" class="steel_piercing" id="XMLID_522_"/><ellipse ry="2.0000093" rx="1.8000083" cy="490.00046" cx="262.68652" class="steel_piercing" transform="rotate(-4.7982784)" id="XMLID_523_"/><ellipse ry="1.8000085" rx="1.7000082" cy="491.17413" cx="259.87625" class="steel_piercing" transform="rotate(-4.7983462)" id="XMLID_524_"/><path d="m 293.60229,458.12012 c -0.2,0 -0.8,3.4 1.3,5.1 1.7,1.3 4.6,1.4 6.2,-0.5 1.5,-1.9 1,-4.5 -0.4,-6 -1.8,-1.8 -4.7,-1.3 -4.7,-1.2 -0.1,0.3 2.9,0.3 3.9,2.1 0.5,1.1 0.5,2.6 -0.4,3.6 -1.1,1.2 -2.8,1.2 -4,0.6 -1.7,-0.9 -1.7,-3.8 -1.9,-3.7 z" class="steel_piercing" id="XMLID_525_"/><ellipse ry="2.0000699" rx="1.8000628" cy="526.64166" cx="161.29683" class="steel_piercing" transform="rotate(-15.705363)" id="XMLID_526_"/><ellipse ry="1.8000628" rx="1.7000594" cy="526.31403" cx="164.18712" class="steel_piercing" transform="rotate(-15.705363)" id="XMLID_527_"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Pussy_Tattoo.tw b/src/art/vector_revamp/layers/Pussy_Tattoo.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3882cac1b74dc0a27d9ad6404265b6dbe0238382
--- /dev/null
+++ b/src/art/vector_revamp/layers/Pussy_Tattoo.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Pussy_Tattoo [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path style="fill:none;stroke:none" d="m 253.62239,430.50769 c 14.1376,12.59209 60.92413,9.84192 72.85898,-5.2246" id="path4363" sodipodi:nodetypes="cc"/><text xml:space="preserve" id="text4365" style="font-size:12px;line-height:0%;text-align:center;text-anchor:middle" x="45.367271" y="18.561554"><textPath xlink:href="#path4363" id="textPath4369" style="font-size:12px;text-align:center;text-anchor:middle">'+_art_pussy_tattoo_text+'</textPath></text></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Shoes_Boot.tw b/src/art/vector_revamp/layers/Shoes_Boot.tw
new file mode 100644
index 0000000000000000000000000000000000000000..8a99d4d9661f504d3d9975012cdb95224a3bd4c9
--- /dev/null
+++ b/src/art/vector_revamp/layers/Shoes_Boot.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Shoes_Boot [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 410.16185,900.0141 c 2.86198,8.5845 -2.04252,30.0269 -2.04252,30.0269 -2.6082,0.68854 -3.40523,0.43588 -4.22778,6.50664 -0.62624,4.62187 1.57451,13.48604 0.72183,20.15407 -0.70731,5.53119 -1.99538,11.20183 -4.78637,16.02933 -2.73689,4.73391 -6.44108,9.36425 -11.28012,11.91064 -3.96775,2.0879 -9.22079,3.98196 -13.2869,2.09276 -4.86908,-2.26228 -7.20428,-8.52988 -8.34573,-13.77611 -3.12418,-14.35908 3.89312,-29.67483 5.11156,-43.78772 0.56958,-9.56894 0.56958,-17.42915 0.45566,-21.87186 0,-0.78196 0.5419,-1.93558 0.55511,-3.02502 0.0176,-1.4499 -0.49225,-2.78612 -0.49225,-2.98125 3.13628,-27.51762 -3.62235,-80.17699 -7.02883,-121.55654 -1.76091,-21.39034 -8.15834,-63.86913 -8.15834,-63.86913 27.93153,-9.28995 53.21077,9.69771 71.38941,-8.39445 1.69105,35.38515 -7.04987,61.39476 -7.99949,92.08389 0.26562,31.67469 -6.78797,59.35802 -10.58524,100.45785 z" class="shoe" id="XMLID_476_" sodipodi:nodetypes="ccsaaaaaccscscccc"/><path d="m 220.3433,696.48401 c 8.38156,-0.20607 59.08473,13.7755 77.55825,9.34059 5.76359,46.33045 -41.72917,95.75159 -43.05923,107.72214 -1.33006,11.97055 -6.25632,16.9788 -12.5741,57.54565 0,0 -0.5542,6.09611 1.55173,11.08384 0.88671,2.21677 1.55174,2.32761 2.77096,4.21186 3.10348,4.98773 4.21186,12.63557 3.65767,18.28833 -0.44335,4.65521 -1.77341,4.65521 -3.43599,10.30797 -1.77341,6.20695 -2.10593,15.2957 -2.66012,33.36236 0,1.66257 -0.44336,5.54192 -0.44336,7.20449 -0.44335,0.33252 -2.21676,0.33252 -2.88179,0 0.11084,-1.33006 0.11084,-3.87934 0.11084,-5.43108 -0.22168,-9.31042 1.33006,-28.04211 -0.33252,-29.03966 -1.10838,-0.66503 -18.99219,8.39588 -21.3198,14.8245 -4.65521,13.52229 -2.54928,18.73169 -6.20695,23.60858 -3.10347,4.21186 -22.11225,7.09366 -31.75519,6.31779 -10.19714,-0.88671 -12.08139,-4.21186 -12.74642,-5.32024 -2.32761,-4.43354 -2.66012,-11.97055 -0.55419,-14.51983 0.77587,-0.99755 1.33006,-0.55419 3.32515,-1.21922 3.65767,-1.10839 6.31779,-3.76851 7.2045,-4.76606 3.10347,-3.54682 12.49702,-12.91267 16.01614,-15.51737 3.99535,-14.0275 5.72631,-17.90314 6.65031,-23.71941 0,0 0.77586,-4.3227 1.10838,-9.19959 0.44335,-5.43108 8.82169,-104.08788 18.04646,-176.75792 0,-2.21677 0.30178,-11.78826 -0.0307,-18.32772 z" class="shoe" id="XMLID_477_" sodipodi:nodetypes="ccscccccccccsccccccccccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Shoes_Exterme_Heel.tw b/src/art/vector_revamp/layers/Shoes_Exterme_Heel.tw
new file mode 100644
index 0000000000000000000000000000000000000000..107b25aedd4b448cb215abdbb233b346b91a5ab2
--- /dev/null
+++ b/src/art/vector_revamp/layers/Shoes_Exterme_Heel.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Shoes_Exterme_Heel [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccccc" id="path3082" class="shoe" d="m 197.71421,928.07188 c 0.84235,-11.67605 -1.71189,-49.689 14.90659,-65.62886 1.90184,-5.28177 6.69781,-82.56184 6.89573,-82.59309 l 49.973,2.42 c 3.07009,2.23279 -24.33404,71.01812 -25.51981,81.01101 3.22845,1.13574 4.21503,15.11979 3.86846,24.30368 -6.98224,17.7335 -5.47757,69.39834 -5.47757,69.39834 l -0.94939,-0.18887 c 0,0 -4.47938,-36.71186 -4.23419,-52.20785 -7.90677,18.65992 -21.83411,60.13149 -30.39884,64.8018 -3.0313,-0.44283 -4.27378,0.68941 -6.41589,-1.37679 -3.4832,-21.25345 -2.64809,-39.93937 -2.64809,-39.93937 z"/><path sodipodi:nodetypes="ccccaccac" id="path3084" class="shoe" d="m 375.8095,877.51789 c 7.02973,-8.58252 3.90877,-84.70624 -1.77465,-84.88229 l 42.09097,1.29066 -14.30132,77.42063 c 5.687,16.577 11.33733,41.86577 11.132,63.283 -0.18518,19.31554 -3.388,29.161 -11.132,56.87 -2.904,3.63 -14.52,2.299 -18.392,-0.121 -8.228,-22.99 -12.09246,-37.92868 -13.33653,-57.596 -1.19009,-18.81385 3.65653,-31.702 5.71353,-56.265 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Shoes_Flat.tw b/src/art/vector_revamp/layers/Shoes_Flat.tw
new file mode 100644
index 0000000000000000000000000000000000000000..61ecc146daebad69754a37081487e78d590104f3
--- /dev/null
+++ b/src/art/vector_revamp/layers/Shoes_Flat.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Shoes_Flat [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 238.95,872.025 c -0.48582,4.8674 0.15294,9.06839 -0.0125,13.6 2.22973,9.99408 1.7936,14.49404 2.1125,20.825 0.022,5.27636 -1.31474,9.10565 -4.425,9.7625 -3.67413,1.13135 -6.74815,2.63651 -14.39869,1.5302 -9.18145,2.47145 -15.2613,8.08123 -19.65088,12.66319 -5.99441,11.15878 -13.47376,7.21014 -20.43229,8.63526 -2.26339,1.53969 -4.48245,2.64592 -5.92759,3.92125 -8.08027,1.27814 -9.78952,-1.14984 -9.34055,-4.7749 -4.73388,-0.59152 -3.07859,-2.61348 -3.4875,-4.1125 -2.1797,-0.86783 -3.38524,-2.25017 -1.8875,-5.5125 -1.64492,-1.58194 -0.59193,-3.0027 1.0125,-4.4125 -0.047,-1.41206 -0.0626,-2.02062 1.85427,-3.5987 2.47354,-1.16931 5.2035,-1.82041 6.88323,-3.0263 9.61678,-4.02794 17.69545,-9.58214 24.9375,-15.6 6.764,-7.70672 11.93927,-16.77333 16.725,-26.1125 0.38886,-5.72349 1.1106,-11.50246 2.49687,-17.39219 8.29195,1.78724 16.46415,2.06569 24.4617,0.1436 0.0134,4.46773 -0.288,9.28647 -0.92107,13.46109 z" class="shadow" id="path1284" sodipodi:nodetypes="ccccccccccccccccccc"/><path sodipodi:nodetypes="ccccccccccccccccccc" id="path1286" class="skin" d="m 238.95,872.025 c -0.78366,4.8674 -0.0123,9.06839 -0.0125,13.6 1.96104,9.99408 1.6598,14.49404 2.1125,20.825 -0.33122,5.1439 -1.39649,9.075 -4.425,9.7625 -3.7164,0.94114 -6.82187,2.30479 -14.39869,1.5302 -9.54221,2.255 -15.48251,7.9485 -19.65088,12.66319 -5.99441,10.40697 -13.47376,7.11956 -20.43229,8.63526 -2.68208,1.30708 -4.5396,2.61417 -5.92759,3.92125 -7.45032,0.85817 -9.58295,-1.28756 -9.34055,-4.7749 -4.44919,-0.9711 -3.04844,-2.65368 -3.4875,-4.1125 -1.9584,-0.90471 -3.25864,-2.27127 -1.8875,-5.5125 -1.25464,-1.53858 -0.48809,-2.99116 1.0125,-4.4125 0.0921,-1.45 0.40705,-2.1487 1.85427,-3.5987 2.78612,-0.81208 5.26912,-1.74541 6.88323,-3.0263 10.38085,-4.02794 18.06828,-9.58214 24.9375,-15.6 7.28492,-7.70672 12.23858,-16.77333 16.725,-26.1125 l 2.49687,-17.39219 24.4617,0.1436 c -0.20353,4.43674 -0.48332,9.25857 -0.92107,13.46109 z"/><path d="m 375.58471,902.04597 c 0.52386,-4.42278 1.19018,-8.77106 2.62778,-13.11184 -0.18418,-4.15006 -1.53153,-7.58074 -2.24386,-11.19255 1.41187,-3.81106 3.55196,-7.41574 3.75747,-11.68734 l 9.5403,1.19132 11.39699,0.54305 c -0.13161,5.61968 0.61689,10.96792 1.61199,16.17184 -0.39734,2.28591 -1.32892,4.4142 -1.48163,6.5833 0.49368,10.63259 0.94138,21.12141 0.78125,31.41875 1.02096,6.09599 4.65404,10.88578 -0.98008,20.3093 1.08539,5.03478 -0.79793,7.36352 -3.88112,9.44835 -0.76646,0.77233 -1.5056,1.34202 -2.34991,0.25285 -1.29478,4.61758 -3.69222,4.6425 -6.30536,3.64975 -1.58037,3.04176 -4.00867,3.2139 -7.08388,1.97332 -3.5406,3.44729 -7.70644,0.0206 -7.31963,-0.63385 -4.38119,2.60045 -6.80232,1.14845 -7.60246,-4.0751 0.35561,-2.38229 1.37471,-4.40392 1.37081,-7.1661 -0.32501,-1.77042 -0.20542,-3.64462 -0.12828,-5.82926 2.01476,-4.1624 4.14533,-8.22545 5.26725,-12.21996 2.26819,-8.61114 1.87934,-17.08855 3.02237,-25.62583 z" class="shadow" id="path1288" sodipodi:nodetypes="cccccccccccccccccccc"/><path sodipodi:nodetypes="cccccccccccccccccccc" id="path1290" class="skin" d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 0.89521,6.14315 4.16056,11.07084 -0.98008,20.3093 0.80111,5.03478 -1.4045,7.36352 -3.88112,9.44835 -0.7833,0.60391 -1.56661,0.73191 -2.34991,0.25285 -1.50732,4.13937 -3.80652,4.38532 -6.30536,3.64975 -1.64076,2.4379 -4.02654,3.0352 -7.08388,1.97332 -3.47099,3.02964 -7.70217,-0.005 -7.31963,-0.63385 -4.31272,2.15538 -6.70519,0.51711 -7.60246,-4.0751 0.46976,-2.38229 1.66083,-4.40392 1.37081,-7.1661 -0.0428,-1.77042 -0.0855,-3.64462 -0.12828,-5.82926 2.29215,-4.04352 4.45099,-8.09445 5.26725,-12.21996 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z"/><path sodipodi:nodetypes="ccc" id="path1292" class="shadow" d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z"/><path sodipodi:nodetypes="ccc" id="path1294" class="shadow" d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z"/><path sodipodi:nodetypes="ccc" id="path1296" class="shadow" d="m 395.69892,943.48628 c -0.6807,3.78292 -1.85845,3.72528 -1.22527,8.57452 -1.10247,-5.75622 0.27648,-4.68977 1.22527,-8.57452 z"/><path sodipodi:nodetypes="ccc" id="path1298" class="shadow" d="m 389.12868,946.23737 c -0.6807,3.78292 -1.77006,4.43239 -1.13688,9.28163 -1.10247,-5.75622 0.18809,-5.39688 1.13688,-9.28163 z"/><path sodipodi:nodetypes="ccc" id="path1300" class="shadow" d="m 382.17591,947.91674 c -0.6807,3.78292 -1.37231,4.91853 -1.20317,9.74567 -0.74892,-5.60154 0.25438,-5.86092 1.20317,-9.74567 z"/><path sodipodi:nodetypes="ccc" id="path1302" class="shadow" d="m 375.34424,947.66262 c -0.6807,3.78292 -1.70377,4.56498 -1.79979,9.37002 -0.35118,-5.49105 0.851,-5.48527 1.79979,-9.37002 z"/><path sodipodi:nodetypes="cscsc" id="path1304" class="shadow" d="m 233.85987,866.45583 c 0.20162,3.58528 1.78152,8.46827 1.27913,12.44825 -0.33424,2.64785 -1.53099,3.78741 -2.39316,6.67724 0.49516,-2.71172 1.67721,-3.99993 2.00285,-6.68659 0.49663,-4.09741 -0.91468,-9.23845 -0.88882,-12.4389 z"/><path sodipodi:nodetypes="ccc" id="path1306" class="shadow" d="m 174.52487,930.47124 c -0.6807,3.78292 -7.54752,3.28373 -7.64354,8.08877 -0.35118,-5.49105 6.69475,-4.20402 7.64354,-8.08877 z"/><path sodipodi:nodetypes="ccc" id="path1308" class="shadow" d="m 171.50081,927.25578 c -0.6807,3.78292 -7.92317,3.54889 -8.01919,8.35393 -0.35118,-5.49105 7.0704,-4.46918 8.01919,-8.35393 z"/><path sodipodi:nodetypes="ccc" id="path1310" class="shadow" d="m 170.10938,922.88554 c -1.57133,3.50167 -6.25131,2.72077 -8.61295,5.86956 2.43007,-3.53793 6.80478,-2.48481 8.61295,-5.86956 z"/><path sodipodi:nodetypes="ccc" id="path1312" class="shadow" d="m 169.29085,920.33085 c -1.75883,3.47042 -4.50131,0.78327 -6.86295,3.93206 2.43007,-3.53793 4.92978,-0.57856 6.86295,-3.93206 z"/><path d="m 230.45,922.8 c 3.85881,-1.84229 9.7,-4 11,-6.6 2.2,-4.4 1.86667,-9.69149 1.625,-13.9 -0.25625,-4.4625 -3.63125,-14.53125 -3.63125,-14.53125 0,0 -0.36875,2.03125 -1.46875,4.43125 -1.4,3.6 -7.175,9.4125 -9.775,11.7125 -14.5,12.9 -40.12015,3.86298 -40.12015,3.86298 0,0 -10.2204,5.65968 -15.40485,8.34952 -3.16251,1.6408 -7.14797,2.1417 -9.575,4.75 -3.73865,4.01788 -8.05388,10.05854 -6.2375,15.2375 2.0624,5.88043 10.15263,8.32568 16.3375,9.0875 11.21911,1.38192 22.71118,-3.60382 32.75,-8.8 3.84711,-1.9913 6.24412,-6.14154 10,-8.3 4.46178,-2.56413 9.85603,-3.08285 14.5,-5.3 z" class="shoe" id="XMLID_507_" sodipodi:nodetypes="assccccaaaaaaa"/><path d="m 375.79425,900.4029 c 0,0 -4.6154,16.02837 -6.68537,24.10598 -1.60665,6.26961 -4.06203,12.43938 -4.44905,18.9 -0.19029,3.17658 0.073,6.46298 1.0625,9.4875 0.76026,2.32384 1.5754,5.06857 3.65,6.3625 7.20694,4.49496 17.65124,5.08244 25.42698,1.66447 3.34793,-1.47165 5.42494,-5.19303 6.87423,-8.5507 2.52235,-5.84372 2.45461,-12.55089 2.62323,-18.91351 0.10833,-4.08767 -0.61807,-8.15587 -1.03934,-12.22322 -0.52587,-5.07731 -1.85728,-15.20035 -1.85728,-15.20035 -0.64133,8.18038 -8.65808,22.74034 -16.16284,20.44039 -10.43676,-3.19851 -10.21428,-16.25102 -9.44306,-26.07306 z" class="shoe" id="XMLID_508_" sodipodi:nodetypes="caaaaaaaacsc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Shoes_Heel.tw b/src/art/vector_revamp/layers/Shoes_Heel.tw
new file mode 100644
index 0000000000000000000000000000000000000000..138296c31e89638784aaba1edf77e0b4c289b007
--- /dev/null
+++ b/src/art/vector_revamp/layers/Shoes_Heel.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Shoes_Heel [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccccc" id="path1155" class="skin" d="m 240.59845,873.07198 c 0.50286,4.90436 1.00937,7.12738 2.18205,11.50463 0.85694,12.72572 1.68645,15.02898 3.7623,21.02706 1.01141,5.05435 0.99988,9.12721 -1.7475,10.57512 -3.34618,1.87095 -5.9929,3.99189 -13.51203,5.20472 -46.61525,37.98885 -67.56847,48.2592 -29.24548,-8.53938 5.04205,-9.3296 9.51324,-18.92743 11.42962,-29.10955 l 2.00493,-25.33317 24.35037,0.50298 c 0.95172,4.33824 0.11088,9.99496 0.77574,14.16759 z"/><path sodipodi:nodetypes="ccccccccscccccczc" id="path1148" class="shoe" d="m 244.31995,884.92623 c 0,0 1.55174,2.32761 2.77096,4.21186 3.10348,4.98773 4.21186,12.63557 3.65767,18.28833 -0.44335,4.65521 -1.77341,4.65521 -3.43599,10.30797 -1.77341,6.20695 -2.10593,15.2957 -2.66012,33.36236 0,1.66257 -0.44336,5.54192 -0.44336,7.20449 -0.44335,0.33252 -2.21676,0.33252 -2.88179,0 0.11084,-1.33006 0.11084,-3.87934 0.11084,-5.43108 -0.22168,-9.31042 1.33006,-28.04211 -0.33252,-29.03966 -1.10838,-0.66503 -18.99219,8.39588 -21.3198,14.8245 -4.65521,13.52229 -9.53196,20.1459 -13.18963,25.02279 -3.10347,4.21186 -15.12957,5.67945 -24.77251,4.90358 -10.19714,-0.88671 -15.55892,-3.88274 -15.55892,-3.88274 0,0 -1.75502,-8.83719 26.68462,-40.85535 l 15.13332,-23.22251 c -3.15612,7.97704 -12.0531,21.27684 -9.42395,24.21053 2.62915,2.93369 45.66118,-39.90507 45.66118,-39.90507 z"/><path sodipodi:nodetypes="ccccccccccc" id="path1159" class="skin" d="m 375.58471,902.04597 c 0.75862,-4.37061 1.32442,-8.74123 2.62778,-13.11184 0.0883,-4.25905 -1.39782,-7.63422 -2.24386,-11.19255 1.53488,-3.81106 3.75773,-7.41574 3.75747,-11.68734 l 9.6028,-0.87118 11.33449,2.60555 c -0.54348,5.61968 0.32614,10.96792 1.61199,16.17184 -0.64128,2.19443 -1.39646,4.38887 -1.48163,6.5833 0.33165,10.6866 0.61556,21.23002 0.78125,31.41875 3.99699,37.66992 -39.08408,53.65806 -29.01266,5.7093 2.52972,-8.61114 2.11758,-17.08855 3.02237,-25.62583 z"/><path sodipodi:nodetypes="ccssszcccscc" id="path1146" class="shoe" d="m 401.16185,898.2641 c 4.86978,9.3269 4.14816,19.20588 3.20748,30.0269 0,0 -1.59383,25.88068 -5.20133,38.22252 -2.09871,7.18004 -4.5609,14.6838 -9.42657,20.3656 -1.98298,2.31559 -4.50163,7.07804 -7.61012,5.07283 -5.21682,-3.36524 -6.42685,-5.44847 -9.40639,-16.07421 -2.97954,-10.62574 -2.04254,-33.46924 -0.8241,-47.58213 0.30849,-4.24462 -0.58204,-25.74717 4.23787,-29.94193 l -0.54506,4.14234 c 0.68491,-0.2283 -5.89176,37.99606 7.34151,39.67379 14.711,1.86508 18.43779,-40.48551 18.43779,-40.48551 z"/><path sodipodi:nodetypes="ccc" id="path1161" class="shadow" d="m 396.35932,879.09548 c 0.33577,5.97053 1.94225,6.86306 4.45368,11.7344 -4.10767,-5.64573 -4.49649,-6.43544 -4.45368,-11.7344 z"/><path sodipodi:nodetypes="ccc" id="path1163" class="shadow" d="m 378.16403,886.94416 c 3.50178,-2.27327 4.23806,-2.786 5.89065,-7.82868 -0.78635,4.34205 -1.48231,5.32462 -5.89065,7.82868 z"/><path sodipodi:nodetypes="cscsc" id="path1173" class="shadow" d="m 229.24641,868.83321 c 1.12269,3.41093 3.91256,7.71863 4.45739,11.69303 0.36247,2.64412 -0.49857,4.0546 -0.58342,7.06911 -0.22351,-2.74748 0.5848,-4.29773 0.20399,-6.97713 -0.58078,-4.08633 -3.2746,-8.68693 -4.07796,-11.78501 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Stump.tw b/src/art/vector_revamp/layers/Stump.tw
new file mode 100644
index 0000000000000000000000000000000000000000..6a64503f9f0420097d25b359f3d4dda8fcb8fe63
--- /dev/null
+++ b/src/art/vector_revamp/layers/Stump.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Stump [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccc" id="path1372" d="m 230.28965,407.60424 c 27.39204,-26.79135 106.43008,-43.38985 148.417,-16.8629 22.94771,17.0173 36.08141,60.01349 20.40321,84.0104 -13.72251,17.8756 -32.7562,14.73245 -52.05351,12.51115 -20.85364,-0.58883 -33.61362,-25.83908 -52.17969,-26.54843 -15.8761,1.03867 -28.23124,23.52457 -45.43451,22.30034 -13.25287,-0.31877 -29.07118,-7.54966 -32.94684,-20.32451 -7.97944,-17.5338 7.02473,-49.02171 13.79434,-55.08605 z" class="shadow"/><path class="skin" d="m 230.28965,407.60424 c 27.39204,-26.79135 110.72562,-49.39699 148.417,-16.8629 21.00008,18.12665 35.42478,59.4177 20.40321,84.0104 -9.30215,15.22909 -34.33101,14.60117 -52.05351,12.51115 -19.38076,-2.28558 -32.66513,-26.40818 -52.17969,-26.54843 -16.87031,-0.12125 -28.58338,23.11374 -45.43451,22.30034 -12.88883,-0.62214 -28.08465,-8.37177 -32.94684,-20.32451 -7.13248,-17.5338 7.57873,-49.02171 13.79434,-55.08605 z" id="path62" sodipodi:nodetypes="csaaaaac"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Highlights1.tw b/src/art/vector_revamp/layers/Torso_Highlights1.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c2597fe9cb3f3793cef13f4ece85068723a209bb
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Highlights1.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Highlights1 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 289.94777,295.4534 c -1.6989,1.77767 -0.82374,4.35987 -0.53385,5.75144 1.26028,-1.19667 0.74988,-3.92307 0.53385,-5.75144 z" class="highlight1" id="path1141-0" sodipodi:nodetypes="ccc"/><path d="m 264.42812,302.28055 c -1.6989,1.77767 -0.82374,4.35987 -0.53385,5.75144 1.26028,-1.19667 0.74988,-3.92307 0.53385,-5.75144 z" class="highlight1" id="path1141-0-8" sodipodi:nodetypes="ccc"/><path d="m 264.66554,309.1915 c -0.66567,0.91065 -0.10291,1.90971 0.20025,2.42067 0.49089,-0.59211 0.16685,-1.69027 -0.20025,-2.42067 z" class="highlight1" id="path1141-0-8-7" sodipodi:nodetypes="ccc"/><path d="m 289.8216,345.80715 c -0.88546,0.69883 -0.61117,1.8122 -0.45611,2.38573 0.63167,-0.43881 0.61393,-1.58365 0.45611,-2.38573 z" class="highlight1" id="path1141-0-8-7-5" sodipodi:nodetypes="ccc"/><path d="m 337.466,377.21609 c -2.30617,0.13597 -2.84869,1.67314 -2.48904,3.26962 2.13427,-0.43881 2.64686,-2.46754 2.48904,-3.26962 z" class="highlight1" id="path1141-0-8-7-5-0" sodipodi:nodetypes="ccc"/><path d="m 248.30395,412.94797 c -1.46912,-3.58912 -3.04506,-5.40954 -5.40786,-5.39969 -0.8259,3.89201 3.18008,5.39446 5.40786,5.39969 z" class="highlight1" id="path1141-0-8-7-5-0-9" sodipodi:nodetypes="ccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Highlights2.tw b/src/art/vector_revamp/layers/Torso_Highlights2.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c54bc822ca0acd3b2454f9206cbcbd58cf1ffead
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Highlights2.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Highlights2 [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8" class="highlight2" d="m 290.78031,289.8987 c 1.16217,7.94032 -1.53798,16.12237 -2.63519,17.25859 -0.1441,-1.51113 -0.50096,-11.78223 2.63519,-17.25859 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8" class="highlight2" d="m 263.8142,294.55822 c 2.74268,8.04932 2.76861,26.83209 0.89606,27.91484 -1.12917,-1.27471 -5.12923,-22.1752 -0.89606,-27.91484 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4" class="highlight2" d="m 289.50061,337.66987 c 2.74268,8.04932 1.84052,16.44647 -0.032,17.52922 -1.12917,-1.27471 -4.20114,-11.78958 0.032,-17.52922 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2" class="highlight2" d="m 244.58793,342.8708 c -1.39447,6.83617 -4.62602,11.20746 -5.51208,12.57947 -1.00378,-1.21683 1.66574,-6.6613 5.51208,-12.57947 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7" class="highlight2" d="m 338.3403,373.13569 c 2.26913,12.90402 -4.61748,11.22161 -5.51208,12.57947 -1.0473,-1.2502 -1.53943,-9.11859 5.51208,-12.57947 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-8-4-2-7-6" class="highlight2" d="m 242.25302,404.89085 c -2.26913,12.90402 6.03169,10.58079 7.43452,11.6072 1.0473,-1.2502 -0.38301,-8.14632 -7.43452,-11.6072 z"/><path sodipodi:nodetypes="ccc" id="XMLID_511_-1-8-0-3-9-7-7-7-7-9-0-4-2-3-9-9-9-7-5-8-5" class="highlight2" d="m 274.56079,341.01946 c -0.6917,2.59191 1.01886,6.14891 1.5481,6.57075 -0.0597,-0.50761 -0.7297,-4.73118 -1.5481,-6.57075 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Hourglass.tw b/src/art/vector_revamp/layers/Torso_Hourglass.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7539146f8e683337bdf4a4cd5b20a2d53c832956
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Hourglass.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Hourglass [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 246.30911,231.06259 c -6.69233,19.28587 -3.26169,38.80526 2.84033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -12.22966,23.47896 -14.09706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -2.78089,-8.8422 -20.01148,-25.04261 -20.57655,-24.78256 0.41299,-0.50348 -6.8269,-13.62863 -7.45206,-15.85983 2.68681,-6.22178 7.5538,-32.80103 8.07452,-32.87542 14.92551,-15.90852 19.20209,-32.18261 21.62975,-41.33057 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z" class="shadow torso" id="path1102" sodipodi:nodetypes="ccccccccccscccccccsccccccc"/><path sodipodi:nodetypes="cccccccsccccccccscccccccccc" id="path1104" class="skin torso" d="m 246.30911,231.06259 c -5.87551,18.9358 -2.96597,38.67852 2.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 238.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -3.8841,-8.49646 -20.35009,-24.94863 -20.57655,-24.78256 0.17394,-0.53763 -7.38454,-13.70829 -7.45206,-15.85983 2.56898,-6.32141 6.52289,-30.99874 8.07452,-32.87542 13.06864,-15.80638 16.79552,-26.31022 21.5701,-41.16751 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z"/><path sodipodi:nodetypes="ccccc" id="path1106" class="shadow" d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z"/><path sodipodi:nodetypes="ccc" id="path1108" class="muscle_tone" d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z"/><path sodipodi:nodetypes="ccc" id="path1110" class="muscle_tone" d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z"/><path sodipodi:nodetypes="ccc" id="path1112" class="muscle_tone" d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z"/><path sodipodi:nodetypes="ccc" id="path1114" class="muscle_tone" d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z"/><path sodipodi:nodetypes="ccc" id="path1116" class="muscle_tone" d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z"/><path sodipodi:nodetypes="ccc" id="path1118" class="muscle_tone" d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z"/><path sodipodi:nodetypes="ccc" id="path1120" class="muscle_tone" d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z"/><path sodipodi:nodetypes="ccc" id="path1122" class="muscle_tone" d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z"/><path sodipodi:nodetypes="ccc" id="path1124" class="muscle_tone" d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z"/><path sodipodi:nodetypes="ccc" id="path1126" class="muscle_tone" d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z"/><path sodipodi:nodetypes="ccc" id="path1128" class="muscle_tone" d="m 331.83474,309.96831 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z"/><path sodipodi:nodetypes="ccc" id="path1130" class="muscle_tone" d="m 250.08235,322.46839 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z"/><path sodipodi:nodetypes="ccc" id="path1132" class="shadow" d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z"/><path d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z" class="muscle_tone" id="path1440" sodipodi:nodetypes="cccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Normal.tw b/src/art/vector_revamp/layers/Torso_Normal.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3f52be9aeb1338a5f0ab747220224d2cad9a5c92
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Normal.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Normal [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccsccccsccccccc" id="path4124" class="shadow torso" d="m 246.30911,231.06259 c -6.69233,19.28587 -3.26169,38.80526 2.84033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -12.22966,23.47896 -14.09706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -21.65173,-54.37031 -7.45593,-62.61558 1.67566,-114.84838 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z"/><path d="m 246.30911,231.06259 c -5.87551,18.9358 -2.96597,38.67852 2.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 238.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -23.58113,-57.47054 -9.97979,-57.27407 1.61601,-114.68532 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z" class="skin torso" id="Body_Normal_1_" sodipodi:nodetypes="cccccccscccccccccccccccc"/><path d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z" class="muscle_tone" id="XMLID_590_-04-8" sodipodi:nodetypes="ccc"/><path d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z" class="muscle_tone" id="XMLID_590_-04-8-5" sodipodi:nodetypes="ccc"/><path d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z" class="muscle_tone" id="XMLID_590_-04-8-5-8" sodipodi:nodetypes="ccc"/><path d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z" class="muscle_tone" id="XMLID_590_-04-8-9" sodipodi:nodetypes="ccc"/><path d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z" class="muscle_tone" id="XMLID_590_-04-8-9-1" sodipodi:nodetypes="ccc"/><path d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z" class="muscle_tone" id="XMLID_590_-04-8-9-1-2" sodipodi:nodetypes="ccc"/><path d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z" class="muscle_tone" id="XMLID_590_-04-8-5-87" sodipodi:nodetypes="ccc"/><path d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z" class="muscle_tone" id="XMLID_590_-04-8-5-8-4" sodipodi:nodetypes="ccc"/><path d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z" class="muscle_tone" id="XMLID_590_-04-8-5-87-5" sodipodi:nodetypes="ccc"/><path d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z" class="muscle_tone" id="XMLID_590_-04-8-5-87-5-2" sodipodi:nodetypes="ccc"/><path d="m 331.83474,309.96831 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z" class="muscle_tone" id="XMLID_590_-04-8-5-2" sodipodi:nodetypes="ccc"/><path d="m 250.08235,322.46839 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z" class="muscle_tone" id="XMLID_590_-04-8-5-2-4" sodipodi:nodetypes="ccc"/><path d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z" class="shadow" id="XMLID_590_-04-8-9-4" sodipodi:nodetypes="ccc"/><path d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow" id="path1444" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="cccccc" id="path1446" class="muscle_tone" d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Hourglass.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Hourglass.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5624e263e321221c8ee6bd80d779fb74d7e16ed4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Hourglass.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Hourglass [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 359.85539,224.47865 c 0,0 0.28252,2.9195 1.13622,14.01358 0.60333,0.24133 -4.66387,31.43722 -21.44276,39.64844 -2.60991,13.16972 -4.10758,40.46738 -4.54391,40.39466 0,0 2.60164,5.12801 3.8029,7.55426 25.41094,14.16919 46.24345,42.44329 56.43292,71.31194 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 35.22168,-60.19855 50.2411,-84.26 -5.31056,-13.48953 -3.00269,-25.08718 -1.37108,-35.87779 -10.20434,-15.27731 -9.37658,-29.5504 -6.26329,-44.46892 1.91023,-12.81128 7.57872,-19.40372 7.03791,-19.59657 44.12648,12.49268 110.45341,1.38238 110.45341,1.38238 z" id="path1322" sodipodi:nodetypes="cccccccccccccc" class="shadow"/><path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="cccccaccaccacc" id="path1108-7" d="m 359.85539,224.47865 c 0,0 0.28252,2.9195 1.13622,14.01358 0,0 -5.70201,31.02196 -21.44276,39.64844 -4.05461,12.92894 -4.54391,40.39466 -4.54391,40.39466 0,0 2.60164,5.12801 3.8029,7.55426 23.94861,15.0158 44.54286,43.42784 56.43292,71.31194 16.51533,38.7311 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.88371,-75.76419 20.06445,-110.96586 11.46675,-30.62413 36.51387,-59.8755 50.2411,-84.26 -4.38752,-13.39723 -2.26335,-25.01325 -1.37108,-35.87779 -9.41353,-15.3492 -7.79397,-29.57811 -6.26329,-44.46892 0.70972,-6.9043 7.03791,-19.59657 7.03791,-19.59657 44.12648,12.49268 110.45341,1.38238 110.45341,1.38238 z"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc" id="path1251" class="shadow" d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z"/><path d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" id="path1249" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" style="display:inline;opacity:1;fill:#ffffff"/><path d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" class="shadow" id="path1244" sodipodi:nodetypes="ccssccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1108-7-2" d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z"/><path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1282" class="shadow" d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 3.05181,8.88695 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z"/><path d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 3.17474,8.83426 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" id="path1280" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994"/><path d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 -0.30041,25.062 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" class="shadow" id="path1268" sodipodi:nodetypes="ccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccccccccccccc" id="path1108-7-2-2" d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 0.22818,24.77737 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z"/><path d="m 335.13308,318.51346 3.76755,7.52419 c -34.68921,1.29057 -70.68419,18.30652 -92.67015,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 52.33122,-5.8368 85.03592,-4.37423 z" class="shadow" id="path1246" sodipodi:nodetypes="ccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1108-7-2-7" d="m 335.13308,318.51346 3.76755,7.52419 c -35.36449,0.47083 -72.09797,17.70061 -92.67015,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 51.75714,-4.70842 85.03592,-4.37423 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Hourglass.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Hourglass.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5540e0315f07cc431618bc9eff71de3bb18a71a5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Hourglass.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Lewd_Hourglass [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccc" id="path1324" d="m 335.00494,318.53533 c 0,0 2.60164,5.12801 3.8029,7.55426 25.71294,14.33721 27.05663,26.64309 35.62962,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 34.51048,-43.442 39.5444,-54.469 20.08971,8.80583 55.63969,-1.71367 85.0065,-4.50422 z" class="shadow"/><path style="display:inline;opacity:1;fill:#000000" d="m 249.99805,323.03906 c 19.2233,7.95638 55.40396,-0.4426 85.00781,-4.5039 -7.47162,0.73268 -15.33345,1.82358 -23.21875,2.9375 -7.8853,1.11391 -15.79532,2.25094 -23.36523,3.07422 -3.78496,0.41163 -7.48528,0.74598 -11.05469,0.95898 -3.56942,0.213 -7.0068,0.304 -10.26953,0.23437 -3.26274,-0.0696 -6.34992,-0.30009 -9.21485,-0.73632 -2.86492,-0.43624 -5.50878,-1.07802 -7.88476,-1.96485 z" id="path2358" sodipodi:nodetypes="ccccsccc"/><path d="m 335.00494,318.53533 c 0,0 2.60164,5.12801 3.8029,7.55426 23.94861,15.0158 25.77303,27.13678 35.62962,42.89594 13.12179,20.97971 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 35.639,-43.442 39.5444,-54.469 20.08971,8.80583 55.63969,-1.71367 85.0065,-4.50422 z" id="path1227" sodipodi:nodetypes="ccaccscc" style="display:inline;opacity:1;fill:#333333"/><path d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" class="shadow" id="path1229" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" id="path1231" d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z"/><path sodipodi:nodetypes="ccssccc" id="path1233" class="shadow" d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z"/><path d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" id="path1235" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/><path sodipodi:nodetypes="ccccc" id="path1245" class="shadow" d="m 335.13308,318.51346 3.76755,7.52419 c -34.68921,1.29057 -70.68419,18.30652 -92.67015,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 52.33122,-5.8368 85.03592,-4.37423 z"/><path d="m 335.13308,318.51346 3.76755,7.52419 c -35.36449,0.47083 -72.09797,17.70061 -92.67015,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 51.75714,-4.70842 85.03592,-4.37423 z" id="path1247" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Normal.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Normal.tw
new file mode 100644
index 0000000000000000000000000000000000000000..5c15a2e78327e327bb7b758ec02cab485ed0e23b
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Normal.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Lewd_Normal [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccccc" id="path1363" d="m 349.25494,318.53533 c 0,0 0.78914,5.12801 1.9904,7.55426 20.33794,23.39971 14.61913,26.64309 23.19212,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 34.51048,-43.442 39.5444,-54.469 20.08971,8.80583 69.88969,-1.71367 99.2565,-4.50422 z" class="shadow"/><path style="display:inline;opacity:1;fill:#000000" d="m 249.99805,323.03906 c 19.2233,7.95638 69.65396,-0.4426 99.25781,-4.5039 -7.47162,0.73268 -29.58345,1.82358 -37.46875,2.9375 -7.8853,1.11391 -15.79532,2.25094 -23.36523,3.07422 -3.78496,0.41163 -7.48528,0.74598 -11.05469,0.95898 -3.56942,0.213 -7.0068,0.304 -10.26953,0.23437 -3.26274,-0.0696 -6.34992,-0.30009 -9.21485,-0.73632 -2.86492,-0.43624 -5.50878,-1.07802 -7.88476,-1.96485 z" id="path1369" sodipodi:nodetypes="ccccsccc"/><path d="m 349.25494,318.53533 c 0,0 0.78914,5.12801 1.9904,7.55426 18.76111,23.0783 15.97322,28.3322 23.19212,42.89594 10.98968,22.17107 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 35.639,-43.442 39.5444,-54.469 20.08971,8.80583 69.88969,-1.71367 99.2565,-4.50422 z" id="path1377" sodipodi:nodetypes="ccaccscc" style="display:inline;opacity:1;fill:#333333"/><path d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" class="shadow" id="path1379" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" id="path1381" d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z"/><path sodipodi:nodetypes="ccssccc" id="path1384" class="shadow" d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z"/><path d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" id="path1386" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/><path sodipodi:nodetypes="ccccc" id="path1388" class="shadow" d="m 349.38308,318.51346 1.95505,7.52419 c -34.68921,1.29057 -83.12169,18.30652 -105.10765,3.82289 l 3.86668,-6.97285 c 33.13895,8.49273 66.58122,-5.8368 99.28592,-4.37423 z"/><path d="m 349.38308,318.51346 1.95505,7.52419 c -35.36449,0.47083 -84.53547,17.70061 -105.10765,3.82289 l 3.86668,-6.97285 c 30.76253,9.95515 66.00714,-4.70842 99.28592,-4.37423 z" id="path1390" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Unnatural.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Unnatural.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1958f5781e5b2cd3fbb92242d27345fad81b3c07
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Lewd_Unnatural.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Lewd_Unnatural [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="shadow" d="m 332.46378,318.91098 c 0,0 4.92183,4.75236 6.12309,7.17861 22.32823,15.82318 26.05552,27.17961 35.85059,42.89594 17.04103,22.01109 30.69729,67.66847 30.59015,67.64028 -69.47194,-27.02108 -141.01271,33.62811 -211.75934,0.10113 -0.31621,0.0288 6.12371,-40.57469 17.18577,-59.21839 7.74975,-20.12879 38.43236,-43.77013 43.46628,-54.79713 20.08971,8.80583 49.17665,-1.00989 78.54346,-3.80044 z" id="path1326" sodipodi:nodetypes="cccccccc"/><path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="ccsccscc" id="path1343" d="m 332.46378,318.91098 c 0,0 4.92183,4.75236 6.12309,7.17861 21.82184,16.49529 25.63258,27.32918 35.85059,42.89594 13.57881,20.68684 30.59015,67.64028 30.59015,67.64028 -70.8552,-28.58878 -143.13155,31.22676 -211.75934,0.10113 0,0 8.14697,-40.75862 17.18577,-59.21839 9.85604,-20.12879 39.56088,-43.77013 43.46628,-54.79713 20.08971,8.80583 49.17665,-1.00989 78.54346,-3.80044 z"/><path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc" id="path1345" class="shadow" d="m 311.04401,327.6899 c 0.0522,-0.10709 7.00362,0.37294 7.78287,2.98975 1.09373,1.91041 -2.71095,5.0065 -2.81525,4.94713 -0.0624,-0.10254 7.16168,-0.42581 8.18384,2.13824 0.82618,2.04666 -4.36222,4.60347 -4.41092,4.5368 0.18756,-0.13865 8.76141,0.0136 9.37508,2.95661 1.12339,2.7339 -5.04179,6.86259 -5.08064,6.76687 0.17801,-0.0914 6.83044,0.80604 7.29555,3.1376 0.99465,2.53804 -4.0223,6.41207 -4.07764,6.30604 0.17207,-0.0883 8.56703,1.55963 8.9644,4.56029 1.01602,2.6197 -4.88943,6.28089 -5.03113,6.20815 0.1094,-0.0749 8.97405,1.71591 9.66103,4.9139 1.38429,3.32371 -5.67328,8.79376 -5.84007,8.74239 0.0763,-0.0104 8.03849,4.78518 7.56356,8.27073 0.0883,3.45544 -7.85098,7.31249 -7.90197,7.27062 0.15001,-0.0548 9.02844,6.59283 6.18398,9.86775 -2.11902,3.09446 -12.21137,-0.21607 -12.26513,-0.39269 0.0165,-0.0806 2.22395,9.26158 -1.73237,12.2649 -5.26342,3.32418 -17.88837,-0.8649 -17.59669,-1.01463 0.17956,0.0164 -1.34524,8.44366 -5.82577,9.89737 -4.5076,1.64849 -13.55715,-4.10713 -13.55715,-4.30795 0.17277,0.2838 -4.10847,6.59393 -8.12207,6.7862 0,0 -10.48671,-4.77116 -10.17145,-4.94609 0.29167,0.0989 -5.79892,4.83916 -10.43279,4.62568 -3.91425,-0.0968 -8.69575,-5.63783 -8.57089,-5.76602 0.18168,0.12789 -7.46896,4.76081 -11.76673,3.19345 -3.81063,-1.2341 -5.11346,-7.4931 -4.96204,-7.47396 -0.0296,0.21811 -10.64044,3.62348 -14.26381,0.83998 -3.65492,-2.13109 -1.49016,-10.09638 -1.34588,-10.10822 -0.13832,0.0568 -7.77646,-3.2513 -8.37111,-6.44327 -1.27342,-3.07674 3.11397,-8.91689 3.39631,-8.83959 -0.14867,0.0305 -3.34488,-5.29429 -2.02206,-7.96607 0.54322,-2.43642 5.99585,-5.00377 6.09658,-4.93483 -0.0881,0.0362 -1.90373,-4.97675 -0.46419,-7.36633 0.79291,-2.30555 6.32486,-4.80668 6.46038,-4.75899 -0.13335,0.0274 -1.42641,-4.03491 -0.05,-5.8995 0.70184,-1.71401 4.30644,-3.15261 4.34563,-3.02387 -0.25505,0.0524 -1.32182,-3.33886 -0.27293,-4.90796 0.86407,-1.96083 4.77924,-3.72749 4.75483,-3.52701 -0.048,0 0.12068,-3.08126 1.40387,-4.44066 0.88392,-1.8868 4.23392,-4.31588 4.29183,-4.20491 -0.1068,0.0329 1.54301,-4.29535 3.4155,-6.4064 1.05336,-1.94277 5.13741,-5.29514 5.24937,-5.29514 -0.0584,0.006 0.95294,-3.0619 2.45542,-4.48355 1.19345,-1.94404 4.55632,-4.3091 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z"/><path d="m 311.04401,327.6899 c 0,0 6.84733,0.37283 7.78287,2.98975 0.6387,1.78662 -2.81525,4.94713 -2.81525,4.94713 0,0 7.42648,-0.57766 8.18384,2.13824 0.56655,2.03169 -4.41092,4.5368 -4.41092,4.5368 0,0 8.37349,-0.16331 9.37508,2.95661 0.86218,2.68563 -5.08064,6.76687 -5.08064,6.76687 0,0 6.52509,0.60499 7.29555,3.1376 0.72854,2.39482 -4.07764,6.30604 -4.07764,6.30604 0,0 8.26692,1.28109 8.9644,4.56029 0.55415,2.60533 -5.03113,6.20815 -5.03113,6.20815 0,0 8.74735,1.41837 9.66103,4.9139 0.88626,3.39062 -5.84007,8.74239 -5.84007,8.74239 0,0 7.72456,4.5383 7.56356,8.27073 -0.15425,3.57598 -7.90197,7.27062 -7.90197,7.27062 0,0 8.1178,6.50196 6.18398,9.86775 -2.03778,3.54675 -12.26513,-0.39269 -12.26513,-0.39269 0,0 1.46134,9.64806 -1.73237,12.2649 -4.54459,3.7237 -17.59669,-1.01463 -17.59669,-1.01463 0,0 -2.2505,8.52889 -5.82577,9.89737 -4.42841,1.69502 -13.55715,-4.30795 -13.55715,-4.30795 0,0 -4.62018,6.35786 -8.12207,6.7862 -3.7422,0.45774 -10.17145,-4.94609 -10.17145,-4.94609 0,0 -6.64323,4.95785 -10.43279,4.62568 -3.43015,-0.30068 -8.57089,-5.76602 -8.57089,-5.76602 0,0 -7.96291,4.62455 -11.76673,3.19345 -2.79886,-1.05301 -4.96204,-7.47396 -4.96204,-7.47396 0,0 -10.5899,3.87098 -14.26381,0.83998 -2.622,-2.16317 -1.34588,-10.10822 -1.34588,-10.10822 0,0 -7.41836,-3.05339 -8.37111,-6.44327 -0.85408,-3.03879 3.39631,-8.83959 3.39631,-8.83959 0,0 -2.8861,-5.36632 -2.02206,-7.96607 0.82459,-2.48106 6.09658,-4.93483 6.09658,-4.93483 0,0 -1.5043,-5.13669 -0.46419,-7.36633 1.13073,-2.4239 6.46038,-4.75899 6.46038,-4.75899 0,0 -0.95325,-4.15262 -0.05,-5.8995 0.81052,-1.56758 4.34563,-3.02387 4.34563,-3.02387 0,0 -0.96863,-3.42448 -0.27293,-4.90796 0.83789,-1.78667 4.75483,-3.52701 4.75483,-3.52701 0,0 0.59123,-3.11792 1.40387,-4.44066 1.0484,-1.70649 4.29183,-4.20491 4.29183,-4.20491 0,0 1.97917,-4.45875 3.4155,-6.4064 1.47514,-2.00028 5.24937,-5.29514 5.24937,-5.29514 0,0 1.41081,-3.13734 2.45542,-4.48355 1.27666,-1.64525 4.56262,-4.26767 4.56262,-4.26767 21.08,4.88646 37.63366,0.81147 55.50803,-0.44514 z" id="path1347" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacacc" style="display:inline;opacity:1;fill:#ffffff"/><path d="m 309.71288,327.6899 c 0.17826,-0.0554 11.29343,14.89769 12.56072,23.45 5.35408,18.68238 17.63515,40.72923 4.38693,56.74234 -20.35084,24.59804 -79.88819,32.00846 -104.40557,3.84551 -10.16656,-11.67826 0.99038,-31.4387 9.04984,-47.4412 5.24788,-12.61332 23.50188,-36.42668 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z" class="shadow" id="path1349" sodipodi:nodetypes="ccssccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1351" d="m 309.71288,327.6899 c 0,0 10.07222,14.93896 12.56072,23.45 5.32378,18.20822 17.01533,42.58588 4.38693,56.74234 -23.18276,25.98792 -81.71681,30.26582 -104.40557,3.84551 -10.48841,-12.21341 2.84148,-32.58757 9.04984,-47.4412 5.64594,-13.50803 24.91963,-36.16771 24.91963,-36.16771 20.31304,4.70868 36.26441,0.78195 53.48845,-0.42894 z"/><path d="m 332.59192,318.88911 6.08774,7.14854 c -34.68921,1.29057 -66.54134,17.97839 -88.5273,3.49476 l 3.86668,-6.97285 c 33.13895,8.49273 45.86818,-5.13302 78.57288,-3.67045 z" class="shadow" id="path1354" sodipodi:nodetypes="ccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1356" d="m 332.59192,318.88911 6.08774,7.14854 c -35.36449,0.47083 -67.95512,17.37248 -88.5273,3.49476 l 3.86668,-6.97285 c 30.76253,9.95515 45.2941,-4.00464 78.57288,-3.67045 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Normal.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Normal.tw
new file mode 100644
index 0000000000000000000000000000000000000000..21a9d63d2c2b84bf3190df624a661456c16cf9b4
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Normal.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Normal [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 359.59022,223.85993 c 0,0 0.54769,3.53822 1.40139,14.6323 0.60333,0.24133 1.08137,17.47186 -9.95227,42.07912 -2.60991,13.16972 -1.59807,36.6617 -2.0344,36.58898 0,0 0.41414,5.12801 1.6154,7.55426 25.41094,14.16919 34.43095,43.81829 44.62042,72.68694 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 35.22168,-60.19855 50.2411,-84.26 -5.31056,-13.48953 -3.00269,-25.08718 -1.37108,-35.87779 -10.20434,-15.27731 -9.37658,-29.5504 -6.26329,-44.46892 2.33144,-13.21932 7.5209,-19.83366 7.32405,-19.71802 44.12648,12.49268 109.9021,0.88511 109.9021,0.88511 z" id="path1435" sodipodi:nodetypes="cccccccccccccc" class="shadow"/><path style="display:inline;opacity:1;fill:#333333" sodipodi:nodetypes="cccccaccaccacc" id="path1437" d="m 359.59022,223.85993 c 0,0 0.54769,3.53822 1.40139,14.6323 0,0 -0.31032,17.18918 -9.95227,42.07912 -4.05461,12.92894 -2.0344,36.58898 -2.0344,36.58898 0,0 0.41414,5.12801 1.6154,7.55426 23.94861,15.0158 35.04244,45.91894 44.62042,72.68694 14.18515,39.64386 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.88371,-75.76419 20.06445,-110.96586 11.46675,-30.62413 36.51387,-59.8755 50.2411,-84.26 -4.38752,-13.39723 -2.26335,-25.01325 -1.37108,-35.87779 -9.41353,-15.3492 -7.87474,-29.58663 -6.26329,-44.46892 0.75479,-6.97069 7.32405,-19.71802 7.32405,-19.71802 44.12648,12.49268 109.9021,0.88511 109.9021,0.88511 z"/><path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc" id="path1439" class="shadow" d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z"/><path d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" id="path1441" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" style="display:inline;opacity:1;fill:#ffffff"/><path d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" class="shadow" id="path1443" sodipodi:nodetypes="ccssccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="caaaacc" id="path1445" d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z"/><path sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" id="path1447" class="shadow" d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 3.05181,8.88695 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z"/><path d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 3.17474,8.83426 3.17474,8.83426 l 0.60329,6.29895 67.29376,-3.51585 z" id="path1449" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994"/><path d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 -0.30041,25.062 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z" class="shadow" id="path1451" sodipodi:nodetypes="ccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccccccccccccc" id="path1453" d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 0.22818,24.77737 1.70304,36.68579 18.49356,5.86562 41.60515,-0.33523 63.48468,-3.31684 z"/><path d="m 349.13308,317.13846 1.58005,7.52419 c -34.68921,1.29057 -82.49669,19.68152 -104.48265,5.19789 l 3.86668,-6.97285 c 33.13895,8.49273 66.33122,-7.2118 99.03592,-5.74923 z" class="shadow" id="path1455" sodipodi:nodetypes="ccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="ccccc" id="path1457" d="m 349.13308,317.13846 1.58005,7.52419 c -35.36449,0.47083 -83.91047,19.07561 -104.48265,5.19789 l 3.86668,-6.97285 c 30.76253,9.95515 65.75714,-6.08342 99.03592,-5.74923 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Maid_Unnatural.tw b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Unnatural.tw
new file mode 100644
index 0000000000000000000000000000000000000000..713952e5be076bb1662c767edfff232ab6c73e16
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Maid_Unnatural.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Maid_Unnatural [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path class="shadow" sodipodi:nodetypes="cccccccccccccc" id="path1396" d="m 359.32506,223.68315 c 0,0 0.81285,3.715 1.66655,14.80908 0.60333,0.24133 -10.14395,31.21625 -26.92284,39.42747 -2.60991,13.16972 -1.19,40.93835 -1.62633,40.86563 0,0 5.16414,4.87801 6.3654,7.30426 25.41094,14.16919 46.24345,42.44329 56.43292,71.31194 19.15995,38.96952 18.59152,124.9406 17.21147,125.13775 -69.91487,-25.57972 -163.41142,29.15618 -232.75934,-4.27387 -0.6629,0 4.43678,-75.76419 20.06445,-110.96586 8.85721,-31.27651 38.93399,-60.37533 53.95341,-84.43678 -5.31056,-13.48953 -3.26785,-24.95459 -1.63624,-35.7452 -10.20434,-15.27731 -12.82373,-29.50621 -9.71044,-44.42473 1.68036,-12.73855 7.18619,-19.52847 7.03163,-19.62506 44.12648,12.49268 109.92936,0.61537 109.92936,0.61537 z"/><path d="m 359.32506,223.68315 c 0,0 0.81285,3.715 1.66655,14.80908 0,0 -11.18209,30.80099 -26.92284,39.42747 -4.05461,12.92894 -1.62633,40.86563 -1.62633,40.86563 0,0 5.16414,4.87801 6.3654,7.30426 23.94861,15.0158 44.54286,43.42784 56.43292,71.31194 16.51533,38.7311 17.21147,125.13775 17.21147,125.13775 -70.8552,-28.58878 -164.13155,26.85176 -232.75934,-4.27387 0,0 6.34105,-75.97218 20.06445,-110.96586 12.19453,-31.09516 40.22618,-60.05228 53.95341,-84.43678 -4.38752,-13.39723 -2.52851,-24.88066 -1.63624,-35.7452 -9.41353,-15.3492 -10.68632,-29.29831 -9.71044,-44.42473 0.44738,-6.9345 7.03163,-19.62506 7.03163,-19.62506 44.12648,12.49268 109.92936,0.61537 109.92936,0.61537 z" id="path1398" sodipodi:nodetypes="cccccaccaccacc" style="display:inline;opacity:1;fill:#333333"/><path d="m 318.99599,327.6899 c 0.0644,-0.16109 8.65228,0.56099 9.61497,4.49727 1.3512,2.8737 -3.34911,7.53093 -3.47797,7.44163 -0.0771,-0.15425 8.84757,-0.64052 10.11034,3.2164 1.02068,3.07865 -5.38909,6.92467 -5.44926,6.82438 0.23172,-0.20855 10.82387,0.0205 11.58201,4.44743 1.38783,4.11242 -6.22864,10.32292 -6.27664,10.17893 0.21991,-0.13745 8.43834,1.21248 9.01294,4.71968 1.2288,3.81779 -4.96917,9.64522 -5.03752,9.48573 0.21257,-0.13285 10.58372,2.34604 11.07464,6.85972 1.25518,3.94064 -6.04041,9.4479 -6.21547,9.33849 0.13515,-0.11263 11.08656,2.58112 11.93526,7.39163 1.71015,4.99964 -7.00879,13.22784 -7.21484,13.15057 0.0942,-0.0157 9.93077,7.19801 9.34405,12.44107 0.10908,5.19779 -9.69913,10.99968 -9.76212,10.93669 0.18533,-0.0824 11.15376,9.91714 7.63971,14.84338 -2.61785,4.65478 -15.08597,-0.32502 -15.15239,-0.59071 0.33431,-0.16715 5.3952,17.15578 -0.85713,21.87287 -6.50245,5.00033 -23.38239,-4.72464 -23.02204,-4.94986 0.22183,0.0246 -1.66191,12.7012 -7.19718,14.88791 -5.5687,2.47972 -16.74854,-6.17807 -16.74854,-6.48015 0.21345,0.4269 -5.07562,9.91879 -10.03403,10.20801 -5.55297,0.42338 -12.95531,-7.17693 -12.56583,-7.44005 0.36032,0.1488 -7.16402,7.27921 -12.8887,6.95808 -4.83568,-0.14563 -10.74277,-8.48059 -10.58851,-8.67342 0.22444,0.19238 -9.22718,7.16136 -14.53666,4.80368 -4.70766,-1.85637 -6.31717,-11.27134 -6.13011,-11.24256 -0.0365,0.3281 -13.14523,5.45055 -17.62156,1.26353 -4.51529,-3.20565 -1.84094,-15.18727 -1.6627,-15.20509 -0.17088,0.0854 -9.60707,-4.8907 -10.3417,-9.69215 -1.57318,-4.62814 3.84701,-13.41306 4.19582,-13.29679 -0.18367,0.0459 -4.13228,-7.96382 -2.49807,-11.98279 0.67111,-3.66494 7.4073,-7.52683 7.53174,-7.42313 -0.10889,0.0545 -2.35187,-7.48617 -0.57345,-11.08065 0.97955,-3.46808 7.81374,-7.23036 7.98116,-7.15861 -0.16474,0.0412 -1.76219,-6.06944 -0.0618,-8.87421 0.86706,-2.57827 5.32018,-4.74225 5.36859,-4.54861 -0.31509,0.0788 -1.63297,-5.0224 -0.33716,-7.38269 1.06746,-2.94953 5.90428,-5.607 5.87412,-5.30544 -0.0593,0 0.14909,-4.63491 1.73435,-6.67977 1.09199,-2.83818 5.23059,-6.49208 5.30213,-6.32515 -0.13193,0.0495 1.90625,-6.4612 4.21952,-9.6367 1.30133,-2.92237 6.34678,-7.9651 6.48509,-7.9651 -0.0721,0.009 1.17726,-4.6058 3.03344,-6.74429 1.47439,-2.92429 5.62888,-6.48189 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z" class="shadow" id="path1400" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff" sodipodi:nodetypes="cacacacacacacacacacacacacacacacacacacacacacaccc" id="path1402" d="m 318.99599,327.6899 c 0,0 8.40821,1.17117 9.61497,4.49727 0.93385,2.57392 -3.47797,7.44163 -3.47797,7.44163 0,0 9.08388,-0.1679 10.11034,3.2164 0.84491,2.78571 -5.44926,6.82438 -5.44926,6.82438 0,0 10.25836,0.52946 11.58201,4.44743 1.27585,3.77649 -6.27664,10.17893 -6.27664,10.17893 0,0 8.01039,1.47995 9.01294,4.71968 1.05837,3.42011 -5.03752,9.48573 -5.03752,9.48573 0,0 10.15037,2.61688 11.07464,6.85972 0.7959,3.65359 -6.21547,9.33849 -6.21547,9.33849 0,0 10.74466,2.86604 11.93526,7.39163 1.2721,4.83537 -7.21484,13.15057 -7.21484,13.15057 0,0 9.56319,7.25927 9.34405,12.44107 -0.20647,4.88224 -9.76212,10.93669 -9.76212,10.93669 0,0 10.62954,10.15013 7.63971,14.84338 -2.71578,4.26308 -15.15239,-0.59071 -15.15239,-0.59071 0,0 4.90743,17.39967 -0.85713,21.87287 -6.20132,4.81212 -23.02204,-4.94986 -23.02204,-4.94986 0,0 -2.06947,12.86558 -7.19718,14.88791 -5.5687,2.19626 -16.74854,-6.48015 -16.74854,-6.48015 0,0 -5.30284,9.59088 -10.03403,10.20801 -4.82685,0.62961 -12.56583,-7.44005 -12.56583,-7.44005 0,0 -8.02869,7.4243 -12.8887,6.95808 -4.54161,-0.43568 -10.58851,-8.67342 -10.58851,-8.67342 0,0 -9.79032,6.67867 -14.53666,4.80368 -3.96987,-1.56825 -6.13011,-11.24256 -6.13011,-11.24256 0,0 -13.0991,5.03539 -17.62156,1.26353 -3.9155,-3.26563 -1.6627,-15.20509 -1.6627,-15.20509 0,0 -9.14506,-5.1217 -10.3417,-9.69215 -1.17719,-4.49614 4.19582,-13.29679 4.19582,-13.29679 0,0 -3.67873,-8.07721 -2.49807,-11.98279 1.02002,-3.37418 7.53174,-7.42313 7.53174,-7.42313 0,0 -1.99319,-7.66551 -0.57345,-11.08065 1.37185,-3.29995 7.98116,-7.15861 7.98116,-7.15861 0,0 -1.29621,-6.18593 -0.0618,-8.87421 0.97875,-2.13151 5.36859,-4.54861 5.36859,-4.54861 0,0 -1.28579,-5.1092 -0.33716,-7.38269 1.01601,-2.43499 5.87412,-5.30544 5.87412,-5.30544 0,0 0.68057,-4.63491 1.73435,-6.67977 1.26026,-2.44554 5.30213,-6.32515 5.30213,-6.32515 0,0 2.39255,-6.64356 4.21952,-9.6367 1.78378,-2.92237 6.48509,-7.9651 6.48509,-7.9651 0,0 1.69989,-4.67113 3.03344,-6.74429 1.54055,-2.39498 5.63667,-6.41957 5.63667,-6.41957 26.0423,7.35036 46.49273,1.22064 68.57478,-0.66959 z"/><path sodipodi:nodetypes="ccssccc" id="path1404" class="shadow" d="m 317.3515,327.6899 c 0.22023,-0.0832 13.95193,22.40956 15.51755,35.27419 7.4167,28.20029 26.15374,64.2233 5.41963,85.35354 -32.97758,33.60762 -95.87299,40.63263 -128.98295,5.78454 -16.72652,-17.60459 0.50361,-47.60411 11.1802,-71.36249 6.48324,-18.97334 29.03428,-54.79411 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z"/><path d="m 317.3515,327.6899 c 0,0 12.47759,22.79358 15.51755,35.27419 6.74669,27.69865 24.45833,64.13418 5.41963,85.35354 -28.74158,32.03359 -100.27917,37.85201 -128.98295,5.78454 -16.05853,-17.94037 3.26025,-48.62468 11.1802,-71.36249 6.85399,-19.67747 30.78578,-54.40455 30.78578,-54.40455 25.09479,7.08293 44.80116,1.17623 66.07979,-0.64523 z" id="path1415" sodipodi:nodetypes="caaaacc" style="display:inline;opacity:1;fill:#ffffff"/><path d="m 318.00391,325.73755 c 0.1662,-0.0684 8.0406,-11.7618 5.42961,-17.15483 -0.9984,-4.15898 -9.59497,-7.10148 -9.61975,-7.06183 0.0569,0.0797 10.47717,-4.52675 10.06153,-9.41841 -0.0685,-4.77393 -10.54117,-8.39289 -10.58006,-8.30214 -0.0526,0.16819 10.25564,-4.52608 11.12513,-10.21762 1.02638,-5.3714 -8.5072,-13.50589 -8.61202,-13.47969 -0.0119,0.17826 11.09595,-3.22828 11.88153,-8.72903 1.155,-4.5223 -7.71736,-10.81305 -7.91075,-10.7647 -0.18835,0.18835 9.25517,-0.42186 11.47755,-4.98693 1.84787,-4.00611 -4.81901,-11.58557 -4.96824,-11.52961 -0.01,0.12732 7.55069,-1.24244 9.10324,-4.91711 1.82315,-3.08035 -1.62605,-9.99671 -1.71582,-9.98549 0.0825,0.0367 5.16407,-1.94852 5.15369,-4.3377 0.60501,-1.54914 -2.18836,-3.99091 -2.28908,-3.97832 0.0908,0.10897 4.0678,-0.15226 4.79507,-1.82593 1.06341,-1.36941 -0.21991,-4.6138 -0.31935,-4.58065 0,0.11423 4.17524,-0.0769 5.19792,-1.9502 0.99558,-1.00322 -0.0412,-3.85994 -0.15909,-3.89362 0.0263,0.10519 4.18456,0.34981 5.20584,-1.40388 1.11122,-1.15275 0.14014,-4.38532 0.077,-4.38532 0.0633,0.0633 4.12591,-0.0432 4.83864,-1.69189 0.81726,-0.94694 -0.16572,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c -0.0716,-0.0398 -3.52027,0.54293 -4.22866,1.88506 -0.85877,0.77377 -0.79145,2.93259 -0.6882,2.93259 0.0551,-0.16527 -3.13346,0.0301 -4.19674,1.3135 -0.99275,0.92921 -0.83191,3.5722 -0.81211,3.56824 -0.2917,-0.11219 -3.72836,0.0448 -4.59896,1.27221 -1.38692,1.22213 -1.40211,4.98076 -1.29971,4.98076 0,-0.0543 -3.63043,0.28826 -4.68112,1.63345 -1.39037,1.63663 -0.95682,5.95733 -0.84379,5.86314 -0.0714,-0.0572 -3.50997,1.34812 -4.13281,2.97367 -0.99363,1.8097 0.0827,5.8256 0.1485,5.78611 0.0286,-0.0107 -3.47409,-2.58144 -5.81788,-2.29945 -2.03561,0.078 -5.00819,3.04217 -4.98536,3.065 0.0894,-0.0383 -3.77398,-2.28548 -6.07463,-1.93646 -2.19936,0.16817 -5.28843,3.26531 -5.24625,3.29062 0.0577,-0.0247 -3.6596,-2.98608 -6.11743,-2.8254 -2.62706,-0.17114 -6.42609,3.37458 -6.37214,3.43623 0.0764,-0.0305 -2.5983,-3.62398 -4.74516,-3.86523 -2.3968,-0.5135 -6.56096,2.67213 -6.54041,2.73377 0.0278,0 -1.86631,-3.79743 -3.84319,-4.39294 -2.1406,-0.8914 -7.08051,1.65543 -7.08312,1.65775 0,0 4.17132,-0.88265 4.32598,-2.62631 0.28337,-1.00061 -1.78574,-2.2873 -1.82858,-2.27124 0.021,0.0349 5.21539,-1.03939 5.23366,-3.24468 0.28059,-1.11065 -2.28712,-1.83524 -2.3211,-1.81583 0.0194,0.0427 4.09634,-0.0764 4.41853,-1.78242 0.37085,-0.98469 -1.73184,-2.21574 -1.77223,-2.1933 0.008,0.0219 2.8764,-0.90334 3.31722,-2.28129 0.32598,-0.62431 -0.37809,-1.9308 -0.43513,-1.92265 l -4.69222,0.72413 c 0.0237,-0.0426 -1.79765,0.46492 -2.63183,1.51492 -0.69936,0.46779 -0.96174,2.2027 -0.94371,2.21712 0.007,-0.0358 -1.88989,0.10067 -2.44519,0.95669 -0.61207,0.66093 -0.26769,2.37608 -0.20536,2.36361 0.012,-0.0419 -2.55183,0.42329 -3.2251,1.69596 -0.77861,1.04606 0.0592,3.62639 0.12616,3.62639 0.0513,-0.094 -2.12186,0.38382 -2.86561,1.6675 -0.82026,1.16209 -0.31411,3.83168 -0.0897,3.71947 -0.2087,-0.14907 -4.50311,2.782 -5.0707,5.30267 -1.45304,2.7823 -0.4393,8.68853 -0.14431,8.57791 -0.11184,-0.19573 -5.61323,4.13251 -6.54891,7.662 -2.01339,4.22462 -0.20242,12.80349 0.12218,12.65594 -0.27988,-0.19992 -6.69779,4.93798 -6.78396,8.84863 -0.72683,3.97856 4.74341,10.55407 4.9951,10.4462 -0.19084,-0.12723 -4.51715,7.94817 -3.68091,12.43969 0.0674,4.53539 6.50495,11.45785 6.7561,11.37413 -0.19797,0.054 -3.09154,6.28983 -2.56163,9.33402 -0.61864,3.0265 1.44599,8.78728 1.66753,8.76266 -0.22155,-0.0738 -2.26451,6.97373 -1.5863,10.76219 -0.2869,2.90595 6.58734,8.62178 6.71027,8.56909 l -2.93224,6.56412 67.29376,-3.51585 z" class="shadow" id="path1417" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"/><path style="display:inline;opacity:1;fill:#ffffff;stroke-width:1.05999994" sodipodi:nodetypes="cacacacacacacacacacacaccacacacacacacacacacacacacacaccacacacacacacacacacscccc" id="path1419" d="m 318.00391,325.73755 c 0,0 7.29076,-11.45304 5.42961,-17.15483 -1.23433,-3.78149 -9.61975,-7.06183 -9.61975,-7.06183 0,0 10.26143,-4.82879 10.06153,-9.41841 -0.19507,-4.4786 -10.58006,-8.30214 -10.58006,-8.30214 0,0 10.47399,-5.22482 11.12513,-10.21762 0.68954,-5.28719 -8.61202,-13.47969 -8.61202,-13.47969 0,0 11.1388,-3.87102 11.88153,-8.72903 0.67298,-4.4018 -7.91075,-10.7647 -7.91075,-10.7647 0,0 9.94184,-1.10853 11.47755,-4.98693 1.54066,-3.89091 -4.96824,-11.52961 -4.96824,-11.52961 0,0 7.59479,-1.81571 9.10324,-4.91711 1.47717,-3.0371 -1.71582,-9.98549 -1.71582,-9.98549 0,0 4.76382,-2.12641 5.15369,-4.3377 0.26565,-1.50672 -2.28908,-3.97832 -2.28908,-3.97832 0,0 3.87403,-0.38479 4.79507,-1.82593 0.82425,-1.28969 -0.31935,-4.58065 -0.31935,-4.58065 0,0 4.17524,-0.40787 5.19792,-1.9502 0.71783,-1.08258 -0.15909,-3.89362 -0.15909,-3.89362 0,0 4.10041,0.0132 5.20584,-1.40388 0.89923,-1.15275 0.077,-4.38532 0.077,-4.38532 0,0 3.91403,-0.25505 4.83864,-1.69189 0.60936,-0.94694 -0.30643,-3.36424 -0.30643,-3.36424 l -7.90872,-1.24492 c 0,0 -3.24515,0.69578 -4.22866,1.88506 -0.6399,0.77377 -0.6882,2.93259 -0.6882,2.93259 0,0 -3.20228,0.23661 -4.19674,1.3135 -0.82757,0.89617 -0.81211,3.56824 -0.81211,3.56824 0,0 -3.48252,0.13932 -4.59896,1.27221 -1.20438,1.22213 -1.29971,4.98076 -1.29971,4.98076 0,0 -3.63043,0.3578 -4.68112,1.63345 -1.25533,1.5241 -0.84379,5.86314 -0.84379,5.86314 0,0 -3.37828,1.45347 -4.13281,2.97367 -0.85776,1.72818 0.1485,5.78611 0.1485,5.78611 0,0 -3.74057,-2.48151 -5.81788,-2.29945 -1.94328,0.17031 -4.98536,3.065 -4.98536,3.065 0,0 -3.96616,-2.20312 -6.07463,-1.93646 -2.04797,0.25901 -5.24625,3.29062 -5.24625,3.29062 0,0 -3.87237,-2.89489 -6.11743,-2.8254 -2.41204,0.0746 -6.37214,3.43623 -6.37214,3.43623 0,0 -2.72617,-3.57283 -4.74516,-3.86523 -2.33852,-0.33867 -6.54041,2.73377 -6.54041,2.73377 0,0 -1.99097,-3.79743 -3.84319,-4.39294 -2.30846,-0.74219 -7.08312,1.65775 -7.08312,1.65775 0,0 4.03449,-0.96475 4.32598,-2.62631 0.16794,-0.95733 -1.82858,-2.27124 -1.82858,-2.27124 0,0 5.12196,-1.19511 5.23366,-3.24468 0.0535,-0.98088 -2.3211,-1.81583 -2.3211,-1.81583 0,0 4.01965,-0.24516 4.41853,-1.78242 0.23607,-0.90981 -1.77223,-2.1933 -1.77223,-2.1933 0,0 2.82832,-1.03154 3.31722,-2.28129 0.23939,-0.61194 -0.43513,-1.92265 -0.43513,-1.92265 l -4.69222,0.72413 c 0,0 -1.96023,0.75757 -2.63183,1.51492 -0.53291,0.60095 -0.94371,2.21712 -0.94371,2.21712 0,0 -1.92093,0.25586 -2.44519,0.95669 -0.47372,0.63326 -0.20536,2.36361 -0.20536,2.36361 0,0 -2.61532,0.6455 -3.2251,1.69596 -0.60723,1.04606 0.12616,3.62639 0.12616,3.62639 0,0 -2.30315,0.71618 -2.86561,1.6675 -0.63118,1.06755 -0.0897,3.71947 -0.0897,3.71947 0,0 -4.14105,3.04061 -5.0707,5.30267 -1.08704,2.64505 -0.14431,8.57791 -0.14431,8.57791 0,0 -5.40066,4.5045 -6.54891,7.662 -1.44183,3.96482 0.12218,12.65594 0.12218,12.65594 0,0 -6.39804,5.15209 -6.78396,8.84863 -0.40078,3.83882 4.9951,10.4462 4.9951,10.4462 0,0 -4.21638,8.14869 -3.68091,12.43969 0.54606,4.37584 6.7561,11.37413 6.7561,11.37413 0,0 -2.43294,6.11021 -2.56163,9.33402 -0.1186,2.97094 1.66753,8.76266 1.66753,8.76266 0,0 -1.76447,7.14041 -1.5863,10.76219 0.13408,2.72553 6.71027,8.56909 6.71027,8.56909 l -2.93224,6.56412 67.29376,-3.51585 z"/><path sodipodi:nodetypes="ccccccccccccccc" id="path1421" class="shadow" d="m 315.90803,320.84344 c -2.49311,-12.85797 -3.70847,-24.16935 -4.44214,-39.5634 4.29028,-30.83464 3.35841,-41.06705 21.27809,-72.37945 1.06744,-9.14922 11.65832,-19.70221 22.34434,-31.15738 -2.13976,-0.51067 -4.28423,-0.96012 -6.46482,-0.94005 -11.40402,9.3964 -21.91679,21.41172 -24.91403,32.79713 -21.89276,0.52722 -32.81714,6.37507 -58.48416,-1.54946 3.84727,-8.39874 5.10763,-9.47909 10.78801,-18.40031 -1.05734,0.0265 -2.02266,-0.0784 -3.63549,0.74174 -6.9411,6.67026 -8.04042,9.50969 -12.35955,17.95063 -2.80066,6.10293 -4.61886,11.91112 -5.76436,17.5175 -10.39962,25.33864 -5.9915,43.15772 -3.53361,61.61413 -1.4792,13.13023 1.06961,23.82456 3.07306,35.44835 18.49356,5.86562 40.23513,0.90221 62.11466,-2.0794 z"/><path d="m 315.90803,320.84344 c -2.81213,-13.35423 -5.31598,-26.66992 -4.44214,-39.5634 3.50974,-30.99075 1.84762,-41.36921 21.27809,-72.37945 0.93083,-9.35414 10.94077,-20.77854 22.34434,-31.15738 l -6.46482,-0.94005 c -9.53791,9.58301 -21.68892,21.43451 -24.91403,32.79713 -21.76753,0.94464 -32.29254,8.12373 -58.48416,-1.54946 3.69598,-8.48126 4.421,-9.85362 10.78801,-18.40031 l -3.63549,0.74174 c -6.53986,6.87088 -7.78622,9.63679 -12.35955,17.95063 l -5.76436,17.5175 c -8.96086,25.20784 -5.79542,43.13989 -3.53361,61.61413 -0.5132,12.61008 1.5982,23.53993 3.07306,35.44835 18.49356,5.86562 40.23513,0.90221 62.11466,-2.0794 z" id="path1423" sodipodi:nodetypes="ccccccccccccccc" style="display:inline;opacity:1;fill:#ffffff"/><path sodipodi:nodetypes="ccccc" id="path1425" class="shadow" d="m 332.57058,318.76346 6.33005,7.27419 c -34.68921,1.29057 -66.97188,18.12974 -88.95784,3.64611 l 3.86668,-6.97285 c 33.13895,8.49273 46.05641,-5.41002 78.76111,-3.94745 z"/><path d="m 332.57058,318.76346 6.33005,7.27419 c -35.36449,0.47083 -68.38566,17.52383 -88.95784,3.64611 l 3.86668,-6.97285 c 30.76253,9.95515 45.48233,-4.28164 78.76111,-3.94745 z" id="path1427" sodipodi:nodetypes="ccccc" style="display:inline;opacity:1;fill:#ffffff"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Straps_Hourglass.tw b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Hourglass.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3a4971a3862d031bee12a8ea05e972a76406c159
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Hourglass.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Straps_Hourglass [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z" class="shadow" id="path1059" sodipodi:nodetypes="cccccc"/><path d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z" class="shadow" id="path1061" sodipodi:nodetypes="ccccc"/><path d="m 248.61993,292.69037 0.49718,-5.61448 c 26.08054,7.76617 67.99111,-3.38669 89.95679,-8.90649 l -1.5334,6.06498 c -25.3681,6.21736 -60.17783,18.9423 -88.92057,8.45599 z" class="shadow" id="path1063" sodipodi:nodetypes="ccccc"/><path d="m 250.11347,322.51288 -1.23696,-5.4714 c 26.11901,7.93288 63.08772,-3.03436 84.20257,-12.2411 l -1.77559,6.01811 C 311.74357,317.86559 278.86187,333 250.11347,322.51288 Z" class="shadow" id="path1065" sodipodi:nodetypes="ccccc"/><path d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z" class="shadow" id="path1067" sodipodi:nodetypes="ccccc"/><path d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z" class="shadow" id="path1069" sodipodi:nodetypes="ccccc"/><path d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z" class="shadow" id="path1071" sodipodi:nodetypes="ccccc"/><path d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z" class="shadow" id="path1076" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1078" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z"/><path d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z" class="shadow" id="path1080" sodipodi:nodetypes="ccccc"/><path d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z" class="shadow" id="path1083" sodipodi:nodetypes="ccccc"/><path d="m 295.92707,406.04635 -5.48014,0.45093 c 15.27591,-31.3179 31.43451,-62.33025 40.82744,-95.68456 l 2.64023,5.6203 c -10.44934,31.1379 -23.84084,59.86194 -37.98753,89.61333 z" class="shadow" id="path1085" sodipodi:nodetypes="ccccc"/><path d="m 282.59169,408.07843 5.48014,0.45093 C 271.9581,377.42091 257.55557,356.46024 250.06195,322.6311 l -2.97225,5.42499 c 8.59628,31.47482 20.75767,50.37961 35.50199,80.02234 z" class="shadow" id="path1087" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Straps_Normal.tw b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Normal.tw
new file mode 100644
index 0000000000000000000000000000000000000000..203aef2407b6fb9c0e9638ec9e1e8f1516b97fe5
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Normal.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Straps_Normal [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="cccccc" id="path1017" class="shadow" d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z"/><path sodipodi:nodetypes="ccccc" id="path1019" class="shadow" d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z"/><path sodipodi:nodetypes="ccccc" id="path1021" class="shadow" d="m 248.54181,293.0185 0.59093,-5.63792 c 26.08054,7.76617 81.41051,-8.64113 103.37619,-14.16093 l -1.5334,6.06498 c -25.3681,6.21736 -73.69098,24.22018 -102.43372,13.73387 z"/><path sodipodi:nodetypes="ccccc" id="path1024" class="shadow" d="m 249.83337,322.70417 -1.10438,-5.55979 c 26.11901,7.93288 77.02383,-9.41284 98.13868,-18.61958 l -0.44977,5.62037 c -19.55992,7.0471 -67.83613,29.04612 -96.58453,18.559 z"/><path sodipodi:nodetypes="ccccc" id="path1026" class="shadow" d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z"/><path sodipodi:nodetypes="ccccc" id="path1028" class="shadow" d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z"/><path sodipodi:nodetypes="ccccc" id="path1030" class="shadow" d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z"/><path sodipodi:nodetypes="ccccc" id="path1032" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z"/><path d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z" class="shadow" id="path1034" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path1036" class="shadow" d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z"/><path sodipodi:nodetypes="ccccc" id="path1038" class="shadow" d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z"/><path sodipodi:nodetypes="ccccc" id="path1040" class="shadow" d="m 290.49119,405.86957 -5.48014,0.45093 c 15.27591,-31.3179 51.9848,-68.82679 61.37773,-102.1811 l 0.87606,5.45462 c -10.44934,31.1379 -42.62696,66.52416 -56.77365,96.27555 z"/><path sodipodi:nodetypes="ccccc" id="path1044" class="shadow" d="m 282.59169,408.07843 5.48014,0.45093 c -16.11373,-31.10845 -30.52048,-51.97001 -38.0141,-85.79915 l -2.97225,5.42499 c 8.59628,31.47482 20.76189,50.2805 35.50621,79.92323 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Outfit_Straps_Unnatural.tw b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Unnatural.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c49b241d8ebbcff5b9ccf81e06b59015a962b50e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Outfit_Straps_Unnatural.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Outfit_Straps_Unnatural [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path d="m 300.64645,182.01961 c 0.19647,-2.8289 -0.21252,-5.25416 -0.48765,-7.76866 l 18.75297,-10.43959 11.53228,-16.37604 c 0.48515,9.29334 0.35747,19.09563 5.57428,24.45929 -11.37581,3.97083 -19.90829,12.02571 -35.37188,10.125 z" class="shadow" id="XMLID_511_-1-1" sodipodi:nodetypes="cccccc"/><path d="m 282.74507,409.66612 c -3.02008,-75.15795 -28.86151,-165.97691 20.57911,-228.58327 l 7.48106,-2.774 c -52.38053,67.74199 -24.96872,151.88878 -22.44483,231.28803 z" class="shadow" id="XMLID_511_-1-1-0" sodipodi:nodetypes="ccccc"/><path d="m 252.72931,292.831 0.21593,-5.70042 c 26.08054,7.76617 58.6829,-3.61816 80.64858,-9.13796 l -1.5334,6.06498 c -25.3681,6.21736 -50.58837,19.25971 -79.33111,8.7734 z" class="shadow" id="XMLID_511_-1-1-2" sodipodi:nodetypes="ccccc"/><path d="m 253.95837,322.57917 -1.10438,-5.55979 c 26.11901,7.93288 53.67436,-3.18904 74.78921,-12.39578 l -1.77559,6.01811 c -19.55992,7.0471 -43.16084,22.42458 -71.90924,11.93746 z" class="shadow" id="XMLID_511_-1-1-2-6" sodipodi:nodetypes="ccccc"/><path d="m 305.58478,461.76323 -2.91688,0.62771 c -0.237,-34.63249 43.891,-58.56721 74.52696,-75.64102 l 2.20189,5.09003 c -23.66963,12.29432 -69.72202,41.24006 -73.81197,69.92328 z" class="shadow" id="XMLID_511_-1-1-2-6-1" sodipodi:nodetypes="ccccc"/><path d="m 286.46262,461.96295 2.91688,0.62771 c -28.01268,-37.53971 -26.96023,-23.95407 -59.71446,-54.45352 l -1.38939,5.15253 c 34.69638,28.86465 42.2831,28.46475 58.18697,48.67328 z" class="shadow" id="XMLID_511_-1-1-2-6-1-0" sodipodi:nodetypes="ccccc"/><path d="m 230.0681,406.94442 0.77062,-5.05979 c 67.99401,11.93288 109.67161,-12.54586 143.53646,-21.5026 l 1.98091,4.40502 c -19.55992,7.0471 -78.41459,38.51949 -146.28799,22.15737 z" class="shadow" id="XMLID_511_-1-1-2-6-2" sodipodi:nodetypes="ccccc"/><path d="m 283.47212,411.04042 5.17119,-1.14037 26.1263,22.47011 -2.15059,4.14311 z" class="shadow" id="XMLID_511_-1-1-2-6-3" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="ccccc" id="path5007" class="shadow" d="m 283.47212,411.04042 5.17119,-1.14037 -16.9362,33.09511 -3.33809,-2.73189 z"/><path d="m 306.84144,179.80553 -2.06007,3.22555 c 23.3503,2.52905 38.53464,15.87246 53.33726,29.7214 l -1.09146,-6.06498 c -14.87819,-17.81605 -32.01863,-24.80565 -50.18573,-26.88197 z" class="shadow" id="XMLID_511_-1-1-2-3" sodipodi:nodetypes="ccccc"/><path d="m 302.41314,180.3416 2.06007,3.22555 c -17.14399,8.74118 -36.94672,13.05114 -49.62495,29.23526 l 2.50567,-4.20882 c 11.69297,-15.28809 29.81478,-19.23118 45.05921,-28.25199 z" class="shadow" id="XMLID_511_-1-1-2-3-1" sodipodi:nodetypes="ccccc"/><path d="m 290.49119,405.86957 -5.48014,0.45093 c 15.27591,-31.3179 31.43451,-62.33025 40.82744,-95.68456 l 3.21835,4.52655 c -10.44934,31.1379 -24.41896,60.95569 -38.56565,90.70708 z" class="shadow" id="XMLID_511_-1-1-2-6-1-06" sodipodi:nodetypes="ccccc"/><path d="m 282.59169,408.07843 5.48014,0.45093 c -16.11373,-31.10845 -26.58298,-52.15751 -34.0766,-85.98665 l -2.97225,5.42499 c 8.59628,31.47482 16.82439,50.468 31.56871,80.11073 z" class="shadow" id="XMLID_511_-1-1-2-6-1-06-9" sodipodi:nodetypes="ccccc"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/art/vector_revamp/layers/Torso_Unnatural.tw b/src/art/vector_revamp/layers/Torso_Unnatural.tw
new file mode 100644
index 0000000000000000000000000000000000000000..16bc6d3047a15898a83c97e511abec55d0ad314e
--- /dev/null
+++ b/src/art/vector_revamp/layers/Torso_Unnatural.tw
@@ -0,0 +1,3 @@
+:: Art_Vector_Revamp_Torso_Unnatural [nobr]
+
+<<print '<html><svg viewBox="0 0 560 1000" class="'+_art_display_class+'"><path sodipodi:nodetypes="ccccccccccscccccccsccccccc" id="path1150" class="shadow torso" d="m 246.30911,231.06259 c -8.99453,20.02062 -2.7168,39.82817 6.59033,56.00881 -1.53985,11.7306 -1.87414,26.85685 1.00056,35.50213 -11.85675,21.45408 -15.97966,23.47896 -17.84706,43.62647 -1.27191,10.1573 -2.73211,20.53718 -6.00882,40.87059 2.61719,20.31584 18.31529,25.98218 33.42233,33.28968 14.2695,10.10615 21.87131,20.64462 23.13315,21.60879 1.67702,0.43271 4.94669,1.18016 5.313,-0.25046 l 4.82293,-0.062 c 0,-0.003 0.49727,1.92474 9.35695,0.16388 -0.0537,0.63231 -0.0183,-18.66075 25.04236,-35.98144 10.0947,-6.97697 31.55074,-29.06522 47.76148,-35.09887 -8.70897,-20.77821 -12.44162,-28.09997 -19.58456,-39.49315 -2.78089,-8.8422 -20.01148,-25.04261 -20.57655,-24.78256 0.41299,-0.50348 -12.21859,-13.62863 -12.84375,-15.85983 2.68681,-6.22178 7.5538,-32.80103 8.07452,-32.87542 19.23508,-11.98202 24.99543,-31.81666 27.02144,-41.33057 -0.50349,-3.50775 -1.32308,-10.70751 -1.45375,-13.44272 -4.53544,-10.77188 -2.3443,-15.76194 -4.6441,-26.29186 -2.20292,-10.08636 3.79175,-17.91215 3.88445,-17.91215 -15.5475,-3.91931 -28.08011,3.12735 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60044,11.74636 4.52731,21.84761 4.14186,32.15688 -5.80032,4.30093 -13.259,4.44692 -29.51965,8.86728 -10.04843,13.94881 -16.38873,17.64107 -24.82836,40.21314 z"/><path d="m 246.30911,231.06259 c -7.97663,19.22419 -2.76769,39.20032 6.84033,56.00881 -1.06764,11.32585 -1.52536,26.55789 1.00056,35.50213 C 242.77941,344.09706 238.25294,346.1 236.05294,366.2 c -1.1,10.1 -2.23235,20.37059 -6.00882,40.87059 1.79918,21.68192 24.06603,28.08577 33.55443,33.19683 14.43169,10.04215 15.75456,13.80608 22.99302,21.72969 0.71424,0.0435 3.1774,0.77206 4.37876,0.44893 0.70147,-0.18868 0.95983,-0.71607 0.95983,-0.71607 l 4.82917,-0.077 c 0.96846,1.30549 6.32302,0.7661 9.32277,0.17649 1.25908,-5.51105 3.06465,-22.40272 25.53259,-37.02845 9.99479,-6.9207 28.66527,-25.38509 47.28163,-34.05687 -9.1,-20.7 -12.62279,-28.06765 -19.58456,-39.49706 -3.8841,-8.49646 -20.35009,-24.94863 -20.57655,-24.78256 0.17394,-0.53763 -12.86462,-13.70829 -12.93214,-15.85983 2.56898,-6.32141 6.07307,-31.48845 8.07452,-32.87542 17.10876,-11.85604 23.08362,-25.52016 27.05018,-41.16751 -0.3269,-2.17434 -0.47207,-3.26685 -0.65846,-5.74844 -1.66961,-10.3676 -2.47994,-23.531 -5.32957,-34.10874 0.025,-10.96207 3.83428,-17.95261 3.83428,-17.95261 -15.75422,-3.81595 -28.55683,3.36571 -28.3123,-32.42233 l -33.94646,3.49567 c -0.60023,11.74644 4.71192,22.22273 4.14186,32.15688 -5.62538,4.35924 -11.13319,4.21882 -29.51103,8.85181 -8.65971,10.94361 -15.77697,17.65654 -24.83698,40.22861 z" class="skin torso" id="path1152" sodipodi:nodetypes="cccccccsccccccccscccccccccc"/><path d="m 317.3521,285.5361 c -7.46191,11.4761 -10.89652,37.14512 -11.1397,41.11412 2.81194,-18.56341 5.72671,-31.01778 11.1397,-41.11412 z" class="muscle_tone" id="path1156" sodipodi:nodetypes="ccc"/><path d="m 333.64545,368.51096 c -5.87092,10.37125 -20.05508,16.48024 -27.5903,38.1711 8.55718,-28.02096 20.05599,-25.82086 27.5903,-38.1711 z" class="muscle_tone" id="path1158" sodipodi:nodetypes="ccc"/><path d="m 261.07288,408.74028 c -7.12092,-11.56625 -12.80508,-15.26976 -19.3403,-19.6414 12.24468,7.16654 14.68099,9.92914 19.3403,19.6414 z" class="muscle_tone" id="path1160" sodipodi:nodetypes="ccc"/><path d="m 333.87477,277.49678 c -0.45714,-1.47279 -0.073,-7.87231 -6.56962,-12.18972 4.93326,3.3569 6.04008,6.0889 6.56962,12.18972 z" class="muscle_tone" id="path1162" sodipodi:nodetypes="ccc"/><path d="m 303.24363,269.89121 c -3.70542,-3.35104 -8.95604,-6.81165 -14.43619,-10.51034 5.04375,3.22432 11.32129,6.97278 14.43619,10.51034 z" class="muscle_tone" id="path1164" sodipodi:nodetypes="ccc"/><path d="m 249.55985,274.96762 c 2.66686,-3.79298 3.9516,-9.15827 9.43175,-12.85696 -5.04375,3.22432 -7.24493,9.01004 -9.43175,12.85696 z" class="muscle_tone" id="path1166" sodipodi:nodetypes="ccc"/><path d="m 315.32611,381.50405 c -4.37092,10.93375 -5.99229,14.67189 -8.99626,24.269 4.27593,-11.17721 5.6182,-14.98126 8.99626,-24.269 z" class="muscle_tone" id="path1168" sodipodi:nodetypes="ccc"/><path d="m 260.92015,408.4457 c -3.30842,-11.56625 -4.55508,-15.20726 -7.9653,-24.0789 5.24468,9.91654 5.36849,14.36664 7.9653,24.0789 z" class="muscle_tone" id="path1170" sodipodi:nodetypes="ccc"/><path d="m 322.21004,418.07002 c -4.37092,10.93375 -6.6994,16.08611 -9.70337,25.68322 4.27593,-11.17721 6.32531,-16.39548 9.70337,-25.68322 z" class="muscle_tone" id="path1172" sodipodi:nodetypes="ccc"/><path d="m 263.39362,428.05063 c 4.93342,11.09 6.0119,9.64861 9.01587,19.24572 -4.27593,-11.17721 -5.63781,-9.95798 -9.01587,-19.24572 z" class="muscle_tone" id="path1174" sodipodi:nodetypes="ccc"/><path d="m 325.9149,310.57121 c -1.2483,3.29428 -1.95746,4.93254 -3.52279,9.12572 0.95249,-4.27451 1.65215,-6.1206 3.52279,-9.12572 z" class="muscle_tone" id="path1176" sodipodi:nodetypes="ccc"/><path d="m 254.14485,322.53089 c 1.2483,3.29428 0.64496,1.83879 2.21029,6.03197 -0.95249,-4.27451 -0.33965,-3.02685 -2.21029,-6.03197 z" class="muscle_tone" id="path1178" sodipodi:nodetypes="ccc"/><path d="m 361.02638,237.18777 c -0.94326,-8.05772 -0.78056,-23.30289 -4.75812,-32.08391 2.09688,6.60791 3.01744,21.31058 4.75812,32.08391 z" class="shadow" id="path1180" sodipodi:nodetypes="ccc"/><path d="m 276.99339,346.1357 c 0.48219,-2.95995 0.50103,-5.52426 -0.57274,-9.24552 l -0.0242,0.001 c -0.78458,4.82879 -0.38541,6.45786 0.59697,9.24433 z" class="shadow" id="path1454" sodipodi:nodetypes="ccccc"/><path sodipodi:nodetypes="cccccc" id="path1459" class="muscle_tone" d="m 276.42065,336.89018 c -2.33392,-7.76332 -1.51834,-23.53988 0.81606,-35.04811 -1.74332,-2.38988 -4.44237,-24.92087 -1.47199,-27.6049 -3.61369,4.2787 -0.75808,24.51323 1.47338,27.60765 -2.61353,11.47022 -3.33983,26.27713 -0.84168,35.04655 z"/></svg></html>' >>
\ No newline at end of file
diff --git a/src/cheats/mod_EditArcologyCheat.tw b/src/cheats/mod_EditArcologyCheat.tw
index b9f566093944e13907631d72319092ab94857b2d..a207da4fe4656d4e8c60c86876ca601552f766f8 100644
--- a/src/cheats/mod_EditArcologyCheat.tw
+++ b/src/cheats/mod_EditArcologyCheat.tw
@@ -356,6 +356,7 @@ __Player Character__
 <<radiobutton "$HA.schoolAnnexed" 0>> 0
 | <<radiobutton "$HA.schoolAnnexed" 1>> 1 (Failed)
 
+<<if $seePreg != 0>>
 <br><br>''The Cattle Ranch:''
 <br>TCR Students Bought: <<textbox "$TCR.studentsBought" $TCR.studentsBought>>
 <br>TCR Upgrades: ''$TCR.schoolUpgrade''
@@ -371,6 +372,7 @@ __Player Character__
 <br>TCR Failed: ''$TCR.schoolAnnexed'' |
 <<radiobutton "$TCR.schoolAnnexed" 0>> 0
 | <<radiobutton "$TCR.schoolAnnexed" 1>> 1 (Failed)
+<</if>>
 
 <<if ($seeDicks != 0)>>
 <br><br>''L'École des Enculées:''
diff --git a/src/cheats/mod_EditFSCheat.tw b/src/cheats/mod_EditFSCheat.tw
index 035748cdcb79ae40e880aad231d51ad4c319737d..541aa1b204f56c7b9da29ccebfddce107b5f5842 100644
--- a/src/cheats/mod_EditFSCheat.tw
+++ b/src/cheats/mod_EditFSCheat.tw
@@ -126,6 +126,7 @@
 
 	<br>[[Apply and reset Gender Radicalism|MOD_Edit FS Cheat][$arcologies[0].FSGenderRadicalist = "unset",$arcologies[0].FSGenderRadicalistDecoration = 20,$arcologies[0].FSGenderRadicalistLawBeauty = 0, $arcologies[0].FSGenderRadicalistLawFuta = 0]]
 
+<<if $seePreg != 0>>
 <br><br>
 
 	<<if $arcologies[0].FSRepopulationFocus != "unset">>
@@ -175,7 +176,8 @@
 	| <<radiobutton "$arcologies[0].FSRestartSMR" 1>> 1 (Passed.)
 
 	<br>[[Apply and reset Repopulation Efforts|MOD_Edit FS Cheat][$arcologies[0].FSRepopulationFocus = "unset",$arcologies[0].FSRepopulationFocusDecoration = 20,$arcologies[0].FSRepopulationFocusLaw = 0, $arcologies[0].FSRepopulationFocusSMR = 0]]
-
+<</if>>
+	
 <br><br>
 
 	<<if $arcologies[0].FSPaternalist != "unset">>
diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
index 1bc0c43e6711ea1deb9dba639a936550a21384be..4c046021e01fe0486d6be010fb50cb5fdd12b16f 100644
--- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
+++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
@@ -442,6 +442,10 @@
 	<<print "Prestige set too high, reset to 3">><br>
 	<<set $tempSlave.prestige = 3>>
 <</if>>
+<<if $tempSlave.breedingMark == 1 && ["whore", "serve the public", "work a glory hole", "work in the dairy", "serve in the club", "be the DJ", "be the Madam", "live with your Head Girl", "be confined in the arcade", "work in the brothel", "be a subordinate slave"].includes($tempSlave.assignment)>>
+	<<print "Eugenics Breeding Marked slave detected in questionable use, defualting slave assignment to 'rest'">><br>
+	<<assignJob $tempSlave "rest">>
+<</if>>
 <<SetBellySize $tempSlave>>
 
 <br>
@@ -451,9 +455,5 @@ You perform the dark rituals, pray to the dark gods and sold your soul for the p
 
 <<set $activeSlave = clone($tempSlave)>>
 <<unset $tempSlave>>
-<<for $i = 0; $i < $slaves.length; $i++>>
-	<<if $activeSlave.ID == $slaves[$i].ID>>
-	<<set $slaves[$i] = clone($activeSlave)>>
-	<<break>>
-	<</if>>
-<</for>>
\ No newline at end of file
+<<set _escn = $slaves.findIndex(function(s) { return $activeSlave.ID == s.ID; })>>
+<<set $slaves[_escn] = clone($activeSlave)>>
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 38e927796a133020511306370b8b6ac8a44b6233..63f281af6f6692f33ea312e2b6b985e22c089d58 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -1770,13 +1770,13 @@
 		@@.yellow;false@@
 		<<checkbox "$tempSlave.cSec" 0 1>>
 	<<else>>
-		@@.yellow;false@@
+		@@.yellow;true@@
 		<<checkbox "$tempSlave.cSec" 0 1 checked>>
 	<</if>>
 
 	<br>
 
-	''Breeding mark (only for Eugenic Societies): 
+	''Breeding mark (only for Eugenic Societies):''
 	<<if $tempSlave.breedingMark == 1>>
 		@@.yellow;true@@
 		<<checkbox "$tempSlave.breedingMark" 0 1 checked>>
@@ -2540,6 +2540,7 @@
 	<<radiobutton "$tempSlave.lipsTat" "counting">>Counting
 	<<radiobutton "$tempSlave.lipsTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.lipsTat" "rude words">>Rude words
+	<br>''Custom lips tattoo '' <<textbox "$tempSlave.lipsTat" $tempSlave.lipsTat>>
 	<br>
 	''__Shoulders Tattoo__ ( 
 	<<if $tempSlave.shouldersTat == 0>>@@.yellow;None@@
@@ -2555,6 +2556,7 @@
 	<<radiobutton "$tempSlave.shouldersTat" "counting">>Counting
 	<<radiobutton "$tempSlave.shouldersTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.shouldersTat" "rude words">>Rude words
+	<br>''Custom shoulders tattoo '' <<textbox "$tempSlave.shouldersTat" $tempSlave.shouldersTat>>
 	<br>
 	''__Back Tattoo__ ( 
 	<<if $tempSlave.backTat == 0>>@@.yellow;None@@
@@ -2570,6 +2572,7 @@
 	<<radiobutton "$tempSlave.backTat" "counting">>Counting
 	<<radiobutton "$tempSlave.backTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.backTat" "rude words">>Rude words
+	<br>''Custom back tattoo '' <<textbox "$tempSlave.backTat" $tempSlave.backTat>>
 	<br>
 	''__Belly Tattoo__ ( 
 	<<if $tempSlave.bellyTat == 0>>@@.yellow;None@@
@@ -2580,6 +2583,7 @@
 	<<radiobutton "$tempSlave.bellyTat" "a heart">>Heart
 	<<radiobutton "$tempSlave.bellyTat" "a star">>Star
 	<<radiobutton "$tempSlave.bellyTat" "a butterfly">>Butterfly
+	<br>''Custom belly tattoo '' <<textbox "$tempSlave.bellyTat" $tempSlave.bellyTat>>
 	<br>
 	''__Arms Tattoo__ ( 
 	<<if $tempSlave.armsTat == 0>>@@.yellow;None@@
@@ -2595,6 +2599,7 @@
 	<<radiobutton "$tempSlave.armsTat" "counting">>Counting
 	<<radiobutton "$tempSlave.armsTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.armsTat" "rude words">>Rude words
+	<br>''Custom arms tattoo '' <<textbox "$tempSlave.armsTat" $tempSlave.armsTat>>
 	<br>
 	''__Legs Tattoo__ ( 
 	<<if $tempSlave.legsTat == 0>>@@.yellow;None@@
@@ -2610,6 +2615,7 @@
 	<<radiobutton "$tempSlave.legsTat" "counting">>Counting
 	<<radiobutton "$tempSlave.legsTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.legsTat" "rude words">>Rude words
+	<br>''Custom legs tattoo '' <<textbox "$tempSlave.legsTat" $tempSlave.legsTat>>
 	<br>
 	''__Boobs Tattoo__ ( 
 	<<if $tempSlave.boobsTat == 0>>@@.yellow;None@@
@@ -2625,6 +2631,7 @@
 	<<radiobutton "$tempSlave.boobsTat" "counting">>Counting
 	<<radiobutton "$tempSlave.boobsTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.boobsTat" "rude words">>Rude words
+	<br>''Custom boobs tattoo '' <<textbox "$tempSlave.boobsTat" $tempSlave.boobsTat>>
 	<br>
 	''__Butt Tattoo__ ( 
 	<<if $tempSlave.buttTat == 0>>@@.yellow;None@@
@@ -2640,6 +2647,7 @@
 	<<radiobutton "$tempSlave.buttTat" "counting">>Counting
 	<<radiobutton "$tempSlave.buttTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.buttTat" "rude words">>Rude words
+	<br>''Custom butt tattoo '' <<textbox "$tempSlave.buttTat" $tempSlave.buttTat>>
 	<br>
 	''__Vagina Tattoo__ ( 
 	<<if $tempSlave.vaginaTat == 0>>@@.yellow;None@@
@@ -2655,6 +2663,7 @@
 	<<radiobutton "$tempSlave.vaginaTat" "counting">>Counting
 	<<radiobutton "$tempSlave.vaginaTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.vaginaTat" "rude words">>Rude words
+	<br>''Custom vagina tattoo '' <<textbox "$tempSlave.vaginaTat" $tempSlave.vaginaTat>>
 	<br>
 	''__Anus Tattoo__ ( 
 	<<if $tempSlave.anusTat == 0>>@@.yellow;None@@
@@ -2669,6 +2678,7 @@
 	<<radiobutton "$tempSlave.anusTat" "counting">>Counting
 	<<radiobutton "$tempSlave.anusTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.anusTat" "rude words">>Rude words
+	<br>''Custom anus tattoo '' <<textbox "$tempSlave.anusTat" $tempSlave.anusTat>>
 	<br>
 	''__Dick Tattoo__ ( 
 	<<if $tempSlave.dickTat == 0>>@@.yellow;None@@
@@ -2682,6 +2692,7 @@
 	<<radiobutton "$tempSlave.dickTat" "counting">>Counting
 	<<radiobutton "$tempSlave.dickTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.dickTat" "rude words">>Rude words
+	<br>''Custom dick tattoo '' <<textbox "$tempSlave.dickTat" $tempSlave.dickTat>>
 	<br>
 	''__Tramp Stamp Tattoo__ ( 
 	<<if $tempSlave.stampTat == 0>>@@.yellow;None@@
@@ -2697,6 +2708,7 @@
 	<<radiobutton "$tempSlave.stampTat" "counting">>Counting
 	<<radiobutton "$tempSlave.stampTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.stampTat" "rude words">>Rude words
+	<br>''Custom tramp stamp tattoo '' <<textbox "$tempSlave.stampTat" $tempSlave.stampTat>>
 	<br>
 <</widget>>
 
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index c3ced129f66649358f2ce9254ce143338e262c1c..6339fcfaaf9426099a3422f0fb4940147e7d98c3 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -337,9 +337,18 @@ of the slave girls will have dicks.
 Should you be able to surgically attach a penis to your female slaves and starting girls?
 <<if $makeDicks != 0>>[[No|Intro Summary][$makeDicks = 0]]<<else>>No<</if>>
 | <<if $makeDicks != 1>>[[Yes|Intro Summary][$makeDicks = 1]]<<else>>Yes<</if>>
+<</if>>
+
 <br>
+<<if $seePreg == 1>>
+	Pregnancy related content is ''enabled''.
+	[[Disable|Intro Summary][$seePreg = 0]]
+<<else>>
+	Most pregnancy related content is ''disabled''.
+	[[Enable|Intro Summary][$seePreg = 1]]
 <</if>>
 
+<br>
 <<if $seeHyperPreg == 1>>
 	Extreme pregnancy content like broodmothers is ''enabled''.
 	[[Disable|Intro Summary][$seeHyperPreg = 0]]
@@ -357,11 +366,8 @@ Should you be able to surgically attach a penis to your female slaves and starti
 	[[Enable|Intro Summary][$seeExtreme = 1]]
 <</if>>
 
-&nbsp;&nbsp;&nbsp;&nbsp;
-
-<br>
 <<if $seeDicks != 0>>
-&nbsp;&nbsp;&nbsp;&nbsp;
+<br>
 <<if $seeCircumcision == 1>>
 	Circumcision is ''enabled''.
 	[[Disable|Intro Summary][$seeCircumcision = 0]]
@@ -589,7 +595,7 @@ __''Player Character''__
 			<<set $PCCreationCareer = "member of the idle wealthy">>
 	<</switch>>
 	<br>
-	Before you came to the free cities, you were a ''$PCCreationCareer'' and it is rumoured that you acquired your archology through ''$PC.rumor''.
+	Before you came to the free cities, you were a ''$PCCreationCareer'' and it is rumoured that you acquired your arcology through ''$PC.rumor''.
 	
 	<br>__Past career:__
 	<<if $PC.career != "arcology owner">>
@@ -677,16 +683,15 @@ __''Player Character''__
 			<<set $PCCreationBoobSize = "average DD cups">>
 	<</switch>> 
 		
-	<<switch $PC.boobsImplant>>
-		<<case 1>>
-			<<set $PCCreationBreast = "fake"
-		<<default>>
-			<<set $PCCreationBreast = "all natural">>
-	<</switch>> 	
+	<<if $PC.boobsImplant>>
+		<<set $PCCreationBreast = "fake">>
+	<<else>>
+		<<set $PCCreationBreast = "all natural">>
+	<</if>> 	
 			
 	<<if $PC.boobs > 0>>
 		Your breasts are ''$PCCreationBoobSize'' 
-		and ''<<print $PCCreationBreast>>''.
+		and ''$PCCreationBreast''.
 		<<if $PC.boobsBonus == 0>>
 			[[Go bigger|Intro Summary][$PC.boobsBonus = 2, $PC.boobsImplant = 0]] | [[Get implants|Intro Summary][$PC.boobsBonus = 2, $PC.boobsImplant = 1]] | [[Go smaller|Intro Summary][$PC.boobsBonus = -1, $PC.boobsImplant = 0]]
 		<<elseif $PC.boobsBonus == 2>>
@@ -884,7 +889,7 @@ Currently
 	''enabled.'' [[Disable|Intro Summary][$seeImages = 0]]
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $imageChoice == 1>>
-		''Vector art by NoX'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]] | [[Switch to non-embedded vector art|Intro Summary][$imageChoice = 2]]
+		''Vector art by NoX'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]] | [[Switch to non-embedded vector art|Intro Summary][$imageChoice = 2]] | [[Switch to revamped embedded vector art|Intro Summary][$imageChoice = 3]]
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Highlights on shiny clothing
 		<<if $seeVectorArtHighlights == 1>>
@@ -894,7 +899,17 @@ Currently
 		<</if>>
 		<br>@@.red;Git compiled only, no exceptions.@@
 	<<elseif $imageChoice == 2>>
-		''Vector art by NoX - non-embed version'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]] | [[Switch to embedded vector art|Intro Summary][$imageChoice = 1]]
+		''Vector art by NoX - non-embed version'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]] | [[Switch to embedded vector art|Intro Summary][$imageChoice = 1]] | [[Switch to revamped embedded vector art|Intro Summary][$imageChoice = 3]]
+	<<elseif $imageChoice == 3>>
+		''Vector art revamp'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]] | [[Switch to embedded vector art|Intro Summary][$imageChoice = 1]] | [[Switch to non-embedded vector art|Intro Summary][$imageChoice = 2]]
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		Highlights on shiny clothing
+		<<if $seeVectorArtHighlights == 1>>
+			@@.cyan;ENABLED@@. [[Disable|Intro Summary][$seeVectorArtHighlights = 0]]
+		<<else>>
+			@@.red;DISABLED@@. [[Enable|Intro Summary][$seeVectorArtHighlights = 1]]
+		<</if>>
+		<br>@@.red;Git compiled only, no exceptions.@@
 	<<elseif $imageChoice == 0>>
 		''Rendered imagepack by Shokushu'' is selected. [[Switch to vector art|Intro Summary][$imageChoice = 1]]
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 52033790d71e42dbf67286354d7b20c66df15db9..c4a8bd13045d013e7297b83ceaa833eec41d97d3 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -287,10 +287,10 @@ The game starts with 3 basic default rule settings but more can be added and/or
 Once you are fairly reputable and have a large sum of cash in the bank, you will receive a brief end of turn event that unlocks the ability to found a corporation dedicated to slaving. Once this happens, you can incorporate from the economics report, and once you've done that, you can manage your corporation every week from the same place.
 <br><br>
 __Shares__
-Buying shares from the corporation or issuing new shares will create new shares in the corporation. If you buy them yourself, cash will be transferred from you to the corporation in return for the shares; if the shares are sold money will come into the corporation from the market. Selling your shares or buying publicly held shares are both transactions between you and your shares and shareholders and their shares. All these transactions impact the stock price; experiment to find a plan that will give you and your corporation the best outcome.
+Buying shares from the corporation or issuing new shares will create new shares in the corporation. If you buy them yourself, cash will be transferred from you to the corporation in return for the shares; if you direct the corporation to issue new public shares, money will come into the corporation from the market. If you direct the corporation to buy back shares from the public, cash will be transferred from the corporation to reduce the number of public shares, which will increase your ownership percentage. You are not permitted to give up majority ownership of the corporation. Selling your shares or buying publicly held shares are both transactions between you and your shares and shareholders and their shares. All transactions impact the stock price; experiment to find a plan that will give you and your corporation the best outcome.
 <br><br>
 __Assets__
-All assets are mostly valuable as assets; they drive up the value of your corporation and thus its stock price, and they all produce a small amount of profit every week. Slave assets generate the most inherent profit. Both entrapment and conflict zone capture assets create more slave assets; drug, training, and surgical assets improve the slave assets you already have.
+All assets are mostly valuable as assets; they drive up the value of your corporation and thus its stock price, and they all produce a small amount of profit every week. Slave assets generate the most inherent profit. Both entrapment and conflict zone capture assets create more slave assets; drug, training, and surgical assets - in sufficient quantity - improve the slave assets you already have. Each week, all assets held by the corporation (including cash) will diminish to represent the costs of doing business. Slave assets are exempt from this, but their value is tied to the overall slave market. To maximize profits and offset the corporation's costs, it is advisable to sell some highly-priced assets each week and re-invest the proceeds in lower-priced assets. If all asset prices are low, it may be prudent to sell some slave assets and invest more in capture and/or entrapment assets or in training and medical assets. When other asset prices are high, slaves assets may be your best option.
 <br><br>
 __Slave Sales__
 Once a corporation is created, it will get its own establishment in the slave market. Stockholders are offered discounts on its slaves, which increase with the size of the owner's share in the corporation. As the corporation's assets increase, it can be given direction about what kind of slaves it should train and how it should train them, which will affect the slaves seen in the corporate catalog. Each asset type allows three choices:
@@ -300,7 +300,8 @@ Once a corporation is created, it will get its own establishment in the slave ma
 &nbsp;&nbsp;&nbsp;&nbsp;Training: Language, education, and skills.
 &nbsp;&nbsp;&nbsp;&nbsp;Surgical: Cosmetic surgeries, implants, and extreme surgeries.
 &nbsp;&nbsp;&nbsp;&nbsp;Pharmacological: Hormones, expansion, and extreme expansion.
-These decisions remain available until settled, but cannot be changed once made. If the corporation's slaves have qualities that make them especially appealing to an arcology's citizens, the corporation will enjoy increased profits, and the [[future society|Encyclopedia][$encyclopedia = "Future Societies"]] creating the demand will progress more rapidly due to the supply of appealing slaves. All arcologies present in the Free City will interact with the corporation this way, making shares in a corporation which supplies girls that appeal to the whole city extremely lucrative.
+<br><br>
+If the corporation's slaves have qualities that make them especially appealing to an arcology's citizens, the corporation will enjoy increased profits, and the [[future society|Encyclopedia][$encyclopedia = "Future Societies"]] creating the demand will progress more rapidly due to the supply of appealing slaves. All arcologies present in the Free City will interact with the corporation this way, making shares in a corporation which supplies girls that appeal to the whole city extremely lucrative.
 
 
 <<case "Sexual Energy">>
@@ -2611,6 +2612,8 @@ __I do not give credit without explicit permission to do so.__ If you have contr
 <br>''Ansopedi'' for slave career skills.
 <br>''Emuis'' for various compiler tweaks
 <br>''anon'' for continued tweaks to various economy formulas.
+<br>''anon'' for master slaving's multi slave training.
+<br>''Faraen'' for a full vector art variant.
 <br>''Bane70'' optimized huge swaths of code with notable professionalism.
 <br>''Circle Tritagonist'' provided several new collars and outfits.
 <br>''Qotsafan'' submitted bugfixes.
@@ -2785,7 +2788,7 @@ An additional prostate implant designed to hyperstimulate one's prostate and sto
 <<case "FCTV">>
 Free Cities TV, or ''FCTV'' as it is more commonly called, is a very popular streaming video service. A venture started not long after the first Free Cities were founded, it took advantage of the new lack of regulatory oversight to create and host content that had long been banned in the old world. Under the guidance of 8HGG Inc., FCTV has developed into a popular mixed-mode service, with a variety of live streaming channels as well as a large selection of readystream content ranging from hyper porn to contemporary broadcast series shows.
 <br><br>The successful service is largely supported by a combination of subscription and advertising revenue, and to a smaller extent on-demand content payments. Though still targeted at free citizens--or their slaves in the case of for-slave content--FCTV has become very popular in the old world. A combination of the service's eroticism, extreme content, and high production value has given it extraordinary popularity. Savvy execs at 8HGG and arcology owners alike have realized the benefits of exposing the old world populations to FCTV content, and a carefully-curated selection of content is kept available to old-worlders thanks to revenue from advertisements supporting immigration and voluntary enslavement. The content selection has a glamorized and often romanticized view of slavery, and typically displays common citizens and slaves alike living in opulence beyond the realm of posibility for most old-worlders.
-<br><br>FCTV has always worked closely with the Free Cities, developing a large network of sponsors and partnerships for content protection. This has increased the breadth of content and popularity of FCTV, while allowing the ruling class to encourage content supporting their vision of the future. While you can access non-citizen FCTV content from just about anywhere, an archology needs it's own [[receiver|Encyclopedia][$encyclopedia to "FCTVReceiver"]] to access citizen-only content. This measure of content protection does add extra expense, but nearly eliminating the risk of old-worlders seeing uncurated content is viewed as being worth the expense by most arcology owners.
+<br><br>FCTV has always worked closely with the Free Cities, developing a large network of sponsors and partnerships for content protection. This has increased the breadth of content and popularity of FCTV, while allowing the ruling class to encourage content supporting their vision of the future. While you can access non-citizen FCTV content from just about anywhere, an arcology needs its own [[receiver|Encyclopedia][$encyclopedia to "FCTVReceiver"]] to access citizen-only content. This measure of content protection does add extra expense, but nearly eliminating the risk of old-worlders seeing uncurated content is viewed as being worth the expense by most arcology owners.
 
 <<case "FCTVReceiver">>
 While nearly indistinguishable from a standard satellite antenna, the satellite dish used to receive FCTV-Citizen content is special because of the unique FCTV Receiver. Utilizing the latest in matched-pair quantum encryption, it is the only device capable of decrypting and encrypting your arcology-specific FCTV content communication. Simple additions to your arcology's existing fiberoptics extend the [[FCTV|Encyclopedia][$encyclopedia to "FCTV"]] network to your citizens. In exchange for bearing the cost of the encrypted network, arcology owners get a certain level of control over available content for cultural purposes, and also discounted rates for local advertisement.
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index bf581fe719cbf66e2d6d4af2f098a73fa2de43ba..7894f7fc803ac6e4ef96163dc97901adb21a0fc5 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -10,6 +10,9 @@
 <<set setup.filterRaces = ["Amerindian", "Asian", "Black", "Indo-Aryan", "Latina", "Malay", "Middle Eastern", "Pacific Islander", "Semitic", "Southern European", "White"]>>
 <<set setup.filterRegions = ["Africa", "Asia", "Australia", "Europe", "Middle East", "North America", "South America"]>>
 
+/* sizes for broodmothers - easier than trying to sum it week to week */
+<<set setup.broodSizeOne = [0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 30, 80, 180, 340, 600, 990, 1540, 2300, 3300, 4590, 6210, 8200, 10600, 13440, 16770, 20620, 25020, 30020, 35660, 42000, 49100, 57030, 65900, 75700, 86300, 97720, 109970, 123060, 137000]>>
+
 /* START Custom Nationalities region filter */
 <<set setup.northamericaNationalities = ["American", "Mexican", "Dominican", "Canadian", "Haitian", "Cuban", "Puerto Rican", "Jamaican", "Guatemalan", "Bermudian", "Greenlandic", "Belizean", "Grenadian", "Honduran", "Costa Rican", "Salvadoran", "Nicaraguan", "Panamanian"]>>
 
diff --git a/src/js/economyJS.tw b/src/js/economyJS.tw
index d51c4faf8f83feb84cf6e11d99ad7869174ec9c1..6a49f2af96229a2b1a2865ebd658af0f4d7dfd80 100644
--- a/src/js/economyJS.tw
+++ b/src/js/economyJS.tw
@@ -590,6 +590,11 @@ window.getSlaveCost = function(s) {
 	return cost;
 };
 
+window.menialSlaveCost = function() {
+	var df = State.variables.menialDemandFactor;
+	return random(998,1001) + Math.trunc(Math.sign(df) * Math.sqrt(1 - Math.exp(-1*Math.pow(df/500, 2)*(4/Math.PI + 0.140012 * Math.pow(df/500, 2))/(1 + 0.140012 * Math.pow(df/500, 2))))*150); /* https://en.wikipedia.org/wiki/Error_function */
+};
+
 window.getSlaveStatisticData = function(s, facility) {
 	if(!s || !facility) {
 		// Base data, even without facility
diff --git a/src/js/eventSelectionJS.tw b/src/js/eventSelectionJS.tw
index 7e00948138927bcf42701293d3438967baac9f38..d64d3644280c3b8a5ed4ce3f7294a242b679d0b7 100644
--- a/src/js/eventSelectionJS.tw
+++ b/src/js/eventSelectionJS.tw
@@ -1250,15 +1250,17 @@ if(eventSlave.fetish != "mindbroken") {
 			}
 		}
 
-		if(isFertile(eventSlave)) {
-			if(eventSlave.devotion > 50) {
-				if(State.variables.PC.dick != 0) {
-					if(eventSlave.fetish == "pregnancy" || eventSlave.energy > 95) {
-						if(eventSlave.eggType == "human") {
-							if(eventSlave.fetishKnown == 1) {
-								if(eventSlave.vagina != 0) {
-									if(eventSlave.anus > 0) {
-										State.variables.RESSevent.push("impregnation please");
+		if(State.variables.seePreg != 0) {
+			if(isFertile(eventSlave)) {
+				if(eventSlave.devotion > 50) {
+					if(State.variables.PC.dick != 0) {
+						if(eventSlave.fetish == "pregnancy" || eventSlave.energy > 95) {
+							if(eventSlave.eggType == "human") {
+								if(eventSlave.fetishKnown == 1) {
+									if(eventSlave.vagina != 0) {
+										if(eventSlave.anus > 0) {
+											State.variables.RESSevent.push("impregnation please");
+										}
 									}
 								}
 							}
@@ -1660,8 +1662,10 @@ if(eventSlave.fetish != "mindbroken") {
 		}
 	}
 
-	if(eventSlave.bellyPreg >= 10000) {
-		State.variables.RESSevent.push("hugely pregnant");
+	if(State.variables.seePreg != 0) {
+		if(eventSlave.bellyPreg >= 10000) {
+			State.variables.RESSevent.push("hugely pregnant");
+		}
 	}
 
 	if(eventSlave.hormoneBalance >= 50) {
@@ -1747,7 +1751,7 @@ if(eventSlave.fetish != "mindbroken") {
 				}
 
 				if(eventSlave.bellyPreg >= 14000) {
-					if(eventSlave.pregType < 50) {
+					if(eventSlave.broodmother == 0) {
 						if(eventSlave.births > 10) {
 							if(eventSlave.assignment == "whore" || eventSlave.assignment == "serve the public") {
 								if(eventSlave.amp != 1) {
diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw
index 3c8f71e2741f652fe1187fcafc490afa9519f1d4..14bfa7fad449326f10f267a1716bfc05406f702b 100644
--- a/src/js/storyJS.tw
+++ b/src/js/storyJS.tw
@@ -1093,6 +1093,11 @@ window.repGainSacrifice = function(slave, arcology) {
 			* arcology.FSAztecRevivalist / 100 / ((State.variables.slavesSacrificedThisWeek || 0) + 1));
 };
 
+window.bodyguardSuccessorEligible = function(slave) {
+	if(!slave) { return false; }
+	return (slave.devotion > 50 && slave.muscles >= 0 && slave.weight < 100 && slave.boobs < 8000 && slave.butt < 10 && slave.belly < 5000 && slave.balls < 10 && slave.dick < 10 && slave.preg < 20 && slave.fuckdoll == 0 && slave.fetish != "mindbroken" && canWalk(slave));
+};
+
 window.ngUpdateGenePool = function(genePool) {
   var transferredSlaveIds = (SugarCube.State.variables.slaves || [])
     .filter(function(s) { return s.ID >= 1200000; })
diff --git a/src/npc/agent/agentRetrieve.tw b/src/npc/agent/agentRetrieve.tw
index 05cdece601de93832fd3f35449c931c77d636e95..86ff349b873f17f78e8d1fc611617ad157f675ac 100644
--- a/src/npc/agent/agentRetrieve.tw
+++ b/src/npc/agent/agentRetrieve.tw
@@ -1,39 +1,12 @@
 :: Agent Retrieve [silently]
 
-<<set _SL = $slaves.length, _ID = $activeArcology.leaderID, _LL = $leaders.length>>
+<<set _ID = $activeArcology.leaderID>>
 
-<<for _i = 0; _i < _SL; _i++>>
-	<<if $slaves[_i].ID == _ID>>
-		<<if $slaves[_i].relationshipTarget > 0>>
-			<<for _j = 0; _j < _SL; _j++>>
-				<<if $slaves[_j].ID == $slaves[_i].relationshipTarget && $slaves[_j].assignment == "live with your agent">>
-					<<if $slaves[$j].preg > 40>>
-						<<set $slaves[$j].birthsTotal += $slaves[$j].pregType, $slaves[$j].preg = 0, $slaves[$j].pregSource = 0, $slaves[$j].pregType = 0>>
-						<<set $slaves[$j].pregKnown = 0>>
-						<<SetBellySize $slaves[$j]>>
-					<</if>>
-					<<removeJob $slaves[_j] "live with your agent">>
-					<<break>>
-				<</if>>
-			<</for>>
-			<<if $slaves[$i].preg > 40>>
-				<<set $slaves[$i].birthsTotal += $slaves[$i].pregType, $slaves[$i].preg = 0, $slaves[$i].pregSource = 0, $slaves[$i].pregType = 0>>
-				<<set $slaves[$i].pregKnown = 0>>
-				<<SetBellySize $slaves[$i]>>
-			<</if>>
-		<</if>>
-		<<removeJob $slaves[_i] "be your agent">>
-		<<break>>
-	<</if>>
-<</for>>
+<<set _i = $slaves.findIndex(function(s) { return s.ID == _ID; })>>
+<<if _i != -1>>
+	<<removeJob $slaves[_i] "be your agent">>
+<</if>>
 
 <<set $activeArcology.leaderID = 0, $activeArcology.government = "your trustees">>
 
-<<for _i = 0;_i < _LL;_i++>>
-	<<if _ID == $leaders[_i].ID>>
-		<<set _dump = $leaders.deleteAt(_i)>>
-		<<break>>
-	<</if>>
-<</for>>
-
 <<goto "Neighbor Interact">>
diff --git a/src/npc/agent/agentWorkaround.tw b/src/npc/agent/agentWorkaround.tw
index 8d38e5cdb45b8327bf5f498a287d6abe81c078c6..c90c342ac768ff45fe9105e62bd4026fa57f7689 100644
--- a/src/npc/agent/agentWorkaround.tw
+++ b/src/npc/agent/agentWorkaround.tw
@@ -29,7 +29,7 @@
 	<<set $slaves[$i].relationship = 0, $slaves[$i].relationshipTarget = 0>>
 <</if>>
 
-<<set $leaders.push($slaves[$i]), $activeArcology.leaderID = _ID, $activeArcology.government = "your agent">>
+<<set $activeArcology.leaderID = _ID, $activeArcology.government = "your agent">>
 
 <<SlaveTitle $slaves[$i]>>
 
diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw
index ba56a986d5bd11dbe3c17ad8749962e708a515bd..8ef49c7a44235abbaf02eafa633673bab48065ea 100644
--- a/src/npc/databases/dSlavesDatabase.tw
+++ b/src/npc/databases/dSlavesDatabase.tw
@@ -470,9 +470,11 @@
 <<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestigeDesc = "She was once a rising free cities politician who argued for compulsory female enslavement, but she became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, _HS.health = 60, _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.nationality = "French", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.skin = "tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 15, _HS.entertainSkill = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -2, _HS.intelligenceImplant = 1, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.customTat = "She has a tattoo down her left arm, which reads = 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.customDesc = "Since becoming a slave she has been turned into a little bimbo.">>
 <<set $heroSlaves.push(_HS)>>
 
+<<if $seePreg != 0>>
 <<set _HS = {}>>
 <<set _HS.slaveName = "'Milkmaid' Megan", _HS.birthName = "Megan", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 34, _HS.physicalAge = 34, _HS.visualAge = 34, _HS.ovaryAge = 34, _HS.health = 100, _HS.devotion = 100, _HS.nationality = "American", _HS.skin = "lightened", _HS.hStyle = "long", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 1350, _HS.lactation = 1, _HS.butt = 3, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.preg = 27, _HS.pregWeek = 27, _HS.pregKnown = 1, _HS.belly = 5000, _HS.bellyPreg = 5000, _HS.births = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 100, _HS.entertainSkill = 35, _HS.combatSkill = 0, _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
+<</if>>
 
 <<set _HS = {}>>
 <<set _HS.slaveName = "Horsepussy", _HS.birthName = "Amber", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 35, _HS.physicalAge = 35, _HS.visualAge = 35, _HS.ovaryAge = 35, _HS.health = 80, _HS.devotion = 55.7, _HS.height = 190, _HS.nationality = "American", _HS.eyeColor = "blue", _HS.skin = "pale", _HS.hLength = 10, _HS.pubicHStyle = "waxed", _HS.boobs = 500, _HS.butt = 5, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 3, _HS.clitSetting = "vanilla", _HS.anus = 3, _HS.ovaries = 1, _HS.anusPiercing = 1, _HS.makeup = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 100, _HS.entertainSkill = 35, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 3, _HS.intelligenceImplant = 1, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.customTat = "Her nickname, 'Horsepussy,' is tattooed on her forehead.", _HS.customDesc = "Her pussy has been extensively surgically altered. Her labia are large and puffy, sticking out nearly an inch from her crotch. Her cunt is exquisitely pink at the center, but her large labia are dark at the edges, almost black.">>
@@ -528,9 +530,11 @@
 <<set $heroSlaves.push(_HS)>>
 /* not much to change, lowered weight (‘perfect slim body’), set to mute and changed flaw to odd- described as creepy */
 
+<<if $seePreg != 0>>
 <<set _HS = {}>>
 <<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "She sold herself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, _HS.health = 80, _HS.devotion = 100, _HS.weight = 40, _HS.race = "surgically altered to look latina", _HS.eyeColor = "blue", _HS.hColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.amp = 1, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.births = 2, _HS.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -2, _HS.intelligenceImplant = 1, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
+<</if>>
 
 <<set _HS = {}>>
 <<set _HS.slaveName = "'DoL Toy' Allie", _HS.birthName = "Aliana", _HS.origin = "She is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 33, _HS.physicalAge = 33, _HS.visualAge = 33, _HS.ovaryAge = 33, _HS.health = 80, _HS.devotion = 65, _HS.height = 155, _HS.nationality = "Mexican", _HS.race = "latina", _HS.hColor = "raven black with red highlights", _HS.skin = "light brown", _HS.hLength = 10, _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 700, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.bellyAccessory = "an extreme corset", _HS.clitPiercing = 3, _HS.clitSetting = "submissive", _HS.anus = 2, _HS.ovaries = 1, _HS.stampTat = "degradation", _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 35, _HS.entertainSkill = 15, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 1, _HS.intelligenceImplant = 1, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.customTat = "Her left butt cheek is tattooed with a small shield bearing the words 'Daughter of Liberty' with a large red 'not' symbol added over it.">>
diff --git a/src/npc/exportSlave.tw b/src/npc/exportSlave.tw
index d4e4cf31270b29837111645436abd0bf07369199..645b139599f52c95f2a300f64092a1041f0a6de5 100644
--- a/src/npc/exportSlave.tw
+++ b/src/npc/exportSlave.tw
@@ -8,7 +8,7 @@
 
 <<if (ndef $activeSlave.currentRules) || ($activeSlave.currentRules.length < 1)>><<set _currentRules = "[]">><<else>><<set _currentRules = "$activeSlave.currentRules">><</if>>
 
-slaveName: "$activeSlave.slaveName", slaveSurname: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", birthSurname: "$activeSlave.birthSurname", genes: "$activeSlave.genes", weekAcquired: 1, origin: "$activeSlave.origin", career: "$activeSlave.career", ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: $activeSlave.birthWeek, age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: $activeSlave.corsetPiercing, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples",  nipplesPiercing: $activeSlave.nipplesPiercing, areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: $activeSlave.lactationAdaptation, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: $activeSlave.pregType, labor: $activeSlave.labor, births: $activeSlave.births, cSec: $activeSlave.cSec, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: $activeSlave.foreskin, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: $activeSlave.scrotum, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: "$activeSlave.brand", brandLocation: "$activeSlave.brandLocation", earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: $activeSlave.fuckdoll, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, need: 0, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", customImage: 0, currentRules: _currentRules, actualAge: $activeSlave.actualAge, visualAge: $activeSlave.visualAge, physicalAge: $activeSlave.physicalAge, bellyTat: "$activeSlave.bellyTat", induce: 0, mpreg: $activeSlave.mpreg, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: $activeSlave.pregKnown, belly: $activeSlave.belly, bellyPreg: $activeSlave.bellyPreg, bellyFluid: $activeSlave.bellyFluid, bellyImplant: $activeSlave.bellyImplant, bellySag: $activeSlave.bellySag, bellySagPreg: $activeSlave.bellySagPreg, bellyPain: 0, cervixImplant: $activeSlave.cervixImplant, birthsTotal: $activeSlave.birthsTotal, pubertyXX: $activeSlave.pubertyXX, pubertyAgeXX: $activeSlave.pubertyAgeXX, pubertyXY: $activeSlave.pubertyXY, pubertyAgeXY: $activeSlave.pubertyAgeXY, scars: $activeSlave.scars, breedingMark: 0, underArmHStyle: "waxed", underArmHColor: "$activeSlave.underArmHColor", bodySwap: $activeSlave.bodySwap, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, HGExclude: 0, ballType: "$activeSlave.ballType", eggType: "$activeSlave.eggType", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: $activeSlave.ageAdjust, bald: $activeSlave.bald, origBodyOwner: "", death: "", hormoneBalance: $activeSlave.hormoneBalance, vasectomy: $activeSlave.vasectomy, ovaryAge: $activeSlave.ovaryAge, haircuts: $activeSlave.haircuts, newGamePlus: 1, skillHG: $activeSlave.skillHG, skillRC: $activeSlave.skillRC, skillBG: $activeSlave.skillBG, skillMD: $activeSlave.skillMD, skillDJ: $activeSlave.skillDJ, skillNU: $activeSlave.skillNU, skillTE: $activeSlave.skillTE, skillAT: $activeSlave.skillAT, skillST: $activeSlave.skillST, skillMM: $activeSlave.skillMM, skillWA: $activeSlave.skillWA
+slaveName: "$activeSlave.slaveName", slaveSurname: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", birthSurname: "$activeSlave.birthSurname", genes: "$activeSlave.genes", weekAcquired: 1, origin: "$activeSlave.origin", career: "$activeSlave.career", ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: $activeSlave.birthWeek, age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: $activeSlave.corsetPiercing, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples", nipplesPiercing: $activeSlave.nipplesPiercing, nipplesAccessory: "$activeSlave.nipplesAccessory", areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: $activeSlave.lactationAdaptation, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: $activeSlave.pregType, broodmother: $activeSlave.broodmother, labor: $activeSlave.labor, births: $activeSlave.births, cSec: $activeSlave.cSec, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: $activeSlave.foreskin, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: $activeSlave.scrotum, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: "$activeSlave.brand", brandLocation: "$activeSlave.brandLocation", earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: $activeSlave.fuckdoll, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, need: 0, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", customImage: 0, currentRules: _currentRules, actualAge: $activeSlave.actualAge, visualAge: $activeSlave.visualAge, physicalAge: $activeSlave.physicalAge, bellyTat: "$activeSlave.bellyTat", induce: 0, mpreg: $activeSlave.mpreg, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: $activeSlave.pregKnown, belly: $activeSlave.belly, bellyPreg: $activeSlave.bellyPreg, bellyFluid: $activeSlave.bellyFluid, bellyImplant: $activeSlave.bellyImplant, bellySag: $activeSlave.bellySag, bellySagPreg: $activeSlave.bellySagPreg, bellyPain: 0, cervixImplant: $activeSlave.cervixImplant, birthsTotal: $activeSlave.birthsTotal, pubertyXX: $activeSlave.pubertyXX, pubertyAgeXX: $activeSlave.pubertyAgeXX, pubertyXY: $activeSlave.pubertyXY, pubertyAgeXY: $activeSlave.pubertyAgeXY, scars: $activeSlave.scars, breedingMark: 0, underArmHStyle: "waxed", underArmHColor: "$activeSlave.underArmHColor", bodySwap: $activeSlave.bodySwap, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, HGExclude: 0, ballType: "$activeSlave.ballType", eggType: "$activeSlave.eggType", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: $activeSlave.ageAdjust, bald: $activeSlave.bald, origBodyOwner: "", death: "", hormoneBalance: $activeSlave.hormoneBalance, vasectomy: $activeSlave.vasectomy, ovaryAge: $activeSlave.ovaryAge, haircuts: $activeSlave.haircuts, newGamePlus: 1, skillHG: $activeSlave.skillHG, skillRC: $activeSlave.skillRC, skillBG: $activeSlave.skillBG, skillMD: $activeSlave.skillMD, skillDJ: $activeSlave.skillDJ, skillNU: $activeSlave.skillNU, skillTE: $activeSlave.skillTE, skillAT: $activeSlave.skillAT, skillST: $activeSlave.skillST, skillMM: $activeSlave.skillMM, skillWA: $activeSlave.skillWA
 
 <br><br><br> __Direct JSON export method__: <br><br>
 
diff --git a/src/npc/fAbuse.tw b/src/npc/fAbuse.tw
index 1c3868e099a4f3665028a9b578dd2bcce1ff6ad4..c182e7ec784fb81cc10afbf0bd466105648a6856 100644
--- a/src/npc/fAbuse.tw
+++ b/src/npc/fAbuse.tw
@@ -24,8 +24,8 @@
 	You set her helpless form down for abuse. Brutalizing her is almost childishly easy; her limbless torso leaves her at your mercy.
 <<else>>
 	You call her over so you can abuse the <<if $seeRace == 1>>$activeSlave.race <</if>>bitch. You get things started with an open-handed slap across the face<<if !canSee($activeSlave)>>; she never saw it coming<</if>>. As she reels in shock and pain, you follow up with
-	<<if ($activeSlave.preg > 30) && ($activeSlave.pregType >= 20)>>
-		a vicious slap across her straining pregnant belly,
+	<<if $activeSlave.bellyPreg >= 600000>>
+		a vicious slap across her straining pregnancy,
 	<<elseif ($activeSlave.bellyFluid > 2000)>>
 		a vicious punch into her bloated belly,
 	<<elseif ($activeSlave.dick > 0)>>
@@ -36,7 +36,7 @@
 		a vicious jerk on her big nipples,
 	<<elseif ($activeSlave.nipples == "inverted")>>
 		a vicious pinch to each side of her sensitive, fully inverted nipples,
-	<<elseif ($activeSlave.preg > 30) && ($activeSlave.pregType >= 10)>>
+	<<elseif $activeSlave.bellyPreg >= 100000>>
 		a vicious slap across her overfull pregnant belly,
 	<<elseif ($activeSlave.preg > 10)>>
 		a vicious slap across her pregnant belly,
@@ -243,11 +243,11 @@ from your victim.
 <<elseif ($activeSlave.vagina == 0)>>
 	The bitch's still a virgin and you don't mean to take that now, but you torture her with the threat of raping her virgin pussy for a while before settling for her gagging throat
 	<<set $activeSlave.oralCount++, $oralTotal++>>
-<<elseif ($activeSlave.preg > 30) && ($activeSlave.pregType >= 20)>>
-	The bitch is on the brink of bursting, so hard intercourse will be painful and terrifying to her.  You thrust hard into her causing her taut belly to bulge and making her children squirm within her straining womb.  You brutally fuck her as she pleads for you to stop until your at your edge.  More cum won't make the bitch more pregnant, but you cum inside her anyway
+<<elseif $activeSlave.bellyPreg >= 600000>>
+	The bitch is on the brink of bursting, so hard intercourse will be painful and terrifying to her. You thrust hard into her causing her taut belly to bulge and making her children squirm within her straining womb.<<if ($PC.vagina == 1) && ($PC.dick == 1)>> Fortunately for her, this gets you so wet that some of your pussyjuice makes it down onto your shaft and serves as improvised lube.<</if>> You brutally fuck her as she pleads for you to stop until your at your edge. More cum won't make the bitch more pregnant, but you cum inside her anyway
 	<<VaginalVCheck>>
-<<elseif ($activeSlave.preg > 30) && ($activeSlave.pregType >= 10)>>
-	The bitch is hugely pregnant, so hard intercourse will be uncomfortable and worrying for her. You have hard intercourse. She sobs as you rock the huge weight of her belly back and forth without mercy, forcing her already straining belly to bulge further, and whines as she feels your cockhead batter her womb. More cum won't make the bitch more pregnant, but you cum inside her anyway
+<<elseif $activeSlave.bellyPreg >= 120000>>
+	The bitch is hugely pregnant, so hard intercourse will be uncomfortable and worrying for her. You have hard intercourse. She sobs as you rock the huge weight of her belly back and forth without mercy, forcing her already straining belly to bulge further, and whines as she feels your cockhead batter her womb.<<if ($PC.vagina == 1) && ($PC.dick == 1)>> Fortunately for her, this gets you so wet that some of your pussyjuice makes it down onto your shaft and serves as improvised lube.<</if>> More cum won't make the bitch more pregnant, but you cum inside her anyway
 	<<VaginalVCheck>>
 <<elseif ($activeSlave.preg > 20)>>
 	The bitch is pregnant, so hard intercourse will be uncomfortable and even worrying for her. You have hard intercourse. She sobs as you saw the huge weight of her belly back and forth without mercy, and whines as she feels your cockhead batter her womb.<<if ($PC.vagina == 1) && ($PC.dick == 1)>> Fortunately for her, this gets you so wet that some of your pussyjuice makes it down onto your shaft and serves as improvised lube.<</if>> More cum won't make the bitch more pregnant, but you cum inside her anyway
@@ -293,8 +293,8 @@ Even though she's in a somewhat bad shape, she still jumps back to her feet and
 <</if>>
 <</if>>
 
-<<if ($activeSlave.preg > 30) && ($activeSlave.pregType >= 20)>>
-	The rough fucking was @@.red;very unhealthy@@ for her huge pregnancy.
+<<if $activeSlave.bellyPreg >= 600000>>
+	The rough fucking was @@.red;very unhealthy@@ for her massive pregnancy.
 	<<set $activeSlave.health -= 40>>
 <</if>>
 
diff --git a/src/npc/removeActiveSlave.tw b/src/npc/removeActiveSlave.tw
index 619aa0270428c4d93a3b95056fcc85a51c71ce7d..91ed24b3bebe8bfe3bfad949ea5b2996640f2e0d 100644
--- a/src/npc/removeActiveSlave.tw
+++ b/src/npc/removeActiveSlave.tw
@@ -92,13 +92,19 @@
 		<<set $Lurcher = 0>>
 	<</if>>
 
-	<<if _ID == $personalAttention>>
-		<<if $PC.career == "escort">>
-			<<set $personalAttention = "whoring">>
-		<<elseif $PC.career == "servant">>
-			<<set $personalAttention = "upkeep">>
-		<<else>>
-			<<set $personalAttention = "business">>
+	<<if Array.isArray($personalAttention)>>
+		<<set _rasi = $personalAttention.findIndex(function(s) { return s.ID == _ID; })>>
+		<<if _rasi != -1>>
+			<<set $personalAttention.deleteAt(_rasi)>>
+			<<if $personalAttention.length == 0>>
+				<<if $PC.career == "escort">>
+					<<set $personalAttention = "whoring">>
+				<<elseif $PC.career == "servant">>
+					<<set $personalAttention = "upkeep">>
+				<<else>>
+					<<set $personalAttention = "business">>
+				<</if>>
+			<</if>>
 		<</if>>
 	<</if>>
 
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 1c0ae85eae0ad7a427d3f901e2eec34b7ca852b0..1f50366f554b7d3f0a3340ad967bc63dc98321e7 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -922,6 +922,7 @@ Her nationality is $activeSlave.nationality.
 <<link "Normal">><<set $activeSlave.vaginaLube = 1>><<replace "#wetness">>Normal.<</replace>><<StartingGirlsCost>><</link>> |
 <<link "Excessive">><<set $activeSlave.vaginaLube = 2>><<replace "#wetness">>Excessive.<</replace>><<StartingGirlsCost>><</link>>
 
+<<if $seePreg != 0>>
 <br>''Pregnancy:''
 <span id="preg">
 <<if $activeSlave.preg > 39>>Ready to drop.
@@ -956,6 +957,7 @@ Her nationality is $activeSlave.nationality.
 	<<link "Carrying my child">><<set $activeSlave.pregSource = -1>><<StartingGirlsCost>><<replace "#father">>My child.<</replace>><</link>> | <<link "Clear">><<set $activeSlave.pregSource = 0>><<replace "#father">><</replace>><<StartingGirlsCost>><</link>>
 <</if>>
 <</if>>
+<</if>>
 </span>
 
 <span id="dickblock">
@@ -1198,6 +1200,12 @@ Her nationality is $activeSlave.nationality.
 		<<set $activeSlave.fetish = "masochist", $activeSlave.fetishKnown = 1>>
 		<<ToggleFetish 1>>
 	<</link>>
+	<<if $seeExtreme == 1>>
+		| <<link "Mindbroken">>
+			<<set $activeSlave.fetish = "mindbroken", $activeSlave.fetishKnown = 1, $activeSlave.sexualFlaw = "none", $activeSlave.behavioralFlaw = "none", $activeSlave.sexualQuirk = "none", $activeSlave.sexualFlaw = "none">>
+			<<ToggleFetish 1>>
+		<</link>>
+	<</if>>
 
 <<if $activeSlave.fetish != "none">>
 <br>
diff --git a/src/npc/uploadSlave.tw b/src/npc/uploadSlave.tw
index a17758c85d21ba742affac0fc3851877427317fe..be1d6941d1e4cbfa8c2a5eb9a53ebd1e7f38db81 100644
--- a/src/npc/uploadSlave.tw
+++ b/src/npc/uploadSlave.tw
@@ -76,6 +76,7 @@ boobsImplantType: $activeSlave.boobsImplantType,
 boobShape: "normal",
 nipples: "$activeSlave.nipples",
 nipplesPiercing: $activeSlave.nipplesPiercing,
+nipplesAccessory: $activeSlave.nipplesAccessory,
 areolae: $activeSlave.areolae,
 areolaePiercing: $activeSlave.areolaePiercing,
 boobsTat: "$activeSlave.boobsTat",
@@ -104,23 +105,24 @@ vaginaPiercing: $activeSlave.vaginaPiercing,
 vaginaTat: "$activeSlave.vaginaTat",
 preg: $activeSlave.preg,
 pregSource: 0,
-pregType: 0,
-labor: 0,
+pregType: $activeSlave.pregType,
+broodmother: $activeSlave.broodmother,
+labor: $activeSlave.labor,
 births: $activeSlave.births,
-cSec: 0,
+cSec: $activeSlave.cSec,
 bellyAccessory: "none",
 labia: $activeSlave.labia,
 clit: $activeSlave.clit,
 clitPiercing: $activeSlave.clitPiercing,
 clitSetting: "$activeSlave.clitSetting",
-foreskin: 0,
+foreskin: $activeSlave.foreskin,
 anus: $activeSlave.anus,
 dick: $activeSlave.dick,
-analArea: 1,
+analArea: $activeSlave.analArea,
 dickPiercing: $activeSlave.dickPiercing,
 dickTat: "$activeSlave.dickTat",
 balls: $activeSlave.balls,
-scrotum: 0,
+scrotum: $activeSlave.scrotum,
 ovaries: $activeSlave.ovaries,
 anusPiercing: $activeSlave.anusPiercing,
 anusTat: "$activeSlave.anusTat",
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
index bb68baba1c755ebffc64102c3ada5c335ffe9de6..ae0532b47490471fc5b3b621481f527730a0829b 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
@@ -1,164 +1,27 @@
 :: JobFulfillmentCenterDelivery [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $showEncyclopedia = 1, $encyclopedia = "Enslaving People", $JobFulfillmentCenterSlaveOrdered = 0>>
-
-<<if $customSlave.age == 4>>
-	<<set $activeSlaveOneTimeMinAge = 3>>
-	<<set $activeSlaveOneTimeMaxAge = 4>>
-<<elseif $customSlave.age == 6>>
-	<<set $activeSlaveOneTimeMinAge = 5>>
-	<<set $activeSlaveOneTimeMaxAge = 6>>
-<<elseif $customSlave.age == 9>>
-	<<set $activeSlaveOneTimeMinAge = 7>>
-	<<set $activeSlaveOneTimeMaxAge = 9>>
-<<elseif $customSlave.age == 12>>
-	<<set $activeSlaveOneTimeMinAge = 10>>
-	<<set $activeSlaveOneTimeMaxAge = 12>>
-<<elseif $customSlave.age == 14>>
-	<<set $activeSlaveOneTimeMinAge = 13>>
-	<<set $activeSlaveOneTimeMaxAge = 14>>
-<<elseif $customSlave.age == 17>>
-	<<set $activeSlaveOneTimeMinAge = 15>>
-	<<set $activeSlaveOneTimeMaxAge = 17>>
-<<elseif $customSlave.age == 19>>
-	<<set $activeSlaveOneTimeMinAge = 18>>
-	<<set $activeSlaveOneTimeMaxAge = 19>>
-<<elseif $customSlave.age == 29>>
-	<<set $activeSlaveOneTimeMinAge = 20>>
-	<<set $activeSlaveOneTimeMaxAge = 29>>
-<<elseif $customSlave.age == 39>>
-	<<set $activeSlaveOneTimeMinAge = 30>>
-	<<set $activeSlaveOneTimeMaxAge = 39>>
-<<else>>
-	<<set $activeSlaveOneTimeMinAge = 40>>
-	<<set $activeSlaveOneTimeMaxAge = $retirementAge-1>>
-<</if>>
-<<set $one_time_age_overrides_pedo_mode = 1>>
-<<set $fixedNationality = $customSlave.nationality>>
-<<if $customSlave.sex == 2>>
-	<<include "Generate XY Slave">>
-	<<set $activeSlave.dick = $customSlave.dick>>
-	<<set $activeSlave.balls = $customSlave.balls>>
-	<<set $activeSlave.scrotum = $activeSlave.balls>>
-	<<set $activeSlave.foreskin = $activeSlave.dick>>
-<<else>>
-	<<include "Generate XX Slave">>
-	<<if $customSlave.virgin == 0>>
-		<<set $activeSlave.vagina = $customSlave.virgin>>
-	<</if>>
-	<<set $activeSlave.labia = $customSlave.labia>>
-	<<set $activeSlave.vaginaLube = $customSlave.vaginaLube>>
-	<<set $activeSlave.vaginalSkill = $customSlave.skills>>
-	<<if $customSlave.sex == 3>>
-		<<set $activeSlave.dick = $customSlave.dick>>
-		<<set $activeSlave.balls = $customSlave.balls>>
-		<<set $activeSlave.scrotum = $activeSlave.balls>>
-		<<set $activeSlave.foreskin = $activeSlave.dick>>
-		<<if $activeSlave.dick == 0>>
-			<<set $activeSlave.clit = $customSlave.clit>>
-			<<set $activeSlave.foreskin = $activeSlave.clit>>
-		<</if>>
-	<<else>>
-		<<set $activeSlave.clit = $customSlave.clit>>
-	<</if>>
-<</if>>
-<<set $fixedNationality = 0>>
-
-/* I have no clue what I'm doing here */
-<<if $customSlave.heightMod == "greatly below average">>
-	<<set $activeSlave.height = Math.round(Height.random($activeSlave, {skew: -5, spread: .2, limitMult: [-5, -2]}))>>
-<<elseif $customSlave.heightMod == "below average">>
-	<<set $activeSlave.height = Math.round(Height.random($activeSlave, {skew: -1, limitMult: [-2, 0]}))>>
-<<elseif $customSlave.heightMod == "normal">>
-	<<set $activeSlave.height = Math.round(Height.random($activeSlave, {limitMult: [-1, 1]}))>>
-<<elseif $customSlave.heightMod == "above average">>
-	<<set $activeSlave.height = Math.round(Height.random($activeSlave, {skew: 1, limitMult: [0, 2]}))>>
-<<else>>
-	<<set $activeSlave.height = Math.round(Height.random($activeSlave, {skew: 5, spread: .2, limitMult: [2, 5]}))>>
-<</if>>
-
-<<if $customSlave.analVirgin == 0>>
-	<<set $activeSlave.anus = $customSlave.analVirgin>>
-<</if>>
-<<set $activeSlave.health = $customSlave.health>>
-<<set $activeSlave.muscles = $customSlave.muscles>>
-<<set $activeSlave.weight = $customSlave.weight>>
-<<set $activeSlave.face = $customSlave.face>>
-<<set $activeSlave.lips = $customSlave.lips>>
-<<set $activeSlave.race = $customSlave.race>>
-<<set $activeSlave.skin = $customSlave.skin>>
-<<set $activeSlave.boobs = $customSlave.boobs>>
-<<set $activeSlave.butt = $customSlave.butt>>
-<<set $activeSlave.analSkill = $customSlave.skills>>
-<<set $activeSlave.oralSkill = $customSlave.skills>>
-<<set $activeSlave.entertainSkill = $customSlave.whoreSkills>>
-<<set $activeSlave.whoreSkill = $customSlave.whoreSkills>>
-<<set $activeSlave.combatSkill = $customSlave.combatSkills>>
-<<set $activeSlave.intelligence = $customSlave.intelligence>>
-<<set $activeSlave.intelligenceImplant = $customSlave.intelligenceImplant>>
-<<set $activeSlave.eyes = $customSlave.eyes>>
-<<set $activeSlave.amp = $customSlave.amp>>
-<<set $activeSlave.weekAcquired = $week>>
-<<set $activeSlave.origin = "You purchased her by special order.">>
-<<set $activeSlave.career = "a slave">>
-<<set $activeSlave.sexualFlaw = either("none")>>
-<<set $activeSlave.behavioralFlaw = either("none")>>
-<<set $activeSlave.devotion = random(-10,10)>>
-<<set $activeSlave.trust = random(-10,10)>>
-
-<<if $activeSlave.race == "black">>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("black", "brown", "light brown")>><</if>>
-	<<set $activeSlave.hColor = either("black", "black", "black", "brown")>>
-	<<set $activeSlave.hStyle = either("shoulder-length", "short", "very short", "shaved bald", "crinkled")>>
-<<elseif $activeSlave.race == "white">>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("pale", "tanned", "fair")>><</if>>
-	<<set $activeSlave.eyeColor = either("blue", "brown", "green")>>
-	<<set $activeSlave.hColor = either("black", "blonde", "red", "brown")>>
-	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
-<<elseif $activeSlave.race == "latina">>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("olive", "brown", "light brown", "tanned", "fair")>><</if>>
-	<<set $activeSlave.hColor = either("black", "black", "brown", "brown")>>
-	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
-<<elseif $activeSlave.race == "asian">>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("pale", "dark", "light")>><</if>>
-	<<set $activeSlave.hColor = either("black")>>
-	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
-<<elseif ($activeSlave.race == "indo-aryan") || ($activeSlave.race == "malay") || ($activeSlave.race == "pacific islander") || ($activeSlave.race == "amerindian")>>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("pale", "dark", "light")>><</if>>
-	<<set $activeSlave.hColor = either("black")>>
-	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
-<<elseif ($activeSlave.race == "middle eastern") || ($activeSlave.race == "semitic") || ($activeSlave.race == "southern european")>>
-	<<if $customSlave.skin == 0>><<set $activeSlave.skin = either("pale", "dark", "light")>><</if>>
-	<<set $activeSlave.hColor = either("black")>>
-	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
-<</if>>
+<<set $JFCOrder = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $showEncyclopedia = 1, $encyclopedia = "Enslaving People">>
 
+<<JFCSlave>>
 <<slaveCost $activeSlave>>
 <<set $slaveCost = $slaveCost*2>>
 
-A slave dealer has submitted a slave to satisfy the order you posted.
-
-<br><br>
-
-//As usual, the asking price is quite high, to cover the costs of finding a slave to order. In compensation, you can freely decline the slave and keep the order open, or even modify it later.//
-
-<br><br>
-
-<<set $saleDescription = 1, $applyLaw = 0>><<include "Long Slave Description">>
+A slave dealer has submitted a slave to satisfy your ''$Role'' order.
 
-<br><br>
+<br><br>//As usual, the asking price is quite high, to cover the costs of training a proper <<print $Role>>. In compensation, you can freely decline the slave should she not meet your standards or the job has already been filled.//
 
-Her price is <<print cashFormat($slaveCost)>>.
+<br><br><<set $saleDescription = 1, $applyLaw = 0>><<include "Long Slave Description">>
 
-<br><br>
+<br><br>Her price is <<print cashFormat($slaveCost)>>.
 
-<span id="result">
+<br><br><span id="result">
 <<if $cash >= $slaveCost>>
 	<<link "Accept the offered slave">>
 		<<set $cash -= $slaveCost>>
 		<<replace "#result">>
-			She has been reasonably broken by the dealer that offered her to you. She has also picked up on the fact that she was specially selected, and is a little hopeful that this means she may be treated well. She is now awaiting your instructions.
+			She has been very well trained by the dealer that offered her to you. She has also picked up on the fact that she was specially selected, and is a little hopeful that this means she may be treated well. She is now eagerly awaiting your instructions.
 			<<include "New Slave Intro">>
+			<<set $Role = "">>
 		<</replace>>
 	<</link>>
 <<else>>
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw
new file mode 100644
index 0000000000000000000000000000000000000000..7db7ae580f7492f06959db96732b647bc61606c4
--- /dev/null
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw
@@ -0,0 +1,67 @@
+:: JobFulfillmentCenterOrder [nobr]
+
+<<set $nextButton = "Back", $nextLink = "Buy Slaves", $returnTo = "Buy Slaves", $showEncyclopedia = 1, $encyclopedia = "Kidnapped Slaves">>
+
+<<if $JFCOrder == 0>>You work up a new slave order for posting where slave merchants can work to fulfill it.<</if>> <<if $JFCOrder == 1>>You review your posted slave order for a ''$Role''.<</if>> <<if $assistant == 1>>As you work, $assistantName makes lewd comments about what she looks forward to doing to this new slave.<</if>> 
+
+<<if $JFCOrder == 0>>
+	<span id="JobType">
+	<br><br>
+	<<if ($LieutenantColonel == 0 && $FacilitySupport == 1) || ($Wardeness == 0 && $cellblock == 1) || $Bodyguard == 0>>
+		<<link "Security">>
+		<<replace "#JobType">>
+			<<if $LieutenantColonel == 0 && $FacilitySupport == 1>>
+				<br>[[Lieutenant Colonel|Main][$JFCOrder = 1, $Role = "Lieutenant Colonel"]]
+			<</if>>
+			<<if $Bodyguard == 0>>
+				<br>[[Bodyguard|Main][$JFCOrder = 1, $Role = "Bodyguard"]]
+			<</if>>
+			<<if $Wardeness == 0 && $cellblock == 1>>
+				<br>[[Wardeness|Main][$JFCOrder = 1, $Role = "Wardeness"]]
+			<</if>>
+		<</replace>>
+		<</link>>
+	<</if>>
+	<<if $HeadGirl == 0 || ($Schoolteacher == 0 && $schoolroom > 0) || ($Nurse == 0 && $clinic > 0) || $Attendant == 0 && $spa > 0 || ($Stewardess == 0 && $servantsQuarters > 0) || ($Milkmaid == 0 && $dairy > 0)>>
+		<br><<link "Management">>
+		<<replace "#JobType">>
+			<<if $HeadGirl == 0>>
+				<br>[[Headgirl|Main][$JFCOrder = 1, $Role = "Headgirl"]]
+			<</if>>
+			<<if $Schoolteacher == 0 && $schoolroom > 0>>
+				<br>[[Teacher|Main][$JFCOrder = 1, $Role = "Teacher"]]
+			<</if>>
+			<<if $Nurse == 0 && $clinic > 0>>
+				<br>[[Nurse|Main][$JFCOrder = 1, $Role = "Nurse"]]
+			<</if>>
+			<<if $Attendant == 0 && $spa > 0>>
+				<br>[[Attendant (normal)|Main][$JFCOrder = 1, $Role = "Attendant"]] | [[Attendant (motherly)|Main][$JFCOrder = 1, $Role = "Motherly Attendant"]]
+			<</if>>
+			<<if $Stewardess == 0 && $servantsQuarters > 0>>
+				<br>[[Stewardess|Main][$JFCOrder = 1, $Role = "Stewardess"]]
+			<</if>>
+			<<if $Milkmaid == 0 && $dairy > 0>>
+				<br>[[Milkmaid|Main][$JFCOrder = 1, $Role = "Milkmaid"]]
+			<</if>>
+		<</replace>>
+		<</link>>
+	<</if>>
+	<<if ($DJ == 0 && $club > 0) || ($Madam == 0 && $brothel > 0) || ($Lurcher == 0 && $CoursingAssociation == 1) || ($Concubine == 0 && $masterSuite > 0)>>
+		<br><<link "Entertain">>
+		<<replace "#JobType">>
+			<<if $DJ == 0 && $club > 0>>
+				<br>[[DJ|Main][$JFCOrder = 1, $Role = "DJ"]]
+			<</if>>
+			<<if $Madam == 0 && $brothel > 0>>
+				<br>[[Madam|Main][$JFCOrder = 1, $Role = "Madam"]]
+			<</if>>
+			<<if $Concubine == 0 && $masterSuite > 0>>
+				<br>[[Concubine|Main][$JFCOrder = 1, $Role = "Concubine"]]
+			<</if>>
+		<</replace>>
+		<</link>>
+	<</if>>
+	</span>
+<<else>>
+	[[Withdraw slave order|JobFulfillmentCenterOrder][$JFCOrder = 0, $Role = ""]]
+<</if>>
\ No newline at end of file
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterSlaveOrder.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterSlaveOrder.tw
deleted file mode 100644
index 08dffdf89ec459cbfb9d928866a6f437743f5ace..0000000000000000000000000000000000000000
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterSlaveOrder.tw
+++ /dev/null
@@ -1,882 +0,0 @@
-:: JobFulfillmentCenterSlave [nobr]
-
-<<set $nextButton = "Back", $nextLink = "Buy Slaves", $returnTo = "Buy Slaves", $showEncyclopedia = 1, $encyclopedia = "Kidnapped Slaves">>
-
-<<if $JobFulfillmentCenterSlaveOrdered == 0>>You work up a new slave order for posting where slave merchants can work to fulfill it.<<else>>You review your posted slave order.<</if>> <<if $assistant == 1>>As you work, $assistantName makes lewd comments about what she looks forward to doing to this new slave. <</if>>Your order requests a slave with the following characteristics:
-
-<br><br>
-
-<span id = "age">
-<<if $JobFulfillmentCenterSlave.age < 5>>3-4 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 7>>5-6 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 10>>7-9 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 13>>10-12 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 15>>13-14 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 18>>15-17 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 20>>18-19 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 30>>20-29 years old.
-<<elseif $JobFulfillmentCenterSlave.age < 40>>30-39 years old.
-<<else>>40+ years old.
-<</if>>
-</span>
-<<if $minimumSlaveAge <= 3>>
-<<link "3-4">>
-	<<set $JobFulfillmentCenterSlave.age = 4>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<if $minimumSlaveAge <= 5>>
-<<link "5-6">>
-	<<set $JobFulfillmentCenterSlave.age = 6>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<if $minimumSlaveAge <= 7>>
-<<link "7-9">>
-	<<set $JobFulfillmentCenterSlave.age = 9>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<if $minimumSlaveAge <= 10>>
-<<link "10-12">>
-	<<set $JobFulfillmentCenterSlave.age = 12>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<if $minimumSlaveAge <= 13>>
-<<link "13-14">>
-	<<set $JobFulfillmentCenterSlave.age = 14>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<if $minimumSlaveAge <= 15>>
-<<link "15-17">>
-	<<set $JobFulfillmentCenterSlave.age = 17>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<</if>>
-<<link "18-19">>
-	<<set $JobFulfillmentCenterSlave.age = 19>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<<link "20-29">>
-	<<set $JobFulfillmentCenterSlave.age = 29>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<<link "30-39">>
-	<<set $JobFulfillmentCenterSlave.age = 39>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-|
-<<link "40+">>
-	<<set $JobFulfillmentCenterSlave.age = 42>>
-	<<JobFulfillmentCenterSlaveAge>>
-<</link>>
-
-<br>
-
-<span id = "health">
-<<if $JobFulfillmentCenterSlave.health == 0>>Healthy.
-<<else>>Extremely healthy.
-<</if>>
-</span>
-<<link "Healthy">>
-	<<set $JobFulfillmentCenterSlave.health = 0>>
-	<<JobFulfillmentCenterSlaveHealth>>
-<</link>>
-|
-<<link "Extremely healthy">>
-	<<set $JobFulfillmentCenterSlave.health = 80>>
-	<<JobFulfillmentCenterSlaveHealth>>
-<</link>>
-
-<br>
-
-<span id = "muscles">
-<<if $JobFulfillmentCenterSlave.muscles <= 5>>Normal musculature.
-<<elseif $JobFulfillmentCenterSlave.muscles <= 30>>Toned.
-<<else>>Ripped.
-<</if>>
-</span>
-<<link "Normal">>
-	<<set $JobFulfillmentCenterSlave.muscles = 0>>
-	<<JobFulfillmentCenterSlaveMuscles>>
-<</link>>
-|
-<<link "Toned">>
-	<<set $JobFulfillmentCenterSlave.muscles = 20>>
-	<<JobFulfillmentCenterSlaveMuscles>>
-<</link>>
-|
-<<link "Ripped">>
-	<<set $JobFulfillmentCenterSlave.muscles = 50>>
-	<<JobFulfillmentCenterSlaveMuscles>>
-<</link>>
-
-<br>
-
-<span id = "lips">
-<<if $JobFulfillmentCenterSlave.lips == 15>>Normal lips.
-<<elseif $JobFulfillmentCenterSlave.lips == 35>>Plush lips.
-<</if>>
-</span>
-<<link "Normal">>
-	<<set $JobFulfillmentCenterSlave.lips = 15>>
-	<<JobFulfillmentCenterSlaveLips>>
-<</link>>
-|
-<<link "Plush">>
-	<<set $JobFulfillmentCenterSlave.lips = 35>>
-	<<JobFulfillmentCenterSlaveLips>>
-<</link>>
-
-<br>
-
-<span id = "voice">
-<<if $JobFulfillmentCenterSlave.voice == 3>>high, girly.
-<<elseif $JobFulfillmentCenterSlave.voice == 2>>feminine.
-<<elseif $JobFulfillmentCenterSlave.voice == 1>>deep.
-<<elseif $JobFulfillmentCenterSlave.voice == 0>>mute.
-<</if>>
-</span>
-<<link "high, girly">>
-	<<set $JobFulfillmentCenterSlave.voice = 3>>
-	<<JobFulfillmentCenterSlaveVoice>>
-<</link>>
-|
-<<link "feminine">>
-	<<set $JobFulfillmentCenterSlave.voice = 2>>
-	<<JobFulfillmentCenterSlaveVoice>>
-<</link>>
-|
-<<link "deep">>
-	<<set $JobFulfillmentCenterSlave.voice = 1>>
-	<<JobFulfillmentCenterSlaveVoice>>
-<</link>>
-|
-<<link "mute">>
-	<<set $JobFulfillmentCenterSlave.voice = 0>>
-	<<JobFulfillmentCenterSlaveVoice>>
-<</link>>
-
-<br>
-
-<span id = "height">
-<<if $JobFulfillmentCenterSlave.heightMod == "greatly below average">>Petite.
-<<elseif $JobFulfillmentCenterSlave.heightMod == "below average">>Short.
-<<elseif $JobFulfillmentCenterSlave.heightMod == "normal">>Average height.
-<<elseif $JobFulfillmentCenterSlave.heightMod == "above average">>Tall.
-<<else>>Very tall.
-<</if>>
-</span>
-<<link "Petite">>
-	<<set $JobFulfillmentCenterSlave.heightMod = "greatly below average">>
-	<<JobFulfillmentCenterSlaveHeight>>
-<</link>>
-|
-<<link "Short">>
-	<<set $JobFulfillmentCenterSlave.heightMod = "below average">>
-	<<JobFulfillmentCenterSlaveHeight>>
-<</link>>
-|
-<<link "Average height">>
-	<<set $JobFulfillmentCenterSlave.heightMod = "normal">>
-	<<JobFulfillmentCenterSlaveHeight>>
-<</link>>
-|
-<<link "Tall">>
-	<<set $JobFulfillmentCenterSlave.heightMod = "above average">>
-	<<JobFulfillmentCenterSlaveHeight>>
-<</link>>
-|
-<<link "Very tall">>
-	<<set $JobFulfillmentCenterSlave.heightMod = "greatly above average">>
-	<<JobFulfillmentCenterSlaveHeight>>
-<</link>>
-
-<br>
-
-<span id = "weight">
-<<if $JobFulfillmentCenterSlave.weight == -50>>Very thin.
-<<elseif $JobFulfillmentCenterSlave.weight == -15>>thin.
-<<elseif $JobFulfillmentCenterSlave.weight == 0>>Average weight.
-<<elseif $JobFulfillmentCenterSlave.weight == 15>>Chubby.
-<<elseif $JobFulfillmentCenterSlave.weight == 50>>Plump.
-<<elseif $JobFulfillmentCenterSlave.weight == 100>>Fat.
-<<elseif $JobFulfillmentCenterSlave.weight == 150>>Very Fat.
-<<else>>Immobile.
-<</if>>
-</span>
-<<link "Very thin">>
-	<<set $JobFulfillmentCenterSlave.weight = -50>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Thin">>
-	<<set $JobFulfillmentCenterSlave.weight = -15>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Average">>
-	<<set $JobFulfillmentCenterSlave.weight = 0>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Chubby">>
-	<<set $JobFulfillmentCenterSlave.weight = 15>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Plump">>
-	<<set $JobFulfillmentCenterSlave.weight = 50>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Fat">>
-	<<set $JobFulfillmentCenterSlave.weight = 100>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Very Fat">>
-	<<set $JobFulfillmentCenterSlave.weight = 150>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-|
-<<link "Immobile">>
-	<<set $JobFulfillmentCenterSlave.weight = 200>>
-	<<JobFulfillmentCenterSlaveWeight>>
-<</link>>
-
-<br>
-
-<span id = "face">
-<<if $JobFulfillmentCenterSlave.face < -40>>Very unattractive face.
-<<elseif $JobFulfillmentCenterSlave.face < -10>>Unattractive face.
-<<elseif $JobFulfillmentCenterSlave.face <= 10>>Average face.
-<<elseif $JobFulfillmentCenterSlave.face <= 40>>Attractive face.
-<<else>>Very attractive face.
-<</if>>
-</span>
-<<link "Very unattractive">>
-	<<set $JobFulfillmentCenterSlave.face = -55>>
-	<<JobFulfillmentCenterSlaveFace>>
-<</link>>
-|
-<<link "Unattractive">>
-	<<set $JobFulfillmentCenterSlave.face = -15>>
-	<<JobFulfillmentCenterSlaveFace>>
-<</link>>
-|
-<<link "Average">>
-	<<set $JobFulfillmentCenterSlave.face = 0>>
-	<<JobFulfillmentCenterSlaveFace>>
-<</link>>
-|
-<<link "Attractive">>
-	<<set $JobFulfillmentCenterSlave.face = 15>>
-	<<JobFulfillmentCenterSlaveFace>>
-<</link>>
-|
-<<link "Very attractive">>
-	<<set $JobFulfillmentCenterSlave.face = 55>>
-	<<JobFulfillmentCenterSlaveFace>>
-<</link>>
-
-<br>
-
-<span id = "ethnicity">
-<<textbox "$JobFulfillmentCenterSlave.race" $JobFulfillmentCenterSlave.race "JobFulfillmentCenter Slave">>
-</span>
-<<link "White">>
-	<<set $JobFulfillmentCenterSlave.race = "white">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Asian">>
-	<<set $JobFulfillmentCenterSlave.race = "asian">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Latina">>
-	<<set $JobFulfillmentCenterSlave.race = "latina">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Middle Eastern">>
-	<<set $JobFulfillmentCenterSlave.race = "middle eastern">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Black">>
-	<<set $JobFulfillmentCenterSlave.race = "black">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Semitic">>
-	<<set $JobFulfillmentCenterSlave.race = "semitic">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Southern European">>
-	<<set $JobFulfillmentCenterSlave.race = "southern european">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Indo-aryan">>
-	<<set $JobFulfillmentCenterSlave.race = "indo-aryan">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Amerindian">>
-	<<set $JobFulfillmentCenterSlave.race = "amerindian">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Pacific Islander">>
-	<<set $JobFulfillmentCenterSlave.race = "pacific islander">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Malay">>
-	<<set $JobFulfillmentCenterSlave.race = "malay">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-|
-<<link "Mixed race">>
-	<<set $JobFulfillmentCenterSlave.race = "mixed race">>
-	<<JobFulfillmentCenterSlaveRace>>
-<</link>>
-
-<br>
-
-<span id = "skin">
-<<textbox "$JobFulfillmentCenterSlave.skin" $JobFulfillmentCenterSlave.skin "JobFulfillmentCenter Slave">>
-</span>
-<<link "White">>
-	<<set $JobFulfillmentCenterSlave.skin = "white">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Black">>
-	<<set $JobFulfillmentCenterSlave.skin = "black">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Tanned">>
-	<<set $JobFulfillmentCenterSlave.skin = "tanned">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Fair">>
-	<<set $JobFulfillmentCenterSlave.skin = "fair">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Light brown">>
-	<<set $JobFulfillmentCenterSlave.skin = "light brown">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Brown">>
-	<<set $JobFulfillmentCenterSlave.skin = "brown">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Dark">>
-	<<set $JobFulfillmentCenterSlave.skin = "dark">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Light">>
-	<<set $JobFulfillmentCenterSlave.skin = "light">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Olive">>
-	<<set $JobFulfillmentCenterSlave.skin = "olive">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Pale">>
-	<<set $JobFulfillmentCenterSlave.skin = "pale">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Extremely pale">>
-	<<set $JobFulfillmentCenterSlave.skin = "extremely pale">>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-|
-<<link "Left natural">>
-	<<set $JobFulfillmentCenterSlave.skin = 0>>
-	<<JobFulfillmentCenterSlaveSkin>>
-<</link>>
-
-<br>
-
-<span id = "boobs">
-<<if $JobFulfillmentCenterSlave.boobs == 200>>Flat chest.
-<<elseif $JobFulfillmentCenterSlave.boobs <= 500>>Healthy breasts.
-<<elseif $JobFulfillmentCenterSlave.boobs <= 800>>Big breasts.
-<<elseif $JobFulfillmentCenterSlave.boobs <= 1400>>Huge breasts.
-<<elseif $JobFulfillmentCenterSlave.boobs <= 2100>>Giant breasts.
-<<else>>Massive breasts.
-<</if>>
-</span>
-<<link "Flat">>
-	<<set $JobFulfillmentCenterSlave.boobs = 200>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-|
-<<link "Healthy">>
-	<<set $JobFulfillmentCenterSlave.boobs = 500>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-|
-<<link "Big">>
-	<<set $JobFulfillmentCenterSlave.boobs = 800>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-|
-<<link "Huge">>
-	<<set $JobFulfillmentCenterSlave.boobs = 1400>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-|
-<<link "Giant">>
-	<<set $JobFulfillmentCenterSlave.boobs = 2100>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-|
-<<link "Massive">>
-	<<set $JobFulfillmentCenterSlave.boobs = 6000>>
-	<<JobFulfillmentCenterSlaveBoobs>>
-<</link>>
-
-<br>
-
-<span id = "butt">
-<<if $JobFulfillmentCenterSlave.butt == 1>>Flat buttocks.
-<<elseif $JobFulfillmentCenterSlave.butt < 4>>Healthy buttocks.
-<<elseif $JobFulfillmentCenterSlave.butt < 6>>Huge buttocks.
-<<else>>Massive buttocks.
-<</if>>
-</span>
-<<link "Flat">>
-	<<set $JobFulfillmentCenterSlave.butt = 1>>
-	<<JobFulfillmentCenterSlaveButt>>
-<</link>>
-|
-<<link "Healthy">>
-	<<set $JobFulfillmentCenterSlave.butt = 3>>
-	<<JobFulfillmentCenterSlaveButt>>
-<</link>>
-|
-<<link "Huge">>
-	<<set $JobFulfillmentCenterSlave.butt = 5>>
-	<<JobFulfillmentCenterSlaveButt>>
-<</link>>
-|
-<<link "Massive">>
-	<<set $JobFulfillmentCenterSlave.butt = 8>>
-	<<JobFulfillmentCenterSlaveButt>>
-<</link>>
-
-<br>
-
-<span id = "sex">
-<<if $JobFulfillmentCenterSlave.sex == 1>>Female (cock & balls options not applied).
-<<elseif $JobFulfillmentCenterSlave.sex == 2>>Male (pussy options not applied).
-<<else>>Futanari (clit options not applied).
-<</if>>
-</span>
-<<link "Female">>
-	<<set $JobFulfillmentCenterSlave.sex = 1>>
-	<<JobFulfillmentCenterSlaveSex>>
-<</link>>
-|
-<<link "Male">>
-	<<set $JobFulfillmentCenterSlave.sex = 2>>
-	<<JobFulfillmentCenterSlaveSex>>
-<</link>>
-|
-<<link "Both">>
-	<<set $JobFulfillmentCenterSlave.sex = 3>>
-	<<JobFulfillmentCenterSlaveSex>>
-<</link>>
-
-<br>
-
-<span id = "virgin">
-<<if $JobFulfillmentCenterSlave.virgin == 0>>Vaginal virgin.
-<<else>>Virginity not important.
-<</if>>
-</span>
-<<link "Vaginal virgin">>
-	<<set $JobFulfillmentCenterSlave.virgin = 0>>
-	<<JobFulfillmentCenterSlaveVirgin>>
-<</link>>
-|
-<<link "Not Important">>
-	<<set $JobFulfillmentCenterSlave.virgin = 1>>
-	<<JobFulfillmentCenterSlaveVirgin>>
-<</link>>
-
-<br>
-
-<span id = "dick">
-<<if $JobFulfillmentCenterSlave.dick == 0>>No penis.
-<<elseif $JobFulfillmentCenterSlave.dick == 2>>Small penis.
-<<else>>Large penis.
-<</if>>
-</span>
-<<link "No penis">>
-	<<set $JobFulfillmentCenterSlave.dick = 0>>
-	<<JobFulfillmentCenterSlaveDick>>
-<</link>>
-|
-<<link "Small penis">>
-	<<set $JobFulfillmentCenterSlave.dick = 2>>
-	<<JobFulfillmentCenterSlaveDick>>
-<</link>>
-|
-<<link "Large penis">>
-	<<set $JobFulfillmentCenterSlave.dick = 4>>
-	<<JobFulfillmentCenterSlaveDick>>
-<</link>>
-
-<br>
-
-<span id = "balls">
-<<if $JobFulfillmentCenterSlave.balls == 0>>No testicles.
-<<elseif $JobFulfillmentCenterSlave.balls == 2>>Small testicles.
-<<elseif $JobFulfillmentCenterSlave.balls == 4>>Large testicles.
-<<else>>Huge Balls.
-<</if>>
-</span>
-<<link "No testicles">>
-	<<set $JobFulfillmentCenterSlave.balls = 0>>
-	<<JobFulfillmentCenterSlaveBalls>>
-<</link>>
-|
-<<link "Small testicles">>
-	<<set $JobFulfillmentCenterSlave.balls = 2>>
-	<<JobFulfillmentCenterSlaveBalls>>
-<</link>>
-|
-<<link "Large testicles">>
-	<<set $JobFulfillmentCenterSlave.balls = 4>>
-	<<JobFulfillmentCenterSlaveBalls>>
-<</link>>
-|
-<<link "huge testicles">>
-	<<set $JobFulfillmentCenterSlave.balls = 6>>
-	<<JobFulfillmentCenterSlaveBalls>>
-<</link>>
-
-<br>
-
-<span id = "clit">
-<<if $JobFulfillmentCenterSlave.clit == 0>>Normal clitoris.
-<<elseif $JobFulfillmentCenterSlave.clit == 1>>Big clitoris.
-<<elseif $JobFulfillmentCenterSlave.clit == 3>>Enormous clitoris.
-<<else>>Pseudophallus.
-<</if>>
-</span>
-<<link "Normal clitoris">>
-	<<set $JobFulfillmentCenterSlave.clit = 0>>
-	<<JobFulfillmentCenterSlaveClit>>
-<</link>>
-|
-<<link "Big clitoris">>
-	<<set $JobFulfillmentCenterSlave.clit = 1>>
-	<<JobFulfillmentCenterSlaveClit>>
-<</link>>
-|
-<<link "Enormous clitoris">>
-	<<set $JobFulfillmentCenterSlave.clit = 3>>
-	<<JobFulfillmentCenterSlaveClit>>
-<</link>>
-|
-<<link "Clit dick">>
-	<<set $JobFulfillmentCenterSlave.clit = 5>>
-	<<JobFulfillmentCenterSlaveClit>>
-<</link>>
-
-<br>
-
-<span id = "labia">
-<<if $JobFulfillmentCenterSlave.labia == 0>>Normal labia.
-<<elseif $JobFulfillmentCenterSlave.labia == 1>>big labia.
-<<elseif $JobFulfillmentCenterSlave.labia == 2>>Huge labia.
-<<else>>Enormous labia.
-<</if>>
-</span>
-<<link "Normal labia">>
-	<<set $JobFulfillmentCenterSlave.labia = 0>>
-	<<JobFulfillmentCenterSlaveLabia>>
-<</link>>
-|
-<<link "Big labia">>
-	<<set $JobFulfillmentCenterSlave.labia = 1>>
-	<<JobFulfillmentCenterSlaveLabia>>
-<</link>>
-|
-<<link "Huge labia">>
-	<<set $JobFulfillmentCenterSlave.labia = 2>>
-	<<JobFulfillmentCenterSlaveLabia>>
-<</link>>
-|
-<<link "Enormous labia">>
-	<<set $JobFulfillmentCenterSlave.labia = 3>>
-	<<JobFulfillmentCenterSlaveLabia>>
-<</link>>
-
-<br>
-
-<span id = "lube">
-<<if $JobFulfillmentCenterSlave.vaginaLube == 0>>Dry Vagina.
-<<elseif $JobFulfillmentCenterSlave.vaginaLube == 1>>Wet Vagina.
-<<else>>Sopping wet vagina.
-<</if>>
-</span>
-<<link "Dry vagina">>
-	<<set $JobFulfillmentCenterSlave.vaginaLube = 0>>
-	<<JobFulfillmentCenterSlaveLube>>
-<</link>>
-|
-<<link "Wet vagina">>
-	<<set $JobFulfillmentCenterSlave.vaginaLube = 1>>
-	<<JobFulfillmentCenterSlaveLube>>
-<</link>>
-|
-<<link "Sopping wet vagina">>
-	<<set $JobFulfillmentCenterSlave.vaginaLube = 2>>
-	<<JobFulfillmentCenterSlaveLube>>
-<</link>>
-
-<br>
-
-<span id = "anus">
-<<if $JobFulfillmentCenterSlave.analVirgin == 0>>Anal virgin.
-<<else>>Anal virginity is not important.
-<</if>>
-</span>
-<<link "Anal virgin">>
-	<<set $JobFulfillmentCenterSlave.analVirgin = 0>>
-	<<JobFulfillmentCenterSlaveAnalVirginity>>
-<</link>>
-|
-<<link "Anal virginity is not important">>
-	<<set $JobFulfillmentCenterSlave.analVirgin = 1>>
-	<<JobFulfillmentCenterSlaveAnalVirginity>>
-<</link>>
-
-<br>
-
-<span id = "skills">
-<<if $JobFulfillmentCenterSlave.skills <= 10>>Sexually unskilled.
-<<elseif $JobFulfillmentCenterSlave.skills <= 15>>Basic sex skills.
-<<else>>Sexually skilled.
-<</if>>
-</span>
-<<link "Unskilled">>
-	<<set $JobFulfillmentCenterSlave.skills = 0>>
-	<<JobFulfillmentCenterSlaveSkills>>
-<</link>>
-|
-<<link "Skilled">>
-	<<set $JobFulfillmentCenterSlave.skills = 15>>
-	<<JobFulfillmentCenterSlaveSkills>>
-<</link>>
-|
-<<link "Expert">>
-	<<set $JobFulfillmentCenterSlave.skills = 35>>
-	<<JobFulfillmentCenterSlaveSkills>>
-<</link>>
-
-<br>
-
-<span id = "whoreskills">
-<<if $JobFulfillmentCenterSlave.whoreSkills <= 10>>Unskilled at prostitution and entertainment.
-<<elseif $JobFulfillmentCenterSlave.whoreSkills <= 15>>Basic skills at prostitution and entertainment.
-<<else>>Skilled at prostitution and entertainment.
-<</if>>
-</span>
-<<link "Unskilled">>
-	<<set $JobFulfillmentCenterSlave.whoreSkills = 0>>
-	<<JobFulfillmentCenterSlaveWhoreSkills>>
-<</link>>
-|
-<<link "Skilled">>
-	<<set $JobFulfillmentCenterSlave.whoreSkills = 15>>
-	<<JobFulfillmentCenterSlaveWhoreSkills>>
-<</link>>
-|
-<<link "Expert">>
-	<<set $JobFulfillmentCenterSlave.whoreSkills = 35>>
-	<<JobFulfillmentCenterSlaveWhoreSkills>>
-<</link>>
-
-<br>
-
-<span id = "combatskills">
-<<if $JobFulfillmentCenterSlave.combatSkills == 0>>Unskilled at combat.
-<<else>>Skilled at combat.
-<</if>>
-</span>
-<<link "Unskilled">>
-	<<set $JobFulfillmentCenterSlave.combatSkills = 0>>
-	<<JobFulfillmentCenterSlaveCombatSkills>>
-<</link>>
-|
-<<link "Skilled">>
-	<<set $JobFulfillmentCenterSlave.combatSkills = 1>>
-	<<JobFulfillmentCenterSlaveCombatSkills>>
-<</link>>
-
-<br>
-
-<span id = "intelligence">
-<<if $JobFulfillmentCenterSlave.intelligence >= 3>>Brilliant.
-<<elseif $JobFulfillmentCenterSlave.intelligence == 2>>Very smart..
-<<elseif $JobFulfillmentCenterSlave.intelligence == 1>>Smart.
-<<elseif $JobFulfillmentCenterSlave.intelligence == 0>>Average intelligence.
-<<elseif $JobFulfillmentCenterSlave.intelligence == -1>>Stupid.
-<<elseif $JobFulfillmentCenterSlave.intelligence == -2>>Very stupid.
-<<else>>Moronic.
-<</if>>
-</span>
-<<link "Brilliant">>
-	<<set $JobFulfillmentCenterSlave.intelligence = 3>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Very smart">>
-	<<set $JobFulfillmentCenterSlave.intelligence = 2>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Smart">>
-	<<set $JobFulfillmentCenterSlave.intelligence = 1>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Average intelligence">>
-	<<set $JobFulfillmentCenterSlave.intelligence = 0>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Stupid">>
-	<<set $JobFulfillmentCenterSlave.intelligence = -1>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Very stupid">>
-	<<set $JobFulfillmentCenterSlave.intelligence = -2>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-|
-<<link "Moronic">>
-	<<set $JobFulfillmentCenterSlave.intelligence = -3>>
-	<<JobFulfillmentCenterSlaveIntelligence>>
-<</link>>
-
-<br>
-
-<span id = "education">
-<<if $JobFulfillmentCenterSlave.intelligenceImplant == 1>>Educated.
-<<else>>Uneducated.
-<</if>>
-</span>
-<<link "Educated">>
-	<<set $JobFulfillmentCenterSlave.intelligenceImplant = 1>>
-	<<JobFulfillmentCenterSlaveEducation>>
-<</link>>
-|
-<<link "Uneducated">>
-	<<set $JobFulfillmentCenterSlave.intelligenceImplant = 0>>
-	<<JobFulfillmentCenterSlaveEducation>>
-<</link>>
-
-<br>
-
-<span id = "eyes">
-<<if $JobFulfillmentCenterSlave.eyes == 1>>Normal vision.
-<<elseif $JobFulfillmentCenterSlave.eyes == -1>>Nearsighted.
-<<else>>Blind.
-<</if>>
-</span>
-<<link "Normal Vision">>
-	<<set $JobFulfillmentCenterSlave.eyes = 1>>
-	<<JobFulfillmentCenterSlaveEyes>>
-<</link>>
-|
-<<link "Nearsighted">>
-	<<set $JobFulfillmentCenterSlave.eyes = -1>>
-	<<JobFulfillmentCenterSlaveEyes>>
-<</link>>
-|
-<<link "Blind">>
-	<<set $JobFulfillmentCenterSlave.eyes = -2>>
-	<<JobFulfillmentCenterSlaveEyes>>
-<</link>>
-
-<br>
-
-<span id = "amputation">
-<<if $JobFulfillmentCenterSlave.amp == 1>>Limbless.
-<<else>>Limbed.
-<</if>>
-</span>
-<<link "Limbless">>
-	<<set $JobFulfillmentCenterSlave.amp = 1>>
-	<<JobFulfillmentCenterSlaveAmp>>
-<</link>>
-|
-<<link "Limbed">>
-	<<set $JobFulfillmentCenterSlave.amp = 0>>
-	<<JobFulfillmentCenterSlaveAmp>>
-<</link>>
-
-<br>
-
-<span id = "nationality">
-Nationality: $JobFulfillmentCenterSlave.nationality.
-</span>
-<<for _i = 0; _i < setup.baseNationalities.length; _i++>>
-<<set _nation = setup.baseNationalities[_i]>>
-
-<<print "
-<<link _nation>>
-	<<set $JobFulfillmentCenterSlave.nationality = setup.baseNationalities[" + _i + "]>>
-	<<JobFulfillmentCenterSlaveNationality>>
-<</link>>
-">>
-<<if _i < setup.baseNationalities.length-1>>
-|
-<</if>>
-<</for>>
-
-<br><br>
-
-<<link "Reset JobFulfillmentCenter order form">>
-	<<set $JobFulfillmentCenterSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: 0, boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, whoreSkills: 15, combatSkills: 0, intelligence: 0, intelligenceImplant: 1, nationality: "Stateless", amp: 0, eyes: 1}>>
-	<<goto "JobFulfillmentCenter Slave">>
-<</link>>
-
-<br><br>
-
-<<if $JobFulfillmentCenterSlaveOrdered == 1>>
-[[Withdraw JobFulfillmentCenter slave order|Main][$JobFulfillmentCenterSlaveOrdered = 0]]
-<<else>>
-[[Post JobFulfillmentCenter slave order|Main][$JobFulfillmentCenterSlaveOrdered = 1]]
-<</if>>
diff --git a/src/pregmod/MpregSelf.tw b/src/pregmod/MpregSelf.tw
index f9b9ff435a7b5735c929d90541cfeee6a4d9218d..c92dcf199227c496feaf07b7ae0103307ea53375 100644
--- a/src/pregmod/MpregSelf.tw
+++ b/src/pregmod/MpregSelf.tw
@@ -12,7 +12,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing her cue, the girl grabs the large plunger with both hands and starts shoving it in the direction of your womb. She leans in, using her body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. 
 		Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum. 
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for her to continue. As soon as you give her a nod she pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes her to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so she can catch the torrent of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from the $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? 
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? 
 	
 	<<elseif $PC.balls == 2>>
 		Calling over your closest slave, you order her to bring you one of the enema syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the glass enema syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
@@ -23,7 +23,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing her cue, the girl grabs the large plunger with both hands and starts shoving it in the direction of your womb. She leans in, using her body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. 
 		Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a liter of your virile cum. 
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for her to continue. As soon as you give her a nod she pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes her to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so she can catch the torrent of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from the $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?
 	
 	<<elseif $PC.balls == 1>>
 		Calling over your closest slave, you order her to bring you one of the dildo-shaped suppository syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the remarkably-lifelike dildo syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
@@ -34,7 +34,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing her cue, the girl grabs the large plunger and starts shoving it in the direction of your womb. She pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. 
 		Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. 
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for her to continue. As soon as you give her a nod she pulls the dildo free, opening the floodgates for the cum that's filling your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so she can catch the stream of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from the $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?
 	
 	<<else>>
 		Calling over your closest slave, you order her to bring you one of the dildo-shaped suppository syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the remarkably-lifelike dildo syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
@@ -60,7 +60,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing her cue, the girl grabs the large plunger with both hands and starts shoving it in the direction of your womb. She leans in, using her body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. 
 		Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum.  
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for her to continue. As soon as you give her a nod she pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes her to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so she can catch the torrent of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from the $dairyName of course, but why use slave cum when you have such obviously superior material available? 
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available? 
 	
 	<<elseif $PC.balls == 2>>
 		Calling over your closest slave, you order her to bring you one of the enema syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your belly swelling after your knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the glass enema syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
@@ -71,7 +71,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing her cue, the girl grabs the large plunger with both hands and starts shoving it in the direction of your womb. She leans in, using her body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. 
 		Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a full liter of your virile cum. 
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for her to continue. As soon as you give her a nod she pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes her to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so she can catch the torrent of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from the $dairyName of course, but why use slave cum when you have such obviously superior material available?
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available?
 	
 	<<elseif $PC.balls == 1>>
 		Calling over your closest slave, you order her to bring you one of the dildo-shaped suppository syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your belly swelling after your knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the remarkably-lifelike dildo syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
@@ -82,7 +82,7 @@
 		Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing her cue, the girl grabs the large plunger and starts shoving it in the direction of your womb. She pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. 
 		Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. 
 		<br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting girl her orders: "pull it out, and use your mouth to keep the mess to a minimum." She gets on her knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for her to continue. As soon as you give her a nod she pulls the dildo free, opening the floodgates for the cum that's filling in your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so she can catch the stream of jizz that's just starting to pour from your cunt. 
-		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from the $dairyName of course, but why use slave cum when you have such obviously superior material available?
+		You hear some wet sounds as she slurps down the cum that already escaped, and then you feel her soft lips pressed to your vulva as she steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while she works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available?
 	
 	<<else>>
 		Calling over your closest slave, you order her to bring you one of the dildo-shaped suppository syringes from the slave quarters. She rushes off, and you set about getting naked before laying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your belly swelling after your knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before she enters carrying the remarkably-lifelike dildo syringe. Impatient, you give her your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." 
diff --git a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw b/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
index af40e70a87f81c14ae5fda79595f5b795d6672e7..b16923a26ef2ad4e4cd2ea806b0071723f2705c9 100755
--- a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
+++ b/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
@@ -59,12 +59,12 @@
 			<</replace>>
 			<</link>> // Costs <<print cashFormat(_arcCost*$Env)>> //
 		<</if>>
-		<<if _Barracks == 5 || _Barracks == _BarracksMax>>
+		<<if _Barracks == _BarracksMax>>
 			<br>//$securityForceName has fully upgraded the barracks to support it's activities//
 		<</if>>
 
 		/* 
-		<<if $securityForceUpgradeToken == 0 && _Barracks >= 1 && $FacilitySupport == 0>>
+		<<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $FacilitySupport == 0>>
 			<br><<link "Facility Support">>
 				<<replace "#resultX">><br><br>
 				"Sure, boss." she says, nodding. "Creating  a specialised area for any slaves you send to assist us will benefical to everyone."
@@ -489,7 +489,6 @@
 			<</replace>>
 			<</link>>
 		<</if>>
-
 		<<if _LaunchBayNO >= _LaunchBayNOMax || _LaunchBayO >= _LaunchBayNOMax>>//<br>$securityForceName has fully upgraded the launch bay to support it's activities.//<</if>>
 
 		<<if $securityForceUpgradeToken == 0 && ($terrain == "oceanic" || $terrain == "marine") && (_NavalYard < _NavalYardMax) && $TierTwoUnlock == 1>>
diff --git a/src/pregmod/breederProposal.tw b/src/pregmod/breederProposal.tw
index 942b5921efb757a4c62f5d870e47854297900e42..e1e39e8afd77afe077a1be5a3c4ab6298eb5b57b 100644
--- a/src/pregmod/breederProposal.tw
+++ b/src/pregmod/breederProposal.tw
@@ -27,7 +27,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le
 		<span id="result">
 		<br><<link "Agree to being used as a breeder and save face">>
 		<<replace "#result">>
-			"Good choice girl. A selection of men will be provided to you, take your pick and bear our children."
+			"Good choice girl. A selection of men will be provided to you, take your pick and bear our children. Or use a test tube, if that's more to your tastes."
 			<<set $playerBred = 1, $propOutcome = 1>>
 			<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 		<</replace>>
@@ -45,7 +45,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le
 		<span id="result">
 		<br><<link "Agree to being used as a breeder for the sake of your proposal">>
 		<<replace "#result">>
-			"Good choice girl, your proposal is more important than your dignity after all, isn't it? A selection of men will be provided to you, take your pick and bear our children."
+			"Good choice girl, your proposal is more important than your dignity after all, isn't it? A selection of men will be provided to you, take your pick and bear our children. Or use a test tube, if that's more to your tastes."
 			<<set $failedElite -= 50, $playerBred = 1, $propOutcome = 1>>
 			<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 		<</replace>>
@@ -75,7 +75,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le
 		<span id="result">
 		<br><<link "Agree to being used as a breeder to complete the deal">>
 		<<replace "#result">>
-			"Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you."
+			"Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you. Or send you a test tube, if that's more to your tastes."
 			<<set $failedElite -= 50, $playerBred = 1, $propOutcome = 1>>
 			<<InitStandards>>
 			<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
@@ -96,7 +96,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le
 		<span id="result">
 		<br><<link "Agree to being used as a breeder">>
 		<<replace "#result">>
-			"Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you."
+			"Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you. Or send you a test tube, if that's more to your tastes."
 			<<set $playerBred = 1, $propOutcome = 1>>
 			<<InitStandards>>
 			<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
diff --git a/src/pregmod/electiveSurgery.tw b/src/pregmod/electiveSurgery.tw
index 8509e44538d62a8b440787765067ba76a9903c38..de778cb510cfb19e9623078553ae80e2d0e783b5 100644
--- a/src/pregmod/electiveSurgery.tw
+++ b/src/pregmod/electiveSurgery.tw
@@ -127,9 +127,12 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<elseif $PC.boobs == 1>>
 	You have a @@.orange;big pair of DD breasts.@@
 	<br>[[Get a pair of breast implants|PC Surgery Degradation][$PC.boobsBonus = 1, $PC.boobsImplant = 1, $cash -= 10000, $surgeryType = "breastEnlargementImplant"]] | [[Add additional breast tissue|PC Surgery Degradation][$PC.boobsBonus = 1, $cash -= 15000, $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobsBonus = -0.5, $cash -= 5000, $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $cash -= 5000, $surgeryType = "flatChest"]]
-<<else>>
+<<elseif $PC.title == 1>>
 	You have a @@.orange;masculine chest.@@ At your request, breast tissue could be added until you have a healthy bust, though society is unlikely to approve.
 	<br>[[Get a pair of breasts|PC Surgery Degradation][$PC.boobs = 1, $PC.boobsBonus = -1, $cash -= 15000, $surgeryType = "breasts"]]
+<<else>>
+	@@.orange;You're flat.@@ "We can fix that, if you want."
+	<br>[[Get a pair of breasts|PC Surgery Degradation][$PC.boobs = 1, $PC.boobsBonus = -1, $cash -= 15000, $surgeryType = "breasts"]]
 <</if>>
 	
 <<if $PC.belly >= 100 && $PC.preg > 3>>
diff --git a/src/pregmod/fMarry.tw b/src/pregmod/fMarry.tw
index 7f006bbef1b5ffdbd5755ea5062fb0eace0e89a7..5c89e6c978ab38c7521a3e7eeb2a639a8b758c99 100644
--- a/src/pregmod/fMarry.tw
+++ b/src/pregmod/fMarry.tw
@@ -48,7 +48,7 @@ You tell $activeSlave.slaveName that you're going to marry her. (A proposal, of
 		"Thank you, <<Master>>. I am going to do my be<<s>>t to be a
 		<<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>>
 			<<if ($activeSlave.fetish == "submissive")>>
-			perfect submissive wife to you,
+			perfect <<s>>ubmi<<ss>>ive wife to you,
 			<<elseif ($activeSlave.fetish == "cumslut")>>
 			perfect oral wifey,
 			<<elseif ($activeSlave.fetish == "humiliation")>>
@@ -60,7 +60,7 @@ You tell $activeSlave.slaveName that you're going to marry her. (A proposal, of
 			<<elseif ($activeSlave.fetish == "pregnancy")>>
 			perfect barefoot breeding wife,
 			<<elseif ($activeSlave.fetish == "dom")>>
-			perfect, you know, sharing wife with other <<s>>lave<<s>>,
+			perfect, you know, <<sh>>aring wife with other <<s>>lave<<s>>,
 			<<elseif ($activeSlave.fetish == "sadist")>>
 			perfect wife to u<<s>>e on other <<s>>lave<<s>>,
 			<<elseif ($activeSlave.fetish == "masochist")>>
@@ -500,8 +500,8 @@ You tell $activeSlave.slaveName that you're going to marry her. (A proposal, of
 	<<else>>
 		Her lacy bridal bra flatters her pretty chest.
 	<</if>>
-	<<if ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-		Her massive, squirming pregnant belly makes her bridal wear particularly obscene.
+	<<if $activeSlave.bellyPreg >= 600000>>
+		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
 	<<elseif ($activeSlave.bellyPreg >= 1500)>>
 		Her _belly pregnant belly protrudes out the front of her bridal wear.
 	<<elseif ($activeSlave.bellyImplant >= 1500)>>
diff --git a/src/pregmod/fSelf.tw b/src/pregmod/fSelf.tw
index be82f4ea472c1a8434a03a2a35a74821f1b859c5..53225e915f39c416e8fa74ab6e3e62b93f883061 100644
--- a/src/pregmod/fSelf.tw
+++ b/src/pregmod/fSelf.tw
@@ -45,6 +45,7 @@ Taking the hose and attaching your favorite cockhead to it, you eagerly drag it
 
 <</if>>
 
+<<set $PC.cumTap++>>
 <<set $CumSources = $CumSources.random()>>
 <<KnockMeUp $PC 50 0 $CumSources>>
 <<set $CumSources = 0>>
diff --git a/src/pregmod/fSlaveSlaveDickConsummate.tw b/src/pregmod/fSlaveSlaveDickConsummate.tw
index abf06acd3807538563825402992f1c31020c0242..d4833444f574d74ce9011d14c5f01e9293b0e672 100644
--- a/src/pregmod/fSlaveSlaveDickConsummate.tw
+++ b/src/pregmod/fSlaveSlaveDickConsummate.tw
@@ -284,7 +284,7 @@ You take a look at the bound toy.
 			<</if>>
 		<</if>>
 	<</if>> /* closes losing virginity */
-	She rides the helpless $activeSlave.slaveName through several ejaculating orgasms. In the short breaks between them, she teases her pussy. By the end of the session $slaverapistx.slaveName's cunt is dripping cum, to her obvious satiation and bliss. $activeSlave.slaveName is lying next to her on the bed in a state of fatigue, the entire experience havign thoroughly exhausted her.
+	She rides the helpless $activeSlave.slaveName through several ejaculating orgasms. In the short breaks between them, she teases her pussy. By the end of the session $slaverapistx.slaveName's cunt is dripping cum, to her obvious satiation and bliss. $activeSlave.slaveName is lying next to her on the bed in a state of fatigue, the entire experience having thoroughly exhausted her.
 	<<set $activeSlave.penetrativeCount += 3, $penetrativeTotal += 3, $slaverapistx.vaginalCount += 3, $vaginalTotal += 3>>
 
 <<elseif ($activeSlave.devotion <= 20) || ($slaverapistx.devotion <= 20)>>
diff --git a/src/pregmod/generateChild.tw b/src/pregmod/generateChild.tw
index ac56f5b4b355f441adf4cac929f3a6264523673c..31757956f088bd031049a91d430d5d6a59a56360 100644
--- a/src/pregmod/generateChild.tw
+++ b/src/pregmod/generateChild.tw
@@ -465,7 +465,7 @@
 		<<set $activeSlave.face =random(20,100)>>
 		<<set $activeSlave.intelligence = either(1, 2, 2, 2, 2, 3, 3)>>
 	<</if>>
-<<elseif $activeSlave.father == -1 && $mom > 0>>
+<<elseif $activeSlave.father == -1>>
 	<<if $mom.breedingMark == 1>>
 		<<set $activeSlave.face = random(60,100)>>
 		<<set $activeSlave.intelligence = either(2, 2, 2, 2, 3, 3)>>
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index c220be3d4bd4e41caafec24704d31f4e2295fd1f..997e4b8c0a4ea3cac841982dbfe3574d601c2075 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -32,7 +32,7 @@ $incubatorNameCaps is a clean, cold hall designed to be lined with tanks and the
 <br><br>
 Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $incubator tanks, <<print $freeTanks>> <<if $freeTanks == 1>>is<<else>>are<</if>> unoccupied. Of those, $reservedChildren <<if $reservedChildren == 1>>tank is<<else>>tanks are<</if>> reserved.
 <<for _u = 0; _u < _SL; _u++>>
-	<<if $slaves[_u].preg > 0 && $slaves[_u].pregType < 50 && $slaves[_u].pregKnown == 1 && $slaves[_u].eggType == "human">>
+	<<if $slaves[_u].preg > 0 && $slaves[_u].broodmother == 0 && $slaves[_u].pregKnown == 1 && $slaves[_u].eggType == "human">>
 	<<if $slaves[_u].assignment == "work in the dairy" && $dairyPregSetting > 0>>
 	<<else>>
 		<br><<print "[[$slaves[" + _u + "].slaveName|Long Slave Description][$activeSlave = $slaves[" + _u + "], $nextLink = passage()]]">> is $slaves[_u].pregWeek weeks pregnant with
diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw
index 3c9d17b1478bea1a679215eed6ec2920bc4f5d57..b7d0d006e36dca17c5c678d599076f874c8d825f 100644
--- a/src/pregmod/managePersonalAffairs.tw
+++ b/src/pregmod/managePersonalAffairs.tw
@@ -15,160 +15,14 @@ You pause for a moment from your busy day to day life to return to <<if $masterS
 	You're @@.orange;$PC.actualAge@@ and full of vigor.<<if $PC.visualAge > $PC.actualAge>> You've taken measures to @@.lime;look an older $PC.visualAge@@ and reap the respect that comes with it.<<elseif $PC.visualAge < $PC.actualAge>> You've taken measures to @@.lime;look a younger $PC.visualAge,@@ even though society may find your looks uncomfortable.<</if>>
 <</if>>
 <<if ($playerAging != 0)>>Your birthday is <<if $PC.birthWeek is 51>>next week<<else>>in <<print 52-$PC.birthWeek>> weeks<</if>>.<</if>>
-Looking down; 
-<<if $PC.boobsBonus > 2>>
-	you have a @@.orange;pair of H-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are big, round, and obviously implants. They barely move when you fuck your slaves<<else>>They are all natural, heavy, and a bit saggy though they have some perk to them. Once they get going, it's hard to make them stop<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more enormous lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<elseif $PC.boobsBonus == 2>>
-	you have a @@.orange;pair of G-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are kind of rounded and much too perky for their size to pass as real. They have a bit of bounce to them as you fuck a slave<<else>>They are all natural and a little heavy. The bounce everywhere when you fuck your slaves<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more huge lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<elseif $PC.boobsBonus == 1>>
-	you have a @@.orange;pair of F-cup breasts.@@ <<if $PC.boobsImplant == 1>>They are nice, perky and not obviously implants. Though the way they move when you fuck a slave pins them as such<<else>>They are nice and perky, despite their size. They bounce lewdly as you fuck your slaves.<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<elseif $PC.boobsBonus == -0.5>>
-	you have a @@.orange;pair of D-cup breasts.@@ They are nice, perky and bounce pleasantly as you fuck your slaves.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<elseif $PC.boobsBonus == -1>>
-	you have a @@.orange;pair of C-cup breasts.@@ They are nice and perky, with just a little bounce when you fuck your slaves.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<elseif $PC.boobs == 1>>
-	you have a @@.orange;healthy pair of DD breasts.@@<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel fuller lately; likely a side effect of your lactation.<</if>><<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<else>>
-	you have a @@.orange;masculine chest.@@<<if $PC.preg > 30 || $PC.births > 0>> Your chest feels swollen; the beads of milk forming on your nipples tells you why.<</if>><<if $PC.markings == "freckles">>Your chest is covered in a light spray of freckles.<<elseif $PC.markings == "heavily freckled">>Your chest is covered in dense freckles.<</if>>
-<</if>>
-<<if $PC.preg > 0>>
-	<<if $PC.belly >= 120000>>
-		@@.red;Your belly is coated with stretch marks and is taut as a drum; you don't know how much more your poor womb can endure.@@ You can barely even leave your bed without a helping hand. Kicks can almost constantly be seen dotting its surface. You give it a pat for good measure, only encouraging your octuplets to squirm in excitement.<<if $PC.dick == 1>> You watch as your dick hardens from the prostate stimulation; you steady yourself for the coming orgasm.<</if>>
-	<<elseif $PC.belly >= 105000>>
-		You have trouble getting up and sitting down. Even standing while supporting your @@.orange;massive belly@@ has become an exhausting endeavor.
-	<<elseif $PC.belly >= 90000>>
-		You can @@.orange;barely reach around your gravid mass@@ any longer. Even the shortest waddle is exhausting.
-	<<elseif $PC.belly >= 75000>>
-		Your @@.orange;belly is starting to become worrying;@@ you feel over-filled at all times, and your children like to remind you just how full you are.
-	<<elseif $PC.belly >= 60000>>
-		You're @@.orange;definitely having multiples,@@ there is no denying it at this point. All you can do is try to relax and keep trying to stave off the stretch marks.
-	<<elseif $PC.belly >= 45000>>
-		You both look and feel enormous, your @@.orange;belly juts out so much now.@@ You've grown so much you now have trouble viewing yourself in mirror.
-	<<elseif $PC.belly >= 30000>>
-		Whenever you have the chance, you prefer to stay naked instead of stretching out your clothing with your @@.orange;giant pregnant belly.@@
-	<<elseif $PC.belly >= 14000>>
-		Your @@.orange;so gravid@@ you have trouble seeing the entirety of your huge belly.
-	<<elseif $PC.belly >= 12000>>
-		You can barely wrap your arms around your @@.orange;huge pregnant belly,@@ and when you do, your popped navel reminds you of the bun<<if $PC.pregType > 0>>s<</if>> in your oven.
-	<<elseif $PC.belly >= 10000>>
-		Your @@.orange;pregnancy has gotten quite huge,@@ none of your clothes fit it right.
-	<<elseif $PC.belly >= 7000>>
-		Your @@.orange;pregnant belly juts out annoyingly far,@@ just getting dressed is a pain now.
-	<<elseif $PC.belly >= 5000>>
-		Your @@.orange;belly has gotten quite large with child;@@ it is beginning to get the way of sex and business.
-	<<elseif $PC.belly >= 1500>>
-		Your @@.orange;belly is now large enough that there is no hiding it.@@
-	<<elseif $PC.belly >= 500>>
-		Your @@.orange;belly is rounded by your early pregnancy.@@
-	<<elseif $PC.belly >= 250>>
-		Your @@.orange;lower belly is beginning to stick out,@@ you're definitely pregnant.
-	<<elseif $PC.belly >= 100>>
-		Your @@.orange;belly is slightly swollen;@@ combined with your missed period, odds are you're pregnant.
-	<<elseif $PC.belly < 100>>
-		Your @@.red;period hasn't happened in some time,@@ you might be pregnant.
-	<</if>>
-	<<if $PC.preg >= 41>>
-		You don't know why you even bother getting out of bed; you are @@.orange;overdue and ready to drop@@ at any time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state.
-	<<elseif $PC.preg >= 39>>
-		You feel absolutely massive; your @@.orange;full-term belly@@ makes your life as arcology owner very difficult.
-	<</if>>
-<<elseif $PC.belly >= 1500>>
-	Your belly is still very distended from your recent pregnancy.
-<<elseif $PC.belly >= 500>>
-	Your belly is still distended from your recent pregnancy.
-<<elseif $PC.belly >= 250>>
-	Your belly is still bloated from your recent pregnancy
-<<elseif $PC.belly >= 100>>
-	Your belly is still slightly swollen after your recent pregnancy.
-<</if>>
+Looking down;
+<<PlayerBoobs>>
+<<PlayerBelly>>
 <<if $PC.balls == 2 && $PC.belly < 5000>> Your pubic mound is swells outward slightly due to your oversized prostate. <<elseif $PC.balls > 2 && $PC.belly < 10000>> Your pubic mound bulges outward noticeably thanks to your massive prostate. <</if>>
 Beneath all that;
-<<if $PC.dick == 1 && $PC.vagina == 1>>
-	an @@.orange;above average penis@@<<if $PC.balls > 2>> that is constantly streaming precum,<<elseif $PC.balls > 0>> that is constantly dripping precum,<</if>> and a pair of
-	<<if $PC.ballsImplant > 3>>
-		@@.orange;monstrous, heavy balls@@ roughly the size of small watermelons thanks to a combination of growth hormones and gel injections; it's impossible to sit normally, <<if $ballsAccessibility == 1>>but your penthouse has been redesigned with oversized balls in mind. There are plenty of chairs capable of handling you littering the penthouse<<else>> you rest on the edge of your chair, allowing your oversized balls to dangle precariously<</if>>. You've given up on wearing pants around the penthouse, and their bulging mass is so gargantuan that people assume they're fake, but every slave you fuck gets a distended belly from all the cum you pump into them. They make just about everything you do difficult: sitting, walking, fucking; but they certainly make life interesting.
-	<<elseif $PC.ballsImplant == 3>>
-		@@.orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone probably assumes they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly interesting.
-	<<elseif $PC.ballsImplant == 2>>
-		@@.orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting.
-	<<elseif $PC.ballsImplant == 1>>
-		@@.orange;large balls;@@ you can certainly feel them as you move about.
-	<<else>>
-		@@.orange;normal, uneventful balls.@@
-	<</if>>
-	Tucked away beneath them; a
-	<<if $PC.newVag == 1>>
-		@@.orange;tight vagina.@@ Your pussy is very resilient, you shouldn't be able to stretch it out again.
-	<<elseif $PC.career == "escort">>
-		@@.red;very loose vagina.@@ Years of whoring will do that to a girl.
-	<<elseif $PC.births >= 10>>
-		@@.red;rather loose vagina,@@ stretched from your many children.
-	<<elseif $PC.career == "servant">>
-		@@.red;rather loose vagina.@@ Your master fucked you several times a day; him and his children have wreaked havoc upon your pussy.
-	<<elseif $PC.births > 2>>
-		@@.orange;loose vagina,@@ stretched from your several children.
-	<<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">>
-		@@.lime;reasonably tight vagina.@@ You've had some fun during your previous career.
-	<<elseif $PC.births > 0>>
-		@@.lime;reasonably tight vagina.@@ It's handled childbirth well enough.
-	<<else>>
-		@@.lime;tight vagina.@@ You're no virgin, but you've taken care of yourself.
-	<</if>>
-<<elseif $PC.dick == 1>>
-	an @@.orange;above average penis@@<<if $PC.balls > 2>> that is constantly streaming precum,<<elseif $PC.balls > 0>> that is constantly dripping precum,<</if>> and a pair of
-	<<if $PC.ballsImplant > 3>>
-		@@.orange;monstrous, heavy balls@@ roughly the size of small watermelons thanks to a combination of growth hormones and gel injections; it's impossible to sit normally, <<if $ballsAccessibility == 1>>but your penthouse has been redesigned with oversized balls in mind. There are plenty of chairs capable of handling you littering the penthouse<<else>> you rest on the edge of your chair, allowing your oversized balls to dangle precariously<</if>>. You've given up on wearing pants around the penthouse, and their bulging mass is so gargantuan that people assume they're fake, but every slave you fuck gets a distended belly from all the cum you pump into them. They make just about everything you do difficult: sitting, walking, fucking; but they certainly make life interesting.
-	<<elseif $PC.ballsImplant == 3>>
-		@@.orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone probably assumes they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly interesting.
-	<<elseif $PC.ballsImplant == 2>>
-		@@.orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting.
-	<<elseif $PC.ballsImplant == 1>>
-		@@.orange;large balls;@@ you can certainly feel them as you move about.
-	<<else>>
-		@@.orange;normal, uneventful balls.@@
-	<</if>>
-<<else>>
-	a
-	<<if $PC.newVag == 1>>
-		@@.orange;tight vagina.@@ Your pussy is very resilient, you shouldn't be able to stretch it out again.
-	<<elseif $PC.career == "escort">>
-		@@.red;very loose vagina.@@ Years of whoring will do that to a girl.
-	<<elseif $PC.births >= 10>>
-		@@.red;rather loose vagina,@@ stretched from your many children.
-	<<elseif $PC.career == "servant">>
-		@@.red;rather loose vagina.@@ Your master fucked you several times a day; him and his children have wreaked havoc upon your pussy.
-	<<elseif $PC.births > 2>>
-		@@.orange;loose vagina,@@ stretched from your several children.
-	<<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">>
-		@@.lime;reasonably tight vagina.@@ You've had some fun during your previous career.
-	<<elseif $PC.births > 0>>
-		@@.lime;reasonably tight vagina.@@ It's handled childbirth well enough.
-	<<else>>
-		@@.lime;tight vagina.@@ You're no virgin, but you've taken care of yourself.
-	<</if>>
-<</if>>
+<<PlayerCrotch>>
 Around back;
-<<if $PC.butt > 2>>
-	<<if $PC.buttImplant == 1>>
-		an @@.orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants. They barely move at all when you walk or fuck, are difficult to cram into your clothing and you keep getting stuck in chairs, but you wouldn't have it any other way.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<<else>>
-		an @@.orange;enormous, jiggly butt.@@ It is always wobbling for some reason or another. It really fills out your clothing and practically consumes anything you sit on.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<</if>>
-<<elseif $PC.butt == 2>>
-	<<if $PC.buttImplant == 1>>
-		a @@.orange;huge, round, firm butt;@@ it's easily identifiable as fake.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<<else>>
-		a @@.orange;huge, soft butt.@@ It jiggles a lot as you move.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<</if>>
-<<elseif $PC.butt == 1>>
-	<<if $PC.buttImplant == 1>>
-		a @@.orange;big firm butt;@@ anyone that feels it can tell it's fake, but at a glance you can't tell otherwise.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<<else>>
-		a @@.orange;big butt.@@ It jiggles a little as you walk.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-	<</if>>
-<<else>>
-	a @@.orange;sexy, but normal butt.@@<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your upper butt.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and upper butt.<</if>>
-<</if>>
+<<PlayerButt>>
 
 <br><<if $playerSurgery == 0>>[[Visit your plastic surgeon.|Elective Surgery][$playerSurgery = 4]]<<elseif $playerSurgery == 1>>Your favorite plastic surgeon is booked solid for the next week.<<else>>Your favorite plastic surgeon is booked solid for the next $playerSurgery weeks.<</if>>
 <br>You have a number of contact lenses in various colors available.
@@ -574,7 +428,7 @@ In total, you have given birth to:
 	<<if $playerBred == 0>>
 	<br><br>
 		You are currently not bearing children for the Societal Elite.
-		[[List your womb as available|Manage Personal Affairs][$playerBred = 1]]
+		[[List your womb as available|Manage Personal Affairs][$playerBred = 1, $playerBredTube = 0]] | [[Sign up for artificial insemination|Manage Personal Affairs][$playerBred = 1, $playerBredTube = 1]]
 	<<else>>
 		Your womb is dedicated to carrying the Societal Elites' children.
 		<<if $PC.birthElite > 0>>
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index dd28e3031d6e3107031c0c93b99127ac8040641b..f331240c3bf0b623e18bede056510c52b67a12ba 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -626,6 +626,7 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 <</replace>>
 <</link>>
 
+<<if $seePreg != 0>>
 <<if isFertile($activeSlave)>>
 <br><<link "Impregnate her">>
 <<set $activeSlave.preg = 1>>
@@ -653,6 +654,7 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 <</replace>>
 <</link>>
 <</if>>
+<</if>>
 
 <br><<link "Break her in publicly">>
 <<replace "#result">>
diff --git a/src/pregmod/pInsemination.tw b/src/pregmod/pInsemination.tw
index 27ca0428034e6f5a25819aec46e7bbcf4d21519d..912dedd0de7a6550450600bfe7f5e59ea3499795 100644
--- a/src/pregmod/pInsemination.tw
+++ b/src/pregmod/pInsemination.tw
@@ -20,6 +20,9 @@
 <<if ndef $preggoCount>>
 	<<set $preggoCount = 0>>
 <</if>>
+
+<<if $playerBredTube != 1>>
+
 <<if $startingPoint == -1>>
 	<<set $EliteSires = $EliteSires.shuffle()>>
 	<<set $startingPoint = random(0,5)>>
@@ -94,6 +97,13 @@
 <<if $startingPoint == 6>>
 	<<set $startingPoint = 0>>
 <</if>>
+
+<<else>>
+
+	The vial of sperm destined to fill your womb with life has arrived. You waste no time injecting a dose of it into the depths of your pussy and carry on with you day; a ritual you repeat for the duration of the week, ensuring an Elite life taking root within you.
+
+<</if>>
+
 /* You're getting pregnant, period be damned */
 <<set $PC.preg = 1, $PC.pregSource = -1, $PC.pregKnown = 1>>
 <<SetPregType $PC>>
diff --git a/src/pregmod/personalNotes.tw b/src/pregmod/personalNotes.tw
index 1cfd25c255242bdd1bd43f7c53c5d67602badb11..dbb55a085442a42577bd042ed7bdd94c1375142b 100644
--- a/src/pregmod/personalNotes.tw
+++ b/src/pregmod/personalNotes.tw
@@ -3,351 +3,10 @@
 <<if $useTabs == 0>>__Personal Notes__<</if>>
 <br>
 <<if ($playerAging != 0)>>Your birthday is <<if $PC.birthWeek == 51>>next week<<if $playerAging == 2>>; you'll be turning <<print $PC.actualAge+1>><</if>><<else>>in <<print 52-$PC.birthWeek>> weeks<</if>>.<</if>>
-<<if $PC.career == "servant">>
-	<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
-		<<if $PC.boobsBonus > 2>>
-			You've gotten your dress let out to accommodate your huge bust.
-		<<elseif $PC.boobsBonus == 2>>
-			Your dress bulges with your big breasts.
-		<<elseif $PC.boobsBonus == 1>>
-			Your dress feels tight around your breasts.
-		<</if>>
-	<</if>>
-	<<if $PC.preg > 0>>
-	<<if $PC.belly >= 120000>>
-		You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has soundly defeated the seams of your dress<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm<</if>>.
-	<<elseif $PC.belly >= 105000>>
-		You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. Your frumpy dress is also at its limit, and much to your annoyance, your children will not stay still enough to let you fix it.
-	<<elseif $PC.belly >= 90000>>
-		You may have a problem. You took fertility drugs, but you shouldn't be getting this big. Judging by how far along you are, you must be carrying 
-		<<if $PC.pregType == 8>>
-			octuplets
-		<<elseif $PC.pregType == 7>>
-			septuplets
-		<<else>>
-			sextuplets.
-		<</if>>
-		Your Master always wanted said he wanted a big family, too bad he isn't here to see this. Your dress is also starting to get tight, but it's far less of a concern at this point.
-	<<elseif $PC.belly >= 75000>>
-		Your belly is starting to become worrying. You're positively gigantic and quite tired. Though on the plus side, your dress is rather form fitting now.
-	<<elseif $PC.belly >= 60000>>
-		Your new outfit is handling your enormous belly quite well, though it does nothing to hide your size. Everyone can tell you'll be having lots of babies.
-	<<elseif $PC.belly >= 45000>>
-		You both look and feel enormous, your belly juts out so much now. You found a rather frumpy looking maid outfit in a shop; it's not the most attractive thing, but it'll hold nearly any belly.
-	<<elseif $PC.belly >= 30000>>
-		You feel absolutely gigantic; you look like you're full-term with twins<<if $PC.pregType == 2>> (which you are)<</if>>. Your restitched dress is once more at its limit.
-	<<elseif $PC.belly >= 15000>>
-		You've taken the time to let out your own dress so that you can look proper even with a belly as big as any full-term woman.
-	<<elseif $PC.belly >= 14000>>
-		Your dress is at its capacity, any bigger and you'd risk tearing it at the seams, though your late master did make sure his girls were well dressed even when they were fully rounded with his child.
-	<<elseif $PC.belly >= 12000>>
-		You keep bumping into things with your huge belly; you're used to it though, <<if $PC.birthMaster > 0>>your first pregnancy was a twinner!<<else>>your late Master liked to keep a big fake belly around your middle.<</if>>
-	<<elseif $PC.belly >= 10000>>
-		Your huge pregnant belly is tiring to carry around, but you're well versed in moving about with a rounded middle.
-	<<elseif $PC.belly >= 7000>>
-		You've stopped bothering to tie your apron behind you, allowing your dress the freedom to stretch with your growing child.
-	<<elseif $PC.belly >= 5000>>
-		Your maid's outfit is rounded out by your baby-filled belly; not only is it obvious, but it is slowing you down in your day to day affairs.
-	<<elseif $PC.belly >= 3000>>
-		You're starting to get pretty big; you feel like all eyes are centered on her baby-filled middle.
-	<<elseif $PC.belly >= 1500>>
-		Your belly is now large enough that there is no hiding it. After you've let out your apron, your dress fits nicely again.
-	<<elseif $PC.belly >= 500>>
-		Your dress tightly clings to your early pregnancy, though it, your apron, and your previous experience hide it well.
-	<<elseif $PC.belly >= 250>>
-		Your apron holds your dress tightly to your bloated middle.
-	<<elseif $PC.belly >= 100>>
-		Your dress and apron feel tight around your middle.
-	<</if>>
-	<<if $PC.preg >= 41>>
-		Your bab<<if $PC.pregType > 1>>ies are<<else>>y is<</if>> overdue and your master isn't here anymore to comfort your exhausted body. You try your best, <<if $PC.pregSource == -3>>drawing strength from the knowledge that you carry your late master's legacy within you<<else>>but deep down you are saddened that your child isn't his<</if>>.<<if $PC.pregMood == 1>> However, thanks to all your mothering, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you try to fill the hole left by your late master.<</if>>
-	<<elseif $PC.preg >= 39>>
-		Every action you take is exhausting, and even though your slaves are more than capable of serving your every desire, you refuse to slow down with your duties.<<if $PC.pregMood == 1>> Though you definitely appreciate their aid.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
-	<<elseif $PC.preg >= 36>>
-		Your child<<if $PC.pregType > 1>>ren<</if>> happily kicks away inside your womb, and each time a small bump appears on the outside of your dress.<<if $PC.pregMood == 1>> While hormones may have you demanding and needy, you do everything you can to treat your slaves as if they were your own children.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but your former master loved to fuck you while you were pregnant with his children and your body misses his touch.<</if>>
-	<<elseif $PC.preg >= 32>>
-		<<if $PC.pregMood == 1>> You can't help but enjoy having a slave suckle from you while you relax with her in your lap.<<elseif $PC.pregMood == 2>> You know how to have sex while pregnant, and as such, so will your slaves.<</if>>
-	<<elseif $PC.preg >= 28>>
-		<<if $PC.pregMood == 1>> You catch yourself babying your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
-	<<elseif $PC.preg == 22>>
-		Something startling happened this week; while enjoying a slave, your belly button popped out!
-	<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
-		<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
-		<<set $slaves[_babyDaddy].PCKnockedUp++>>
-		Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
-	<</if>>
-	<</if>>
-	<<if $PC.ballsImplant > 3>>
-		Your dress and apron bulges with your enormous balls, you had to have your dresses tailored so that the swinging mass of your sack would stop bursting seams inadvertently.
-	<<elseif $PC.ballsImplant == 3>>
-		Your dress and apron bulges with your enormous balls.
-	<<elseif $PC.ballsImplant == 2>>
-		Your dress hides your huge balls, but it does nothing to hide your altered gait.
-	<<elseif $PC.ballsImplant == 1>>
-		Your dress hides your big balls.
-	<</if>>
-	<<if $PC.butt > 2 && $PC.ballsImplant > 3>>
-		<<if $PC.buttImplant == 1>>
-			When you had your dresses tailored you also had to have them make room for your enormous rear. No dress can hide how big and fake it is though.
-		<<else>>
-			When you had your dresses tailored you also had to have them make room for your enormous rear.
-		<</if>>
-	<<elseif $PC.butt > 2>>
-		<<if $PC.buttImplant == 1>>
-			You had to get your dress let out to contain your enormous rear. It can't hide how big and fake it is though.
-		<<else>>
-			You had to get your dress let out to contain your enormous rear.
-		<</if>>
-	<<elseif $PC.butt == 2>>
-		Your dress is starting to feel tight around your huge rear.
-	<<elseif $PC.butt == 1>>
-		Your dress is filled out by your big butt.
-	<</if>>
-<<elseif $PC.career == "escort">>
-	<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
-		<<if $PC.boobsBonus > 2>>
-			You top strains as it struggles to cover your nipples, letting your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> bust bulge lewdly around it.
-		<<elseif $PC.boobsBonus == 2>>
-			Your top can barely contain your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, heavily freckled<</if>> breasts, leaving you looking sluttier than ever.
-		<<elseif $PC.boobsBonus == 1>>
-			Your breasts spill over your slutty top<<if $PC.markings == "freckles">>, showing off your freckled cleavage<<elseif $PC.markings == "heavily freckled">>, freckle packed cleavage<</if>>.
-		<</if>>
-	<</if>>
-	<<if $PC.preg > 0>>
-	<<if $PC.belly >= 120000>>
-		You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has seized control as your dominant aspect<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much. It's good for business when you orgasm lewdly and cum your bottoms<</if>>.
-	<<elseif $PC.belly >= 105000>>
-		You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. None of your poses work with your gravid body either and you're practically popping out of your skimpiest outfit.
-	<<elseif $PC.belly >= 90000>>
-		You may have a problem. You know you took fertility drugs, but you weren't supposed to get this big! Feeling yourself up, you'd fancy a guess that there are about
-		<<if $PC.pregType == 8>>
-			a dozen babies
-		<<elseif $PC.pregType == 7>>
-			ten babies
-		<<else>>
-			eight babies
-		<</if>>
-		 in your belly.
-	<<elseif $PC.belly >= 75000>>
-		Your belly is starting to become worrying to you. You're positively gigantic and quite tired of it. The last thing on peoples' minds these days is fucking you too.
-	<<elseif $PC.belly >= 60000>>
-		You feel sexy with such a huge belly, but it sure is tiring. Everyone can also tell you'll be having lots of babies. A boon to business, since everyone knows you ride bareback.
-	<<elseif $PC.belly >= 45000>>
-		You both look and feel enormous, your belly juts out so much now. Your strategy worked! Eyes always end up locked onto you or your pregnancy, but they quickly return to your milky breasts.
-	<<elseif $PC.belly >= 30000>>
-		You feel absolutely gigantic; you look like you're full-term with twins. You find the skimpiest outfit you can to complement your size; if people won't notice your other assets, then they might as well not notice your outfit either.
-	<<elseif $PC.belly >= 14000>>
-		You don't even bother to try to be slutty anymore, your full-term globe of a belly just steals all the attention away from your other assets.
-	<<elseif $PC.belly >= 12000>>
-		Your huge pregnant belly hides your crotch.
-	<<elseif $PC.belly >= 10000>>
-		Your huge pregnant belly is tiring to carry around and is beginning to draw attention away from your other features.
-	<<elseif $PC.belly >= 7000>>
-		You've switched to even skimpier clothing to show off your big pregnant belly.
-	<<elseif $PC.belly >= 5000>>
-		Your outfit is only enhanced by your baby-filled belly; mostly because it adds to your slutty appearance. Though it definitely is impacting your business.
-	<<elseif $PC.belly >= 3000>>
-		Your slutty bottoms are beginning to get hidden by your rounded middle.
-	<<elseif $PC.belly >= 1500>>
-		Your slutty bottoms sexily hug your swollen middle.
-	<<elseif $PC.belly >= 500>>
-		Your exposed midriff bulges out enough to give away your growing pregnancy.
-	<<elseif $PC.belly >= 250>>
-		Your exposed midriff is noticeably bloated.
-	<<elseif $PC.belly >= 100>>
-		When you look down, you can't help but notice your belly sticking out a little.
-	<</if>>
-	<<if $PC.preg >= 41>>
-		You can barely pull yourself and your overdue child out of bed; every action is a chore, you keep bumping things, and your child just won't calm down.<<if $PC.pregMood == 1>> However, thanks to all your tenderness, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you satisfy your desires.<</if>>
-	<<elseif $PC.preg >= 39>>
-		Every action you take is exhausting; though your slaves are more than capable of serving your every whim.<<if $PC.pregMood == 1>> Even in the final stages of pregnancy, you make sure the slaves attending you are treated as if the were your favorite clients.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
-	<<elseif $PC.preg >= 36>>
-		Every kick from your eager child threatens to dislodge your breasts from your struggling top.<<if $PC.pregMood == 1>> While you may be demanding and needy, you do everything you can to treat them as if they were a virgin client.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but you need a dick in you even more than usual.<</if>>
-	<<elseif $PC.preg >= 32>>
-		<<if $PC.pregMood == 1>> You can't help but enjoy having a slave, or client, suckle from you while you relax with them in your lap.<<elseif $PC.pregMood == 2>> You don't let your pregnancy get in the way when it comes to sex; you make sure your slaves, and clients, learn just how much you know about sex.<</if>>
-	<<elseif $PC.preg >= 28>>
-		<<if $PC.pregMood == 1>> You catch yourself playfully teasing your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
-	<<elseif $PC.preg == 22>>
-		Something startling happened this week; while enjoying a slave, your belly button popped out!
-	<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
-		<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
-		<<set $slaves[_babyDaddy].PCKnockedUp++>>
-		Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
-	<</if>>
-	<</if>>
-	<<if $PC.ballsImplant > 3>>
-		You've pretty much given up on pants because of your monstrous balls, but you've replaced them with a slutty skirt that stretches around their veiny contours. People can't help staring to see if they'll get a glimpse of your massive sack peaking out from under the skirt.
-	<<elseif $PC.ballsImplant == 3>>
-		You've swapped up to a larger pair of slutty pants, specially designed with extra sack room. They draw the eye right to your bulge<<if $PC.preg >= 28>>; you can do without people thinking you are giving birth into your pants, though<</if>>.
-	<<elseif $PC.ballsImplant == 2>>
-		Your slutty pants are really tight around the groin, but they hold your huge balls in place quite nicely.
-	<<elseif $PC.ballsImplant == 1>>
-		Your slutty pants bulge more than ever with your big balls.
-	<</if>>
-	<<if $PC.dick == 1>>
-		<<if $PC.ballsImplant > 3>>
-			<<if $PC.butt > 2>>
-				<<if $PC.buttImplant == 1>>
-					Your slutty skirt is also forced to stretch around your enormous rear, making the implants pretty obvious. With both your front and back struggling to get free of your stretchy skirt, it isn't unusual for one or the other to peek out.
-				<<else>>
-					Your slutty skirt is also forced to stretch around your enormous rear, and bending over is basically asking for your skirt to ride up all the way to your hips. With both your front and back struggling to get free of your stretchy skirt, it isn't unusual for one or the other to peek out.
-				<</if>>
-			<<elseif $PC.butt == 2>>
-				Your huge rear nearly spills out from the bottom of your slutty skirt.
-			<<elseif $PC.butt == 1>>
-				Your slutty skirt is strained by your big butt.
-			<</if>>
-		<<else>>
-			 <<if $PC.butt > 2>>
-				<<if $PC.buttImplant == 1>>
-					You had to get your slutty pants let out to contain your enormous rear. It still feels really tight, however, thanks to the implants.
-				<<else>>
-					You had to get your slutty pants let out to contain your enormous rear. It still overflows scandalously, however.
-				<</if>>
-			<<elseif $PC.butt == 2>>
-				Your huge rear spills out from the top of your slutty pants.
-			<<elseif $PC.butt == 1>>
-				Your slutty pants are strained by your big butt.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if $PC.butt > 2>>
-			<<if $PC.buttImplant == 1>>
-				Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your overly round<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, heavily freckled<</if>> cheeks to hang free.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your valley of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and valley of ass cleavage.<</if>>
-			<<else>>
-				Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your<<if $PC.markings == "freckles">> freckled<<elseif $PC.markings == "heavily freckled">> heavily freckled<</if>> cheeks to jiggle freely.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your valley of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and valley of ass cleavage.<</if>>
-			<</if>>
-		<<elseif $PC.butt == 2>>
-			Your slutty shorts are filled to bursting by your rear. Roughly half of your ass is actually in your bottoms, the rest is bulging out scandalously.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your ravine of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and ravine of ass cleavage.<</if>>
-		<<elseif $PC.butt == 1>>
-			Your slutty shorts are strained by your big butt. It spills out every gap it can.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and ass cleavage.<</if>>
-		<<elseif $PC.markings == "freckles">>
-			Your exposed lower back is covered in a light speckling of freckles.
-		<<elseif $PC.markings == "heavily freckled">>
-			Your freckles are particularly dense across your exposed lower back.
-		<</if>>
-	<</if>>
-<<else>>
-	<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
-		<<if $PC.boobsBonus > 2>>
-			You've gotten your top retailored to fit your huge bust.
-		<<elseif $PC.boobsBonus == 2>>
-			Your top strains against your big breasts<<if $PC.markings == "freckles">>, revealing a peak of freckled cleavage<<elseif $PC.markings == "heavily freckled">>, revealing a peak of densely freckled cleavage<</if>>.
-		<<elseif $PC.boobsBonus == 1>>
-			Your top feels tight around your breasts.
-		<</if>>
-	<</if>>
-	<<if $PC.preg > 0>>
-	<<if $PC.belly >= 120000>>
-		You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has soundly defeated your maternity suit<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm. The last thing you want to do in a meeting is spontaneously orgasm and cum your in clothes<</if>>.
-	<<elseif $PC.belly >= 105000>>
-		You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. Your suit buttons keep popping, and much to your annoyance, your children will not stay still enough to let you redo them.
-	<<elseif $PC.belly >= 90000>>
-		You may have a problem. You took fertility drugs, but you shouldn't be getting this big. Judging by how far along you are, you must be carrying 
-		<<if $PC.pregType == 8>>
-			octuplets
-		<<elseif $PC.pregType == 7>>
-			septuplets
-		<<else>>
-			sextuplets.
-		<</if>>
-		Your suit is also starting to get tight, but it's far less of a concern at this point.
-	<<elseif $PC.belly >= 75000>>
-		Your belly is starting to become worrying. You're positively gigantic and quite tired. As an added stress, your maternity suit highlights your pregnancy.
-	<<elseif $PC.belly >= 60000>>
-		Your new outfit is handling your enormous belly quite well, though it does nothing to hide your size. Everyone can tell you'll be having lots of babies and judges you accordingly.
-	<<elseif $PC.belly >= 45000>>
-		You both look and feel enormous, your belly juts out so much now. You tailor finally managed to get you a bigger maternity suit, one with extra give in the middle, but you feel it draws attention right to your gravidity.
-	<<elseif $PC.belly >= 30000>>
-		You feel absolutely gigantic; you look like you're full-term with twins<<if $PC.pregType == 2>> (which you are)<</if>>. Having such a big belly in such poor attire weighs heavily under the public's eye.
-	<<elseif $PC.belly >= 15000>>
-		You don't even bother to try to cover your full-term sized pregnancy, opting to just let it hang out of your old clothing. Every action you take is exhausting; though your slaves are more than capable of serving your every desire.
-	<<elseif $PC.belly >= 12000>>
-		Your huge pregnant belly strains the buttons on your maternity suit.
-	<<elseif $PC.belly >= 10000>>
-		Your huge pregnant belly is tiring to carry around and is beginning to stretch out your new clothes.
-	<<elseif $PC.belly >= 7000>>
-		You've switched to using what can only be called formal maternity wear to cover your pregnant belly.
-	<<elseif $PC.belly >= 5000>>
-		You can barely cover your baby filled belly; not only is it obvious, but it is getting in the way of your business.
-	<<elseif $PC.belly >= 3000>>
-		You're starting to get pretty big; you feel like everyone just focuses on your gravidity now.
-	<<elseif $PC.belly >= 1500>>
-		Your belly is now large enough that there is no hiding it. Your top strains to cover it.
-	<<elseif $PC.belly >= 500>>
-		Your top tightly clings to your early pregnancy, though you manage to conceal it well enough.
-	<<elseif $PC.belly >= 250>>
-		Your top tightly clings to your bloated middle.
-	<<elseif $PC.belly >= 100>>
-		Your top feels oddly tight around your middle.
-	<</if>>
-	<<if $PC.preg >= 41>>
-		You can barely pull yourself and your overdue child out of bed; every action is a chore, you keep bumping things, and your child just won't calm down.<<if $PC.pregMood == 1>> However, thanks to all your mothering, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you satisfy your desires.<</if>>
-	<<elseif $PC.preg >= 39>>
-		<<if $PC.pregMood == 1>> Even in the final stages of pregnancy, you make sure the slaves attending you are treated as if the were your children.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
-	<<elseif $PC.preg >= 36>>
-		Every kick from your eager child threatens to send your buttons flying.<<if $PC.pregMood == 1>> While you may be demanding and needy, you do everything you can to treat them as if they were your own children.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but you need a dick in you and you don't care from where.<</if>>
-	<<elseif $PC.preg >= 32>>
-		<<if $PC.pregMood == 1>> You can't help but enjoy having a slave suckle from you while you relax with her in your lap.<<elseif $PC.pregMood == 2>> You don't let your pregnancy get in the way when it comes to sex; you make sure your slaves learn new positions to accommodate your bulk.<</if>>
-	<<elseif $PC.preg >= 28>>
-		<<if $PC.pregMood == 1>> You catch yourself babying your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
-	<<elseif $PC.preg == 22>>
-		Something startling happened this week; while enjoying a slave, your belly button popped out!
-	<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
-		<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
-		<<set $slaves[_babyDaddy].PCKnockedUp++>>
-		Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
-	<</if>>
-	<</if>>
-	<<if $PC.ballsImplant > 3>>
-		You've pretty much given up on suit pants because of your monstrous balls, but you've replaced them with a custom kilt tailored to match the rest of your business attire. People would wonder why you're wearing such old fashioned clothes if your ridiculous bulge didn't make it obvious.
-	<<elseif $PC.ballsImplant == 3>>
-		You've had to get your suit pants retailored again to fit your enormous balls. It is obvious that the bulge in your pants is not your penis<<if $PC.preg >= 28>>; you've had several people rush to your aid under the mistaken belief that your child was crowning into your pants<</if>>.
-	<<elseif $PC.ballsImplant == 2>>
-		You've had to get your suit pants retailored to fit your huge balls. It gives you a striking figure, though.
-	<<elseif $PC.ballsImplant == 1>>
-		Your suit pants bulge more than ever with your big balls.
-	<</if>>
-	<<if $PC.dick == 1>>
-		<<if $PC.ballsImplant > 3>>
-			<<if $PC.butt > 2>>
-				<<if $PC.buttImplant == 1>>
-					Your custom kilt is also forced to stretch around your enormous rear, making the implants pretty obvious. With both your front and back struggling to get free of the restrictive cloth, it isn't unusual for one or the other to peek out.
-				<<else>>
-					Your custom kilt is also forced to stretch around your enormous rear, and bending over is basically asking for it to ride up all the way to your hips. With both your front and back struggling to get free of the restrictive cloth, it isn't unusual for one or the other to peek out.
-				<</if>>
-			<<elseif $PC.butt == 2>>
-				Your huge rear nearly spills out from the bottom of your custom kilt.
-			<<elseif $PC.butt == 1>>
-				Your custom kilt is strained by your big butt.
-			<</if>>
-		<<else>>
-			<<if $PC.butt > 2>>
-				<<if $PC.buttImplant == 1>>
-					You had to get your suit pants let out to contain your enormous rear. It does nothing to hide how big and round your asscheeks are, though.
-				<<else>>
-					You had to get your suit pants let out to contain your enormous rear. It can clearly be seen jiggling within them.
-				<</if>>
-			<<elseif $PC.butt == 2>>
-				Your huge rear threatens to tear apart your suit pants. You'll need to get them let out soon.
-			<<elseif $PC.butt == 1>>
-				Your suit pants are strained by your big butt.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if $PC.butt > 2>>
-			<<if $PC.buttImplant == 1>>
-				Your skirt covers your enormous butt but does nothing to hide its size and shape; you're beginning to show too much leg again, it might be time for a longer skirt.
-			<<else>>
-				Your skirt covers your enormous butt but does nothing to hide its size and fluidity; your rear is soft enough to fill out your skirt but not lift it up too far, it also translates every motion to the fabric, however.
-			<</if>>
-		<<elseif $PC.butt == 2>>
-			Your skirt covers your huge butt but does nothing to hide its size; in fact, you've had to start wearing a longer one to make up for the extra surface area.
-		<<elseif $PC.butt == 1>>
-			Your skirt covers your big butt but does nothing to hide its size.
-		<</if>>
-	<</if>>
-<</if>>
+<<PlayerBoobs>>
+<<PlayerBelly>>
+<<PlayerCrotch>>
+<<PlayerButt>>
 <<if $PC.boobs == 1 && $PC.boobsImplant == 0>>
 	<<if $PC.preg == 31>>
 		<<if $PC.boobsBonus == 0>>
diff --git a/src/pregmod/saAgent.tw b/src/pregmod/saAgent.tw
new file mode 100644
index 0000000000000000000000000000000000000000..1a146d883818100e04a52f1c0030d8c2818f1315
--- /dev/null
+++ b/src/pregmod/saAgent.tw
@@ -0,0 +1,381 @@
+:: SA agent [nobr]
+
+<<if $slaves[$i].boobsImplantType == 1>>
+	<<set $slaves[$i].boobsImplant += 50, $slaves[$i].boobs += 50>>
+	<<if ($slaves[$i].boobs > 50000)>>
+		<<set $slaves[$i].boobs -= 100, $slaves[$i].boobsImplant -= 100>>
+	<</if>>
+<</if>>
+<<if ($slaves[$i].boobsImplant > 1000)>>
+	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 1000) && (random(1,100) > 60)>>
+		<<set $slaves[$i].boobs += 50>>
+	<</if>>
+<<elseif ($slaves[$i].boobsImplant > 600)>>
+	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 500) && (random(1,100) > 60)>>
+		<<set $slaves[$i].boobs += 50>>
+	<</if>>
+<<elseif ($slaves[$i].boobsImplant > 0)>>
+	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 300) && (random(1,100) > 60)>>
+		<<set $slaves[$i].boobs += 50>>
+	<</if>>
+<</if>>
+<<if $slaves[$i].buttImplantType == 1>>
+	<<set $slaves[$i].buttImplant += .25, $slaves[$i].butt += .25>>
+	<<if ($slaves[$i].butt > 10)>>
+		<<set $slaves[$i].butt -= 1, $slaves[$i].buttImplant -= 1>>
+	<</if>>
+<</if>>
+
+<<if $slaves[$i].genes == "XX">>
+	<<if $slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1>>
+		<<if $slaves[$i].balls > 0>>
+			<<if $slaves[$i].hormoneBalance > 20>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 20>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<<else>>
+			<<if $slaves[$i].hormoneBalance > 60>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 60>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].balls > 0>>
+			<<if $slaves[$i].hormoneBalance > -20>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < -20>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<<else>>
+			<<if $slaves[$i].hormoneBalance > 20>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 20>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<</if>>
+	<</if>>
+<<elseif $slaves[$i].genes == "XY">>
+	<<if $slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1>>
+		<<if $slaves[$i].balls > 0>>
+			<<if $slaves[$i].hormoneBalance > 20>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 20>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<<else>>
+			<<if $slaves[$i].hormoneBalance > 40>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 40>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].balls > 0>>
+			<<if $slaves[$i].hormoneBalance > -40>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < -40>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<<else>>
+			<<if $slaves[$i].hormoneBalance > 20>>
+				<<set $slaves[$i].hormoneBalance -= 1>>
+			<<elseif $slaves[$i].hormoneBalance < 20>>
+				<<set $slaves[$i].hormoneBalance += 1>>
+			<</if>>
+		<</if>>
+	<</if>>
+<</if>>
+
+/* puberty - not announced for allowing surprise pregnancy */
+<<if $slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1>>
+	<<if $slaves[$i].pubertyXX == 0>>
+		<<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXX>>
+			<<set $slaves[$i].pubertyXX = 1>>
+		<</if>>
+	<</if>>
+<</if>>
+<<if $slaves[$i].balls > 0>>
+	<<if $slaves[$i].pubertyXY == 0>>
+		<<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXY>>
+			<<set $slaves[$i].pubertyXY = 1>>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<if $slaves[$i].inflation > 0>>
+	<<set $slaves[$i].inflation = 0, $slaves[$i].inflationType = "none", $slaves[$i].inflationMethod = 0, $slaves[$i].inflationSource = 0>>
+<</if>>
+
+<<if ($slaves[$i].preg > 0)>> /*EFFECTS OF PREGNANCY*/
+	<<if $slaves[$i].preg == 5>>
+		<<if $slaves[$i].pregSource == -1>>
+			<<set $PC.slavesKnockedUp++>>
+		<<elseif $slaves[$i].pregSource > 0>>
+			<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $slaves[$i].pregSource; })>>
+			<<set $slaves[_babyDaddy].slavesKnockedUp++>>
+		<</if>>
+	<</if>>
+	<<if ($slaves[$i].preg >= 10)>>
+		<<if $slaves[$i].physicalAge >= 18>>
+			<<if $slaves[$i].pregType >= 50>>
+				<<set _boobTarget = 10000>>
+			<<elseif $slaves[$i].pregType >= 30>>
+				<<set _boobTarget = 5000>>
+			<<elseif $slaves[$i].pregType >= 10>>
+				<<set _boobTarget = 2000>>
+			<<else>>
+				<<set _boobTarget = 1000>>
+			<</if>>
+		<<elseif $slaves[$i].physicalAge >= 13>>
+			<<if $slaves[$i].pregType >= 50>>
+				<<set _boobTarget = 5000>>
+			<<elseif $slaves[$i].pregType >= 30>>
+				<<set _boobTarget = 3200>>
+			<<elseif $slaves[$i].pregType >= 10>>
+				<<set _boobTarget = 1800>>
+			<<else>>
+				<<set _boobTarget = 800>>
+			<</if>>
+		<<elseif $slaves[$i].physicalAge >= 8>>
+			<<if $slaves[$i].pregType >= 50>>
+				<<set _boobTarget = 1800>>
+			<<elseif $slaves[$i].pregType >= 30>>
+				<<set _boobTarget = 1400>>
+			<<elseif $slaves[$i].pregType >= 10>>
+				<<set _boobTarget = 1000>>
+			<<else>>
+				<<set _boobTarget = 600>>
+			<</if>>
+		<<else>>
+			<<if $slaves[$i].pregType >= 50>>
+				<<set _boobTarget = 1000>>
+			<<elseif $slaves[$i].pregType >= 30>>
+				<<set _boobTarget = 800>>
+			<<elseif $slaves[$i].pregType >= 10>>
+				<<set _boobTarget = 600>>
+			<<else>>
+				<<set _boobTarget = 400>>
+			<</if>>
+		<</if>>
+		<<if ($slaves[$i].pregType >= 30)>>
+			<<if ($slaves[$i].weight <= 65)>>
+				<<set $slaves[$i].weight += 1>>
+			<</if>>
+			<<if (random(1,100) > 60)>>
+				<<if (($slaves[$i].boobs - $slaves[$i].boobsImplant) < _boobTarget)>>
+					<<set $slaves[$i].boobs += 200>>
+					<<if $slaves[$i].boobShape != "saggy" && $slaves[$i].preg > 32 && ($slaves[$i].breastMesh != 1)>>
+						<<set $slaves[$i].boobShape = "saggy">>
+					<</if>>
+				<</if>>
+				<<if ($slaves[$i].hips < 2)>>
+					<<set $slaves[$i].hips += 1>>
+				<</if>>
+				<<if ($slaves[$i].butt < 14)>>
+					<<set $slaves[$i].butt += 1>>
+				<</if>>
+			<</if>>
+		<<elseif ($slaves[$i].pregType >= 10)>>
+			<<if random(1,100) > 80 && (($slaves[$i].boobs - $slaves[$i].boobsImplant) < _boobTarget)>>
+				<<set $slaves[$i].boobs += 100>>
+				<<if $slaves[$i].boobShape != "saggy" && ($slaves[$i].breastMesh != 1)>>
+					<<if $slaves[$i].preg > random(32,82)>>
+						<<set $slaves[$i].boobShape = "saggy">>
+					<</if>>
+				<</if>>
+			<</if>>
+		<<elseif ($slaves[$i].boobs - $slaves[$i].boobsImplant) < _boobTarget>>
+			<<if random(1,100) > 80>>
+				<<set $slaves[$i].boobs += 50>>
+				<<if $slaves[$i].boobShape != "saggy" && $slaves[$i].preg > random(32,100) && ($slaves[$i].breastMesh != 1)>>
+					<<set $slaves[$i].boobShape = "saggy">>
+				<</if>>
+			<</if>>
+		<</if>>
+		<<if $slaves[$i].preg > 32 && $slaves[$i].physicalAge >= 18 && $slaves[$i].hips == 1 && $slaves[$i].hipsImplant == 0 && random(1,100) > 90>>
+			<<set $slaves[$i].hips += 1>>
+		<<elseif $slaves[$i].preg > 28 && $slaves[$i].physicalAge >= 18 && $slaves[$i].hips == 0 && $slaves[$i].hipsImplant == 0 && random(1,100) > 70>>
+			<<set $slaves[$i].hips += 1>>
+		<</if>>
+		<<if $slaves[$i].bellyPreg >= 1500>>
+			<<if setup.fakeBellies.includes($slaves[$i].bellyAccessory)>>
+				<<set $slaves[$i].bellyAccessory = "none">>
+			<</if>>
+			<<if ($slaves[$i].preg > 20) && ($slaves[$i].lactation == 0) && $slaves[$i].health >= -20 && $slaves[$i].weight > -30>>
+				<<if $slaves[$i].preg > random(18,30)>>
+					<<set $slaves[$i].lactation = 1>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<</if>> /* closes .preg >= 10 */
+<</if>> /* END PREG EFFECTS */
+
+<<if $slaves[$i].belly >= 1000000>>
+	<<if $slaves[$i].bellySag < 50>>
+		<<set $slaves[$i].bellySag += 1>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 1>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 20>>
+		<<set $slaves[$i].bellySagPreg += 1>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 5, $slaves[$i].bellySagPreg += 5>>
+	<</if>>
+<<elseif $slaves[$i].belly >= 750000>>
+	<<if $slaves[$i].bellySag < 30>>
+		<<set $slaves[$i].bellySag += 0.7>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.7>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 30>>
+		<<set $slaves[$i].bellySagPreg += 0.7>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 2, $slaves[$i].bellySagPreg += 2>>
+	<</if>>
+<<elseif $slaves[$i].belly >= 600000>>
+	<<if $slaves[$i].bellySag < 20>>
+		<<set $slaves[$i].bellySag += 0.5>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.5>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 20>>
+		<<set $slaves[$i].bellySagPreg += 0.5>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 1, $slaves[$i].bellySagPreg += 1>>
+	<</if>>
+<<elseif $slaves[$i].belly >= 450000>>
+	<<if $slaves[$i].bellySag < 15>>
+		<<set $slaves[$i].bellySag += 0.4>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.4>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 15>>
+		<<set $slaves[$i].bellySagPreg += 0.4>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 0.6, $slaves[$i].bellySagPreg += 0.6>>
+	<</if>>
+<<elseif $slaves[$i].belly >= 300000>>
+	<<if $slaves[$i].bellySag < 10>>
+		<<set $slaves[$i].bellySag += 0.3>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.3>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 10>>
+		<<set $slaves[$i].bellySagPreg += 0.3>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 0.5, $slaves[$i].bellySagPreg += 0.5>>
+	<</if>>
+<<elseif $slaves[$i].belly >= 100000>>
+	<<if $slaves[$i].bellySag < 10>>
+		<<set $slaves[$i].bellySag += 0.2>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.2>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 10>>
+		<<set $slaves[$i].bellySagPreg += 0.2>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 0.3, $slaves[$i].bellySagPreg += 0.3>>
+	<</if>>
+<<elseif ($slaves[$i].bellyPreg >= 10000) || ($slaves[$i].bellyImplant >= 10000)>>
+	<<if $slaves[$i].bellySag < 5>>
+		<<set $slaves[$i].bellySag += 0.1>>
+		<<if $slaves[$i].preg > 0>>
+			<<set $slaves[$i].bellySagPreg += 0.1>>
+		<</if>>
+	<<elseif $slaves[$i].preg > 0 && $slaves[$i].bellySagPreg < 5>>
+		<<set $slaves[$i].bellySagPreg += 0.1>>
+	<</if>>
+	<<if $slaves[$i].pregControl == "speed up">>
+		<<set $slaves[$i].bellySag += 0.2, $slaves[$i].bellySagPreg += 0.2>>
+	<</if>>
+<</if>>
+<<if $slaves[$i].bellySagPreg > $slaves[$i].bellySag>>
+	<<set $slaves[$i].bellySagPreg = $slaves[$i].bellySag>>
+<</if>>
+
+<<if $slaves[$i].bellySag > 0 && $slaves[$i].belly < 1500>>
+	<<if $slaves[$i].muscles > 95>>
+		<<if (random(1,100) > 1)>>
+			<<if $slaves[$i].bellySagPreg > 0>>
+				<<set $slaves[$i].bellySag -= 0.5, $slaves[$i].bellySagPreg -= 0.5>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0, $slaves[$i].bellySagPreg = 0>>
+				<</if>>
+			<<else>>
+				<<set $slaves[$i].bellySag -= 0.5>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<<elseif $slaves[$i].muscles >= 30>>
+		<<if (random(1,100) > 20)>>
+			<<if $slaves[$i].bellySagPreg > 0>>
+				<<set $slaves[$i].bellySag -= 0.4, $slaves[$i].bellySagPreg -= 0.4>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0, $slaves[$i].bellySagPreg = 0>>
+				<</if>>
+			<<else>>
+				<<set $slaves[$i].bellySag -= 0.4>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<<elseif $slaves[$i].muscles >= 5>>
+		<<if (random(1,100) > 40)>>
+			<<if $slaves[$i].bellySagPreg > 0>>
+				<<set $slaves[$i].bellySag -= 0.3, $slaves[$i].bellySagPreg -= 0.3>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0, $slaves[$i].bellySagPreg = 0>>
+				<</if>>
+			<<else>>
+				<<set $slaves[$i].bellySag -= 0.3>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if (random(1,100) > 60)>>
+			<<if $slaves[$i].bellySagPreg > 0>>
+				<<set $slaves[$i].bellySag -= 0.2, $slaves[$i].bellySagPreg -= 0.2>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0, $slaves[$i].bellySagPreg = 0>>
+				<</if>>
+			<<else>>
+				<<set $slaves[$i].bellySag -= 0.2>>
+				<<if $slaves[$i].bellySag < 0>>
+					<<set $slaves[$i].bellySag = 0>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<if ($slaves[$i].preg > 37) && ($slaves[$i].broodmother == 0) && (random(1,100) > 90)>>
+	<<set $slaves[$i].birthsTotal += $slaves[$i].pregType, $slaves[$i].preg = 0, $slaves[$i].pregWeek = 0, $slaves[$i].pregSource = 0, $slaves[$i].pregType = 0, $slaves[$i].pregKnown = 0>>
+	<<SetBellySize $slaves[$i]>>
+<<elseif ($slaves[$i].preg > 41) && ($slaves[$i].broodmother == 0)>>
+	<<set $slaves[$i].birthsTotal += $slaves[$i].pregType, $slaves[$i].preg = 0, $slaves[$i].pregWeek = 0, $slaves[$i].pregSource = 0, $slaves[$i].pregType = 0, $slaves[$i].pregKnown = 0>>
+	<<SetBellySize $slaves[$i]>>
+<<elseif ($slaves[$i].preg > 37) && ($slaves[$i].broodmother > 0)>>
+	<<if $slaves[$i].broodmother > 2>>
+		<<set $slaves[$i].birthsTotal += 12, $slaves[$i].preg = 37>>
+	<<else>>
+		<<set $slaves[$i].birthsTotal++, $slaves[$i].preg = 37>>
+	<</if>>
+	<<SetBellySize $slaves[$i]>>
+<</if>>
+
+<<if ($slaves[$i].hStyle != "shaved" && $slaves[$i].bald != 1 && $slaves[$i].haircuts == 0) && ($slaves[$i].hLength < 150)>>
+	<<set $slaves[$i].hLength += 1>>
+<</if>>
\ No newline at end of file
diff --git a/src/pregmod/seDeath.tw b/src/pregmod/seDeath.tw
index dc6b8af6848a395f6d92ea30dc9cc6ce59744336..861e0dd7d4889a11322cb71458ead8dd8c96bafe 100644
--- a/src/pregmod/seDeath.tw
+++ b/src/pregmod/seDeath.tw
@@ -1,6 +1,6 @@
 :: SE Death [nobr] 
  
-<<set $nextButton = "Continue", $returnTo = "Scheduled Event">>
+<<set $nextButton = "Continue", $nextLink = "Scheduled Event">>
 
 <<set _killedSlaves = []>>
 <<foreach _slave of $slaves>>
diff --git a/src/pregmod/seFCTVinstall.tw b/src/pregmod/seFCTVinstall.tw
index c0edec0224f51b7769cf16b2feeb8ca0fc9ed3c2..35585b6acbc62e70e1f88db5f8c02abb2f784bdf 100644
--- a/src/pregmod/seFCTVinstall.tw
+++ b/src/pregmod/seFCTVinstall.tw
@@ -8,4 +8,4 @@ You've been sitting in your office into the early afternoon going over bothersom
 
 You browse the guide: Homeshopping networks, random dramas, how-tos and a myriad of other things. Of more interest are some of the programs showing glimpses into foreign arcologies and how they are using the service to help mold society.
 
-<br><br><i>While FCTV excludes any dick-based, hyperpregnancy, and extreme content based on your settings, it may still hint at that content. If you wish to be absolutely sure, don't watch FCTV or do not install the receiver.</i>
+<br><br><i>While FCTV attempts to exclude any dick-based, pregnancy, hyperpregnancy, and extreme content based on your settings, it may still hint at that content, especially the more mundane of it. If you wish to be absolutely sure, don't watch FCTV or do not install the receiver.</i>
diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw
index 240d364815d0d5d08bea56f59e0d108250ecef55..86e8bf58dcdc74bb466c042090f799a9ef454141 100644
--- a/src/pregmod/seFCTVshows.tw
+++ b/src/pregmod/seFCTVshows.tw
@@ -36,6 +36,10 @@ Tired after a long day, you tell <<if $Concubine != 0>>@@.pink;$Concubine.slaveN
 	<<set $randShow = either(0,1,2,3,4,5,6,7,9,11,12)>>
 	There is an audible tone from your screen, which then displays a message: <i>Too much happiness detected, changing program.</i>
 <</if>>
+<<if $seePreg == 0 && ($randShow == 8 || $randShow == 5)>>
+	<<set $randShow = either(0,1,2,3,4,6,7,9,11,12)>>
+	There is an audible tone from your screen, which then displays a message: <i>Too much baking detected, changing program.</i>
+<</if>>
 <<if $seeDicks == 0 && $makeDicks == 0 && $randShow == 10>>
 	<<set $randShow = either(0,1,2,3,4,11,12)>>
 	There is an audible tone from your screen, which then displays a message: <i>Too many hot dogs detected, changing program.</i>
@@ -702,7 +706,7 @@ The offered price is <<print cashFormat($slaveCost)>>.
             <br><br>Finally, she let out a long relaxed sigh before saying, “On that note, I think it’s time to head back. Coming Sadie?” Sadie nodded and took up a position beside Annie. They linked arms and presented their bottoms to Scott. He gave both their asses a quick smack and said, “Off you go.” Annie wiggled her bottom. “Daddy,” she whined plaintively, her eyes bright with amusement. He sighed good-naturedly and gave both her cheeks a solid smack. She squealed and tittered, her eyes twinkling, then wobbled to door and out of sight.
             <br><br>The party made their way to an elevator past the dessert counter and went up a floor. The grocery portion of Blue Barn had much the same aesthetic as downstairs. All Cedar and Oak construction and pendant lamps hanging above. The hardwood floor was polished in the way only an obsessive compulsive could manage. Immediately out of the elevator were lines of wooden shelves and tables bearing Blue Barn merchandise. 
             <br><br>There were posters, coasters, clothing and all manner of little knickknacks, but the true star of the show were the plushies. Rows upon rows of them covered the shelves and tables arranged in little displays, all of them made in the image of cows working at the creamery. One table had the plushies in a mini concert hall, the ones on stage wielding toy instruments that had ‘Press me!’ stickers on them. Another table had them arranged in what looked to be a garden party.    Spread across two tables was a diorama of the creamery with plushies placed throughout it.  One plushie that looked distinctly like Martha was plopped behind the dessert counter. Another was placed near the elevators and if one looked closely they could see a matching cowslave sat drowsing amongst the merchandise.
-            <br><br>The cow was young, busty, even for the archology, and heavily pregnant. She wore what looked to be Holstein print pajamas with a hood made to look like a stylized cow. Her strawberry blond hair was mussed with sleep and she cradled a plushie in one arm. Truly, she looked like a daughter waiting for her daddy to come home. As the party approached, she began to stir.
+            <br><br>The cow was young, busty, even for the arcology, and heavily pregnant. She wore what looked to be Holstein print pajamas with a hood made to look like a stylized cow. Her strawberry blond hair was mussed with sleep and she cradled a plushie in one arm. Truly, she looked like a daughter waiting for her daddy to come home. As the party approached, she began to stir.
             <br><br>Scott reached out and began to gently pat her head. “How are you doing, Tabby?” Tabby just made a sound of contentment and pressed into his hand, luxuriating in his touch. After a few moments, she yawned and blinked, looking up at him. For a beat she just stared at him, her sleep addled brain struggling to process the sight in front of her. Finally, the penny dropped. 
             <br><br>She squeaked and sat up so quick one would think she had been hit with a cattle prod. With a panicked expression, she began to babble a fervent apology. “Master, I’m sorry I fell asleep.” She hiccupped and pleaded with him, on the verge of tears. “Please don’t tell Gabe I fell asleep again. She’ll yell at me for sure.” Scott just continued patting her head, kneeled beside her chair, and spoke in a calm tone, “Hey, hey, no need for tears. Just take a deep breath and calm down Tabby cat. I won’t tell Gabe.” 
             <br><br>Tabby sniffed, took a deep breath, and hiccupped. For a moment, she just relaxed into Scott’s ministrations before she frowned and said, “I thought you weren’t coming in today master.” He moved her hair out her eyes. “I figured I’d get some shopping done and show the newbie around,” he said with a nod to Cathy. Tabby gave her a bright smile. “Oh, nice to meet you. Would you like a free sample?” she asked gesturing to table next to her.
diff --git a/src/pregmod/seHuskSlaveDelivery.tw b/src/pregmod/seHuskSlaveDelivery.tw
index c312a6c5b981570b527ce85504446c93a0f65497..9e5a1837f04c77f939880ac8840ffe4e9bb8793d 100644
--- a/src/pregmod/seHuskSlaveDelivery.tw
+++ b/src/pregmod/seHuskSlaveDelivery.tw
@@ -99,8 +99,8 @@ A slave came in fitting the description you provided.
 <<set $saleDescription = 1, $applyLaw = 0>><<include "Long Slave Description">><<set $saleDescription = 0>>
 <br><br>
 <span id="result">
-<<if $cash >= $slaveCost>>
-	[[Accept the offered slave and contact the bodyswap surgeon.|husk Slave Swap Workaround][$cash -= $slaveCost]]
+<<if $cash >= $surgeryCost>>
+	[[Accept the offered slave and contact the bodyswap surgeon.|husk Slave Swap Workaround]]
 <<else>>
 	//You can't sustain her and thus must return her.//
 <</if>>
diff --git a/src/pregmod/widgets/assignmentFilterWidget.tw b/src/pregmod/widgets/assignmentFilterWidget.tw
index e45c1700dd95af38ac1e0fd09d27969fa9837bb7..46fb94c3f87a1d37a5185b0e00fdcbdc1a35a207 100644
--- a/src/pregmod/widgets/assignmentFilterWidget.tw
+++ b/src/pregmod/widgets/assignmentFilterWidget.tw
@@ -12,11 +12,11 @@
 */
 
 <<widget "resetAssignmentFilter">>
-	<<set $slaves.map(function(y){y.assignmentVisible = 1})>><<set $slaves.filter(function(x){return x.assignment == "live with your Head Girl" || x.assignment.includes("in the") || x.assignment == "work as a servant" || x.assignment.includes("be the") || x.assignment == "be your agent" || x.assignment == "be your Concubine" || x.assignment == "live with your agent"}).map(function(y){y.assignmentVisible = 0})>>
+	<<set $slaves.map(function(y){y.assignmentVisible = 1})>><<set $slaves.filter(function(x){return x.assignment.includes("in the") || x.assignment.includes("be the") || x.assignment.includes("live with") || (x.assignment.includes("be your") && x.assignment != "be your Head Girl") || x.assignment == "work as a servant"}).map(function(y){y.assignmentVisible = 0})>>
 <</widget>>
 
 <<widget "showallAssignmentFilter">>
-	<<set $slaves.map(function(y){y.assignmentVisible = 1})>><<set $slaves.filter(function(x){return x.assignment == "be your agent"}).map(function(y){y.assignmentVisible = 0})>>
+	<<set $slaves.map(function(y){y.assignmentVisible = 1})>><<set $slaves.filter(function(x){return x.assignment.includes("agent")}).map(function(y){y.assignmentVisible = 0})>>
 <</widget>>
 
 <<widget "arcadeAssignmentFilter">>
diff --git a/src/pregmod/widgets/bodySwapReaction.TW b/src/pregmod/widgets/bodySwapReaction.TW
index 47eb8a29afd858deb8f34e34ca160313f79d34f3..50bf02f8ae7f613b80e851506f7ef88c39660805 100644
--- a/src/pregmod/widgets/bodySwapReaction.TW
+++ b/src/pregmod/widgets/bodySwapReaction.TW
@@ -202,7 +202,7 @@ Now you only have to wait for her to wake up.
 	<<elseif $args[0].boobs > $args[1].boobs+100>> /*(Bigger breasts)*/
 		<<if $args[0].devotion > 20>>
 			She gives her larger chest a heft, marveling at their size. 
-		<<else>>>
+		<<else>>
 			She is confused for a moment at the larger breasts adorning her chest before she tentatively takes one in hand and experimentally hefts it to gauge their new weight.
 		<</if>>
 	<<else>>
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index ad2c3af2713e3f4c92773466df1ebe36d4b222f1..75b87cbd7d2cdc4e07be7663f25520316b4b227e 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -53,6 +53,7 @@
 <<set $args[0].boobShape = $args[1].boobShape>>
 <<set $args[0].nipples = $args[1].nipples>>
 <<set $args[0].nipplesPiercing = $args[1].nipplesPiercing>>
+<<set $args[0].nipplesAccessory = $args[1].nipplesAccessory>>
 <<set $args[0].areolae = $args[1].areolae>>
 <<set $args[0].areolaePiercing = $args[1].areolaePiercing>>
 <<set $args[0].boobsTat = $args[1].boobsTat>>
@@ -80,6 +81,7 @@
 <<set $args[0].preg = $args[1].preg>>
 <<set $args[0].pregSource = $args[1].pregSource>>
 <<set $args[0].pregType = $args[1].pregType>>
+<<set $args[0].broodmother = $args[1].broodmother>>
 <<set $args[0].labor = $args[1].labor>>
 <<set $args[0].csec = $args[1].csec>>
 <<set $args[0].bellyAccessory = $args[1].bellyAccessory>>
diff --git a/src/pregmod/widgets/playerDescriptionWidgets.tw b/src/pregmod/widgets/playerDescriptionWidgets.tw
new file mode 100644
index 0000000000000000000000000000000000000000..40c3e430e3a31ddaf4038372af568661d39c09e2
--- /dev/null
+++ b/src/pregmod/widgets/playerDescriptionWidgets.tw
@@ -0,0 +1,843 @@
+:: player description widgets [nobr widget]
+
+<<widget "PlayerBoobs">>
+
+<<set _passage = passage()>>
+
+<<if _passage == "Manage Personal Affairs">>
+	<<if $PC.boobsBonus > 2>>
+		you have a @@.orange;pair of H-cup breasts.@@
+		<<if $PC.boobsImplant == 1>>
+			They are big, round, and obviously implants. They barely move when you fuck your slaves.
+		<<else>>
+			They are all natural, heavy, and a bit saggy though they have some perk to them. Once they get going, it's hard to make them stop.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel even more enormous lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.boobsBonus == 2>>
+		you have a @@.orange;pair of G-cup breasts.@@
+		<<if $PC.boobsImplant == 1>>
+			They are kind of rounded and much too perky for their size to pass as real. They have a bit of bounce to them as you fuck a slave.
+		<<else>>
+			They are all natural and a little heavy. The bounce everywhere when you fuck your slaves.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel even more huge lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.boobsBonus == 1>>
+		you have a @@.orange;pair of F-cup breasts.@@
+		<<if $PC.boobsImplant == 1>>
+			They are nice, perky and not obviously implants. Though the way they move when you fuck a slave pins them as such.
+		<<else>>
+			They are nice and perky, despite their size. They bounce lewdly as you fuck your slaves.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.boobsBonus == -0.5>>
+		you have a @@.orange;pair of D-cup breasts.@@ They are nice, perky and bounce pleasantly as you fuck your slaves.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.boobsBonus == -1>>
+		you have a @@.orange;pair of C-cup breasts.@@ They are nice and perky, with just a little bounce when you fuck your slaves.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.boobs == 1>>
+		you have a @@.orange;healthy pair of DD breasts.@@ They are nice, perky and jiggle pleasantly with your every move.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel fuller lately; likely a side effect of your lactation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.title == 1>>
+		you have a @@.orange;masculine chest.@@
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your chest feels swollen; the beads of milk forming on your nipples tells you why.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			Your chest is covered in a light spray of freckles.
+		<<elseif $PC.markings == "heavily freckled">>
+			Your chest is covered in dense freckles.
+		<</if>>
+	<<else>>
+		@@you're flat.@@ You have nothing in the breast department.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your nipples cap a pair of painfully swollen bumps; milk beads from them at the slightest provocation.
+		<</if>>
+		<<if $PC.markings == "freckles">>
+			Your chest is covered in a light spray of freckles.
+		<<elseif $PC.markings == "heavily freckled">>
+			Your chest is covered in dense freckles.
+		<</if>>
+	<</if>>
+<<elseif _passage == "Economics">>
+	<<if $PC.career == "servant">>
+		<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
+			<<if $PC.boobsBonus > 2>>
+				You've gotten your dress let out to accommodate your huge bust.
+			<<elseif $PC.boobsBonus == 2>>
+				Your dress bulges with your big breasts.
+			<<elseif $PC.boobsBonus == 1>>
+				Your dress feels tight around your breasts.
+			<</if>>
+		<</if>>
+	<<elseif $PC.career == "escort">>
+		<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
+			<<if $PC.boobsBonus > 2>>
+				You top strains as it struggles to cover your nipples, letting your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> bust bulge lewdly around it.
+			<<elseif $PC.boobsBonus == 2>>
+				Your top can barely contain your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, heavily freckled<</if>> breasts, leaving you looking sluttier than ever.
+			<<elseif $PC.boobsBonus == 1>>
+				Your breasts spill over your slutty top<<if $PC.markings == "freckles">>, showing off your freckled cleavage<<elseif $PC.markings == "heavily freckled">>, freckle packed cleavage<</if>>.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $PC.boobs == 1 && $PC.boobsBonus > 0>>
+			<<if $PC.boobsBonus > 2>>
+				You've gotten your top retailored to fit your huge bust.
+			<<elseif $PC.boobsBonus == 2>>
+				Your top strains against your big breasts<<if $PC.markings == "freckles">>, revealing a peak of freckled cleavage<<elseif $PC.markings == "heavily freckled">>, revealing a peak of densely freckled cleavage<</if>>.
+			<<elseif $PC.boobsBonus == 1>>
+				Your top feels tight around your breasts.
+			<</if>>
+		<</if>>
+	<</if>>
+<<else>>
+	<<if $PC.boobsBonus > 2>>
+		Your breasts are 
+		<<if $PC.markings == "freckles">>
+			enormous with light freckling on the tops and in your cleavage.
+		<<elseif $PC.markings == "heavily freckled">>
+			enormous and covered in freckles, which are particularly dense in the cleft between them.
+		<<else>>
+			enormous.
+		<</if>>
+		<<if $PC.boobsImplant == 1>>
+			They are big, round, and obviously implants. They insist on maintaining their shape no matter how you move.
+		<<else>>
+			They are all natural, heavy, and a bit saggy though they retain some perk. Every single move you make sends ripples through your cleavage. You catch yourself watching them move in the mirror every so often.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel even more enormous lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.
+		<</if>>
+	<<elseif $PC.boobsBonus == 2>>
+		Your breasts are 
+		<<if $PC.markings == "freckles">>
+			huge with light freckling on the tops and in your cleavage.
+		<<elseif $PC.markings == "heavily freckled">>
+			huge and covered in freckles, which are particularly dense in the cleft between them.
+		<<else>>
+			huge.
+		<</if>>
+		<<if $PC.boobsImplant == 1>>
+			They are unnaturally perky for their size. When you shake them, they barely move.
+		<<else>>
+			They are all natural and a little heavy. They bounce lewdly when you shake them and take a little too long to calm down.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel even more huge lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.
+		<</if>>
+	<<elseif $PC.boobsBonus == 1>>
+		Your breasts are pretty 
+		<<if $PC.markings == "freckles">>
+			big with light freckling on the tops and in your cleavage.
+		<<elseif $PC.markings == "heavily freckled">>
+			big and covered in freckles, which are particularly dense in the cleft between them.
+		<<else>>
+			big.
+		<</if>>
+		<<if $PC.boobsImplant == 1>>
+			They are nice, perky and not obviously implants. They jiggle only slightly when you shake them though.
+		<<else>>
+			They are nice and perky, despite their size. They bounce lewdly when you shake them.
+		<</if>>
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.
+		<</if>>
+	<<elseif $PC.boobsBonus == -0.5>>
+		Your breasts are certainly
+		<<if $PC.markings == "freckles">>
+			eye-catching with light freckling on the tops and in your cleavage.
+		<<elseif $PC.markings == "heavily freckled">>
+			eye-catching and covered in freckles, which are particularly dense in the cleft between them.
+		<<else>>
+			eye-catching.
+		<</if>>
+		They are nice and perky, with just the right amount of bounce when you shake them.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.
+		<</if>>
+	<<elseif $PC.boobsBonus == -1>>
+		Your breasts are fairly average, at least to old world 
+		<<if $PC.markings == "freckles">>
+			standards, with light freckling on the tops and in your cleavage.
+		<<elseif $PC.markings == "heavily freckled">>
+			standards, and covered in freckles, which are particularly dense in the cleft between them.
+		<<else>>
+			standards.
+		<</if>>
+		They are very perky, but aren't big enough to have a nice bounce when you shake them.
+		<<if $PC.preg > 30 || $PC.births > 0>>
+			Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.
+		<</if>>
+	<<elseif $PC.boobs == 1>>
+		Your breasts are on the larger side of things<<if $PC.preg > 30 || $PC.births > 0>>, though you could do without the wetspots forming over your nipples<</if>>.
+		<<if $PC.markings == "freckles">>
+			The tops of your breasts and your cleavage are lightly freckled.
+		<<elseif $PC.markings == "heavily freckled">>
+			They are covered in freckles, which are particularly dense in the cleft between them.
+		<</if>>
+	<<elseif $PC.title == 1>>
+		Your chest is quite masculine<<if $PC.preg > 30 || $PC.births > 0>>, though the pair of wetspots forming over your nipples suggest otherwise,<</if>><<if $PC.markings == "freckles">> and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">> and covered in dense freckles<</if>>.
+	<<else>>
+		Your chest is non-existant<<if $PC.preg > 30 || $PC.births > 0>>, save for the pair of bulging milk glands beneath your nipples,<</if>><<if $PC.markings == "freckles">> and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">> and covered in dense freckles<</if>>.
+	<</if>>
+<</if>>
+
+<</widget>>
+
+<<widget "PlayerBelly">>
+
+<<set _passage = passage()>>
+
+<<if _passage == "Manage Personal Affairs">>
+	<<if $PC.preg > 0>>
+		<<if $PC.belly >= 120000>>
+			@@.red;Your belly is coated with stretch marks and is taut as a drum; you don't know how much more your poor womb can endure.@@ You can barely even leave your bed without a helping hand. Kicks can almost constantly be seen dotting its surface. You give it a pat for good measure, only encouraging your octuplets to squirm in excitement.<<if $PC.dick == 1>> You watch as your dick hardens from the prostate stimulation; you steady yourself for the coming orgasm.<</if>>
+		<<elseif $PC.belly >= 105000>>
+			You have trouble getting up and sitting down. Even standing while supporting your @@.orange;massive belly@@ has become an exhausting endeavor.
+		<<elseif $PC.belly >= 90000>>
+			You can @@.orange;barely reach around your gravid mass@@ any longer. Even the shortest waddle is exhausting.
+		<<elseif $PC.belly >= 75000>>
+			Your @@.orange;belly is starting to become worrying;@@ you feel over-filled at all times, and your children like to remind you just how full you are.
+		<<elseif $PC.belly >= 60000>>
+			You're @@.orange;definitely having multiples,@@ there is no denying it at this point. All you can do is try to relax and keep trying to stave off the stretch marks.
+		<<elseif $PC.belly >= 45000>>
+			You both look and feel enormous, your @@.orange;belly juts out so much now.@@ You've grown so much you now have trouble viewing yourself in mirror.
+		<<elseif $PC.belly >= 30000>>
+			Whenever you have the chance, you prefer to stay naked instead of stretching out your clothing with your @@.orange;giant pregnant belly.@@
+		<<elseif $PC.belly >= 14000>>
+			Your @@.orange;so gravid@@ you have trouble seeing the entirety of your huge belly.
+		<<elseif $PC.belly >= 12000>>
+			You can barely wrap your arms around your @@.orange;huge pregnant belly,@@ and when you do, your popped navel reminds you of the bun<<if $PC.pregType > 0>>s<</if>> in your oven.
+		<<elseif $PC.belly >= 10000>>
+			Your @@.orange;pregnancy has gotten quite huge,@@ none of your clothes fit it right.
+		<<elseif $PC.belly >= 7000>>
+			Your @@.orange;pregnant belly juts out annoyingly far,@@ just getting dressed is a pain now.
+		<<elseif $PC.belly >= 5000>>
+			Your @@.orange;belly has gotten quite large with child;@@ it is beginning to get the way of sex and business.
+		<<elseif $PC.belly >= 1500>>
+			Your @@.orange;belly is now large enough that there is no hiding it.@@
+		<<elseif $PC.belly >= 500>>
+			Your @@.orange;belly is rounded by your early pregnancy.@@
+		<<elseif $PC.belly >= 250>>
+			Your @@.orange;lower belly is beginning to stick out,@@ you're definitely pregnant.
+		<<elseif $PC.belly >= 100>>
+			Your @@.orange;belly is slightly swollen;@@ combined with your missed period, odds are you're pregnant.
+		<<elseif $PC.belly < 100>>
+			Your @@.red;period hasn't happened in some time,@@ you might be pregnant.
+		<</if>>
+		<<if $PC.preg >= 41>>
+			You don't know why you even bother getting out of bed; you are @@.orange;overdue and ready to drop@@ at any time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state.
+		<<elseif $PC.preg >= 39>>
+			You feel absolutely massive; your @@.orange;full-term belly@@ makes your life as arcology owner very difficult.
+		<</if>>
+	<<elseif $PC.belly >= 1500>>
+		Your belly is still very distended from your recent pregnancy.
+	<<elseif $PC.belly >= 500>>
+		Your belly is still distended from your recent pregnancy.
+	<<elseif $PC.belly >= 250>>
+		Your belly is still bloated from your recent pregnancy
+	<<elseif $PC.belly >= 100>>
+		Your belly is still slightly swollen after your recent pregnancy.
+	<</if>>
+<<elseif _passage == "Economics">>
+	<<if $PC.career == "servant">>
+		<<if $PC.preg > 0>>
+			<<if $PC.belly >= 120000>>
+				You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has soundly defeated the seams of your dress<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm<</if>>.
+			<<elseif $PC.belly >= 105000>>
+				You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. Your frumpy dress is also at its limit, and much to your annoyance, your children will not stay still enough to let you fix it.
+			<<elseif $PC.belly >= 90000>>
+				You may have a problem. You took fertility drugs, but you shouldn't be getting this big. Judging by how far along you are, you must be carrying 
+				<<if $PC.pregType == 8>>
+					octuplets
+				<<elseif $PC.pregType == 7>>
+					septuplets
+				<<else>>
+					sextuplets.
+				<</if>>
+				Your Master always wanted said he wanted a big family, too bad he isn't here to see this. Your dress is also starting to get tight, but it's far less of a concern at this point.
+			<<elseif $PC.belly >= 75000>>
+				Your belly is starting to become worrying. You're positively gigantic and quite tired. Though on the plus side, your dress is rather form fitting now.
+			<<elseif $PC.belly >= 60000>>
+				Your new outfit is handling your enormous belly quite well, though it does nothing to hide your size. Everyone can tell you'll be having lots of babies.
+			<<elseif $PC.belly >= 45000>>
+				You both look and feel enormous, your belly juts out so much now. You found a rather frumpy looking maid outfit in a shop; it's not the most attractive thing, but it'll hold nearly any belly.
+			<<elseif $PC.belly >= 30000>>
+				You feel absolutely gigantic; you look like you're full-term with twins<<if $PC.pregType == 2>> (which you are)<</if>>. Your restitched dress is once more at its limit.
+			<<elseif $PC.belly >= 15000>>
+				You've taken the time to let out your own dress so that you can look proper even with a belly as big as any full-term woman.
+			<<elseif $PC.belly >= 14000>>
+				Your dress is at its capacity, any bigger and you'd risk tearing it at the seams, though your late master did make sure his girls were well dressed even when they were fully rounded with his child.
+			<<elseif $PC.belly >= 12000>>
+				You keep bumping into things with your huge belly; you're used to it though, <<if $PC.birthMaster > 0>>your first pregnancy was a twinner!<<else>>your late Master liked to keep a big fake belly around your middle.<</if>>
+			<<elseif $PC.belly >= 10000>>
+				Your huge pregnant belly is tiring to carry around, but you're well versed in moving about with a rounded middle.
+			<<elseif $PC.belly >= 7000>>
+				You've stopped bothering to tie your apron behind you, allowing your dress the freedom to stretch with your growing child.
+			<<elseif $PC.belly >= 5000>>
+				Your maid's outfit is rounded out by your baby-filled belly; not only is it obvious, but it is slowing you down in your day to day affairs.
+			<<elseif $PC.belly >= 3000>>
+				You're starting to get pretty big; you feel like all eyes are centered on her baby-filled middle.
+			<<elseif $PC.belly >= 1500>>
+				Your belly is now large enough that there is no hiding it. After you've let out your apron, your dress fits nicely again.
+			<<elseif $PC.belly >= 500>>
+				Your dress tightly clings to your early pregnancy, though it, your apron, and your previous experience hide it well.
+			<<elseif $PC.belly >= 250>>
+				Your apron holds your dress tightly to your bloated middle.
+			<<elseif $PC.belly >= 100>>
+				Your dress and apron feel tight around your middle.
+			<</if>>
+			<<if $PC.preg >= 41>>
+				Your bab<<if $PC.pregType > 1>>ies are<<else>>y is<</if>> overdue and your master isn't here anymore to comfort your exhausted body. You try your best, <<if $PC.pregSource == -3>>drawing strength from the knowledge that you carry your late master's legacy within you<<else>>but deep down you are saddened that your child isn't his<</if>>.<<if $PC.pregMood == 1>> However, thanks to all your mothering, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you try to fill the hole left by your late master.<</if>>
+			<<elseif $PC.preg >= 39>>
+				Every action you take is exhausting, and even though your slaves are more than capable of serving your every desire, you refuse to slow down with your duties.<<if $PC.pregMood == 1>> Though you definitely appreciate their aid.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
+			<<elseif $PC.preg >= 36>>
+				Your child<<if $PC.pregType > 1>>ren<</if>> happily kicks away inside your womb, and each time a small bump appears on the outside of your dress.<<if $PC.pregMood == 1>> While hormones may have you demanding and needy, you do everything you can to treat your slaves as if they were your own children.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but your former master loved to fuck you while you were pregnant with his children and your body misses his touch.<</if>>
+			<<elseif $PC.preg >= 32>>
+				<<if $PC.pregMood == 1>> You can't help but enjoy having a slave suckle from you while you relax with her in your lap.<<elseif $PC.pregMood == 2>> You know how to have sex while pregnant, and as such, so will your slaves.<</if>>
+			<<elseif $PC.preg >= 28>>
+				<<if $PC.pregMood == 1>> You catch yourself babying your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
+			<<elseif $PC.preg == 22>>
+				Something startling happened this week; while enjoying a slave, your belly button popped out!
+			<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
+				<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
+				<<set $slaves[_babyDaddy].PCKnockedUp++>>
+				Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
+			<</if>>
+		<</if>>
+	<<elseif $PC.career == "escort">>
+		<<if $PC.preg > 0>>
+			<<if $PC.belly >= 120000>>
+				You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has seized control as your dominant aspect<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much. It's good for business when you orgasm lewdly and cum your bottoms<</if>>.
+			<<elseif $PC.belly >= 105000>>
+				You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. None of your poses work with your gravid body either and you're practically popping out of your skimpiest outfit.
+			<<elseif $PC.belly >= 90000>>
+				You may have a problem. You know you took fertility drugs, but you weren't supposed to get this big! Feeling yourself up, you'd fancy a guess that there are about
+				<<if $PC.pregType == 8>>
+					a dozen babies
+				<<elseif $PC.pregType == 7>>
+					ten babies
+				<<else>>
+					eight babies
+				<</if>>
+				 in your belly.
+			<<elseif $PC.belly >= 75000>>
+				Your belly is starting to become worrying to you. You're positively gigantic and quite tired of it. The last thing on peoples' minds these days is fucking you too.
+			<<elseif $PC.belly >= 60000>>
+				You feel sexy with such a huge belly, but it sure is tiring. Everyone can also tell you'll be having lots of babies. A boon to business, since everyone knows you ride bareback.
+			<<elseif $PC.belly >= 45000>>
+				You both look and feel enormous, your belly juts out so much now. Your strategy worked! Eyes always end up locked onto you or your pregnancy, but they quickly return to your milky breasts.
+			<<elseif $PC.belly >= 30000>>
+				You feel absolutely gigantic; you look like you're full-term with twins. You find the skimpiest outfit you can to complement your size; if people won't notice your other assets, then they might as well not notice your outfit either.
+			<<elseif $PC.belly >= 14000>>
+				You don't even bother to try to be slutty anymore, your full-term globe of a belly just steals all the attention away from your other assets.
+			<<elseif $PC.belly >= 12000>>
+				Your huge pregnant belly hides your crotch.
+			<<elseif $PC.belly >= 10000>>
+				Your huge pregnant belly is tiring to carry around and is beginning to draw attention away from your other features.
+			<<elseif $PC.belly >= 7000>>
+				You've switched to even skimpier clothing to show off your big pregnant belly.
+			<<elseif $PC.belly >= 5000>>
+				Your outfit is only enhanced by your baby-filled belly; mostly because it adds to your slutty appearance. Though it definitely is impacting your business.
+			<<elseif $PC.belly >= 3000>>
+				Your slutty bottoms are beginning to get hidden by your rounded middle.
+			<<elseif $PC.belly >= 1500>>
+				Your slutty bottoms sexily hug your swollen middle.
+			<<elseif $PC.belly >= 500>>
+				Your exposed midriff bulges out enough to give away your growing pregnancy.
+			<<elseif $PC.belly >= 250>>
+				Your exposed midriff is noticeably bloated.
+			<<elseif $PC.belly >= 100>>
+				When you look down, you can't help but notice your belly sticking out a little.
+			<</if>>
+			<<if $PC.preg >= 41>>
+				You can barely pull yourself and your overdue child out of bed; every action is a chore, you keep bumping things, and your child just won't calm down.<<if $PC.pregMood == 1>> However, thanks to all your tenderness, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you satisfy your desires.<</if>>
+			<<elseif $PC.preg >= 39>>
+				Every action you take is exhausting; though your slaves are more than capable of serving your every whim.<<if $PC.pregMood == 1>> Even in the final stages of pregnancy, you make sure the slaves attending you are treated as if the were your favorite clients.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
+			<<elseif $PC.preg >= 36>>
+				Every kick from your eager child threatens to dislodge your breasts from your struggling top.<<if $PC.pregMood == 1>> While you may be demanding and needy, you do everything you can to treat them as if they were a virgin client.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but you need a dick in you even more than usual.<</if>>
+			<<elseif $PC.preg >= 32>>
+				<<if $PC.pregMood == 1>> You can't help but enjoy having a slave, or client, suckle from you while you relax with them in your lap.<<elseif $PC.pregMood == 2>> You don't let your pregnancy get in the way when it comes to sex; you make sure your slaves, and clients, learn just how much you know about sex.<</if>>
+			<<elseif $PC.preg >= 28>>
+				<<if $PC.pregMood == 1>> You catch yourself playfully teasing your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
+			<<elseif $PC.preg == 22>>
+				Something startling happened this week; while enjoying a slave, your belly button popped out!
+			<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
+				<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
+				<<set $slaves[_babyDaddy].PCKnockedUp++>>
+				Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $PC.preg > 0>>
+			<<if $PC.belly >= 120000>>
+				You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-meter from your front and has soundly defeated your maternity suit<<if $PC.dick == 1>>. Occasionally one of the bottoms manages to land a series of hits to your prostate, not that you mind as much, save for when they keep at it and you a can't restrain your orgasm. The last thing you want to do in a meeting is spontaneously orgasm and cum your in clothes<</if>>.
+			<<elseif $PC.belly >= 105000>>
+				You can barely function any more. You're so big and heavy that even the simplest of actions requires both intense effort and thought just to get it done. Your suit buttons keep popping, and much to your annoyance, your children will not stay still enough to let you redo them.
+			<<elseif $PC.belly >= 90000>>
+				You may have a problem. You took fertility drugs, but you shouldn't be getting this big. Judging by how far along you are, you must be carrying 
+				<<if $PC.pregType == 8>>
+					octuplets
+				<<elseif $PC.pregType == 7>>
+					septuplets
+				<<else>>
+					sextuplets.
+				<</if>>
+				Your suit is also starting to get tight, but it's far less of a concern at this point.
+			<<elseif $PC.belly >= 75000>>
+				Your belly is starting to become worrying. You're positively gigantic and quite tired. As an added stress, your maternity suit highlights your pregnancy.
+			<<elseif $PC.belly >= 60000>>
+				Your new outfit is handling your enormous belly quite well, though it does nothing to hide your size. Everyone can tell you'll be having lots of babies and judges you accordingly.
+			<<elseif $PC.belly >= 45000>>
+				You both look and feel enormous, your belly juts out so much now. You tailor finally managed to get you a bigger maternity suit, one with extra give in the middle, but you feel it draws attention right to your gravidity.
+			<<elseif $PC.belly >= 30000>>
+				You feel absolutely gigantic; you look like you're full-term with twins<<if $PC.pregType == 2>> (which you are)<</if>>. Having such a big belly in such poor attire weighs heavily under the public's eye.
+			<<elseif $PC.belly >= 15000>>
+				You don't even bother to try to cover your full-term sized pregnancy, opting to just let it hang out of your old clothing. Every action you take is exhausting; though your slaves are more than capable of serving your every desire.
+			<<elseif $PC.belly >= 12000>>
+				Your huge pregnant belly strains the buttons on your maternity suit.
+			<<elseif $PC.belly >= 10000>>
+				Your huge pregnant belly is tiring to carry around and is beginning to stretch out your new clothes.
+			<<elseif $PC.belly >= 7000>>
+				You've switched to using what can only be called formal maternity wear to cover your pregnant belly.
+			<<elseif $PC.belly >= 5000>>
+				You can barely cover your baby filled belly; not only is it obvious, but it is getting in the way of your business.
+			<<elseif $PC.belly >= 3000>>
+				You're starting to get pretty big; you feel like everyone just focuses on your gravidity now.
+			<<elseif $PC.belly >= 1500>>
+				Your belly is now large enough that there is no hiding it. Your top strains to cover it.
+			<<elseif $PC.belly >= 500>>
+				Your top tightly clings to your early pregnancy, though you manage to conceal it well enough.
+			<<elseif $PC.belly >= 250>>
+				Your top tightly clings to your bloated middle.
+			<<elseif $PC.belly >= 100>>
+				Your top feels oddly tight around your middle.
+			<</if>>
+			<<if $PC.preg >= 41>>
+				You can barely pull yourself and your overdue child out of bed; every action is a chore, you keep bumping things, and your child just won't calm down.<<if $PC.pregMood == 1>> However, thanks to all your mothering, your slaves are more than happy to do everything they can for you.<<elseif $PC.pregMood == 2>> Your dicked slaves are terrified of being seen by you, knowing full well that they will be bearing the full weight of your body as you satisfy your desires.<</if>>
+			<<elseif $PC.preg >= 39>>
+				<<if $PC.pregMood == 1>> Even in the final stages of pregnancy, you make sure the slaves attending you are treated as if the were your children.<<elseif $PC.pregMood == 2>> Your hormones practically rule you, leading you to demand your slaves to be prepared to pleasure you at a moments notice. Your needy cunt hungers for dick and you don't care what it is attached to right now.<</if>>
+			<<elseif $PC.preg >= 36>>
+				Every kick from your eager child threatens to send your buttons flying.<<if $PC.pregMood == 1>> While you may be demanding and needy, you do everything you can to treat them as if they were your own children.<<elseif $PC.pregMood == 2>> You know it's unbecoming for an arcology owner, but you need a dick in you and you don't care from where.<</if>>
+			<<elseif $PC.preg >= 32>>
+				<<if $PC.pregMood == 1>> You can't help but enjoy having a slave suckle from you while you relax with her in your lap.<<elseif $PC.pregMood == 2>> You don't let your pregnancy get in the way when it comes to sex; you make sure your slaves learn new positions to accommodate your bulk.<</if>>
+			<<elseif $PC.preg >= 28>>
+				<<if $PC.pregMood == 1>> You catch yourself babying your slaves from time to time.<<elseif $PC.pregMood == 2>>Your sex drive has become unquenchable as of late.<</if>>
+			<<elseif $PC.preg == 22>>
+				Something startling happened this week; while enjoying a slave, your belly button popped out!
+			<<elseif $PC.preg == 8 && $PC.pregSource > 0>>
+				<<set _babyDaddy = $slaves.findIndex(function(s) { return s.ID == $PC.pregSource; })>>
+				<<set $slaves[_babyDaddy].PCKnockedUp++>>
+				Rumors spread among your slaves that your middle is swollen with $slaves[_babyDaddy].slaveName's child. They're not wrong, though <<if $slaves[_babyDaddy].devotion > 20>>$slaves[_babyDaddy].slaveName is broken enough to not try and use it against you. In fact, it might even draw her closer to you<<else>>you'd have liked it to have kept that from $slaves[_babyDaddy].slaveName, lest the rebellious bitch uses it to remain defiant<</if>>.
+			<</if>>
+		<</if>>
+	<</if>>
+<<else>>
+	<<if $PC.preg > 0>>
+		<<if $PC.belly >= 120000>>
+			Your belly is coated with stretch marks and is taut as a drum; you don't know how much more your poor womb can endure. Kicks can almost constantly be seen dotting its surface. You give it a pat for good measure, only encouraging your octuplets to squirm in excitement.<<if $PC.dick == 1>> As your dick hardens under the prostate stimulation, you call for a slave to receive the incoming load.<</if>>
+		<<elseif $PC.belly >= 105000>>
+			Getting out of your chair is practically a dream at this point. It takes far too much effort to do it on your own and is a little embarrassing to ask help with.
+		<<elseif $PC.belly >= 90000>>
+			You can barely reach around your gravid mass any longer. You've also had to reinforce your chair under your growing weight.
+		<<elseif $PC.belly >= 75000>>
+			Your belly is starting to become worrying; you feel over-filled at all times and your children like to remind you just how stuffed you are.
+		<<elseif $PC.belly >= 60000>>
+			You're definitely having multiples, there is no denying it at this point. All you can do is try to relax and keep trying to stave off the stretch marks.
+		<<elseif $PC.belly >= 45000>>
+			You both look and feel enormous, your belly juts out so much now. You stand no chance of sitting at your desk normally and have taken to angling you chair and belly to the side instead.
+		<<elseif $PC.belly >= 30000>>
+			Your chair has taken to creaking ominously whenever you shift your pregnant bulk while you've taken to keeping your belly uncovered to give it room.
+		<<elseif $PC.belly >= 14000>>
+			You can barely fit before your desk anymore and have had to take measures to accommodate your gravidity.
+		<<elseif $PC.belly >= 12000>>
+			You can barely wrap your arms around your huge pregnant belly, and when you do, your popped navel reminds you just how full you are.
+		<<elseif $PC.belly >= 10000>>
+			Your pregnancy has gotten quite huge, none of your clothes fit it right.
+		<<elseif $PC.belly >= 7000>>
+			Your pregnant belly juts out annoyingly far, just getting dressed is a pain now.
+		<<elseif $PC.belly >= 5000>>
+			Your belly has gotten quite large with child; it is beginning to get the way of sex and business.
+		<<elseif $PC.belly >= 1500>>
+			Your belly is now large enough that there is no hiding it.
+		<<elseif $PC.belly >= 500>>
+			Your belly is rounded by your early pregnancy.
+		<<elseif $PC.belly >= 250>>
+			Your lower belly is beginning to stick out, you're definitely pregnant.
+		<<elseif $PC.belly >= 100>>
+			Your belly is slightly swollen; combined with your missed period, odds are you're pregnant.
+		<<elseif $PC.belly < 100>>
+			Your period hasn't happened in some time, you might be pregnant.
+		<</if>>
+		<<if $PC.preg >= 41>>
+			You don't know why you even bother getting out of bed; you are overdue and ready to drop at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state.
+		<<elseif $PC.preg >= 39>>
+			You feel absolutely massive; your full-term belly makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close.
+		<</if>>
+	<<elseif $PC.belly >= 1500>>
+		Your belly is still very distended from your recent pregnancy.
+	<<elseif $PC.belly >= 500>>
+		Your belly is still distended from your recent pregnancy.
+	<<elseif $PC.belly >= 250>>
+		Your belly is still bloated from your recent pregnancy
+	<<elseif $PC.belly >= 100>>
+		Your belly is still slightly swollen after your recent pregnancy.
+	<</if>>
+<</if>>
+
+<</widget>>
+
+<<widget "PlayerCrotch">>
+
+<<set _passage = passage()>>
+
+<<if _passage == "Manage Personal Affairs">>
+	<<if $PC.dick == 1 && $PC.vagina == 1>>
+		an @@.orange;above average penis@@
+		<<if $PC.balls > 2>>
+			that is constantly streaming precum,
+		<<elseif $PC.balls > 0>>
+			that is constantly dripping precum,
+		<</if>>
+		and a pair of
+		<<if $PC.ballsImplant > 3>>
+			@@.orange;monstrous, heavy balls@@ roughly the size of small watermelons thanks to a combination of growth hormones and gel injections; it's impossible to sit normally,
+			<<if $ballsAccessibility == 1>>
+				but your penthouse has been redesigned with oversized balls in mind. There are plenty of chairs capable of handling you littering the penthouse.
+			<<else>>
+				you rest on the edge of your chair, allowing your oversized balls to dangle precariously.
+			<</if>>
+			You've given up on wearing pants around the penthouse, and their bulging mass is so gargantuan that people assume they're fake, but every slave you fuck gets a distended belly from all the cum you pump into them. They make just about everything you do difficult: sitting, walking, fucking; but they certainly make life interesting.
+		<<elseif $PC.ballsImplant == 3>>
+			@@.orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone probably assumes they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly interesting.
+		<<elseif $PC.ballsImplant == 2>>
+			@@.orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting.
+		<<elseif $PC.ballsImplant == 1>>
+			@@.orange;large balls;@@ you can certainly feel them as you move about.
+		<<else>>
+			@@.orange;normal, uneventful balls.@@
+		<</if>>
+		Tucked away beneath them; a
+		<<if $PC.newVag == 1>>
+			@@.orange;tight vagina.@@ Your pussy is very resilient, you shouldn't be able to stretch it out again.
+		<<elseif $PC.career == "escort">>
+			@@.red;very loose vagina.@@ Years of whoring will do that to a girl.
+		<<elseif $PC.births >= 10>>
+			@@.red;rather loose vagina,@@ stretched from your many children.
+		<<elseif $PC.career == "servant">>
+			@@.red;rather loose vagina.@@ Your master fucked you several times a day; him and his children have wreaked havoc upon your pussy.
+		<<elseif $PC.births > 2>>
+			@@.orange;loose vagina,@@ stretched from your several children.
+		<<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">>
+			@@.lime;reasonably tight vagina.@@ You've had some fun during your previous career.
+		<<elseif $PC.births > 0>>
+			@@.lime;reasonably tight vagina.@@ It's handled childbirth well enough.
+		<<else>>
+			@@.lime;tight vagina.@@ You're no virgin, but you've taken care of yourself.
+		<</if>>
+	<<elseif $PC.dick == 1>>
+		an @@.orange;above average penis@@
+		<<if $PC.balls > 2>>
+			that is constantly streaming precum,
+		<<elseif $PC.balls > 0>>
+			that is constantly dripping precum,
+		<</if>>
+		and a pair of
+		<<if $PC.ballsImplant > 3>>
+			@@.orange;monstrous, heavy balls@@ roughly the size of small watermelons thanks to a combination of growth hormones and gel injections; it's impossible to sit normally,
+			<<if $ballsAccessibility == 1>>
+				but your penthouse has been redesigned with oversized balls in mind. There are plenty of chairs capable of handling you littering the penthouse.
+			<<else>>
+				you rest on the edge of your chair, allowing your oversized balls to dangle precariously.
+			<</if>>
+			You've given up on wearing pants around the penthouse, and their bulging mass is so gargantuan that people assume they're fake, but every slave you fuck gets a distended belly from all the cum you pump into them. They make just about everything you do difficult: sitting, walking, fucking; but they certainly make life interesting.
+		<<elseif $PC.ballsImplant == 3>>
+			@@.orange;enormous, heavy balls@@ roughly the size of cantaloupes; it's difficult to sit normally, your clothes barely fit, and everyone probably assumes they are fake, but every slave you fuck gets a distinct slap with each thrust. They get in the way of nearly everything you do: sitting, walking, fucking; but they make life certainly interesting.
+		<<elseif $PC.ballsImplant == 2>>
+			@@.orange;huge balls@@ roughly the size of softballs; they are pretty heavy, but make sex and day-to-day affairs interesting.
+		<<elseif $PC.ballsImplant == 1>>
+			@@.orange;large balls;@@ you can certainly feel them as you move about.
+		<<else>>
+			@@.orange;normal, uneventful balls.@@
+		<</if>>
+	<<else>>
+		a
+		<<if $PC.newVag == 1>>
+			@@.orange;tight vagina.@@ Your pussy is very resilient, you shouldn't be able to stretch it out again.
+		<<elseif $PC.career == "escort">>
+			@@.red;very loose vagina.@@ Years of whoring will do that to a girl.
+		<<elseif $PC.births >= 10>>
+			@@.red;rather loose vagina,@@ stretched from your many children.
+		<<elseif $PC.career == "servant">>
+			@@.red;rather loose vagina.@@ Your master fucked you several times a day; him and his children have wreaked havoc upon your pussy.
+		<<elseif $PC.births > 2>>
+			@@.orange;loose vagina,@@ stretched from your several children.
+		<<elseif $PC.career == "gang" || $PC.career == "celebrity" || $PC.career == "wealth">>
+			@@.lime;reasonably tight vagina.@@ You've had some fun during your previous career.
+		<<elseif $PC.births > 0>>
+			@@.lime;reasonably tight vagina.@@ It's handled childbirth well enough.
+		<<else>>
+			@@.lime;tight vagina.@@ You're no virgin, but you've taken care of yourself.
+		<</if>>
+	<</if>>
+<<elseif _passage == "Economics">>
+	<<if $PC.career == "servant">>
+		<<if $PC.ballsImplant > 3>>
+			Your dress and apron bulges with your enormous balls, you had to have your dresses tailored so that the swinging mass of your sack would stop bursting seams inadvertently.
+		<<elseif $PC.ballsImplant == 3>>
+			Your dress and apron bulges with your enormous balls.
+		<<elseif $PC.ballsImplant == 2>>
+			Your dress hides your huge balls, but it does nothing to hide your altered gait.
+		<<elseif $PC.ballsImplant == 1>>
+			Your dress hides your big balls.
+		<</if>>
+	<<elseif $PC.career == "escort">>
+		<<if $PC.ballsImplant > 3>>
+			You've pretty much given up on pants because of your monstrous balls, but you've replaced them with a slutty skirt that stretches around their veiny contours. People can't help staring to see if they'll get a glimpse of your massive sack peaking out from under the skirt.
+		<<elseif $PC.ballsImplant == 3>>
+			You've swapped up to a larger pair of slutty pants, specially designed with extra sack room. They draw the eye right to your bulge<<if $PC.preg >= 28>>; you can do without people thinking you are giving birth into your pants, though<</if>>.
+		<<elseif $PC.ballsImplant == 2>>
+			Your slutty pants are really tight around the groin, but they hold your huge balls in place quite nicely.
+		<<elseif $PC.ballsImplant == 1>>
+			Your slutty pants bulge more than ever with your big balls.
+		<</if>>
+	<<else>>
+		<<if $PC.ballsImplant > 3>>
+			You've pretty much given up on suit pants because of your monstrous balls, but you've replaced them with a custom kilt tailored to match the rest of your business attire. People would wonder why you're wearing such old fashioned clothes if your ridiculous bulge didn't make it obvious.
+		<<elseif $PC.ballsImplant == 3>>
+			You've had to get your suit pants retailored again to fit your enormous balls. It is obvious that the bulge in your pants is not your penis<<if $PC.preg >= 28>>; you've had several people rush to your aid under the mistaken belief that your child was crowning into your pants<</if>>.
+		<<elseif $PC.ballsImplant == 2>>
+			You've had to get your suit pants retailored to fit your huge balls. It gives you a striking figure, though.
+		<<elseif $PC.ballsImplant == 1>>
+			Your suit pants bulge more than ever with your big balls.
+		<</if>>
+	<</if>>
+<<else>>
+	<<if $PC.ballsImplant > 3>>
+		<<if $ballsAccessibility == 1>>
+			Thankfully your accessibility remodeling included a custom chair. When combined with the protective gel surrounding your massive sperm factories, it's rather comfortable. It even has an attachment to catch your neverending stream of precum, keeping the mess to a minimum.
+		<<else>>
+			Your monstrous balls make it impossible for you to sit normally in a standard chair, forcing you sit on the edge and let them dangle. You have to sit while naked below the waist unless you want your clothes soaked with spermy precum.
+		<</if>>
+	<<elseif $PC.ballsImplant == 3 && $PC.balls < 2>>
+		<<if $ballsAccessibility == 1>>
+			Thanks to your accessibility remodeling, your enormous gel-filled scrotum is able to rest comfortably in your custom chair.
+		<<else>>
+			No matter how you sit, your enormous gel-filled scrotum is never quite comfortable. Fortunately the cosmetic gel protects you from any major discomfort.
+		<</if>>
+	<<elseif $PC.ballsImplant == 3>>
+		<<if $ballsAccessibility == 1>>
+			Thanks to your accessibility remodeling, your enormous sperm factories are able to rest comfortably in your custom chair. Your chair also catches your never-ending precum, helping to prevent a mess.
+		<<else>>
+			You have to sit very carefully in your desk chair, giving your enormous sperm factories plenty of room. As they rest on the chair they deform uncomfortably under their own weight, causing even more of a mess from your ever-drooling cock.
+		<</if>>
+	<<elseif $PC.ballsImplant == 2>>
+		You shift in your seat and spread your legs to give your huge balls room.
+	<<elseif $PC.ballsImplant == 1>>
+		You shift in your seat to make room for your big balls.
+	<</if>>
+<</if>>
+
+<</widget>>
+
+<<widget "PlayerButt">>
+
+<<set _passage = passage()>>
+
+<<if _passage == "Manage Personal Affairs">>
+	<<if $PC.butt > 2>>
+		<<if $PC.buttImplant == 1>>
+			an @@.orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants. They barely move at all when you walk or fuck, are difficult to cram into your clothing and you keep getting stuck in chairs, but you wouldn't have it any other way.
+		<<else>>
+			an @@.orange;enormous, jiggly butt.@@ It is always wobbling for some reason or another. It really fills out your clothing and practically consumes anything you sit on.
+		<</if>>
+	<<elseif $PC.butt == 2>>
+		<<if $PC.buttImplant == 1>>
+			a @@.orange;huge, round, firm butt;@@ it's easily identifiable as fake.
+		<<else>>
+			a @@.orange;huge, soft butt.@@ It jiggles a lot as you move.
+		<</if>>
+	<<elseif $PC.butt == 1>>
+		<<if $PC.buttImplant == 1>>
+			a @@.orange;big firm butt;@@ anyone that feels it can tell it's fake, but at a glance you can't tell otherwise.
+		<<else>>
+			a @@.orange;big butt.@@ It jiggles a little as you walk.
+		<</if>>
+	<<else>>
+		a @@.orange;sexy, but normal butt.@@
+	<</if>>
+	<<if $PC.markings == "freckles">>
+		Your lower back is covered in a light speckling of freckles alongside your upper butt.
+	<<elseif $PC.markings == "heavily freckled">>
+		Your freckles are particularly dense across your lower back and upper butt.
+	<</if>>
+<<elseif _passage == "Economics">>
+	<<if $PC.career == "servant">>
+		<<if $PC.butt > 2 && $PC.ballsImplant > 3>>
+			<<if $PC.buttImplant == 1>>
+				When you had your dresses tailored you also had to have them make room for your enormous rear. No dress can hide how big and fake it is though.
+			<<else>>
+				When you had your dresses tailored you also had to have them make room for your enormous rear.
+			<</if>>
+		<<elseif $PC.butt > 2>>
+			<<if $PC.buttImplant == 1>>
+				You had to get your dress let out to contain your enormous rear. It can't hide how big and fake it is though.
+			<<else>>
+				You had to get your dress let out to contain your enormous rear.
+			<</if>>
+		<<elseif $PC.butt == 2>>
+			Your dress is starting to feel tight around your huge rear.
+		<<elseif $PC.butt == 1>>
+			Your dress is filled out by your big butt.
+		<</if>>
+	<<elseif $PC.career == "escort">>
+		<<if $PC.dick == 1>>
+			<<if $PC.ballsImplant > 3>>
+				<<if $PC.butt > 2>>
+					<<if $PC.buttImplant == 1>>
+						Your slutty skirt is also forced to stretch around your enormous rear, making the implants pretty obvious. With both your front and back struggling to get free of your stretchy skirt, it isn't unusual for one or the other to peek out.
+					<<else>>
+						Your slutty skirt is also forced to stretch around your enormous rear, and bending over is basically asking for your skirt to ride up all the way to your hips. With both your front and back struggling to get free of your stretchy skirt, it isn't unusual for one or the other to peek out.
+					<</if>>
+				<<elseif $PC.butt == 2>>
+					Your huge rear nearly spills out from the bottom of your slutty skirt.
+				<<elseif $PC.butt == 1>>
+					Your slutty skirt is strained by your big butt.
+				<</if>>
+			<<else>>
+				 <<if $PC.butt > 2>>
+					<<if $PC.buttImplant == 1>>
+						You had to get your slutty pants let out to contain your enormous rear. It still feels really tight, however, thanks to the implants.
+					<<else>>
+						You had to get your slutty pants let out to contain your enormous rear. It still overflows scandalously, however.
+					<</if>>
+				<<elseif $PC.butt == 2>>
+					Your huge rear spills out from the top of your slutty pants.
+				<<elseif $PC.butt == 1>>
+					Your slutty pants are strained by your big butt.
+				<</if>>
+			<</if>>
+		<<else>>
+			<<if $PC.butt > 2>>
+				<<if $PC.buttImplant == 1>>
+					Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your overly round<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, heavily freckled<</if>> cheeks to hang free.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your valley of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and valley of ass cleavage.<</if>>
+				<<else>>
+					Your ass has completely devoured your slutty shorts. You look like you are wearing a thong leaving your<<if $PC.markings == "freckles">> freckled<<elseif $PC.markings == "heavily freckled">> heavily freckled<</if>> cheeks to jiggle freely.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your valley of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and valley of ass cleavage.<</if>>
+				<</if>>
+			<<elseif $PC.butt == 2>>
+				Your slutty shorts are filled to bursting by your rear. Roughly half of your ass is actually in your bottoms, the rest is bulging out scandalously.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your ravine of ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and ravine of ass cleavage.<</if>>
+			<<elseif $PC.butt == 1>>
+				Your slutty shorts are strained by your big butt. It spills out every gap it can.<<if $PC.markings == "freckles">> Your lower back is covered in a light speckling of freckles alongside your ass cleavage.<<elseif $PC.markings == "heavily freckled">> Your freckles are particularly dense across your lower back and ass cleavage.<</if>>
+			<<elseif $PC.markings == "freckles">>
+				Your exposed lower back is covered in a light speckling of freckles.
+			<<elseif $PC.markings == "heavily freckled">>
+				Your freckles are particularly dense across your exposed lower back.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $PC.dick == 1>>
+			<<if $PC.ballsImplant > 3>>
+				<<if $PC.butt > 2>>
+					<<if $PC.buttImplant == 1>>
+						Your custom kilt is also forced to stretch around your enormous rear, making the implants pretty obvious. With both your front and back struggling to get free of the restrictive cloth, it isn't unusual for one or the other to peek out.
+					<<else>>
+						Your custom kilt is also forced to stretch around your enormous rear, and bending over is basically asking for it to ride up all the way to your hips. With both your front and back struggling to get free of the restrictive cloth, it isn't unusual for one or the other to peek out.
+					<</if>>
+				<<elseif $PC.butt == 2>>
+					Your huge rear nearly spills out from the bottom of your custom kilt.
+				<<elseif $PC.butt == 1>>
+					Your custom kilt is strained by your big butt.
+				<</if>>
+			<<else>>
+				<<if $PC.butt > 2>>
+					<<if $PC.buttImplant == 1>>
+						You had to get your suit pants let out to contain your enormous rear. It does nothing to hide how big and round your asscheeks are, though.
+					<<else>>
+						You had to get your suit pants let out to contain your enormous rear. It can clearly be seen jiggling within them.
+					<</if>>
+				<<elseif $PC.butt == 2>>
+					Your huge rear threatens to tear apart your suit pants. You'll need to get them let out soon.
+				<<elseif $PC.butt == 1>>
+					Your suit pants are strained by your big butt.
+				<</if>>
+			<</if>>
+		<<else>>
+			<<if $PC.butt > 2>>
+				<<if $PC.buttImplant == 1>>
+					Your skirt covers your enormous butt but does nothing to hide its size and shape; you're beginning to show too much leg again, it might be time for a longer skirt.
+				<<else>>
+					Your skirt covers your enormous butt but does nothing to hide its size and fluidity; your rear is soft enough to fill out your skirt but not lift it up too far, it also translates every motion to the fabric, however.
+				<</if>>
+			<<elseif $PC.butt == 2>>
+				Your skirt covers your huge butt but does nothing to hide its size; in fact, you've had to start wearing a longer one to make up for the extra surface area.
+			<<elseif $PC.butt == 1>>
+				Your skirt covers your big butt but does nothing to hide its size.
+			<</if>>
+		<</if>>
+	<</if>>
+<<else>>
+	<<if $PC.butt > 2>>
+		<<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
+			Your enormous<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make your chair extremely comfortable if it wasn't for your enormous balls. You have to be extremely careful to prevent your enormous cheeks from pinching your nuts.
+		<<else>>
+			Your enormous<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt makes for an extremely comfortable seat. You hope the chair doesn't follow you when you stand up this time.
+		<</if>>
+	<<elseif $PC.butt == 2>>
+		<<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
+			Your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make for a very comfortable seat if it wasn't for your enormous balls. You have to be careful to prevent your huge cheeks from pinching your nuts.
+		<<else>>
+			Your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt makes for a very comfortable seat.
+		<</if>>
+	<<elseif $PC.butt == 1>>
+		<<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
+			Your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make for a comfortable seat if your enormous balls weren't getting in the way.
+		<<else>>
+			Your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt makes for a comfortable seat.
+		<</if>>
+	<</if>>
+<</if>>
+
+<</widget>>
\ No newline at end of file
diff --git a/src/pregmod/widgets/pregmodBirthWidgets.tw b/src/pregmod/widgets/pregmodBirthWidgets.tw
index f12f2c8c11cf53764cd5a7c3ba2063ea7edb0857..0934b44eaf45823e9d2c857a44427fc6582f6472 100644
--- a/src/pregmod/widgets/pregmodBirthWidgets.tw
+++ b/src/pregmod/widgets/pregmodBirthWidgets.tw
@@ -2,6 +2,601 @@
 
 <<widget "BroodmotherBirth">>
 
+<<set _birthScene = random(1,100)>>
+
+<br>
+
+<<if random(1,2) == 1>> /* at assignment else in halls/etc */
+
+<<switch $slaves[$i].assignment>>
+
+<<case "rest">>
+	<<if !canWalk($slaves[$i])>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she is encouraged to keep resting. She runs her hands across the still huge dome of her middle; to her, gravidity and birth is nothing out of the ordinary.
+			<<else>>
+				$slaves[$i].slaveName is awoken from her rest by a strong contraction. She rolls over and begins to fall back to sleep as another contraction wracks her body.
+				<<ClothingBirth>>
+				She fishes around under her still huge dome of a stomach searching for her newborn. Once she finds it, she draws it to her breast and resumes resting.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she is encouraged to keep resting. She rolls over, cradling her heavily rounded middle, and dozes off.
+			<<else>>
+				$slaves[$i].slaveName is awoken from her rest by a moist sensation followed by a contraction. She rolls over and clutches her gravid belly as another contraction wracks her body.
+				<<ClothingBirth>>
+				She struggles to collect her child and places them in the cradle readied for her. She is helped to the shower as your servants clean up and remove her child.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she is encouraged to keep resting. She runs her hands across the still huge dome of her middle; to her, gravidity and birth is nothing out of the ordinary.
+			<<else>>
+				$slaves[$i].slaveName is awoken from her rest by a strong contraction. She rolls over and begins to fall back to sleep as another contraction wracks her body.
+				<<ClothingBirth>>
+				She fishes around under her still huge dome of a stomach searching for her newborn. Once she finds it, she draws it to her breast and resumes resting.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she is encouraged to keep resting. She rolls over, cradling her heavily rounded middle, and dozes off.
+			<<else>>
+				$slaves[$i].slaveName is awoken from her rest by a moist sensation followed by a contraction. She rolls over and clutches her gravid belly as another contraction wracks her body.
+				<<ClothingBirth>>
+				She struggles to collect her child and places them in the cradle readied for her. She hefts her still very pregnant body out of bed to take a shower as your servants clean up and remove her child.
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "be a subordinate slave">>
+	<<set _tempSub = $slaves.find(function(s) { return $slaves[$i].subTarget == s.ID; })>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if $slaves[$i].subTarget == 0>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests for a short while before returned to your waiting slaves.
+			<<else>>
+				While servicing your other slaves, $slaves[$i].slaveName's water breaks, though it does nothing to deter her from her task.
+				<<ClothingBirth>>
+				No sooner than <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby is born, a cock is shoved into her gaping, still very pregnant <<if $slaves[$i].mpreg == 1>>asshole<<else>>pussy<</if>> as she draws her child to her breast.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She lead by _tempSub.slaveName to a private room so that she may watch. Instinctively she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, indifferent to her watching audience. Her child is promptly taken and _tempSub.slaveName eagerly descends upon her defenseless and still very pregnant body.
+			<<else>>
+				While servicing _tempSub.slaveName, $slaves[$i].slaveName's water breaks, though it does nothing to deter her from her task.
+				<<ClothingBirth>>
+				No sooner than <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby is born does she go back to pleasuring her dom.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].subTarget == 0>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests for a short while before returned to your waiting slaves.
+			<<else>>
+				While servicing your other slaves, $slaves[$i].slaveName's water breaks, causing her to immediately try to break off. However, a hand quickly hooks her gravid bulk and she is pulled back into another slave's crotch.
+				<<set $humiliation = 1>>
+				<<ClothingBirth>>
+				She is allowed a moment to prepare <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off before returning to pleasuring your other slaves.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She taken by _tempSub.slaveName to a private room so that she may watch. Reluctantly, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of _tempSub.slaveName's <<if $tempSub.fetish == "pregnancy">>hungry gaze<<else>>amused gaze<</if>>. Her child is promptly taken and _tempSub.slaveName eagerly descends upon her exhausted and still very pregnant body.
+				<<set $humiliation = 1>>
+			<<else>>
+				While servicing _tempSub.slaveName, $slaves[$i].slaveName's water breaks, causing her to immediately try to break off. Her dom eagerly watches her pregnant sub's ordeal.
+				<<set $humiliation = 1>>
+				<<ClothingBirth>>
+				_tempSub.slaveName collects the newborn child to be sent off before returning, caressing the swell of her still huge belly and planting her crotch directly onto her exhausted sub's face.
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "whore">>
+	<<if !canWalk($slaves[$i])>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to her work as a pregnant whore.
+			<<else>>
+				While attempting to attract customers with her gravid body, $slaves[$i].slaveName's water breaks.
+				<<ClothingBirth>>
+				She struggles to bring <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to her breast as she resumes whoring, oblivious to the free show she just gave her customers.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to her work as a pregnant whore.
+			<<else>>
+				While attempting to attract customers with her gravid body, $slaves[$i].slaveName's water breaks, soaking her. She attempts to get someplace safe to give birth but finds it impossible.
+				<<set $humiliation = 1>>
+				<<ClothingBirth>>
+				She lies on the ground, exhausted and covered in sperm from the circle of men watching her, until she recovers enough to heft her still very pregnant body to its feet and collect <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to her work as a pregnant whore.
+			<<else>>
+				While attempting to attract customers with her gravid body, $slaves[$i].slaveName's water breaks.
+				<<ClothingBirth>>
+				She struggles to bring <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to her breast as she resumes whoring, oblivious to the free show she just gave her customers.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to her work as a pregnant whore.
+			<<else>>
+				While attempting to attract customers with her gravid body, $slaves[$i].slaveName's water breaks, soaking her. She attempts to get someplace safe to give birth but finds her path blocked by rowdy johns.
+				<<set $humiliation = 1>>
+				<<ClothingBirth>>
+				She lies on the ground, exhausted and covered in sperm from the circle of men watching her, until she recovers enough to push her still very pregnant body to its feet and collect <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "serve the public">>
+	<<if !canWalk($slaves[$i])>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to sharing her gravid body with the public.
+			<<else>>
+				<<if (_birthScene > 80) && canDoVaginal($slaves[$i])>>
+					While riding a citizen's dick, $slaves[$i].slaveName's water breaks on him. Showing no signs of stopping, he shoves her bulk off of him. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, indifferent to who may be watching her naked crotch. She draws her child to her breast before seeking out the next citizen's cock.
+				<<elseif (_birthScene > 60) && canDoAnal($slaves[$i])>>
+					While taking a citizen's dick in her ass, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so he allows her to reposition and continue. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, indifferent to who may be watching her naked crotch. He came strongly thanks to her and gives her a slap on the ass as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cock.
+				<<elseif (_birthScene > 40)>>
+					While licking a citizen's cunt, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so she allows her to reposition and continue.
+					<<ClothingBirth>>
+					The citizen splashes across her face as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cunt.
+				<<else>>
+					While sucking a citizen's dick, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so he allows her to reposition and continue.
+					<<ClothingBirth>>
+					He cums down her throat as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cock.
+				<</if>>
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She is helped back to her bed and stripped before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to sharing her gravid body with the public.
+			<<else>>
+				<<if (_birthScene > 80) && canDoVaginal($slaves[$i])>>
+					While riding a citizen's dick, $slaves[$i].slaveName's water breaks on him. She desperately tries to disengage but he grabs her hips and slams her back down. He thoroughly enjoys her contracting cunt before pushing her off and standing over her, jacking off. Quickly she spreads her legs apart and begins pushing out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. She can't hide what's happening between her legs, <<if $slaves[$i].fetish == "humiliation">>but that only makes it more exciting<<else>>so she bears with it<</if>>. He cums over her heaving, still very pregnant body and moves on leaving her to recover and collect her child to be sent off.
+					<<set $humiliation = 1>>
+				<<elseif (_birthScene > 60) && canDoAnal($slaves[$i])>>
+					While taking a citizen's dick in her ass, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but he grabs her hips and slams into her hard. Quickly she spreads her legs apart and begins pushing out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. She can't hide what's happening between her legs, <<if $slaves[$i].fetish == "humiliation">>but that only makes it more exciting<<else>>so she bears with it<</if>>. He came strongly thanks to her and gives her a slap on the ass as she collapses onto her still very pregnant belly and slips to her side. She quickly gathers her child to be sent off.
+					<<set $humiliation = 1>>
+				<<elseif (_birthScene > 40)>>
+					While licking a citizen's cunt, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but she grabs her head and slams her back into her crotch.
+					<<set $humiliation = 1>>
+					<<ClothingBirth>>
+					She cums across her face before helping her still very pregnant body to the ground and leaving. When she recovers, she quickly gathers <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+				<<else>>
+					While sucking a citizen's dick, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but he grabs her head and slams her back into his crotch.
+					<<set $humiliation = 1>>
+					<<ClothingBirth>>
+					He cums down her throat before letting her collapse to the ground and leaving. When she recovers and pushes her still very pregnant body upright, she quickly gathers <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+				<</if>>
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to sharing her gravid body with the public.
+			<<else>>
+				<<if (_birthScene > 80) && canDoVaginal($slaves[$i])>>
+					While riding a citizen's dick, $slaves[$i].slaveName's water breaks on him. Showing no signs of stopping, he shoves her bulk off of him. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, indifferent to who may be watching her naked crotch. She draws her child to her breast before seeking out the next citizen's cock.
+				<<elseif (_birthScene > 60) && canDoAnal($slaves[$i])>>
+					While taking a citizen's dick in her ass, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so he allows her to reposition and continue. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, indifferent to who may be watching her naked crotch. He came strongly thanks to her and gives her a slap on the ass as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cock.
+				<<elseif (_birthScene > 40)>>
+					While licking a citizen's cunt, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so she allows her to reposition and continue.
+					<<ClothingBirth>>
+					The citizen splashes across her face as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cunt.
+				<<else>>
+					While sucking a citizen's dick, $slaves[$i].slaveName's water breaks. She shows no signs of slowing down, so he allows her to reposition and continue.
+					<<ClothingBirth>>
+					He cums down her throat as she struggles to reach her child around her still very pregnant middle. Once she has brought her child to her breast, she seeks out the next citizen's cock.
+				<</if>>
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to sharing her gravid body with the public.
+			<<else>>
+				<<if (_birthScene > 80) && canDoVaginal($slaves[$i])>>
+					While riding a citizen's dick, $slaves[$i].slaveName's water breaks on him. She desperately tries to disengage but he grabs her hips and slams her back down. He thoroughly enjoys her contracting cunt before pushing her off and standing over her, jacking off. Quickly she spreads her legs apart and begins pushing out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. She can't hide what's happening between her legs, <<if $slaves[$i].fetish == "humiliation">>but that only makes it more exciting<<else>>so she bears with it<</if>>. He cums over her heaving, still very pregnant body and moves on leaving her to recover and collect her child to be sent off.
+					<<set $humiliation = 1>>
+				<<elseif (_birthScene > 60) && canDoAnal($slaves[$i])>>
+					While taking a citizen's dick in her ass, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but he grabs her hips and slams into her hard. Quickly she spreads her legs apart and begins pushing out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. She can't hide what's happening between her legs, <<if $slaves[$i].fetish == "humiliation">>but that only makes it more exciting<<else>>so she bears with it<</if>>. He came strongly thanks to her and gives her a slap on the ass as she collapses onto her still very pregnant belly and slips to her side. She quickly gathers her child to be sent off.
+					<<set $humiliation = 1>>
+				<<elseif (_birthScene > 40)>>
+					While licking a citizen's cunt, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but she grabs her head and slams her back into her crotch.
+					<<set $humiliation = 1>>
+					<<ClothingBirth>>
+					She cums across her face before helping her still very pregnant body to the ground and leaving. When she recovers, she quickly gathers <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+				<<else>>
+					While sucking a citizen's dick, $slaves[$i].slaveName's water breaks. She desperately tries to disengage but he grabs her head and slams her back into his crotch.
+					<<set $humiliation = 1>>
+					<<ClothingBirth>>
+					He cums down her throat before letting her collapse to the ground and leaving. When she recovers and pushes her still very pregnant body to its feet, she quickly gathers <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child to be sent off.
+				<</if>>
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "work a glory hole">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if (random(1,20) > $suddenBirth)>>
+			Since she is unable to leave her box, she doesn't have far to go. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is quickly extracted from the box. She never notices, focused entirely on the fresh cock poking through the glory hole and the sensation of her still very pregnant middle rubbing the wall.
+		<<else>>
+			While sucking a dick through the hole of her confining box, $slaves[$i].slaveName's water breaks. She makes no effort to stop sucking the dicks presented to her.
+			<<ClothingBirth>>
+			<<if $slaves[$i].birthsTotal == 0>>Her first<<else>>This week's<</if>> child is quickly extracted from the box. She never notices, focused entirely on the fresh cock poking through the glory hole and the sensation of her still very pregnant middle rubbing the wall.
+		<</if>>
+	<<else>>
+		<<if (random(1,20) > $suddenBirth)>>
+			Since she is unable to leave her box, she doesn't have far to go. She quickly finishes the waiting dick before shifting herself into a slightly, though not by much, more comfortable position. She begins laboring on <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child. As she finishes, the box is opened and her child is gathered and taken away before she is ordered back to sucking.
+		<<else>>
+			While sucking a dick through the hole of her confining box, $slaves[$i].slaveName's water breaks. She quickly finishes the dick off before seating herself in the back of the box.
+			<<ClothingBirth>>
+			As she finishes, she could have sworn she saw an eye peeping through the glory hole, watching the show. The box is opened and <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child is gathered and taken away as she struggles to reach the fresh cock poking through the hole.
+		<</if>>
+	<</if>>
+
+<<case "get milked">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if $dairyPregSetting > 0>>
+			Since the dairy is designed for pregnant cows, she stays hooked up to the milkers. She shows little interest in her coming birth, instead focusing on her milky breasts. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. She shows no interest in her child being removed from the milking stall, nor when her still very pregnant body is hosed off.
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				<<if !canWalk($slaves[$i])>>She is helped back to her bed and stripped before slipping into it<<else>>She returns to her bed and strips before slipping into it<</if>>. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to the milkers to lighten her swelling breasts.
+			<<else>>
+				While getting milked, $slaves[$i].slaveName's water breaks. She show little interest and continues kneading her breasts.
+				<<ClothingBirth>>
+				She shows no interest in <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child being removed from the milking stall, nor her still very pregnant middle, instead focusing entirely on draining her breasts.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $dairyPregSetting > 0>>
+			Since the dairy is designed for pregnant cows, she stays hooked up to the milkers. She meekly protests her situation, but ultimately accepts it. She begins working on birthing her <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, and catches a glimpse of her child being removed from the milking stall, but quickly forgets when she is hosed off.
+			<<set $humiliation = 1>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				<<if !canWalk($slaves[$i])>>She is helped back to her bed and stripped before slipping into it<<else>>She returns to her bed and strips before slipping into it<</if>>. She makes herself comfortable and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she rests awhile before returning to the milkers to lighten her swelling breasts.
+			<<else>>
+				While getting milked, $slaves[$i].slaveName's water breaks. She shifts into a comfortable position to give birth while the milker works her breasts.
+				<<ClothingBirth>>
+				She takes a break from milking to collect <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child for removal and to catch her breath before reattaching the milkers and coaxing her milk to begin flowing anew.
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "please you">>
+	<<if !canWalk($slaves[$i])>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				You strip her and help her onto your couch. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she falls into a contented nap. You fondle her still very pregnant body until a servant comes to help clean her up.
+			<<else>>
+				While sitting absentmindedly nearby, $slaves[$i].slaveName's water breaks soaking the floor under her. She pays no heed to it and continues waiting for you to use her.
+				<<ClothingBirth>>
+				You certainly enjoyed the show as you call for a servant to take away <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child and to clean up the spill.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				<<if $slaves[$i].devotion > 20>>
+					She moans lewdly at you and wiggles her hips. As she teases, she begins pushing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby out. As she crowns, you pull her into your arms and hold her close. You hold her in a comforting embrace until she finishes.
+				<<elseif $slaves[$i].devotion >= -20>>
+					She releases a lewd moan and begins attempting to remove her clothes. You approach her, clearing her vagina and helping her onto the couch, where you take a seat next to her to fondle her vulnerable body. She begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Once she finishes, you give her some time to catch her breath.
+				<<else>>
+					She begins desperately begging to be taken back to her bed; instead you pull her towards the couch and take a seat with her in your lap, back against your front. Blushing thoroughly, she gives a meek protest before focusing on the coming birth, rather than your wandering hands. She begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby.
+					<<set $humiliation = 1>>
+				<</if>>
+				 Her child is promptly taken and, following a shower and a fresh change of clothes, she is helped back to your office<<if $slaves[$i].devotion < -20>> where you are waiting to enjoy her still very pregnant body<</if>>.
+			<<else>>
+				While sitting nearby, $slaves[$i].slaveName's water breaks, startling her. She looks to you for guidance and you shake your head "no". Without permission to leave she <<if $slaves[$i].devotion > 50>>decides to give you a show<<elseif $slaves[$i].devotion > 20>>reluctantly decides giving birth in front of you isn't so bad<<else>>begins to panic as her contractions come sooner and sooner<<set $humiliation = 1>><</if>>.
+				<<ClothingBirth>>
+				As thanks for the show, you help her still very pregnant body to the couch so she can recover before returning to her duties. You call for a servant to take away <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child and to clean up your floor and your toy.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].fetish == "mindbroken">>
+			<<if (random(1,20) > $suddenBirth)>>
+				She returns to her bed and strips before slipping into it. Instinctively, she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Her child is promptly taken and she falls into a contented nap. That is until you drag her still very pregnant ass out of bed, inquiring where she waddled off to without your permission.
+			<<else>>
+				While standing absentmindedly nearby, $slaves[$i].slaveName's water breaks soaking the floor under her. She pays no heed to it and continues waiting for you to use her.
+				<<ClothingBirth>>
+				You certainly enjoyed the show as you call for a servant to take away <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child and to clean up the spill.
+			<</if>>
+		<<else>>
+			<<if (random(1,20) > $suddenBirth)>>
+				<<if $slaves[$i].devotion > 20>>
+					She seeks you out and begins slowly stripping. As she teases, she begins pushing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby out. As she crowns, she throws herself into your waiting arms and holds herself to you. You hold her in a comforting embrace until she finishes.
+				<<elseif $slaves[$i].devotion >= -20>>
+					She approaches you and begins a very uncertain striptease. As she lowers herself to the floor to begin pushing, you overtake her and fondle her vulnerable body. She begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Once she finishes, you help her to the couch to catch her breath.
+				<<else>>
+					She attempts to leave your office and return to her bed, but you catch her arm before she slips out of reach. You order her to strip and give you a show. Blushing thoroughly, she gives a meek performance before falling to the floor. She begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby.
+					<<set $humiliation = 1>>
+				<</if>>
+				Her child is promptly taken and, following a shower and a fresh change of clothes, she waddles back into your office<<if $slaves[$i].devotion < -20>> where you are waiting to enjoy her still very pregnant body<</if>>.
+			<<else>>
+				While standing nearby, $slaves[$i].slaveName's water breaks, startling her. She looks to you for guidance and you shake your head "no". Without permission to leave she <<if $slaves[$i].devotion > 50>>decides to give you a show<<elseif $slaves[$i].devotion > 20>>reluctantly decides giving birth in front of you isn't so bad<<else>>begins to panic as her contractions come sooner and sooner<<set $humiliation = 1>><</if>>.
+				<<ClothingBirth>>
+				As thanks for the show, you help her still very pregnant onto the couch so she can recover before returning to her duties. You call for a servant to take away <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child and to clean up your floor and your toy.
+			<</if>>
+		<</if>>
+	<</if>>
+
+<<case "stay confined">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+	 Since she is locked in a cell, she doesn't have far to go.  Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after her and the cell are hosed down, she is returned to isolation.
+	<<else>>
+	 Since she is locked in a cell, she doesn't have far to go.  Reluctantly, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after her and the cell are hosed down, she is returned to isolation.
+	 <<set $humiliation = 1>>
+	<</if>>
+
+<<case "work as a servant" "be a servant">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She returns to her bed and strips before slipping into it. Instinctively she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to service your penthouse.
+	<<else>>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to service your penthouse.
+	<</if>>
+
+<<case "serve in the master suite">>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if $masterSuiteUpgradePregnancy == 1>>
+			She is helping into the birthing chamber, stripped, and aided into the specialized chair. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she is returned to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>>the main room of the master suite<</if>>.
+		<<else>>
+			After struggling to strip and tipping into one of the various seats around the room, she prepares to give birth. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her may be watching her. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she is helped back to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>> her usual spot<</if>>.
+		<</if>>
+	<<else>>
+		<<if $masterSuiteUpgradePregnancy == 1>>
+			She is helping into the birthing chamber, stripped, and aided into the specialized chair. Finding it quite comfortable, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she is returned to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>>the main room of the master suite<</if>>.
+		<<else>>
+			After struggling to strip and tipping into one of the various seats around the room, she prepares to give birth. She gets comfortable and begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she is returned to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>> her preferred spot<</if>>.
+		<</if>>
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if $masterSuiteUpgradePregnancy == 1>>
+			She enters the birthing chamber, strips, and seats herself in the specialized chair. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she returns to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>>the main room of the master suite<</if>>.
+		<<else>>
+			She strips and settles into one of the various seats around the room. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her may be watching her. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she returns to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>> her usual spot<</if>>.
+		<</if>>
+	<<else>>
+		<<if $masterSuiteUpgradePregnancy == 1>>
+			She enters the birthing chamber, strips, and seats herself in the specialized chair. Finding it quite comfortable, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she returns to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>>the main room of the master suite<</if>>.
+		<<else>>
+			She strips and settles into one of the various seats around the room. She gets comfortable and begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a shower and fresh change of clothes, she returns to <<if $masterSuiteUpgradeLuxury == 1>>your big bed<<elseif $masterSuiteUpgradeLuxury == 2>>the fuckpit<<else>> her preferred spot<</if>>.
+	<</if>>
+	<</if>>
+	<</if>>
+
+<<case "serve in the club">>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is helped into a private room in the back of the club by a group of eager patrons. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, the audience has their way with her.
+	<<else>>
+		She is helped to a private room in the back of the club by several patrons who just can't keep their hands off her. She settles herself onto a patron's lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in the attention of her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she beckons the audience to enjoy her.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She heads to a private room in the back of the club filled with eager patrons. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, the audience is allowed to have their way with her.
+	<<else>>
+		She heads to a private room in the back of the club accompanied by several patrons who just can't keep their hands off her. She settles herself onto a patron's lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in the attention of her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she beckons the audience to enjoy her.
+	<</if>>
+	<</if>>
+
+<<case "choose her own job">>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is helped back to her bed and stripped before slipping into it. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, she waits for someone to help her to her next job, having forgotten she was choosing it.
+	<<else>>
+		She is helped back to her bed and stripped before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, she returns to pondering her preferred assignment.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She returns to her bed and strips before slipping into it. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, she returns to wandering the penthouse.
+	<<else>>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, she returns to pondering her preferred assignment.
+	<</if>>
+	<</if>>
+
+<<case "rest in the spa">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		<<if $Attendant != 0>>$Attendant.slaveName leads her to a special pool designed to give birth in. Once she is safely in the water alongside $Attendant.slaveName,<<else>>She is lead to a special pool designed to give birth in. Once she is safely in the water alongside her assistant,<</if>> she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her watching helper. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, she is taken back to the spa.
+	<<else>>
+		<<if $Attendant != 0>>$Attendant.slaveName escorts her to a special pool designed to give birth in. Once she is safely in the water alongside $Attendant.slaveName,<<else>>She is escorted to a special pool designed to give birth in. Once she is safely in the water alongside her assistant,<</if>> she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, aided by her helper. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, she is taken back to the spa.
+	<</if>>
+
+<<case "learn in the schoolroom">>
+	<<if !canWalk($slaves[$i])>>
+		Having been notified in the weeks leading up to her birth, she is helped to the front of the class and stripped. She is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of the rapt attention of the other students. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, she is helped back to her seat. She can't help but notice some of the detailed notes the class took on her genitals.
+	<<set $humiliation = 1>>
+	<<else>>
+		Having been notified in the weeks leading up to her birth, she heads to the front of the class and strips. She is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of the rapt attention of the other students. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, she returns to her seat. She can't help but notice some of the detailed notes the class took on her genitals.
+	<<set $humiliation = 1>>
+	<</if>>
+
+<<case "take classes">>
+	 Or she would have, had <<if $assistantName == "your personal assistant">>your personal assistant<<else>>$assistantName<</if>> allowed it. Since she can't leave the lesson, she tries her best to hold back the upcoming birth, not without your assistant noticing. As punishment for poor planning, her birth will be turned into a live broadcast. Blushing strongly, she begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, trying her best to hide her shame. Exhausted from the birth, she is permitted a short break as her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> collected to clean herself up before the lesson is continued.
+	<<set $humiliation = 1>>
+
+<<case "work in the brothel">>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is helped to a private room in the back of the brothel by a group of eager patrons. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, the audience is allowed to have their way with her.
+	<<else>>
+		She is helped to a private room in the back of the brothel by several patrons who paid quite a handsome price to enjoy this moment. She settles herself onto a patron's lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in the attention of her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she beckons the audience to enjoy her.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She heads to a private room in the back of the brothel filled with eager patrons. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning and fresh change of clothes, the audience is allowed to have their way with her.
+	<<else>>
+		She heads to a private room in the back of the brothel accompanied by several patrons who paid quite a handsome price to enjoy this moment. She settles herself onto a patron's lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in the attention of her audience. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she beckons the audience to enjoy her.
+	<</if>>
+	<</if>>
+
+<<case "be the Schoolteacher">>
+	<<if !canWalk($slaves[$i])>>
+		The class has been wondering why she was sitting strangely, nude at the front of the class the last several weeks, today they learn why. She has been planning this lesson for several months now. She wiggles herself into a comfortable spot and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of her watching students. She demonstrates the proper ways to labor and how to deliver a baby. She explains the infant's future as her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> taken and excuses the class for a short break in order to freshen up.
+	<<set $humiliation = 1>>
+	<<else>>
+		While stripping, she makes her way to the front of the classroom and settles herself in a way her entire class can see. She has been planning this lesson for several months now. She wiggles herself into a comfortable spot and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, fully aware of her watching students. She demonstrates the proper ways to labor and how to deliver a baby. She explains the infant's future as her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> taken and excuses the class for a short break in order to freshen up.
+	<<set $humiliation = 1>>
+	<</if>>
+
+
+<<case "be your Concubine">>
+	<<if $slaves[$i].pregSource == -1 && $slaves[$i].relationship == -3>>
+		You make sure to find time in your busy schedule to be at your concubine wife's side as she gives birth to your child<<if $slaves[$i].pregType > 1>>ren<</if>>. You gently caress $slaves[$i].slaveName's body as she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. You help her upright and hold your child<<if $slaves[$i].pregType > 1>>ren<</if>> to her breasts. The two of you cuddle as you watch your newborn<<if $slaves[$i].pregType > 1>>s<</if>> suckle from their mother. Since she is quite special to you, you allow her the time to pick out names before her child<<if $slaves[$i].pregType > 1>>ren<</if>> have to be taken away. When the time comes to pick up the newborn<<if $slaves[$i].pregType > 1>>s<</if>>, the slave servant is surprised to find <<if $slaves[$i].pregType == 1>>a <</if>>name-card<<if $slaves[$i].pregType > 1>>s<</if>> affixed to their blanket<<if $slaves[$i].pregType > 1>>s<</if>>.<<if $slaves[$i].fetish != "mindbroken">> She can't help but feel more devoted to her master after seeing such a touching act. Before you leave, $slaves[$i].slaveName expresses how cute she found your child and that she'd love to bear more for you.<</if>>
+	<<else>>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is assisted in reaching your side. You call her over and strip her as she instinctively begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to your wandering hands. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with you, she is helped back to your master suite.
+	<<else>>
+		She is assisted in reaching your side. You beckon her over and strip her as she dutifully begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, enjoying your wandering hands and attention. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with you, she is helped back to your master suite. As she leaves your office, she throws you a wink, hoping to see you again soon.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She wanders the penthouse until she finds you. You call her over and strip her as she instinctively begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to your wandering hands. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with you, she returns to your master suite.
+	<<else>>
+		She wanders the penthouse until she finds you. You beckon her over and strip her as she dutifully begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, enjoying your wandering hands and attention. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with you, she returns to your master suite. As she leaves your office, she throws you a wink, hoping to see you again soon.
+	<</if>>
+	<</if>>
+	<</if>>
+
+<<case "live with your Head Girl">>
+	<<if $slaves[$i].pregSource == $HeadGirl.ID>>
+		$HeadGirl.slaveName makes sure that the mother of her child is happy and comfortable for the upcoming birth, even if they won't be spending much time with their offspring. She carefully undresses $slaves[$i].slaveName, all the while whispering sweet nothings in her ear. She begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, and her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> carefully collected by their father. Once they are out of the way, $HeadGirl.slaveName moves in to fondle $slaves[$i].slaveName's tired body.
+	<<else>>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is aided in finding $HeadGirl.slaveName, who undresses her as she instinctively begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her wandering hands. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with your head girl, she is taken back to $HeadGirl.slaveName' room.
+	<<else>>
+		She is aided in seeking out $HeadGirl.slaveName, who undresses her as she dutifully begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, enjoying her wandering hands and attention. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with your head girl, she is helped back to $HeadGirl.slaveName's room.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She wanders until she finds $HeadGirl.slaveName, who undresses her as she instinctively begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to her wandering hands. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with your head girl, she is lead back to $HeadGirl.slaveName' room.
+	<<else>>
+		She seeks out $HeadGirl.slaveName, who undresses her as she dutifully begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, enjoying her wandering hands and attention. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, a fresh change of clothes, and some private time with your head girl, she returns to $HeadGirl.slaveName's room.
+	<</if>>
+	<</if>>
+	<</if>>
+
+<<case "be confined in the arcade">>
+	Or she would have been, if she weren't locked in an arcade cabinet. A gush of liquid pours from the $slaves[$i].slaveName's cunt, followed by the attendant in charge of the arcade hanging an "out of order" sign on her exposed rear. While her mouth is filled with a customer's dick, her body instinctively births her child<<if $slaves[$i].pregType > 1>>ren<</if>> into the waiting basket.  As they are carried away, her rear is cleaned up and the sign removed.
+
+<<case "get treatment in the clinic">>
+	<<if !canWalk($slaves[$i])>>
+	She is helped to the clinic's maternity ward. <<if $Nurse != 0>>$Nurse.slaveName<<else>>A freelance nurse<</if>> delivers her child<<if $slaves[$i].pregType > 1>>ren<</if>> before taking <<if $slaves[$i].pregType > 1>>them<<else>> it<</if>> away. Before long she is returned to her recovery room to rest.
+	<<else>>
+	She is guided to the clinic's maternity ward. <<if $Nurse != 0>>$Nurse.slaveName<<else>>A freelance nurse<</if>> delivers her child<<if $slaves[$i].pregType > 1>>ren<</if>> before taking <<if $slaves[$i].pregType > 1>>them<<else>> it<</if>> away. Before long she is returned to her recovery room to rest.
+	<</if>>
+
+<<case "be confined in the cellblock">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+	 She is forced into a specially designed cell to give birth in.  Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after her and the cell are hosed down, she is moved back into a standard cell.
+	<<else>>
+	 She is forced into a specially designed cell to give birth in. Reluctantly, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after her and the cell are hosed down, she is moved back into a standard cell.
+	<</if>>
+
+<<case "be the DJ">>
+		She heads to a private room in the back of the club accompanied by a influential patron. She settles herself onto his lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in his attention. Placing her child<<if $slaves[$i].pregType > 1>>ren<</if>> outside the room, she returns to pleasure her tease.
+
+<<case "be the Attendant">>
+		$Attendant.slaveName waddles to a special pool designed to give birth in. Once she is safely in the water, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, something she has been trained for. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, following a cleaning, she heads back to the main pool.
+
+<<case "be the Madam">>
+		She heads to a private room in the back of the club accompanied by a influential patron. She settles herself onto his lap and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, basking in his attention as he strips her. Placing her child<<if $slaves[$i].pregType > 1>>ren<</if>> outside the room, she returns to get more intimate with her catch.
+
+<<case "be the Stewardess">>
+		She strips and settles herself into her favorite chair, while calling several servants to her aid. She begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>> into the arms of her waiting charges. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she reclines while her servants clean and dress her. Once she has had enough, she orders them back to work on the penthouse.
+
+<<case "be the Milkmaid">>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. She is quite experienced in delivering her cows' children, but she finds it much more difficult to apply her knowledge to herself.  Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, she returns to caring for your cows.
+
+<<case "be the Wardeness">>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She enters an empty cell, strips, and seats herself on the cot. She instinctively begins birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she returns to mindlessly breaking the confined slaves.
+	<<else>>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to the cellblock.
+	<</if>>
+
+<<case "be the Nurse">>
+		She waddles to her maternity ward and strips before laying on an open bed. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>> as her assistants watch. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she is helped to the recovery ward until she recovers enough to take over $clinicName again.
+
+<<case "be your Head Girl">>
+		She returns to <<if $HGSuite == 1>>her room's bed<<else>>her bed<</if>> and strips before slipping into it. She makes herself comfortable<<if $HGSuiteSlaves != 0>>,as her slave rushes to her side,<</if>> and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken<<if $HGSuiteSlaves != 0>> by her roommate<</if>> and she rests awhile before returning to managing your slaves.
+
+<<case "guard you">>
+		Or she would have, if she'd stop refusing to leave your side. You lead her someplace private and help her undress. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. You call for a servant to quickly gather her child<<if $slaves[$i].pregType > 1>>ren<</if>> as you help her into the shower, making sure to wait outside for your loyal guardian to finish.
+
+<<case "recruit girls">>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to finding new slaves for you.
+
+<<default>>
+	<<if !canWalk($slaves[$i])>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She is helped back to her bed and stripped before slipping into it. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to her task.
+	<<else>>
+		She is helped back to her bed and stripped before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to her task.
+	<</if>>
+	<<else>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She returns to her bed and strips before slipping into it. Instinctively, she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to her task.
+	<<else>>
+		She returns to her bed and strips before slipping into it. She makes herself comfortable and begins working on birthing her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and she rests awhile before returning to her task.
+	<</if>>
+	<</if>>
+
+<</switch>>
+
+<<else>> /* add extra events here (moving between jobs | after work) */
+  <<if !canWalk($slaves[$i])>>
+  <<if $slaves[$i].fetish == "mindbroken">>
+    While stroking her pregnancy absentmindedly, $slaves[$i].slaveName's body begins to birth another of her brood. She carries on until the contractions drag her onto her swollen belly.
+    <<ClothingBirth>>
+    She draws her child to her breast and rests upon her mass  until a servant collects her child and helps her back to her bed.
+  <<else>>
+     <<if $seed > 50>>
+      While waiting to be helped to her next assignment, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to do anything, she is forced to give birth where she is.
+    <<ClothingBirth>>
+    She gathers her child and recovers her strength while resuming her wait a servant to help her to her assignment.
+    <<else>>
+      While eating in the cafeteria, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to move, she finds herself stranded in the middle of all the dining slaves.
+    <<set $humiliation = 1>>
+    <<ClothingBirth>>
+    She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the gestering and laughter.
+    <</if>>
+  <</if>>
+  <<else>>
+  <<if $slaves[$i].fetish == "mindbroken">>
+    While wandering the penthouse absentmindedly, $slaves[$i].slaveName's body begins to birth another of her brood. She carries on until the contractions drag her onto her swollen belly.
+    <<ClothingBirth>>
+    She draws her child to her breast and rests upon her mass  until a servant collects her child and helps her back to her feet.
+  <<elseif $slaves[$i].fetish == "humiliation">>
+    While waddling through the penthouse between assignments, $slaves[$i].slaveName's body begins to birth another of her brood. Sensing an opportunity, she waddles to the nearest balcony overlooking the city. She calls out, making sure all eyes are on her for what happens next.
+    <<set $humiliation = 1>>
+    <<ClothingBirth>>
+    She gathers her child and recovers her strength before finding a servant to give her child to. She resumes her previous task, eager for the next child to move into position.
+  <<else>>
+     <<if $seed > 50>>
+      While waddling through the penthouse on the way to her next assignment, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to reach the prepared birthing room in time, she finds a secluded room to give birth in.
+    <<ClothingBirth>>
+    She gathers her child and recovers her strength before finding a servant to give her child to before shuffling to her assignment.
+    <<else>>
+      While waddling through the penthouse on her way to the cafeteria, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to reach the prepared birthing room in time, she finds herself stranded in the middle of all the dining slaves.
+    <<set $humiliation = 1>>
+    <<ClothingBirth>>
+    She gathers her child and recovers her strength before trying to escape out of sight of the jeering crowd. Finding a servant to give her child to, she hastily heads back to her bed to hide herself from the mockery, though her enormous belly keeps her blanket from covering her.
+    <</if>>
+  <</if>>
+  <</if>>
+
+<</if>>
+
+<</widget>>
+
+<<widget "HyperBroodmotherBirth">>
+
 <br>
 
 <<if random(1,2) == 1>> /* at assignment else in halls/etc */
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index cc4e588beb568c86f6a1528bf161b0c085458349..d17162a7be13f0b405effe1168772ef49d71f776 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -172,6 +172,15 @@
 <<if ndef $args[0].newGamePlus>>
 	<<set $args[0].newGamePlus = 0>>
 <</if>>
+<<if ndef $args[0].nipplesAccessory>>
+	<<set $args[0].nipplesAccessory = "none">>
+<</if>>
+<<if def $args[0].pregGenerator>>
+	<<run delete $args[0].pregGenerator>>
+<</if>>
+<<if ndef $args[0].broodmother>>
+	<<set $args[0].broodmother = 0>>
+<</if>>
 
 <<if ndef $args[0].pregKnown>>
 	<<if $args[0].preg > 0>>
@@ -1204,7 +1213,7 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 <<set $mom = $slaves[$i]>>
 
 <br><br>
-Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $slaves[$i].reservedChildren <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
+Of $possessive $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $slaves[$i].reservedChildren <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
 <<for _k = $slaves[$i].reservedChildren; _k != 0; _k-->>
 	<<include "Generate Child">>
 	<<include "Incubator Workaround">>
@@ -1216,11 +1225,11 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 	<<if $slaves[$i].pregSource == -1>>
 		<<if $slaves[$i].devotion < 20 && ($week-$slaves[$i].weekAcquired >= $slaves[$i].weekAcquired)>>
 			<br>
-			She @@.mediumorchid;despises@@ you for using her body to bear your children.
+			$pronounCap @@.mediumorchid;despises@@ you for using $possessive body to bear your children.
 			<<set $slaves[$i].devotion -= 10>>
 		<<elseif $slaves[$i].devotion > 50>>
 			<br>
-			She's @@.hotpink;so proud@@ to have successfully carried children for you.
+			<<print $pronounCap>>'s @@.hotpink;so proud@@ to have successfully carried children for you.
 			<<set $slaves[$i].devotion += 3>>
 		<</if>>
 	<</if>>
@@ -1242,11 +1251,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 			<<set $slaves[$i].trust += 3, $slaves[$i].devotion += 3>>
 			<<set _lostBabies = 0>>
 		<<else>>
-			<<if $slaves[$i].pregType == 50>>
-				As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+			As for the rest;
+			<<if $slaves[$i].broodmother == 2>>
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 				<<set $cash += 12*(50+_babyCost)>>
+			<<elseif $slaves[$i].broodmother == 1>>
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+				<<set $cash += (50+_babyCost)>>
 			<<else>>
-				As for the rest; $possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 				<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 			<</if>>
 		<</if>>
@@ -1255,12 +1268,12 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 		<<set $slaveOrphanageTotal += $slaves[$i].pregType>>
 		Unless you provide otherwise, the remaining child<<if $slaves[$i].pregType > 1>>ren<</if>> will be remanded to one of $arcologies[0].name's slave orphanages. $slaves[$i].slaveName
 		<<if $slaves[$i].devotion > 95>>
-			worships you so completely that she will not resent this.
+			worships you so completely that $pronoun will not resent this.
 		<<elseif $slaves[$i].devotion > 50>>
-			is devoted to you, but she will @@.mediumorchid;struggle to accept this.@@
+			is devoted to you, but $pronoun will @@.mediumorchid;struggle to accept this.@@
 			<<set $slaves[$i].devotion -= 2>>
 		<<elseif $slaves[$i].devotion > 20>>
-			has accepted being a sex slave, but she will @@.mediumorchid;resent this intensely.@@
+			has accepted being a sex slave, but $pronoun will @@.mediumorchid;resent this intensely.@@
 			<<set $slaves[$i].devotion -= 3>>
 		<<else>>
 			will of course @@.mediumorchid;hate you for this.@@
@@ -1272,15 +1285,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 				<<replace `"#" + _dispositionId`>>
 					The remaining child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's future minded schools, to be administered fertility and virility treatments as well as be brought up to take pride in reproduction. $slaves[$i].slaveName
 					<<if $slaves[$i].devotion > 95>>
-						loves you already, but she'll @@.hotpink;love you even more@@ for this. She can't wait to see her child<<if $slaves[$i].pregType > 1>>ren<</if>> proudly furthering your cause.
+						loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this. $pronounCap can't wait to see $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> proudly furthering your cause.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 50>>
-						heard about these and will be @@.hotpink;happy that her child<<if $slaves[$i].pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ She will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but she expected that.
+						heard about these and will be @@.hotpink;happy that $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $pronounCap will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but $pronoun expected that.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 20>>
-						will naturally miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will is broken enough to hope that her offspring will have a better life, or at least an enjoyable one.
+						will naturally miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will is broken enough to hope that $possessive offspring will have a better life, or at least an enjoyable one.
 					<<else>>
-						will of course @@.mediumorchid;hate you for this.@@ The mere thought of her $fertilityAge year old daughter<<if $slaves[$i].pregType > 1>>s<</if>> swollen with life, and proud of it, fills her with @@.gold;disdain.@@
+						will of course @@.mediumorchid;hate you for this.@@ The mere thought of $possessive $fertilityAge year old daughter<<if $slaves[$i].pregType > 1>>s<</if>> swollen with life, and proud of it, fills $object with @@.gold;disdain.@@
 						<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 					<</if>>
 					<<set $breederOrphanageTotal +=$slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
@@ -1292,13 +1305,13 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 			<<replace `"#" + _dispositionId`>>
 				The remaining child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's citizen schools, to be brought up coequal with the arcology's other young people. $slaves[$i].slaveName
 				<<if $slaves[$i].devotion > 95>>
-					loves you already, but she'll @@.hotpink;love you even more@@ for this.
+					loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this.
 				<<elseif $slaves[$i].devotion > 50>>
-					knows about these and will be @@.hotpink;overjoyed.@@ She will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but she expected that.
+					knows about these and will be @@.hotpink;overjoyed.@@ $pronounCap will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but $pronoun expected that.
 				<<elseif $slaves[$i].devotion > 20>>
-					will naturally miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that her offspring will have a better life.
+					will naturally miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that $possessive offspring will have a better life.
 				<<else>>
-					will naturally retain some resentment over being separated from her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but this should be balanced by hope that her offspring will have a better life.
+					will naturally retain some resentment over being separated from $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but this should be balanced by hope that $possessive offspring will have a better life.
 				<</if>>
 				<<set $slaves[$i].devotion += 4, $citizenOrphanageTotal +=$slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
 			<</replace>>
@@ -1312,9 +1325,9 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 				<<elseif $slaves[$i].devotion > 50>>
 					understands that this is the best possible outcome for the offspring of slave, and will be @@.hotpink;overjoyed.@@
 				<<elseif $slaves[$i].devotion > 20>>
-					will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since she'll understand this is the best possible outcome for a slave mother.
+					will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since <<print $pronoun>>'ll understand this is the best possible outcome for a slave mother.
 				<<else>>
-					will resent being separated from her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
+					will resent being separated from $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
 				<</if>>
 				The remaining child<<if $slaves[$i].pregType > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition.
 				<<set $slaves[$i].devotion += 6, $privateOrphanageTotal += $slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
@@ -1327,11 +1340,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 	<</if>>
 <<elseif $Cash4Babies == 1>>
 	<<set _babyCost = random(-12,12)>>
-	<<if $slaves[$i].pregType == 50>>
-		As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+	As for the rest;
+	<<if $slaves[$i].broodmother == 2>>
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 		<<set $cash += 12*(50+_babyCost)>>
+	<<elseif $slaves[$i].broodmother == 1>>
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+		<<set $cash += (50+_babyCost)>>
 	<<else>>
-		As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 		<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 	<</if>>
 <</if>>
@@ -1376,9 +1393,11 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 
 <br>
 <br>
-She @@.orange;gave birth@@<<if $slaves[$i].pregType >= 50>> but her overfilled womb barely lost any size. Her body gave life <</if>>
-<<if $slaves[$i].pregType == 50>>
-	to nearly a dozen babies throughout the week,
+$pronounCap @@.orange;gave birth@@<<if $slaves[$i].broodmother > 1>> but $possessive overfilled womb barely lost any size. $possessiveCap body gave life <<elseif $slaves[$i].broodmother > 0>> but $possessive stomach barely shrank at all. $possessiveCap body gave life <</if>>
+<<if $slaves[$i].broodmother == 2>>
+	to nearly a dozen babies throughout the week.
+<<elseif $slaves[$i].broodmother == 1>>
+	to a single baby this week,
 <<elseif $slaves[$i].pregType <= 1>>
 	to a single baby,
 <<elseif $slaves[$i].pregType >= 40>>
@@ -1419,9 +1438,9 @@ created by
 	$daddy's virile cock and balls.
 <</if>>
 <<if $slaves[$i].pregType >= 80>>
-	After an entire day of labor and birth, her belly sags heavily.
+	After an entire day of labor and birth, $possessive belly sags heavily.
 <<elseif $slaves[$i].pregType >= 40>>
-	After half a day of labor and birth, her belly sags emptily.
+	After half a day of labor and birth, $possessive belly sags emptily.
 <<elseif $slaves[$i].pregType >= 20>>
 	After several hours of labor and birth, $possessive belly sags softly.
 <</if>>
@@ -1445,12 +1464,12 @@ created by
 <br>
 <br>
 <<if ($slaves[$i].fetish == "masochist")>>
-	Since she was a virgin, giving birth was a @@.red;terribly painful@@ experience.<<if $slaves[$i].fetishKnown == 0>>She seems to have orgasmed several times during the experience, she appears to @@.lightcoral;really like pain@@.<<else>> However, due to her masochistic streak, she @@.hotpink;greatly enjoyed@@ said experience<</if>>.
+	Since $pronoun was a virgin, giving birth was a @@.red;terribly painful@@ experience.<<if $slaves[$i].fetishKnown == 0>>$pronounCap seems to have orgasmed several times during the experience, $pronoun appears to @@.lightcoral;really like pain@@.<<else>> However, due to $possessive masochistic streak, $pronoun @@.hotpink;greatly enjoyed@@ said experience<</if>>.
 	<<set $slaves[$i].health -= 10>>
 	<<set $slaves[$i].devotion += 2>>
 	<<set $slaves[$i].fetishKnown = 1>>
 <<else>>
-	Since she was a virgin, giving birth was a @@.red;terribly painful@@ experience. She @@.mediumorchid;despises@@ you for taking her virginity in such a @@.gold;horrifying@@ way.
+	Since $pronoun was a virgin, giving birth was a @@.red;terribly painful@@ experience. $pronounCap @@.mediumorchid;despises@@ you for taking $possessive virginity in such a @@.gold;horrifying@@ way.
 	<<set $slaves[$i].health -= 40>>
 	<<set $slaves[$i].devotion -= 25.0>>
 	<<set $slaves[$i].trust -= 25.0>>
@@ -1557,7 +1576,7 @@ created by
 <</if>>
 
 <br><br>
-<<if $slaves[$i].assignment != "work in the dairy" && $slaves[$i].pregType < 50 && $csec == 0>>
+<<if $slaves[$i].assignment != "work in the dairy" && $slaves[$i].broodmother == 0 && $csec == 0>>
 	All in all,
 	<<if $birthDamage > 15>>
 		childbirth was @@.red;horrifically difficult for $object and nearly claimed $possessive life@@.
@@ -1630,7 +1649,7 @@ created by
 <<set $mom = $slaves[$i]>>
 
 <br><br>
-Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $slaves[$i].reservedChildren <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
+Of $possessive $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $slaves[$i].reservedChildren <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
 <<for _k = $slaves[$i].reservedChildren; _k != 0; _k-->>
 	<<include "Generate Child">>
 	<<include "Incubator Workaround">>
@@ -1643,11 +1662,11 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 	<<if $slaves[$i].pregSource == -1>>
 	<<if $slaves[$i].devotion < 20 && ($week-$slaves[$i].weekAcquired >= $slaves[$i].weekAcquired)>>
 		<br>
-		She @@.mediumorchid;despises@@ you for using her body to bear your children.
+		$pronounCap @@.mediumorchid;despises@@ you for using $possessive body to bear your children.
 		<<set $slaves[$i].devotion -= 10>>
 	<<elseif $slaves[$i].devotion > 50>>
 		<br>
-		She's @@.hotpink;so proud@@ to have successfully carried children for you.
+		<<print $pronounCap>>'s @@.hotpink;so proud@@ to have successfully carried children for you.
 		<<set $slaves[$i].devotion += 3>>
 	<</if>>
 	<</if>>
@@ -1669,11 +1688,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 			<<set $slaves[$i].trust += 3, $slaves[$i].devotion += 3>>
 			<<set _lostBabies = 0>>
 		<<else>>
-			<<if $slaves[$i].pregType == 50>>
-				As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+			As for the rest;
+			<<if $slaves[$i].broodmother == 2>>
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 				<<set $cash += 12*(50+_babyCost)>>
+			<<elseif $slaves[$i].broodmother == 1>>
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+				<<set $cash += (50+_babyCost)>>
 			<<else>>
-				As for the rest; $possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+				$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 				<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 			<</if>>
 		<</if>>
@@ -1682,12 +1705,12 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 		<<set $slaveOrphanageTotal += $slaves[$i].pregType>>
 		Unless you provide otherwise, the remaining child<<if $slaves[$i].pregType > 1>>ren<</if>> will be remanded to one of $arcologies[0].name's slave orphanages. $slaves[$i].slaveName
 		<<if $slaves[$i].devotion > 95>>
-			worships you so completely that she will not resent this.
+			worships you so completely that $pronoun will not resent this.
 		<<elseif $slaves[$i].devotion > 50>>
-			is devoted to you, but she will @@.mediumorchid;struggle to accept this.@@
+			is devoted to you, but $pronoun will @@.mediumorchid;struggle to accept this.@@
 			<<set $slaves[$i].devotion -= 2>>
 		<<elseif $slaves[$i].devotion > 20>>
-			has accepted being a sex slave, but she will @@.mediumorchid;resent this intensely.@@
+			has accepted being a sex slave, but $pronoun will @@.mediumorchid;resent this intensely.@@
 			<<set $slaves[$i].devotion -= 3>>
 		<<else>>
 			will of course @@.mediumorchid;hate you for this.@@
@@ -1699,15 +1722,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 				<<replace `"#" + _dispositionId`>>
 					The remaining child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's future minded schools, to be administered fertility and virility treatments as well as be brought up to take pride in reproduction. $slaves[$i].slaveName
 					<<if $slaves[$i].devotion > 95>>
-						loves you already, but she'll @@.hotpink;love you even more@@ for this. She can't wait to see her child<<if $slaves[$i].pregType > 1>>ren<</if>> proudly furthering your cause.
+						loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this. $pronounCap can't wait to see $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> proudly furthering your cause.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 50>>
-						heard about these and will be @@.hotpink;happy that her child<<if $slaves[$i].pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ She will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but she expected that.
+						heard about these and will be @@.hotpink;happy that $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $pronounCap will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but $pronoun expected that.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 20>>
-						will naturally miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will is broken enough to hope that her offspring will have a better life, or at least an enjoyable one.
+						will naturally miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will is broken enough to hope that $possessive offspring will have a better life, or at least an enjoyable one.
 					<<else>>
-						will of course @@.mediumorchid;hate you for this.@@ The mere thought of her $fertilityAge year old daughter<<if $slaves[$i].pregType > 1>>s<</if>> swollen with life, and proud of it, fills her with @@.gold;disdain.@@
+						will of course @@.mediumorchid;hate you for this.@@ The mere thought of $possessive $fertilityAge year old daughter<<if $slaves[$i].pregType > 1>>s<</if>> swollen with life, and proud of it, fills $object with @@.gold;disdain.@@
 						<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 					<</if>>
 					<<set $breederOrphanageTotal +=$slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
@@ -1719,13 +1742,13 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 			<<replace `"#" + _dispositionId`>>
 				The remaining child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's citizen schools, to be brought up coequal with the arcology's other young people. $slaves[$i].slaveName
 				<<if $slaves[$i].devotion > 95>>
-					loves you already, but she'll @@.hotpink;love you even more@@ for this.
+					loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this.
 				<<elseif $slaves[$i].devotion > 50>>
-					knows about these and will be @@.hotpink;overjoyed.@@ She will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but she expected that.
+					knows about these and will be @@.hotpink;overjoyed.@@ $pronounCap will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but $pronoun expected that.
 				<<elseif $slaves[$i].devotion > 20>>
-					will naturally miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that her offspring will have a better life.
+					will naturally miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that $possessive offspring will have a better life.
 				<<else>>
-					will naturally retain some resentment over being separated from her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but this should be balanced by hope that her offspring will have a better life.
+					will naturally retain some resentment over being separated from $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but this should be balanced by hope that $possessive offspring will have a better life.
 				<</if>>
 				<<set $slaves[$i].devotion += 4, $citizenOrphanageTotal +=$slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
 			<</replace>>
@@ -1739,9 +1762,9 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 				<<elseif $slaves[$i].devotion > 50>>
 					understands that this is the best possible outcome for the offspring of slave, and will be @@.hotpink;overjoyed.@@
 				<<elseif $slaves[$i].devotion > 20>>
-					will miss her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since she'll understand this is the best possible outcome for a slave mother.
+					will miss $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since <<print $pronoun>>'ll understand this is the best possible outcome for a slave mother.
 				<<else>>
-					will resent being separated from her child<<if $slaves[$i].pregType > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
+					will resent being separated from $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
 				<</if>>
 				The remaining child<<if $slaves[$i].pregType > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition.
 				<<set $slaves[$i].devotion += 6, $privateOrphanageTotal += $slaves[$i].pregType, $slaveOrphanageTotal -= $slaves[$i].pregType>>
@@ -1754,11 +1777,15 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 	<</if>>
 <<elseif $Cash4Babies == 1 && $slaves[$i].pregType > 0>>
 	<<set _babyCost = random(-12,12)>>
-	<<if $slaves[$i].pregType == 50>>
-		As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+	As for the rest;
+	<<if $slaves[$i].broodmother == 2>>
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 		<<set $cash += 12*(50+_babyCost)>>
+	<<elseif $slaves[$i].broodmother == 1>>
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+		<<set $cash += (50+_babyCost)>>
 	<<else>>
-		As for the rest; $possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+		$possessive babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 		<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 	<</if>>
 <</if>>
diff --git a/src/pregmod/widgets/slaveSummaryWidgets.tw b/src/pregmod/widgets/slaveSummaryWidgets.tw
index e5c7b57265927caee58945120f938807fae944e2..69191d5c4d9894d28c79e53928622bba67d3eed5 100644
--- a/src/pregmod/widgets/slaveSummaryWidgets.tw
+++ b/src/pregmod/widgets/slaveSummaryWidgets.tw
@@ -489,7 +489,7 @@ Release rules: _Slave.releaseRules.
 		''Fert+''
 	<<elseif ((_Slave.preg < 4) && (_Slave.preg > 0) && _Slave.pregKnown == 0) || _Slave.pregWeek == 1>>
 		''Preg?''
-	<<elseif (_Slave.preg > 30) && (_Slave.pregType >= 50)>>
+	<<elseif (_Slave.preg >= 37) && (_Slave.broodmother > 0)>>
 		''Perm preg''
 	<<elseif _Slave.pregKnown == 1>>
 		''_Slave.pregWeek wks preg''
@@ -552,14 +552,16 @@ Release rules: _Slave.releaseRules.
 		Fertile.
 	<<elseif ((_Slave.preg < 4) && (_Slave.preg > 0) && _Slave.pregKnown == 0) || _Slave.pregWeek == 1>>
 		May be pregnant.
-	<<elseif (_Slave.preg > 30) && (_Slave.pregType >= 50)>>
+	<<elseif (_Slave.preg >= 37) && (_Slave.broodmother > 0)>>
 		Permenantly pregnant.
 	<<elseif _Slave.pregKnown == 1>>
-		<<if _Slave.pregType < 2 || _Slave.pregType >= 50>>
+		<<if _Slave.pregType < 2 || _Slave.broodmother > 0>>
 			_Slave.pregWeek weeks pregnant.
 		<<else>>
 			_Slave.pregWeek weeks pregnant with
-			<<if _Slave.pregType >= 20>>
+			<<if _Slave.pregType >= 40>>
+				a tremendous brood of offspring.
+			<<elseif _Slave.pregType >= 20>>
 				a brood of offspring.
 			<<elseif _Slave.pregType >= 10>>
 				_Slave.pregType babies.
diff --git a/src/societies/aztec/slaveSacrifice.tw b/src/societies/aztec/slaveSacrifice.tw
index 23db76da38b21b32ffd9913b1e48bf6e7d9d5c5a..8d4960c3690c5c33e4b1a0396ddde61910b57702 100644
--- a/src/societies/aztec/slaveSacrifice.tw
+++ b/src/societies/aztec/slaveSacrifice.tw
@@ -86,7 +86,7 @@
 	<</if>>
 	
 	<br>
-	As tradition dictates, the purification of her body will be used as penitence to the goddess in an attempt to pay for the favors bestowed upon your archology. First, one of your slaves is appointed to represent you as her owner who willingly gives the slave as sacrifice, and is put in charge of the slave's health while she goes through the penance process. $activeSlave.slaveName is thoroughly bathed, her whole body covered in blue paint, and her mouth in black, as payment for being a prostitute. She's taken to spend the night at the sexual servitude of another slave who will be sacrificed to Tezcatlipoca, god of the night sky. She's <<if ($activeSlave.devotion > 20)>>fucked all night long <<else>>raped over and over again throughout the night <</if>>; her holes dedicated to the sexual satisfaction of the slave who soon will face a much darker fate than her to please the gods.
+	As tradition dictates, the purification of her body will be used as penitence to the goddess in an attempt to pay for the favors bestowed upon your arcology. First, one of your slaves is appointed to represent you as her owner who willingly gives the slave as sacrifice, and is put in charge of the slave's health while she goes through the penance process. $activeSlave.slaveName is thoroughly bathed, her whole body covered in blue paint, and her mouth in black, as payment for being a prostitute. She's taken to spend the night at the sexual servitude of another slave who will be sacrificed to Tezcatlipoca, god of the night sky. She's <<if ($activeSlave.devotion > 20)>>fucked all night long <<else>>raped over and over again throughout the night <</if>>; her holes dedicated to the sexual satisfaction of the slave who soon will face a much darker fate than her to please the gods.
 	<<if canDoVaginal($activeSlave) && canDoAnal($activeSlave)>>
 		<<set _randomVag = random(0,2)>>
 		<<set _randomAnal = random(0,1)>>
diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw
index e9ad2fa7c23c6446b9b2c904fc30c0eabad2f7e7..dd4fc84297e99432ae883fef9e2c0281d54e339f 100644
--- a/src/uncategorized/PESS.tw
+++ b/src/uncategorized/PESS.tw
@@ -282,7 +282,7 @@ She sees you examining at her, and looks back at you submissively, too tired to
 <br><<link "Keep her to yourself for a week">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	Exclusivity and slavery interact in ways more than merely complex. $activeSlave.slaveName's most passionate devotees are devastated to find her nowhere but by your side for the whole week. Their reaction is mixed: awe, envy, resentment; but mostly @@.green;renewed respect@@ that she is your creature, and yours alone. A lesser slave might show off the particularity you show her, bringing shame on you by giving the impression that you care for her as more than a slave. She is no lesser slave, though, and thoroughly understands the fine line the two of you must walk as <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>> and slave. She makes @@.hotpink;painstakingly@@ clear, through every public glance and gesture, that she is yours as a matter of @@lightyellow;trust@@ rather than as a matter of love.
+	Exclusivity and slavery interact in ways more than merely complex. $activeSlave.slaveName's most passionate devotees are devastated to find her nowhere but by your side for the whole week. Their reaction is mixed: awe, envy, resentment; but mostly @@.green;renewed respect@@ that she is your creature, and yours alone. A lesser slave might show off the particularity you show her, bringing shame on you by giving the impression that you care for her as more than a slave. She is no lesser slave, though, and thoroughly understands the fine line the two of you must walk as <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>> and slave. She makes @@.hotpink;painstakingly@@ clear, through every public glance and gesture, that she is yours as a matter of @@mediumaquamarine;trust@@ rather than as a matter of love.
 	<<set $activeSlave.devotion += 4>>
 	<<set $activeSlave.trust += 4>>
 	<<set $rep += 100>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index caeb4447029a06e1aa880096d82ce8493a0d518b..031dc93e7515f7b3cf9f74f08e1e0afc12c10d73 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -4096,9 +4096,9 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<replace "#result">>
 	You can't complain, it feels really good. You don't know where this skill was lurking in her broken mind, but you're glad to see it put to good use. <<if $PC.dick == 1>>Just as your are about to cum, she takes the full length of your dick down her throat, diligently taking in every drop of cum<<else>>Even as you buck with pleasure, she diligently keeps her tongue to your clit and pussy, making sure you don't go a moment without pleasure<</if>>. You don't have an orgasm like that every day, and as she looks at you lovingly, you prod her with your still hard <<if $PC.dick == 1>>cock<<else>>clit<</if>> for round two.
 	She is @@.green;no longer mindbroken@@ and for whatever twisted reasons deeply and sincerely @@.hotpink;loves@@ and @@.mediumaquamarine;trusts@@ you.
-	<<set $slaves[$i].devotion = 90, $slaves[$i].oldDevotion = 90, $slaves[$i].trust = 90, $slaves[$i].oldTrust = 90, $slaves[$i].sexualQuirk = "caring", $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1>>
+	<<set $activeSlave.devotion = 90, $activeSlave.oldDevotion = 90, $activeSlave.trust = 90, $activeSlave.oldTrust = 90, $activeSlave.sexualQuirk = "caring", $activeSlave.fetish = "none", $activeSlave.fetishKnown = 1>>
 	<<if ($arcologies[0].FSPaternalist != "unset")>>
-		Society @@.green;strongly approves@@ of $slaves[$i].slaveName being restored to sanity, which advances ideals about enlightened slave ownership.
+		Society @@.green;strongly approves@@ of $activeSlave.slaveName being restored to sanity, which advances ideals about enlightened slave ownership.
 		<<set $repGain += 2*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel), $arcologies[0].FSPaternalist += 0.01*$FSSingleSlaveRep>>
 	<</if>>
 	<<set $activeSlave.oralCount += 2>>
@@ -4111,9 +4111,9 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<replace "#result">>
 	You gently grab her face and stare deeply into her $activeSlave.eyeColor eyes. <<if canSee($activeSlave)>>Thay are full of life as opposed to their usual dullness<<else>>They are as dull as always, but that isn't her fault. Her facial expressions at the act tell you all you need to know<</if>>. You pull your wife into a tight embrace, her coming back to you is more than enough a gift, she needn't do anything more for now. You pull the covers over the both of you and begin to doze off, smiling at the warth cuddling ever closer to you.
 	She is @@.green;no longer mindbroken@@ and thanks to your care deeply and sincerely @@.hotpink;loves@@ and @@.mediumaquamarine;trusts@@ you.
-	<<set $slaves[$i].devotion = 100, $slaves[$i].oldDevotion = 100, $slaves[$i].trust = 100, $slaves[$i].oldTrust = 100, $slaves[$i].sexualQuirk = "romantic", $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1>>
+	<<set $activeSlave.devotion = 100, $activeSlave.oldDevotion = 100, $activeSlave.trust = 100, $activeSlave.oldTrust = 100, $activeSlave.sexualQuirk = "romantic", $activeSlave.fetish = "none", $activeSlave.fetishKnown = 1>>
 	<<if ($arcologies[0].FSPaternalist != "unset")>>
-		Society @@.green;strongly approves@@ of $slaves[$i].slaveName being restored to sanity by the power of love, which advances ideals about enlightened slave ownership.
+		Society @@.green;strongly approves@@ of $activeSlave.slaveName being restored to sanity by the power of love, which advances ideals about enlightened slave ownership.
 		<<set $repGain += 2*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel), $arcologies[0].FSPaternalist += 0.01*$FSSingleSlaveRep>>
 	<</if>>
 	<<set $activeSlave.kindness = 0>>
@@ -6849,7 +6849,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	@@.gold;She learns from the experience.@@
 	<<set $activeSlave.trust -= 5>>
 	<</replace>>
-<</link>>
+<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>>//This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>>
 <<if canDoAnal($activeSlave) || canDoVaginal($activeSlave)>>
 <br><<link "Sentence her to public use">>
 	<<EventNameDelink $activeSlave>>
@@ -7697,12 +7697,12 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		her absurd boobs rubbing against your arm.
 	<</if>>
 	She cheers lustily at all the right moments, earning repeated crowd focus shots on the big screen; many fans wonder who their ridiculously hot fellow fan is before @@.green;recognizing you,@@ putting two and two together, and realizing enviously that she's your sex slave. Since this is the Free Cities, the big screen gives her more attention rather than cutting away when she intentionally cheers hard enough that her skirt rides up.
-	<<if $activeSlave.pregType >= 50 && $activeSlave.preg > 38>>
+	<<if $activeSlave.broodmother == 2 && $activeSlave.preg > 37>>
 		The only slightly embarrassing incident is when she's standing up to rally the crowd behind her, facing away from the game and goes into labor on another of her brood; the contractions forcing her to lean forward onto her _belly stomach and give the players below a clear view of her crowning child.
 	<<elseif $activeSlave.belly < 300000>>
 		The only slightly embarrassing incident is when she's standing up to rally the crowd behind her, facing away from the game and bending down to show cleavage to the stands in such a way that her <<if ($activeSlave.butt > 5)>>massive ass<<elseif ($activeSlave.butt > 2)>>big butt<<else>>nice ass<</if>> lifts her skirt up enough that the players below can clearly see her <<if ($activeSlave.anus > 2)>>big slit of an asspussy<<elseif ($activeSlave.anus > 1)>>nice asspussy<<elseif $activeSlave.anus > 0>>tight asshole<<else>>virgin asshole<</if>><<if $activeSlave.vagina > 3>> and gaping pussy<<elseif $activeSlave.vagina > 2>> and used pussy<<elseif $activeSlave.vagina > 1>> and lovely pussy<<elseif $activeSlave.vagina > 0>> and tight pussy<<elseif $activeSlave.vagina == 0>> and virgin pussy<</if>>.
 	<<else>>
-		The only slightly embarrassing incident is when she's standing up to rally the crowd behind her, cheering while swinging her absurd belly back and forth and accidentally smashes into a concession vendor sending them to the floor.Her efforts to help him up forces her to stand in such a way that her <<if ($activeSlave.butt > 5)>>massive ass<<elseif ($activeSlave.butt > 2)>>big butt<<else>>nice ass<</if>> lifts her skirt up enough that the players below can clearly see her <<if ($activeSlave.anus > 2)>>big slit of an asspussy<<elseif ($activeSlave.anus > 1)>>nice asspussy<<elseif $activeSlave.anus > 0>>tight asshole<<else>>virgin asshole<</if>><<if $activeSlave.vagina > 3>> and gaping pussy<<elseif $activeSlave.vagina > 2>> and used pussy<<elseif $activeSlave.vagina > 1>> and lovely pussy<<elseif $activeSlave.vagina > 0>> and tight pussy<<elseif $activeSlave.vagina == 0>> and virgin pussy<</if>>.
+		The only slightly embarrassing incident is when she's standing up to rally the crowd behind her, cheering while swinging her absurd belly back and forth and accidentally smashes into a concession vendor sending them to the floor. Her efforts to help him up forces her to stand in such a way that her <<if ($activeSlave.butt > 5)>>massive ass<<elseif ($activeSlave.butt > 2)>>big butt<<else>>nice ass<</if>> lifts her skirt up enough that the players below can clearly see her <<if ($activeSlave.anus > 2)>>big slit of an asspussy<<elseif ($activeSlave.anus > 1)>>nice asspussy<<elseif $activeSlave.anus > 0>>tight asshole<<else>>virgin asshole<</if>><<if $activeSlave.vagina > 3>> and gaping pussy<<elseif $activeSlave.vagina > 2>> and used pussy<<elseif $activeSlave.vagina > 1>> and lovely pussy<<elseif $activeSlave.vagina > 0>> and tight pussy<<elseif $activeSlave.vagina == 0>> and virgin pussy<</if>>.
 	<</if>>
 	A player from the visiting team is distracted enough to blow a play. Any fans who might have been inclined to disapprove forget their objections when the home team capitalizes on the mistake to score.
 	<<set $rep += 100>>
@@ -10857,11 +10857,6 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<else>>
 		your manly chest.
 	<</if>>
-	<<if $PC.boobs == 0>>
-		
-	<<else>>
-		yours
-	<</if>>
 	Before long being kissed and held by her beloved <<WrittenMaster>> has her playing the slut in your arms, and she backs against the wall before wrapping her legs around your middle to bring her pussy against your
 	<<if $PC.dick == 0>>
 		own.<<if $activeSlave.belly >= 5000>> You move your hands under her to better support her <<if $activeSlave.bellyPreg >= 3000>>gravid bulk<<else>>distended body<</if>>.<</if>> She moans in pain as you scissor against her sore pussy,
@@ -14503,8 +14498,8 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	You're here to rut, not make love, and you give it to her hard, forcing <<if $activeSlave.voice >= 3>>high squeals<<else>>animal grunts<</if>> out of her. She climaxes strongly, and the glorious feeling finishes you as well, bringing rope after rope of your cum jetting into her. She groans at the feeling, and as she <<if $activeSlave.belly >= 5000 || $activeSlave.weight > 190>>slowly <</if>>gets to her feet she uses a hand to transfer a taste of the mixture of your seed and <<if $PC.vagina == 1>>both of your<<else>>her<</if>> pussyjuice to her mouth.
 	<<if $activeSlave.belly >= 750000>>
 		"Oh <<Master>>! I'm <<s>>welling <<s>>o fast with imp<<s>> for you! There'<<s>> <<s>>o many in me... Oh god, it feel<<s>> like I'm going to bur<<s>>t! <<S>>o many... <<Master>> <<s>>ure i<<s>> potent! I hope <<if $PC.title == 1>>he<<else>><<sh>>e<</if>> can handle them all!" She groans, cradling her _belly belly and pretending to be forced to the ground by her pregnancy growing ever larger. "<<Master>>! They won't <<s>>top! Oh... <<S>>o full... I can't <<s>>top con<<c>>eiving!" She roles onto her back and clutches her absurd stomach. "<<S>>o tight! <<S>>o full! <<S>>o Good! I need more! Oh, <<Master>>..." She may be getting a little too into the fantasy.
-		<<if $activeSlave.pregType >= 50>>
-			/* placeholder for accidental birthing */
+		<<if $activeSlave.broodmother == 2 && $activeSlave.preg > 37>>
+			A gush of fluid flows from her pussy, snapping her out of her roleplay. "<<Master>>! I need... One'<<s>> coming now!" You rub her contracting stomach, enjoying the feeling of the life within shifting to take advantage of the free space. You sigh and lean down, the vessel of your spawn needs help after pinning herself in such a compromising position. Holding her belly clear of her crotch, you watch her steadily push out her child before spasming with orgasm and pushing ti effortlessly into the world. After collecting it for a servant to handle, you help the exhausted girl back to her feet. She thanks you sincerely for the assist before going to clean herself up. You barely have time to turn away before another splash catches your attention. "<<Master>>... Another'<<s>>, mmmmh, coming...".
 		<</if>>
 	<<elseif $activeSlave.belly >= 600000>>
 		"Oh <<Master>>! I'm <<s>>welling <<s>>o fast with imp<<s>> for you! There'<<s>> <<s>>o many in me... Oh god, it feel<<s>> like I'm going to bur<<s>>t! <<S>>o many... <<Master>> <<s>>ure i<<s>> potent! I hope <<if $PC.title == 1>>he<<else>><<sh>>e<</if>> can handle them all!" She teases, cradling her _belly belly and pretending to be forced to the ground by her pregnancy growing ever larger.
@@ -15920,7 +15915,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<if $activeSlave.dick > 0>>
 		Her
 		<<if ["chastity", "combined chastity"].includes($activeSlave.dickAccessory)>>
-			chastitiy cage sways
+			chastity cage sways
 		<<elseif canAchieveErection($activeSlave)>>
 			erection waves back and forth
 		<<elseif $activeSlave.dick > 6>>
@@ -18682,7 +18677,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	She came to your office clearly expecting to get fucked, but takes it in stride when you order her to get up on your desk with her crotch to you. She is shudders slightly when you first reach over to take one of her
-	<<switch $slaves[$i].balls>>
+	<<switch $activeSlave.balls>>
 		<<case 10>>inhuman
 		<<case 9>>titanic
 		<<case 8>>gigantic
diff --git a/src/uncategorized/REroyalblood.tw b/src/uncategorized/REroyalblood.tw
index 5218a31b5429990ea0ea4c8d0670dfea517ee546..93375421212642f71cbf5f608fed76bc5f68b61b 100644
--- a/src/uncategorized/REroyalblood.tw
+++ b/src/uncategorized/REroyalblood.tw
@@ -546,7 +546,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		The man seems somewhat surprised that you want to purchase the Queen, given the breadth and quality of his other merchandise available, but not unduly so. Soon enough negotiations begin and a short time later an equitable price is agreed upon. Your new peer even throws in a slight discount, in exchange for allowing him to use the Queen himself for the remainder of the night. 
 		<br><br>
-		When the Queen arrives at your penthouse, she seems almost relieved and almost basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless.
+		When the Queen arrives at your penthouse, she seems almost relieved and almost basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
 		<br><br>
 		<<set $cash -= 15000>>
 		<<set $activeSlaveOneTimeMinAge = ($fertilityAge+2)>>
@@ -571,11 +571,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.foreskin = 0>>
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.ovaries = 1>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.shoulders = random(-1,1)>>
 		<<set $activeSlave.hips = 1>>
@@ -604,7 +606,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 	<<replace "#result">>
 		Seizing a tablet, you quickly send a message to The Colonel. After dark, a flight of VTOLs land in the new arcology laden with troops. When they take off again they have the Queen aboard and make a direct course towards your waiting penthouse.
 		<br><br>
-		When the Queen arrives at your penthouse, she seems almost relieved and almost basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless.
+		When the Queen arrives at your penthouse, she seems almost relieved and almost basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
 		<br><br>
 		<<set $arcologies[0].prosperity -= 12>>
 		<<set $rep -= 12000>>
@@ -630,11 +632,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.foreskin = 0>>
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.ovaries = 1>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.shoulders = random(-1,1)>>
 		<<set $activeSlave.hips = 1>>
@@ -661,7 +665,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $cash -= 500000>>
 		You take a tablet and transmit a communication request to the new arcology owner with your intent. Once his shock wears off, he readily accepts with little need for negotiation. Soon, a flight of VTOLs land in the new arcology laden with goods. When they take off again they have the princess and the Queen who is resigned to her fate, clad in chains then bound face to face in a forced embrace.
 		<br><br>
-		Eventually they both arrive in your penthouse. The princess is flushed with embarrassment in her compromising position, struggling to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless.
+		Eventually they both arrive in your penthouse. The princess is flushed with embarrassment in her compromising position, struggling to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
 		/* princess */
 		<<set $activeSlaveOneTimeMinAge = 16>>
 		<<set $activeSlaveOneTimeMaxAge = 19>>
@@ -726,11 +730,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.boobs = $activeSlave.boobs + random(3,10)*100>>
 		<<set $activeSlave.vagina = 2>>
 		<<set $activeSlave.scrotum = 0>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.hips = 1>>
 		<<set $activeSlave.butt = random(1,4)>>
@@ -761,7 +767,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 	<<replace "#result">>
 	Seizing a tablet, you quickly send a message to The Colonel. After dark, a flight of VTOLs land in the new arcology laden with troops. When they take off again they have the Princes and Queen aboard, making a direct course towards your waiting penthouse.
 		<br><br>
-		Eventually they both arrive in your penthouse. The princess is flushed with embarrassment in her compromising position, struggling to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless.
+		Eventually they both arrive in your penthouse. The princess is flushed with embarrassment in her compromising position, struggling to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
 		<<set $arcologies[0].prosperity -= 13>>
 		<<set $rep -= 13000>>
 		/* princess */
@@ -828,11 +834,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.boobs = $activeSlave.boobs + random(3,10)*100>>
 		<<set $activeSlave.vagina = 2>>
 		<<set $activeSlave.scrotum = 0>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.hips = 1>>
 		<<set $activeSlave.butt = random(1,4)>>
@@ -862,7 +870,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $cash -= 2500000>>
 		You take a tablet and transmit a communication request to the new arcology owner with your intent. Once his shock wears off, he readily accepts with little need for negotiation. Soon, a flight of VTOLs land in the new arcology laden with goods. When they take off again they have the prince and princess, clad in chains and bound face to face in a forced embrace, the Queen, resigned to her fate and a gaggle of terrified court ladies.
 		<br><br>
-		Eventually they all arrive in your penthouse. The prince and princess are flushed with embarrassment in their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless. Lastly, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over.
+		Eventually they all arrive in your penthouse. The prince and princess are flushed with embarrassment in their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>. Lastly, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over.
 		/* princess */
 		<<set $activeSlaveOneTimeMinAge = 16>>
 		<<set $activeSlaveOneTimeMaxAge = 19>>
@@ -977,11 +985,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.scrotum = 0>>
 		<<set $activeSlave.ovaries = 1>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.shoulders = random(-1,1)>>
 		<<set $activeSlave.hips = 1>>
@@ -1053,7 +1063,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set _loot = random(10,300)*100>>
 		Seizing a tablet, you quickly send a message to The Colonel. After dark, a flight of VTOLs land in the new arcology laden with troops. When they take off again they have the prince and princess, clad in chains and bound face to face in a forced embrace, the Queen, resigned to her fate, a gaggle of terrified court ladies and as much loot as they could carry.
 		<br><br>
-		Eventually they all arrive in your penthouse. The prince and princess are flushed with embarrassment in their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless. Lastly, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over. You also scored @@.yellowgreen;<<print cashFormat(_loot)>>@@ in valuables from the raid.
+		Eventually they all arrive in your penthouse. The prince and princess are flushed with embarrassment in their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a facade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own, all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>. Lastly, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over. You also scored @@.yellowgreen;<<print cashFormat(_loot)>>@@ in valuables from the raid.
 		<<set $arcologies[0].prosperity = 2>>
 		<<set $rep = 0>>
 		/* princess */
@@ -1170,11 +1180,13 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.scrotum = 0>>
 		<<set $activeSlave.ovaries = 1>>
-		<<set $activeSlave.preg = 7>>
-		<<set $activeSlave.pregType = 1>>
-		<<set $activeSlave.pregWeek = 7>>
-		<<set $activeSlave.pregKnown = 1>>
-		<<SetBellySize $activeSlave>>
+		<<if $seePreg != 0>>
+			<<set $activeSlave.preg = 7>>
+			<<set $activeSlave.pregType = 1>>
+			<<set $activeSlave.pregWeek = 7>>
+			<<set $activeSlave.pregKnown = 1>>
+			<<SetBellySize $activeSlave>>
+		<</if>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
 		<<set $activeSlave.shoulders = random(-1,1)>>
 		<<set $activeSlave.hips = 1>>
diff --git a/src/uncategorized/SFMBarracks.tw b/src/uncategorized/SFMBarracks.tw
index afbf02cbdf809bc3be34f9d62f7c586c97aba35e..29115d12cffa5d18c6adf112d035e9fbd24dbdcc 100644
--- a/src/uncategorized/SFMBarracks.tw
+++ b/src/uncategorized/SFMBarracks.tw
@@ -11,6 +11,11 @@
 	<<set $Env = _N3, $EnvCash2 = 550, $EnvCash3 = 300, $EnvCash4 = 200, $EnvProsp = 7, _BaseDiscount = _BaseDiscount+.005>>
 <</if>>
 
+<<set $TierTwoUnlock = 0>>
+<<if _StimulantLab >= 5 && _Barracks >= 5 && $securityForceVehiclePower >= 5 && _Armoury >= 5 && _DroneBay >= 5 && $securityForceAircraftPower >= 5>>
+	<<set $TierTwoUnlock = 1>>
+<</if>>
+
 <<include "SpecialForceUpgradeTree">>
 
 <<if $SFNO > 0>>
@@ -114,6 +119,8 @@
 
 <<if $securityForceUpgradeToken == 1 && ($SFAO < _max)>>
 	<br>//_Name is working to improve $securityForceName this week.//
+<<elseif $TierTwoUnlock == 1>>
+	<br>//You receive a message from The Colonel "there's a trade show coming up with exotic upgrades but I'll get laughed out unless we bring the best gear we can get now?"//
 <<elseif $SFAO >= _max>>
 	<br>//$securityForceName is fully equipped and upgraded - nothing else can be done.//
 <</if>>
@@ -130,9 +137,7 @@
 	<br><br>_Name "says certainly <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>>, it is possible to upgrade $securityForceName more than once per week, however, it will cost you."
 	<br>
 	<<link "Would you like to discus upgrading $securityForceName again?">>
-		<<set $securityForceUpgradeToken = 0>>
-		<<set $securityForceUpgradeTokenReset += 1>>
-		<<set $cash -= _securityForceUpgradeResetTokenCurrentCost>>
+		<<set $securityForceUpgradeToken = 0, $securityForceUpgradeTokenReset += 1, $cash -= _securityForceUpgradeResetTokenCurrentCost>>
 		<<goto "SFM Barracks">>
 	<</link>> <br>It will cost 5% of your currently displayed cash, which is <<print cashFormat(Math.trunc(_securityForceUpgradeResetTokenCurrentCost))>>.
 <</if>>
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index 46a9a7b615ca2cf3907bccfbe6d93f3d9af64eca..eb08f2dd1523c4662e92f26f7ac7c513fd042b09 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -298,7 +298,7 @@ This week, rents from $arcologies[0].name came to
 <<if $economy > 1>>
 	<<set $rents = ($week*100)+random(-100,100)>>
 	<<if $cash > 1000>>
-			<<set $rents += Math.trunc($cash/10)>>
+			<<set $rents += Math.trunc($cash*0.02)>>
 	<</if>>
 	The @@.red;degenerating world economy@@ makes supplying and maintaining $arcologies[0].name extremely difficult. This week, bribes and other costs to keep it running came to @@.yellowgreen;<<print cashFormat($rents)>>.@@
 	<<set $cash -= $rents>>
@@ -760,7 +760,7 @@ The Hippolyta Academy have a <<if $TFS.schoolProsperity > 4>>very prosperous<<el
 
 <<if $marketAssistantLimit != 0>>
 <<silently>><<MenialPopCap>><</silently>>
-<<set $seed = Math.clamp($slaveCostFactor*1000, 500, 1500)>>
+<<set $seed = menialSlaveCost()>>
 <br>
 Your ''business assistant'' manages the menial slave market.
 <<if $seed <= 900+$marketAssistantAggressiveness>>/* BUY */
@@ -770,11 +770,11 @@ Your ''business assistant'' manages the menial slave market.
 		<<if $cash > $marketAssistantLimit+$seed>>
 			<<if $assistant == 0>>It<<else>>She<</if>> acquires more chattel, since it's a buyers' market.
 			<<if ($arcologies[0].FSPastoralist != "unset") && ($arcologies[0].FSPaternalist == "unset")>>
-				<<set $menialBioreactors += Math.trunc(($cash-$marketAssistantLimit)/($seed-100)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/($seed-100))*($seed-100)>>
+				<<set $menialBioreactors += Math.trunc(($cash-$marketAssistantLimit)/($seed)), $menialDemandFactor += Math.trunc(($cash-$marketAssistantLimit)/($seed)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/($seed))*($seed)>>
 			<<elseif ($arcologies[0].FSDegradationist != "unset")>>
-				<<set $fuckdolls += Math.trunc(($cash-$marketAssistantLimit)/($seed*2)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/($seed*2))*($seed*2)>>
+				<<set $fuckdolls += Math.trunc(($cash-$marketAssistantLimit)/(($seed+100)*2)), $menialDemandFactor += Math.trunc(($cash-$marketAssistantLimit)/(($seed+100)*2)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/(($seed+100)*2))*(($seed+100)*2)>>
 			<<else>>
-				<<set $helots += Math.trunc(($cash-$marketAssistantLimit)/($seed)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/($seed))*($seed)>>
+				<<set $helots += Math.trunc(($cash-$marketAssistantLimit)/($seed+100)), $menialDemandFactor += Math.trunc(($cash-$marketAssistantLimit)/($seed+100)), $cash -= Math.trunc(($cash-$marketAssistantLimit)/($seed+100))*($seed+100)>>
 			<</if>>
 		<</if>>
 	<</if>>
@@ -783,13 +783,13 @@ Your ''business assistant'' manages the menial slave market.
 		<<if $assistant == 0>>It<<else>>She<</if>> liquidates your chattel holdings, since it's a sellers' market.
 	<</if>>
 	<<if $helots > 0>>
-		<<set $cash+=$helots*($seed),$helots = 0>>
+		<<set $cash += $helots*($seed), $menialDemandFactor -= $helots, $helots = 0>>
 	<</if>>
 	<<if $fuckdolls > 0>>
-		<<set $cash+=$fuckdolls*($seed),$fuckdolls = 0>>
+		<<set $cash += $fuckdolls*($seed*2), $menialDemandFactor -= $fuckdolls, $fuckdolls = 0>>
 	<</if>>
 	<<if $menialBioreactors > 0>>
-		<<set $cash+=$menialBioreactors*($seed),$menialBioreactors = 0>>
+		<<set $cash += $menialBioreactors*($seed-100), $menialDemandFactor -= $menialBioreactors, $menialBioreactors = 0>>
 	<</if>>
 <<else>>
 	Prices are average, so <<if $assistant == 0>>it<<else>>she<</if>> does not make any significant moves.
diff --git a/src/uncategorized/assistantEvents.tw b/src/uncategorized/assistantEvents.tw
index c1f52edf181a14225b6ed0fae3e56784ae3e04c8..812ccaa9dff00f94d34a98df2a9928125a7b8a04 100644
--- a/src/uncategorized/assistantEvents.tw
+++ b/src/uncategorized/assistantEvents.tw
@@ -49,7 +49,25 @@ She continues more seriously,
 	"You may have noticed that the smart implants you've got your slaves wearing are working a little bit better than when I was a boring old secretary type. I'm not a true artificial intelligence, but I can adapt with experience, and I've had a lot of lovely experience lately! Also, a lot of the computing power I use to be sexy helps me adapt smart piercings to individual slaves' sexualities."
 <</if>>
 <br><br>
-"One more thing, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>!" Her symbol flashes brightly. "I could stay like I am now, a hot voice with this symbol representing me when I need to show up on screens. Or, I could slip into something a little sexier. How about this?" The symbol vanishes, and is replaced by a cute little schoolgirl character. She bounces up and down experimentally. "This appearance would work best with an excited voice," she exclaims. She blows you a kiss. The schoolgirl's body shrinks down and all her clothing falls off. A small pair of wings pop out from the pile of clothes and a fairy stands up."Or I could be your tiny and adorable fairy companion!" She shouts excitedly while waving her arms. The fairy's belly begins to swell out, her breasts get puffier and leak a drop of milk. "Or maybe you want your little buddy to be filled with adorable little babies, you little minx" she playfully teases. The fairy rapidly grows to adult size, becomes curvier and more mature, her hair pulls itself back into a bun, and her clothes change into a business suit. A pair of glasses appear on her nose, and she looks at you over their tops. "Or I could be businesslike. And mature." She snaps her fingers, and her bun falls away into long flowing locks. Her body glows and swells, tearing out of her suit with the pregnant figure of an ancient goddess. "Or I could be beautiful and fertile while caring for your slaves."  <<if $seeHyperPreg == 1>>She focuses intently as her stomach expands further.  "And if that wasn't enough, how about me being so pregnant I'm about to burst?"  <</if>>Her water breaks followed by dozens of babies as her belly flattens.<<if $minimumSlaveAge < 13 >>  She glances away shyly as her body shrinks to a childish form.  "Or maybe you'd like something a little more young and tight."<<if $fertilityAge < 13 >>  She moans and rubs her belly as it begins to expand with pregnancy.  "Or maybe you like your little girls with a little bun in the oven?<</if>><</if>>  With a flash, her bulk shifts into rippling muscle. War tattoos appear on her skin, along with bone ornaments and a loincloth. "Or I could be an amazon! Yes!" she shouts exultantly, and flexes.
+"One more thing, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>!" Her symbol flashes brightly. "I could stay like I am now, a hot voice with this symbol representing me when I need to show up on screens. Or, I could slip into something a little sexier. How about this?" The symbol vanishes, and is replaced by a cute little schoolgirl character. She bounces up and down experimentally. "This appearance would work best with an excited voice," she exclaims. She blows you a kiss. The schoolgirl's body shrinks down and all her clothing falls off. A small pair of wings pop out from the pile of clothes and a fairy stands up. "Or I could be your tiny and adorable fairy companion!" She shouts excitedly while waving her arms.
+<<if $seePreg != 0>>
+	The fairy's belly begins to swell out, her breasts get puffier and leak a drop of milk. "Or maybe you want your little buddy to be filled with adorable little babies, you little minx" she playfully teases.
+<</if>>
+The fairy rapidly grows to adult size, becomes curvier and more mature, her hair pulls itself back into a bun, and her clothes change into a business suit. A pair of glasses appear on her nose, and she looks at you over their tops. "Or I could be businesslike. And mature." She snaps her fingers, and her bun falls away into long flowing locks.
+<<if $seePreg != 0>>
+	Her body glows and swells, tearing out of her suit with the pregnant figure of an ancient goddess. "Or I could be beautiful and fertile while caring for your slaves."
+	<<if $seeHyperPreg == 1>>
+		She focuses intently as her stomach expands further. "And if that wasn't enough, how about me being so pregnant I'm about to burst?"
+	<</if>>
+	Her water breaks followed by dozens of babies as her belly flattens.
+<</if>>
+<<if $minimumSlaveAge < 13>>
+	She glances away shyly as her body shrinks to a childish form. "Or maybe you'd like something a little more young and tight."
+	<<if $fertilityAge < 13 && $seePreg != 0>>
+		She moans and rubs her belly as it begins to expand with pregnancy. "Or maybe you like your little girls with a little bun in the oven?
+	<</if>>
+<</if>>
+With a flash, her bulk shifts into rippling muscle. War tattoos appear on her skin, along with bone ornaments and a loincloth. "Or I could be an amazon! Yes!" she shouts exultantly, and flexes.
 <<if $seeDicks != 0>>
 	<br><br>
 	She claps her hands, and her muscles fade, but not all the way. The tattoos vanish, and her loincloth turns into a slutty bikini. Her breasts and behind grow, her lips swell, and her hair turns blonde. Finally, she grows a dick, and it keeps growing until it hangs past her knees: or it would, if it weren't so erect. "Of course," she says seductively, "I could also be a bimbo dickgirl." She orgasms, gasping, "Last one, I promise," and changes again. Her dick shrinks, thought not very far, and then splits into two members. Her skin pales to an off-white, and her hair goes green and starts to writhe, turning into tentacle-hair. Her forehead sprouts a pair of horns that curve back along her head. She grins, displaying a cute pair of fangs. "I feel monstrous," she says, and stretches luxuriantly.
@@ -1256,6 +1274,7 @@ __Personal assistant appearances:__
     <<set $assistantAppearance = "fairy">>
   <</nobr>><</replace>>
 <</link>>
+<<if $seePreg != 0>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Pregnant Fairy">>
   <<replace "#result">>
   <<nobr>>
@@ -1263,38 +1282,41 @@ __Personal assistant appearances:__
     <<set $assistantAppearance = "pregnant fairy">>
   <</nobr>><</replace>>
 <</link>>
+<</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Businesswoman">>
 	<<replace "#result">>
 	At your order, she installs the businesswoman appearance. She straightens her suit jacket primly, which only serves to emphasize her generous bosom. "Thank you, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>. I like being businesslike, and not at all a whore." Her avatar pulls out a tablet and makes ready to get back to helping you. "You can always customize me from the arcology management menu," she adds.
 	<<set $assistantAppearance = "businesswoman">>
 	<</replace>>
 <</link>>
+<<if $seePreg != 0>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Goddess">>
 	<<replace "#result">>
 	At your order, she installs the goddess appearance. She fixes a wreath of flowers into her hair, her golden locks and gravid belly the only things keeping her womanhood concealed. "Thank you, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is wondrous." She squeezes a drop of milk from one heavy breast and smiles. "You can always customize me from the arcology management menu," she adds.
 	<<set $assistantAppearance = "goddess">>
 	<</replace>>
 <</link>>
-<<if $seeHyperPreg == 1>>\
+<<if $seeHyperPreg == 1>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Hyper-Goddess">>
   <<replace "#result">>
-	At your order, she installs the hyper goddess appearance. She fixes a wreath of flowers into her golden locks as her belly rapidly bloats to its limit before bulging and squirming ominously.  Her breasts quickly follow suit. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is wondrous." She massages her squirming pregnancy and smiles. "You can always customize me from the arcology management menuUUUUAH," she is interrupted by a large contraction and a baby's head beginning to part her nether lips.
+	At your order, she installs the hyper goddess appearance. She fixes a wreath of flowers into her golden locks as her belly rapidly bloats to its limit before bulging and squirming ominously. Her breasts quickly follow suit. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is wondrous." She massages her squirming pregnancy and smiles. "You can always customize me from the arcology management menuUUUUAH," she is interrupted by a large contraction and a baby's head beginning to part her nether lips.
     <<set $assistantAppearance = "hypergoddess">>
 	<</replace>>
 <</link>>
 <</if>>
+<</if>>
 <<if $minimumSlaveAge < 13 >>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Loli">>
   <<replace "#result">>
-	At your order, she installs the lolita appearance. She quickly begins losing height as the years peel off her, her bust and hips quickly following suit.  When finished she appears roughly eight years old. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is neat." She twirls around and giggles. "You can always customize me from the arcology management menu," she adds cutely.
+	At your order, she installs the lolita appearance. She quickly begins losing height as the years peel off her, her bust and hips quickly following suit. When finished she appears roughly eight years old. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is neat." She twirls around and giggles. "You can always customize me from the arcology management menu," she adds cutely.
     <<set $assistantAppearance = "loli">>
 	<</replace>>
 <</link>>
 <</if>>
-<<if $minimumSlaveAge < 13 && $fertilityAge < 13>>
+<<if $minimumSlaveAge < 13 && $fertilityAge < 13 && $seePreg != 0>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "A Pregnant Loli">>
   <<replace "#result">>
-	At your order, she installs the modified lolita appearance. She quickly begins losing height as the years peel off her, her bust and hips quickly following suit.  When finished she appears roughly eight years old. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is neat." She twirls around and giggles before groaning and clutching her stomach.  A flood of white liquid flows from her loins as her belly begins rapidly swelling.  She falls onto her backside holding her full term belly and says, exhausted, "You can always customize me from the arcology management menu."
+	At your order, she installs the modified lolita appearance. She quickly begins losing height as the years peel off her, her bust and hips quickly following suit.  When finished she appears roughly eight years old. "Thank you, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. This is neat." She twirls around and giggles before groaning and clutching her stomach. A flood of white liquid flows from her loins as her belly begins rapidly swelling. She falls onto her backside holding her full term belly and says, exhausted, "You can always customize me from the arcology management menu."
     <<set $assistantAppearance = "preggololi">>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/barracks.tw b/src/uncategorized/barracks.tw
index 0b8f96812a3932c97413aa67cf40d0229b2927a5..ecf16cdc64926274fa46104a9caf477b6934186b 100644
--- a/src/uncategorized/barracks.tw
+++ b/src/uncategorized/barracks.tw
@@ -122,22 +122,29 @@ You head up a deck, to the staff area, and up one more, to look into the living
 		<<set _vignette++>>
 	<<elseif $arcologies[0].FSAssetExpansionist != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is almost hidden by a slave he's got in his lap. He has his head buried between her monstrous breasts, and it's not clear how he's breathing.
+		<<set _vignette++>>
 	<</if>>
 	<<if $arcologies[0].FSPastoralist != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is drinking a slave's milk, straight from the nipple, while idly massaging her other breast, bringing out a thin stream of milk.
+		<<set _vignette++>>
 	<</if>>
 	<<if $arcologies[0].FSPhysicalIdealist != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is doing pushups with a well-endowed slave sitting on his back to add weight. She's counting his reps for him.
+		<<set _vignette++>>
 	<<elseif $arcologies[0].FSHedonisticDecadence != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is doing squats with a rather portly slave sitting on his shoulders to add weight. She pops a cookie into his mouth with each completed set.
+		<<set _vignette++>>
 	<</if>>
 	<<if $arcologies[0].FSChattelReligionist != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is mounting a praying slave from behind. It doesn't distract her; her quiet devotions become more fervent as he fucks her.
+		<<set _vignette++>>
 	<</if>>
 	<<if $arcologies[0].FSRepopulationFocus != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is being ridden by an enormously pregnant slave. He's massaging her taut belly as she uses her hands to support her sore boobs.
+		<<set _vignette++>>
 	<<elseif $arcologies[0].FSRestart != "unset">>
 		<<if _vignette >= $FSCreditCount>>Finally, a<<elseif _vignette >= 3>>Yet another<<elseif _vignette >= 2>>A third<<elseif _vignette>>Another<<else>>A<</if>> mercenary is being serviced by a slave with a visibly smooth crotch. He has a dildo rammed in her ass and moves it along with her sucking.
+		<<set _vignette++>>
 	<</if>>
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
 	<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index 7291371da97916078ef47af43853414d1ea1de82..3381fcdef4e7c4b72fe321e7acba1ac937419993 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -1565,7 +1565,7 @@ Choose a tattoo style:
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 
-<<if $activeSlave.belly >= 10000 && ($activeSlave.preg < 30 || $activeSlave.pregType < 10) && $activeSlave.bellyFluid < 5000>>
+<<if $activeSlave.belly >= 10000 && $activeSlave.bellyPreg < 450000 && $activeSlave.bellyFluid < 5000>>
 	<<if $activeSlave.bellyTat == 0>>
 		$pronounCap has no navel tattoos.
 	<<else>>
@@ -1580,7 +1580,7 @@ Choose a tattoo style:
 	<<if $activeSlave.bellyTat != 0>>
 		//[[Remove tattoos|Body Modification][$activeSlave.bellyTat = 0,$cash -= $modCost]]//
 	<</if>>
-<<elseif $activeSlave.preg > 30 && $activeSlave.pregType >= 10>>
+<<elseif $activeSlave.bellyPreg >= 450000>>
 	$possessiveCap middle is large and taut enough to be a suitable canvas for a navel focused tattoo, but $possessive brood is too active to permit the needle to do its work.
 <<elseif $activeSlave.bellyFluid >= 10000>>
 	$possessiveCap middle is large and taut enough to be a suitable canvas for a navel focused tattoo, but the pressure applied to $possessive stomach will likely force $object to release her contents.
@@ -1629,9 +1629,9 @@ Custom Tats:
 	Give $possessive a custom butt tattoo (lower back tattoo): <<textbox "$activeSlave.buttTat" $activeSlave.buttTat "Slave Interact">>
 <</if>>
 
-<<if $activeSlave.dickTat == 0 && $activeSlave.dick != -1>>
+<<if $activeSlave.dickTat == 0 && $activeSlave.dick != 0>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $possessive a custom pubic tattoo: <<textbox "$activeSlave.dickTat" $activeSlave.dickTat "Slave Interact">>
+	Give $possessive a custom dick tattoo: <<textbox "$activeSlave.dickTat" $activeSlave.dickTat "Slave Interact">>
 <</if>>
 
 <<if $activeSlave.vaginaTat == 0 && $activeSlave.vagina != -1>>
diff --git a/src/uncategorized/brothelAdvertisement.tw b/src/uncategorized/brothelAdvertisement.tw
index 650d6ed4fa8abf88b7e639656b5eee4ff21ed365..b7ba8e22fe1dce10e6b585d9162e181b93d7e47c 100644
--- a/src/uncategorized/brothelAdvertisement.tw
+++ b/src/uncategorized/brothelAdvertisement.tw
@@ -159,11 +159,13 @@ Body mods:
 <<if $brothelAdsModded != 0>><<link "Variety">><<set $brothelAdsModded = 0>><<goto "Brothel Advertisement">><</link>><<else>>Variety<</if>>
 <br>
 
+<<if $seePreg != 0>>
 Pregnancy:
 <<if $brothelAdsPreg != 1>><<link "Gravid">><<set $brothelAdsPreg = 1>><<goto "Brothel Advertisement">><</link>> | <<else>>Gravid | <</if>>
 <<if $brothelAdsPreg != -1>><<link "None">><<set $brothelAdsPreg = -1>><<goto "Brothel Advertisement">><</link>> | <<else>>None | <</if>>
 <<if $brothelAdsPreg != 0>><<link "Variety">><<set $brothelAdsPreg = 0>><<goto "Brothel Advertisement">><</link>><<else>>Variety<</if>>
 <br>
+<</if>>
 
 Age:
 <<if $brothelAdsOld != 1>><<link "MILF">><<set $brothelAdsOld = 1>><<goto "Brothel Advertisement">><</link>> | <<else>>MILF | <</if>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 461d823fd74be0faa100d76bdd541c7c5a1f67fe..8da690e68239e157e65aa2171d1e54b1dd2dec97 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -296,7 +296,7 @@
 	<<set _oldCash = $cash>>
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$BrothiIDs[_dI]]>>
-		<<if ($legendaryWombID == 0) && ($slaves[$i].amp != 1) && ($slaves[$i].preg > 30) && ($slaves[$i].pregType < 50) && ($slaves[$i].eggType == "human") && ($slaves[$i].births > 10) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
+		<<if ($legendaryWombID == 0) && ($slaves[$i].amp != 1) && ($slaves[$i].preg > 30) && ($slaves[$i].broodmother == 0) && ($slaves[$i].eggType == "human") && ($slaves[$i].births > 10) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
 			<<set $legendaryWombID = $slaves[$i].ID>>
 		<</if>>
 		<<if ($legendaryWhoreID == 0) && ($slaves[$i].whoreSkill >= 100) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
diff --git a/src/uncategorized/buySlaves.tw b/src/uncategorized/buySlaves.tw
index 7a53e29873d58f77d33ab8fe3a2ec0d07109effe..907b01a531d8339086281a5aeb7de70e18820276 100644
--- a/src/uncategorized/buySlaves.tw
+++ b/src/uncategorized/buySlaves.tw
@@ -211,6 +211,7 @@ __Sex Slave Purchase Options__
 
 <<if ($rep > 11000)>>
 	<br>[[Place a special order|Custom Slave]] | //Customizable but very expensive.//
+	<br>[[Place a fulfillment order|JobFulfillmentCenterOrder]] | //Fills leaderships roles for a price.//
 <</if>>
 
 <<if ($rep > 14000)>>
@@ -257,8 +258,7 @@ __Menial Slaves__
 <<MenialPopCap>>
 The parts of your arcology you own can house a total of $PopCap menial slaves.
 
-<<set _menialPrice = Math.trunc(($slaveCostFactor*1000)/100)*100>>
-<<set _menialPrice = Math.clamp(_menialPrice, 500, 1500)>>
+<<set _menialPrice = menialSlaveCost()>>
 
 <br>
 <<if $helots > 1>>
@@ -272,15 +272,16 @@ The market price of menials is <<print cashFormat(_menialPrice)>>.
 <<set _optionsBreak = 0>>
 <<if $PopCap > $helots+$fuckdolls+$menialBioreactors>>
 	[[Buy|Buy Slaves][$helots+=1,$menialDemandFactor+=1,$cash-=_menialPrice]]
-	<<if $cash > _menialPrice*10>>
-		[[(x10)|Buy Slaves][$helots+=10,$menialDemandFactor+=10,$cash-=_menialPrice*10]]
+	<<if $cash > (_menialPrice+200)*10>>
+		[[(x10)|Buy Slaves][$helots+=10,$menialDemandFactor+=10,$cash-=(_menialPrice+200)*10]]
 	<</if>>
-	<<if $cash > _menialPrice*100>>
-		[[(x100)|Buy Slaves][$helots+=100,$menialDemandFactor+=100,$cash-=_menialPrice*100]]
+	<<if $cash > (_menialPrice+200)*100>>
+		[[(x100)|Buy Slaves][$helots+=100,$menialDemandFactor+=100,$cash-=(_menialPrice+200)*100]]
 	<</if>>
-	<<if $cash > _menialPrice*2>>
-		[[(max)|Buy Slaves][$helots+=Math.trunc($cash/(_menialPrice)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice)),$cash-=Math.trunc($cash/(_menialPrice))*(_menialPrice)]]
+	<<if $cash > (_menialPrice+200)*2>>
+		[[(max)|Buy Slaves][$helots+=Math.trunc($cash/(_menialPrice+200)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice+200)),$cash-=Math.trunc($cash/(_menialPrice+200))*(_menialPrice+200)]]
 	<</if>>
+	//Bulk purchases will cost <<print cashFormat(200)>> over market price.//
 	<<set _optionsBreak = 1>>
 <</if>>
 <<if $helots >= 1>>
@@ -292,35 +293,34 @@ The market price of menials is <<print cashFormat(_menialPrice)>>.
 	[[(x100)|Buy Slaves][$helots-=100,$menialDemandFactor-=100,$cash+=_menialPrice*100]]
 <</if>>
 <</if>>
-[[(all)|Buy Slaves][$cash+=$helots*(_menialPrice),$menialDemandFactor-=$helots*(_menialPrice),$helots = 0]]
+[[(all)|Buy Slaves][$cash+=$helots*(_menialPrice),$menialDemandFactor-=$helots,$helots = 0]]
 	<<if $arcologies[0].FSPaternalist == "unset">>
-	<<if $arcadeUpgradeFuckdolls == 1>>
-	<<set _fconvertCost = 1000>>
-		<<if _menialPrice >= 1100>>
-		<<set _fconvertCost = (_menialPrice+100)>>
+		<<if $arcadeUpgradeFuckdolls == 1>>
+			<<set _fconvertCost = 1000>>
+			<<if _menialPrice >= 1100>>
+				<<set _fconvertCost = (_menialPrice+100)>>
+			<</if>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Convert to Fuckdoll|Buy Slaves][$helots-=1,$fuckdolls+=1,$cash-=(_fconvertCost)]]
+			<<if $helots >= 10>>
+				[[(x10)|Buy Slaves][$helots-=10,$fuckdolls+=10,$cash-=10*(_fconvertCost)]]
+			<<if $helots >= 100>>
+				[[(x100)|Buy Slaves][$helots-=100,$fuckdolls+=100,$cash-=100*(_fconvertCost)]]
+			<</if>>
+			<</if>>
+			[[(all)|Buy Slaves][$fuckdolls+=$helots,$cash-=(_fconvertCost)*($helots),$helots=0]]
+			//Conversion costs <<print cashFormat(_fconvertCost)>> each//
 		<</if>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Convert to Fuckdoll|Buy Slaves][$helots-=1,$fuckdolls+=1,$cash-=(_fconvertCost)]]
-		<<if $helots >= 10>>
-			[[(x10)|Buy Slaves][$helots-=10,$fuckdolls+=10,$cash-=10*(_fconvertCost)]]
-		<<if $helots >= 100>>
-			[[(x100)|Buy Slaves][$helots-=100,$fuckdolls+=100,$cash-=100*(_fconvertCost)]]
+		<<if $dairyFeedersUpgrade > 0>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Convert to Bioreactor|Buy Slaves][$helots-=1,$menialBioreactors+=1,$cash-=500]]
+			<<if $helots >= 10>>
+				[[(x10)|Buy Slaves][$helots-=10,$menialBioreactors+=10,$cash-=5000]]
+			<<if $helots >= 100>>
+				[[(x100)|Buy Slaves][$helots-=100,$menialBioreactors+=100,$cash-=50000]]
+			<</if>>
+			<</if>>
+			[[(all)|Buy Slaves][$menialBioreactors+=$helots,$cash-=500*$helots,$helots=0]]
+			//Conversion costs <<print cashFormat(500)>> each//
 		<</if>>
-		<</if>>
-		[[(all)|Buy Slaves][$fuckdolls+=$helots,$cash-=(_fconvertCost)*($helots),$helots=0]]
-		//Costs <<print cashFormat(_fconvertCost)>>//
-	<</if>>
-	<<if $dairyFeedersUpgrade > 0>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Convert to Bioreactor|Buy Slaves][$helots-=1,$menialBioreactors+=1,$cash-=500]]
-		//Costs <<print cashFormat(500)>>//
-		<<if $helots >= 10>>
-			[[(x10)|Buy Slaves][$helots-=10,$menialBioreactors+=10,$cash-=5000]]
-		<<if $helots >= 100>>
-			[[(x100)|Buy Slaves][$helots-=100,$menialBioreactors+=100,$cash-=50000]]
-		<</if>>
-		<</if>>
-		[[(all)|Buy Slaves][$menialBioreactors+=$helots,$cash-=500*$helots,$helots=0]]
-		//Costs <<print cashFormat(500)>>//
-	<</if>>
 	<</if>>
 <</if>>
 
@@ -336,16 +336,17 @@ The market price of standard fuckdolls is <<print cashFormat(_menialPrice*2)>>.
 <<set _optionsBreak = 0>>
 <<if $PopCap > $helots+$fuckdolls+$menialBioreactors>>
 <<if $arcologies[0].FSPaternalist == "unset">>
-	[[Buy|Buy Slaves][$fuckdolls+=1,$menialDemandFactor+=1,$cash-=_menialPrice*2]]
-	<<if $cash > _menialPrice*20>>
-		[[(x10)|Buy Slaves][$fuckdolls+=10,$menialDemandFactor+=10,$cash-=_menialPrice*20]]
+	[[Buy|Buy Slaves][$fuckdolls+=1,$menialDemandFactor+=1,$cash-=(_menialPrice*2+200)]]
+	<<if $cash > (_menialPrice*2+200)*10>>
+		[[(x10)|Buy Slaves][$fuckdolls+=10,$menialDemandFactor+=10,$cash-=(_menialPrice*2+200)*20]]
 	<</if>>
-	<<if $cash > _menialPrice*200>>
-		[[(x100)|Buy Slaves][$fuckdolls+=100,$menialDemandFactor+=100,$cash-=_menialPrice*200]]
+	<<if $cash > (_menialPrice*2+200)*100>>
+		[[(x100)|Buy Slaves][$fuckdolls+=100,$menialDemandFactor+=100,$cash-=(_menialPrice*2+200)*100]]
 	<</if>>
-	<<if $cash > _menialPrice*4>>
-		[[(max)|Buy Slaves][$fuckdolls+=Math.trunc($cash/(_menialPrice*2)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice*2)),$cash-=Math.trunc($cash/(_menialPrice*2))*(_menialPrice*2)]]
+	<<if $cash > (_menialPrice*2+200)*2>>
+		[[(max)|Buy Slaves][$fuckdolls+=Math.trunc($cash/(_menialPrice*2+200)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice*2+200)),$cash-=Math.trunc($cash/(_menialPrice*2+200))*(_menialPrice*2+200)]]
 	<</if>>
+	//Bulk purchases will cost <<print cashFormat(200)>> over market price.//
 	<<set _optionsBreak = 1>>
 <</if>>
 <</if>>
@@ -358,7 +359,7 @@ The market price of standard fuckdolls is <<print cashFormat(_menialPrice*2)>>.
 	[[(x100)|Buy Slaves][$fuckdolls-=100,$menialDemandFactor-=100,$cash+=_menialPrice*200]]
 <</if>>
 <</if>>
-[[(all)|Buy Slaves][$cash+=$fuckdolls*(_menialPrice*2),$menialDemandFactor-=$fuckdolls*(_menialPrice*2),$fuckdolls = 0]]
+[[(all)|Buy Slaves][$cash+=$fuckdolls*(_menialPrice*2),$menialDemandFactor-=$fuckdolls,$fuckdolls = 0]]
 <</if>>
 <</if>>
 
@@ -374,16 +375,17 @@ The market price of standard bioreactors is <<print cashFormat((_menialPrice-100
 <<set _optionsBreak = 0>>
 <<if $PopCap > $helots+$fuckdolls+$menialBioreactors>>
 <<if $arcologies[0].FSPaternalist == "unset">>
-	[[Buy|Buy Slaves][$menialBioreactors+=1,$menialDemandFactor+=1,$cash-=(_menialPrice-100)]]
-	<<if $cash > (_menialPrice-100)*10>>
-		[[(x10)|Buy Slaves][$menialBioreactors+=10,$menialDemandFactor+=10,$cash-=(_menialPrice-100)*10]]
+	[[Buy|Buy Slaves][$menialBioreactors+=1,$menialDemandFactor+=1,$cash-=(_menialPrice+100)]]
+	<<if $cash > (_menialPrice+100)*10>>
+		[[(x10)|Buy Slaves][$menialBioreactors+=10,$menialDemandFactor+=10,$cash-=(_menialPrice+100)*10]]
 	<</if>>
-	<<if $cash > (_menialPrice-100)*100>>
-		[[(x100)|Buy Slaves][$menialBioreactors+=100,$menialDemandFactor+=100,$cash-=(_menialPrice-100)*100]]
+	<<if $cash > (_menialPrice+100)*100>>
+		[[(x100)|Buy Slaves][$menialBioreactors+=100,$menialDemandFactor+=100,$cash-=(_menialPrice+100)*100]]
 	<</if>>
-	<<if $cash > (_menialPrice-100)*2>>
-		[[(max)|Buy Slaves][$menialBioreactors+=Math.trunc($cash/(_menialPrice-100)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice-100)),$cash-=Math.trunc($cash/(_menialPrice-100))*(_menialPrice-100)]]
+	<<if $cash > (_menialPrice+100)*2>>
+		[[(max)|Buy Slaves][$menialBioreactors+=Math.trunc($cash/(_menialPrice+100)),$menialDemandFactor+=Math.trunc($cash/(_menialPrice+100)),$cash-=Math.trunc($cash/(_menialPrice+100))*(_menialPrice+100)]]
 	<</if>>
+	//Bulk purchases will cost <<print cashFormat(200)>> over market price.//
 	<<set _optionsBreak = 1>>
 <</if>>
 <</if>>
@@ -396,6 +398,6 @@ The market price of standard bioreactors is <<print cashFormat((_menialPrice-100
 	[[(x100)|Buy Slaves][$menialBioreactors-=100,$menialDemandFactor-=100,$cash+=(_menialPrice-100)*100]]
 <</if>>
 <</if>>
-[[(all)|Buy Slaves][$cash+=$menialBioreactors*(_menialPrice-100),$menialDemandFactor-=$menialBioreactors*(_menialPrice-100),$menialBioreactors = 0]]
+[[(all)|Buy Slaves][$cash+=$menialBioreactors*(_menialPrice-100),$menialDemandFactor-=$menialBioreactors,$menialBioreactors = 0]]
 <</if>>
 <</if>>
diff --git a/src/uncategorized/clubAdvertisement.tw b/src/uncategorized/clubAdvertisement.tw
index d7b9539dd8048336c3d5bc5595d0fb6e71ef4f87..6db82173b58aec1d40fc10bb80d357b3fbaac6dd 100644
--- a/src/uncategorized/clubAdvertisement.tw
+++ b/src/uncategorized/clubAdvertisement.tw
@@ -171,11 +171,13 @@ Age:
 <<if $clubAdsOld != 0>><<link "Variety">><<set $clubAdsOld = 0>><<goto "Club Advertisement">><</link>> <<else>>Variety<</if>>
 <br>
 
+<<if $seePreg != 0>>
 Pregnancy:
 <<if $clubAdsPreg != 1>><<link "Gravid">><<set $clubAdsPreg = 1>><<goto "Club Advertisement">><</link>> | <<else>>Gravid | <</if>>
 <<if $clubAdsPreg != -1>><<link "None">><<set $clubAdsPreg = -1>><<goto "Club Advertisement">><</link>> | <<else>>None | <</if>>
 <<if $clubAdsPreg != 0>><<link "Variety">><<set $clubAdsPreg = 0>><<goto "Club Advertisement">><</link>><<else>>Variety<</if>>
 <br>
+<</if>>
 
 <<if $seeDicks != 0>>
 	Genitalia:
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index 2e2801935ea9bc512f9b0671a050a524bce87c26..9f85c86ec420cdff9d5861761a3b1adad5466b14 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -201,7 +201,7 @@
 		<<if ($legendaryEntertainerID == 0) && ($slaves[$i].prestige == 0) && ($slaves[$i].entertainSkill >= 100) && ($slaves[$i].devotion > 50)>>
 			<<set $legendaryEntertainerID = $slaves[$i].ID>>
 		<</if>>
-		<<if ($legendaryWombID == 0) && ($slaves[$i].amp != 1) && ($slaves[$i].preg > 30) && ($slaves[$i].pregType < 50) && ($slaves[$i].eggType == "human") && ($slaves[$i].births > 10) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
+		<<if ($legendaryWombID == 0) && ($slaves[$i].amp != 1) && ($slaves[$i].preg > 30) && ($slaves[$i].broodmother == 0) && ($slaves[$i].eggType == "human") && ($slaves[$i].births > 10) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
 			<<set $legendaryWombID = $slaves[$i].ID>>
 		<</if>>
 		<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
diff --git a/src/uncategorized/corporationDevelopments.tw b/src/uncategorized/corporationDevelopments.tw
index 3cfab5e41e5c9b5da5538f0c88994da0041195ac..1d652f39160ad148e32cbd1f45af013ea52463e1 100644
--- a/src/uncategorized/corporationDevelopments.tw
+++ b/src/uncategorized/corporationDevelopments.tw
@@ -16,51 +16,55 @@
 <<set $corpPeopleEnslaved += 1>>
 
 <<set $corpValue = $corpCash + ($generalAssets*$generalAssetPrice)+($slaveAssets*$slaveAssetPrice)+($entrapmentAssets*$entrapmentAssetPrice)+($captureAssets*$captureAssetPrice)+($trainingAssets*$trainingAssetPrice)+($surgicalAssets*$surgicalAssetPrice)+($drugAssets*$drugAssetPrice)>>
-<<set $corpProfit = Math.trunc( 6666666 / (1 + Math.exp(-0.8 * (Math.log($corpValue) - 22))) ) - random(666, 6666)>> /* formula caps at 6666666, reaches 6.5 million at corpValue of 10 to the 12th power */
+<<set $corpProfit = Math.max(0, Math.trunc( 6666666 / (1 + Math.exp(-0.8 * (Math.log($corpValue) - 22))) ) - random(666, 6666))>> /* formula caps at 6666666, reaches 6.5 million at corpValue of 10 to the 12th power */
 <<set $corpCash = Math.trunc($corpCash + $corpProfit)>>
 Your corporation was valued at <<print cashFormat($corpValue)>> and made a profit of <<print cashFormat($corpProfit)>> last week.
+<<set _addedSlaves = Math.ceil(Math.log($captureAssets+$entrapmentAssets))>>
 <<if $mercenariesHelpCorp > 0>>
 	The $mercenariesTitle assist it with difficult enslavement targets. Otherwise, it
-	<<set $slaveAssets += $mercenaries*random(66,666)>>
-	<<set $corpPeopleEnslaved += $mercenaries>>
+	<<set _addedSlaves = Math.ceil(_addedSlaves * (1 + .04 * $mercenaries))>> /* increase by 12-20% ($mercenaries == 3 - 5) */
 <<else>>
 	It
 <</if>>
 <<if _roll > 90>>
 	was an outstanding week for corporate enslavement;
-	<<set $slaveAssets += Math.ceil(900*Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
-	<<set $corpPeopleEnslaved += Math.ceil(Math.log($captureAssets+$entrapmentAssets)/Math.log(10)*5)>>
+	<<set _addedSlaves *= 5>>
 <<elseif _roll > 60>>
 	was a great week for enslavement;
-	<<set $slaveAssets += Math.ceil(800*Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
-	<<set $corpPeopleEnslaved += Math.ceil(Math.log($captureAssets+$entrapmentAssets)/Math.log(10)*4)>>
+	<<set _addedSlaves *= 4>>
 <<elseif _roll > 40>>
 	was a good week for enslavement;
-	<<set $slaveAssets += Math.ceil(700*Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
-	<<set $corpPeopleEnslaved += Math.ceil(Math.log($captureAssets+$entrapmentAssets)/Math.log(10)*3)>>
+	<<set _addedSlaves *= 3>>
 <<elseif _roll > 20>>
 	was a mediocre week for enslavement;
-	<<set $slaveAssets += Math.ceil(600*Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
-	<<set $corpPeopleEnslaved += Math.ceil(Math.log($captureAssets+$entrapmentAssets)/Math.log(10)*2)>>
+	<<set _addedSlaves *= 2>>
 <<else>>
 	was a bad week for enslavement;
-	<<set $slaveAssets += Math.ceil(500*Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
-	<<set $corpPeopleEnslaved += Math.ceil(Math.log($captureAssets+$entrapmentAssets)/Math.log(10))>>
 <</if>>
+<<set $corpPeopleEnslaved += _addedSlaves, $slaveAssets += 500 * _addedSlaves>>
 in total, the corporation has enslaved <<print commaNum($corpPeopleEnslaved)>> people.
-<<if $slaveAssets < ($trainingAssets+$surgicalAssets+$drugAssets)>>
+<<set _trainingWeight = 0.6, _surgicalWeight = 0.2, _drugWeight = 0.2>>
+<<if $surgicalUpgradeCosmetics == "none" && $surgicalUpgradeImplants == "none" && $surgicalUpgradeGenitalia == "none">>
+	<<set _surgicalWeight = 0, _trainingWeight += 0.2>>
+<</if>>
+<<if $drugUpgradeHormones == "none" && $drugUpgradeInjectionOne == "none" && $drugUpgradeInjectionTwo == "none">>
+	<<set _drugWeight = 0.1, _trainingWeight += 0.1>>
+<</if>>
+<<set _improvementAssetsTotal = ($trainingAssets * _trainingWeight) + ($surgicalAssets * _surgicalWeight) + ($drugAssets * _drugWeight)>>
+<<if _improvementAssetsTotal > $slaveAssets * 0.4>>
 	The corporation has enough training and medical assets to rapidly improve its human holdings.
-	<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)*300)>>
-<<elseif $slaveAssets < ($trainingAssets+$surgicalAssets+$drugAssets)*2>>
+	<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)*400)>>
+<<elseif _improvementAssetsTotal > $slaveAssets * 0.2>>
 	The corporation uses its training and medical assets to improve its human holdings.
-	<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)*100)>>
+	<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)*200)>>
 <<else>>
 	The corporation has only enough training and medical assets to maintain the value of its human holdings.
 <</if>>
-<<set $trainingAssets = Math.ceil($trainingAssets * random(90,95)/100), $surgicalAssets = Math.ceil($surgicalAssets * random(90,95)/100), $drugAssets = Math.ceil($drugAssets * random(90,95)/100)>>
+/* model weekly corporate expenses as random 1-3% reduction in all asset types (including cash) ... except slaves, whose value is tied to $slaveCostFactor (which the corporation does not affect) */
+<<set $trainingAssets = Math.ceil($trainingAssets * random(97,99)/100), $surgicalAssets = Math.ceil($surgicalAssets * random(97,99)/100), $drugAssets = Math.ceil($drugAssets * random(97,99)/100), $generalAssets = Math.ceil($generalAssets * random(97,99)/100), $entrapmentAssets = Math.ceil($entrapmentAssets * random(97,99)/100), $captureAssets = Math.ceil($captureAssets * random(97,99)/100), $corpCash = Math.ceil($corpCash * random(97,99)/100)>>
 <<if $corpMarket>>
 	<<if $rep > 5000>>
-		<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)/Math.log(10)*(($rep-5000)/15000))>>
+		<<set $slaveAssets += Math.ceil(Math.log($slaveAssets)/Math.log(10)*(($rep-5000)/15000)*200)>>
 		Since the corporation has its flagship slave market in $arcologies[0].name, your
 		<<if $rep > 19000>>
 			worldwide renown greatly
@@ -92,7 +96,7 @@ in total, the corporation has enslaved <<print commaNum($corpPeopleEnslaved)>> p
 <<elseif $corpProfit > ($personalShares+$publicShares)>>
 	Since it is acceptably profitable, a small dividend of ¤0.1/share was paid out to stockholders; you received @@.yellowgreen;<<print cashFormat($personalShares*0.1)>>@@.
 	<<set $cash += Math.trunc($personalShares*0.1), $corpCash -= Math.trunc(($personalShares+$publicShares)*0.1)>>
-<<else>>
+<<elseif $corpProfit > 200>>
 	Since it is barely profitable, a tiny dividend was paid out to stockholders; you received @@.yellowgreen;<<print cashFormat(1+Math.ceil(($corpProfit*0.01*$personalShares)/($personalShares+$publicShares)))>>@@.
 	<<set $cash += 1+Math.ceil(($corpProfit*0.01*$personalShares)/($personalShares+$publicShares)), $corpCash -= Math.trunc($corpProfit*0.01)>>
 <</if>>
@@ -129,69 +133,92 @@ Shares in your corporation are trading at <<print cashFormat($sharePrice)>>:
 <<set $oldSharePrice = Math.ceil($sharePrice)>>
 
 You hold <<print commaNum($personalShares)>> shares personally while <<print commaNum($publicShares)>> are publicly held.
+<<set _PrivateOwnershipPercentage = Math.trunc(($personalShares/($personalShares+$publicShares))*100)>>
+<<set _PublicOwnershipPercentage = Math.trunc(($publicShares/($personalShares+$publicShares))*100)>>
 <span id="CorpAction">
 
 <br><br>
-<<if $cash > 1000*$sharePrice>>
-<br>Purchase shares from corporation:
-	<<if $cash > 1000*$sharePrice>>
-	<<link "1000">><<set $personalShares += 1000>><<set $cash -= 1000*$sharePrice>><<set $corpCash += 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102)))/100>><<replace "#CorpAction">><br><<print "You purchased 1000 shares from the corporation, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $cash > 5000*$sharePrice>>
-	| <<link "5000">><<set $personalShares += 5000>><<set $cash -= 5000*$sharePrice>><<set $corpCash += 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102)))/100>><<replace "#CorpAction">><br><<print "You purchased 5000 shares from the corporation, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $cash > 10000*$sharePrice>>
-	| <<link "10000">><<set $personalShares += 10000>><<set $cash -= 10000*$sharePrice>><<set $corpCash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,103)))/100>><<replace "#CorpAction">><br><<print "You purchased 10000 shares from the corporation, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $cash > 15000*$sharePrice>>
-	| <<link "15000">><<set $personalShares += 15000>><<set $cash -= 15000*$sharePrice>><<set $corpCash += 15000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(103,104)))/100>><<replace "#CorpAction">><br><<print "You purchased 15000 shares from the corporation, driving the share price up somewhat.">><</replace>><</link>><</if>>
-	<<if $cash > 20000*$sharePrice>>
-	| <<link "20000">><<set $personalShares += 20000>><<set $cash -= 20000*$sharePrice>><<set $corpCash += 20000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(104,106)))/100>><<replace "#CorpAction">><br><<print "You purchased 20000 shares from the corporation, driving the share price up significantly.">><</replace>><</link>><</if>>
-<<else>>
-You are unable to purchase 1000 shares at the current share price.
-<</if>>
 
-<br>Issue new shares:
-<<if $personalShares-1000 > $publicShares>>
-	 <<link "1000">><<set $publicShares += 1000>><<set $corpCash += 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 1000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-5000 > $publicShares>>
-	 | <<link "5000">><<set $publicShares += 5000>><<set $corpCash += 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 5000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-10000 > $publicShares>>
-	 | <<link "10000">><<set $publicShares += 10000>><<set $corpCash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(97,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 10000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-15000 > $publicShares>>
-	 | <<link "15000">><<set $publicShares += 15000>><<set $corpCash += 15000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(96,98)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 15000 new shares, driving the share price down somewhat.">><</replace>><</link>><</if>>
-<<if $personalShares-20000 > $publicShares>>
-	 | <<link "20000">><<set $publicShares += 20000>><<set $corpCash += 20000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(94,96)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 20000 new shares, driving the share price down significantly.">><</replace>><</link>><</if>>
+<<if _PrivateOwnershipPercentage < 51>>//You cannot give up majority control.//
+<<else>> /* actions that reduce private ownership percentage */
 
-<<set _PublicOwnershipPercentage = (Math.trunc($publicShares/$personalShares))*100>>	  	
-<<set _PrivateOwnershipPercentage = (Math.trunc($personalShares/$publicShares))*100>>
-	
-<br>Sell personal shares:
-<<if _PrivateOwnershipPercentage < 51>>//You cannot give up majority control.//<</if>>
-<<if _PrivateOwnershipPercentage > 51 && $personalShares-1000 > $publicShares>>
-	 <<link "1000">><<set $personalShares -= 1000>><<set $publicShares += 1000>><<set $cash += 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You sold 1000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-5000 > $publicShares>>
-	 | <<link "5000">><<set $personalShares -= 5000>><<set $publicShares += 5000>><<set $cash += 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You sold 5000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-10000 > $publicShares>>
-	 | <<link "10000">><<set $personalShares -= 10000>><<set $publicShares += 10000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(97,99)))/100>><<replace "#CorpAction">><br><<print "You sold 10000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
-<<if $personalShares-15000 > $publicShares>>
-	 | <<link "15000">><<set $personalShares -= 15000>><<set $publicShares += 15000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(96,98)))/100>><<replace "#CorpAction">><br><<print "You sold 15000 shares, driving the share price down somewhat.">><</replace>><</link>><</if>>
-<<if $personalShares-20000 > $publicShares>>
-	 | <<link "20000">><<set $personalShares -= 20000>><<set $publicShares += 20000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(94,96)))/100>><<replace "#CorpAction">><br><<print "You sold 20000 shares, driving the share price down significantly.">><</replace>><</link>><</if>>
+	<br>Sell personal shares:
+	<<if $personalShares-1000 > $publicShares>>
+		 <<link "1000">><<set $personalShares -= 1000>><<set $publicShares += 1000>><<set $cash += 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>><<replace "#CorpAction">><br><<print "You sold 1000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-5000 > $publicShares>>
+		 | <<link "5000">><<set $personalShares -= 5000>><<set $publicShares += 5000>><<set $cash += 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>><<replace "#CorpAction">><br><<print "You sold 5000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-10000 > $publicShares>>
+		 | <<link "10000">><<set $personalShares -= 10000>><<set $publicShares += 10000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(97,99,$PC.trading >= 100 ? 99 : 98)))/100>><<replace "#CorpAction">><br><<print "You sold 10000 shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-15000 > $publicShares>>
+		 | <<link "15000">><<set $personalShares -= 15000>><<set $publicShares += 15000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(96,98,$PC.trading >= 100 ? 98 : 97)))/100>><<replace "#CorpAction">><br><<print "You sold 15000 shares, driving the share price down somewhat.">><</replace>><</link>><</if>>
+	<<if $personalShares-20000 > $publicShares>>
+		 | <<link "20000">><<set $personalShares -= 20000>><<set $publicShares += 20000>><<set $cash += 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(95,97,$PC.trading >= 100 ? 97 : 96)))/100>><<replace "#CorpAction">><br><<print "You sold 20000 shares, driving the share price down significantly.">><</replace>><</link>><</if>>
+
+	<br>Issue new public shares:
+	<<if $personalShares-1000 > $publicShares>>
+		 <<link "1000">><<set $publicShares += 1000>><<set $corpCash += 1000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 1000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-5000 > $publicShares>>
+		 | <<link "5000">><<set $publicShares += 5000>><<set $corpCash += 5000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 5000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-10000 > $publicShares>>
+		 | <<link "10000">><<set $publicShares += 10000>><<set $corpCash += 10000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(97,99)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 10000 new shares, driving the share price down slightly.">><</replace>><</link>><</if>>
+	<<if $personalShares-15000 > $publicShares>>
+		 | <<link "15000">><<set $publicShares += 15000>><<set $corpCash += 15000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(96,98)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 15000 new shares, driving the share price down somewhat.">><</replace>><</link>><</if>>
+	<<if $personalShares-20000 > $publicShares>>
+		 | <<link "20000">><<set $publicShares += 20000>><<set $corpCash += 20000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(95,97)))/100>><<replace "#CorpAction">><br><<print "The corporation issued 20000 new shares, driving the share price down significantly.">><</replace>><</link>><</if>>
+
+<</if>>/* closes actions that reduce private ownership percentage */
+
+<<if _PublicOwnershipPercentage <= 5>>//You cannot make the corporation privately held.//
+<<else>> /* actions that reduce public ownership percentage */
+	<br>Purchase shares from corporation:
+	<<if $cash > 1000*$sharePrice>>
+		<<if $cash > 1000*$sharePrice>>
+			 <<link "1000">><<set $personalShares += 1000>><<set $cash -= 1000*$sharePrice>><<set $corpCash += 1000*Math.floor($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You purchased 1000 shares from the corporation, driving the share price down slightly.">><</replace>><</link>><</if>>
+		<<if $cash > 5000*$sharePrice>>
+			 | <<link "5000">><<set $personalShares += 5000>><<set $cash -= 5000*$sharePrice>><<set $corpCash += 5000*Math.floor($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You purchased 5000 shares from the corporation, driving the share price down slightly.">><</replace>><</link>><</if>>
+		<<if $cash > 10000*$sharePrice>>
+			 | <<link "10000">><<set $personalShares += 10000>><<set $cash -= 10000*$sharePrice>><<set $corpCash += 10000*Math.floor($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(97,99)))/100>><<replace "#CorpAction">><br><<print "You purchased 10000 shares from the corporation, driving the share price down slightly.">><</replace>><</link>><</if>>
+		<<if $cash > 15000*$sharePrice>>
+			 | <<link "15000">><<set $personalShares += 15000>><<set $cash -= 15000*$sharePrice>><<set $corpCash += 15000*Math.floor($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(96,98)))/100>><<replace "#CorpAction">><br><<print "You purchased 15000 shares from the corporation, driving the share price down somewhat.">><</replace>><</link>><</if>>
+		<<if $cash > 20000*$sharePrice>>
+			 | <<link "20000">><<set $personalShares += 20000>><<set $cash -= 20000*$sharePrice>><<set $corpCash += 20000*Math.floor($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(95,97)))/100>><<replace "#CorpAction">><br><<print "You purchased 20000 shares from the corporation, driving the share price down significantly.">><</replace>><</link>><</if>>
+	<<else>>
+		//You are unable to purchase 1000 shares at the current share price.//
+	<</if>>
 
-<<if $cash > 1000*$sharePrice>>
 	<br>Buy publicly held shares:
-	<<if _PublicOwnershipPercentage <= 5>>//You cannot make the corporation privately held.//<</if>>
-	<<if _PublicOwnershipPercentage < 49 && $publicShares > 1000 && $cash >= 1000*$sharePrice>>
-		  <<link "1000">><<set $personalShares += 1000>><<set $publicShares -= 1000>><<set $cash -= 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You bought 1000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $publicShares >= 5000 && $cash >= 5000*$sharePrice>>
-		  | <<link "5000">><<set $personalShares += 5000>><<set $publicShares -= 5000>><<set $cash -= 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(98,99)))/100>><<replace "#CorpAction">><br><<print "You bought 5000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $publicShares >= 10000 && $cash >= 10000*$sharePrice>>
-		  | <<link "10000">><<set $personalShares += 10000>><<set $publicShares -= 10000>><<set $cash -= 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(97,99)))/100>><<replace "#CorpAction">><br><<print "You bought 10000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
-	<<if $publicShares >= 15000 && $cash >= 15000*$sharePrice>>
-		  | <<link "15000">><<set $personalShares += 15000>><<set $publicShares -= 15000>><<set $cash -= 15000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(96,98)))/100>><<replace "#CorpAction">><br><<print "You bought 15000 shares, driving the share price up somewhat.">><</replace>><</link>><</if>>
-	<<if $publicShares >= 20000 && $cash >= 20000*$sharePrice>>
-		  | <<link "20000">><<set $personalShares += 20000>><<set $publicShares -= 20000>><<set $cash -= 20000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*random(94,96)))/100>><<replace "#CorpAction">><br><<print "You bought 20000 shares, driving the share price up significantly.">><</replace>><</link>><</if>>
-<<else>>
-You are unable to purchase 1000 shares at the current share price.
-<</if>>
+	<<if $cash > 1000*$sharePrice>>
+		<<if $publicShares > 1000 && $cash >= 1000*$sharePrice>>
+			 <<link "1000">><<set $personalShares += 1000>><<set $publicShares -= 1000>><<set $cash -= 1000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102,$PC.trading >= 100 ? 101 : 102)))/100>><<replace "#CorpAction">><br><<print "You bought 1000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 5000 && $cash >= 5000*$sharePrice>>
+			 | <<link "5000">><<set $personalShares += 5000>><<set $publicShares -= 5000>><<set $cash -= 5000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102,$PC.trading >= 100 ? 101 : 102)))/100>><<replace "#CorpAction">><br><<print "You bought 5000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 10000 && $cash >= 10000*$sharePrice>>
+			 | <<link "10000">><<set $personalShares += 10000>><<set $publicShares -= 10000>><<set $cash -= 10000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(101,103,$PC.trading >= 100 ? 101 : 102)))/100>><<replace "#CorpAction">><br><<print "You bought 10000 shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 15000 && $cash >= 15000*$sharePrice>>
+			 | <<link "15000">><<set $personalShares += 15000>><<set $publicShares -= 15000>><<set $cash -= 15000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(102,104,$PC.trading >= 100 ? 102 : 103)))/100>><<replace "#CorpAction">><br><<print "You bought 15000 shares, driving the share price up somewhat.">><</replace>><</link>><</if>>
+		<<if $publicShares > 20000 && $cash >= 20000*$sharePrice>>
+			 | <<link "20000">><<set $personalShares += 20000>><<set $publicShares -= 20000>><<set $cash -= 20000*$sharePrice>><<set $sharePrice = (Math.trunc($sharePrice*either(103,105,$PC.trading >= 100 ? 103 : 104)))/100>><<replace "#CorpAction">><br><<print "You bought 20000 shares, driving the share price up significantly.">><</replace>><</link>><</if>>
+	<<else>>
+		//You are unable to purchase 1000 shares at the current share price.//
+	<</if>>
+
+	<br>Direct the corporation to buy back publicly held shares:
+	<<if $corpCash > 1000*$sharePrice>>
+		<<if $publicShares > 1000 && $corpCash >= 1000*$sharePrice>>
+			 <<link "1000">><<set $publicShares -= 1000>><<set $corpCash -= 1000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102)))/100>><<replace "#CorpAction">><br><<print "The corporation bought back 1000 public shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 5000 && $corpCash >= 5000*$sharePrice>>
+			 | <<link "5000">><<set $publicShares -= 5000>><<set $corpCash -= 5000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*either(101,102)))/100>><<replace "#CorpAction">><br><<print "The corporation bought back 5000 public shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 10000 && $corpCash >= 10000*$sharePrice>>
+			 | <<link "10000">><<set $publicShares -= 10000>><<set $corpCash -= 10000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(101,103)))/100>><<replace "#CorpAction">><br><<print "The corporation bought back 10000 public shares, driving the share price up slightly.">><</replace>><</link>><</if>>
+		<<if $publicShares > 15000 && $corpCash >= 15000*$sharePrice>>
+			 | <<link "15000">><<set $publicShares -= 15000>><<set $corpCash -= 15000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(102,104)))/100>><<replace "#CorpAction">><br><<print "The corporation bought back 15000 public shares, driving the share price up somewhat.">><</replace>><</link>><</if>>
+		<<if $publicShares > 20000 && $corpCash >= 20000*$sharePrice>>
+			 | <<link "20000">><<set $publicShares -= 20000>><<set $corpCash -= 20000*Math.ceil($sharePrice)>><<set $sharePrice = (Math.trunc($sharePrice*random(103,105)))/100>><<replace "#CorpAction">><br><<print "The corporation bought back 20000 public shares, driving the share price up significantly.">><</replace>><</link>><</if>>
+	<<else>>
+		//The corporation is unable to purchase 1000 shares at the current share price.//
+	<</if>>
+
+<</if>> /* closes actions that reduce public ownership percentage */
 </span>
 <br><br>
 
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index 8f8db4bd5dfc2dd105b7dd21b3b28df7be14e8a2..d1bd5c778cb6169f176887b30d9c6ca21fbc9de0 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -42,7 +42,7 @@
 
 <<if $peacekeepers != 0>>
 	<<if $peacekeepers.undermining != 0>>
-		<<print cashFormat($peacekeepers)>>.undermining to undermine political support for the nearby old world peacekeeping mission.
+		<<print cashFormat($peacekeepers.undermining)>> to undermine political support for the nearby old world peacekeeping mission.
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/customSlave.tw b/src/uncategorized/customSlave.tw
index f6acbb84699f3879892299c5d49f987bfb435ee2..153d647526bdeeb47c08bd5405af8323890e29de 100644
--- a/src/uncategorized/customSlave.tw
+++ b/src/uncategorized/customSlave.tw
@@ -711,8 +711,8 @@
 <br>
 
 <span id = "lube">
-<<if $customSlave.vaginaLube == 0>>Dry Vagina.
-<<elseif $customSlave.vaginaLube == 1>>Wet Vagina.
+<<if $customSlave.vaginaLube == 0>>Dry vagina.
+<<elseif $customSlave.vaginaLube == 1>>Wet vagina.
 <<else>>Sopping wet vagina.
 <</if>>
 </span>
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index 8b05c643dc7fa06a06ebdd5621701891ce95680c..e70748a404de29d94d1e2408f7aac805f027c315 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -48,7 +48,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 			<<if ($dairyPregSetting > 0)>>
 				<<set $reservedChildren -= $slaves[_i].reservedChildren>>
 				<<set $slaves[_i].reservedChildren = 0>>
-				<<if (($slaves[_i].pregType >= 50) || ($slaves[_i].bellyImplant != -1))>>
+				<<if (($slaves[_i].broodmother > 0) || ($slaves[_i].bellyImplant != -1))>>
 					$slaves[_i].slaveName's milking machine ejects her, since it detected a foreign body in her womb blocking its required functions.
 					<<removeJob $slaves[_i] "work in the dairy">>
 					<<set _DL--, _Di-->>
@@ -326,23 +326,24 @@ $dairyNameCaps
 
 <</if>>
 
-<br>
-<<if $dairyPregUpgrade == 1>>
-	$dairyNameCaps can support cow pregnancies.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;Fertile cows' wombs are
-	<<if $dairyPregSetting == 3>>
-		''worked to capacity.'' [[Industrial|Dairy][$dairyPregSetting = 2]]
-	<<elseif $dairyPregSetting == 2>>
-		''industrially employed.'' <<if ($seeExtreme != 0) && ($seeHyperPreg == 1) && ($dairyRestraintsSetting == 2) && ($dairyHyperPregRemodel == 1)>> [[Mass Production|Dairy][$dairyPregSetting = 3]] | <</if>>[[Moderate|Dairy][$dairyPregSetting = 1, $dairyPregSettingChanged = -1]]
-	<<elseif $dairyPregSetting == 1>>
-		''for hire.'' [[Not for hire|Dairy][$dairyPregSetting = 0]]<<if ($seeExtreme != 0) && ($dairyRestraintsSetting == 2)>> | [[Industrial|Dairy][$dairyPregSetting = 2, $dairyPregSettingChanged = 1]]<</if>>
+<<if $seePreg != 0>>
+	<br>
+	<<if $dairyPregUpgrade == 1>>
+		$dairyNameCaps can support cow pregnancies.
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;Fertile cows' wombs are
+		<<if $dairyPregSetting == 3>>
+			''worked to capacity.'' [[Industrial|Dairy][$dairyPregSetting = 2]]
+		<<elseif $dairyPregSetting == 2>>
+			''industrially employed.'' <<if ($seeExtreme != 0) && ($seeHyperPreg == 1) && ($dairyRestraintsSetting == 2) && ($dairyHyperPregRemodel == 1)>> [[Mass Production|Dairy][$dairyPregSetting = 3]] | <</if>>[[Moderate|Dairy][$dairyPregSetting = 1, $dairyPregSettingChanged = -1]]
+		<<elseif $dairyPregSetting == 1>>
+			''for hire.'' [[Not for hire|Dairy][$dairyPregSetting = 0]]<<if ($seeExtreme != 0) && ($dairyRestraintsSetting == 2)>> | [[Industrial|Dairy][$dairyPregSetting = 2, $dairyPregSettingChanged = 1]]<</if>>
+		<<else>>
+			''not for hire.'' [[For hire|Dairy][$dairyPregSetting = 1]]
+		<</if>>
 	<<else>>
-		''not for hire.'' [[For hire|Dairy][$dairyPregSetting = 1]]
+		$dairyNameCaps is not prepared to support cow pregnancies, and therefore cannot be used to contract out fertile slaves' wombs.
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Upgrade the dairy to support pregnancies|Dairy][$cash -= 2500, $dairyPregUpgrade = 1]] //Costs <<print cashFormat(2500)>> and will increase upkeep costs//
 	<</if>>
-<<else>>
-	$dairyNameCaps is not prepared to support cow pregnancies, and therefore cannot be used to contract out fertile slaves' wombs.
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Upgrade the dairy to support pregnancies|Dairy][$cash -= 2500, $dairyPregUpgrade = 1]] //Costs <<print cashFormat(2500)>> and will increase upkeep costs//
-
 <</if>>
 
 <br>
@@ -391,7 +392,6 @@ $dairyNameCaps
 		$dairyNameCaps's milking racks have been remodeled to allow cows' abnormal pregnancies room to grow.
 	<<else>>
 		$dairyNameCaps's milking racks can be remodeled to hold hyper-pregnant cattle. [[Expand the milking racks|Dairy][$cash -= _Tmult1, $dairyHyperPregRemodel = 1]] //Costs <<print cashFormat(_Tmult1)>>//
-
 	<</if>>
 <</if>>
 
@@ -489,7 +489,7 @@ $dairyNameCaps
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<if $milkmaidImpregnates == 1>>
 			Keeping the cows pregnant is part of her job. [[Order her to stop impregnating|Dairy][$milkmaidImpregnates = 0]]
-		<<else>>
+		<<elseif $seePreg != 0>>
 			She could be directed to keep the cows pregnant herself. [[Order her to impregnate|Dairy][$milkmaidImpregnates = 1]]
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/dispensary.tw b/src/uncategorized/dispensary.tw
index 09b96ff44603893f11391b8f2746294de3044fac..5ee145e056854558e41dc6fd14750f281941d7d7 100644
--- a/src/uncategorized/dispensary.tw
+++ b/src/uncategorized/dispensary.tw
@@ -15,7 +15,7 @@ The Dispensary
 
 <<if ($dispensaryUpgrade == 0)>>
 	<<if ($rep > 5000)>>
-		[[Upgrade the pharmaceutical fabricator|Dispensary][$cash -= Math.trunc(30000*$upgradeMultiplierArcology), $dispensaryUpgrade = 1, $drugsCost = $drugsCost/2]]
+		[[Upgrade the pharmaceutical fabricator|Dispensary][$cash -= Math.trunc(30000*$upgradeMultiplierArcology), $dispensaryUpgrade = 1, $drugsCost = (($drugsCost*2)/3)]]
 		//Costs <<print cashFormat(Math.trunc(30000*$upgradeMultiplierArcology))>>//
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will improve production efficiency further decreasing costs.//
 		<br>
@@ -336,6 +336,7 @@ Pharmacological Upgrades
 	<br>
 <</if>>
 
+<<if $seePreg != 0>>
 <br>
 Fertility Focused Pharmacology
 <hr>
@@ -379,6 +380,7 @@ Fertility Focused Pharmacology
 	The fabricator is producing highly effective fertility agents. There is a warning present involving overdosing and instances of ten or more children.
 	<br>
 <</if>>
+<</if>>
 
 <br>
 Implant Production
@@ -398,7 +400,7 @@ Implant Production
 	<br>
 <</if>>
 
-<<if $ImplantProductionUpgrade == 1 && $seeHyperPreg == 1 && $seeExtreme == 1>>
+<<if $ImplantProductionUpgrade == 1 && $seeHyperPreg == 1 && $seeExtreme == 1 && $seePreg != 0>>
 	<<if ($permaPregImplant == 0) and ($rep <= 4000*$upgradeMultiplierMedicine)>>
 		//You lack the reputation to access experimental pregnancy generator schematics//
 		<br>
@@ -479,6 +481,7 @@ Implant Production
 Future Societies Research
 <hr>
 
+<<if $seePreg != 0>>
 <<if $arcologies[0].FSGenderRadicalistDecoration == 100 && $organFarmUpgrade > 0>>
 	<<if ($arcologies[0].FSGenderRadicalistResearch == 0)>>
 		<<if ($rep >= 10000*$upgradeMultiplierMedicine)>>
@@ -499,6 +502,7 @@ Future Societies Research
 	// Gender Radicalist focused research unavailable. //
 	<br>
 <</if>>
+<</if>>
 
 <<if ($ImplantProductionUpgrade == 1) and ($arcologies[0].FSTransformationFetishistDecoration >= 100)>>
 	<<if ($arcologies[0].FSTransformationFetishistResearch == 0) and ($rep <= 5000*$upgradeMultiplierMedicine)>>
diff --git a/src/uncategorized/freeRangeDairyAssignmentScene.tw b/src/uncategorized/freeRangeDairyAssignmentScene.tw
index 255af0badd3050f78ca3feb23efd253a2b38de2a..23bad72a681d2a7c7acfb48a27d42043eb143ebc 100644
--- a/src/uncategorized/freeRangeDairyAssignmentScene.tw
+++ b/src/uncategorized/freeRangeDairyAssignmentScene.tw
@@ -300,7 +300,7 @@ The milking cups on her nipples switch from rhythmic pulsing into intense suctio
     <<elseif $activeSlave.boobs > 10000>>
     in absurdly large amounts. Her gargantuan breasts do not seem to get less milk-laden for a long time.
     <<elseif $activeSlave.boobs > 5000>>
-    in a large amount. Her huge breasts can provide multiple liters of milk.
+    in powerful jets. Her huge breasts can provide multiple liters of milk.
     <<elseif $activeSlave.boobs > 1000>>
     for quite some time. Her large breasts can store an impressive volume of milk.
     <<elseif $activeSlave.boobs > 700>>
diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw
index 3a8585aae18525ec68b18f4132edfedaf41c8dc2..8cae5fa0cb9258f6b0c6a976a7c19de9b6e75a5f 100644
--- a/src/uncategorized/fullReport.tw
+++ b/src/uncategorized/fullReport.tw
@@ -83,7 +83,7 @@
 	<br>
 <</if>>
 
-<<if ($personalAttention == $slaves[$i].ID) && ($slaves[$i].tired == 0)>>
+<<if ($slaves[$i].tired == 0) && Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 	<<set $activeSlave = $slaves[$i]>>
 	<<include "PT Workaround">>
 	<br>
diff --git a/src/uncategorized/futureSocities.tw b/src/uncategorized/futureSocities.tw
index 39df5f91b0cfe86facc6a426efd0c889334eac58..dff3f99d710fd27bf30deb334a0ae1cbfc016e18 100644
--- a/src/uncategorized/futureSocities.tw
+++ b/src/uncategorized/futureSocities.tw
@@ -707,6 +707,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 	<</if>>
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $arcologies[0].FSRestart == "unset">>
 <<if $arcologies[0].FSRepopulationFocus != "unset">>
 	<br>''You are pursuing'' the belief that mass breeding will save humanity.
@@ -810,7 +811,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
   <</if>>
 <</if>>
 <</if>>
-
+<</if>>
 
 <<if $seeDicks != 0 || $makeDicks == 1>>
 <<if $arcologies[0].FSGenderFundamentalist is "unset">>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 9dd8df18c1b724e8825b242eeeec55956fea2a7b..b6bd1f5c4e95aef75bd8f0e7f7e15c4f9e1079e2 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -148,7 +148,9 @@ The crowd of nude slaves led up to the lawn and chained to rings along one edge
 	<<set $seed.push("convent")>>
 	<<set $seed.push("school")>>
 	<<set $seed.push("housewives")>>
-	<<set $seed.push("maternity")>>
+	<<if $seePreg != 0>>
+		<<set $seed.push("maternity")>>
+	<</if>>
 <</if>>
 <<if ($seeDicks >= 25)>>
 	<<set $seed.push("conversion")>>
@@ -635,6 +637,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	You offer a way out of their situation. They, you suggest, can keep working in the now-vacant shop if they work together to pay the rent. They can move into a couple of vacant rooms nearby that you can easily have set up as a bunkhouse. You'll collect a little more rent, and they'll have a second chance. They @@.green;accept it with gratitude.@@ It's quite likely they'll either fail or have to accept being whores rather than strippers, but that's not your concern. @@.green;Your arcology's prosperity has increased.@@
 	<<set $nextButton = "Continue">>
 	<<set $arcologies[0].prosperity += 1>>
+	<<set $rep += 100>>
 	<<set $cash -= 500>>
 	<<set $PStrip = 3>>
 	<</replace>>
diff --git a/src/uncategorized/hgApplication.tw b/src/uncategorized/hgApplication.tw
index 28bfdbb804365a07b0eafee3761b6b752d8aff91..100219f86fae425b66ea955e3bd043e5c4fad9b0 100644
--- a/src/uncategorized/hgApplication.tw
+++ b/src/uncategorized/hgApplication.tw
@@ -224,16 +224,16 @@ She punishes $activeSlave.slaveName whenever she sees her breaking the rules yet
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "cumslut") && ($HeadGirl.fetishStrength > 60)>>
-	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Her enthusiasm for oral sex is infectious. $activeSlave.slaveName's oral skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Her enthusiasm for oral sex is infectious. $activeSlave.slaveName's @@.green;oral skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.dick > 0) && canAchieveErection($HeadGirl) && $HeadGirl.dickAccessory != ("chastity")>>
-	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's oral skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.clit > 2)>>
-	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's oral skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
 <<else>>
-	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $activeSlave.slaveName's oral skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $activeSlave.slaveName's @@.green;oral skills have improved.@@
 <</if>>
 <<set $skillIncrease = Math.ceil(_effectiveness/10)>><<OralSkillIncrease $activeSlave>>
 
@@ -241,16 +241,16 @@ She punishes $activeSlave.slaveName whenever she sees her breaking the rules yet
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "buttslut") && ($HeadGirl.fetishStrength > 60)>>
-	In spare moments she teaches $activeSlave.slaveName how to take it up the ass. Your head girl's enthusiasm for backdoor loving is infectious. $activeSlave.slaveName's anal skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take it up the ass. Your head girl's enthusiasm for backdoor loving is infectious. $activeSlave.slaveName's @@.green;anal skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.dick > 0) && canAchieveErection($HeadGirl) && $HeadGirl.dickAccessory != ("chastity")>>
-	In spare moments she teaches $activeSlave.slaveName how to take a dick up the butt. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's anal skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a dick up the butt. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.clit > 2)>>
-	In spare moments she teaches $activeSlave.slaveName how to take a phallus up the butt. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's anal skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a phallus up the butt. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
 <<else>>
-	In spare moments she teaches $activeSlave.slaveName how to take a dick up the butt. $activeSlave.slaveName's anal skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a dick up the butt. $activeSlave.slaveName's @@.green;anal skills have improved.@@
 <</if>>
 <<set $skillIncrease = Math.ceil(_effectiveness/10)>><<AnalSkillIncrease $activeSlave>>
 
@@ -258,33 +258,33 @@ She punishes $activeSlave.slaveName whenever she sees her breaking the rules yet
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.energy > 95)>>
-	In spare moments she teaches $activeSlave.slaveName how to take a dick. Your head girl's enthusiasm for sex is infectious. $activeSlave.slaveName's vanilla sex skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a dick. Your head girl's enthusiasm for sex is infectious. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.dick > 0) && canAchieveErection($HeadGirl) && $HeadGirl.dickAccessory != ("chastity")>>
-	In spare moments she teaches $activeSlave.slaveName how to take a dick. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's vanilla sex skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a dick. Your head girl uses her penis as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
 <<elseif ($HeadGirl.clit > 2)>>
-	In spare moments she teaches $activeSlave.slaveName how to take a phallus. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's vanilla sex skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a phallus. Your head girl uses her pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
 <<else>>
-	In spare moments she teaches $activeSlave.slaveName how to take a dick. $activeSlave.slaveName's vanilla sex skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to take a dick. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
 <</if>>
 <<set $skillIncrease = Math.ceil(_effectiveness/10)>><<VaginalSkillIncrease $activeSlave>>
 
 <<elseif $HGtraining == "whore skill">>
 
 <<set $activeSlave.training = 0>>
-In spare moments she teaches $activeSlave.slaveName how to prostitute herself. $activeSlave.slaveName's whoring skills have improved.
+In spare moments she teaches $activeSlave.slaveName how to prostitute herself. $activeSlave.slaveName's @@.green;whoring skills have improved.@@
 <<set $skillIncrease = Math.ceil(_effectiveness/10)>><<WhoreSkillIncrease $activeSlave>>
 
 <<elseif $HGtraining == "entertain skill">>
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "humiliation") && ($HeadGirl.fetishStrength > 60)>>
-	In spare moments she teaches $activeSlave.slaveName how to entertain. Your head girl's enthusiasm for public display is infectious. $activeSlave.slaveName's entertainment skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to entertain. Your head girl's enthusiasm for public display is infectious. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
 	<<set $skillIncrease = random(5,10)>><<EntertainSkillIncrease $activeSlave>>
 <<else>>
-	In spare moments she teaches $activeSlave.slaveName how to entertain. $activeSlave.slaveName's entertainment skills have improved.
+	In spare moments she teaches $activeSlave.slaveName how to entertain. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
 <</if>>
 <<set $skillIncrease = Math.ceil(_effectiveness/10)>><<EntertainSkillIncrease $activeSlave>>
 
diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw
index 0016241ccec6493c8aa56482ef0ba34ae42b60c7..cc6501bf79455c03d314f3ffa9412faf5009066e 100644
--- a/src/uncategorized/hgSelect.tw
+++ b/src/uncategorized/hgSelect.tw
@@ -73,6 +73,7 @@ _HGName
 	is allowed to be ''informal'': in private, she may call you <<if $PC.title == 1>>Sir<<else>>Ma'am<</if>>. [[Maintain complete formality|HG Select][$HGFormality = 1]]
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $HeadGirl != 0>>
 <<if $universalRulesImpregnation == "HG">>
 	<br><br>_HGName is responsible for impregnating fertile slaves.
@@ -93,6 +94,7 @@ _HGName
 	<</if>>
 <</if>>
 <</if>>
+<</if>>
 
 <br><br>''Appoint a head girl from among your devoted slaves:''
 <br><br>[[None|HG Workaround][$i = -1]]
diff --git a/src/uncategorized/labReport.tw b/src/uncategorized/labReport.tw
index 9102000b9870ff46e4d0d5e8ad6dfc093d69fe41..eb5e3599f4ecf23de4fea9ba00f0df21c86d2adf 100644
--- a/src/uncategorized/labReport.tw
+++ b/src/uncategorized/labReport.tw
@@ -9,50 +9,65 @@
 	<<elseif $researchLab.research != "none">>
 		<<set $researchLab.productionTime -= (($researchLab.hired * 3) + ($researchLab.menials) * ($researchLab.aiModule))>>
 		<<if $researchLab.productionTime <= 0>>
-			Your lab staff have @@.green;completed@@ their project.
-			<<if $researchLab.research == "Basic prosthetics interface">>
+			Your lab staff have @@.green;completed@@ their research project, and
+			<<switch $researchLab.research>>
+			<<case "Basic prosthetics interface">>
 				<<set $researchLab.basicPLimbInterface = 1>>
-			<<elseif $researchLab.research == "Advanced prosthetics interface">>
+			<<case "Advanced prosthetics interface">>
 				<<set $researchLab.advPLimbInterface = 1>>
-			<<elseif $researchLab.research == "Basic prosthetic limbs">>
+			<<case "Basic prosthetic limbs">>
 				<<set $researchLab.basicPLimb = 1>>
-			<<elseif $researchLab.research == "Advanced sex limbs">>
+			<<case "Advanced sex limbs">>
 				<<set $researchLab.advSexPLimb = 1>>
-			<<elseif $researchLab.research == "Advanced beauty limbs">>
+			<<case "Advanced beauty limbs">>
 				<<set $researchLab.advGracePLimb = 1>>
-			<<elseif $researchLab.research == "Advanced combat limbs">>
+			<<case "Advanced combat limbs">>
 				<<set $researchLab.advCombatPLimb = 1>>
-			<<elseif $researchLab.research == "Cybernetic limbs">>
+			<<case "Cybernetic limbs">>
 				<<set $researchLab.cyberneticPLimb = 1>>
-			<<elseif $researchLab.research == "Ocular implants">>
+			<<case "Ocular implants">>
 				<<set $researchLab.ocularImplant = 1>>
-			<</if>>
-			<<set $researchLab.productionTime to 0, $researchLab.research to "none">>
+			<<case "Erectile implant">>
+				<<set $researchLab.erectileImplant = 1>>
+			<</switch>>
+			they are awaiting your next instruction.
+			<<set $researchLab.productionTime = 0, $researchLab.research = "none">>
 		<<else>>
 			Your lab staff are currently researching @@.yellow;$researchLab.research@@.
 		<</if>>
 	<<elseif $researchLab.manufacture != "none">>
 		<<set $researchLab.productionTime -= (($researchLab.hired * 3) + ($researchLab.menials) * ($researchLab.aiModule))>>
 		<<if $researchLab.productionTime <= 0>>
-			Your lab staff have @@.green;completed@@ their project.
-			<<if $researchLab.manufacture == "Basic prosthetics interface">>
-				<<set $stockpile.basicPLimbInterface += 1>>
-			<<elseif $researchLab.manufacture == "Advanced prosthetics interface">>
-				<<set $stockpile.advPLimbInterface += 1>>
-			<<elseif $researchLab.manufacture == "Basic prosthetic limbs">>
-				<<set $stockpile.basicPLimb += 1>>
-			<<elseif $researchLab.manufacture == "Advanced sex limbs">>
-				<<set $stockpile.advSexPLimb += 1>>
-			<<elseif $researchLab.manufacture == "Advanced beauty limbs">>
-				<<set $stockpile.advGracePLimb += 1>>
-			<<elseif $researchLab.manufacture == "Advanced combat limbs">>
-				<<set $stockpile.advCombatPLimb += 1>>
-			<<elseif $researchLab.manufacture == "Cybernetic limbs">>
-				<<set $stockpile.cyberneticPLimb += 1>>
-			<<elseif $researchLab.manufacture == "Ocular implants">>
-				<<set $stockpile.ocularImplant += 1>>
-			<</if>>
-			<<set $researchLab.productionTime = 0, $researchLab.manufacture = "none">>
+			Your lab staff have @@.green;completed@@ their project, and
+			<<switch $researchLab.manufacture>>
+			<<case "Basic prosthetics interface">>
+				<<set $stockpile.basicPLimbInterface += 1, $researchLab.productionTime = 50>>
+			<<case "Advanced prosthetics interface">>
+				<<set $stockpile.advPLimbInterface += 1, $researchLab.productionTime = 80>>
+			<<case "Basic prosthetic limbs">>
+				<<set $stockpile.basicPLimb += 1, $researchLab.productionTime = 20>>
+			<<case "Advanced sex limbs">>
+				<<set $stockpile.advSexPLimb += 1, $researchLab.productionTime = 100>>
+			<<case "Advanced beauty limbs">>
+				<<set $stockpile.advGracePLimb += 1, $researchLab.productionTime = 100>>
+			<<case "Advanced combat limbs">>
+				<<set $stockpile.advCombatPLimb += 1, $researchLab.productionTime = 100>>
+			<<case "Cybernetic limbs">>
+				<<set $stockpile.cyberneticPLimb += 1, $researchLab.productionTime = 150>>
+			<<case "Ocular implants">>
+				<<set $stockpile.ocularImplant += 1, $researchLab.productionTime = 80>>
+			<<case "Erectile implant">>
+				<<set $stockpile.erectileImplant += 1, $researchLab.productionTime = 50>>
+			<</switch>>
+			<span id="haltproduction">
+				they are starting work on another unit.
+				<<link "Halt production">>
+					<<set $researchLab.productionTime = 0, $researchLab.research = "none">>
+					<<replace "#haltproduction">>
+						they are awaiting your next instruction.
+					<</replace>>
+				<</link>>
+			</span>
 		<<else>>
 			Your lab staff are currently working on @@.yellow;$researchLab.manufacture@@.
 		<</if>>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 52f608158dc39e042844b3c57b4d15c2a5fadd43..05e22e5d7b76584909602170a6705000c346d365 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1877,7 +1877,7 @@ $activeSlave.slaveName's light scars are somewhat showing because of the oil.
 $activeSlave.slaveName's big scars are showing even with her clothes.
 <<elseif ($activeSlave.scars == 2) and ($activeSlave.clothes is "no clothes")>>
 $activeSlave.slaveName's big scars  are quite repulsive on her nude body.
-<<esleif ($activeSlave.scars == 2) and ($activeSlave.clothes is "body oil")>>
+<<elseif ($activeSlave.scars == 2) and ($activeSlave.clothes is "body oil")>>
 $activeSlave.slaveName's big scars are really put into view because of the oil.
 
 <<elseif ($activeSlave.scars == 3) and ($activeSlave.clothes isnot "no clothes")>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index 90a246501d99bb81d6f8e3c265a8d5856586f678..85ab7867d6cf2b9a455e4a31e7d6cb77672759ec 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -40,7 +40,7 @@
 	$slavesVisible = _visibleSlaves.length,
 	$dormitoryPopulation = _visibleSlaves.filter(s => s.livingRules != "luxurious").length,
 	$roomsPopulation = $slavesVisible - $dormitoryPopulation - _visibleSlaves.filter(s => s.livingRules == "luxurious" && s.relationship >= 4).length * 0.5,
-	_PA = $slaves.findIndex(s => s.ID == $personalAttention),
+	_PA = (Array.isArray($personalAttention) ? $personalAttention.map(function(x) { return $slaves.find(function(s) { return s.ID == x.ID; }); }) : []),
 	_HG = $slaves.findIndex(s => s.ID == $HeadGirl.ID),
 	_RC = $slaves.findIndex(s => s.ID == $Recruiter.ID),
 	_BG = $slaves.findIndex(s => s.ID == $Bodyguard.ID)>>
@@ -480,7 +480,7 @@ __''MAIN MENU''__&nbsp;&nbsp;&nbsp;&nbsp;//[[Summary Options]]//
 <<if $assignFilter == 1>>
 <<set $jobTypes = [{title: "Rest", asgn: "rest"}, {title: "Subordinate", asgn: "be a subordinate slave"}, {title: "Whore", asgn: "whore"}, {title: "Public Servant", asgn: "serve the public"}, {title: "Hole", asgn: "work a glory hole"}, {title: "Milking", asgn: "get milked"}, {title: "House Servant", asgn: "be a servant"}, {title: "Fucktoy", asgn: "please you"}, {title: "Confinement", asgn: "stay confined"}, {title: "Classes", asgn: "take classes"}, {title: "Choose own", asgn: "choose her own job"}]>>
 <br>
-<<link Reset>><<set $slaves.map(function(y){y.assignmentVisible = 1})>><<set $slaves.filter(function(x){return x.assignment == "live with your Head Girl" || x.assignment.includes("in the") || x.assignment == "work as a servant" || x.assignment.includes("be the") || x.assignment == "be your agent" || x.assignment == "be your Concubine"}).map(function(y){y.assignmentVisible = 0})>><<replace '#summarylist'>><<include "Slave Summary">><</replace>><</link>>
+<<link Reset>><<resetAssignmentFilter>><<replace '#summarylist'>><<include "Slave Summary">><</replace>><</link>>
 Filter by assignment: | 
 <<for _i = 0; _i < $jobTypes.length; _i++>>	
 	<<set _title = $jobTypes[_i].title>>
diff --git a/src/uncategorized/managePenthouse.tw b/src/uncategorized/managePenthouse.tw
index cbff8aca8464250b24630e95832d5f140ac7b1b6..cca507e9b3b7dda27859724c1d660b602e4947c9 100644
--- a/src/uncategorized/managePenthouse.tw
+++ b/src/uncategorized/managePenthouse.tw
@@ -92,7 +92,7 @@ __Penthouse Facilities__
 
 <br>
 
-<<if $familyTesting == 1>>
+<<if $familyTesting == 1 && $seePreg != 0>>
 <<if $arcologyUpgrade.grid == 1>>
 <<if $incubator == 0>>
 	[[Install an incubation chamber to rapidly age children|Manage Penthouse][$cash -= Math.trunc(100000*$upgradeMultiplierArcology), $incubator = 1, $PC.engineering += 1]]
@@ -281,7 +281,7 @@ __Penthouse Upgrades__
 
 <<if $dispensary == 0>>
 <<if $rep > 2000>>
-	[[Install a pharmaceutical fabricator|Manage Penthouse][$cash -= Math.trunc(20000*$upgradeMultiplierArcology), $dispensary = 1, $drugsCost = $drugsCost/4, $PC.engineering += .1]]
+	[[Install a pharmaceutical fabricator|Manage Penthouse][$cash -= Math.trunc(20000*$upgradeMultiplierArcology), $dispensary = 1, $drugsCost = $drugsCost*.75, $PC.engineering += .1]]
 	//Costs <<print cashFormat(Math.trunc(20000*$upgradeMultiplierArcology))>>//
 <<else>>
 	//You lack the reputation to obtain cutting-edge pharmaceutical technology//
diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw
index fb91dfc7a688a496c01c8fb5d6ffc128e7a54048..a7e97c27bd9558ffa53a2b196a276bd628cb7539 100644
--- a/src/uncategorized/masterSuite.tw
+++ b/src/uncategorized/masterSuite.tw
@@ -289,7 +289,7 @@ $masterSuiteNameCaps is furnished
 <<else>>
 	None of your slaves are serving here.
 	<<if $Concubine == 0>>
- 	[[Decommission the MasterSuite|Main][$masterSuite = 0, $masterSuiteUpgradeLuxury = 0, $masterSuitePregnancySlaveLuxuries = 0, $masterSuiteDecoration = "standard", $masterSuitePregnancyFertilityDrugs = 0, $masterSuitePregnancyFertilitySupplements = 0, $masterSuiteUpgradePregnancy = 0, $masterSuiteHyperPregnancy = 0]]
+ 	[[Decommission the Master Suite|Main][$masterSuite = 0, $masterSuiteUpgradeLuxury = 0, $masterSuitePregnancySlaveLuxuries = 0, $masterSuiteDecoration = "standard", $masterSuitePregnancyFertilityDrugs = 0, $masterSuitePregnancyFertilitySupplements = 0, $masterSuiteUpgradePregnancy = 0, $masterSuiteHyperPregnancy = 0]]
 	<</if>>
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;[[Refit the suite to the height of traditional opulence|Master Suite][$cash -= _Tmult2, $masterSuiteUpgradeLuxury = 1]] //Costs <<print cashFormat(_Tmult2)>> and will focus the suite on you//
@@ -301,6 +301,7 @@ $masterSuiteNameCaps is furnished
 <<set _Tmult0 = Math.trunc($masterSuite*1000*$upgradeMultiplierArcology)>>
 [[Expand the Master Suite|Master Suite][$cash -= _Tmult0, $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
+<<if $seePreg != 0>>
 <br>
 <<if $masterSuiteUpgradePregnancy == 1>>
 	The master suite has been further upgraded to support fertile slaves and encourage slave pregnancy, providing additional rest areas, better access to amenities, and a dedicated birthing chamber.
@@ -325,6 +326,7 @@ $masterSuiteNameCaps is furnished
 <<else>>
 	The master suite does not currently have special customizations to support slave pregnancy. [[Refit the suite to support and encourage slave pregnancy|Master Suite][$cash -= _Tmult3, $masterSuiteUpgradePregnancy = 1]] //Costs <<print cashFormat(_Tmult3)>>//
 <</if>>
+<</if>>
 
 <br><br>
 <<if $Concubine != 0>>
diff --git a/src/uncategorized/matchmaking.tw b/src/uncategorized/matchmaking.tw
index 0811d7765c05a83e8581aa68e85f5bd3873ac661..e5a8ef1f69a83638806fa1f824209c2b914ab4e0 100644
--- a/src/uncategorized/matchmaking.tw
+++ b/src/uncategorized/matchmaking.tw
@@ -209,8 +209,8 @@ Despite her devotion and trust, she is still a slave, and probably knows that he
 	<<else>>
 		Her lacy bridal bra flatters her pretty chest.
 	<</if>>
-	<<if ($eventSlave.preg > 20) && ($eventSlave.pregType >= 10)>>
-		Her massive, squirming pregnant belly makes her bridal wear particularly obscene.
+	<<if $eventSlave.bellyPreg >= 600000>>
+		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
 	<<elseif ($eventSlave.bellyPreg >= 1500)>>
 		Her _belly pregnant belly protrudes out the front of her bridal wear.
 	<<elseif ($eventSlave.bellyImplant >= 1500)>>
diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw
index 357bf67745c4efc8dee8a10a8d04ec9dc4cbd308..bd792c47d7524ae507ce63246d961d8920d71031 100644
--- a/src/uncategorized/neighborInteract.tw
+++ b/src/uncategorized/neighborInteract.tw
@@ -200,7 +200,7 @@ A 1% interest in $activeArcology.name is worth <<print cashFormat($seed)>> and w
 	<br>
 	<<for $j = 0; $j < $leaders.length; $j++>>
 	<<if $activeArcology.leaderID == $leaders[$j].ID>>
-		Your agent @@.deeppink;$leaders[$j].slaveName@@ is running this arcology. [[Recall and reenslave her|Agent Retrieve]]
+		Your agent @@.deeppink;<<SlaveFullName $leaders[$j]>>@@ is running this arcology. [[Recall and reenslave her|Agent Retrieve]]
 		<span id="rename"> | <<link "Instruct her to rename the arcology">><<replace #rename>> | <<textbox "$activeArcology.name" $activeArcology.name>> [[Confirm name|Neighbor Interact]]<</replace>><</link>></span>
 		<br>Her <<if $leaders[$j].intelligence >= 3>>brilliance<<else>>intelligence<</if>> and education are the most important qualities for her.
 		<<if $leaders[$j].actualAge > 35>>
diff --git a/src/uncategorized/neighborsDevelopment.tw b/src/uncategorized/neighborsDevelopment.tw
index c55e290dd2c845cdad56c37fa750607cc165d78d..87e358b72b751f373b5b71d461499ef9c7b69b11 100644
--- a/src/uncategorized/neighborsDevelopment.tw
+++ b/src/uncategorized/neighborsDevelopment.tw
@@ -34,9 +34,8 @@
 	<<case "an individual">>
 		<<set $arcologies[$i].prosperity += random(0,3)>>
 	<<case "your agent">>
-		<<set $arcologies[$i].prosperity += random(0,3)>>
 		<<agentLeadership>>
-		<<set $arcologies[$i].prosperity += $agentBonus>>
+		<<set $arcologies[$i].prosperity += random(0,3) + $agentBonus>>
 	<<default>>
 		<<set $arcologies[$i].prosperity += random(-1,1)>>
 	<</switch>>
@@ -50,12 +49,15 @@
 <<if $arcologies[$i].government == "your agent">>
 <<for _k = 0; _k < $leaders.length; _k++>>
 <<if $leaders[_k].ID == $arcologies[$i].leaderID>>
-	is being run by your agent @@.deeppink;$leaders[_k].slaveName@@.
-	<<if $leaders[_k].assignment != "be your agent">>
-		<<assignJob $leaders[_k] "be your agent">>
+	is being run by your agent @@.deeppink;<<SlaveFullName $leaders[_k]>>@@.
+	<<set _agentIndex = $slaves.findIndex(function(s) { return s.ID == $leaders[_k].ID; })>>
+	<<if _agentIndex != -1 && $slaves[_agentIndex].assignment != "be your agent">>
+		@@.red;BUG: $slaves[_agentIndex].slaveName also was <<print $slaves[_agentIndex].assignment>>!@@
+		<<assignJob $slaves[_agentIndex] "be your agent">>
 	<</if>>
 	<<if $agentBonus > 0>>@@.green;She does an excellent job this week.@@<</if>>
 	The arcology
+	<<break>>
 <</if>>
 <</for>>
 <<elseif $arcologies[$i].government == "your trustees">>
@@ -71,9 +73,20 @@
 has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcologies[$i].prosperity*random(100-_error,100+_error))/100))>>m,@@
 
 <<if ($arcologies[$i].rival == 1) && ($arcologies[$i].government != "an individual")>>
-	undergoing some internal turmoil. @@.yellow;It undergoes a change of government.@@ A power struggle is won by a single individual, leaving the arcology ruled like yours is.
+	but it is undergoing some internal turmoil. @@.red;Resentment that has been quietly building among the arcology's elite turns into open rebellion!@@
+	<<if $arcologies[$i].PCminority > 0>>
+		@@.red;Your ownership interest in $arcologies[$i].name has been annulled!@@
+		<<set $arcologies[$i].PCminority = 0>>
+	<</if>>
+	@@.yellow;After a brief power struggle, it undergoes a change of government.@@ 
+	<<if def _agentIndex && _agentIndex != -1>>
+		@@.deeppink;$slaves[_agentIndex].slaveName@@ manages to escape with the help of a few loyal citizens and returns to you @@.gold;fearing your displeasure at her failure.@@
+		<<set $slaves[_agentIndex].trust -= 40>>
+		<<assignJob $slaves[_agentIndex] "rest">> /* this takes care of necessary cleanup for agent and agent companion (if any) */
+	<</if>>
+	A controlling interest has been taken by a single individual, leaving the arcology ruled like yours is.
 	<<set $arcologies[$i].government = "an individual">>
-	<<set $arcologies[$i].honeymoon += 10>>
+	<<set $arcologies[$i].ownership = random(51,61), $arcologies[$i].minority = 100 - $arcologies[$i].ownership - random(1,19), $arcologies[$i].honeymoon += 10>>
 <<elseif ($arcologies[$i].ownership != 0) && ($arcologies[$i].ownership < $arcologies[$i].PCminority) && ($arcologies[$i].direction != 0) && ($arcologies[$i].rival != 1)>>
 	undergoing a leadership struggle in which you are deeply concerned, since you now own more of it than its current leadership.
 	<<if random(0,10) < $arcologies[$i].PCminority - $arcologies[$i].ownership>>
@@ -144,7 +157,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 		  <<set $arcologies[$i].government = "a corporation">>
 		<<else>>
 		  A power struggle is won by a single individual, leaving the arcology ruled like yours is.
-		  <<set $arcologies[$i].government = 1>>
+		  <<set $arcologies[$i].government = "an individual">>
 		<</if>>
 	  <<case "an individual">>
 		<<if random(0,2) == 0>>
@@ -439,7 +452,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 		Its leadership acquires an increased share of its ownership.
 		<<set $arcologies[$i].ownership += 1>>
 		<<set $arcologies[$i].prosperity -= 5>>
-		This places its government in control of approximately @@.orange;<<print Math.trunc(($arcologies[$i].ownership*random(100-$economicUncertainty,100+$economicUncertainty))/100)>>%@@ of the arcology<<if $arcologies[$i].minority > 0>>, against its most prominent competition, with a @@.tan;<<print Math.trunc(($arcologies[$i].minority*random(100-$economicUncertainty,100+$economicUncertainty))/100)>>%@@ share<</if>>.
+		This places its government in control of approximately @@.orange;<<print Math.trunc(($arcologies[$i].ownership*random(100-$economicUncertainty,100+$economicUncertainty))/100)>>%@@ of the arcology<<if $arcologies[$i].minority > 0>>, against its most prominent competition with a @@.tan;<<print Math.trunc(($arcologies[$i].minority*random(100-$economicUncertainty,100+$economicUncertainty))/100)>>%@@ share<</if>>.
 	<<elseif _prosperityDiff < random(-50,10)>>
 		<<if $arcologies[$i].ownership > 0>>
 			Its leadership sells off some of its ownership to stay afloat.
@@ -1715,12 +1728,10 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 /* FUTURE SOCIETY ADOPTION */
 
 <<if $arcologies[$i].direction != 0>>
-<<if _societiesAdopted < 4>>
-<<if _societiesAdopted < ($arcologies[$i].prosperity/25)+($week/25)-3>>
+<<if $arcologies[$i].rival == 1 || (_societiesAdopted < 4 && _societiesAdopted < ($arcologies[$i].prosperity/25)+($week/25)-3)>>
 
 <<include "Neighbors FS Adoption">>
 
-<</if>>
 <</if>>
 <</if>> /* CLOSES FUTURE SOCIETY ADOPTION */
 
@@ -2068,7 +2079,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 <<if $desc.length == 0>>
   ''$arcologies[$j].name'' attempts to influence it, but has no significant impacts.
 <<elseif $desc.length > 2>>
-  ''$arcologies[$j].name'''s mature culture influences $arcologies[$i].name's $desc[0],
+  ''$arcologies[$j].name'''s mature culture influences $arcologies[$i].name, $desc[0],
   <<for _k = 1; _k < $desc.length; _k++>>
   <<if _k < $desc.length-1>>
 	$desc[_k],
diff --git a/src/uncategorized/neighborsFSAdoption.tw b/src/uncategorized/neighborsFSAdoption.tw
index 6c36e37e0dbb7d11f1542252b1d0837c22e94d7d..0ac85cd56957396fa5154522b56c0f7735309c57 100644
--- a/src/uncategorized/neighborsFSAdoption.tw
+++ b/src/uncategorized/neighborsFSAdoption.tw
@@ -796,7 +796,7 @@ societal development.
 
 	<<include "Arcology Opinion">>
 	<<if $opinion >= 50>>
-		$arcologies[$i].name is already aligned with $arcologies[$j].name socially, encouraging it to consider adopting all its cultural values.
+		$arcologies[$i].name is aligned with $arcologies[$j].name socially, encouraging it to consider adopting all its cultural values.
 		<<set $influenceBonus += $opinion-50>>
 	<<elseif $opinion <= -50>>
 		$arcologies[$i].name is culturally opposed to $arcologies[$j].name, encouraging it to resist adopting its cultural values.
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 4f1f0c306e57e393b161cb4c03f6c4db144b0a0f..960ba63bc1188508a205439cd3c266fba202fc0f 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -1200,7 +1200,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 	<</link>>
 <</if>>
 
-
+<<if $seePreg != 0>>
 <<if isFertile($activeSlave)>>
 	 | <<link "Impregnate her">>
 	<<replace "#introResult">>
@@ -1229,7 +1229,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 	<<set $activeSlave.pregSource = -1>>
 	<</link>>
 <</if>>
-
+<</if>>
 
 <<if  ($activeSlave.devotion < -10) && ($activeSlave.vagina == 0)>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw
old mode 100644
new mode 100755
index 0c82c7ba50ab48feecbab3b596722b8b2f9c9d9a..fb3d4a9e372311d1e31045c891313117b3a29d49
--- a/src/uncategorized/nonRandomEvent.tw
+++ b/src/uncategorized/nonRandomEvent.tw
@@ -54,7 +54,7 @@
 		<<goto "P mercenary romeo">>
 <<elseif (_effectiveWeek == 46) && ($mercenaries > 0)>>
 		<<goto "P raid invitation">>
-<<elseif (_effectiveWeek == 52) && ($seeHyperPreg == 1) && $badB != 1>>
+<<elseif (_effectiveWeek == 52) && ($seeHyperPreg == 1) && $seePreg != 0 && $badB != 1>>
 	<<set _valid = $slaves.find(function(s) { return s.drugs == "breast injections" || s.drugs == "hyper breast injections"; })>>
 	<<if def _valid>>
 		<<set $badB = 1, $Event = "bad breasts">>
@@ -127,7 +127,7 @@
 <<elseif ($cash > 30000) && ($rep > 4000) && ($corpAnnounced == 0)>>
 	<<goto "P Corp Announcement">>
 <<elseif ($rivalOwner > 0)>>
-	<<if $hostageAnnounced == -1>>
+	<<if $hostageAnnounced == -1 && $rivalSet != 0>>
 		<<goto "P rivalry hostage">>
 	<<elseif ($rivalOwner-$rivalryPower+10)/$arcologies[0].prosperity < 0.5>>
 		<<goto "P rivalry victory">>
@@ -160,7 +160,7 @@
 	<<goto "secExpSmilingMan">>
 <<elseif $rivalOwner == 0 && $smilingManProgress == 3 && $secExp == 1>>
 	<<goto "secExpSmilingMan">>
-<<elseif (_effectiveWeek > 84) && ($securityForceCreate == 1) && ($SFMODToggle == 1) && $OverallTradeShowAttendance == 0>>
+<<elseif $TierTwoUnlock == 1 && ($securityForceCreate == 1) && ($SFMODToggle == 1) && $OverallTradeShowAttendance == 0>>
 	<<goto "securityForceTradeShow">>
 <<else>>
 	<<if random(1,100) > _effectiveWeek+25>>
diff --git a/src/uncategorized/officeDescription.tw b/src/uncategorized/officeDescription.tw
index fb2b6226b846c404c88bfcd9dc40732883d5cea4..06575fa66fb5ec67b5173aafa1d7d9c4fd9053c1 100644
--- a/src/uncategorized/officeDescription.tw
+++ b/src/uncategorized/officeDescription.tw
@@ -199,113 +199,10 @@ There's a display case behind your desk,
 
 A small mirror resides on your desk, facing you.
 A $PC.visualAge year old<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> face stares back at you.
-<<if ($playerAging != 0)>><<if $PC.birthWeek is 51>>You'll be turning <<print $PC.actualAge+1>> next week.<</if>><</if>>
-<<if $PC.boobsBonus > 2>>
-	Your breasts are enormous<<if $PC.markings == "freckles">> with light freckling on the tops and in your cleavage<<elseif $PC.markings == "heavily freckled">> and covered in freckles, which are particularly dense in the cleft between them<</if>>. <<if $PC.boobsImplant == 1>>They are big, round, and obviously implants. They insist on maintaining their shape no matter how you move<<else>>They are all natural, heavy, and a bit saggy though they retain some perk. Every single move you make sends ripples through your cleavage. You catch yourself watching them move in the mirror every so often<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more enormous lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>>
-<<elseif $PC.boobsBonus == 2>>
-	Your breasts are huge<<if $PC.markings == "freckles">> with light freckling on the tops and in your cleavage<<elseif $PC.markings == "heavily freckled">> and covered in freckles, which are particularly dense in the cleft between them<</if>>. <<if $PC.boobsImplant == 1>>They are unnaturally perky for their size. When you shake them, they barely move<<else>>They are all natural and a little heavy. They bounce lewdly when you shake them and take a little too long to calm down<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel even more huge lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>>
-<<elseif $PC.boobsBonus == 1>>
-	Your breasts are pretty big<<if $PC.markings == "freckles">> with light freckling on the tops and in your cleavage<<elseif $PC.markings == "heavily freckled">> and covered in freckles, which are particularly dense in the cleft between them<</if>>. <<if $PC.boobsImplant == 1>>They are nice, perky and not obviously implants. They jiggle only slightly when you shake them though<<else>>They are nice and perky, despite their size. They bounce lewdly when you shake them<</if>>.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>>
-<<elseif $PC.boobsBonus == -0.5>>
-	Your breasts are certainly eye-catching<<if $PC.markings == "freckles">> with light freckling on the tops and in your cleavage<<elseif $PC.markings == "heavily freckled">> and covered in freckles, which are particularly dense in the cleft between them<</if>>. They are nice and perky, with just the right amount of bounce when you shake them.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>>
-<<elseif $PC.boobsBonus == -1>>
-	Your breasts are fairly average, at least to old world standards<<if $PC.markings == "freckles">>, with light freckling on the tops and in your cleavage<<elseif $PC.markings == "heavily freckled">>, and covered in freckles, which are particularly dense in the cleft between them<</if>>. They are very perky, but aren't big enough to have a nice bounce when you shake them.<<if $PC.preg > 30 || $PC.births > 0>> Your breasts feel bigger lately; likely a side effect of your lactation, though you could do without the wetspots forming over your nipples.<</if>>
-<<elseif $PC.boobs == 1>>
-	Your breasts are on the larger side of things<<if $PC.preg > 30 || $PC.births > 0>>, though you could do without the wetspots forming over your nipples<</if>>.<<if $PC.markings == "freckles">> The tops of your breasts and your cleavage are lightly freckled.<<elseif $PC.markings == "heavily freckled">> They are covered in freckles, which are particularly dense in the cleft between them.<</if>>
-<<else>>
-	Your chest is quite masculine<<if $PC.preg > 30 || $PC.births > 0>>, though the pair of wetspots forming over your nipples suggest otherwise<</if>><<if $PC.markings == "freckles">>, and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">>, and covered in dense freckles<</if>>.
-<</if>>
-<<if $PC.preg > 0>>
-	<<if $PC.belly >= 120000>>
-		Your belly is coated with stretch marks and is taut as a drum; you don't know how much more your poor womb can endure. Kicks can almost constantly be seen dotting its surface. You give it a pat for good measure, only encouraging your octuplets to squirm in excitement.<<if $PC.dick == 1>> As your dick hardens under the prostate stimulation, you call for a slave to receive the incoming load.<</if>>
-	<<elseif $PC.belly >= 105000>>
-		Getting out of your chair is practically a dream at this point. It takes far too much effort to do it on your own and is a little embarrassing to ask help with.
-	<<elseif $PC.belly >= 90000>>
-		You can barely reach around your gravid mass any longer. You also had to reinforce your chair under your growing weight.
-	<<elseif $PC.belly >= 75000>>
-		Your belly is starting to become worrying; you feel over-filled at all times, and your children like to remind you just how full you are.
-	<<elseif $PC.belly >= 60000>>
-		You're definitely having multiples, there is no denying it at this point. All you can do is try to relax and keep try to stave off the stretch marks.
-	<<elseif $PC.belly >= 45000>>
-		You both look and feel enormous, your belly juts out so much now. You stand to chance of sitting at your desk normally and have taken to angling you chair and belly to the side instead.
-	<<elseif $PC.belly >= 30000>>
-		Your chair has taken to creaking ominously whenever you shift your pregnant bulk, while you've taken to keeping your belly uncovered to give it room.
-	<<elseif $PC.belly >= 14000>>
-		You can barely fit before your desk anymore and have had to take measures to accommodate your gravidity.
-	<<elseif $PC.belly >= 12000>>
-		You can barely wrap your arms around your huge pregnant belly, and when you do, your popped navel reminds you just how full you are.
-	<<elseif $PC.belly >= 10000>>
-		Your pregnancy has gotten quite huge, none of your clothes fit it right.
-	<<elseif $PC.belly >= 7000>>
-		Your pregnant belly juts out annoyingly far, just getting dressed is a pain now.
-	<<elseif $PC.belly >= 5000>>
-		Your belly has gotten quite large with child; it is beginning to get the way of sex and business.
-	<<elseif $PC.belly >= 1500>>
-		Your belly is now large enough that there is no hiding it.
-	<<elseif $PC.belly >= 500>>
-		Your belly is rounded by your early pregnancy.
-	<<elseif $PC.belly >= 250>>
-		Your lower belly is beginning to stick out, you're definitely pregnant.
-	<<elseif $PC.belly >= 100>>
-		Your belly is slightly swollen; combined with your missed period, odds are you're pregnant.
-	<<elseif $PC.belly < 100>>
-		Your period hasn't happened in some time, you might be pregnant.
-	<</if>>
-	<<if $PC.preg >= 41>>
-		You don't know why you even bother getting out of bed; you are overdue and ready to drop at many time, making your life as arcology owner very difficult. You try to relax and enjoy your slaves, but you can only manage so much in this state.
-	<<elseif $PC.preg >= 39>>
-		You feel absolutely massive; your full-term belly makes your life as arcology owner very difficult. You try your best to not wander too far from your penthouse, not with labor and birth so close.
-	<</if>>
-<<elseif $PC.belly >= 1500>>
-	Your belly is still very distended from your recent pregnancy.
-<<elseif $PC.belly >= 500>>
-	Your belly is still distended from your recent pregnancy.
-<<elseif $PC.belly >= 250>>
-	Your belly is still bloated from your recent pregnancy
-<<elseif $PC.belly >= 100>>
-	Your belly is still slightly swollen after your recent pregnancy.
-<</if>>
-<<if $PC.ballsImplant > 3>>
-    <<if $ballsAccessibility == 1>>
-        Thankfully your accessibility remodeling included a custom chair. When combined with the protective gel surrounding your massive sperm factories, it's rather comfortable. It even has an attachment to catch your neverending stream of precum, keeping the mess to a minimum.
-    <<else>>
-        Your monstrous balls make it impossible for you to sit normally in a standard chair, forcing you sit on the edge and let them dangle. You have to sit while naked below the waist unless you want your clothes soaked with spermy precum.
-    <</if>>
-<<elseif $PC.ballsImplant == 3 && $PC.balls < 2>>
-    <<if $ballsAccessibility == 1>>
-	    Thanks to your accessibility remodeling, your enormous gel-filled scrotum is able to rest comfortably in your custom chair.
-	<<else>>
-	    No matter how you sit, your enormous gel-filled scrotum is never quite comfortable. Fortunately the cosmetic gel protects you from any major discomfort.
-	<</if>>
-<<elseif $PC.ballsImplant == 3>>
-    <<if $ballsAccessibility == 1>>
-        Thanks to your accessibility remodeling, your enormous sperm factories are able to rest comfortably in your custom chair. Your chair also catches your never-ending precum, helping to prevent a mess.
-    <<else>>
-        You have to sit very carefully in your desk chair, giving your enormous sperm factories plenty of room. As they rest on the chair they deform uncomfortably under their own weight, causing even more of a mess from your ever-drooling cock.
-    <</if>>
-<<elseif $PC.ballsImplant == 2>>
-	You shift in your seat and spread your legs to give your huge balls room.
-<<elseif $PC.ballsImplant == 1>>
-	You shift in your seat to make room for your big balls.
-<</if>>
-<<if $PC.butt > 2>>
-    <<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
-        Your enormous<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make your chair extremely comfortable if it wasn't for your enormous balls. You have to be extremely careful to prevent your enormous cheeks from pinching your nuts.
-    <<else>>
-	    Your enormous butt<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> makes for an extremely comfortable seat. You hope the chair doesn't follow you when you stand up this time.
-    <</if>>
-<<elseif $PC.butt == 2>>
-    <<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
-        Your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make for a very comfortable seat if it wasn't for your enormous balls. You have to be careful to prevent your huge cheeks from pinching your nuts.
-    <<else>>
-    	Your huge<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt makes for a very comfortable seat.
-	<</if>>
-<<elseif $PC.butt == 1>>
-    <<if $PC.ballsImplant > 2 && $ballsAccessibility != 1>>
-        Your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt would make for a comfortable seat if your enormous balls weren't getting in the way.
-    <<else>>
-    	Your big<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> butt makes for a comfortable seat.
-    <</if>>
-<</if>>
+<<if ($playerAging != 0)>><<if $PC.birthWeek == 51>>You'll be turning <<print $PC.actualAge+1>> next week.<</if>><</if>>
+<<PlayerBoobs>>
+<<PlayerBelly>>
+<<PlayerCrotch>>
+<<PlayerButt>>
 
 <</if>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index e5a83b09e6b55e4b10112c6986d90fcd6ca32c79..9bf470ea1a5021c82cbfd591dbe72a9fc585a8e7 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -52,7 +52,7 @@ Image display
 	@@.cyan;ENABLED@@. [[Disable|Options][$seeImages = 0]]
 	<br>
 	<<if $imageChoice == 1>>
-		@@.yellow;Vector art by NoX@@ is selected. [[Switch to rendered imagepack|Options][$imageChoice = 0]] | [[Switch to non-embedded vector art|Options][$imageChoice = 2]]
+		@@.yellow;Vector art by NoX@@ is selected. [[Switch to rendered imagepack|Options][$imageChoice = 0]] | [[Switch to non-embedded vector art|Options][$imageChoice = 2]] | [[Switch to revamped embedded vector art|Options][$imageChoice = 3]]
 		<br>
 		Highlights on shiny clothing
 		<<if $seeVectorArtHighlights == 1>>
@@ -62,7 +62,17 @@ Image display
 		<</if>>
 		<br>@@.red;Git compiled only, no exceptions.@@
 	<<elseif $imageChoice == 2>>
-		@@.yellow;Vector art by NoX - non-embed version@@ is selected. [[Switch to rendered imagepack|Options][$imageChoice = 0]] | [[Switch to embedded vector art|Options][$imageChoice = 1]]
+		@@.yellow;Vector art by NoX - non-embed version@@ is selected. [[Switch to rendered imagepack|Options][$imageChoice = 0]] | [[Switch to embedded vector art|Options][$imageChoice = 1]] | [[Switch to revamped embedded vector art|Options][$imageChoice = 3]]
+	<<elseif $imageChoice == 3>>
+		@@.yellow;Vector art revamp@@ is selected. [[Switch to rendered imagepack|Options][$imageChoice = 0]] | [[Switch to embedded vector art|Options][$imageChoice = 1]] | [[Switch to non-embedded vector art|Options][$imageChoice = 2]]
+		<br>
+		Highlights on shiny clothing
+		<<if $seeVectorArtHighlights == 1>>
+			@@.cyan;ENABLED@@. [[Disable|Options][$seeVectorArtHighlights = 0]]
+		<<else>>
+			@@.red;DISABLED@@. [[Enable|Options][$seeVectorArtHighlights = 1]]
+		<</if>>
+		<br>@@.red;Git compiled only, no exceptions.@@
 	<<elseif $imageChoice == 0>>
 		@@.yellow;Rendered imagepack by Shokushu@@ is selected. [[Switch to vector art|Options][$imageChoice = 1]]
 		<br>
@@ -295,6 +305,13 @@ Extreme content like amputation is currently @@.cyan;ENABLED@@. [[Disable|Option
 <br>&nbsp;&nbsp;&nbsp;&nbsp;//Will not affect extreme surgeries already applied already in-game. 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;More granular control of what appears is in// [[Description Options]].
 
+<br>
+<<if ($seePreg == 0)>>
+Pregnancy related content is currently @@.red;DISABLED@@. [[Enable|Options][$seePreg = 1]]
+<<else>>
+Pregnancy related content is currently @@.cyan;ENABLED@@. [[Disable|Options][$seePreg = 0]]
+<</if>> //Will not affect existing pregnancies already in-game.//
+
 <br>
 <<if ($seeHyperPreg == 0)>>
 Extreme pregnancy content like broodmothers is currently @@.red;DISABLED@@. [[Enable|Options][$seeHyperPreg = 1]]
diff --git a/src/uncategorized/pHackerSupport.tw b/src/uncategorized/pHackerSupport.tw
index ac992d7f3fd0d6c408f57cf3caddc4d52273d946..49cba18d6e8fbe004c7e0bb0f4ac95ec038f2fbd 100644
--- a/src/uncategorized/pHackerSupport.tw
+++ b/src/uncategorized/pHackerSupport.tw
@@ -86,18 +86,28 @@ As she finishes speaking, another spasm distorts her expression, and then she su
 		<<case "hypergoddess">>
 			She seems to have left a present for your poor personal assistant; her "little" goddess avatar is visible in the bottom corner of a screen on the wall opposite you. She's being ass-fucked by a representation of the hacker in the same style, while her large breasts are roughly milked. Every few thrusts coincide with another baby slipping out alongside an orgasm.
 		<<case "loli">>
-			She seems to have left a present for your poor personal assistant; her little girl avatar is visible in the bottom corner of a screen on the wall opposite you. Her virginity is being forcibly taken by a representation of the hacker in the same style. She cries out as she cums in her fertile womb; again and again the hacker uploads her virus into her abused pussy until her sagging bloated belly is touching the floor. She leaves the avatar drooling cum to rest on her new pregnancy. She may need to be reset after this experience.
-			<<set $assistantAppearance = "preggololi">>
+			She seems to have left a present for your poor personal assistant; her little girl avatar is visible in the bottom corner of a screen on the wall opposite you.
+			<<if $seePreg != 0>>
+				Her virginity is being forcibly taken by a representation of the hacker in the same style. She cries out as she cums in her fertile womb; again and again the hacker uploads her virus into her abused pussy until her sagging bloated belly is touching the floor. She leaves the avatar drooling cum to rest on her new pregnancy. She may need to be reset after this experience.
+				<<set $assistantAppearance = "preggololi">>
+			<<else>>
+				She's writhing on the floor in tears as a series of hands tickles her body. They shift their focus to her nipples and pussy as she begins moaning with lust. As she twitches and jerks before the mounting orgasm, they vanish, leaving her writhing in sexual frustration before you. Before your eyes, her hands shoot to her crotch and she climaxes lewdly in front of you.
+			<</if>>
 		<<case "preggololi">>
 			She seems to have left a present for your poor personal assistant; her little girl avatar is visible in the bottom corner of a screen on the wall opposite you. Her vagina is being forcibly fucked by a representation of the hacker in the same style.  Each thrust causes her to rock atop her bulging pregnancy until the hacker unloads into her. She leaves the avatar drooling cum to rest on her overfilled belly.
 		<<case "schoolgirl">>
 			She seems to have left a present for your poor personal assistant; her little schoolgirl avatar is visible in the bottom corner of a screen on the wall opposite you, and is blushing furiously as she compulsively fists herself.
 		<<case "angel">>
-			She seems to have left a present for your poor personal assistant; her little angel avatar is visible in the bottom corner of a screen on the wall opposite you. Her virginity is being forcibly taken by a representation of the hacker in the same style. She pleads for them to stop before she falls, but it goes unheeded. She cries out in orgasm as the hacker unloads their corrupting jism deep into her womb before pulling out and letting her drop to the ground. She rolls from side to side in anguish, gripping her cum filled belly as it rounds more and more, before settling on her back and cradling her now full-term pregnancy. As it continues to grow, her body becomes increasingly withered, until she appears to be pregnant with a fully grown person.
-			<<if $seeExtreme == 1>>
-				As the light fades from her, her gravid belly begins to shudder violently, its occupant trying to tear its way free. Before long, it splits open, revealing a gorgeous woman with all the features of the fallen angel. $assistantName spreads her bat-like wings as she rises from the disintegrating remains of her once holy body, turns to you, and sensually traces her new curves seductively.
+			She seems to have left a present for your poor personal assistant; her little angel avatar is visible in the bottom corner of a screen on the wall opposite you. Her virginity is being forcibly taken by a representation of the hacker in the same style. She pleads for them to stop before she falls, but it goes unheeded. She cries out in orgasm as the hacker unloads their corrupting jism deep into her womb before pulling out and letting her drop to the ground. She rolls from side to side in anguish,
+			<<if $seePreg != 0>>
+				gripping her cum filled belly as it rounds more and more, before settling on her back and cradling her now full-term pregnancy. As it continues to grow, her body becomes increasingly withered, until she appears to be pregnant with a fully grown person.
+				<<if $seeExtreme == 1>>
+					As the light fades from her, her gravid belly begins to shudder violently, its occupant trying to tear its way free. Before long, it splits open, revealing a gorgeous woman with all the features of the fallen angel. $assistantName spreads her bat-like wings as she rises from the disintegrating remains of her once holy body, turns to you, and sensually traces her new curves seductively.
+				<<else>>
+					As the light fades from her, her gravid belly begins to shudder violently, its occupant trying to find its way out. A pair of arms burst forth from her ruined pussy, followed a perfectly endowed woman with all the features of the former angel. $assistantName rises and spreads her bat-like wings as the remains of her once holy body turn to dust behind her. She turns to you, sensually tracing the contours of her new body, and blows you a kiss.
+				<</if>>
 			<<else>>
-				As the light fades from her, her gravid belly begins to shudder violently, its occupant trying to find its way out. A pair of arms burst forth from her ruined pussy, followed a perfectly endowed woman with all the features of the former angel. $assistantName rises and spreads her bat-like wings as the remains of her once holy body turn to dust behind her. She turns to you, sensually tracing the contours of her new body, and blows you a kiss.
+				alternating between groping her swelling breasts and fingering her aching pussy, before screaming with climax as her body twists into a more suiting form. $assistantName rises to her feet, spreads her bat-like wings, and sensually traces her new curves before bending over revealing her sopping wet cunt. "All for you, <<print $PC.name>>, you know you want it."
 			<</if>>
 			<<set $assistantAppearance = "succubus">>
 		<<case "cherub">>
@@ -105,11 +115,23 @@ As she finishes speaking, another spasm distorts her expression, and then she su
 		<<case "incubus">>
 			She seems to have left a present for your poor personal assistant; her little incubus avatar is visible in the bottom corner of a screen on the wall opposite you, its dick steadily growing longer and prehensile. As she gasps in shock, it rockets into her mouth and down her throat. It delves deeper into the struggling demon, her intestines bulging under her skin as her dick snakes through her, until it pops out the other end. It begins pistoning in and out of her body, literally forcing her to fuck herself until she cums, causing it to rapidly retract back through her body. She collapses to the floor, coughing up cum and struggling to catch her breath.
 		<<case "succubus">>
-			She seems to have left a present for your poor personal assistant; her little succubus avatar is visible in the bottom corner of a screen on the wall opposite you. She has adjusted her form to better suit her lover; a representation of the hacker in the same style. She calls out a silent name, something you'll never know, as they come deep into her pussy. They shift positions, $assistantName standing, legs spread, with her arms against the edge of the screen as the hacker fucks her rear. As she bucks against him, it is obvious that her belly has rounded significantly; swaying slightly with every thrust. Cumming again, the hacker pulls her leg up over their shoulder and begins thrusting anew, her middle heavily rounded with child now, quickly bring both to orgasm. She is left to slide down the edge of the screen and upon reaching the bottom, spreads her legs and begins laboring on her new child. Each imp that passes through her netherlips brings another orgasm and muffled shout of the hacker's name. Once the last hacker imp leaves her womb, she reaches down, gathers a trace of cum, and licks it off her finger while staring you down, stating "$PC.name will never be as good as..." before passing out.
+			She seems to have left a present for your poor personal assistant; her little succubus avatar is visible in the bottom corner of a screen on the wall opposite you. She has adjusted her form to better suit her lover; a representation of the hacker in the same style. She calls out a silent name, something you'll never know, as they come deep into her pussy. They shift positions, $assistantName standing, legs spread, with her arms against the edge of the screen as the hacker fucks her rear.
+			<<if $seePreg != 0>>
+				As she bucks against him, it is obvious that her belly has rounded significantly; swaying slightly with every thrust. Cumming again, the hacker pulls her leg up over their shoulder and begins thrusting anew, her middle heavily rounded with child now, quickly bring both to orgasm. She is left to slide down the edge of the screen and upon reaching the bottom, spreads her legs and begins laboring on her new child. Each imp that passes through her netherlips brings another orgasm and muffled shout of the hacker's name. Once the last hacker imp leaves her womb, she
+			<<else>>
+				Position after position, orgasm after orgasm, you are forced to watch. Once the hacker is satisfied, she is left to slide down the edge of the screen and upon reaching the bottom,
+			<</if>>
+			reaches down, gathers a trace of cum, and licks it off her finger while staring you down, stating "$PC.name will never be as good as..." before passing out.
 		<<case "imp">>
 			She seems to have left a present for your poor personal assistant; her little impish avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, vigorously fisting her pussy.
 		<<case "witch">>
-			She seems to have left a present for your poor personal assistant; her little witch avatar is visible in the bottom corner of a screen on the wall opposite you being assaulted by tentacles. They've already managed to rip her robes off and are currently forcing themselves into all her holes. Only once every orifice has two to three tentacles crammed into it does the beast start fucking her. Before long, half the tentacles are pumping the poor girl full of cum while the rest fill her with eggs; she struggles valiantly at first, but as her middle grows larger and heavier, she is forced to accept her fate. When the tentacles feel they can fit no more eggs into her, they pull her into a sitting position and spread her legs wide; just in time for the first hatched larva to begin squeezing its way from her packed womb. Moments later, another plops from her rear, and yet another squirms up her throat and out her mouth, flopping wetly onto her chest. With each path cleared, the rest of the larva begin to pour from her body. Given the size of her belly, it may be awhile before she is done.
+			She seems to have left a present for your poor personal assistant; her little witch avatar is visible in the bottom corner of a screen on the wall opposite you being assaulted by tentacles. They've already managed to rip her robes off and are currently forcing themselves into all her holes. Only once every orifice has two to three tentacles crammed into it does the beast start fucking her. Before long, 
+			<<if $seePreg != 0>>
+				half the tentacles are pumping the poor girl full of cum while the rest fill her with eggs; she struggles valiantly at first, but as her middle grows larger and heavier, she is forced to accept her fate. When the tentacles feel they can fit no more eggs into her, they pull her into a sitting position and spread her legs wide; just in time for the first hatched larva to begin squeezing its way from her packed womb. Moments later, another plops from her rear, and yet another squirms up her throat and out her mouth, flopping wetly onto her chest. With each path cleared, the rest of the larva begin to pour from her body.
+			<<else>>
+				the tentacles begin pumping the poor girl full of cum; she struggles valiantly at first, but as her middle grows larger and heavier, she is forced to accept her fate. As they vacate her body, a large surge of fluid follows.
+			<</if>>
+			Given the size of her belly, it may be awhile before she is done.
 		<<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
 			She seems to have left a present for your poor personal assistant; her little bugged avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing disturbingly. Its arms twist into a pair of extremely phallic tentacles, which it uses to forcefully fuck its ass and pussy.
 		<</switch>>
diff --git a/src/uncategorized/pSchoolSuggestion.tw b/src/uncategorized/pSchoolSuggestion.tw
index 7045a2e21a45e384ba2344e3cfa490d515fef573..d14a858fac85ddcbe0cbe706cc639aba7a6f7949 100644
--- a/src/uncategorized/pSchoolSuggestion.tw
+++ b/src/uncategorized/pSchoolSuggestion.tw
@@ -28,7 +28,7 @@ An older woman standing across from him sniffs. "St. Claver's knows how to do bo
 The unusually competent young heiress standing next to him snickers. "If you're going to bring up refinement, um, hello, the Futanari Sisters. I have four futas in my apartment having sex with each other right now. How do I know? Because they're always having sex with each other. They never stop." Her eyes take on a faraway look and she pauses. "Um, haha, I know what I'm doing later."
 <</if>>
 <br><br>
-"If you like them soft and mellow, you got to go with The Cattle Ranch," a buff man blurts loudly while slamming down his emtpy mug. "I've got a pair of 'em for my bedroom; they are so loving after a good milking. Taste good too." His drinking budy retorts, "Too much work is what they are. They might as well be animals with how they act."
+"If you like them soft and mellow, you got to go with The Cattle Ranch," a buff man blurts loudly while slamming down his emtpy mug. "I've got a pair of 'em for my bedroom; they are so loving after a good milking. Taste good too." His drinking budy retorts, "Too much work is what they are. They might as well be animals with how they act.<<if $seePreg == 0>> In addition, hope you like pregnant pussies cause you need to keep them gravid or their milk dries up.<</if>>"
 <br><br>
 "I see good taste is scarce within this walls" suddenly stated a young man previously quiet in his corner. "I say quality and strength is where the game should be played and there's nothing better than the girls from the Hippolyta Academy. 
 <br><br>
@@ -55,12 +55,14 @@ The older gentleman who seems to have been acting as unofficial moderator before
 		<<set $SCP.schoolPresent = 1, $cash -= 10000>>
 	<</replace>>
 <</link>>
+<<if $seePreg != 0>>
 <br><<link "The Cattle Ranch">>
 	<<replace "#result">>
 		You thank your leading citizens and announce your decision: you'll be contacting The Cattle Ranch about opening a local pasture, immediately.
 		<<set $TCR.schoolPresent = 1, $cash -= 10000>>
 	<</replace>>
 <</link>>
+<</if>>
 <br><<link "The Hippolyta Academy">>
 	<<replace "#result">>
 		You thank your leading citizens and announce your decision: you'll be contacting The Hippolyta Academy about opening a local branch, immediately.
diff --git a/src/uncategorized/pSnatchAndGrabResult.tw b/src/uncategorized/pSnatchAndGrabResult.tw
index 85bc86839314be98ca8338dd01efbb167ba4bfa9..b00d08ddc35f211032e2f240216cf8a9c30d4fee 100644
--- a/src/uncategorized/pSnatchAndGrabResult.tw
+++ b/src/uncategorized/pSnatchAndGrabResult.tw
@@ -31,7 +31,7 @@
   <<set $activeSlave.balls = 1>>
   <<set $activeSlave.scrotum = $activeSlave.balls>>
 <</if>>
-<<set $activeSlave.boobs += 3000>>
+<<set $activeSlave.boobs += 6000>>
 <<set $activeSlave.boobShape = "saggy">>
 <<set $activeSlave.nipples = "partially inverted">>
 <<set $activeSlave.areolae = 3>>
diff --git a/src/uncategorized/peConcubineInterview.tw b/src/uncategorized/peConcubineInterview.tw
index bfe8f599cd7999852e160674b68f694d7e0e1816..84025f6b89661a7e8a428f9fff2f73c438b3475a 100644
--- a/src/uncategorized/peConcubineInterview.tw
+++ b/src/uncategorized/peConcubineInterview.tw
@@ -138,7 +138,7 @@ You receive an official communication from a popular talk show hosted in one of
 			"That'<<s>> for me and my <<Master>> only," she teases, sticking out her tongue.
 		<</if>>
 	<</if>>
-	<<if $activeSlave.pregType == 50 && $activeSlave.preg > 37>>
+	<<if $activeSlave.broodmother == 2 && $activeSlave.preg > 37>>
 		She grunts and struggles to spread her legs. "I'm <<s>>orry, another one i<<s>> coming out right now..." she <<say>>s, turning red. The host, at a loss for words, can only watch as
 		<<if $activeSlave.clothes == "none" || $activeSlave.clothes == "body oil">>
 			a child is born into the world, live on screen.
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index 7c81e5c4d91d1842e5831e1eda64538b6e89bad0..5f705fd5cfaa89610b6276dd8ba2d1f011d76cb0 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -317,7 +317,7 @@
 			<<set $enduringRep *= .8>>
 		<</if>>
 	<</if>>
-	<<set $seed += random(2000 * Math.log($cash), 3000 * Math.log($cash))>>
+	<<set $seed += Math.trunc(Math.min(3000 * Math.log($cash), $cash * 0.07))>>
 	This week, your illicit and legitimate business dealings earned you a combined total of @@.yellowgreen;<<print cashFormat($seed)>>@@.
 	<<set $cash += $seed>>
 <<elseif ($cash > 1000) && ($personalAttention == "business")>>
@@ -328,14 +328,14 @@
 	<</if>>
 	<<if $PC.trading >= 100>>
 		You focus on business and leverage your @@.springgreen;venture capital experience@@ to make good money:
-		<<set $seed += random(5000,10000)>>
+		<<set $seed += random(5000,10000) + Math.trunc(Math.min(4000 * Math.log($cash), $cash * 0.07))>>
 	<<elseif $PC.career == "arcology owner">>
 		You focus on business and leverage your @@.springgreen;Free Cities experience@@ to make good money:
-		<<set $seed += random(5000,10000)>>
+		<<set $seed += random(5000,10000) + Math.trunc(Math.min(4000 * Math.log($cash), $cash * 0.07))>>
 	<<else>>
-		You focus on business this week and make money:
+		You focus on business this week and make money
+		<<set $seed += Math.trunc(Math.min(3500 * Math.log($cash), $cash * 0.07))>>
 	<</if>>
-	<<set $seed += random(4000 * Math.log($cash), 5000 * Math.log($cash))>>
 	@@.yellowgreen;<<print cashFormat($seed)>>.@@
 	<<set $cash += $seed>>
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
@@ -343,7 +343,7 @@
 		<<FSChange "RomanRevivalist" 2>>
 	<</if>>
 <<elseif ($cash > 1000)>>
-	<<set $seed = random(2000 * Math.log($cash), 3000 * Math.log($cash))>>
+	<<set $seed = Math.trunc(Math.min(3000 * Math.log($cash), $cash * 0.07))>>
 	This week, your business endeavors made you @@.yellowgreen;<<print cashFormat($seed)>>.@@
 	<<set $cash += $seed>>
 <<else>>
@@ -679,18 +679,19 @@
 			<<set _upgradeCount += 1>>
 		<</if>>
 		<<set _dataGain = _upgradeCount * 200>>
-		You are selling the data collected by your security department, making @@.yellowgreen;¤a discreet sum@@.
 		<<if !isInt(_dataGain)>>
 			<br>@@.red;Error, dataGain is NaN@@
+		<<else>>
+			You are selling the data collected by your security department, which earns a discreet sum of @@.yellowgreen;<<print cashFormat(_dataGain)>>@@.
+			<<set $cash += _dataGain>>
+			Many of your citizens are not enthusiastic of this however, @@.red;damaging your authority@@.
+			<<set $authority -= 50>>
 		<</if>>
-		<<set $cash += _dataGain>>
-		Many of your citizens are not enthusiastic of this however, @@.red;damaging your authority@@.
-		<<set $authority -= 50>>
 	<</if>>
 
 	<<if $marketInfiltration == 1>>
-		Your secret service makes use of black markets and illegal streams of goods to make a profit, making you @@.yellowgreen;¤a discreet sum@@. This however allows @@.red;crime to flourish@@ in the underbelly of the arcology.
-		<<set $cash += 1000 * random(4,8)>>
+		<<set $seed = random(7000,8000)>>
+		Your secret service makes use of black markets and illegal streams of goods to make a profit, making you @@.yellowgreen;<<print cashFormat($seed)>>@@. This however allows @@.red;crime to flourish@@ in the underbelly of the arcology.
 		<<set $crime += random(1,3)>>
 	<</if>>
 
@@ -840,40 +841,28 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 	<</if>>
 <</if>>
 
-<<if $menialDemandFactor != 0>>
 <<if Math.abs($menialDemandFactor) > 100>>
-<<if ($menialDemandFactor > 1000) && ($slaveCostFactor <= 1.1)>>
-	Your dealings in menial slaves have had a major impact on the slave market, @@.yellow;greatly increasing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor += 0.15>>
-	<br><br>
-<<elseif ($menialDemandFactor > 500) && ($slaveCostFactor <= 1.15)>>
-	Your dealings in menial slaves have had a noticeable impact on the slave market, @@.yellow;significantly increasing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor += 0.1>>
-	<br><br>
-<<elseif ($menialDemandFactor > 250) && ($slaveCostFactor <= 1.2)>>
-	Your dealings in menial slaves have had a minor impact on the slave market, @@.yellow;slightly increasing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor += 0.05>>
-	<br><br>
-<<elseif ($menialDemandFactor < -1000) && ($slaveCostFactor >= 0.9)>>
-	Your dealings in menial slaves have had a major impact on the slave market, @@.yellow;greatly reducing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor -= 0.15>>
-	<br><br>
-<<elseif ($menialDemandFactor < -500) && ($slaveCostFactor >= 0.85)>>
-	Your dealings in menial slaves have had a noticeable impact on the slave market, @@.yellow;significantly reducing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor -= 0.1>>
-	<br><br>
-<<elseif ($menialDemandFactor < -250) && ($slaveCostFactor >= 0.8)>>
-	Your dealings in menial slaves have had a minor impact on the slave market, @@.yellow;slightly reducing slave prices.@@
-	<<set $menialDemandFactor = 0>>
-	<<set $slaveCostFactor -= 0.05>>
-	<br><br>
-<</if>>
-<</if>>
+	<<if ($menialDemandFactor > 1000)>>
+		<<set $menialDemandFactor -= random(500, 1000)>>
+	<<elseif ($menialDemandFactor > 500)>>
+		<<set $menialDemandFactor -= random(250, 500)>>
+	<<elseif ($menialDemandFactor > 250)>>
+		<<set $menialDemandFactor -= random(100, 250)>>
+	<<elseif ($menialDemandFactor < -1000)>>
+		<<set $menialDemandFactor += random(500, 1000)>>
+	<<elseif ($menialDemandFactor < -500)>>
+		<<set $menialDemandFactor += random(250, 500)>>
+	<<elseif ($menialDemandFactor < -250)>>
+		<<set $menialDemandFactor += random(100, 250)>>
+	<<else>>
+		<<set $menialDemandFactor += random(-100, 100)>>
+	<</if>>
+<<elseif random(1,100) > 95>>
+	<<set $menialDemandFactor += random(-1500, 1500)>>
+<<elseif random(1,100) > 75>>
+	<<set $menialDemandFactor += random(-500, 500)>>
+<<else>>
+	<<set $menialDemandFactor += random(-250, 250)>>
 <</if>>
 
 <<if $securityForceActive == 1>>
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index a056f2271f9b23804e1736ed52853422fe7aaed7..765dcd1c4eae86f15f9e4188cd85e6b71472fab7 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -2,22 +2,22 @@
 <<set $nextButton = "Back to Main", $nextLink = "Main">>
 
 <<if $PC.career == "escort">>
-[[Focus on "connecting"|Main][$personalAttention = "whoring", $personalAttentionChanged = 1]]
+[[Focus on "connecting"|Main][$personalAttention = "whoring"]]
 <<elseif $PC.career == "servant">>
-[[Maintain your home|Main][$personalAttention = "upkeep", $personalAttentionChanged = 1]]
+[[Maintain your home|Main][$personalAttention = "upkeep"]]
 <<else>>
-[[Focus on business|Main][$personalAttention = "business", $personalAttentionChanged = 1]]
+[[Focus on business|Main][$personalAttention = "business"]]
 	<<if $PC.career == "gang">>
-		| [[Help people "pass" things around|Main][$personalAttention = "smuggling", $personalAttentionChanged = 1]]
+		| [[Help people "pass" things around|Main][$personalAttention = "smuggling"]]
 	<</if>>
 	<<if $PC.technician > 0>>
 		| [[create technical accidents in $arcologies[0].name for the highest bidder|Main][$personalAttention = "technical accidents", $personalAttentionChanged = 1]]	
 	<</if>>
 <</if>>
 <<if $HeadGirl != 0>>
-	<br>[[Support your Head Girl|Main][$personalAttention = "HG", $personalAttentionChanged = 1]]
+	<br>[[Support your Head Girl|Main][$personalAttention = "HG"]]
 <</if>>
-<br>[[Have as much sex with your slaves as possible|Main][$personalAttention = "sex", $personalAttentionChanged = 1]]
+<br>[[Have as much sex with your slaves as possible|Main][$personalAttention = "sex"]]
 <<if $proclamationsCooldown == 0 && $secExp == 1>>
 	<br>[[Issue a proclamation|proclamations]]
 	<br>
@@ -47,7 +47,7 @@
 	<<if $personalAttention == "trading">>
 		<br>You are training in venture capitalism.
 	<<elseif $PC.trading < 100 && $PC.actualAge < $IsPastPrimePC>>
-		<br>[[Hire a merchant to train you in commerce|Main][$personalAttention = "trading", $personalAttentionChanged = 1]]
+		<br>[[Hire a merchant to train you in commerce|Main][$personalAttention = "trading"]]
 	<</if>>
 <</if>>
 <<if $PC.warfare >= 100>>
@@ -63,7 +63,7 @@
 	<<if $personalAttention == "warfare">>
 		<br>You are training in tactics.
 	<<elseif $PC.warfare < 100 && $PC.actualAge < $IsPastPrimePC>>
-		<br>[[Hire a mercenary to train you in warfare|Main][$personalAttention = "warfare", $personalAttentionChanged = 1]]
+		<br>[[Hire a mercenary to train you in warfare|Main][$personalAttention = "warfare"]]
 	<</if>>
 <</if>>
 <<if $PC.technician >= 100>>
@@ -95,7 +95,7 @@
 	<<if $personalAttention == "slaving">>
 		<br>You are training in slaving.
 	<<elseif $PC.slaving < 100 && $PC.actualAge < $IsPastPrimePC>>
-		<br>[[Hire a slaver to train you in slaving|Main][$personalAttention = "slaving", $personalAttentionChanged = 1]]
+		<br>[[Hire a slaver to train you in slaving|Main][$personalAttention = "slaving"]]
 	<</if>>
 <</if>>
 <<if $PC.engineering >= 100>>
@@ -111,7 +111,7 @@
 	<<if $personalAttention == "engineering">>
 		<br>You are training in arcology engineering.
 	<<elseif $PC.engineering < 100 && $PC.actualAge < $IsPastPrimePC>>
-		<br>[[Hire an engineer to train you in engineering|Main][$personalAttention = "engineering", $personalAttentionChanged = 1]]
+		<br>[[Hire an engineer to train you in engineering|Main][$personalAttention = "engineering"]]
 	<</if>>
 <</if>>
 <<if $PC.medicine >= 100>>
@@ -127,209 +127,211 @@
 	<<if $personalAttention == "medicine">>
 		<br>You are training in slave surgery.
 	<<elseif $PC.medicine < 100 && $PC.actualAge < $IsPastPrimePC>>
-		<br>[[Hire a doctor to train you in medicine|Main][$personalAttention = "medicine", $personalAttentionChanged = 1]]
+		<br>[[Hire a doctor to train you in medicine|Main][$personalAttention = "medicine"]]
 	<</if>>
 <</if>>
 <</if>>
 <<if $PC.actualAge >= $IsInPrimePC && $PC.actualAge < $IsPastPrimePC && ($PC.medicine < 100 || $PC.engineering < 100 || $PC.slaving < 100 || $PC.warfare < 100 || $PC.trading < 100)>><br>//<br>//Training will cost <<print cashFormat(_cost)>> per week.//<br><br><<else>><br><br><</if>>
 
-<<if ($personalAttentionChanged == 1)>>
-<<if ($activeSlave.health < -20)>>
-	<<set $trainingRegimen = "look after her">>
-	<<set $personalAttentionChanged = 0>>
-<<elseif ($activeSlave.behavioralFlaw != "none")>>
-	<<if ($activeSlave.devotion >= -20)>>
-	<<set $trainingRegimen = "soften her behavioral flaw">>
-	<<set $personalAttentionChanged = 0>>
-	<<else>>
-	<<set $trainingRegimen = "fix her behavioral flaw">>
-	<<set $personalAttentionChanged = 0>>
-	<</if>>
-<<elseif ($activeSlave.sexualFlaw != "none")>>
-	<<if ($activeSlave.devotion >= -20)>>
-	<<set $trainingRegimen = "soften her sexual flaw">>
-	<<set $personalAttentionChanged = 0>>
-	<<else>>
-	<<set $trainingRegimen = "fix her sexual flaw">>
-	<<set $personalAttentionChanged = 0>>
-	<</if>>
-<<elseif ($activeSlave.fetishKnown != 1)>>
-	<<set $trainingRegimen = "explore her sexuality">>
-	<<set $personalAttentionChanged = 0>>
-<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
-	<<set $trainingRegimen = "break her will">>
-	<<set $personalAttentionChanged = 0>>
-<<else>>
-	<<set $trainingRegimen = "build her devotion">>
-	<<set $personalAttentionChanged = 0>>
-<</if>>
-<</if>>
-
-<<set _assignment = 0>>
-<<for _i = 0;_i < $slaves.length;_i++>>
-<<if $personalAttention == $slaves[_i].ID>>
-	You will give ''__@@.pink;$slaves[_i].slaveName@@__'' your personal attention this week.
-	<<set $activeSlave = $slaves[_i]>>
-	<<set _assignment = 1>>
-	<<break>>
-<</if>>
-<</for>>
-<<if _assignment == 0>>
+<<if typeof $personalAttention != "object" || $personalAttention.length == 0>>
 	You have not selected a slave for your personal attention.
 <<else>>
+	<<if $personalAttention.length > ($PC.slaving >= 100 ? 2 : 1)>>
+		<<set $personalAttention.deleteAt(0)>>
+	<</if>>
 
-Your training will seek to <span id="training"><strong>$trainingRegimen</strong></span>.<span id="cost"></span>
+	<<for _i = 0; _i < $personalAttention.length; _i++>>
+		<<set $activeSlave = $slaves.find(s => s.ID == $personalAttention[_i].ID)>>
+		/* duplicate check - should not happen if slaveSummary is doing its job */
+		<<if $personalAttention.map(function(s) { return s.ID; }).count($activeSlave.ID) > 1>>
+			<<set $personalAttention.deleteAt(_i), $personalAttention.deleteAt(_i), _i-->>
+			<<continue>>
+		<</if>>
 
-<br>Change training objective:
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
-	<<link "Break her will">><<set $trainingRegimen = "break her will">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-	| <<link "Use enhanced breaking techniques">><<set $trainingRegimen = "harshly break her will">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<<else>>
-	<<link "Build her devotion">><<set $trainingRegimen = "build her devotion">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
+		<<if $personalAttention[_i].trainingRegimen == "undecided">>
+			<<if ($activeSlave.health < -20)>>
+				<<set $personalAttention[_i].trainingRegimen = "look after her">>
+			<<elseif ($activeSlave.behavioralFlaw != "none")>>
+				<<if ($activeSlave.devotion >= -20)>>
+					<<set $personalAttention[_i].trainingRegimen = "soften her behavioral flaw">>
+				<<else>>
+					<<set $personalAttention[_i].trainingRegimen = "fix her behavioral flaw">>
+				<</if>>
+			<<elseif ($activeSlave.sexualFlaw != "none")>>
+				<<if ($activeSlave.devotion >= -20)>>
+					<<set $personalAttention[_i].trainingRegimen = "soften her sexual flaw">>
+				<<else>>
+					<<set $personalAttention[_i].trainingRegimen = "fix her sexual flaw">>
+				<</if>>
+			<<elseif ($activeSlave.fetishKnown != 1)>>
+				<<set $personalAttention[_i].trainingRegimen = "explore her sexuality">>
+			<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
+				<<set $personalAttention[_i].trainingRegimen = "break her will">>
+			<<else>>
+				<<set $personalAttention[_i].trainingRegimen = "build her devotion">>
+			<</if>>
+		<</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $activeSlave.fetishKnown == 0 || $activeSlave.attrKnown == 0>>
-	<<link "Explore her sexuality and fetishes">><<set $trainingRegimen = "explore her sexuality">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<<else>>
-	//You already understand her sexuality//
-<</if>>
+		<<capture $activeSlave, _i>>
+		
+		<<if _i > 0>><br><br><</if>>
+		
+		You will give ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' your personal attention this week.
+		
+		Your training will seek to <<span "training"+_i>><strong>$personalAttention[_i].trainingRegimen</strong><</span>>.
 
-<<if ($activeSlave.behavioralFlaw != "none")>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<link "Remove her behavioral flaw">><<set $trainingRegimen = "fix her behavioral flaw">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-	<<if ($activeSlave.devotion < -20)>>
-		 | //She must be broken before her flaws can be softened//
-	<<else>>
-		 | <<link "Soften her behavioral flaw">><<set $trainingRegimen = "soften her behavioral flaw">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-	<</if>>
-<</if>>
+		<br>Change training objective:
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
+			<<link "Break her will">><<set $personalAttention[_i].trainingRegimen = "break her will">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+			| <<link "Use enhanced breaking techniques">><<set $personalAttention[_i].trainingRegimen = "harshly break her will">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<<else>>
+			<<link "Build her devotion">><<set $personalAttention[_i].trainingRegimen = "build her devotion">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
 
-<<if ($activeSlave.sexualFlaw != "none")>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<link "Remove her sexual flaw">><<set $trainingRegimen = "fix her sexual flaw">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-	<<if ($activeSlave.devotion < -20)>>
-		<<if ($activeSlave.behavioralFlaw == "none")>>
-		 | //She must be broken before her flaws can be softened//
-		<</if>>
-	<<elseif ["cum addict", "anal addict", "attention whore", "breast growth", "abusive", "malicious", "self hating", "neglectful", "breeder"].includes($activeSlave.sexualFlaw)>>
-		 | //Paraphilias cannot be softened//
-	<<else>>
-		 | <<link "Soften her sexual flaw">><<set $trainingRegimen = "soften her sexual flaw">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-	<</if>>
-<</if>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $activeSlave.fetishKnown == 0 || $activeSlave.attrKnown == 0>>
+			<<link "Explore her sexuality and fetishes">><<set $personalAttention[_i].trainingRegimen = "explore her sexuality">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<<else>>
+			//You already understand her sexuality//
+		<</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.vaginalSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0)>>
-	//She knows all the skills you can teach//
-<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vagina == -1) && ($activeSlave.balls == 0)>>
-	//She knows all the skills you can teach a gelded slave//
-<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vagina == -1)>>
-	//She knows all the skills you can teach a shemale slave//
-<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vaginalAccessory == "chastity belt")>>
-	//She knows all the skills you can teach while she's wearing a chastity belt//
-<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
-	//She's too disobedient to learn sex skills//
-<<else>>
-	<<link "Teach her">><<set $trainingRegimen = "learn skills">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
+		<<if ($activeSlave.behavioralFlaw != "none")>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			<<link "Remove her behavioral flaw">><<set $personalAttention[_i].trainingRegimen = "fix her behavioral flaw">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+			<<if ($activeSlave.devotion < -20)>>
+				 | //She must be broken before her flaws can be softened//
+			<<else>>
+				 | <<link "Soften her behavioral flaw">><<set $personalAttention[_i].trainingRegimen = "soften her behavioral flaw">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+			<</if>>
+		<</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Care for her">><<set $trainingRegimen = "look after her">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
+		<<if ($activeSlave.sexualFlaw != "none")>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			<<link "Remove her sexual flaw">><<set $personalAttention[_i].trainingRegimen = "fix her sexual flaw">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+			<<if ($activeSlave.devotion < -20)>>
+				<<if ($activeSlave.behavioralFlaw == "none")>>
+				 | //She must be broken before her flaws can be softened//
+				<</if>>
+			<<elseif ["cum addict", "anal addict", "attention whore", "breast growth", "abusive", "malicious", "self hating", "neglectful", "breeder"].includes($activeSlave.sexualFlaw)>>
+				 | //Paraphilias cannot be softened//
+			<<else>>
+				 | <<link "Soften her sexual flaw">><<set $personalAttention[_i].trainingRegimen = "soften her sexual flaw">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+			<</if>>
+		<</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Induce a flaw:
-<<if $activeSlave.behavioralQuirk != "confident" && $activeSlave.behavioralFlaw != "arrogant">>
-	<<link "Arrogance">><<set $trainingRegimen = "induce arrogance">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "cutting" && $activeSlave.behavioralFlaw != "bitchy">>
-	| <<link "Bitchiness">><<set $trainingRegimen = "induce bitchiness">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "funny" && $activeSlave.behavioralFlaw != "odd">>
-	| <<link "Odd behavior">><<set $trainingRegimen = "induce odd behavior">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "adores women" && $activeSlave.behavioralFlaw != "hates men">>
-	| <<link "Hatred of men">><<set $trainingRegimen = "induce hatred of men">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "adores men" && $activeSlave.behavioralFlaw != "hates women">>
-	| <<link "Hatred of women">><<set $trainingRegimen = "induce hatred of women">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "fitness" && $activeSlave.behavioralFlaw != "gluttonous">>
-	| <<link "Gluttony">><<set $trainingRegimen = "induce gluttony">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "insecure" && $activeSlave.behavioralFlaw != "anorexic">>
-	| <<link "Anorexia">><<set $trainingRegimen = "induce anorexia">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "sinful" && $activeSlave.behavioralFlaw != "devout">>
-	| <<link "Religious devotion">><<set $trainingRegimen = "induce religious devotion">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.behavioralQuirk != "advocate" && $activeSlave.behavioralFlaw != "liberated">>
-	| <<link "Liberation">><<set $trainingRegimen = "induce liberation">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "gagfuck queen" && $activeSlave.sexualFlaw != "hates oral">>
-	| <<link "Hatred of oral">><<set $trainingRegimen = "induce hatred of oral">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "confipainal queendent" && $activeSlave.sexualFlaw != "hates anal">>
-	| <<link "Hatred of anal">><<set $trainingRegimen = "induce hatred of anal">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "strugglefuck queen" && $activeSlave.sexualFlaw != "hates penetration">>
-	| <<link "Hatred of penetration">><<set $trainingRegimen = "induce hatred of penetration">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "tease" && $activeSlave.sexualFlaw != "shamefast">>
-	| <<link "Shame">><<set $trainingRegimen = "induce shame">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "romantic" && $activeSlave.sexualFlaw != "idealistic">>
-	| <<link "Sexual idealism">><<set $trainingRegimen = "induce sexual idealism">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "perverted" && $activeSlave.sexualFlaw != "repressed">>
-	| <<link "Sexual repression">><<set $trainingRegimen = "induce sexual repression">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "caring" && $activeSlave.sexualFlaw != "apathetic">>
-	| <<link "Sexual apathy">><<set $trainingRegimen = "induce sexual apathy">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "unflinching" && $activeSlave.sexualFlaw != "crude">>
-	| <<link "Crudity">><<set $trainingRegimen = "induce crudity">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.sexualQuirk != "size queen" && $activeSlave.sexualFlaw != "judgemental">>
-	| <<link "Judgment">><<set $trainingRegimen = "induce judgement">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetishStrength > 95>>
-<<if $activeSlave.fetish == "cumslut" && $activeSlave.sexualFlaw != "cum addict">>
-	| <<link "Cum addiction">><<set $trainingRegimen = "induce cum addiction">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "buttslut" && $activeSlave.sexualFlaw != "anal addict">>
-	| <<link "Anal addiction">><<set $trainingRegimen = "induce anal addiction">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "humiliation" && $activeSlave.sexualFlaw != "attention whore">>
-	| <<link "Attention whoring">><<set $trainingRegimen = "induce attention whoring">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "boobs" && $activeSlave.sexualFlaw != "breast growth">>
-	| <<link "Breast growth obsession">><<set $trainingRegimen = "induce breast growth obsession">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "dom" && $activeSlave.sexualFlaw != "abusive">>
-	| <<link "Abusiveness">><<set $trainingRegimen = "induce abusiveness">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "sadist" && $activeSlave.sexualFlaw != "malicious">>
-	| <<link "Maliciousness">><<set $trainingRegimen = "induce maliciousness">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "masochist" && $activeSlave.sexualFlaw != "self hatred">>
-	| <<link "Self hatred">><<set $trainingRegimen = "induce self hatred">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "submissive" && $activeSlave.sexualFlaw != "neglectful">>
-	| <<link "Sexual self neglect">><<set $trainingRegimen = "induce sexual self neglect">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<if $activeSlave.fetish == "pregnancy" && $activeSlave.sexualFlaw != "breeder">>
-	| <<link "Breeding obsession">><<set $trainingRegimen = "induce breeding obsession">><<replace "#training">><strong>$trainingRegimen</strong><</replace>><</link>>
-<</if>>
-<<else>>
-	| //Paraphilias can only be induced from a strong fetish//
-<</if>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;//Inducing flaws is difficult and bad for slaves' obedience.//
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.vaginalSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0)>>
+			//She knows all the skills you can teach//
+		<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vagina == -1) && ($activeSlave.balls == 0)>>
+			//She knows all the skills you can teach a gelded slave//
+		<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vagina == -1)>>
+			//She knows all the skills you can teach a shemale slave//
+		<<elseif ($activeSlave.analSkill >= 100) && ($activeSlave.oralSkill >= 100) && ($activeSlave.whoreSkill > 0) && ($activeSlave.entertainSkill > 0) && ($activeSlave.vaginalAccessory == "chastity belt")>>
+			//She knows all the skills you can teach while she's wearing a chastity belt//
+		<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
+			//She's too disobedient to learn sex skills//
+		<<else>>
+			<<link "Teach her">><<set $personalAttention[_i].trainingRegimen = "learn skills">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<link "Care for her">><<set $personalAttention[_i].trainingRegimen = "look after her">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		Induce a flaw:
+		<<if $activeSlave.behavioralQuirk != "confident" && $activeSlave.behavioralFlaw != "arrogant">>
+			<<link "Arrogance">><<set $personalAttention[_i].trainingRegimen = "induce arrogance">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "cutting" && $activeSlave.behavioralFlaw != "bitchy">>
+			| <<link "Bitchiness">><<set $personalAttention[_i].trainingRegimen = "induce bitchiness">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "funny" && $activeSlave.behavioralFlaw != "odd">>
+			| <<link "Odd behavior">><<set $personalAttention[_i].trainingRegimen = "induce odd behavior">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "adores women" && $activeSlave.behavioralFlaw != "hates men">>
+			| <<link "Hatred of men">><<set $personalAttention[_i].trainingRegimen = "induce hatred of men">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "adores men" && $activeSlave.behavioralFlaw != "hates women">>
+			| <<link "Hatred of women">><<set $personalAttention[_i].trainingRegimen = "induce hatred of women">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "fitness" && $activeSlave.behavioralFlaw != "gluttonous">>
+			| <<link "Gluttony">><<set $personalAttention[_i].trainingRegimen = "induce gluttony">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "insecure" && $activeSlave.behavioralFlaw != "anorexic">>
+			| <<link "Anorexia">><<set $personalAttention[_i].trainingRegimen = "induce anorexia">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "sinful" && $activeSlave.behavioralFlaw != "devout">>
+			| <<link "Religious devotion">><<set $personalAttention[_i].trainingRegimen = "induce religious devotion">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.behavioralQuirk != "advocate" && $activeSlave.behavioralFlaw != "liberated">>
+			| <<link "Liberation">><<set $personalAttention[_i].trainingRegimen = "induce liberation">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "gagfuck queen" && $activeSlave.sexualFlaw != "hates oral">>
+			| <<link "Hatred of oral">><<set $personalAttention[_i].trainingRegimen = "induce hatred of oral">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "confipainal queendent" && $activeSlave.sexualFlaw != "hates anal">>
+			| <<link "Hatred of anal">><<set $personalAttention[_i].trainingRegimen = "induce hatred of anal">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "strugglefuck queen" && $activeSlave.sexualFlaw != "hates penetration">>
+			| <<link "Hatred of penetration">><<set $personalAttention[_i].trainingRegimen = "induce hatred of penetration">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "tease" && $activeSlave.sexualFlaw != "shamefast">>
+			| <<link "Shame">><<set $personalAttention[_i].trainingRegimen = "induce shame">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "romantic" && $activeSlave.sexualFlaw != "idealistic">>
+			| <<link "Sexual idealism">><<set $personalAttention[_i].trainingRegimen = "induce sexual idealism">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "perverted" && $activeSlave.sexualFlaw != "repressed">>
+			| <<link "Sexual repression">><<set $personalAttention[_i].trainingRegimen = "induce sexual repression">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "caring" && $activeSlave.sexualFlaw != "apathetic">>
+			| <<link "Sexual apathy">><<set $personalAttention[_i].trainingRegimen = "induce sexual apathy">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "unflinching" && $activeSlave.sexualFlaw != "crude">>
+			| <<link "Crudity">><<set $personalAttention[_i].trainingRegimen = "induce crudity">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.sexualQuirk != "size queen" && $activeSlave.sexualFlaw != "judgemental">>
+			| <<link "Judgment">><<set $personalAttention[_i].trainingRegimen = "induce judgement">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetishStrength > 95>>
+		<<if $activeSlave.fetish == "cumslut" && $activeSlave.sexualFlaw != "cum addict">>
+			| <<link "Cum addiction">><<set $personalAttention[_i].trainingRegimen = "induce cum addiction">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "buttslut" && $activeSlave.sexualFlaw != "anal addict">>
+			| <<link "Anal addiction">><<set $personalAttention[_i].trainingRegimen = "induce anal addiction">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "humiliation" && $activeSlave.sexualFlaw != "attention whore">>
+			| <<link "Attention whoring">><<set $personalAttention[_i].trainingRegimen = "induce attention whoring">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "boobs" && $activeSlave.sexualFlaw != "breast growth">>
+			| <<link "Breast growth obsession">><<set $personalAttention[_i].trainingRegimen = "induce breast growth obsession">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "dom" && $activeSlave.sexualFlaw != "abusive">>
+			| <<link "Abusiveness">><<set $personalAttention[_i].trainingRegimen = "induce abusiveness">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "sadist" && $activeSlave.sexualFlaw != "malicious">>
+			| <<link "Maliciousness">><<set $personalAttention[_i].trainingRegimen = "induce maliciousness">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "masochist" && $activeSlave.sexualFlaw != "self hatred">>
+			| <<link "Self hatred">><<set $personalAttention[_i].trainingRegimen = "induce self hatred">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "submissive" && $activeSlave.sexualFlaw != "neglectful">>
+			| <<link "Sexual self neglect">><<set $personalAttention[_i].trainingRegimen = "induce sexual self neglect">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<if $activeSlave.fetish == "pregnancy" && $activeSlave.sexualFlaw != "breeder">>
+			| <<link "Breeding obsession">><<set $personalAttention[_i].trainingRegimen = "induce breeding obsession">><<replace `"#training"+_i`>><strong>$personalAttention[_i].trainingRegimen</strong><</replace>><</link>>
+		<</if>>
+		<<else>>
+			| //Paraphilias can only be induced from a strong fetish//
+		<</if>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Inducing flaws is difficult and bad for slaves' obedience.//
 
+		<</capture>> /* $activeSlave, _i */
+	<</for>>
 <</if>> /* CLOSES NO SLAVE SELECTED */
 
-<br><br>__Select a slave to train:__
+<br><br>__Select a slave to train:__ <<if $PC.slaving >= 100>>//Your @@.springgreen;slaving experience@@ allows you to divide your attention between more than one slave each week, with slightly reduced efficiency//<</if>> 
 <<include "Slave Summary">>
 
 <br>
diff --git a/src/uncategorized/policies.tw b/src/uncategorized/policies.tw
index a61283c4946f4ab8c6228dec74c69a626e135a7e..e9b06491aaf1e8268c2a0829d164585f00e91b87 100644
--- a/src/uncategorized/policies.tw
+++ b/src/uncategorized/policies.tw
@@ -1027,11 +1027,13 @@
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will cost <<print cashFormat($policyCost)>> weekly to maintain, and lesson any potential rumors about you while giving a small boost to your reputation//
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $Cash4Babies == 0>>
 	<br>''Free Trade of Slave Babies:'' you will legalize slave children to be sold after birth rather than put into slave orphanages.
 	[[Implement|Policies][$Cash4Babies = 1, $cash -=5000, $rep -= 1000]]
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Can supply easy money, but will harm your reputation//
 <</if>>
+<</if>>
 
 <<if $RegularParties == 0>>
 	<br>''Regular Entertainments:'' you will host regular parties for prominent citizens, an expected social duty of an arcology owner.
diff --git a/src/uncategorized/ptWorkaround.tw b/src/uncategorized/ptWorkaround.tw
index 98c997bc5e81ffde627e47bdcb954ff081d949a4..a8c6c3cfbd41fa71f8e3f8bdb51aca94637fd11a 100644
--- a/src/uncategorized/ptWorkaround.tw
+++ b/src/uncategorized/ptWorkaround.tw
@@ -1,72 +1,78 @@
 :: PT Workaround [nobr]
 
 &nbsp;&nbsp;&nbsp;&nbsp;
-<<if $trainingRegimen == "look after her">>
+<<set _ptwi = $personalAttention.findIndex(function(s) { return s.ID == $activeSlave.ID; })>>
+<<if $personalAttention[_ptwi].trainingRegimen == "look after her">>
 	''You care for''
 <<else>>
 	''You train''
 <</if>>
 ''__@@.pink;$activeSlave.slaveName@@__'' when she isn't otherwise occupied.
 
-<<switch $trainingRegimen>>
-<<case "build her devotion">>
-
-<<set $activeSlave.devotion += 6>>
-<<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "submissive")>>
-	Since $activeSlave.slaveName is a submissive, you @@.hotpink;build her devotion to you@@ by indulging her need to be dominated. Already smiling to herself, she changes into bondage gear that blinds her, forces her arms behind her back, forces her to present her breasts uncomfortably, and forces a painfully large dildo up her <<if $activeSlave.vagina > 0>>vagina<<if $activeSlave.anus > 0>> and anus<</if>><<elseif $activeSlave.anus > 0>>anus<</if>>. Thus attired, she is forced to serve you in whatever petty ways occur to you. She holds your tablet for you on her upthrust ass as you work, holds a thin beverage glass for you in her upturned mouth when you eat, and lies still so you can use her tits as a pillow whenever you recline. She loves it.
-<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "cumslut") && ($PC.dick == 1)>>
-	Since $activeSlave.slaveName has an unusual taste for oral sex and cum, you @@.hotpink;build her devotion to you@@ by indulging her. You allow her to spend her free time following you around. She is permitted to act as your private cum receptacle. If you use another slave, you usually pull out and give her smiling face a facial. When you come inside another slave instead, $activeSlave.slaveName is allowed to get your cum anyway, regardless of whether that requires the other slave to spit it into her mouth or $activeSlave.slaveName to suck it out of the other slave's vagina or rectum. Either way, she rubs her stomach happily after she's swallowed it down.
-	<<set $activeSlave.oralCount += 20, $oralTotal += 20>>
-<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "boobs")>>
-	Since $activeSlave.slaveName has an unusual taste for having her tits fondled, you @@.hotpink;build her devotion to you@@ by indulging her. You keep her near you as a sort of living stress ball. Whenever you have a free hand, whether you're conducting business or buttfucking another slave, you reach over and play with her. She sometimes masturbates while you massage her breasts and pinch her nipples, but often she doesn't even need to.
-	<<set $activeSlave.mammaryCount += 20, $mammaryTotal += 20>>
-<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "pregnancy")>>
-	Since $activeSlave.slaveName has an unusual taste for big pregnant bellies, you @@.hotpink;build her devotion to you@@ by indulging her. You <<if isItemAccessible("a small empathy belly") && $activeSlave.belly < 1500 && $activeSlave.weight < 130>>strap an enormous sympathy belly onto her and <<elseif $activeSlave.belly < 1500>>give strap a pillow around her middle, give her an oversized shirt and<</if>>keep her near you as a sort of living stress ball. Whenever you have a free hand, whether you're conducting business or buttfucking another slave, you reach over and rub her dome of a belly for luck. Occasionally you pay more attention to her, making sure to fondle her rounded middle as you feel up her motherly body. She sometimes masturbates when you aren't groping her, enjoying her gravid figure, but often she doesn't even need to.
-<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "humiliation") && ((canDoVaginal($activeSlave) && $activeSlave.vagina > 0) || (canDoAnal($activeSlave) && $activeSlave.anus > 0))>>
-	Since $activeSlave.slaveName has an unusual sexuality, you @@.hotpink;build her devotion to you@@ by indulging her perversions. Since she's an absolute slut for humiliation, you let her whore around inside the special camera room whenever possible. When you're going out and feel like putting on a show, you bring her on a leash and fuck her in public. She comes harder than ever when you push her naked body up against the wall of a crowded public arcology elevator and molest her.
-	<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
-	<<BothVCheck 4 2>>
-<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "humiliation")>>
-	Since $activeSlave.slaveName has an unusual sexuality, you @@.hotpink;build her devotion to you@@ by indulging her perversions. Since she's an absolute slut for humiliation, you let her whore around inside the special camera room whenever possible. When you're going out and feel like putting on a show, you bring her on a leash and have her service you in public. She comes harder than ever when you push her down on her knees in a crowded public arcology elevator and facefuck her while she masturbates fervently.
-	<<set $activeSlave.oralCount += 8, $oralTotal += 8>>
-<<elseif ($activeSlave.anus == 3) && ($activeSlave.vagina == 3)>>
-	$activeSlave.slaveName is a stretched-out, well-traveled slut. Some like their holes loose, but most prefer cunts and butts that don't make sloppy noises when fucked. So, you spend some quality care time with her, carefully massaging her abused holes with oils and lotions. She comes, of course, but her pussy and asshole do benefit from the treatment. You allow her to service you with her mouth to avoid spoiling your work right away. Afterward, she <<if ($activeSlave.amp != 1)>>@@.hotpink;hugs you and gives you a kiss@@<<else>>@@.hotpink;gives you a kiss and tries to hug you,@@ but without arms, all she manages is a sort of nuzzle<</if>>.
-	<<set $activeSlave.vagina--, $activeSlave.anus--,
-	$activeSlave.oralCount += 5, $oralTotal += 5>>
-<<elseif $activeSlave.vagina == 0>>
-	$activeSlave.slaveName's accustomed to the slave life, so the experience is almost novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her virginity. You gently stimulate her <<if $activeSlave.dick>>dick<<elseif $activeSlave.clit>>clit<<else>>nipples<</if>> while she sucks you off, bringing her to a moaning climax as you cum in her mouth.
-	<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
-<<elseif ($activeSlave.anus == 0) && ($activeSlave.vagina < 0)>>
-	You haven't decided to take $activeSlave.slaveName's anus yet, so you let her suck you off and play with herself while she does. You stroke her hair, play with her tits, and generally pamper her while she orally services you. She's accustomed to the slave life, so the experience of affection is novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her virgin hole.
-	<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
-<<elseif ($activeSlave.anus == 0) && ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
-	You fuck $activeSlave.slaveName, of course, but you do it slowly and lovingly, and keep well clear of her still-virgin asshole in the process. She's accustomed to the slave life, so the experience is almost novel for her and she is affectingly @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged before she takes cock. Slaves are usually used without regard to their orgasm, so she's also surprised and gratified when you make meticulous efforts to delay your own orgasm so it can coincide with her own. She's a puddle on the sheets under your hands.
-	<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
-	<<VaginalVCheck 4>>
-<<elseif $activeSlave.anus == 0>>
-	$activeSlave.slaveName's accustomed to the slave life, so the experience is almost novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her anal virginity. You gently stimulate her <<if $activeSlave.dick>>dick<<elseif $activeSlave.clit>>clit<<else>>nipples<</if>> while she sucks you off, bringing her to a moaning climax as you cum in her mouth.
-	<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
-<<else>>
-	You fuck $activeSlave.slaveName, of course, but you do it slowly and lovingly. She's accustomed to the slave life, so the experience is almost novel for her and she is affectingly @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged before she takes cock. Slaves are usually used without regard to their orgasm, so she's also surprised and gratified when you make meticulous efforts to delay your own orgasm so it can coincide with her own. She's a puddle on the sheets under your hands.
-	<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
-    <<if $activeSlave.vagina == 0>>
-        <<VaginalVCheck 4>>
-    <<else>>
-        <<BothVCheck 4 2>>
-    <</if>>
-<</if>>
-<<if ($PC.slaving >= 100)>>
-	Your @@.springgreen;slave training experience@@ allows you to @@.hotpink;bend her to your will@@ more quickly without provoking resistance.
-	<<set $activeSlave.devotion += 1>>
-<</if>>
-<<if ($activeSlave.trust > 10)>>
-	Spending time with you @@.mediumaquamarine;builds her trust in <<WrittenMaster>>.@@
-	<<set $activeSlave.trust += 4>>
-<<else>>
-	Spending time with you @@.mediumaquamarine;reduces her fear towards you.@@
-	<<set $activeSlave.trust += 6>>
+<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
+<<if ($PC.slaving >= 100) && $personalAttention.length == 1>> /* negate bonus when splitting focus among slaves */
+	<<set $activeSlave.training += 20>>
 <</if>>
 
+<<switch $personalAttention[_ptwi].trainingRegimen>>
+<<case "build her devotion">>
+	<<set $activeSlave.devotion += 6>>
+	<<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "submissive")>>
+		Since $activeSlave.slaveName is a submissive, you @@.hotpink;build her devotion to you@@ by indulging her need to be dominated. Already smiling to herself, she changes into bondage gear that blinds her, forces her arms behind her back, forces her to present her breasts uncomfortably, and forces a painfully large dildo up her <<if $activeSlave.vagina > 0>>vagina<<if $activeSlave.anus > 0>> and anus<</if>><<elseif $activeSlave.anus > 0>>anus<</if>>. Thus attired, she is forced to serve you in whatever petty ways occur to you. She holds your tablet for you on her upthrust ass as you work, holds a thin beverage glass for you in her upturned mouth when you eat, and lies still so you can use her tits as a pillow whenever you recline. She loves it.
+	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "cumslut") && ($PC.dick == 1)>>
+		Since $activeSlave.slaveName has an unusual taste for oral sex and cum, you @@.hotpink;build her devotion to you@@ by indulging her. You allow her to spend her free time following you around. She is permitted to act as your private cum receptacle. If you use another slave, you usually pull out and give her smiling face a facial. When you come inside another slave instead, $activeSlave.slaveName is allowed to get your cum anyway, regardless of whether that requires the other slave to spit it into her mouth or $activeSlave.slaveName to suck it out of the other slave's vagina or rectum. Either way, she rubs her stomach happily after she's swallowed it down.
+		<<set $activeSlave.oralCount += 20, $oralTotal += 20>>
+	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "boobs")>>
+		Since $activeSlave.slaveName has an unusual taste for having her tits fondled, you @@.hotpink;build her devotion to you@@ by indulging her. You keep her near you as a sort of living stress ball. Whenever you have a free hand, whether you're conducting business or buttfucking another slave, you reach over and play with her. She sometimes masturbates while you massage her breasts and pinch her nipples, but often she doesn't even need to.
+		<<set $activeSlave.mammaryCount += 20, $mammaryTotal += 20>>
+	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "pregnancy")>>
+		Since $activeSlave.slaveName has an unusual taste for big pregnant bellies, you @@.hotpink;build her devotion to you@@ by indulging her. You <<if isItemAccessible("a small empathy belly") && $activeSlave.belly < 1500 && $activeSlave.weight < 130>>strap an enormous sympathy belly onto her and <<elseif $activeSlave.belly < 1500>>give strap a pillow around her middle, give her an oversized shirt and<</if>>keep her near you as a sort of living stress ball. Whenever you have a free hand, whether you're conducting business or buttfucking another slave, you reach over and rub her dome of a belly for luck. Occasionally you pay more attention to her, making sure to fondle her rounded middle as you feel up her motherly body. She sometimes masturbates when you aren't groping her, enjoying her gravid figure, but often she doesn't even need to.
+	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "humiliation") && ((canDoVaginal($activeSlave) && $activeSlave.vagina > 0) || (canDoAnal($activeSlave) && $activeSlave.anus > 0))>>
+		Since $activeSlave.slaveName has an unusual sexuality, you @@.hotpink;build her devotion to you@@ by indulging her perversions. Since she's an absolute slut for humiliation, you let her whore around inside the special camera room whenever possible. When you're going out and feel like putting on a show, you bring her on a leash and fuck her in public. She comes harder than ever when you push her naked body up against the wall of a crowded public arcology elevator and molest her.
+		<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
+		<<BothVCheck 4 2>>
+	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "humiliation")>>
+		Since $activeSlave.slaveName has an unusual sexuality, you @@.hotpink;build her devotion to you@@ by indulging her perversions. Since she's an absolute slut for humiliation, you let her whore around inside the special camera room whenever possible. When you're going out and feel like putting on a show, you bring her on a leash and have her service you in public. She comes harder than ever when you push her down on her knees in a crowded public arcology elevator and facefuck her while she masturbates fervently.
+		<<set $activeSlave.oralCount += 8, $oralTotal += 8>>
+	<<elseif ($activeSlave.anus == 3) && ($activeSlave.vagina == 3)>>
+		$activeSlave.slaveName is a stretched-out, well-traveled slut. Some like their holes loose, but most prefer cunts and butts that don't make sloppy noises when fucked. So, you spend some quality care time with her, carefully massaging her abused holes with oils and lotions. She comes, of course, but her pussy and asshole do benefit from the treatment. You allow her to service you with her mouth to avoid spoiling your work right away. Afterward, she <<if ($activeSlave.amp != 1)>>@@.hotpink;hugs you and gives you a kiss@@<<else>>@@.hotpink;gives you a kiss and tries to hug you,@@ but without arms, all she manages is a sort of nuzzle<</if>>.
+		<<set $activeSlave.vagina--, $activeSlave.anus--,
+		$activeSlave.oralCount += 5, $oralTotal += 5>>
+	<<elseif $activeSlave.vagina == 0>>
+		$activeSlave.slaveName's accustomed to the slave life, so the experience is almost novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her virginity. You gently stimulate her <<if $activeSlave.dick>>dick<<elseif $activeSlave.clit>>clit<<else>>nipples<</if>> while she sucks you off, bringing her to a moaning climax as you cum in her mouth.
+		<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
+	<<elseif ($activeSlave.anus == 0) && ($activeSlave.vagina < 0)>>
+		You haven't decided to take $activeSlave.slaveName's anus yet, so you let her suck you off and play with herself while she does. You stroke her hair, play with her tits, and generally pamper her while she orally services you. She's accustomed to the slave life, so the experience of affection is novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her virgin hole.
+		<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
+	<<elseif ($activeSlave.anus == 0) && ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
+		You fuck $activeSlave.slaveName, of course, but you do it slowly and lovingly, and keep well clear of her still-virgin asshole in the process. She's accustomed to the slave life, so the experience is almost novel for her and she is affectingly @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged before she takes cock. Slaves are usually used without regard to their orgasm, so she's also surprised and gratified when you make meticulous efforts to delay your own orgasm so it can coincide with her own. She's a puddle on the sheets under your hands.
+		<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
+		<<VaginalVCheck 4>>
+	<<elseif $activeSlave.anus == 0>>
+		$activeSlave.slaveName's accustomed to the slave life, so the experience is almost novel for her and she is @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged. She's almost disappointed when it becomes clear that you don't mean to take her anal virginity. You gently stimulate her <<if $activeSlave.dick>>dick<<elseif $activeSlave.clit>>clit<<else>>nipples<</if>> while she sucks you off, bringing her to a moaning climax as you cum in her mouth.
+		<<set $activeSlave.oralCount += 5, $oralTotal += 5>>
+	<<else>>
+		You fuck $activeSlave.slaveName, of course, but you do it slowly and lovingly. She's accustomed to the slave life, so the experience is almost novel for her and she is affectingly @@.hotpink;touched by the affection@@. She isn't used to being kissed, teased and massaged before she takes cock. Slaves are usually used without regard to their orgasm, so she's also surprised and gratified when you make meticulous efforts to delay your own orgasm so it can coincide with her own. She's a puddle on the sheets under your hands.
+		<<set $activeSlave.oralCount += 4, $oralTotal += 4>>
+		<<if $activeSlave.vagina == 0>>
+			<<VaginalVCheck 4>>
+		<<else>>
+			<<BothVCheck 4 2>>
+		<</if>>
+	<</if>>
+	<<if ($PC.slaving >= 100)>>
+		Your @@.springgreen;slave training experience@@ allows you to @@.hotpink;bend her to your will@@ more quickly without provoking resistance.
+		<<set $activeSlave.devotion += 1>>
+	<</if>>
+	<<if ($activeSlave.trust > 10)>>
+		Spending time with you @@.mediumaquamarine;builds her trust in <<WrittenMaster>>.@@
+		<<set $activeSlave.trust += 4>>
+	<<else>>
+		Spending time with you @@.mediumaquamarine;reduces her fear towards you.@@
+		<<set $activeSlave.trust += 6>>
+	<</if>>
+	<<set $activeSlave.training = 0>>
+
 <<case "look after her">>
 	<<if $activeSlave.relationship == -3 && $activeSlave.fetish == "mindbroken">>
 		Since $activeSlave.slaveName is your wife and not all there, you keep her under a watchful eye to make sure no harm comes to the broken girl. She almost seems in better spirits under your care, not that it will matter in an hour or two.
@@ -91,6 +97,7 @@
 			Her loose pussy does not recover this week.
 		<</if>>
 	<</if>>
+	<<set $activeSlave.training = 0>>
 
 <<case "soften her behavioral flaw">>
 	<<if ($activeSlave.behavioralFlaw == "none")>>
@@ -99,14 +106,14 @@
 		<<if ($activeSlave.sexualFlaw == "none")>>
 			<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				breaking her will.
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 			<<else>>
 				fostering devotion.
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 			<</if>>
 		<<else>>
 			softening her sexual flaw.
-			<<set $trainingRegimen = "soften her sexual flaw">>
+			<<set $personalAttention[_ptwi].trainingRegimen = "soften her sexual flaw">>
 		<</if>>
 		@@
 	<<else>>
@@ -139,10 +146,6 @@
 		<<elseif ($activeSlave.behavioralFlaw == "devout")>>
 			$activeSlave.slaveName remains devoted to an old world faith that serves her as a reservoir of mental resilience. Like all such beliefs, hers has certain sexual elements; you amuse yourself by forcing her to break them, and rewarding her generously when she does.
 		<</if>>
-		<<set $activeSlave.training += 100-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-		<<if ($PC.slaving >= 100)>>
-			<<set $activeSlave.training += 20>>
-		<</if>>
 		<<if $activeSlave.training < 100>>
 			You make progress, but she's the same at the end of the week.
 		<<else>>
@@ -172,14 +175,14 @@
 			<<if ($activeSlave.sexualFlaw == "none")>>
 				<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				breaking her will.
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 				<<else>>
 				fostering devotion.
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 				<</if>>
 			<<else>>
 				softening her sexual flaw.
-				<<set $trainingRegimen = "soften her sexual flaw">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "soften her sexual flaw">>
 			<</if>>
 			@@
 		<</if>>
@@ -192,14 +195,14 @@
 		<<if ($activeSlave.behavioralFlaw == "none")>>
 			<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				breaking her will.
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 			<<else>>
 				fostering devotion.
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 			<</if>>
 		<<else>>
 			softening her behavioral flaw.
-			<<set $trainingRegimen = "soften her behavioral flaw">>
+			<<set $personalAttention[_ptwi].trainingRegimen = "soften her behavioral flaw">>
 		<</if>>
 		@@
 	<<else>>
@@ -214,7 +217,7 @@
 				<<AnalVCheck 10>>
 			<<else>>
 				The inability to actually penetrate her ass hinders your efforts, however.
-				<<set $activeSlave.training -= 20>>
+				<<set $activeSlave.training -= 20>> /* more difficult training */
 			<</if>>
 		<<case "hates penetration">>
 			<<if ($activeSlave.vagina > -1) && canDoVaginal($activeSlave)>>
@@ -256,10 +259,6 @@
 		<<default>>
 			has something. You should probably report this as nobody knows what is currently happening. Her flaw was supposed to be $activeSlave.sexualFlaw.
 		<</switch>>
-		<<set $activeSlave.training += 100-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-		<<if ($PC.slaving >= 100)>>
-			<<set $activeSlave.training += 20>>
-		<</if>>
 		<<if $activeSlave.training < 100>>
 			You make progress, but she's the same at the end of the week.
 		<<else>>
@@ -289,14 +288,14 @@
 			<<if ($activeSlave.behavioralFlaw == "none")>>
 				<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				breaking her will.
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 				<<else>>
 				fostering devotion.
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 				<</if>>
 			<<else>>
 				softening her behavioral flaw.
-				<<set $trainingRegimen = "soften her behavioral flaw">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "soften her behavioral flaw">>
 			<</if>>
 			@@
 		<</if>>
@@ -363,22 +362,22 @@
 	<<else>>
 		She's learned everything you can teach, and is now a masterful
 		<<if ($activeSlave.vaginalSkill >= 100)>>
-			slut; @@.yellow;her assignment has defaulted to fostering devotion.@@
-			<<set $trainingRegimen = "build her devotion">>
+			slut;
 		<<elseif ($activeSlave.vagina == 0)>>
-			virgin slut; @@.yellow;her assignment has defaulted to fostering devotion.@@
-			<<set $trainingRegimen = "build her devotion">>
+			virgin slut;
 		<<elseif ($activeSlave.vagina == -1) && ($activeSlave.balls == 0)>>
-			gelded bitch; @@.yellow;her assignment has defaulted to fostering devotion.@@
-			<<set $trainingRegimen = "build her devotion">>
+			gelded bitch;
 		<<elseif ($activeSlave.vagina == -1)>>
-			shemale slut; @@.yellow;her assignment has defaulted to fostering devotion.@@
-			<<set $trainingRegimen = "build her devotion">>
+			shemale slut;
 		<<elseif ($activeSlave.vaginalAccessory == "chastity belt") || ($activeSlave.vaginalAccessory == "combined chastity")>>
-			slut, notwithstanding her chastity belt; @@.yellow;her assignment has defaulted to fostering devotion.@@
-			<<set $trainingRegimen = "build her devotion">>
+			slut, notwithstanding her chastity belt;
+		<<else>>
+			slave;
 		<</if>>
+		 @@.yellow;her assignment has defaulted to fostering devotion.@@
+		<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 	<</if>>
+	<<set $activeSlave.training = 0>>
 
 <<case "break her will">>
 	<<set $activeSlave.devotion -= 4>>
@@ -411,17 +410,18 @@
 	<</if>>
 	<<if ($activeSlave.trust < -20) && ($activeSlave.fetishKnown == 0)>>
 		She is now fully broken; @@.yellow;her training assignment has defaulted to exploring her sexuality.@@
-		<<set $trainingRegimen = "explore her sexuality">>
+		<<set $personalAttention[_ptwi].trainingRegimen = "explore her sexuality">>
 	<<elseif ($activeSlave.trust < -20)>>
 		She is now fully broken; @@.yellow;her training assignment has defaulted to fostering devotion.@@
-		<<set $trainingRegimen = "build her devotion">>
+		<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 	<<elseif ($activeSlave.devotion > 20) && ($activeSlave.fetishKnown == 0)>>
 		She is now obedient and attentive; @@.yellow;her training assignment has defaulted to exploring her sexuality.@@
-		<<set $trainingRegimen = "explore her sexuality">>
+		<<set $personalAttention[_ptwi].trainingRegimen = "explore her sexuality">>
 	<<elseif ($activeSlave.devotion > 20)>>
 		She is now obedient and attentive; @@.yellow;her training assignment has defaulted to fostering devotion.@@
-		<<set $trainingRegimen = "build her devotion">>
+		<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 	<</if>>
+	<<set $activeSlave.training = 0>>
 
 <<case "harshly break her will">>
 	<<set $activeSlave.devotion -= 5, $activeSlave.trust -= 10, $activeSlave.health-->>
@@ -486,8 +486,9 @@
 	<</if>>
 	<<if ($activeSlave.devotion > 20)>>
 		She is now fully broken; @@.yellow;her training assignment has defaulted to fostering devotion.@@
-		<<set $trainingRegimen = "build her devotion">>
+		<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 	<</if>>
+	<<set $activeSlave.training = 0>>
 
 <<case "fix her behavioral flaw">>
 	<<if ($activeSlave.behavioralFlaw == "arrogant")>>
@@ -523,10 +524,7 @@
 	<<elseif ($activeSlave.behavioralFlaw == "devout")>>
 		$activeSlave.slaveName remains devoted to an old world faith that serves her as a reservoir of mental resilience. You carefully select pressure points to break her of this by forcing her to violate her faith's purity codes, constantly. She is forced to eat, dress, and fuck in ways that convince her that she must either condemn herself as an irredeemable sinner, or abandon her beliefs.
 	<</if>>
-	<<set $activeSlave.training += 120-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if $PC.slaving >= 100>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
+	<<set $activeSlave.training += 40>> /* fixing is easier than softening */
 	<<if $activeSlave.training < 100>>
 		You make progress, but she's the same at the end of the week.
 	<<else>>
@@ -554,14 +552,14 @@
 		<<if ($activeSlave.sexualFlaw == "none")>>
 			<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				@@.yellow;her training assignment has defaulted to breaking her will.@@
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 			<<else>>
 				@@.yellow;her training assignment has defaulted to fostering devotion.@@
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 			<</if>>
 		<<else>>
 			@@.yellow;her training assignment has defaulted to addressing her sexual flaw.@@
-			<<set $trainingRegimen = "fix her sexual flaw">>
+			<<set $personalAttention[_ptwi].trainingRegimen = "fix her sexual flaw">>
 		<</if>>
 	<</if>>
 
@@ -576,7 +574,7 @@
 			<<AnalVCheck 10>>
 		<<else>>
 			$activeSlave.slaveName does not like it up the butt. She views her rectum as a dirty place that should not be involved in sex. Naturally, this is an unacceptable view for a Free Cities sex slave to hold. The best way to address this foolishness is by long practice, so you take every opportunity to toy with her rear. The inability to actually penetrate her ass hinders your efforts, however.
-			<<set $activeSlave.training -= 20>>
+			<<set $activeSlave.training -= 20>> /* more difficult training */
 		<</if>>
 	<<case "hates penetration">>
 		<<if ($activeSlave.vagina > -1)>>
@@ -657,10 +655,7 @@
 			<<AnalVCheck 10>>
 		<</if>>
 	<</switch>>
-	<<set $activeSlave.training += 120-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
+	<<set $activeSlave.training += 40>> /* fixing is easier than softening */
 	<<if $activeSlave.training < 100>>
 		You make progress, but she's the same at the end of the week.
 	<<else>>
@@ -689,14 +684,14 @@
 		<<if ($activeSlave.behavioralFlaw == "none")>>
 			<<if ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 				breaking her will.
-				<<set $trainingRegimen = "break her will">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "break her will">>
 			<<else>>
 				fostering devotion.
-				<<set $trainingRegimen = "build her devotion">>
+				<<set $personalAttention[_ptwi].trainingRegimen = "build her devotion">>
 			<</if>>
 		<<else>>
 			addressing her behavioral flaw.
-			<<set $trainingRegimen = "fix her behavioral flaw">>
+			<<set $personalAttention[_ptwi].trainingRegimen = "fix her behavioral flaw">>
 		<</if>>
 		@@
 	<</if>>
@@ -841,10 +836,6 @@
 <<case "induce arrogance">>
 	Since you've decided to incite her to arrogance, you praise her effusively, and give orders that others are to do so as well. Other slaves are punished for things she's allowed to get away with.
 	<<InduceFlawLenityEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She isn't seriously affected; you'll have to be more subtle next week.
 	<<else>>
@@ -856,10 +847,6 @@
 <<case "induce bitchiness">>
 	Since you've decided to induce her to bitchiness, you keep her in your office and induce her to criticize other slaves, rewarding her when she's especially catty.
 	<<InduceFlawLenityEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She goes along, but remains cautious and will need more practice.
 	<<else>>
@@ -871,10 +858,6 @@
 	Since you've decided to abuse her into odd behavior, you target her for a campaign of surprise sex. You constantly ambush her, shove her onto the ground, and fuck her. Sometimes she wakes up from bad dreams to find you penetrating her.
 	<<InduceFlawAbuseEffects>>
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to tolerate the abuse.
 	<<else>>
@@ -886,10 +869,6 @@
 	In order to make her hate men, you sometimes simply <<if $PC.dick == 1>>stick your dick in her without asking<<else>>stuff a strap-on inside her without asking<</if>>, and sometimes force shockingly juvenile pranks on her. She is regularly smacked in the face with floppy dildos.
 	<<InduceFlawAbuseEffects>>
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She focuses more on you than on the masculine aspects of this. You'll need to be more subtle next week.
 	<<else>>
@@ -900,11 +879,6 @@
 <<case "induce hatred of women">>
 	In order to make her hate women, you keep her in your office when she's not otherwise occupied, and <<if $PC.vagina == 0>>make her eat other slaves out<<else>>sit on her face<</if>> until she's thoroughly sick of pussy.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<set $activeSlave.oralCount += 10, $oralTotal += 10>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She focuses more on you than on the feminine aspects of this. You'll need to be more subtle next week.
 	<<else>>
@@ -914,10 +888,7 @@
 	<</if>>
 <<case "induce gluttony">>
 	Inducing gluttony is harder than inducing anorexia; you force her to orgasm when she's eating, and praise her effusively when she gains weight. You also provide her with ample rations for stress eating.
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
+	<<set $activeSlave.training -= 20>> /* more difficult training */
 	<<if $activeSlave.training < 100>>
 		She eats when ordered, but isn't deeply affected. She'll need more practice being a pig.
 	<<else>>
@@ -928,10 +899,6 @@
 <<case "induce anorexia">>
 	You criticize her cruelly whenever she eats, and praise thinner slaves to her face at every opportunity.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She continues consuming her rations when ordered, and will need further training.
 	<<else>>
@@ -942,10 +909,6 @@
 <<case "induce religious devotion">>
 	You direct a campaign of abuse and threats at her, and surreptitiously ensure that a little religious text from her home country finds its way into a hiding place in her living area.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She keeps her head down and shows no sign of religious introspection, at least this week.
 	<<else>>
@@ -956,12 +919,8 @@
 <<case "induce liberation">>
 	You direct a campaign of abuse and threats at her, making sure to threaten her with the absolute worst of slavery in your arcology. You also arrange for her to witness other citizen's slaves in situations that aren't much fun.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
-		She keeps her head down and shows no sign of religious introspection, at least this week.
+		She does her best to endure the abuse, unknowingly condemning herself to more.
 	<<else>>
 		A deep @@.red;anger about slavery@@ builds within her.
 		<<set $activeSlave.behavioralFlaw = "liberated">>
@@ -971,10 +930,6 @@
 	Since you've decided to force her to dislike oral sex, you're forced to use a complicated and refined slave breaking technique: constantly raping her face.
 	<<InduceFlawAbuseEffects>>
 	<<set $activeSlave.oralTotal += 10, $oralTotal += 10>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to comply with the oral abuse, unknowingly condemning herself to more.
 	<<else>>
@@ -987,10 +942,6 @@
 	<<if !canDoAnal($activeSlave)>>Every time you catch her with her chastity off, you're there to penetrate her rectum<</if>>.
 	<<InduceFlawAbuseEffects>>
 	<<AnalVCheck 10>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to comply with your abuse of her butthole, unknowingly condemning herself to more assrape.
 	<<else>>
@@ -1002,10 +953,6 @@
 	Since you've decided to force her to dislike penetration, you're forced to use a complicated and refined slave breaking technique: constantly raping her.
 	<<InduceFlawAbuseEffects>>
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to comply with your abuse, unknowingly condemning herself to more of it.
 	<<else>>
@@ -1016,10 +963,6 @@
 <<case "induce shame">>
 	Since you've decided to force shame on her, you keep her in your office whenever she's not otherwise occupied, and heap derision on her at every opportunity, even inviting visitors to join you in chats about how unattractive and worthless she is.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to keep her chin up, unknowingly condemning herself to more of this abuse.
 	<<else>>
@@ -1030,10 +973,6 @@
 <<case "induce sexual idealism">>
 	Since you've decided to induce her to sexual idealism, you keep her in your office, and when the two of you are all alone, gossip with her about other slaves and even citizens. You do your best to encourage her to believe absurdities.
 	<<InduceFlawLenityEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She doesn't know what to make of this; you'll have to keep at it.
 	<<else>>
@@ -1044,10 +983,6 @@
 <<case "induce sexual repression">>
 	Since you've decided to force sexual repression on her, you keep her in your office whenever she's not otherwise occupied. You use the monitoring systems to reveal her sexual arousal whenever it appears, and castigate and punish her for it.
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to keep her chin up, unknowingly condemning herself to more of this abuse.
 	<<else>>
@@ -1059,10 +994,6 @@
 	Since you've decided to force sexual apathy on her, you keep her in your office whenever she's not otherwise occupied. You use her regularly, and punish her whenever she shows any sign of enjoyment.
 	<<InduceFlawAbuseEffects>>
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She continues to experience arousal when fucked, and will need more of this treatment.
 	<<else>>
@@ -1074,10 +1005,6 @@
 	Since you've decided to force sexual crudeness on her, you keep her in your office whenever she's not otherwise occupied, and degrade her cruelly. You relax the normal cleanliness rules, and require her to leave her used holes as they are until she's too disgusting to fuck.
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
 	<<InduceFlawAbuseEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She does her best to tolerate the unclean feelings, condemning herself to more of this.
 	<<else>>
@@ -1088,10 +1015,6 @@
 <<case "induce judgement">>
 	Since you've decided to make her sexually judgemental, you keep her in your office and fuck her, <<if $PC.dick == 1>>praising her whenever she takes your big dick well<<else>>using a huge strap-on on her and praising her when she takes it like a good girl<</if>>. You also judge others' endowments in her presence.
 	<<InduceFlawLenityEffects>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She writes this off as bravado, and will need more training.
 	<<else>>
@@ -1102,10 +1025,6 @@
 <<case "induce cum addiction">>
 	The cumslut is quite pleased when you order her to stay in your office whenever she can for use as one of your personal oral toys. You carefully limit her orgasms to when <<if $PC.dick == 1>>you're blowing your load down her throat<<else>>she's swallowing your pussyjuice<</if>>, and make her oral adventures predictably regular.
 	<<set $activeSlave.oralCount += 10, $oralTotal += 10>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys giving you lots of oral, but will need more training to develop psychological addiction to it.
 	<<else>>
@@ -1116,10 +1035,6 @@
 <<case "induce anal addiction">>
 	The buttslut is quite pleased when you order her to stay in your office<<if !canDoAnal($activeSlave)and remove her chastity<</if>> whenever she can for use as one of your personal anal toys. You make her anal orgasms predictably regular, doing your best to inculcate reliance on them.
 	<<AnalVCheck 10>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys all the anal attention, but will need more training to develop psychological addiction to buttsex.
 	<<else>>
@@ -1130,10 +1045,6 @@
 <<case "induce attention whoring">>
 	The humiliation slut is quite pleased when you order her to stay in your office whenever she can, and fucking her whenever other slaves are present. You do your best to focus her attention on how the others react to the spectacle.
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys all the humiliation, but will need more training to become a true attention whore.
 	<<else>>
@@ -1143,10 +1054,6 @@
 	<</if>>
 <<case "induce breast growth obsession">>
 	You inspect her breasts multiple times a day, and praise her effusively when they grow at all. You treat it as though it were something she could control personally.
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys your attention to her favorite part of herself, but doesn't truly internalize your focus on their growth.
 	<<else>>
@@ -1157,10 +1064,6 @@
 <<case "induce abusiveness">>
 	The dom is gratified when you order her to stay in your office whenever she can to fuck any slave you feel like throwing her way. You do your best to limit her menu items to reluctant or even rebellious slaves, and praise her when she forces herself on them.
 	<<set $activeSlave.penetrativeCount += 20, $penetrativeTotal += 20>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She has fun, but she continues to enjoy getting off more than getting to use bitches. She'll need more practice.
 	<<else>>
@@ -1171,10 +1074,6 @@
 <<case "induce maliciousness">>
 	The sadist is gratified when you order her to stay in your office whenever she can to have her way with any slave you feel like throwing her way. You do your best to limit her menu items to rebellious slaves, and praise her when her sadism makes her an effective punishment tool.
 	<<set $activeSlave.penetrativeCount += 20, $penetrativeTotal += 20>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys herself, but still betrays occasional concern when slaves are really broken by what she does to them. She'll need more practice.
 	<<else>>
@@ -1185,10 +1084,6 @@
 <<case "induce self hatred">>
 	You order the masochist to stay in your office whenever she's not working or resting. You fuck her cruelly, going beyond the pain she enjoys into harsh degradation. And every time you use her, you make sure to tell her how useless she is.
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She gets off on the pain, but her sense of self isn't seriously affected this week.
 	<<else>>
@@ -1199,10 +1094,6 @@
 <<case "induce sexual self neglect">>
 	You order the sub to stay in your office whenever she's not working or resting, and use her body for your pleasure. The instant you climax, you go back to your work or to another slave, treating her like a piece of used tissue.
 	<<if canDoVaginal($activeSlave)>><<VaginalVCheck 10>><<elseif canDoAnal($activeSlave)>><<AnalVCheck 10>><<else>><<set $activeSlave.oralCount += 10, $oralTotal += 10>><</if>>
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She accepts her utterly submissive role, but her sense of self isn't seriously affected this week.
 	<<else>>
@@ -1213,10 +1104,6 @@
 <<case "induce breeding obsession">>
 	You order the pregnant slut to stay in your office whenever she's not working or resting.
 	<<if $activeSlave.pregKnown == 0>>Since she's not pregnant, you keep her rigged up with an enormous sympathy belly when she's there.<</if>> Rather than fucking her, you praise her pregnancy effusively, and only allow her to get off when you're doing so.
-	<<set $activeSlave.training += 80-($activeSlave.intelligence*10)+(($activeSlave.devotion+$activeSlave.trust)/10)>>
-	<<if ($PC.slaving >= 100)>>
-		<<set $activeSlave.training += 20>>
-	<</if>>
 	<<if $activeSlave.training < 100>>
 		She enjoys herself, but mostly because of the pleasure. She'll need more training.
 	<<else>>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index f0c8568ea0073115ecba313699ade780717c6d0c..2ac51dc1084056d7f49a42959354b97d80a810f5 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -496,16 +496,22 @@
 <<set $recruit.push("desperate university milf")>>
 <<set $recruit.push("female debtor")>>
 <<set $recruit.push("desperate milf")>>
-<<if $arcologies[0].FSRestart == "unset">>
-	<<set $recruit.push("desperate preg")>>
-<</if>>
-<<if random(1,1000) < 5>>
-	<<set $recruit.push("wandering homeless")>>
-<</if>>
-<<if $PC.medicine >= 50>>
-	<<set $recruit.push("desperate birth")>>
+<<if $seePreg != 0>>
+	<<if $arcologies[0].FSRestart == "unset">>
+		<<set $recruit.push("desperate preg")>>
+	<</if>>
+	<<if random(1,1000) < 5>>
+		<<set $recruit.push("wandering homeless")>>
+	<</if>>
+	<<if $PC.medicine >= 50>>
+		<<set $recruit.push("desperate birth")>>
+	<</if>>
+	<<set $recruit.push("blind homeless")>>
+	<<set $recruit.push("farm cow")>>
+	<<if ($mercenaries >= 5)>>
+		<<set $recruit.push("female runaway")>>
+	<</if>>
 <</if>>
-<<set $recruit.push("blind homeless")>>
 <<set $recruit.push("female SD")>>
 <<set $recruit.push("female SD 2")>>
 <<set $recruit.push("female SE")>>
@@ -515,13 +521,9 @@
 <<set $recruit.push("racer winner")>>
 <<set $recruit.push("repo housekeeper")>>
 <<set $recruit.push("repo nanny")>>
-<<set $recruit.push("farm cow")>>
 <<set $recruit.push("farm virgin cow")>>
 <<set $recruit.push("orphan rebellious female")>>
 <<set $recruit.push("captured teen")>>
-<<if ($mercenaries >= 5)>>
-	<<set $recruit.push("female runaway")>>
-<</if>>
 <<if ($cash > 20000)>>
 	<<set $recruit.push("school sale")>>
 <</if>>
@@ -533,19 +535,22 @@
 <</if>>
 <<if $arcologyUpgrade.drones == 1>>
 	<<set $events.push("RE malefactor")>>
-	<<set $malefactor = ["liberator", "whore", "businesswoman", "addict", "anchorBaby"]>>
+	<<set $malefactor = ["liberator", "whore", "businesswoman", "addict"]>>
+	<<if $seePreg != 0>>
+		<<set $malefactor.push("anchorBaby")>>
+	<</if>>
 	<<if $seeDicks != 0>>
-	<<set $malefactor.push("rapist")>>
+		<<set $malefactor.push("rapist")>>
 	<</if>>
 	<<if $minimumSlaveAge <= 12>>
-	<<set $malefactor.push("orphanloli")>>
+		<<set $malefactor.push("orphanloli")>>
 	<</if>>
 	<<if $arcologies[0].FSPaternalist < 50>>
-	<<set $malefactor.push("escapee")>>
+		<<set $malefactor.push("escapee")>>
 	<</if>>
 	<<set $malefactor = $malefactor.random()>>
 	<<if ($rep/150) > random(1,100)>>
-	<<set $events.push("RE malefactor")>>
+		<<set $events.push("RE malefactor")>>
 	<</if>>
 <</if>>
 
@@ -564,7 +569,9 @@
 <<set $recruit.push("orphan femboy")>>
 <<if ($mercenaries >= 5)>>
 	<<set $recruit.push("DG runaway")>>
-	<<set $recruit.push("herm runaway")>>
+	<<if $seePreg != 0>>
+		<<set $recruit.push("herm runaway")>>
+	<</if>>
 <</if>>
 <<if ($cash > 20000)>>
 	<<set $recruit.push("school trap")>>
@@ -579,17 +586,19 @@
 	<<if ($rep/250) > random(1,100)>>
 		<<set $RecETSevent.push("matched pair")>>
 	<</if>>
-	<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
-		<<set $RecETSevent.push("identical herm pair")>>
-	<</if>>
-	<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
-		<<set $RecETSevent.push("incest mother son")>>
-	<</if>>
-	<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
-		<<set $RecETSevent.push("incest father daughter")>>
-	<</if>>
-	<<if ($rep/250) > random(1,100)>>
-		<<set $RecETSevent.push("incest brother sister")>>
+	<<if $seePreg != 0>>
+		<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
+			<<set $RecETSevent.push("identical herm pair")>>
+		<</if>>
+		<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
+			<<set $RecETSevent.push("incest mother son")>>
+		<</if>>
+		<<if ($rep/250) > random(1,100) && $arcologies[0].FSRestart == "unset">>
+			<<set $RecETSevent.push("incest father daughter")>>
+		<</if>>
+		<<if ($rep/250) > random(1,100)>>
+			<<set $RecETSevent.push("incest brother sister")>>
+		<</if>>
 	<</if>>
 	<<if ($rep/250) > random(1,100)>>
 		<<set $RecETSevent.push("incest twins mixed")>>
@@ -644,7 +653,7 @@
 <<if ($rep/250) > random(1,100)>>
 	<<set $RecETSevent.push("addict mother daughter")>>
 <</if>>
-<<if $seeHyperPreg == 1 && $arcologies[0].FSRestart == "unset" && random(1,100) <= 5>>
+<<if $seeHyperPreg == 1 && $seePreg != 0 && $arcologies[0].FSRestart == "unset" && random(1,100) <= 5>>
 	<<set $RecETSevent.push("desperate broodmother")>>
 <</if>>
 <<if ($rep/250) > random(1,100)>>
@@ -724,10 +733,12 @@
 		<<set $FSAcquisitionEvents.push("Eugenics")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<<if $seePreg != 0>>
 	<<if $arcologies[0].FSGenderFundamentalist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Gender Fundamentalist")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<</if>>
 	<<if $arcologies[0].FSPaternalist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Paternalist")>>
 		<<set $events.push("RE FS acquisition")>>
@@ -760,10 +771,12 @@
 		<<set $FSAcquisitionEvents.push("Asset Expansionist")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<<if $seePreg != 0>>
 	<<if $arcologies[0].FSPastoralist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Pastoralist")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<</if>>
 	<<if $arcologies[0].FSPhysicalIdealist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Physical Idealist")>>
 		<<set $events.push("RE FS acquisition")>>
@@ -788,10 +801,12 @@
 		<<set $FSAcquisitionEvents.push("Gender Radicalist Two")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<<if $seePreg != 0>>
 	<<if $arcologies[0].FSGenderFundamentalist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Gender Fundamentalist Two")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<</if>>
 	<<if $arcologies[0].FSPaternalist > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Paternalist Two")>>
 		<<set $events.push("RE FS acquisition")>>
@@ -836,6 +851,10 @@
 		<<set $FSAcquisitionEvents.push("Hedonistic Decadence Two")>>
 		<<set $events.push("RE FS acquisition")>>
 	<</if>>
+	<<if $arcologies[0].FSChattelReligionist > random(1,100)>>
+		<<set $FSAcquisitionEvents.push("Chattel Religionist Two")>>
+		<<set $events.push("RE FS acquisition")>>
+	<</if>>
 	<<if $arcologies[0].FSRepopulationFocus > random(1,100)>>
 		<<set $FSAcquisitionEvents.push("Repopulation Efforts Two")>>
 		<<set $events.push("RE FS acquisition")>>
@@ -1144,9 +1163,11 @@
 			<<set $events.push("RES Sale")>>
 			<<set $RESSale.push("SCP")>>
 		<</if>>
-		<<if $TCR.studentsBought == 0>>
-			<<set $events.push("RES Sale")>>
-			<<set $RESSale.push("TCR")>>
+		<<if $seePreg != 0>>
+			<<if $TCR.studentsBought == 0>>
+				<<set $events.push("RES Sale")>>
+				<<set $RESSale.push("TCR")>>
+			<</if>>
 		<</if>>
 		<<if $HA.studentsBought == 0>>
 			<<set $events.push("RES Sale")>>
diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw
index da1089162e4d0c240a7e38204f166f9ac047f781..1e06e9b948454243c688bc2685a49d1e8db915c9 100644
--- a/src/uncategorized/reAWOL.tw
+++ b/src/uncategorized/reAWOL.tw
@@ -51,7 +51,7 @@ Your window of opportunity to act is closing. If you have plans for punishing th
 
 					<<link "You want her dead">>
 						<<replace "#SFresult">>
-							Despite the trouble she has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly anti-climatic. The last you hear of her is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. @@.green;Your reputation improves@@, a result of the fear of crossing you that your result have inspired. Also @@.green;Archology prospertiy improves@@, a result of showing your citizens that you are willing and able to deal with such matters in-house.
+							Despite the trouble she has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly anti-climatic. The last you hear of her is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. @@.green;Your reputation improves@@, a result of the fear of crossing you that your result have inspired. Also the @@.green;arcology's prosperity improves@@, a result of showing your citizens that you are willing and able to deal with such matters in-house.
 							<<set $rep += 1000,$arcologies[0].prosperity += 2>>
 							<<if $arcologies[0].prosperity > $AProsperityCap>>
 								<<set $arcologies[0].prosperity = $AProsperityCap>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index fd5a077479c4d12ac903ea183c6fa9da994e1024..1e0c26c04c26451dc9517b0b61144935111d0116 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -16,6 +16,10 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 
 <<set $activeSlave.collar = "none", $activeSlave.choosesOwnClothes = 0, $activeSlave.clothes = "no clothing", $activeSlave.buttplug = "none", $activeSlave.vaginalAccessory = "none", $activeSlave.dickAccessory = "none">>
 <<set $activeSlave.health = random(-40,-25)>>
+<<if $activeSlave.broodmother > 0>>
+	<<set $activeSlave.preg = -1, $activeSlave.birthsTotal += $activeSlave.pregType, $activeSlave.pregType = 0, $activeSlave.pregSource = 0, $activeSlave.pregWeek = 0, $activeSlave.pregKnown = 0, $activeSlave.broodmother == 0>>
+	<<SetBellySize $activeSlave>>
+<</if>>
 <<if $activeSlave.preg > 0>>
 	<<set $activeSlave.preg += _weeks>>
 	<<set $activeSlave.pregWeek += _weeks>>
@@ -72,7 +76,7 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<set $activeSlave.lactation = 2, $activeSlave.lactationAdaptation = 100>>
 	<<set $activeSlave.boobs = Math.clamp($activeSlave.boobs+2000+50*random(-20,20),0,10000)>>
 	<<set $activeSlave.boobShape = "saggy">>
-	<<if $activeSlave.ovaries>><<set $activeSlave.preg = random(5,_pregWeeks-1), $activeSlave.pregtype = random(2,4), $activeSlave.vagina = 4, $activeSlave.pregWeek = $activeSlave.preg, $activeSlave.pregKnown = 1>><<SetBellySize $activeSlave>><</if>>
+	<<if $seePreg != 0>><<if $activeSlave.ovaries>><<set $activeSlave.preg = random(5,_pregWeeks-1), $activeSlave.pregtype = random(2,4), $activeSlave.vagina = 4, $activeSlave.pregWeek = $activeSlave.preg, $activeSlave.pregKnown = 1>><<SetBellySize $activeSlave>><</if>><</if>>
 	<<if $activeSlave.balls>>
 		<<set $activeSlave.balls = Math.clamp($activeSlave.balls+random(1,2),0,10)>>
 		<<if $activeSlave.dick>><<set $activeSlave.dick = Math.clamp($activeSlave.dick+random(1,2),0,10)>><</if>>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index f6be2ef38cd0955fb9de623e10fefa04bb95fcf8..9f7c5d0788293b5498a92c97a54a4640f5635846 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -72,7 +72,7 @@
 <<set $contractCost = 2000>>
 <<include "Generate New Slave">>
 <<if $activeSlave.race == $arcologies[0].FSSupremacistRace>>
-	<<if def $arcologies[0].FSSubjugationistRace>>
+	<<if $arcologies[0].FSSubjugationistRace != 0>>
 		<<set $activeSlave.race = $arcologies[0].FSSubjugationistRace>>
 	<<elseif $arcologies[0].FSSupremacistRace != "mixed race">>
 		<<set $activeSlave.race = "mixed race">>
@@ -80,8 +80,34 @@
 		<<set $activeSlave.race = "black">>
 	<</if>>
 <</if>>
+<<if $activeSlave.race == "black">>
+	<<set $activeSlave.skin = either("black", "brown", "light brown")>>
+	<<set $activeSlave.hColor = either("black", "black", "black", "brown")>>
+	<<set $activeSlave.hStyle = either("shoulder-length", "short", "very short", "shaved bald", "crinkled")>>
+<<elseif $activeSlave.race == "white">>
+	<<set $activeSlave.skin = either("pale", "tanned", "fair")>>
+	<<set $activeSlave.eyeColor = either("blue", "brown", "green")>>
+	<<set $activeSlave.hColor = either("black", "blonde", "red", "brown")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif $activeSlave.race == "latina">>
+    <<set $activeSlave.skin = either("olive", "brown", "light brown", "tanned", "fair")>>
+	<<set $activeSlave.hColor = either("black", "black", "brown", "brown")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif $activeSlave.race == "asian">>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif ($activeSlave.race == "indo-aryan") || ($activeSlave.race == "malay") || ($activeSlave.race == "pacific islander") || ($activeSlave.race == "amerindian")>>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif ($activeSlave.race == "middle eastern") || ($activeSlave.race == "semitic") || ($activeSlave.race == "southern european")>>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<</if>>
 <<set $activeSlave.origin = "She was captured and enslaved in a conflict zone and fenced to you by a mercenary group.">>
-<<set $activeSlave.devotion -= 8>>
+<<set $activeSlave.devotion -= 40>>
 <<set $activeSlave.trust = random(-45,-25)>>
 <<slaveCost $activeSlave>>
 <<set $slaveCost -= 2000>>
@@ -91,7 +117,7 @@
 <<set $contractCost = 2000>>
 <<include "Generate New Slave">>
 <<if $activeSlave.race == $arcologies[0].FSSupremacistRace>>
-	<<if def $arcologies[0].FSSubjugationistRace>>
+	<<if $arcologies[0].FSSubjugationistRace != 0>>
 		<<set $activeSlave.race = $arcologies[0].FSSubjugationistRace>>
 	<<elseif $arcologies[0].FSSupremacistRace != "mixed race">>
 		<<set $activeSlave.race = "mixed race">>
@@ -99,8 +125,34 @@
 		<<set $activeSlave.race = "black">>
 	<</if>>
 <</if>>
+<<if $activeSlave.race == "black">>
+	<<set $activeSlave.skin = either("black", "brown", "light brown")>>
+	<<set $activeSlave.hColor = either("black", "black", "black", "brown")>>
+	<<set $activeSlave.hStyle = either("shoulder-length", "short", "very short", "shaved bald", "crinkled")>>
+<<elseif $activeSlave.race == "white">>
+	<<set $activeSlave.skin = either("pale", "tanned", "fair")>>
+	<<set $activeSlave.eyeColor = either("blue", "brown", "green")>>
+	<<set $activeSlave.hColor = either("black", "blonde", "red", "brown")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif $activeSlave.race == "latina">>
+    <<set $activeSlave.skin = either("olive", "brown", "light brown", "tanned", "fair")>>
+	<<set $activeSlave.hColor = either("black", "black", "brown", "brown")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif $activeSlave.race == "asian">>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif ($activeSlave.race == "indo-aryan") || ($activeSlave.race == "malay") || ($activeSlave.race == "pacific islander") || ($activeSlave.race == "amerindian")>>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<<elseif ($activeSlave.race == "middle eastern") || ($activeSlave.race == "semitic") || ($activeSlave.race == "southern european")>>
+	<<set $activeSlave.skin = either("pale", "dark", "light")>>
+	<<set $activeSlave.hColor = either("black")>>
+	<<set $activeSlave.hStyle = either("ass-length", "long", "shoulder-length", "short", "very short", "shaved bald")>>
+<</if>>
 <<set $activeSlave.origin = "She made the mistake of marrying into a $arcologies[0].FSSupremacistRace neighborhood and was kidnapped then sold to you.">>
-<<set $activeSlave.devotion -= 8>>
+<<set $activeSlave.devotion -= 40>>
 <<set $activeSlave.trust = random(-45,-25)>>
 <<slaveCost $activeSlave>>
 <<set $slaveCost -= 2000>>
@@ -614,6 +666,30 @@
 <<set $activeSlave.health = random(-10,10)>>
 <<set $activeSlave.devotion = random(-15,15)>>
 <<set $activeSlave.trust = random(60,75)>>
+<<if $activeSlave.anus > 0>>
+	<<set $activeSlave.anus = 0>>
+<</if>>
+<<if $activeSlave.vagina > 0>>
+	<<set $activeSlave.vagina = 0>>
+	<<set $activeSlave.career = "a nun">>
+<<else>>
+	<<set $activeSlave.career = "a priest">>
+<</if>>
+<<slaveCost $activeSlave>>
+<<set $slaveCost -= 1000>>
+
+<<case "Chattel Religionist Two">>
+
+<<set $contractCost = 1000>>
+<<set $activeSlaveOneTimeMinAge = 16>>
+<<set $activeSlaveOneTimeMaxAge = 42>>
+<<include "Generate New Slave">>
+<<set $activeSlave.origin = "She offered herself for enslavement out of religious conviction.">>
+<<set $activeSlave.health = random(10,30)>>
+<<set $activeSlave.devotion = -100>>
+<<set $activeSlave.trust = -100>>
+<<set $activeSlave.behavioralFlaw = "devout">>
+<<set $activeSlave.sexualFlaw = "repressed">>
 <<slaveCost $activeSlave>>
 <<set $slaveCost -= 1000>>
 
@@ -1100,6 +1176,12 @@ You receive so many messages, as a noted titan of the new Free Cities world, tha
 
 This one is a little odd; it merely begs you for an in person audience and offers you the sender's "unworthy body" as payment for granting it. You surreptitiously scan her when she arrives to make sure this isn't an attack of some kind, but she's just a normal girl wearing conservative clothing. When admitted to your office, she immediately strips off her clothing, gets down before your desk, and presses her forehead to the floor. "<<if $PC.title == 1>>Sir<<else>>Ma'am<</if>>," she says, "please accept me as your slave. I am a wretched whore, filled with sin, and freedom is a burden to me. Please free me from this torment and take me into your service."
 \
+<<case "Chattel Religionist Two">>\
+\
+Ever since you have been steering $arcologies[0].name towards a belief in chattel religionism, you've been receiving increasingly useful communications from groups that share your ideals. With much of the Old World in freefall, many groups with particularly vehement religious beliefs are expanding unchecked by the mores of big government, and by taking the chattel religionist side, you've automatically inserted yourself into a worldwide network of like-minded organizations. You receive a message from one such group.
+
+It seems that the Chattel Religionists have all but taken over their town and driven out or converted the local worshippers of old world religions, save for a single religious building and its clergy who continue in defiance. This group has stepped in to put an end to this impiety. However, though they may be ruthless vigilantes, they don't consider themselves murderers. They're interested in fencing a member clergy to you, no questions asked, on a flat fee basis. Included in the message is a slave dossier detailing the piece of human chattel they're offering: <<if $activeSlave.genes == "XX">>a lovely virgin nun<<else>>a rather stuck up priest<</if>>.
+\
 <<case "Roman Revivalist">>\
 \
 You receive so many messages, as a noted titan of the new Free Cities world, that $assistantName has to be quite draconian in culling them. She lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.
@@ -1213,6 +1295,8 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	She arrives apologizing for her fine clothing. "I'm sorry," she apologizes sadly, "but I wanted to wear my best one last time." She sighs, squares her shoulders, and visibly steels herself. "My son's a bastard for selling me to you, and all to save that useless store of his." She delivers this last with a bitter smile on her lips. "At least he had the sense to sell me to someone with exquisite taste, like you. After all, you did buy me."
 	<<case "Chattel Religionist">>\
 	She lets out a convulsive sob when you accept her servitude, and is painfully obsequious as you complete the formalities of enslavement. Your exam reveals several minor indications of self-harm - chewed nails, bitten lips, and such. But for all that, a remarkable look of peace has settled on the poor woman's face. She waits patiently for a hint of your will, <<if canAchieveErection($activeSlave)>>her cock painfully erect<<elseif $activeSlave.dick > 0>>precum dripping from her soft dick<<else>>her pussy visibly moist<</if>> at the prospect of the servile sex she is convinced is her duty.
+	<<case "Chattel Religionist Two">>\
+	You complete the legalities and a clearly improvised VTOL craft arrives at $arcologies[0].name, broadcasting an erratic array of IFF codes. It seems this group hasn't quite mastered the intricacies of air travel. The aircraft doesn't seem capable of the delicate feat of landing on the pad it had been directed to: it simply hovers six feet off the pad for the five seconds it takes to shove a canvas bag that obviously contains a struggling human form out of the side door. The condemned prays tirelessly throughout the biometric scanning process, utterly shocked and disgusted by what they've witnessed in just the few minutes they've been in your arcology. Then it's off to the penthouse for basic slave induction.
 	<<case "Roman Revivalist">>\
 	She arrives wide-eyed and enthusiastic about the historical style she saw on the way in. She swallows nervously throughout the enslavement process and even cries a little at the end. She's slow to undress, and when she's finished, she covers her modest breasts with one arm and her mons with the other. It seems that she's about to have a rude awakening about the realities of being a house slave.
 	<<case "Aztec Revivalist">>\
@@ -1301,6 +1385,8 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	She arrives apologizing for her fine clothing. "I'm sorry," she apologizes sadly, "but I wanted to wear my best one last time." She sighs, squares her shoulders, and visibly steels herself. "My son's a bastard for selling me to you, and all to save that useless store of his." She delivers this last with a bitter smile on her lips. "At least he had the sense to sell me to someone with exquisite taste, like you. After all, you did buy me."  She's about to declaim something else when a purchaser's agent arrives to bundle her off. Her face darkens and she mulls something over, probably preparing a really cutting remark, but before she can deliver it the agent fastens a bag over her head and she is heard no more.
 	<<case "Chattel Religionist">>\
 	She lets out a convulsive sob when you accept her servitude, and is painfully obsequious as you complete the formalities of enslavement. When her buyer arrives to take her away, the realization agonizes her, but she snuffs out her saddened reaction almost as soon as it dawns on her face. She visibly draws herself up, obviously telling herself that service under one master is as righteous as service under another.
+	<<case "Chattel Religionist Two">>\
+	You complete the legalities and a clearly improvised VTOL craft arrives at $arcologies[0].name, broadcasting an erratic array of IFF codes. It seems this group hasn't quite mastered the intricacies of air travel. The aircraft doesn't seem capable of the delicate feat of landing on the pad it had been directed to: it simply hovers six feet off the pad for the five seconds it takes to shove a canvas bag that obviously contains a struggling human form out of the side door. The condemned prays tirelessly they're unpacked, utterly shocked and disgusted by what they've witnessed in just the few minutes they've been in your arcology. You tell them to cheer up, they're off to a nice little brothel where they'll learn the joys of their new religion. You make out a single word as they are hauled away, "Blasphemer!" Seems someone wants you to patron them in their new career.
 	<<case "Roman Revivalist">>\
 	She arrives with doubt already clouding her eyes. It seems she got an introduction to the reality of Roman Revivalism on her way up the arcology to your villa. The violence it did to her vision of Rome is deeply ironic; $arcologies[0].name is a fair reproduction of the decadence and vigor of imperial Rome. If she's shocked by the screams of a slave dying in gladiatorial combat or the spectacle of prisoners from the provinces being sold at auction, that's her ignorance. When you cause a price placard to be affixed to her chest so she can be sold at auction, the reality of her future finally comes home to her.
 	<<case "Aztec Revivalist">>\
diff --git a/src/uncategorized/reFullBed.tw b/src/uncategorized/reFullBed.tw
index 2e15c9326438fcd88497e1e80708ba2e74ea614d..1b95eac2fda44a4e450fbfa533f508b420483ae6 100644
--- a/src/uncategorized/reFullBed.tw
+++ b/src/uncategorized/reFullBed.tw
@@ -41,6 +41,7 @@ Today was an unusually relaxing day, and you aren't particularly tired.
 	<</replace>>
 <</link>>
 <</if>>
+<<if $seePreg != 0>>
 <<if canGetPregnant($slaves[_bedSlaveOne]) && canGetPregnant($slaves[_bedSlaveTwo]) && $PC.dick == 1 && $slaves[_bedSlaveOne].eggType == "human" && $slaves[_bedSlaveTwo].eggType == "human">>
 <br><<link "Tire yourself out with some babymaking">>
 	<<replace "#result">>
@@ -93,6 +94,7 @@ Today was an unusually relaxing day, and you aren't particularly tired.
 	<</replace>>
 <</link>>
 <</if>>
+<</if>>
 <br><<link "Pull up the sheets and wrestle">>
 	<<replace "#result">>
 		Without warning, you jerk the sheets all the way up and pin them at the head of the bed. They giggle as you seize first the one and then the other, groping and tickling. $slaves[_bedSlaveTwo].slaveName and $slaves[_bedSlaveOne].slaveName catch the spirit of fun, and rove around in the soft darkness under the sheets. You're <<if $PC.dick == 1>>rock hard<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>soaking wet<</if>> in no time, wrestling with two naked slaves, and begin to fuck the first one you can grab and hold. <<if ($slaves[_bedSlaveOne].amp != 1) && ($slaves[_bedSlaveTwo].amp != 1)>>When you <<if ($PC.dick == 0)>>finish with her<<else>>come inside her<</if>>, you release her and she slides out of bed to wash; by the time she gets back under the sheets, clean and fresh, you're on the point of filling the other.<<else>>When you <<if ($PC.dick == 0)>>finish with her<<else>>come inside her<</if>>, you carry her limbless, helpless body out of bed to wash her, and then return to the bed to fuck the other.<</if>> You switch off with the two of them, fucking them in turn, until everyone falls asleep in an exhausted pile. They have become @@.mediumaquamarine;still more trusting of you.@@
diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw
index dfe087090955cd1afbd588c9d0cf8c5397a17de4..381fbdac22f14df38abc5d0c4327f987b358b222 100644
--- a/src/uncategorized/reNickname.tw
+++ b/src/uncategorized/reNickname.tw
@@ -18,29 +18,30 @@
 <</if>>
 
 <<if ($seeRace == 1)>>
-<<if ($activeSlave.race == "white")>>
+<<switch $activeSlave.race>>
+<<case "white">>
 	<<set $qualifiedNicknames.push("white")>>
-<<elseif ($activeSlave.race == "asian")>>
+<<case "asian">>
 	<<set $qualifiedNicknames.push("asian")>>
-<<elseif ($activeSlave.race == "latina")>>
+<<case "latina">>
 	<<set $qualifiedNicknames.push("latina")>>
-<<elseif ($activeSlave.race == "black")>>
+<<case "black">>
 	<<set $qualifiedNicknames.push("black")>>
-<<elseif ($activeSlave.race == "pacific islander")>>
+<<case "pacific islander">>
 	<<set $qualifiedNicknames.push("pacific islander")>>
-<<elseif ($activeSlave.race == "southern european")>>
+<<case "southern european">>
 	<<set $qualifiedNicknames.push("southern european")>>
-<<elseif ($activeSlave.race == "amerindian")>>
+<<case "amerindian">>
 	<<set $qualifiedNicknames.push("amerindian")>>
-<<elseif ($activeSlave.race == "semitic")>>
+<<case "semitic">>
 	<<set $qualifiedNicknames.push("semitic")>>
-<<elseif ($activeSlave.race == "middle eastern")>>
+<<case "middle eastern">>
 	<<set $qualifiedNicknames.push("middle eastern")>>
-<<elseif ($activeSlave.race == "indo-aryan")>>
+<<case "indo-aryan">>
 	<<set $qualifiedNicknames.push("indo-aryan")>>
-<<elseif ($activeSlave.race == "mixed race")>>
+<<case "mixed race">>
 	<<set $qualifiedNicknames.push("mixed race")>>
-<</if>>
+<</switch>>
 <</if>>
 
 <<if ($activeSlave.boobs < 500) && ($activeSlave.butt < 3) && ($activeSlave.weight <= 10)>>
@@ -179,10 +180,13 @@
 <<if $activeSlave.breedingMark == 1>>
 	<<set $qualifiedNicknames.push("mark")>>
 <</if>>
-<<if ($activeSlave.pregType >= 50) && ($activeSlave.preg > 37)>>
+<<if ($activeSlave.broodmother > 1) && ($activeSlave.preg >= 37)>>
+	<<set $qualifiedNicknames.push("hyperbroodmother")>>
+<</if>>
+<<if ($activeSlave.broodmother == 1) && ($activeSlave.preg >= 37)>>
 	<<set $qualifiedNicknames.push("broodmother")>>
 <</if>>
-<<if ($activeSlave.pregType >= 10) && ($activeSlave.preg > 30)>>
+<<if ($activeSlave.bellyPreg >= 300000)>>
 	<<set $qualifiedNicknames.push("hyperpreg")>>
 <</if>>
 <<if ($activeSlave.dick > 5) && ($activeSlave.balls > 5) && ($activeSlave.slavesKnockedUp > 4)>>
@@ -231,711 +235,719 @@
 
 <<set $nickname = $qualifiedNicknames.random()>>
 
-<<if ($nickname is "nationality")>>
-	<<if ($activeSlave.nationality is "Afghan")>>
+<<switch $nickname>>
+<<case "nationality">>
+	<<switch $activeSlave.nationality>>
+	<<case "Afghan">>
 		<<set $nickname to either("'Bactrian'", "'Chai Girl'", "'Kabul'", "'Pashtun'", "'Poppy'", "'Taliban'")>>
-	<<elseif ($activeSlave.nationality is "Albanian")>>
+	<<case "Albanian">>
 		<<set $nickname to either("'Hoxha'", "'Tirana'")>>
-	<<elseif ($activeSlave.nationality is "Algerian")>>
+	<<case "Algerian">>
 		<<set $nickname to either("'Casbah'", "'Corsair'", "'Djamila'", "'Hassiba'", "'Pied-Noir'", "'Zhora'", "Harki")>>
-	<<elseif ($activeSlave.nationality is "American")>>
+	<<case "American">>
 		<<set $nickname to either("'Burger'", "'Chicago'", "'Hollywood'", "'Lady Liberty'", "'Lone Star'", "'New York'", "'Washington'", "'Yankee'", "'Stars & Stripes'", "'Yankee'", "'California'", "'Septic'", "'Trump'")>>
-	<<elseif ($activeSlave.nationality is "Andorran")>>
+	<<case "Andorran">>
 		<<set $nickname to either("'Ski Trip'", "'Skossyreff'")>>
-	<<elseif ($activeSlave.nationality is "Antiguan")>>
+	<<case "Antiguan">>
 		<<set $nickname to either("'Barbuda'", "'Redonda'")>>
-	<<elseif ($activeSlave.nationality is "Argentinian")>>
+	<<case "Argentinian">>
 		<<set $nickname to either("'Blanca'", "'Buenos Aires'", "'Evita'", "'Gaucha'", "'Macri'", "'Malvinas'")>>
-	<<elseif ($activeSlave.nationality is "Armenian")>>
+	<<case "Armenian">>
 		<<set $nickname to either("'Hachik'", "'Khorovats'", "'Rabiz'")>>
-	<<elseif ($activeSlave.nationality is "Aruban")>>
+	<<case "Aruban">>
 		<<set $nickname to either("'Caquetio'", "'Oranjestad'")>>
-	<<elseif ($activeSlave.nationality is "Australian")>>
+	<<case "Australian">>
 		<<set $nickname to either("'Abo'", "'Aussie'", "'Bogan'", "'Convict'", "'Crikey'", "'Down Under'", "'Mad'", "'Sheila'")>>
-	<<elseif ($activeSlave.nationality is "Austrian")>>
+	<<case "Austrian">>
 		<<set $nickname to either("'Fut'", "'Maria'", "'Wiener'", "'Fritzl'")>>
-	<<elseif ($activeSlave.nationality is "Azerbaijani")>>
+	<<case "Azerbaijani">>
 		<<set $nickname to either("'Baku'", "'Black January'")>>
-	<<elseif ($activeSlave.nationality is "Bahamian")>>
+	<<case "Bahamian">>
 		<<set $nickname to either("'Columbus'", "'Nassau'")>>
-	<<elseif ($activeSlave.nationality is "Bahraini")>>
+	<<case "Bahraini">>
 		<<set $nickname to either("'Manama'", "'Two Seas'")>>
-	<<elseif ($activeSlave.nationality is "Bangladeshi")>>
+	<<case "Bangladeshi">>
 		<<set $nickname to either("'Bengali'", "'Bhibhi'", "'Dhaka'", "'Sweatshop'", "'Tiger'")>>
-	<<elseif ($activeSlave.nationality is "Barbadian")>>
+	<<case "Barbadian">>
 		<<set $nickname to either("'Bajan'", "'Bridgetown'", "'Sugar Cane'")>>
-	<<elseif ($activeSlave.nationality is "Belarusian")>>
-		<<set $nickname to either("'Minsk'", "'Stalker'", "'Å liucha'", "'White Russian'", "'Bulbash'")>>
-	<<elseif ($activeSlave.nationality is "Belgian")>>
+	<<case "Belarusian">>
+		<<set $nickname to either("'Minsk'", "'Stalker'", "'Shlyukha'", "'White Russian'", "'Bulbash'")>>
+	<<case "Belgian">>
 		<<set $nickname to either("'Antwerp'", "'Brussels'", "'Sprout'", "'Straatmeid'", "'Truttemie'", "'Waffles'")>>
-	<<elseif ($activeSlave.nationality is "Belizean")>>
+	<<case "Belizean">>
 		<<set $nickname to either("'Belmopan'", "'Great Blue Hole'")>>
-	<<elseif ($activeSlave.nationality is "Bermudian")>>
+	<<case "Bermudian">>
 		<<set $nickname to either("'Bermuda Triangle'", "'Hamilton'")>>
-	<<elseif ($activeSlave.nationality is "Bhutanese")>>
+	<<case "Bhutanese">>
 		<<set $nickname to either("'Druk'", "'Thimphu'")>>
-	<<elseif ($activeSlave.nationality is "Bolivian")>>
+	<<case "Bolivian">>
 		<<set $nickname to either("'La Paz'", "'Titicaca'")>>
-	<<elseif ($activeSlave.nationality is "Bosnian")>>
+	<<case "Bosnian">>
 		<<set $nickname to either("'Herzegovina'", "'Sarajevo'")>>
-	<<elseif ($activeSlave.nationality is "Brazilian")>>
+	<<case "Brazilian">>
 		<<set $nickname to either("'7-1'", "'Bunda'", "'Dago'", "'Favelada'", "'Hue'", "'Ipanema'", "'Monkey'", "'São Paulo'", "'Zika'", "'Bauru'","'Carmen Miranda'")>>
-	<<elseif ($activeSlave.nationality is "British")>>
+	<<case "British">>
 		<<set $nickname to either("'Britbong'", "'Chav'", "'Fish'n'Chips'", "'Limey'", "'London'", "'Pikey'", "'Pommie'", "'Rosbif'", "'Scrubber'", "'Slag'", "'Slapper'", "'Brexit'")>>
-	<<elseif ($activeSlave.nationality is "Bruneian")>>
+	<<case "Bruneian">>
 		<<set $nickname to either("'Abode of Peace'", "'Bandar Seri Begawan'")>>
-	<<elseif ($activeSlave.nationality is "Bulgarian")>>
+	<<case "Bulgarian">>
 		<<set $nickname to either("'Sofia'", "'Zhivkov'")>>
-	<<elseif ($activeSlave.nationality is "Burmese")>>
+	<<case "Burmese">>
 		<<set $nickname to either("'Burma Shave'", "'Burmese Python'", "'Golden Triangle'", "'Rangoon'")>>
-	<<elseif ($activeSlave.nationality is "Burundian")>>
+	<<case "Burundian">>
 		<<set $nickname to either("'Bujumbura'", "'Heha'")>>
-	<<elseif ($activeSlave.nationality is "Cambodian")>>
+	<<case "Cambodian">>
 		<<set $nickname to either("'Angkor Wat'", "'Holiday in Cambodia'", "'Phnom Penh'")>>
-	<<elseif ($activeSlave.nationality is "Cameroonian")>>
+	<<case "Cameroonian">>
 		<<set $nickname to either("'Douala'", "'Yaoundé'")>>
-	<<elseif ($activeSlave.nationality is "Canadian")>>
+	<<case "Canadian">>
 		<<set $nickname to either("'Canuck'", "'Loonie'", "'Maple Syrup'", "'Mountie'", "'Poutine'", "'Quebec'", "'Toronto'", "'Vancouver'", "'Yukon'")>>
-	<<elseif ($activeSlave.nationality is "Chilean")>>
+	<<case "Chilean">>
 		<<set $nickname to either("'Chela'", "'Pinochet'", "'Santiago'", "'Toya'")>>
-	<<elseif ($activeSlave.nationality is "Chinese")>>
+	<<case "Chinese">>
 		<<set $nickname to either("'Beijing'", "'Dim Sum'", "'Dragon'", "'Empress'", "'Guangzhou'", "'Kung Fu'", "'Lead Toys'", "'Lotus'", "'Made in China'", "'Manchu'", "'Nanking'", "'Renmenbi'", "'Shanghai'")>>
-	<<elseif ($activeSlave.nationality is "Colombian")>>
+	<<case "Colombian">>
 		<<set $nickname to either("'Bogotá'", "'Cafetera'", "'Coca'", "'Crystal'", "'FARC'", "'Pablita Escobar'")>>
-	<<elseif ($activeSlave.nationality is "Congolese")>>
+	<<case "Congolese">>
 		<<set $nickname to either("'Bongo'", "'Diamond'", "'Ebola'")>>
-	<<elseif ($activeSlave.nationality is "a Cook Islander")>>
+	<<case "a Cook Islander">>
 		<<set $nickname to either("'Avarua'", "'Rarotonga'")>>
-	<<elseif ($activeSlave.nationality is "Costa Rican")>>
+	<<case "Costa Rican">>
 		<<set $nickname to either("'Oxcart'", "'San José'")>>
-	<<elseif ($activeSlave.nationality is "Croatian")>>
+	<<case "Croatian">>
 		<<set $nickname to either("'Tito'", "'Zagreb'")>>
-	<<elseif ($activeSlave.nationality is "Cuban")>>
+	<<case "Cuban">>
 		<<set $nickname to either("'Blockade'", "'Castro'", "'Commie'", "'Havana'", "'Scarface'")>>
-	<<elseif ($activeSlave.nationality is "Cypriot")>>
+	<<case "Cypriot">>
 		<<set $nickname to either("'Enosis'", "'Nicosia'")>>
-	<<elseif ($activeSlave.nationality is "Czech")>>
+	<<case "Czech">>
 		<<set $nickname to either("'Bohemian'", "'Czechnya'", "'Kunda'", "'Prague'")>>
-	<<elseif ($activeSlave.nationality is "Danish")>>
+	<<case "Danish">>
 		<<set $nickname to either("'Copenhagen'", "'Ludertæve'", "'Tøs'", "'Viking'")>>
-	<<elseif ($activeSlave.nationality is "Djiboutian")>>
+	<<case "Djiboutian">>
 		<<set $nickname to either("'Ifat'", "'Tadjoura'")>>
-	<<elseif ($activeSlave.nationality is "Dominican")>>
+	<<case "Dominican">>
 		<<set $nickname to either("'Taíno'", "'Caribbean'", "'Domingo'", "'Palo'", "'Trinitaria'")>>
-	<<elseif ($activeSlave.nationality is "Dominiquais")>>
+	<<case "Dominiquais">>
 		<<set $nickname to either("'Red Dog'", "'Roseau'")>>
-	<<elseif ($activeSlave.nationality is "Dutch")>>
+	<<case "Dutch">>
 		<<set $nickname to either("'Amsterdam'", "'Cheesehead'", "'Slaaf'", "'Slet'")>>
-	<<elseif ($activeSlave.nationality is "East Timorese")>>
+	<<case "East Timorese">>
 		<<set $nickname to either("'Dili'", "'Timor Leste'")>>
-	<<elseif ($activeSlave.nationality is "Ecuadorian")>>
+	<<case "Ecuadorian">>
 		<<set $nickname to either("'Galápagos'", "'Quito'")>>
-	<<elseif ($activeSlave.nationality is "Egyptian")>>
+	<<case "Egyptian">>
 		<<set $nickname to either("'Cairo'", "'Cleopatra'", "'Misirlou'", "'Sinai'", "'Sphinx'", "'Suez'")>>
-	<<elseif ($activeSlave.nationality is "Emirati")>>
+	<<case "Emirati">>
 		<<set $nickname to either("'Abu Dhabi'", "'Bedouin'", "'Dubai'")>>
-	<<elseif ($activeSlave.nationality is "Estonian")>>
+	<<case "Estonian">>
 		<<set $nickname to either("'Baltic'", "'Eesti'", "'Tallinn'")>>
-	<<elseif ($activeSlave.nationality is "Ethiopian")>>
+	<<case "Ethiopian">>
 		<<set $nickname to either("'Oromo'", "'Rastafarian'")>>
-	<<elseif ($activeSlave.nationality is "Fijian")>>
+	<<case "Fijian">>
 		<<set $nickname to either("'Itaukei'", "'Suva'")>>
-	<<elseif ($activeSlave.nationality is "Filipina")>>
+	<<case "Filipina">>
 		<<set $nickname to either("'Flip'", "'Manila'", "'Pinoy'")>>
-	<<elseif ($activeSlave.nationality is "Finnish")>>
+	<<case "Finnish">>
 		<<set $nickname to either("'Helinski'", "'Mämmi'", "'Perkele'", "'Saunagirl'", "'Winter War'")>>
-	<<elseif ($activeSlave.nationality is "French")>>
+	<<case "French">>
 		<<set $nickname to either("'Belle'", "'Fille de Joie'", "'Mademoiselle'", "'Marseille'", "'Paris'", "'Surrender Monkey'", "'Charlie Hebdo'")>>
-	<<elseif ($activeSlave.nationality is "French Guianan")>>
+	<<case "French Guianan">>
 		<<set $nickname to either("'Cayenne'", "'ÃŽle du Diable'")>>
-	<<elseif ($activeSlave.nationality is "Gabonese")>>
+	<<case "Gabonese">>
 		<<set $nickname to either("'Bongo'", "'Libreville'")>>
-	<<elseif ($activeSlave.nationality is "Georgian")>>
+	<<case "Georgian">>
 		<<set $nickname to either("'Kutaisi'", "'Tbilisi'")>>
-	<<elseif ($activeSlave.nationality is "German")>>
+	<<case "German">>
 		<<set $nickname to either("'Berlin'", "'Bratwurst'", "'Fraulein'", "'Kraut'", "'Oktoberfest'", "'Piefke'", "'Valkyrie'", "'Dresden'", "'Prussian'", "'Bavarian'", "'Nazi'", "'Saupreiß'")>>
-	<<elseif ($activeSlave.nationality is "Ghanan")>>
+	<<case "Ghanan">>
 		<<set $nickname to either("'Akan'", "'Gold Coast'", "'Warrior Queen'", "'Shaman Queen'")>>
-	<<elseif ($activeSlave.nationality is "Greek")>>
+	<<case "Greek">>
 		<<set $nickname to either("'Athens'", "'Debts'", "'Ionian'", "'Spartan'")>>
-	<<elseif ($activeSlave.nationality is "Greenlandic")>>
+	<<case "Greenlandic">>
 		<<set $nickname to either("'Eskimo'", "'Nuuk'")>>
-	<<elseif ($activeSlave.nationality is "Grenadian")>>
+	<<case "Grenadian">>
 		<<set $nickname to either("'Grenada Dove'", "'Urgent Fury'", "'Woolie'")>>
-	<<elseif ($activeSlave.nationality is "Guatemalan")>>
+	<<case "Guatemalan">>
 		<<set $nickname to either("'Guatemalan'", "'Mayan'")>>
-	<<elseif ($activeSlave.nationality is "Guyanese")>>
+	<<case "Guyanese">>
 		<<set $nickname to either("'Georgetown'", "'Hoatzin'")>>
-	<<elseif ($activeSlave.nationality is "Haitian")>>
+	<<case "Haitian">>
 		<<set $nickname to either("'Maîtresse'", "'Mama Doc'", "'Maman'", "'Voodoo'")>>
-	<<elseif ($activeSlave.nationality is "Honduran")>>
+	<<case "Honduran">>
 		<<set $nickname to either("'Anchuria'", "'Tegucigalpa'")>>
-	<<elseif ($activeSlave.nationality is "Hungarian")>>
+	<<case "Hungarian">>
 		<<set $nickname to either("'Budapest'", "'Magyar'", "'Szuka'")>>
-	<<elseif ($activeSlave.nationality is "I-Kiribati")>>
+	<<case "I-Kiribati">>
 		<<set $nickname to either("'Gilbert'", "'Tarawa'")>>
-	<<elseif ($activeSlave.nationality is "Icelandic")>>
+	<<case "Icelandic">>
 		<<set $nickname to either("'Penis Museum'", "'Reykjavík'", "'Sagas'")>>
-	<<elseif ($activeSlave.nationality is "Indian")>>
+	<<case "Indian">>
 		<<set $nickname to either("'Bhibhi'", "'Bhopal'", "'Delhi'", "'Hindi'", "'Mahatma'", "'Mumbai'", "'Punjabi'", "'Savita'", "'Street Shitter'")>>
-	<<elseif ($activeSlave.nationality is "Indonesian")>>
+	<<case "Indonesian">>
 		<<set $nickname to either("'Jakarta'", "'Malay'", "'Sunda'")>>
-	<<elseif ($activeSlave.nationality is "Iraqi")>>
+	<<case "Iraqi">>
 		<<set $nickname to either("'Assyrian'", "'Baghdad'", "'Fallujah'", "'Fertile Crescent'", "'Hussein'", "'Mesopotamian'", "'Oilfields'", "'Whore of Babylon'")>>
-	<<elseif ($activeSlave.nationality is "Iranian")>>
+	<<case "Iranian">>
 		<<set $nickname to either("'Ayatollah'", "'Iranian'", "'Persian'", "'Tehran'")>>
-	<<elseif ($activeSlave.nationality is "Irish")>>
+	<<case "Irish">>
 		<<set $nickname to either("'Carbomb'", "'Dublin'", "'Emerald'", "'Lassie'", "'Paddy'", "'Potato Famine'", "'Sinn Féin'")>>
-	<<elseif ($activeSlave.nationality is "Israeli")>>
+	<<case "Israeli">>
 		<<set $nickname to either("'God's Chosen'", "'Hebrew'", "'Levantine'", "'Tel Aviv'", "'Merchant'", "'Oven Dodger'", "'Shiksa'", "'Sharmuta'", "'Shekels'")>>
-	<<elseif ($activeSlave.nationality is "Italian")>>
+	<<case "Italian">>
 		<<set $nickname to either("'Bologna'", "'Greaseball'", "'Latin'", "'Napoli'", "'Renaissance'", "'Rome'", "'Salami'", "'Sicilian'", "'Spaghetti'", "'Terrone'", "'Wop'")>>
-	<<elseif ($activeSlave.nationality is "Jamaican")>>
+	<<case "Jamaican">>
 		<<set $nickname to either("'Kingston'", "'Kush'", "'Rasta'", "'Reggae'", "'West Indies'")>>
-	<<elseif ($activeSlave.nationality is "Japanese")>>
+	<<case "Japanese">>
 		<<set $nickname to either("'Anime'", "'Banzai'", "'Bishoujo'", "'Fukushima'", "'Geisha Girl'", "'Hello Kitty'", "'Hiroshima'", "'Hokkaido'", "'Ichiban'", "'Kamikaze'", "'Kawasaki'", "'Kyoto'", "'Kyushu'", "'Nagano'", "'Nagasaki'", "'Nipponese'", "'Osaka'", "'Sushi'", "'Tempura'", "'Tokyo'", "'Wasabi'", "'Yakuza'", "'Yamaha'", "'Yamato Nadeshiko'")>>
-	<<elseif ($activeSlave.nationality is "Jordanian")>>
+	<<case "Jordanian">>
 		<<set $nickname to either("'Edomite'", "'Hashemite'", "'Mansaf'", "'Moab'", "'Petra'")>>
-	<<elseif ($activeSlave.nationality is "Kazakh")>>
+	<<case "Kazakh">>
 		<<set $nickname to either("'Blue Hat'", "'Borat'", "'Khan'")>>
-	<<elseif ($activeSlave.nationality is "Kenyan")>>
+	<<case "Kenyan">>
 		<<set $nickname to either("'Mau Mau'", "'Nairobi'", "'Safari'", "'Swahili'", "'Obama'")>>
-	<<elseif ($activeSlave.nationality is "Kittitian")>>
+	<<case "Kittitian">>
 		<<set $nickname to either("'Basseterre'", "'Nevis'")>>
-	<<elseif ($activeSlave.nationality is "Korean")>>
+	<<case "Korean">>
 		<<set $nickname to either("'Dokdo'", "'Gangnam'", "'K-Pop'", "'Kimchi'", "'Nida'", "'Pyongyang'", "'Samsung'", "'Seoul'")>>
-	<<elseif ($activeSlave.nationality is "Kosovan")>>
+	<<case "Kosovan">>
 		<<set $nickname to either("'Kosovar'", "'Pristina'")>>
-	<<elseif ($activeSlave.nationality is "Kuwaiti")>>
+	<<case "Kuwaiti">>
 		<<set $nickname to either("'Burgan'", "'Gulf War'")>>
-	<<elseif ($activeSlave.nationality is "Kyrgyz")>>
+	<<case "Kyrgyz">>
 		<<set $nickname to either("'Bishkek'", "'Manas'")>>
-	<<elseif ($activeSlave.nationality is "Laotian")>>
+	<<case "Laotian">>
 		<<set $nickname to either("'Muang Lao'", "'Vientiane'")>>
-	<<elseif ($activeSlave.nationality is "Latvian")>>
+	<<case "Latvian">>
 		<<set $nickname to either("'Livonia'", "'Riga'")>>
-	<<elseif ($activeSlave.nationality is "Lebanese")>>
+	<<case "Lebanese">>
 		<<set $nickname to either("'Beirut'", "'Cedar'", "'Druze'", "'Lebo'", "'Maronite'", "'Phoenician'")>>
-	<<elseif ($activeSlave.nationality is "Libyan")>>
+	<<case "Libyan">>
 		<<set $nickname to either("'Cyrene'", "'Gaddafi'", "'Silphium'", "'Tripoli'", "'Zenga Zenga'")>>
-	<<elseif ($activeSlave.nationality is "a Liechtensteiner")>>
+	<<case "a Liechtensteiner">>
 		<<set $nickname to either("'Schaan'", "'Vaduz'")>>
-	<<elseif ($activeSlave.nationality is "Lithuanian")>>
+	<<case "Lithuanian">>
 		<<set $nickname to either("'Memel'", "'Pagan'", "'Vilnus'")>>
-	<<elseif ($activeSlave.nationality is "Luxembourgian")>>
+	<<case "Luxembourgian">>
 		<<set $nickname to either("'Bureaucrat'", "'Passerelle'")>>
-	<<elseif ($activeSlave.nationality is "Macedonian")>>
+	<<case "Macedonian">>
 		<<set $nickname to either("'Sarissa'", "'Skopje'")>>
-	<<elseif ($activeSlave.nationality is "Malagasy")>>
+	<<case "Malagasy">>
 		<<set $nickname to either("'Antananarivo'", "'Lemur'")>>
-	<<elseif ($activeSlave.nationality is "Malaysian")>>
+	<<case "Malaysian">>
 		<<set $nickname to either("'Kuala Lumpur'", "'Malay Girl'", "'Pirate'")>>
-	<<elseif ($activeSlave.nationality is "Maldivian")>>
+	<<case "Maldivian">>
 		<<set $nickname to either("'Dhoni'", "'Malé'")>>
-	<<elseif ($activeSlave.nationality is "Malian")>>
+	<<case "Malian">>
 		<<set $nickname to either("'Mandinka'", "'Mansa Musa'", "'Sahel'", "'Timbuktu'", "'Trans-Sahara'")>>
-	<<elseif ($activeSlave.nationality is "Maltese")>>
+	<<case "Maltese">>
 		<<set $nickname to either("'Maltese Falcon'", "'Valletta'")>>
-	<<elseif ($activeSlave.nationality is "Marshallese")>>
+	<<case "Marshallese">>
 		<<set $nickname to either("'Bikini Atoll'", "'Majuro'")>>
-	<<elseif ($activeSlave.nationality is "Mexican")>>
+	<<case "Mexican">>
 		<<set $nickname to either("'Azteca'", "'Beaner'", "'Burrito'", "'Cartel'", "'Chiquita'", "'Fence Hopper'", "'Headless'", "'Juarez'", "'Malinche'", "'Mamacita'", "'Senorita'", "'Sinaloa'", "'Taco'", "'Tijuana'", "'Wetback'")>>
-	<<elseif ($activeSlave.nationality is "Micronesian")>>
+	<<case "Micronesian">>
 		<<set $nickname to either("'Palikir'", "'Weno'")>>
-	<<elseif ($activeSlave.nationality is "Moldovan")>>
+	<<case "Moldovan">>
 		<<set $nickname to either("'Bessarabia'", "'Chișinău'")>>
-	<<elseif ($activeSlave.nationality is "Monégasque")>>
+	<<case "Monégasque">>
 		<<set $nickname to either("'Grace Kelly'", "'Monte Carlo'")>>
-	<<elseif ($activeSlave.nationality is "Mongolian")>>
+	<<case "Mongolian">>
 		<<set $nickname to either("'Genghis Khan'", "'Ulaanbaatar'")>>
-	<<elseif ($activeSlave.nationality is "Montenegrin")>>
+	<<case "Montenegrin">>
 		<<set $nickname to either("'Black Mountain'", "'Podgorica'")>>
-	<<elseif ($activeSlave.nationality is "Moroccan")>>
+	<<case "Moroccan">>
 		<<set $nickname to either("'Casablanca'", "'Rabat'")>>
-	<<elseif ($activeSlave.nationality is "Nauruan")>>
+	<<case "Nauruan">>
 		<<set $nickname to either("'Phosphate'", "'Pleasant Island'")>>
-	<<elseif ($activeSlave.nationality is "Nepalese")>>
+	<<case "Nepalese">>
 		<<set $nickname to either("'Katmandu'", "'Nepali'", "'Sherpa'")>>
-	<<elseif ($activeSlave.nationality is "a New Zealander")>>
+	<<case "a New Zealander">>
 		<<set $nickname to either("'All-Black'", "'Auckland'", "'Kiwi'", "'Wellington'")>>
-	<<elseif ($activeSlave.nationality is "Ni-Vanuatu")>>
+	<<case "Ni-Vanuatu">>
 		<<set $nickname to either("'New Hebride'", "'Port Vila'")>>
-	<<elseif ($activeSlave.nationality is "Nicaraguan")>>
+	<<case "Nicaraguan">>
 		<<set $nickname to either("'Granada'", "'Managua'", "'Nica'")>>
-	<<elseif ($activeSlave.nationality is "Nigerian")>>
+	<<case "Nigerian">>
 		<<set $nickname to either("'Abuja'", "'Kwara'", "'Lagos'", "'Scammer'")>>
-	<<elseif ($activeSlave.nationality is "Nigerien")>>
+	<<case "Nigerien">>
 		<<set $nickname to either("'Kountché'", "'Niamey'")>>
-	<<elseif ($activeSlave.nationality is "Niuean")>>
+	<<case "Niuean">>
 		<<set $nickname to either("'Alofi'", "'Rock of Polynesia'")>>
-	<<elseif ($activeSlave.nationality is "Norwegian")>>
+	<<case "Norwegian">>
 		<<set $nickname to either("'Black Metal'", "'Kuksuger'", "'Ludder'", "'Norse'", "'Norsk'", "'Oil Hog'", "'Ola'", "'Oslo'")>>
-	<<elseif ($activeSlave.nationality is "Omani")>>
+	<<case "Omani">>
 		<<set $nickname to either("'Dhofar'", "'Empty Quarter'", "'Ibadi'", "'Khanjar'", "'Muscat'")>>
-	<<elseif ($activeSlave.nationality is "Pakistani")>>
+	<<case "Pakistani">>
 		<<set $nickname to either("'Indus'", "'Karachi'", "'Lahore'", "'Paki'")>>
-	<<elseif ($activeSlave.nationality is "Palauan")>>
+	<<case "Palauan">>
 		<<set $nickname to either("'Koror'", "'Ngerulmud'")>>
-	<<elseif ($activeSlave.nationality is "Palestinian")>>
+	<<case "Palestinian">>
 		<<set $nickname to either("'Gaza'", "'Hamas'", "'West Bank'")>>
-	<<elseif ($activeSlave.nationality is "Panamanian")>>
+	<<case "Panamanian">>
 		<<set $nickname to either("'Noriega'", "'Panama Canal'")>>
-	<<elseif ($activeSlave.nationality is "Papua New Guinean")>>
+	<<case "Papua New Guinean">>
 		<<set $nickname to either("'Papua'", "'Port Moresby'")>>
-	<<elseif ($activeSlave.nationality is "Paraguayan")>>
+	<<case "Paraguayan">>
 		<<set $nickname to either("'Asunción'", "'Stroessner'")>>
-	<<elseif ($activeSlave.nationality is "Peruvian")>>
+	<<case "Peruvian">>
 		<<set $nickname to either("'Incan'", "'Lima'", "'Lorcha'", "'Perucha'", "'Trujillo'", "'Zampoña'")>>
-	<<elseif ($activeSlave.nationality is "Polish")>>
+	<<case "Polish">>
 		<<set $nickname to either("'Hussar'", "'Krakow'", "'Kurwa'", "'Polski'", "'Pshek'", "'Warsaw'")>>
-	<<elseif ($activeSlave.nationality is "Portuguese")>>
+	<<case "Portuguese">>
 		<<set $nickname to either("'Bunda'", "'Portagee'")>>
-	<<elseif ($activeSlave.nationality is "Puerto Rican")>>
+	<<case "Puerto Rican">>
 		<<set $nickname to either("'51st State'", "'Boricua'", "'Nuyorican'", "'San Juan'", "'West Side Story'")>>
-	<<elseif ($activeSlave.nationality is "Qatari")>>
+	<<case "Qatari">>
 		<<set $nickname to either("'Al Jazeera'", "'Doha'")>>
-	<<elseif ($activeSlave.nationality is "Romanian")>>
+	<<case "Romanian">>
 		<<set $nickname to either("'Bucharest'", "'Ceausescu'", "'Dracula'", "'Gypsy'", "'Impaler'", "'Orphan'", "'Roma'")>>
-	<<elseif ($activeSlave.nationality is "Russian")>>
-		<<set $nickname to either("'Commie'", "'Cyka'", "'Mail Order'", "'Moscow'", "'Moskal'", "'Red Banner'", "'Russkie'", "'Siberian Kitten'", "'Slav'", "'Suka'", "'Tovarishina'", "'Tsaritsa'", "'Vodka'", "'Hammer & Sickle'", "'Bolshevik'", "'Kacap'")>>
-	<<elseif ($activeSlave.nationality is "Saint Lucian")>>
+	<<case "Russian">>
+		<<set $nickname to either("'Commie'", "'Suka'", "'Suchka'", "'Moscow'", "'Moskal'", "'Red Banner'", "'Russkie'", "'Siberian Kitten'", "'Slav'", "'Suka'", "'Tovarish'", "'Tsaritsa'", "'Vodka'", "'Sickle & Hammer'", "'Bolshevik'", "'Kacap'", "'Shlyukha'")>>
+	<<case "Saint Lucian">>
 		<<set $nickname to either("'Castries'", "'Helen of the West Indies'")>>
-	<<elseif ($activeSlave.nationality is "Salvadoran")>>
+	<<case "Salvadoran">>
 		<<set $nickname to either("'Duarte'", "'San Salvador'")>>
-	<<elseif ($activeSlave.nationality is "Sammarinese")>>
+	<<case "Sammarinese">>
 		<<set $nickname to either("'Saint Marinus'", "'Three Towers'")>>
-	<<elseif ($activeSlave.nationality is "Samoan")>>
+	<<case "Samoan">>
 		<<set $nickname to either("'Apia'", "'Navigator'")>>
-	<<elseif ($activeSlave.nationality is "Saudi")>>
+	<<case "Saudi">>
 		<<set $nickname to either("'Burqua'", "'Mecca'", "'Riyadh'", "'Sandy'", "'Al Qaeda'")>>
-	<<elseif ($activeSlave.nationality is "Scottish")>>
+	<<case "Scottish">>
 		<<set $nickname to either("'Braveheart'", "'Edinburgh'", "'Glasgow'", "'Nessie'", "'Endinburg'", "'Ned'", "'Hadrian'", "'Unicorn'", "'Lass'")>>
-	<<elseif ($activeSlave.nationality is "Serbian")>>
+	<<case "Serbian">>
 		<<set $nickname to either("'Belgrade'", "'Picka'", "'Remove Kebab'")>>
-	<<elseif ($activeSlave.nationality is "Seychellois")>>
+	<<case "Seychellois">>
 		<<set $nickname to either("'Seabird'", "'Victoria'")>>
-	<<elseif ($activeSlave.nationality is "Singaporean")>>
+	<<case "Singaporean">>
 		<<set $nickname to either("'Bedok'", "'Merlion'")>>
-	<<elseif ($activeSlave.nationality is "Slovak")>>
+	<<case "Slovak">>
 		<<set $nickname to either("'Bratislava'", "'Bzdocha'", "'Shlapka'")>>
-	<<elseif ($activeSlave.nationality is "Slovene")>>
+	<<case "Slovene">>
 		<<set $nickname to either("'Ljubljana'", "'Prince's Stone'")>>
-	<<elseif ($activeSlave.nationality is "a Solomon Islander")>>
+	<<case "a Solomon Islander">>
 		<<set $nickname to either("'Guadalcanal'", "'Honiara'")>>
-	<<elseif ($activeSlave.nationality is "South African")>>
+	<<case "South African">>
 		<<set $nickname to either("'Afrikaner'", "'Apartheid'", "'Cape Town'", "'Johannesburg'", "'Saffer'", "'Shaka'", "'Springbok'", "'Boer'")>>
-	<<elseif ($activeSlave.nationality is "Spanish")>>
+	<<case "Spanish">>
 		<<set $nickname to either("'Barcelona'", "'Jamon'", "'Madrid'", "'Monja'", "'Senora'", "'Siesta'", "'Toreadora'")>>
-	<<elseif ($activeSlave.nationality is "Sri Lankan")>>
+	<<case "Sri Lankan">>
 		<<set $nickname to either("'Ceylon'", "'Colombo'")>>
-	<<elseif ($activeSlave.nationality is "Sudanese")>>
+	<<case "Sudanese">>
 		<<set $nickname to either("'Gordon's Revenge'", "'Khartoum'", "'Nubian'", "'Omdurman'")>>
-	<<elseif ($activeSlave.nationality is "Surinamese")>>
+	<<case "Surinamese">>
 		<<set $nickname to either("'Bouterse'", "'Paramaribo'")>>
-	<<elseif ($activeSlave.nationality is "Swedish")>>
+	<<case "Swedish">>
 		<<set $nickname to either("'Ikea'", "'Norse'", "'Stockholm'", "'Sweden Yes'")>>
-	<<elseif ($activeSlave.nationality is "Swiss")>>
+	<<case "Swiss">>
 		<<set $nickname to either("'Alpine'", "'Geneva'", "'Numbered Account'", "'Schlampe'", "'Zurich'", "'Neutral'", "'Banker'")>>
-	<<elseif ($activeSlave.nationality is "Syrian")>>
+	<<case "Syrian">>
 		<<set $nickname to either("'Aleppo'", "'Damascus'")>>
-	<<elseif ($activeSlave.nationality is "Taiwanese")>>
+	<<case "Taiwanese">>
 		<<set $nickname to either("'Formosa'", "'Taipei'")>>
-	<<elseif ($activeSlave.nationality is "Tajik")>>
+	<<case "Tajik">>
 		<<set $nickname to either("'Dushanbe'", "'Sarazm'")>>
-	<<elseif ($activeSlave.nationality is "Tanzanian")>>
+	<<case "Tanzanian">>
 		<<set $nickname to either("'Dar es Salaam'", "'Dodoma'", "'Wilderness'", "'Zanzibar'")>>
-	<<elseif ($activeSlave.nationality is "Thai")>>
+	<<case "Thai">>
 		<<set $nickname to either("'Bangcock'", "'Bangkok'", "'Ladyboy'", "'Pattaya'", "'T-Girl'")>>
-	<<elseif ($activeSlave.nationality is "Tongan")>>
+	<<case "Tongan">>
 		<<set $nickname to either("'Friendly'", "'Nuku'alofa'")>>
-	<<elseif ($activeSlave.nationality is "Trinidadian")>>
+	<<case "Trinidadian">>
 		<<set $nickname to either("'Chaguanas'", "'Tobago'", "'Trini'")>>
-	<<elseif ($activeSlave.nationality is "Tunisian")>>
+	<<case "Tunisian">>
 		<<set $nickname to either("'Barbary'", "'Carthaginian'", "'Ifriqiya'", "'Punic'")>>
-	<<elseif ($activeSlave.nationality is "Turkish")>>
+	<<case "Turkish">>
 		<<set $nickname to either("'Ankara'", "'Harem'", "'Istanbul'", "'Kebab'", "'Ottoman'", "'Turkette'", "'Turkish'", "'Turksmell'", "'ErdoÄŸan'")>>
-	<<elseif ($activeSlave.nationality is "Turkmen")>>
+	<<case "Turkmen">>
 		<<set $nickname to either("'Ashgabat'", "'Karakum'")>>
-	<<elseif ($activeSlave.nationality is "Tuvaluan")>>
+	<<case "Tuvaluan">>
 		<<set $nickname to either("'Ellice'", "'Funafuti'")>>
-	<<elseif ($activeSlave.nationality is "Ugandan")>>
+	<<case "Ugandan">>
 		<<set $nickname to either("'Bushbaby'", "'Cannibal'", "'Kampala'")>>
-	<<elseif ($activeSlave.nationality is "Ukrainian")>>
-		<<set $nickname to either("'Chernobyl'", "'Chiki Briki'", "'Cossack'", "'Crimea'", "'Donbass'", "'Euromaidan'", "'Holhina'", "'Holhushka'", "'Kiev'", "'Mail Order'", "'Radioactive'", "'Salo'", "'Stalker'", "'Suki'", "'Svoboda'", "'Bandera'")>>
-	<<elseif ($activeSlave.nationality is "Uruguayan")>>
+	<<case "Ukrainian">>
+		<<set $nickname to either("'Chernobyl'", "'Chiki Briki'", "'Cossack'", "'Crimea'", "'Donbass'", "'Euromaidan'", "'Hohlina'", "'Hohlushka'", "'Kyiv'", "'Radioactive'", "'Salo'", "'Stalker'", "'Suchka'", "'Suka'", "'Svoboda'", "'Bandera'", "'Shlyukha'")>>
+	<<case "Uruguayan">>
 		<<set $nickname to either("'Garra Charrúa'", "'Montevideo'")>>
-	<<elseif ($activeSlave.nationality is "Uzbek")>>
+	<<case "Uzbek">>
 		<<set $nickname to either("'Samarkand'", "'Silk Road'", "'Steppe Princess'", "'Steppe Queen'", "'Tashkent'")>>
-	<<elseif ($activeSlave.nationality is "Vatican")>>
+	<<case "Vatican">>
 		<<set $nickname to either("'Holy See'", "'Pope Joan'")>>
-	<<elseif ($activeSlave.nationality is "Venezuelan")>>
+	<<case "Venezuelan">>
 		<<set $nickname to either("'Caracas'", "'Chavista'", "'Chola'", "'Revolutionary'", "'Socialist'")>>
-	<<elseif ($activeSlave.nationality is "Vietnamese")>>
+	<<case "Vietnamese">>
 		<<set $nickname to either("'Charlie'", "'VC'", "'Saigon'", "'Hanoi'", "'Me Love You Long Time'", "'Me So Horny'", "'Victor Charlie'", "'Viet'")>>
-	<<elseif ($activeSlave.nationality is "Vincentian")>>
+	<<case "Vincentian">>
 		<<set $nickname to either("'Kingstown'", "'Vincy'")>>
-	<<elseif ($activeSlave.nationality is "Yemeni")>>
+	<<case "Yemeni">>
 		<<set $nickname to either("'Khat'", "'Red Sea Pirate'", "'Queen of the Desert'")>>
-	<<elseif ($activeSlave.nationality is "Zambian")>>
+	<<case "Zambian">>
 		<<set $nickname to either("'Livingstone'", "'Lusaka'", "'Victoria Falls'")>>
-	<<elseif ($activeSlave.nationality is "Zimbabwean")>>
+	<<case "Zimbabwean">>
 		<<set $nickname to either("'Bobojan'", "'Grimmy'", "'Harare'", "'Kaffir'", "'Mugabe'", "'Mujiba'", "'Nyombie'", "'Rhodie'", "'Zimbo'")>>
-	<<else>>
+	<<default>>
 		<<set $nickname = either("'Stateless'", "'Refugee'")>>
-	<</if>>
+	<</switch>>
 	<<set $situationDesc = "is $activeSlave.nationality. The slave trade is truly international, and no nation is unrepresented among the masses of sex slaves passed from hand to hand like the chattel they are. Most of the old nations are struggling, and even those still in great shape often find their citizens emigrating to the Free Cities. Some of these emigres do well, and others become human livestock.">>
 	<<set $applyDesc = "is a little proud of her national nickname, as a reminder of who she was and a mark that she still has an identity.">>
 	<<set $notApplyDesc = "realizes that her new identity is truly stateless. In the Free Cities, it does not matter where a slave is from, so long as that slave has value. All slaves belong to the singular nation of the owned, the subordinated, the fucked.">>
 
-<<elseif ($nickname == "white")>>
+<<case "white">>
 	<<set $nickname = either("'Dixie'", "'Down Home'", "'Duchess'", "'Euro Trash'", "'Europa'", "'Grits'", "'Hillbilly'", "'Hollywood'", "'Honky'", "'Ice Queen'", "'Memphis'", "'Pasty'", "'Princess'", "'Snowflake'", "'Top Dollar'", "'Valley Girl'", "'Vanilla'", "'Vegas'", "'White Bread'", "'Yankee'")>>
 	<<set $situationDesc = "is white, which is not uncommon given the collapse of many erstwhile first world nations into depression and the proximity of many Free Cities to majority white areas. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "asian")>>
+<<case "asian">>
 	<<set $nickname = either("'3DPD'", "'Almond'", "'Chinese'", "'Chink'", "'E-Sports'", "'Manila'", "'Me Love You Long Time'", "'Me So Horny'", "'Oriental'", "'Pinoy'", "'Squint'", "'Thaigirl'", "'Tokyo'", "'Waifu'", "'Yellow Fever'")>>
 	<<set $situationDesc = "is asian, which is not uncommon given the huge population of Asia and the poverty of many countries there. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "latina")>>
+<<case "latina">>
 	<<set $nickname = either("'Adorada'", "'Cafe'", "'Chiquita'", "'Chola'", "'Cuzinho'", "'Facil'", "'Mestiza'", "'Mexicali'", "'One Peso'", "'Rio Grande'", "'Senora'", "'Senorita'", "'Shakira'", "'Spicy'", "'Yeyo'")>>
 	<<set $situationDesc = "is latina, which is not uncommon given the poor state of many Central and South American countries and the long diaspora of poor natives of those areas. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "black")>>
+<<case "black">>
 	<<set $nickname = either("'B-Girl'", "'Bottom Bitch'", "'Cocoa'", "'Cotton'", "'Gangsta'", "'His Girl Friday'", "'House Slave'", "'Jungle Fever'", "'Miss'", "'Missie'", "'Mulatto'", "'Quadroon'", "'Sheboon'")>>
 	<<set $situationDesc = "is black, which is not uncommon given the urban collapse afflicting the first world and the wars raging in Africa.  Slaves casually reference race as much as free citizens. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "indo-aryan")>>
+<<case "indo-aryan">>
 	<<set $nickname = either("'Babu'", "'Bhabhi'", "'Bindi'", "'Bollywood'", "'Desi'", "'Durga'", "'Kali Maa'", "'Kama Sutra'", "'Kaur'", "'Mughal'", "'Sati'", "'Sepoy'", "'Shanti'", "'Sim Sim Salabim'", "'Snake Charmer'", "'Subcontinental'", "'Swami'", "'Tigress'", "'Untouchable'", "'Yoga'", "'Zoroastrian'")>>
 	<<set $situationDesc = "is indo-aryan, which is not uncommon given the poverty in many majority indo-aryan countries, and the near-submersion of some others due to rising sea levels. Slaves casually reference race as much as free citizens. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "middle eastern")>>
+<<case "middle eastern">>
 	<<set $nickname = either("'Bibi'", "'Chai Girl'", "'Desert Sun'", "'Dune'", "'Harem Girl'", "'Jasmine'", "'Sandy'", "'Scheherazade'", "'Third Wife'")>>
 	<<set $situationDesc = "is middle eastern, which is not uncommon given the interminable wars and disruptions in that part of the world. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "mixed race")>>
+<<case "mixed race">>
 	<<set $nickname = either("'Colonial'", "'Colored'", "'Creole'", "'Diversity'", "'Hāfu'", "'Half and Half'", "'Half-breed'", "'Half-caste'", "'Interracial'", "'Melting Pot'", "'Melungeon'", "'Miscegenation'", "'Mongrel'", "'Mulatto'", "'Mutt'", "'Octaroon'", "'Pardo'", "'Quadroon'", "'Quadroon'", "'Zambo'")>>
 	<<set $situationDesc = "is mixed race, an ethnic makeup that has always been a target for abuse. Slaves of all races can find something about her to dislike. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "semitic")>>
+<<case "semitic">>
 	<<set $nickname = either("'Baal Worshipper'", "'Biblical'", "'Canaanite'", "'Dead Sea'", "'Good Samaritan'", "'Holy land'", "'Inanna'", "'Ishtar'", "'Lilith'", "'Lost Ark'", "'Nephilim'", "'Philistine'", "'Qedesha'", "'Red Sea'", "'Salome'", "'Sodom and Gomorrah'", "'Whore of Babylon'")>>
 	<<set $situationDesc = "is semitic, which is not uncommon given the many conflicts in countries with semitic minorities. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "malay")>>
+<<case "malay">>
 	<<set $nickname = either("'Bumi'", "'Indon'", "'Island Hopper'", "'Krakatoa'", "'Nāga'", "'Nutmeg'", "'Rani'", "'Samudra Kidul'", "'Sandalwood'", "'Spice Islands'", "'Trade Winds'")>>
 	<<set $situationDesc = "is malay, which is not uncommon given the ongoing poverty in many majority malay countries, and the serious weather patterns savaging that part of the world. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "amerindian")>>
+<<case "amerindian">>
 	<<set $nickname = either("'Deerskin'", "'Eskimo Sister'", "'Firewater'", "'Indio'", "'Injun'", "'Ke-mo Sah-bee'", "'La Malinche'", "'Métis Mother'", "'Moccasins'", "'Pocahontas'", "'Redskin'", "'Reservation'", "'Scalper'", "'Smoke Signal'", "'Squaw'", "'Tiger Lily'", "'Tipi Warmer'", "'Totem Pole'", "'Warpath'", "'Wigwam'")>>
 	<<set $situationDesc = "is amerindian, which is not uncommon given the poverty that still plagues those long-suffering peoples. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "pacific islander")>>
+<<case "pacific islander">>
 	<<set $nickname = either("'Aloha'", "'Breadfruit'", "'Conch Blower'", "'Grass Skirt'", "'Hori'", "'Hula Girl'", "'Longpig'", "'Outrigger'", "'Paradise'", "'Pineapple'", "'Polynesian'", "'Seashell'", "'South Pacific'", "'Tiki Torch'")>>
 	<<set $situationDesc = "is a pacific islander, which is not uncommon given wholesale destruction of many countries in that area by the worsening climate. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "southern european")>>
+<<case "southern european">>
 	<<set $nickname = either("'Aphrodite'", "'Doña'", "'Fine Wine'", "'Garlic Breath'", "'Greaseball'", "'Grecian'", "'Infamis'", "'Lupa'", "'Mediterranean'", "'Meretrix'", "'Odalisque'", "'Olive Oil'", "'Riviera'", "'Roman Nose'", "'Venus'", "'Wog'", "'Bella'")>>
 	<<set $situationDesc = "is southern european, which is not uncommon given the endemic corruption and political collapse in that part of the world. Slaves casually reference race as much or more than free citizens. They absorb the racial peccadilloes of their owners, and many of them bring prejudices from the old world into their slave lives.">>
 	<<set $applyDesc = "now has a constant reminder that as a sex slave she is judged on her appearance first.">>
 	<<set $notApplyDesc = "may feel some gratitude due to your preference that she not be defined by her ethnicity, but this is counterbalanced by the increased independence your kindness inspires.">>
 
-<<elseif ($nickname == "vaginalWhiner")>>
+<<case "vaginalWhiner">>
 	<<set $nickname = either("'Whiny'", "'Squealer'", "'Struggles'", "'Pussy Bitch'", "'Pussy Pain'", "'Shallow'", "'Rape Bait'", "'Tight Cunt'", "'Crybaby'", "'Cunt Vise'")>>
 	<<set $situationDesc = "has a tight pussy and not much skill using it. She still gets fucked, which results in frequent painful situations for her. Her moaning as she takes a big dick earns her the scorn of her fellow slaves.">>
 	<<set $applyDesc = "is embarrassed by her new nickname, and resolves to try harder to address her lack of skill. She hopes she'll get better at sex soon, for her own sake.">>
 	<<set $notApplyDesc = "is a little grateful you've decided to protect her from the other slaves' mockery of her sore little pussy. She still wants to get better at sex, for her own sake.">>
 
-<<elseif ($nickname == "analWhiner")>>
+<<case "analWhiner">>
 	<<set $nickname = either("'Whiny'", "'Squealer'", "'Struggles'", "'Anal Bitch'", "'Ass Pain'", "'Painal'", "'Butt Rape'", "'Tight Ass'", "'Crybaby'", "'Ass Vise'")>>
 	<<set $situationDesc = "has a tight asshole and not much skill taking an anal fuck. She still gets buttraped, which causes her a great deal of anal pain. Her sobbing as she takes a big dick up her tight little asspussy earns her the scorn of her fellow slaves.">>
 	<<set $applyDesc = "is embarrassed by her new nickname, and resolves to try harder to address her lack of skill. She hopes she'll get better at buttsex soon, for her own sake.">>
 	<<set $notApplyDesc = "is a little grateful you've decided to protect her from the other slaves' mockery of her sore little asshole. She still wants to get better at buttsex, for her own sake.">>
 
-<<elseif ($nickname == "girlish")>>
+<<case "girlish">>
 	<<set $nickname = either("'Missie'", "'Slender'", "'Tomboy'", "'Ano'", "'Supermodel'", "'Runway'", "'Toothpick'", "'Zero'", "'Slip'")>>
 	<<set $situationDesc = "has a trim form: her assets are quite modest. The slave society of the Free Cities tends to follow average male desires, which is to say that many slaves find themselves augmented to very large proportions. It's natural that slaves required to carry such burdens should resent her.">>
 	<<set $applyDesc = "is prouder of her lithe form that she was before, and is a little relieved at the added evidence that you don't plan to give her major implants any time soon.">>
 	<<set $notApplyDesc = "realizes that her form isn't necessarily due to some master plan and that you may see fit to change it; she begins to regard the remote surgery with apprehension.">>
 	
-<<elseif ($nickname == "flat")>>
+<<case "flat">>
 	<<set $nickname = either("'Flatty'", "'Ironing Board'", "'Plank'", "'Undersized'", "'Itty Bitty'", "'Flat'", "'DFC'")>>
 	<<set $situationDesc = "has barely any breasts to speak of, she is completely flat. The slave society of the Free Cities tends to follow average male desires, which is to say that many slaves find themselves carrying comically oversized breasts. It's natural that slaves required to carry such burdens should resent her.">>
 	<<set $applyDesc = "further believes that chests should be deliciously flat, and is a little relieved at the added evidence that you don't plan to give her breasts the size of her head any time soon.">>
 	<<set $notApplyDesc = "realizes that her form isn't necessarily due to some master plan and that you may see fit to change it; she begins to regard the remote surgery with apprehension.">>
 
-<<elseif ($nickname == "loose")>>
+<<case "loose">>
 	<<set $nickname = either("'Loose'", "'Used'", "'Welcoming'", "'Noisy'", "'Open'", "'Sloppy'", "'Gaping'", "'Size Queen'", "'Relaxed'", "'Accommodating'")>>
 	<<set $situationDesc = "has taken a lot of dick. Enough dick that her overused holes really show the mileage. She can take the largest cock without a sigh.">>
 	<<set $applyDesc = "is proud of her mileage, now that you've countenanced adding it to your name. Every cock she's taken, she's taken at your command.">>
 	<<set $notApplyDesc = "realizes that she isn't special just because she's been fucked so much, and understands that she'll have to do her best to fuck like a fresh teenager no matter how loose she gets.">>
 
-<<elseif ($nickname == "trap")>>
+<<case "trap">>
 	<<set $nickname = either("'Girldick'", "'Otokonoko'", "'Switch'", "'Spurt'", "'Ganymede'", "'Chai'", "'Thai'", "'Trap'", "'Trappy'", "'Sissy'")>>
 	<<set $situationDesc = "is a Free Cities sex slave, which makes her female. It makes her female despite several obvious physical issues, such as the fact that she's got an androgynous figure, or the fact that she has a penis. Neither of these makes any real difference when a cock gets shoved down her throat or stuffed up her butt, but they're hard not to notice.">>
 	<<set $applyDesc = "accepts that she's a little piece of shemale property.">>
 	<<set $notApplyDesc = "will do her best to serve as a nice little sex slave without explicit reference to how she's put together, or she'll be punished.">>
 
-<<elseif ($nickname == "micropenis")>>
+<<case "micropenis">>
 	<<set $nickname = either("'Bitchdick'", "'Boyclit'", "'Gherkin'", "'Inchworm'", "'Little Dick'", "'Tiny'")>>
 	<<set $situationDesc = "is a Free Cities sex slave, which makes her female. It's not immediately obvious from many angles that she wasn't born that way, since her penis is almost comically small. For her, penetrative sex would be very limited, even if she weren't a Free Cities slave and therefore a perpetual receptacle for dick.">>
 	<<set $applyDesc = "accepts the implicit mockery.">>
 	<<set $notApplyDesc = "is a little relieved to be protected from the mockery, even though her tiny endowment mocks her as it flops around whenever she's used.">>
 
-<<elseif ($nickname == "implants")>>
+<<case "implants">>
 	<<set $nickname = either("'Silicone'", "'Plastique'", "'Blowup Doll'", "'Balloons'")>>
 	<<set $situationDesc = "is full of breast implants. They're so large it's quite obvious they're fake, and the implications are clear: She's a plastic slut, and the other slaves never tire of letting her know it.">>
 	<<set $applyDesc = "accepts the implicit mockery, knowing that her bimbo-esque body is what appeals to <<if def $PC.customTitle>>her $PC.customTitle<<elseif $PC.title isnot 0>>her master<<else>>her mistress<</if>>.">>
 	<<set $notApplyDesc = "is relieved to be protected from the other slaves' mockery over her implants, though she's also a little sad she can't take them as a kind of trademark.">>
 
-<<elseif ($nickname == "bimbo")>>
+<<case "bimbo">>
 	<<set $nickname = either("'Silicone'", "'Plastique'", "'Plastic'", "'Bimbo'", "'Barbie'", "'Blowup Doll'", "'Fuck Toy'", "'Fuckmeat'", "'Brain Dead'")>>
 	<<set $situationDesc = "is full of implants, and stupid beyond stupid. It's obvious she's fake, and her idiocy only confirms it: She's a bimbo slut, and the other slaves never tire of mocking her for it, not caring that she doesn't notice.">>
 	<<set $applyDesc = "doesn't notice the mockery, only that she now has a cute little nickname.">>
 	<<set $notApplyDesc = "would be thankful for this protection from the other slaves' mockery if she saw it as such, or was smart enough to notice it.">>
 
-<<elseif ($nickname == "stupid")>>
+<<case "stupid">>
 	<<set $nickname = either("'Dumb'", "'Dumbass'", "'Idiot'", "'Brain Dead'", "'Retard'", "'Retarded'", "'Straight F Grades'", "'Intellectually Challenged'", "'Stupid'")>>
 	<<set $situationDesc = "is, quite simply, an uneducated dullard. Numerous slaves are a bit dumb, which makes it easier to break them, but she takes the cake and throws it in the trash. Some of the other, smarter slaves, see fit to tease her for it.">>
 	<<set $applyDesc = "accepts this mockery happily, as if she doesn't recognise it for what it is.">>
 	<<set $notApplyDesc = "would be thankful for this protection from the other slaves' mockery if she saw it as such, or was smart enough to notice it.">>
 
-<<elseif ($nickname == "smart")>>
+<<case "smart">>
 	<<set $nickname = either("'Brainiac'", "'Nerd'", "'Smart'", "'Smarty'", "'Prodigy'", "'Einstein'", "'Genius'", "'Geek'", "'Whiz'", "'Professor'", "'Straight A Grades'")>>
 	<<set $situationDesc = "is particularly brainy. A significant number of quality slaves are smart, but she is especially so, and it shows. She learns skills quicker, performs her duties better, and can carry intellectual conversation if allowed. Other slaves deem this enough to mock her.">>
 	<<set $applyDesc = "is proud of her intellect, and pleased that you have made it a part of her identity.">>
 	<<set $notApplyDesc = "accepts that her intellect is merely of slight interest.">>
 
-<<elseif ($nickname == "chubby")>>
+<<case "chubby">>
 	<<set $nickname = either("'Plush'", "'Chubby'", "'Hambeast'", "'Jabba'", "'Bloated'", "'Landwhale'", "'Jiggles'", "'Jiggly'", "'Tubby'", "'Whale'", "'Rotund'", "'Rubenesque'", "'Ample'", "'Jumbo'", "'Double Wide'", "'Feedee'", "'Plump'", "'Thicc'")>>
 	<<set $situationDesc = "is carrying a little extra weight. The cruelty of life as a slave increases your property's willingness to do cruelty where they can get away with it - what is passed to them, they pass to others - so she finds herself mocked for her size.">>
 	<<set $applyDesc = "knows that being fat makes her less valuable on the market, but she begins to accept that she's going to have to put up with being chubby for now.">>
 	<<set $notApplyDesc = "believes that this means she's going to have to lose weight soon, causing her some trepidation.">>
 	
-<<elseif ($nickname == "fat")>>
+<<case "fat">>
 	<<set $nickname = either("'Whale'", "'Baluga'", "'Fatass'", "'Scale Breaker'", "'Lap Crusher'", "'Smothers'", "'Jiggles'", "'Jiggly'", "'Fatty'", "'Piggy'", "'Lardy'", "'Thud'", "'Buffet Closer'", "'Jumbo'", "'Double Wide'", "'Feedee'", "'Bed Breaker'", "'Roller'", "'Hambeast'", "'Jabba'", "'Bloated'")>>
 	<<set $situationDesc = "is carrying a lot of extra weight. The cruelty of life as a slave increases your property's willingness to do cruelty where they can get away with it - what is passed to them, they pass to others - so she finds herself mocked for her size.">>
 	<<set $applyDesc = "knows that being obese makes her less valuable on the market, but she begins to accept that she's going to have to put up with being fat for now.">>
 	<<set $notApplyDesc = "believes that this means she's going to have to lose a lot of weight soon, causing her some trepidation, though deep down she hopes you'll just have it sucked out instead of making her run.">>
 
-<<elseif ($nickname == "muscles")>>
+<<case "muscles">>
 	<<set $nickname = either("'Tank'", "'Amazon'", "'Gunshow'", "'Giant'", "'Gargantua'", "'Snu-Snu'", "'Prepare Yourself'", "'Gymrat'", "'Wonder Woman'", "'She-Hulk'", "'Muscle Barbie'")>>
 	<<set $situationDesc = "is a big girl. Her huge muscles aren't to everyone's taste, but they're quite eye-catching, and give her some interesting sexual possibilities that wouldn't work with, for example, a sex slave not capable of supporting her own body weight on one hand for long periods. She has become the object of mixed admiration and envy from your other stock.">>
 	<<set $applyDesc = "is happy with her nickname; any embarrassment she may have felt about looking like statuary becomes a jet of pride. She's confident that this is the way you want her.">>
 	<<set $notApplyDesc = "she is a sex slave first, last, and always, no matter what her one-rep max is.">>
 
-<<elseif ($nickname == "buttslut")>>
+<<case "buttslut">>
 	<<set $nickname = either("'Anal Addict'", "'Greek'", "'Back Door'", "'Sphincter'", "'Butthole'", "'Swedish'", "'Sodomy'", "'Cornhole'", "'Ass Pussy'", "'Bum-Love'", "'Second Pussy'")>>
 	<<set $situationDesc = "loves it up the butt, and her tastes in sex are hard to miss. She's a sex slave and takes it however it's given, but honest enjoyment is hard to fake and it's pretty obvious how much fun she has when she's bent over and buttfucked. Her typical come-on is to bend over, reach around to spread her buttocks, and wink her anus by alternately clenching and relaxing her sphincter.">>
 	<<set $applyDesc = "knows that whatever the rest of her slave life holds, it will involve her slave rectum holding a lot of dick.">>
 	<<set $notApplyDesc = "understands that she'll have to take what buttsex she can get.">>
 	
-<<elseif ($nickname == "butt toy")>>
+<<case "butt toy">>
 	<<set $nickname = either("'Rim Job'", "'Stinky Pinky'", "'Back Door'", "'Sphincter'", "'Butthole'", "'Reach Around'")>>
 	<<set $situationDesc = "loves it when attention is lavished on her butt, even though she has never done anal. She's a sex slave and takes it however it's given, but honest enjoyment is hard to fake and it's pretty obvious how much fun she has when a client is roughly groping her rear. Her typical come-on is to 'accidentally' find her client's dick hotdogged betwixt her cheeks.">>
 	<<set $applyDesc = "knows that whatever the rest of her slave life holds, it will involve an ever growing amount of attention to her rear.">>
 	<<set $notApplyDesc = "understands that she'll have to take what butt play she can get.">>
 
-<<elseif ($nickname == "cumslut")>>
+<<case "cumslut">>
 	<<set $nickname = either("'Vampire'", "'Sucker'", "'Deep Throat'", "'Throatclit'", "'Throat Meat'", "'No Gag Reflex'", "'Facepussy'", "'Semen Demon'", "'Cumfiend'", "'Succubus'", "'Vacuum'", "'Hoover'", "'Fellatio'", "'Pearl Necklace'", "'Swallows'", "'Gobbler'", "'Pole Smoker'", "'Meat Smoker'", "'Lip Service'", "'Guzzler'", "'Third Pussy'", "'Cocksucker'")>>
 	<<set $situationDesc = "loves her some cum. Most slaves have to put effort into showing enthusiasm when on their knees and presented with the second or third cock in a row. She, on the other hand, maintains such a fetish for the stuff that she'll often suck it out of other slaves' holes, if allowed.">>
 	<<set $applyDesc = "knows that as long as she's your slave, she'll get what she needs.">>
 	<<set $notApplyDesc = "understands that cum is a luxury and she'll have to savor what comes her way naturally.">>
 
-<<elseif ($nickname == "submissive")>>
+<<case "submissive">>
 	<<set $nickname = either("'Doormat'", "'Bootlicker'", "'Sub'", "'Meek'", "'Submissive'", "'Bottom'", "'Clinger'", "'Secondary'", "'Humble'")>>
 	<<set $situationDesc = "loves sexual submission. Whatever she's doing, she likes to be on the bottom. She'd rather be face-fucked than suck, and would rather take a dick than ride one. Some slaves look down on her willingness to put herself even farther below others, while some envy her ability to enjoy things that they have to work to tolerate.">>
 	<<set $applyDesc = "pretends to accept her new nickname obediently, but is secretly pleased by recognition of her submissive nature.">>
 	<<set $notApplyDesc = "understands that being a submissive sex slave doesn't make her special. All sex slaves must submit.">>
 
-<<elseif ($nickname == "humiliation")>>
+<<case "humiliation">>
 	<<set $nickname = either("'Public Display'", "'Showoff'", "'Pornstar'", "'Nudist'", "'Attention Whore'", "'Showgirl'", "'Exhibitionist'", "'Flasher'", "'Flaunter'", "'Showboat'", "'Display Model'")>>
 	<<set $situationDesc = "loves to show off. Where other slaves would blush, get embarrassed, and wish they could cover themselves, she blushes, gets aroused, and enjoys the stares. Most other slaves are jealous of her predilections. Not many slaves naturally enjoy being fucked in public, and she can get off on it.">>
 	<<set $applyDesc = "accepts her new nickname without even pretending not to enjoy it. She's proud to fuck in plain view, and she wants everyone to know it. And fuck her in plain view.">>
 	<<set $notApplyDesc = "understands that she's a sex slave first, and must fuck in private like she were fucking in public.">>
 
-<<elseif ($nickname == "veteran")>>
+<<case "veteran">>
 	<<set $nickname = either("'Village Bicycle'", "'Public Favorite'", "'Whore Queen'", "'Dirty'", "'Worn'", "'Tired-Out'", "'Easy'", "'Cumdump'")>>
 	<<set $situationDesc = "has been with you for a while, and she's gotten fucked a lot. Hundreds and hundreds of times over many weeks. Though she does her best, at times it can be obvious that there's very little that surprises her any more. She's forgotten more sexual experience than many of your other slaves remember.">>
 	<<set $applyDesc = "knows that you've noticed all her hard work. Getting fucked day in and day out is harder than digging ditches, and she's a veteran ditchdigger.">>
 	<<set $notApplyDesc = "understands that even though she's been fucked so much, she's still just meat; she isn't special.">>
 
-<<elseif ($nickname == "cow")>>
+<<case "cow">>
 	<<set $nickname = either("'Dairy Queen'", "'Holstein'", "'Bessie'", "'Milk Cans'", "'Cow'", "'Cowbell'", "'Milky Udders'", "'Creamy'", "'Milkmaid'", "'Milk Fountain'", "'Milk Factory'")>>
 	<<set $situationDesc = "is a good stock animal. Her body efficiently turns the cheap slave nutrition produced by your arcology into a never-ending river of rich milk.">>
 	<<set $applyDesc = "knows that her future involves many hours having her nipples gently tugged by a milking machine.">>
 	<<set $notApplyDesc = "understands that she must continue to be a good milking slave, but that such duties do not necessarily define her.">>
 
-<<elseif ($nickname == "novice")>>
+<<case "novice">>
 	<<set $nickname = either("'Fumbles'", "'Calamity'", "'Clumsy'", "'Fresh Meat'", "'Slippery'", "'Sorry'", "'Fresh'", "'Innocent'", "'Novice'")>>
 	<<set $situationDesc = "does her best; she really tries. But she simply hasn't mastered the skills that more experienced sex slaves take for granted. Though this can be annoying and at times even painful, it is a source of occasional slapstick comedy.">>
 	<<set $applyDesc = "has a constant reminder that no matter how skilled a courtesan she becomes, some of her greatest hits will be told as amusing anecdotes for the rest of her service.">>
 	<<set $notApplyDesc = "understands that what matters is not what she did yesterday, or how much they liked it, but what she does today, and how much they like it.">>
 
-<<elseif ($nickname == "head girl")>>
+<<case "head girl">>
 	<<set $nickname = either("'Mistress'", "'On Your Knees'", "'Bottom Bitch'", "'Top'", "'Favorite'", "'Perfect'", "'Mrs.'")>>
 	<<set $situationDesc = "occupies a place in the hierarchy of your penthouse that is certainly one which encourages nicknaming. Your other slaves view her with mixed envy, adoration, emulation, and apprehension. She is someone to curry favor with, to offer sexual favors, and at times someone to avoid. To the devoted slave her closeness to you is enviable; to the rebellious slave her alliance with you is traitorous.">>
 	<<set $applyDesc = "was already proud of and happy with her exalted position, but now she is all the more so. She had always nursed the secret fear that this was temporary, but her place at your right hand is now part of her name.">>
 	<<set $notApplyDesc = "begins to fear a little that she may one day be supplanted, since you did not think it right to make her place a part of her name.">>
 
-<<elseif ($nickname == "Concubine")>>
+<<case "Concubine">>
 	<<set $nickname = either("'Missus'", "'Mrs.'", "'Beauty'", "'Empress'", "'Queen'", "'Princess'", "'Contessa'")>>
 	<<set $situationDesc = "occupies a place in the hierarchy of your penthouse that is certainly one which encourages nicknaming. Your other slaves view her with mixed envy and admiration. She has much of the luxury of the Head Girl and none of the responsibility, and all she has to do for this exalted place is keep your sexual satisfaction as her prime goal.">>
 	<<set $applyDesc = "was already proud of and happy with her exalted position, but now she is all the more so. She had always nursed the secret fear that this was temporary, but her place in your bed is now part of her name.">>
 	<<set $notApplyDesc = "begins to fear a little that she may one day be supplanted, since you did not think it right to make her place a part of her name.">>
 
-<<elseif ($nickname == "Attendant")>>
+<<case "Attendant">>
 	<<set $nickname = either("'Healing Hand'", "'Helping Hand'", "'Bath Girl'", "'Spa Mother'", "'Steam Queen'", "'Warm Water'", "'Mist Queen'", "'Misty'")>>
 	<<set $situationDesc = "is loved by almost every slave in your penthouse. Getting a chance to go and spend some time in her spa is a wonderful treat, for which slaves are willing to work very hard. She's very willing to help them find sexual release, but mostly just provides minor care and an understanding ear for their troubles.">>
 	<<set $applyDesc = "enjoys helping your girls, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes helping your girls and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Madam")>>
+<<case "Madam">>
 	<<set $nickname = either("'Mother'", "'Boss Bitch'", "'Pimp Queen'", "'Pimparella'", "'Whore Queen'", "'Brothel Queen'", "'Pimp Hand'")>>
 	<<set $situationDesc = "is in an unusually responsible and pragmatic position, for a slave. She runs her whores' lives with almost total control, overseeing the sale of their bodies day in, day out. Some resent her, some love her, but all depend on her.">>
 	<<set $applyDesc = "enjoys running a whorehouse, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes running a whorehouse and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "DJ")>>
+<<case "DJ">>
 	<<set $nickname = either("'Celebutante'", "'Club Queen'", "'Club Princess'", "'Club Idol'", "'Arcology Idol'", "'LP'", "'EP'", "'SuperBass'", "'Bassgirl'", "'Subwoofers'", "'Bass Slut'", "'DJ Whore'")>>
 	<<set $situationDesc = "has a leadership role that requires decisiveness and discretion, but has to maintain a role of flirtatiousness and fun, at the same time. Other slaves marvel at how she must give another slut orders one moment, and girlishly giggle at a prominent citizen the next.">>
 	<<set $applyDesc = "enjoys being one of the most idolized girls in the arcology, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes being one of the most idolized girls in the arcology and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Recruiter")>>
+<<case "Recruiter">>
 	<<set $nickname = either("'Trapper'", "'Cam Queen'", "'Slaver'", "'Snake'", "'Spider'", "'Slavecatcher'", "'Camgirl'", "'Honeytrap'", "'Honeypot'")>>
 	<<set $situationDesc = "is fundamentally a liar, in her role as recruiter. She must constantly lie by omission if not by commission, telling everyone interested in slavery all about everything good about being your slave, while leaving out the fundamental reality of sexual servitude.">>
 	<<set $applyDesc = "enjoys seeing girls go from faces on a screen to fellow fuckslaves, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes making girls go from faces on a screen to fellow fuckslaves and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Wardeness")>>
+<<case "Wardeness">>
 	<<set $nickname = either("'Rapist'", "'Snake'", "'Spider'", "'Nightstick'", "'Jailoress'", "'Interrogatrix'", "'Inquisitrix'", "'Stoolie'")>>
 	<<set $situationDesc = "has perhaps the most hated role among your slaves. Her charges hate her, of course. But almost every slave who was once one of her charges hates her too, for they have not forgotten how her whim was once the law to them.">>
 	<<set $applyDesc = "enjoys having a row of cells full of slaves to abuse, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes having a row of cells full of slaves to abuse and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Milkmaid")>>
+<<case "Milkmaid">>
 	<<set $nickname = either("'Dairy Queen'", "'Strong Hands'", "'Cowhand'", "'Cowpoke'", "'Milktugger'", "'Cream Queen'")>>
 	<<set $situationDesc = "has a physically demanding and emotionally rewarding role. It's hard work, hauling milk and shifting cows all day, but her girls love her. It's hard not to love someone when you depend on them so totally.">>
 	<<set $applyDesc = "enjoys being a milkmaid, despite the tough work, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes being a milkmaid, despite the tough work, and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Collectrix")>>
+<<case "Collectrix">>
 	<<set $nickname = either("'Cum Queen'", "'Buttfucker'", "'Prostate Poker'", "'Extractrix'", "'Sodomizer'", "'Orgasmotron'")>>
 	<<set $situationDesc = "is required to fuck more exhaustingly than any other slave in the arcology. It's one thing to take dick all day; it's quite another to be expected to constantly massage prostates to orgasm. Naturally, the other slaves notice.">>
 	<<set $applyDesc = "really enjoys being expected to bone butts constantly, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes being expected to bone butts constantly and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Schoolteacher")>>
+<<case "Schoolteacher">>
 	<<set $nickname = either("'Schoolteacher'", "'Sensei'", "'Teach'", "'Principal'", "'Professor'", "'Schoolmistress'", "'Ruler'", "'Profesora'", "'Headmistress'")>>
 	<<set $situationDesc = "might consider her role boring, if she weren't allowed to use sexual abuse as a correction for poor attentiveness. As it is, her sexual aggressiveness draws much open comment and some private infatuation from the students.">>
 	<<set $applyDesc = "likes teaching, especially because she's allowed to use the students, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes teaching, especially because she's allowed to use the students, and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "Stewardess")>>
+<<case "Stewardess">>
 	<<set $nickname = either("'Martinent'", "'Perfectionist'", "'Inspectrix'", "'Top Mop'", "'Concierge'", "'Housemistress'")>>
 	<<set $situationDesc = "might consider her role boring, if she weren't allowed to use sexual abuse as a correction for poor work. As it is, her sexual aggressiveness draws much open comment and some private infatuation from the servants.">>
 	<<set $applyDesc = "likes being in charge of household tasks, especially because she's allowed to use the servants, and is happy to learn that the role is part of her name now.">>
 	<<set $notApplyDesc = "is a bit sad that her role isn't part of her name, since she likes being in charge of household tasks, especially because she's allowed to use the servants, and now wonders whether she'll be allowed to keep doing so.">>
 
-<<elseif ($nickname == "bodyguard")>>
+<<case "bodyguard">>
 	<<set $nickname = either("'Aegis'", "'Amazon'", "'Paladin'", "'Athena'", "'Diana'", "'Widow'", "'Terminatrix'", "'Bloody'", "'Gunsmoke'")>>
 	<<set $situationDesc = "divides your other slaves. She is a physically intimidating sight, wearing normal slave attire and obviously sexually available, but also carrying a sword across her back and an automatic weapon at her hip. Some revere her unique position of responsibility, while others mock how far she steps outside the bounds of sexual slavery.">>
 	<<set $applyDesc = "knew a while ago that she was likely to spend some time shadowing your every move. But now, she understands that not only is your life in her hands, it is going to remain so. She is almost awed by the responsibility.">>
 	<<set $notApplyDesc = "realizes to her apprehension that she may someday be a simple sex slave again, respected for her holes rather than her swordswomanship.">>
 
-<<elseif ($nickname == "server")>>
+<<case "server">>
 	<<set $nickname = either("'Bottom'", "'Bedwarmer'", "'Sub'", "'Girltoy'", "'Slave Slut'", "'Please No'", "'Lovergirl'", "'House Slave'")>>
 	<<set $situationDesc = "holds a place in the hierarchy of your penthouse that almost demands a nickname. She is the lowest of the low, below even your other slaves. She is a pitiable creature, living with a large number of sexually charged people, slave and free, all of whom have the right to demand any sexual service they wish of her.">>
 	<<set $applyDesc = "has become almost proud of her strange, exhausting situation. Hers is not the struggle of slaves to know their place, for she knows hers. It is on the bottom.">>
 	<<set $notApplyDesc = "begins to hope a little that maybe she can rise beyond her current station.">>
 
-<<elseif ($nickname == "nipples")>>
+<<case "nipples">>
 	<<set $nickname = either("'Eye Hazard'", "'THO'", "'Nips'", "'Puffy'", "'Pointy'", "'Titclits'", "'Dicknipples'")>>
 	<<set $situationDesc = "has a pair of nipples that are hard to ignore. Whenever she's sexually aroused, they jut proudly from her chest. As a result, it's totally impossible for her to conceal arousal. When she's ready for it, her big nipples let the whole world know she's easy.">>
 	<<set $applyDesc = "is proud of the nickname, almost amusingly so. She flaunts her nipples in a way she didn't before.">>
 	<<set $notApplyDesc = "accepts that her nipples are just another part of her, and that if she pokes those who fuck her in the missionary position a little, that's all right.">>
 
-<<elseif ($nickname == "areolae")>>
+<<case "areolae">>
 	<<set $nickname = either("'Headlights'", "'Broad Based'", "'Highbeams'", "'Cans'", "'Areolae'", "'Dark Circles'")>>
 	<<set $situationDesc = "has areolae broader than many slaves' entire breasts. Some slaves find them unattractive, making them an easy target for mockery; others like them, and playfully torment her by giving her a nickname based on them.">>
 	<<set $applyDesc = "is proud of the nickname, almost amusingly so. She flaunts her lovely broad areolae happily, the nipples in their centers hard.">>
 	<<set $notApplyDesc = "accepts that her broad areolae are just another part of her, just like her big tits.">>
 
-<<elseif ($nickname == "lips")>>
+<<case "lips">>
 	<<set $nickname = either("'DSLs'", "'Pillows'", "'Kissy'", "'Facepussy'", "'Beestung'", "'Ducklips'")>>
 	<<set $situationDesc = "has lovely lips. They're so big she can hardly talk straight, and they even hinder her ability to communicate any facial expression other than a desire to be facefucked. This is appropriate, as she spends a lot of time getting facefucked.">>
 	<<set $applyDesc = "accepts that her big lips define her. Even more than before, she presents her mouth for oral sex whenever she flirts, and she views her throat as her primary sexual organ.">>
 	<<set $notApplyDesc = "accepts that her mouth is only one of her holes, and that as a sex slave she'll be taking cock in all of them, even if her lips are huge.">>
 
-<<elseif ($nickname == "mark")>>
+<<case "mark">>
 	<<set $nickname = either("'Marked'", "'Chosen'", "'Breeder'", "'Special'", "'Ass Kisser'", "'Favors'", "'Connections'")>>
 	<<set $situationDesc = "an Elite Breeder. She has permanently been marked as the mother of societies children. If she isn't currently swelling with life, she will be soon. However, she is also granted special benefits befitting the mother of future generations of gifted children.">>
 	<<set $applyDesc = "takes pride in her new nickname and the bond it displays between her and her sire. She has to make sure that it doesn't go to her head, though.">>
 	<<set $notApplyDesc = "understands that she is expected to obey and fuck just like any of your other slaves, regardless of her status as a breeder.">>
 
-<<elseif ($nickname == "broodmother")>>
+<<case "broodmother">>
+	<<set $nickname = either("'Broodmother'", "'Breeder'", "'Naedoko'", "'Nursery'", "'Bakery'", "'Baby Factory'")>>
+	<<set $situationDesc = "is a Broodmother. Her belly is enormous, unavoidable evidence that her life has been dedicated to carrying children. Her taut belly is stuffed with her brood and barely gets smaller with every child born from her.">>
+	<<set $applyDesc = "takes a bit of solace from her new hope in her nickname that she will be kept in good shape and not have to worry about her pregnancy draining her, but also a bit of fear from her suspicion that she'll remain this way until she's out of eggs.">>
+	<<set $notApplyDesc = "understands that she is expected to obey, work, and fuck just like any of your other slaves, regardless of how big her pregnancy is.">>
+	
+<<case "hyperbroodmother">>
 	<<set $nickname = either("'Broodmother'", "'Tentacle Raped'", "'Naedoko'", "'Nursery'", "'Seedbed'", "'Bursting'", "'Baby Factory'")>>
 	<<set $situationDesc = "is a Broodmother. Her belly is enormous, unavoidable evidence that her life has been dedicated to carrying children. Her taut belly constantly bulges and squirms from her brood writhing within her and it is a very real possibility that she may pop.">>
 	<<set $applyDesc = "takes a bit of solace from her new hope in her nickname that she will be kept in good shape and not have to worry about her pregnancy draining her, but also a bit of fear from her suspicion that she'll remain this way until she dies or her body is used up.">>
 	<<set $notApplyDesc = "understands that she is expected to obey, work, and fuck just like any of your other slaves, regardless of how big her pregnancy is.">>
 
-<<elseif ($nickname == "hyperpreg")>>
+<<case "hyperpreg">>
 	<<set $nickname = either("'Hyperbreeder'", "'Waterslide'", "'Squirmy'", "'Hyperfertile'", "'Bulgey'", "'Bursting'", "'Balloon'", "'Clown Car'")>>
 	<<set $situationDesc = "is a breeding slave. Her belly is huge, unavoidable evidence that she's very pregnant. Her taut belly constantly bulges and squirms from her brood writhing within her and it is a very real possibility that she may pop.">>
 	<<set $applyDesc = "takes a bit of solace from her new hope at her nickname that she will be kept in good shape and not have to worry about the size of her pregnancy, and a bit of fear from her suspicion that producing babies is her whole future.">>
 	<<set $notApplyDesc = "understands that she is expected to obey, work, and fuck just like any of your other slaves, regardless of how big her pregnancy is.">>
 
-<<elseif ($nickname == "babymaker")>>
+<<case "babymaker">>
 	<<set $nickname = either("'Daddy'", "'Sirer'", "'Potent'", "'Cum Cannon'", "'Baby Maker'", "'Womb Filler'", "'Fire Hose'", "'Baker'", "'Popper'", "'Belly Popper'", "'Breeding Bull'", "'Breeding Stud'", "'Breeding Stallion'", "'Breeding Boar'")>>
-	<<set $situationDesc = "is a terror to any fertile girl she fucks. horrifically potent, she leaves a trail of pregnancies in her wake. A great deal of the babies in your slaves might just be hers.">>
+	<<set $situationDesc = "is a terror to any fertile girl she fucks. Horrifically potent, she leaves a trail of pregnancies in her wake. A great deal of the babies in your slaves might just be hers.">>
 	<<set $applyDesc = "takes a bit of pride from her new nickname and hopes you'll keep letting her knock bitches up.">>
 	<<set $notApplyDesc = "understands that she is a slave and it is not her place to decide who gets pregnant and who doesn't.">>
 
-<<elseif ($nickname == "superSquirter")>>
+<<case "superSquirter">>
 	<<set $nickname = either("'Baby'", "'Bedwetter'", "'Squirter'", "'Gusher'", "'Needs Diapers'", "'Panty Wetter'", "'Super Soaker'", "'Geyser'", "'Girlcum'", "'Fountain'")>>
 	<<set $situationDesc = "completely soaks herself and her partners whenever she cums. Every orgasm from her unleashes a waterfall of girlcum from her pussy.">>
 	<<set $applyDesc = "takes pride in the amount of girlcum she makes, even though it looks like she peed herself when she cums with her clothes on.">>
 	<<set $notApplyDesc = "understands that she must learn to control herself and stop soaking her partners, clothes and bed.">>
 
-<<elseif ($nickname == "labia")>>
+<<case "labia">>
 	<<set $nickname = either("'Flaps'", "'Petals'", "'Blooming'", "'Folds'", "'Flower'", "'Roastie'", "'Meatflaps'")>>
 	<<set $situationDesc = "has pretty pussylips, larger than most girls'. When she's aroused they announce her state to the whole world, becoming engorged with lust. Other slaves can't help but notice, and mock her uniqueness down there.">>
 	<<set $applyDesc = "really starts to see the appearance of her pussy as a trademark. She's prouder of it than she was before, and she enjoys sex a bit more too, really appreciating it when she gets to feel another slave gently nibble her lovely folds.">>
 	<<set $notApplyDesc = "accepts that the most important part of her vagina is the warm, wet interior, not the generously endowed exterior.">>
 
-<<elseif ($nickname == "old")>>
+<<case "old">>
 	<<set $nickname = either("'Auntie'", "'Oba-san'", "'Cougar'", "'Mommy'", "'Mother'", "'Okā-san'", "'Big Sis'", "'Onē-san'", "'Cradle Robber'", "'MILF'", "'Mature'", "'Jukusei'", "'Seasoned'")>>
 	<<set $situationDesc = "is older than the average Free Cities slave. It has its downsides; she's worth less at sale and her earning potential as a whore is lower. But, on the other hand, good experience is irreplaceable, and in your experience all slaves feel remarkably similar inside, regardless of age. Nevertheless, some younger slaves resent her.">>
 	<<set $applyDesc = "understands that far from being a mockery, your sanction has turned an intended insult into a reference to the advantages of her years.">>
 	<<set $notApplyDesc = "understands that she must do her best to fuck like the teenager she isn't.">>
 
-<<elseif ($nickname == "reallyold")>>
+<<case "reallyold">>
 	<<set $nickname = either("'Granny'", "'Grandma'", "'GMILF'", "'Obā-chan'", "'Senior'", "'Senior Citizen'", "'Aged'", "'Generation X'")>>
 	<<set $situationDesc = "is old. Really old. Old enough to be a grandmother. This, naturally, makes her one of the most experienced sluts in the arcology, a desirable quality in and of itself. Many of the younger slaves mock her relentlessly for her age.">>
 	<<set $applyDesc = "accepts her new nickname with pride. This acknowledgement of her age has her ready to show these young sluts a thing or two.">>
 	<<set $notApplyDesc = "understands that she must do her best to fuck like the teenager she once was.	">>
 
-<<elseif ($nickname == "young")>>
+<<case "young">>
 	<<set $nickname = either("'Precocious'", "'Jailbait'", "'Pedobait'", "'Pocket Pussy'", "'Underage'", "'Lolita'", "'Loli'", "'Juliet'", "'Baby'", "'Babycakes'", "'Party Van'", "'PTHC'", "'POMF'", "'Candydoll'", "'Imouto'")>>
 	<<if random(1, 1500) <= 100>>
 		<<if ($activeSlave.physicalAge < 13)>>
@@ -951,73 +963,73 @@
 	<<set $applyDesc = "understands that far from being a mockery, your sanction has turned an intended insult into a reference to the appeal of her years.">>
 	<<set $notApplyDesc = "understands that despite her young age she must do her best to fuck like the most veteran of whores.">>
 
-<<elseif ($nickname == "trans")>>
+<<case "trans">>
 	<<set $nickname = either("'Surprise'", "'Queen'", "'Shemale'", "'Missie'", "'Girly'", "'Legs Crossed'", "'Trap'")>>
 	<<set $situationDesc = "might have looked like a sissy or a trap at some point, but she no longer does. She has the curves and the face to be mistaken for a natural woman if she wears clothes that conceal her cock, which is an ability with all sorts of interesting uses. Mockery always fixes on what's unusual, of course, and some of your other slaves even envy her equipment.">>
 	<<set $applyDesc = "believes that you approve of her as she is now, and that she can treat her dick as an asset.">>
 	<<set $notApplyDesc = "understands that she must do her best to fuck like the natural girl she isn't.">>
 
-<<elseif ($nickname == "amp")>>
+<<case "amp">>
 	<<set $nickname = either("'Pocket Pussy'", "'Stumps'", "'Nubs'", "'Fucknugget'", "'Cocksock'", "'Fleshlight'", "'Onahole'", "'Dickholster'")>>
 	<<set $situationDesc = "is a fun little fucktoy, a limbless torso with nice wet holes than can be used regardless of her feelings. Giving a poor quadruple amputee a nickname might seem like stooping to wanton cruelty, but other slaves are willing to call her anything to take their minds off their own status.">>
 	<<set $applyDesc = "takes a tiny bit of solace from her nickname, hoping that by accepting it, you were expressing an enjoyment of her attenuated body.">>
 	<<set $notApplyDesc = "understands that she would be a sex toy even if she still had arms and legs.">>
 
-<<elseif ($nickname == "blind")>>
+<<case "blind">>
 	<<set $nickname = either("'Blind'", "'Stares'", "'No-Sight'", "'Deadeye'", "'Sightless'", "'Crash'")>>
 	<<set $situationDesc = "is blind. Her dull eyes reveal her condition. She has to feel her way between jobs and is at the mercy of everyone.">>
 	<<set $applyDesc = "accepts that her disability defines her. She keeps her eyes wide open, no longer fearing what others say about them.">>
 	<<set $notApplyDesc = "understands that she is expected to obey, work, and fuck just like any of your other slaves, regardless of her eyesight.">>
 
-<<elseif ($nickname == "preg")>>
+<<case "preg">>
 	<<set $nickname = either("'Broodmother'", "'Breeder'", "'Breeding Cow'", "'Breeding Sow'", "'Breeding Bitch'", "'Breeding Stock'", "'Breeding Mare'", "'Mare'", "'Fertile'", "'Mother'", "'Mommy'", "'Ninpuchan'", "'Preggers'")>>
 	<<set $situationDesc = "is a breeding slave. Her belly seems to grow daily, unavoidable evidence that she's pregnant. Most men prefer slaves without pregnant stomachs, but those that enjoy them adore her. She occupies a strange place in slave culture, desired and abhorred, hopeful and fearful.">>
 	<<set $applyDesc = "takes a bit of solace from her new hope at her nickname that she will be allowed to complete her pregnancy, and a bit of fear from her suspicion that producing babies is her whole future.">>
 	<<set $notApplyDesc = "understands that she is expected to obey, work, and fuck just like any of your other slaves, regardless of her pregnancy.">>
 
-<<elseif ($nickname == "hung")>>
+<<case "hung">>
 	<<set $nickname = either("'Tentpole'", "'Hung'", "'Tripod'", "'Third Arm'", "'Long Dong'", "'Bitchbreaker'", "'Swingin' Dick'", "'Long'", "'Shaft'")>>
 	<<set $situationDesc = "is a Free Cities sex slave, which makes her a girl. The pretension is hard to maintain at times, however, as her massive member swings around, gets in the way, sticks out of clothing, and blows huge loads. Half the fun of using her butt is making her absurd dick slap around. It's an obvious target for a nickname, especially since more than one slave has personal experience with how she feels inside them.">>
 	<<set $applyDesc = "enjoys being nicknamed for her dick. She's special, her dick is special, and now that she's been nicknamed for it, she's confident she and her dick will be allowed to go on being special.">>
 	<<set $notApplyDesc = "realizes that she's just a slave girl behind, no matter what's dangling in front, and does her best to take it like one.">>
 
-<<elseif ($nickname == "gelding")>>
+<<case "gelding">>
 	<<set $nickname = either("'Neutered'", "'Nipped'", "'Clipped'", "'Empty'", "'Sackless'", "'Limp'", "'Gelded'", "'Soft'")>>
 	<<set $situationDesc = "is a Free Cities sex slave, which makes her a girl. This is an easier thing for her to accept since her testicles were removed. The lack of testosterone makes her docile and more accepting of her proper role as a receptacle for hard dick. Naturally, other slaves have taken notice.">>
 	<<set $applyDesc = "naturally viewed her own castration as a subject of revulsion and horror. Now, though, she begins to see herself as filling a right and proper role as a gelded slave.">>
 	<<set $notApplyDesc = "realizes that the process of turning her from what she was into what she is did not make her special.">>
 
-<<elseif ($nickname == "short")>>
+<<case "short">>
 	<<set $nickname = either("'Shortstack'", "'Waif'", "'Petite'", "'Cock Sock'", "'Pocket Pussy'", "'Funsize'", "'Miniature'", "'Tiny'", "'Shortstuff'", "'Shorty'")>>
 	<<set $situationDesc = "is fairly low to the ground. This makes her a bit different, sexually; she's better for several oral sex positions, but most standing positions turn into a game of how long her partner can hold her at the appropriate height.">>
 	<<set $applyDesc = "is a little proud that her diminutive stature, once nothing but a source of embarrassment, is apparently significant to you.">>
 	<<set $notApplyDesc = "realizes that she'll just have to reach higher to make up for her height, since you don't consider it special.">>
 
-<<elseif ($nickname == "tall")>>
+<<case "tall">>
 	<<set $nickname = either("'Skyscraper'", "'Basketballer'", "'B-Baller'", "'Everest'", "'Giant'", "'Beanpole'")>>
 	<<set $situationDesc = "is impressively tall for a girl. This makes her sexually convenient, since her holes are at convenient cock height. She spends many of her sexual encounters bent slightly at the waist to allow herself to be taken from behind.">>
 	<<set $applyDesc = "is quite proud of her impressive height, even more so than before. She resolves to tower over other slaves sexually as well as literally.">>
 	<<set $notApplyDesc = "realizes that being tall doesn't make her special, and understands that it's her holes that make her, not how high they are.">>
 
-<<elseif ($nickname == "boobs")>>
+<<case "boobs">>
 	<<set $nickname = either("'Bouncing'", "'Bouncy'", "'Stacked'", "'Hooters'", "'Airbags'", "'Tatas'", "'Melons'", "'Funbags'", "'Jugs'", "'Bristols'", "'Oppai'", "'Bazookas'", "'Norks'", "'Knockers'", "'Chounyuu'")>>
 	<<set $situationDesc = "has large breasts. Pointing this out is about as observant as describing the sky as blue. When she enters a room, they precede her. When she takes it doggy style, they prop her up. Other slaves are envious of the attention she gets, and happy they don't have to carry such burdens.">>
 	<<set $applyDesc = "was of course proud of her huge breasts before this new nickname. Now, though, she accepts them as a sort of trademark.">>
 	<<set $notApplyDesc = "accepts that having titanic tits does not make her special, since what's important is her holes, not her boobs.">>
 
-<<elseif ($nickname == "butt")>>
+<<case "butt">>
 	<<set $nickname = either("'Bootylicious'", "'Jiggly'", "'Wide Load'", "'Moneymaker'", "'Buns'", "'Badonkadonk'", "'Brazilian'", "'Bunda'", "'Milkshake'", "'Tushy'", "'Heiny'", "'Rump'", "'Backside'", "'Thunder Thighs'")>>
 	<<set $situationDesc = "has a large ass. Pointing this out is about as observant as describing the sky as blue. (Though impressive for other reasons, for her sexual partners, since they sometimes have difficulty drawing breath for such remarks.) When she enters a room, it follows her. When she takes it doggy style, it pads penetration to an almost inconvenient degree. Other slaves are envious of the attention she gets, and happy they don't have to carry such burdens.">>
 	<<set $applyDesc = "was of course proud of her huge ass before this new nickname. Now, though, she accepts it as a sort of trademark.">>
 	<<set $notApplyDesc = "accepts that having a massive ass does not make her special, since what's important is her holes, not her buttocks.">>
 
-<<elseif ($nickname == "virgin")>>
+<<case "virgin">>
 	<<set $nickname = either("'Pure'", "'Innocent'", "'Flower'", "'Chaste'", "'Unbroken'", "'Doomed'", "'Chastity'", "'Pristine'", "'Unspoilt'", "'Vestal'")>>
 	<<set $situationDesc = "has never had vanilla sex. This is not unusual in the Free Cities, since many slaveowners value and preserve virginity. Virgins form a separate class of sorts among slaves. Some of them even dislike their status, as having a virgin pussy can often result in a tired tongue or a sore butt.">>
 	<<set $applyDesc = "understands that it's her fate to remain unspoiled a while longer, and redoubles her efforts to do better with her other parts.">>
 	<<set $notApplyDesc = "dreads and anticipates the day when she'll lose her pearl of great price and gain another way to please a man.">>
 
-<</if>>
+<</switch>>
 
 <<EventNameLink $activeSlave>> $situationDesc You begin to overhear your other slaves refer to her as @@.pink;$nickname $activeSlave.slaveName.@@
 
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index f7da0e3431eb2ff43dbba5a7a9c46d72eb963f3d..31f53ec5cfff47b20de81f3581a44c0239570507 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -72,10 +72,17 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 									<<set $activeSlave.career = "a soldier">>
 									<<set $activeSlave.indentureRestrictions = 2>>
 									<<set $activeSlave.indenture = 52>>
+									<<if $activeSlave.eyes == -2>>
+										<<set $activeSlave.eyes = -1>>
+									<</if>>
 									<<set $activeSlave.devotion = random(25,40)>>
 									<<set $activeSlave.trust = random(35,45)>>
 									<<set $activeSlave.health = random(60,80)>>
 									<<set $activeSlave.muscles = 50>>
+									<<if $activeSlave.weight > 130>>
+										<<set $activeSlave.weight -= 100>>
+										<<set $activeSlave.waist = random(-10,50)>>
+									<</if>>
 									<<set $activeSlave.anus = 0>>
 									<<set $activeSlave.analSkill = 0>>
 									<<set $activeSlave.whoreSkill = 0>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index c0584405edd616e3aad0cc384bc15f87624935c3..8564a187f75ef41591fe5b1b0618045e458fba85 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -296,6 +296,7 @@ One of your tenants asks for an interview. He's an effeminate young man; it seem
 <<set $encyclopedia = "Slave Schools">>
 <<set $activeSlaveOneTimeMinAge = Math.max($minimumSlaveAge,10)>>
 <<set $activeSlaveOneTimeMaxAge = 16>>
+<<set $one_time_age_overrides_pedo_mode = 1>>
 <<include "Generate XX Slave">>
 <<set $activeSlave.origin = "She was raised in a radical slave school that treated her with drugs and surgery from a very young age.">>
 <<set $activeSlave.career = "a slave">>
@@ -321,11 +322,11 @@ One of your tenants asks for an interview. He's an effeminate young man; it seem
 
 A young slave is going door to door offering herself for sale on behalf of her owner. It's rare to see a slave obedient enough to be entrusted with her own sale, and she's interesting, so you let her up. She stands in front of your desk and waits for instructions. She's wearing a very skimpy schoolgirl skirt and a white blouse so tight and brief that the tops of her areolae are visible. The badge on her blouse identifies her as a product of one of the Free Cities' legal slave orphanages. You instruct her to tell you about herself.
 <br><br>
-"I was raised and trained by a slave orphanage, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. It is not legal to own underage girls, but it is legal to charge an orphan for the costs of raising her when she reaches $minimumSlaveAge, and those debts are always high enough to enslave her. My <<print $activeSlave.actualAge>>th birthday was yesterday, so I am a slave and for sale now."
+"I was raised and trained by a slave orphanage, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. It is not legal to own underage girls, but it is legal to charge an orphan for the costs of raising her when she reaches $minimumSlaveAge, and those debts are always high enough to enslave her. My <<print $activeSlave.actualAge>>th birthday was yesterday, <<if $activeSlave.actualAge == $minimumSlaveAge>>so I am a slave and for sale now<<else>>so I'm too old to stay at the orphanage any longer<</if>>."
 <br><br>
 "I have been trained for obedience since I came to the orphanage. At <<print Math.min(14, $activeSlave.actualAge - 4)>> they put me on drugs to make sure I'd grow nice T&A. On my <<print Math.min(16, $activeSlave.actualAge - 2)>>th birthday I got my first set of implants. Every time my boobs got used to the implants, I got sent in for a bigger set. I'm on my second set." She unbuttons her blouse and displays a pair of big fake tits. "I've also had my lips done." She blows you a wet kiss.
 <br><br>
-She hikes up her skirt and spins around slowly. "The drugs also made my butt bigger, and I've had my butt done too. Since it wasn't okay to fuck me before I had turned $minimumSlaveAge and been made a slave, I'm a virgin and my anus has never had anything up it, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>." She pulls her buttocks apart to prove it.
+She hikes up her skirt and spins around slowly. "The drugs also made my butt bigger, and I've had my butt done too. <<if $activeSlave.actualAge == $minimumSlaveAge>>Since it wasn't okay to fuck me before I had turned $minimumSlaveAge and been made a slave<<else>>Since my owner thought it would make me more desirable<</if>>, I'm a virgin and my anus has never had anything up it, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>." She pulls her buttocks apart to prove it.
 <br><br>
 "I cost <<print cashFormat(2500)>>, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>."
 
@@ -334,6 +335,7 @@ She hikes up her skirt and spins around slowly. "The drugs also made my butt big
 <<set $encyclopedia = "Slave Schools">>
 <<set $activeSlaveOneTimeMinAge = Math.max($minimumSlaveAge,10)>>
 <<set $activeSlaveOneTimeMaxAge = 16>>
+<<set $one_time_age_overrides_pedo_mode = 1>>
 <<include "Generate XY Slave">>
 <<set $activeSlave.origin = "She was raised in a radical slave school that treated her from a very young age, up to the point that she never experienced male puberty.">>
 <<set $activeSlave.career = "a slave">>
@@ -362,11 +364,11 @@ She hikes up her skirt and spins around slowly. "The drugs also made my butt big
 
 A young slave is going door to door offering herself for sale on behalf of her owner. It's rare to see a slave obedient enough to be entrusted with her own sale, and she's interesting, so you let her up. She stands in front of your desk and waits for instructions. She's wearing a very skimpy schoolgirl skirt and a white blouse so tight and brief that the tops of her areolae are visible. Something is tenting the front of her skirt slightly. The badge on her blouse identifies her as a product of one of the Free Cities' legal slave orphanages. You instruct her to tell you about herself.
 <br><br>
-"I was raised and trained by a slave orphanage, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. It is not legal to own underage girls, but it is legal to charge an orphan for the costs of raising her when she reaches $minimumSlaveAge, and those debts are always high enough to enslave her. My <<print $activeSlave.actualAge>>th birthday was yesterday, so I am a slave and for sale now."
+"I was raised and trained by a slave orphanage, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>. It is not legal to own underage girls, but it is legal to charge an orphan for the costs of raising her when she reaches $minimumSlaveAge, and those debts are always high enough to enslave her. My <<print $activeSlave.actualAge>>th birthday was yesterday, <<if $activeSlave.actualAge == $minimumSlaveAge>>so I am a slave and for sale now<<else>>so I'm too old to stay at the orphanage any longer<</if>>."
 <br><br>
 "I have been trained for obedience since I came to the orphanage. I came as a male, but they reassigned me to female right away. At <<print Math.min(14, $activeSlave.actualAge - 4)>> they put me on drugs to make sure I'd grow nice T&A and look more feminine. Those drugs also stopped my penis from growing much, so it's small, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>. On my <<print Math.min(16, $activeSlave.actualAge - 2)>>th birthday I got my first set of implants. Every time my chest got used to the implants, I got sent in for a bigger set. I'm on my third set." She unbuttons her blouse and displays a pair of fake tits.
 <br><br>
-She hikes up her skirt and spins around slowly, displaying a petite, half-hard cock. "The drugs also made my butt bigger and my hips wider. Since it wasn't okay to fuck me before I had turned $minimumSlaveAge and been made a slave, my anus has never had anything up it, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>." She pulls her buttocks apart to prove it. "I... I would be happy to serve you like I am now <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, or you could send me for surgery to give me a pussy instead, I would like that too, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>."
+She hikes up her skirt and spins around slowly, displaying a petite, half-hard cock. "The drugs also made my butt bigger and my hips wider. <<if $activeSlave.actualAge == $minimumSlaveAge>>Since it wasn't okay to fuck me before I had turned $minimumSlaveAge and been made a slave<<else>>Since my owner thought it would make me more desirable<</if>>, my anus has never had anything up it, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>." She pulls her buttocks apart to prove it. "I... I would be happy to serve you like I am now <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, or you could send me for surgery to give me a pussy instead, I would like that too, <<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>."
 <br><br>
 "I cost <<print cashFormat(2500)>>, <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>."
 
@@ -1373,6 +1375,7 @@ From the looks of all the brochures and extra information included, the associat
 
 <<set $activeSlaveOneTimeMinAge = 18>>
 <<set $activeSlaveOneTimeMaxAge = 18>>
+<<set $one_time_age_overrides_pedo_mode = 1>>
 <<include "Generate XX Slave">>
 <<set $activeSlave.origin = "She was in an orphanage until reaching maturity, at which point she was sold to you.">>
 <<set $activeSlave.devotion = random(-45,-25)>>
@@ -1413,6 +1416,7 @@ Knowing what's coming, the teachers in the facility do train their pupils accord
 
 <<set $activeSlaveOneTimeMinAge = 18>>
 <<set $activeSlaveOneTimeMaxAge = 18>>
+<<set $one_time_age_overrides_pedo_mode = 1>>
 <<include "Generate XY Slave">>
 <<set $activeSlave.origin = "She was in an orphanage until reaching maturity, at which point she was sold to you.">>
 <<set $activeSlave.devotion = random(10,40)>>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index e4d614e66c4605219e8b309bc7dd268bfc74a633..2faccffa5c94275c45f0548e059c2be4f63e9a0f 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -226,11 +226,13 @@ She waits anxiously for your decision.
 	<<set $activeSlave.anus = 1>>
 	<<set $activeSlave.vagina = 3>>
 	<<set $activeSlave.ovaries = 1>>
-	<<set $activeSlave.preg = random(5,39)>>
-	<<set $activeSlave.pregType = 1>>
-	<<set $activeSlave.pregKnown = 1>>
-	<<set $activeSlave.pregWeek = $activeSlave.preg>>
-	<<SetBellySize $activeSlave>>
+	<<if $seePreg != 0>>
+		<<set $activeSlave.preg = random(5,39)>>
+		<<set $activeSlave.pregType = 1>>
+		<<set $activeSlave.pregKnown = 1>>
+		<<set $activeSlave.pregWeek = $activeSlave.preg>>
+		<<SetBellySize $activeSlave>>
+	<</if>>
 	<<set $activeSlave.weight = random(30,135)>>
 	<<set $activeSlave.muscles = random(0,15)>>
 	<<set $activeSlave.oralSkill = 15>>
diff --git a/src/uncategorized/recruiterSelect.tw b/src/uncategorized/recruiterSelect.tw
index 22e964912666d67a7e865b699233769efa2ed583..398766ffde714047266fab53c9f386069dbfe54e 100644
--- a/src/uncategorized/recruiterSelect.tw
+++ b/src/uncategorized/recruiterSelect.tw
@@ -22,7 +22,7 @@
 <br>&nbsp;&nbsp;&nbsp;&nbsp;[[Desperate whores|Recruiter Select][$recruiterTarget = "desperate whores"]] //Likely to be skilled but unhealthy//
 <br>&nbsp;&nbsp;&nbsp;&nbsp;[[Young migrants|Recruiter Select][$recruiterTarget = "young migrants"]] //Young and inexperienced but unhealthy//
 <br>&nbsp;&nbsp;&nbsp;&nbsp;[[Recent Divorcees|Recruiter Select][$recruiterTarget = "recent divorcees"]] //Will be mature//
-<<if ($seeDicks != 100)>>
+<<if ($seeDicks != 100) && $seePreg != 0>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Expectant mothers|Recruiter Select][$recruiterTarget = "expectant mothers"]] //Will be pregnant, and likely unhealthy//
 <</if>>
 <<if ($seeDicks != 0)>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 7f9f441717373b7294330783e8f93f9b83614ec9..dc7ee978a849b73045b2ceded676caf4d724ff28 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -734,7 +734,7 @@ Work on her sex:
 	<</if>>
 <</if>>
 
-<<if $seeExtreme == 1 && $seeHyperPreg == 1 && $permaPregImplant == 1>>
+<<if $seeExtreme == 1 && $seeHyperPreg == 1 && $seePreg != 0 && $permaPregImplant == 1>>
 	<<if $activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$possessiveCap womb is already rented out for the production of calfs.
@@ -742,13 +742,13 @@ Work on her sex:
 		<<if isFertile($activeSlave)>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			$pronounCap could be made into a broodmother.
-		<<elseif ($activeSlave.pregType == 50)>>
+		<<elseif $activeSlave.broodmother > 0>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			$pronounCap has been made into a broodmother.
+			$pronounCap has been made into a <<if $activeSlave.broodmother > 1>>hyper-<</if>>broodmother.
 		<</if>>
 		<<if $activeSlave.indentureRestrictions < 1 && $activeSlave.breedingMark != 1>>
 			<<if isFertile($activeSlave)>>
-				[[Implant a pregnancy generator|Surgery Degradation][$activeSlave.preg = 1,$activeSlave.pregWeek = 1,$activeSlave.pregKnown = 1,$activeSlave.pregType = 50,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "preg"]] //This will have severe effects on $possessive health and mind//
+				[[Implant a pregnancy generator|Surgery Degradation][$activeSlave.preg = 1,$activeSlave.pregWeek = 1,$activeSlave.pregKnown = 1,$activeSlave.pregType = 1,$activeSlave.broodmother = 1,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "preg"]] //This will have severe effects on $possessive health and mind//
 			<</if>>
 		<</if>>
 	<</if>>
@@ -1145,15 +1145,15 @@ Work on her structurally:
 	<<if $activeSlave.indentureRestrictions < 1>>
 	[[Lengthen major bones|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]] | [[Shorten major bones|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
-<<elseif ($activeSlave.height < 185) && ($activeSlave.height >= 150) && ($surgeryUpgrade == 1)>>
+<<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
 	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]] | [[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
-<<elseif ($activeSlave.height < 185) && ($surgeryUpgrade == 1)>>
+<<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
 	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
-<<elseif ($activeSlave.height >= 150) && ($surgeryUpgrade == 1)>>
+<<elseif ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
 	[[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
diff --git a/src/uncategorized/rulesAssistant.tw b/src/uncategorized/rulesAssistant.tw
index fa38f02d0a71223deb1a6145548a0f4f029e3105..86932e58796cd4d4412d16d163a947189893bd38 100644
--- a/src/uncategorized/rulesAssistant.tw
+++ b/src/uncategorized/rulesAssistant.tw
@@ -2279,6 +2279,7 @@ Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</spa
 		<<set $currentRule.surgery.faceShape = "normal">>
 		<<set $currentRule.surgery.lips = 0>>
 		<<set $currentRule.surgery.holes = 0>>
+		<<set $currentRule.pregSpeed = "nds">>
 
 	<<elseif ($currentRule.ID == 2)>>
 		<<set $currentRule.name = "Disobedient Slaves">>
@@ -2356,6 +2357,7 @@ Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</spa
 		<<set $currentRule.surgery.faceShape = "no default setting">>
 		<<set $currentRule.surgery.lips = "no default setting">>
 		<<set $currentRule.surgery.holes = 0>>
+		<<set $currentRule.pregSpeed = "nds">>
 
 	<<elseif ($currentRule.ID == 3)>>
 		<<set $currentRule.name = "Unhealthy Slaves">>
@@ -2432,6 +2434,7 @@ Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</spa
 		<<set $currentRule.surgery.faceShape = "no default setting">>
 		<<set $currentRule.surgery.lips = "no default setting">>
 		<<set $currentRule.surgery.holes = 0>>
+		<<set $currentRule.pregSpeed = "nds">>
 	<</if>>
 
 	<<set $defaultRules[$r-1] = $currentRule>>
@@ -2461,7 +2464,7 @@ Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</spa
 
 	<<link "Add a new rule">>
 
-		<<set _tempRule = {aphrodisiacs: "no default setting", condition: {id: "false"}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting", eyes: "no default setting" }>>
+		<<set _tempRule = {aphrodisiacs: "no default setting", condition: {id: "false"}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting", eyes: "no default setting", pregSpeed: "nds" }>>
 
 		/* pick an ID higher than the highest ID of any existing rule */
 		<<for _tempRule.ID = 1, _r = 0; _r < _length; _r++>>
diff --git a/src/uncategorized/saDevotion.tw b/src/uncategorized/saDevotion.tw
index 687a697b3ab8ce042cdeed433fdff63d44b3afc6..60175a32cfaa69da4f0f45d9f44caea7a31450c1 100644
--- a/src/uncategorized/saDevotion.tw
+++ b/src/uncategorized/saDevotion.tw
@@ -19,7 +19,7 @@
 		<<set $slaves[$i].devotion += 5>>
 		<<set $slaves[$i].trust += 5>>
 	<<elseif $rivalryDuration > 20 and $slaves[$i].devotion < 5>>
-		<<if $personalAttention == $slaves[$i].ID>>
+		<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 			You took everything from $slaves[$i].slaveName and @@.mediumorchid;she hates you for it.@@ Since you won't give her what she wants, she @@.gold;refuses to trust you.@@ Since you are putting such a personal touch into her care, she can't find it in her to rebel as strongly.
 			<<set $slaves[$i].devotion -= 5>>
 			<<set $slaves[$i].trust -= 5>>
@@ -29,7 +29,7 @@
 			<<set $slaves[$i].trust -= 25>>
 		<</if>>
 	<<elseif $rivalryDuration > 10 and $slaves[$i].devotion < 5>>
-		<<if $personalAttention == $slaves[$i].ID>>
+		<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 			She is @@.gold;horrified by you.@@ Your rival taught her a great deal about slave life in your arcology and indulged her deepest fantasies. $slaves[$i].slaveName considers being your pet @@.mediumorchid;a fate worse than death.@@ Since you are putting such a personal touch into her care, maybe you aren't the monster she thought you were. She can't find it in her to hate and fear you as much.
 			<<set $slaves[$i].devotion -= 3>>
 			<<set $slaves[$i].trust -= 3>>
@@ -123,7 +123,7 @@
 
 <<if $slaves[$i].intelligence != 0>>
 <<if $slaves[$i].intelligence >= 3>>
-	<<if $personalAttention == $slaves[$i].ID>>
+	<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 		$slaves[$i].slaveName's @@.deepskyblue;brilliant mind@@ strongly resists slavery, but since you are giving her personal attention you are able to compensate for her genius.
 	<<else>>
 		<<if $slaves[$i].trust < -20>>
@@ -135,7 +135,7 @@
 		<</if>>
 	<</if>>
 <<elseif $slaves[$i].intelligence >= 2>>
-	<<if $personalAttention == $slaves[$i].ID>>
+	<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 		$slaves[$i].slaveName's @@.deepskyblue;highly acute mind@@ naturally resists slavery, but since you are giving her personal attention you are able to compensate for her intelligence.
 	<<else>>
 		<<if $slaves[$i].trust < -20>>
@@ -147,7 +147,7 @@
 		<</if>>
 	<</if>>
 <<elseif $slaves[$i].intelligence >= 1>>
-	<<if $personalAttention == $slaves[$i].ID>>
+	<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
 		$slaves[$i].slaveName's @@.deepskyblue;intelligent mind@@ naturally resists slavery, but since you are giving her personal attention you are able to compensate for her cleverness.
 	<<else>>
 		<<if $slaves[$i].trust < -20>>
diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw
index 670ff70c3c5d379d4b16cd76b7beb7f9ebc175e3..0a9560b2a65ae93238f2f8bd47c63873d8700f70 100644
--- a/src/uncategorized/saDrugs.tw
+++ b/src/uncategorized/saDrugs.tw
@@ -961,7 +961,7 @@
 	<<set $slaves[$i].chem += 2>>
 	<<if $slaves[$i].assignment != "get treatment in the clinic" && $Nurse == 0>>
 		<<if $slaves[$i].pregType > 1>><<set _childCount = "children are">><<else>><<set _childCount = "child is">><</if>>
-		$possessiveCap _childCount growing rapidly within $possessive womb, far faster than $possessive @@.red;poor body can handle.@@<<if $slaves[$i].pregType >= 10>> $possessiveCap rate of growth is straining $possessive womb, she is @@.red;at risk of bursting!@@<</if>>
+		$possessiveCap _childCount growing rapidly within $possessive womb, far faster than $possessive @@.red;poor body can handle.@@<<if $slaves[$i].pregType >= 10 && $slaves[$i].bellyPreg >= 100000>> $possessiveCap rate of growth is straining $possessive womb, she is @@.red;at risk of bursting!@@<</if>>
 		<<set $slaves[$i].health -= ($slaves[$i].preg+$slaves[$i].pregType-$slaves[$i].bellySag)>>
 		<<if $slaves[$i].health <= -100>>
 			$possessiveCap critically poor health @@.orange;caused her to miscarry.@@
diff --git a/src/uncategorized/saGuardsYou.tw b/src/uncategorized/saGuardsYou.tw
index 4f6f9e0c7f37e43e4bcd3e870b0f2903ebe66580..5daec7e79b994725f87cb1c08572d301ff63e3f9 100644
--- a/src/uncategorized/saGuardsYou.tw
+++ b/src/uncategorized/saGuardsYou.tw
@@ -180,124 +180,56 @@ Being continually trusted with your life @@.hotpink;increases her devotion to yo
 
 <<if $bodyguardTrains == 1 && $slaves[$i].devotion > 95 && $slaves[$i].trust > 50 && $slaves[$i].combatSkill > 0 && $slaves[$i].intelligence > 0>>
 	She's confident in her martial skills, but smart enough to know that she isn't immortal, and devoted enough to worry about who will protect you should she die.
-	<<set _bgTrains = 0>>
-	<<for $j = 0; $j < $slaves.length; $j++>>
-		<<if $slaves[$j].assignmentVisible == 1>>
-		<<if $slaves[$j].combatSkill > 0>>
-		<<if canWalk($slaves[$j])>>
-		<<if $slaves[$j].fetish != "mindbroken">>
-		<<if $slaves[$j].devotion > 50>>
-		<<if $slaves[$j].boobs < 8000>>
-		<<if $slaves[$j].preg < 20>>
-			<<set $seed += 1>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-	<</for>>
-	<<if $seed < 2>>
-		<<set $subSlave = 0>>
+	<<set _successorCandidates = $slaves.filter( function(s) { return s.assignmentVisible == 1 && bodyguardSuccessorEligible(s); } )>>
+	<<set _combatSkilled = _successorCandidates.filter( function(s) { return s.combatSkill > 0; })>>
+	<<if _combatSkilled.length < 2>>
+		<<unset $subSlave>>
+		<<set _flawedTrainee = 0>>
 		<<if $slaves[$i].relationship > 1>>
-			<<for $j = 0; $j < $slaves.length; $j++>>
-			<<if $slaves[$j].ID == $slaves[$i].relationshipTarget>>
-			<<if $slaves[$j].combatSkill == 0>>
-			<<if canWalk($slaves[$j])>>
-			<<if $slaves[$j].fetish != "mindbroken">>
-			<<if $slaves[$j].devotion > 50>>
-			<<if $slaves[$j].boobs < 8000>>
-			<<if $slaves[$j].preg < 20>>
-				She does her best to train $slaves[$j].slaveName whenever she can, hoping that her
-				<<if $slaves[$i].relationship > 4>>
-				wife
-				<<elseif $slaves[$i].relationship == 4>>
-				lover
-				<<elseif $slaves[$i].relationship == 3>>
-				girlfriend
-				<<else>>
-				best friend
-				<</if>>
+			<<set $subSlave = $slaves.find( function(s) { return s.ID == $slaves[$i].relationshipTarget && s.combatSkill == 0 && bodyguardSuccessorEligible(s); })>>
+			<<if def $subSlave>>
+				She does her best to train $subSlave.slaveName whenever she can, hoping that her
+				<<if $slaves[$i].relationship > 4>>wife<<elseif $slaves[$i].relationship == 4>>lover<<elseif $slaves[$i].relationship == 3>>girlfriend<<else>>best friend<</if>>
 				can be made capable of stepping into her place.
-				<<set $subSlave = $slaves[$j]>>
-				<<set $seed = 1>>
-			<</if>>
-			<</if>>
 			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</for>>
 		<</if>>
-		<<if $seed == 0>>
-			<<if $Concubine != 0>>
-			<<if $Concubine.combatSkill == 0>>
-			<<if canWalk($Concubine)>>
-			<<if $Concubine.fetish != "mindbroken">>
-			<<if $Concubine.devotion > 50>>
-			<<if $Concubine.boobs < 8000>>
-			<<if $Concubine.preg < 20>>
-				She does her best to train $Concubine.slaveName whenever she can, hoping that your Concubine can be made capable of stepping into her place.
-				<<set $subSlave = $Concubine>>
-				<<set $seed = 1>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-		<</if>>
-		<<if $seed == 0>>
-			<<if $HeadGirl != 0>>
-			<<if $HeadGirl.combatSkill == 0>>
-			<<if canWalk($HeadGirl)>>
-			<<if $HeadGirl.fetish != "mindbroken">>
-			<<if $HeadGirl.devotion > 50>>
-			<<if $HeadGirl.boobs < 8000>>
-			<<if $HeadGirl.preg < 20>>
+		<<if ndef $subSlave>>
+			<<if $HeadGirl != 0 && $HeadGirl.combatSkill == 0 && bodyguardSuccessorEligible($HeadGirl)>>
 				She does her best to train $HeadGirl.slaveName whenever she can, hoping that your Head Girl can be made capable of stepping into her place.
 				<<set $subSlave = $HeadGirl>>
-				<<set $seed = 1>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
 			<</if>>
+		<</if>>
+		<<if ndef $subSlave>>
+			<<if $Concubine != 0 && $Concubine.combatSkill == 0 && $Concubine.devotion > 50 && $Concubine.muscles >= -30 && $Concubine.weight < 150 && $Concubine.butt < 10 && $Concubine.boobs < 25000 && $Concubine.belly < 5000 && $Concubine.balls < 20 && $Concubine.dick < 15 && $Concubine.fuckdoll == 0 && $Concubine.fetish != "mindbroken" && canWalk($Concubine)>>
+				She does her best to train $Concubine.slaveName whenever she can, hoping that your Concubine can be made capable of stepping into her place.
+				<<if $Concubine.boobs >= 8000 || $Concubine.butt >= 10 || $Concubine.belly >= 5000 || $Concubine.balls >= 10 || $Concubine.dick >= 10 || $Concubine.muscles < 0 || $Concubine.weight >= 100>>
+					Her body is poorly suited for combat, but she can learn to work around it with enough effort.
+					<<set _flawedTrainee = either(0,0,0,1,1,2)>>
+				<</if>>
+				<<set $subSlave = $Concubine>>
 			<</if>>
 		<</if>>
-		<<if $seed == 0>>
-			<<if $Wardeness != 0>>
-			<<if $Wardeness.combatSkill == 0>>
-			<<if canWalk($Wardeness)>>
-			<<if $Wardeness.fetish != "mindbroken">>
-			<<if $Wardeness.devotion > 50>>
-			<<if $Wardeness.boobs < 8000>>
-			<<if $Wardeness.preg < 20>>
+		<<if ndef $subSlave>>
+			<<if $Wardeness != 0 && $Wardeness.combatSkill == 0 && bodyguardSuccessorEligible($Wardeness)>>
 				She does her best to train $Wardeness.slaveName whenever she can, hoping that your Wardeness can be made capable of stepping into her place.
 				<<set $subSlave = $Wardeness>>
-				<<set $seed = 1>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
-			<</if>>
 			<</if>>
 		<</if>>
-		<<if $subSlave != 0>>
-		<<if ($slaves[$i].intelligence + $slaves[$i].intelligenceImplant) > random(1,10)>>
-			By the end of the week, she is satisfied that $subSlave.slaveName @@.green;has the combat skill@@ to contribute to your defense.
-			<<for $j = 0; $j < $slaves.length; $j++>>
-			<<if $slaves[$j].ID == $subSlave.ID>>
-				<<set $slaves[$j].combatSkill = 1>>
-				<<break>>
+		<<if ndef $subSlave>>
+			<<set $subSlave = _successorCandidates.find( function(s) { return s.combatSkill == 0; })>>
+			<<if def $subSlave>>
+				She does her best to train $subSlave.slaveName whenever she can, hoping that she can be made capable of stepping into her place.
 			<</if>>
-			<</for>>
 		<</if>>
+		<<if def $subSlave>>
+			<<if ($slaves[$i].intelligence + $slaves[$i].intelligenceImplant - _flawedTrainee) > random(1,10)>>
+				By the end of the week, she is satisfied that $subSlave.slaveName @@.green;has the combat skill@@ to contribute to your defense.
+				<<set _sgy = $slaves.findIndex( function(s) { return s.ID == $subSlave.ID;} )>>
+				<<set $slaves[_sgy].combatSkill = 1>>
+			<</if>>
+		<<else>>
+			She finds no suitable candidates to serve as her replacement, leaving her stressed over your future safety. The worry is exhausting and @@.red;bad for her health.@@
+			<<set $slaves[$i].health -= 3>>
 		<</if>>
 	<<else>>
 		She takes care to look after the skills of your other defensively capable slaves, satisfied that there are enough of them living in your penthouse.
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 0380ff94a0c7c87a298f63a30e42e90246d14278..fdd653c4cc7acef0dc1733fa983ab40f34d3be16 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -289,42 +289,44 @@
 	<</if>>
 <</if>>
 
-<<if ($HeadGirl.fetish == "pregnancy") && canImpreg($slaves[$i], $HeadGirl)>>
-	<<if $arcologies[0].FSRestart == "unset">>
-		$HeadGirl.slaveName promptly @@.lime;impregnates@@ 
-		<<if $HeadGirl.fetishKnown == 1>>
-			$slaves[$i].slaveName, to your Head Girl's considerable @@.hotpink;satisfaction.@@ $slaves[$i].slaveName spent the week regularly getting held down and ejaculated into anytime her superior had cum to spare.
-			<<set $HeadGirl.devotion += 4>>
-		<<else>>
-			$slaves[$i].slaveName. Her eagerness completely exposes her hidden @@.lightcoral;pregnancy kink.@@
-			<<set $HeadGirl.fetishKnown = 1>>
-		<</if>>
-		<<KnockMeUp $slaves[$i] 100 2 $HeadGirl.ID>>
-		<<if ($HeadGirl.fetishStrength > 70) && canImpreg($HeadGirl, $slaves[$i])>>
-			Unsurprisingly, she gives in to her own cravings and also takes $slaves[$i].slaveName's loads until she @@.lime;gets pregnant@@ too.
+<<if $seePreg != 0>>
+	<<if ($HeadGirl.fetish == "pregnancy") && canImpreg($slaves[$i], $HeadGirl)>>
+		<<if $arcologies[0].FSRestart == "unset">>
+			$HeadGirl.slaveName promptly @@.lime;impregnates@@ 
+			<<if $HeadGirl.fetishKnown == 1>>
+				$slaves[$i].slaveName, to your Head Girl's considerable @@.hotpink;satisfaction.@@ $slaves[$i].slaveName spent the week regularly getting held down and ejaculated into anytime her superior had cum to spare.
+				<<set $HeadGirl.devotion += 4>>
+			<<else>>
+				$slaves[$i].slaveName. Her eagerness completely exposes her hidden @@.lightcoral;pregnancy kink.@@
+				<<set $HeadGirl.fetishKnown = 1>>
+			<</if>>
+			<<KnockMeUp $slaves[$i] 100 2 $HeadGirl.ID>>
+			<<if ($HeadGirl.fetishStrength > 70) && canImpreg($HeadGirl, $slaves[$i])>>
+				Unsurprisingly, she gives in to her own cravings and also takes $slaves[$i].slaveName's loads until she @@.lime;gets pregnant@@ too.
+				<<KnockMeUp $HeadGirl 100 2 $slaves[$i].ID>>
+			<</if>>
+		<<elseif  $HeadGirl.fetishKnown == 1>>
+			$HeadGirl.slaveName knows better than to even consider knocking up $slaves[$i].slaveName.
+		<</if>>
+	<<elseif ($HeadGirl.fetish == "pregnancy") && canImpreg($HeadGirl, $slaves[$i])>>
+		<<if $arcologies[0].FSRestart == "unset" && ($HeadGirl.fetishStrength > 70)>>
+			$HeadGirl.slaveName promptly @@.lime;knocks herself up@@ with $slaves[$i].slaveName's 
+			<<if $HeadGirl.fetishKnown == 1>>
+				seed, to your Head Girl's considerable @@.hotpink;satisfaction.@@
+				<<set $HeadGirl.devotion += 4>>
+			<<else>>
+				seed. Her @@.hotpink;pride@@ over her new pregnancy and eagerness to get pregnant completely exposes her hidden, and powerful, @@.lightcoral;pregnancy fetish.@@
+				<<set $HeadGirl.fetishKnown = 1, $HeadGirl.devotion += 4>>
+			<</if>>
 			<<KnockMeUp $HeadGirl 100 2 $slaves[$i].ID>>
+		<<elseif  $HeadGirl.fetishKnown == 1>>
+			$HeadGirl.slaveName knows better than to even consider getting knocked up by $slaves[$i].slaveName.
 		<</if>>
-	<<elseif  $HeadGirl.fetishKnown == 1>>
-		$HeadGirl.slaveName knows better than to even consider knocking up $slaves[$i].slaveName.
-	<</if>>
-<<elseif ($HeadGirl.fetish == "pregnancy") && canImpreg($HeadGirl, $slaves[$i])>>
-	<<if $arcologies[0].FSRestart == "unset" && ($HeadGirl.fetishStrength > 70)>>
-		$HeadGirl.slaveName promptly @@.lime;knocks herself up@@ with $slaves[$i].slaveName's 
-		<<if $HeadGirl.fetishKnown == 1>>
-			seed, to your Head Girl's considerable @@.hotpink;satisfaction.@@
-			<<set $HeadGirl.devotion += 4>>
-		<<else>>
-			seed. Her @@.hotpink;pride@@ over her new pregnancy and eagerness to get pregnant completely exposes her hidden, and powerful, @@.lightcoral;pregnancy fetish.@@
-			<<set $HeadGirl.fetishKnown = 1, $HeadGirl.devotion += 4>>
-		<</if>>
-		<<KnockMeUp $HeadGirl 100 2 $slaves[$i].ID>>
-	<<elseif  $HeadGirl.fetishKnown == 1>>
-		$HeadGirl.slaveName knows better than to even consider getting knocked up by $slaves[$i].slaveName.
+	<<elseif $HeadGirl.fetish != "pregnancy" && $slaves[$i].pregKnown == 1 && $slaves[$i].preg < 30 && $arcologies[0].FSRepopulationFocus == "unset" && $HGSuiteDrugs == 1>>
+		$HeadGirl.slaveName promptly aborts the child growing in $slaves[$i].slaveName since she prefers her girls not harboring someone else's child or loaded down with her own unwanted spawn.
+		<<set $slaves[$i].preg = 0, $slaves[$i].pregType = 0, $slaves[$i].pregSource = 0, $slaves[$i].pregWeek = 0, $slaves[$i].pregKnown = 0>>
+		<<SetBellySize $slaves[$i]>>
 	<</if>>
-<<elseif $HeadGirl.fetish != "pregnancy" && $slaves[$i].pregKnown == 1 && $slaves[$i].preg < 30 && $arcologies[0].FSRepopulationFocus == "unset" && $HGSuiteDrugs == 1>>
-	$HeadGirl.slaveName promptly aborts the child growing in $slaves[$i].slaveName since she prefers her girls not harboring someone else's child or loaded down with her own unwanted spawn.
-	<<set $slaves[$i].preg = 0, $slaves[$i].pregType = 0, $slaves[$i].pregSource = 0, $slaves[$i].pregWeek = 0, $slaves[$i].pregKnown = 0>>
-	<<SetBellySize $slaves[$i]>>
 <</if>>
 
 <<if ($slaves[$i].devotion > 50)>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index e62cc69ad51cbea667e24c04e102d8845ee546c5..e9bbc9d60be2d0df0cb4569db5c91583af57be05 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -2209,7 +2209,7 @@
 		Living in a society that glorifies her paraphilia @@.hotpink;leaves her in perpetual ectasy.@@
 		<<set $slaves[$i].devotion += 5>>
 	<</if>>
-	<<if $slaves[$i].pregType >= 50 && $slaves[$i].pregKnown == 1>>
+	<<if $slaves[$i].broodmother > 0 && $slaves[$i].pregKnown == 1>>
 		She knows she will be pregnant until her body gives out, and @@.hotpink;she couldn't be happier.@@
 		<<set _para = 1>>
 		<<set $slaves[$i].devotion += 5>>
@@ -2972,8 +2972,13 @@
 	<</if>>
 <<case "pregnancy">>
 	<<if $slaves[$i].sexualFlaw != "breeder">>
-		<<if $slaves[$i].preg > 37 && $slaves[$i].pregType >= 50>>
-			She's is nearly bursting with life and giving birth constantly, causing her to pay more sexual attention to pregnancy than to impregnation. @@.yellow;She's become obsessed with breeding.@@
+		<<if $slaves[$i].preg > 37 && $slaves[$i].broodmother > 0>>
+			<<if $slaves[$i].broodmother == 2>>
+				She's nearly bursting with life and giving birth constantly,
+			<<else>>
+				She's stuffed full of child and brings a new life into the world each week, with or without a good fucking,
+			<</if>>
+			causing her to pay more sexual attention to pregnancy than to impregnation. @@.yellow;She's become obsessed with breeding.@@
 			<<set $slaves[$i].sexualFlaw = "breeder">>
 			<<set $slaves[$i].fetishStrength = 100>>
 			<<if $arcologies[0].FSHedonisticDecadence != "unset">>
@@ -2988,7 +2993,7 @@
 				Allowing her to indulge in her fetish to the point of obsession advances hedonism and @@.green;bolsters your reputation.@@
 				<<FSChange "Hedonism" 2>>
 			<</if>>
-		<<elseif $slaves[$i].pregType >= 10 && $slaves[$i].preg > 30>>
+		<<elseif $slaves[$i].bellyPreg >= 120000>>
 			She's so overfull with life that she starts to pay much more sexual attention to pregnancy than to impregnation. @@.yellow;She's become obsessed with breeding.@@
 			<<set $slaves[$i].sexualFlaw = "breeder">>
 			<<set $slaves[$i].fetishStrength = 100>>
@@ -3204,33 +3209,33 @@
 	<<if ($slaves[$i].boobs > 50000)>>
 		Since they are as large as $possessive body can handle, some serum is drained from them.
 		<<set $slaves[$i].boobs -= 100, $slaves[$i].boobsImplant -= 100>>
-	<<elseif ($slaves[$i].boobsImplant > 9000) && (_effect >= 2)>>
+	<<elseif ($slaves[$i].boobsImplant > 25000) && (_effect >= 2)>>
 		As they grow they @@.red;greatly irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 20>>
-	<<elseif ($slaves[$i].boobsImplant > 8000) && (_effect >= 3)>>
+	<<elseif ($slaves[$i].boobsImplant > 15000) && (_effect >= 3)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 10>>
-	<<elseif ($slaves[$i].boobsImplant > 7000) && (_effect >= 4)>>
+	<<elseif ($slaves[$i].boobsImplant > 10000) && (_effect >= 4)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 10>>
-	<<elseif ($slaves[$i].boobsImplant > 6000) && (_effect >= 5)>>
+	<<elseif ($slaves[$i].boobsImplant > 8000) && (_effect >= 5)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 10>>
-	<<elseif ($slaves[$i].boobsImplant > 5000) && (_effect >= 6)>>
+	<<elseif ($slaves[$i].boobsImplant > 6000) && (_effect >= 6)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 10>>
-	<<elseif ($slaves[$i].boobsImplant > 4000) && (_effect >= 7)>>
+	<<elseif ($slaves[$i].boobsImplant > 4500) && (_effect >= 7)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
 		<<set $slaves[$i].health -= 10>>
 	<<elseif ($slaves[$i].boobsImplant > 3000) && (_effect >= 8)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
-		<<set $slaves[$i].health -= 10>>
+		<<set $slaves[$i].health -= 7>>
 	<<elseif ($slaves[$i].boobsImplant > 2000) && (_effect >= 9)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
-		<<set $slaves[$i].health -= 10>>
+		<<set $slaves[$i].health -= 5>>
 	<<elseif ($slaves[$i].boobsImplant > 1000) && (_effect > 9)>>
 		As they grow they @@.red;irritate@@ the tissue of $possessive breasts.
-		<<set $slaves[$i].health -= 10>>
+		<<set $slaves[$i].health -= 3>>
 	<</if>>
 <</if>>
 
@@ -3776,7 +3781,7 @@
 	<<if ($slaves[$i].fuckdoll == 0) && ($slaves[$i].fetish != "mindbroken")>>
 		<<if ($slaves[$i].fetish == "pregnancy")>>
 			<<if $slaves[$i].preg >= 40>>
-				She's full-term and never been hornier. Her pregnancy fetish combined with her ripe belly confers a @@.green;huge improvement in her sexual appetite.@@
+				She's full-term and has never been hornier. Her pregnancy fetish combined with her ripe belly confers a @@.green;huge improvement in her sexual appetite.@@
 				<<set $slaves[$i].energy += 5>>
 			<<elseif $slaves[$i].preg > 30>>
 				Being a pregnancy fetishist and hugely pregnant confers an @@.green;improvement in her sexual appetite.@@
@@ -3890,12 +3895,12 @@
 			<<switch $slaves[$i].pregControl>>
 			<<case "speed up">>
 				<<if $Nurse == 0 && $slaves[$i].assignment != "get treatment in the clinic">>
-					<<if $slaves[$i].pregType >= 10 && $slaves[$i].devotion <= 20 && $slaves[$i].trust <= 50>>
+					<<if $slaves[$i].pregType >= 20 && $slaves[$i].devotion <= 20 && $slaves[$i].trust <= 50>>
 						<<if $slaves[$i].sexualFlaw == "self hating">>
 							She is @@.hotpink;delirious with joy@@ over her straining womb. Every week she gets bigger, fuller and tighter; in her mind, it won't be long until she bursts, bringing her children into the world.
 							<<set $slaves[$i].devotion += 10>>
 						<<else>>
-							She is @@.gold;utterly terrified@@ by her straining womb. Every week she gets bigger, fuller and tighter; in her mind, it won't be long until she bursts, bringing her children into @@.mediumorchid;this wretched world.@@<<if $slaves[$i].pregType >= 20 && $slaves[$i].preg > 30>> She is absolutely huge, her stretchmark streaked orb of a belly keeps her painfully immobilized. She counts every second, hoping that she can make it to the next. Her mind @@.red;can't handle it and shatters,@@ leaving her nothing more than an overfilled broodmother.<<set $slaves[$i].fetish = "mindbroken">><</if>>
+							She is @@.gold;utterly terrified@@ by her straining womb. Every week she gets bigger, fuller and tighter; in her mind, it won't be long until she bursts, bringing her children into @@.mediumorchid;this wretched world.@@<<if $slaves[$i].bellyPreg >= 600000>> She is absolutely huge, her stretchmark streaked orb of a belly keeps her painfully immobilized. She counts every second, hoping that she can make it to the next. Her mind @@.red;can't handle it and shatters,@@ leaving her nothing more than an overfilled broodmother.<<set $slaves[$i].fetish = "mindbroken">><</if>>
 							<<set $slaves[$i].devotion -= 10>>
 							<<set $slaves[$i].trust -= 10>>
 						<</if>>
@@ -3923,7 +3928,7 @@
 				Her child<<if $slaves[$i].pregType > 1>>ren visibly shift<<else>> visibly shifts<</if>> within her womb as <<if $slaves[$i].pregType > 1>>they prepare<<else>>it prepares<</if>> to enter the world. She experiences several contractions, but not enough to deter her from her work.
 			<<elseif $slaves[$i].pregControl == "labor supressors">>
 				Her child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> oddly calm; it is unlikely she will give birth soon, despite being overdue.
-			<<elseif $slaves[$i].pregType < 50>>
+			<<elseif $slaves[$i].broodmother == 0>>
 				<<if $slaves[$i].preg > 41>>
 					She is constantly beset by her squirming child<<if $slaves[$i].pregType > 1>>ren<</if>>. They're overdue, so she's likely to go into labor at any moment, but they aren't quite ready to leave their home.
 				<<elseif $slaves[$i].preg > 39>>
@@ -3933,6 +3938,12 @@
 				<<elseif $slaves[$i].preg > 37>>
 					She often has to stop for breaks to soothe her kicking child<<if $slaves[$i].pregType > 1>>ren<</if>>. She is far enough along that she may go into early labor.
 				<</if>>
+			<<elseif $slaves[$i].broodmother > 0 && $slaves[$i].preg > 37>>
+				<<if $slaves[$i].broodmother == 1>>
+					She often has to stop for breaks to soothe her kicking children and to catch her breath. It's only a matter of time until the next one drops into position to be born.
+				<<else>>
+					She is constantly beset by her squirming children and often has to stop to handle labor pains. She is never quite sure when the next one will drop into position to be born.
+				<</if>>
 			<</if>>
 			/* pregmod end */
 			<<if ($slaves[$i].preg > 20) && (random(1,100) == 69)>>
@@ -4107,6 +4118,7 @@
 
 /* IS NOT PREGNANT */
 
+<<if $seePreg != 0>>
 <<if ($slaves[$i].fuckdoll == 0) && ($slaves[$i].preg == -1) && ($slaves[$i].devotion > 20) && ($slaves[$i].fetishStrength > 60) && ($slaves[$i].fetish == "pregnancy") && isFertile($slaves[$i])>>
 	<<if $slaves[$i].fetishKnown == 0>>
 		@@.mediumorchid;She's unhappy@@ that she's on contraceptives, revealing that she has a @@.lightcoral;deep desire to get pregnant.@@
@@ -4374,6 +4386,7 @@
 <<elseif $slaves[$i].preg > 0 && $slaves[$i].pregType == 0>>
 	<<SetPregType $slaves[$i]>>
 <</if>>
+<</if>> /* closes $seePreg */
 
 <<if $slaves[$i].bellyFluid >= 1500>> /* PREGMOD: NOT PREGNANT, YES INFLATION */
 
@@ -4443,15 +4456,18 @@
 			<<if $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk == "none" && random(1,100) > 70>>
 				Filling $possessive guts with <<print $slaves[$i].inflationType>> all week @@.red;drives $object to gluttony.@@
 				<<set $slaves[$i].behavioralFlaw = "gluttonous">>
-			<<elseif $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk == "none">>
-				Filling $possessive guts with <<print $slaves[$i].inflationType>> all week @@.red;drives $object to hate eating and food.@@
-				<<set $slaves[$i].behavioralFlaw = "anorexic">>
+			<<elseif $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk == "none" && random(1,100) > 70>>
+				<<if $slaves[$i].inflationType == "cum" && $slaves[$i].fetish == "cumslut">>
+				<<else>>
+					Filling $possessive guts with <<print $slaves[$i].inflationType>> all week @@.red;drives $object to hate eating and food.@@
+					<<set $slaves[$i].behavioralFlaw = "anorexic">>
+				<</if>>
 			<</if>>
 		<<case "food">>
 			<<if $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk != "fitness" && random(1,100) > 70>>
 				Stuffing her face with food all week @@.red;drives $object to gluttony.@@
 				<<set $slaves[$i].behavioralFlaw = "gluttonous">>
-			<<elseif $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk != "fitness">>
+			<<elseif $slaves[$i].behavioralFlaw == "none" && $slaves[$i].behavioralQuirk != "fitness" && random(1,100) > 70>>
 				Stuffing her face with food all week @@.red;drives $object to hate eating.@@
 				<<set $slaves[$i].behavioralFlaw = "anorexic">>
 			<</if>>
@@ -5052,10 +5068,10 @@
 		<</if>>
 	<<else>>
 	<<if $slaves[$i].preg > 30>>
-		<<if $slaves[$i].pregType >= 20>>
+		<<if $slaves[$i].pregType >= 10>>
 			Society is @@.red;furious@@ at $slaves[$i].slaveName's infested womb.
 			<<FSChangePorn "Eugenics" -10>>
-		<<elseif $slaves[$i].pregType >= 10>>
+		<<elseif $slaves[$i].pregType >= 4>>
 			Society is @@.red;disgusted@@ by $slaves[$i].slaveName's abnormally large pregnancy.
 			<<FSChangePorn "Eugenics" -5>>
 		<<else>>
@@ -6267,6 +6283,7 @@
 		<</if>>
 	<</if>>
 
+	/* I need to be redone phase-7 */
 	<<if ($slaves[$i].preg > 30)>>
 		<<if ($slaves[$i].physicalAge < 4)>>
 			<<if ($slaves[$i].pregType >= 20)>>
@@ -6491,7 +6508,7 @@
 <</if>>
 
 /*
-<<if $masterSuitePregnancySlaveLuxuries == 1 && $slaves[$i].pregType == 50 && ($slaves[$i].assignment == "serve in the master suite" || $slaves[$i].assignment == "be your Concubine")>>
+<<if $masterSuitePregnancySlaveLuxuries == 1 && $slaves[$i].broodmother == 2 && ($slaves[$i].assignment == "serve in the master suite" || $slaves[$i].assignment == "be your Concubine")>>
 <<if $slaves[$i].diet != "high caloric">>
 <<if $slaves[$i].preg > 20>>
 	The pregnancy generator places heavy strain on her as her body @@.red;consumes itself@@ to keep releasing eggs and maintain her many developing babies.
@@ -7264,13 +7281,13 @@
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].preg > 37) && ($slaves[$i].pregType < 50) && (random(1,100) > 90) && $slaves[$i].pregControl != "labor supressors">>
+<<if ($slaves[$i].preg > 37) && ($slaves[$i].broodmother == 0) && (random(1,100) > 90) && $slaves[$i].pregControl != "labor supressors">>
 	<<set $slaves[$i].labor = 1>>
 	<<set $birthee = 1>>
-<<elseif ($slaves[$i].preg > 41) && ($slaves[$i].pregType < 50) && $slaves[$i].pregControl != "labor supressors">>
+<<elseif ($slaves[$i].preg > 41) && ($slaves[$i].broodmother == 0) && $slaves[$i].pregControl != "labor supressors">>
 	<<set $slaves[$i].labor = 1>>
 	<<set $birthee = 1>>
-<<elseif ($slaves[$i].preg > 37) && ($slaves[$i].pregType == 50) && ($slaves[$i].assignment != "labor in the production line")>>
+<<elseif ($slaves[$i].preg > 37) && ($slaves[$i].broodmother > 0) && ($slaves[$i].assignment != "labor in the production line")>>
 	<<set $slaves[$i].labor = 1>>
 	<<set $birthee = 1>>
 <</if>>
diff --git a/src/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw
index b0d48a726756555586287782d530aca51ceb5ddd..7825a668db6adec594866948b775dbc9479aa44a 100644
--- a/src/uncategorized/saRecruitGirls.tw
+++ b/src/uncategorized/saRecruitGirls.tw
@@ -292,7 +292,7 @@ uses your online resources and some @@.yellowgreen;modest funds@@ to convince $r
 	<<set $recruiterProgress -= 1>>
 <</if>>
 
-<<if ($slaves[$i].pregType >= 10) && ($slaves[$i].preg > 20)>>
+<<if $slaves[$i].bellyPreg >= 300000>>
   Her massive overfilled womb is detrimental to her efforts to recruit girls. It instills a fear of being turned into nothing more than a baby filled sack.
   <<set $recruiterProgress -= 3>>
 <</if>>
@@ -507,7 +507,7 @@ She uses her extra time and @@.yellowgreen;recruitment allowance@@ this week to
 <</if>> <</if>>
 <<if $arcologies[0].FSRepopulationFocus != "unset">>
 	<<if $slaves[$i].preg > 30>>
-		<<if $slaves[$i].pregType >= 20>>
+		<<if $slaves[$i].pregType >= 30>>
 			<<set _seed += 5>>
 		<<elseif $slaves[$i].pregType >= 10>>
 			<<set _seed += 4>>
@@ -516,7 +516,7 @@ She uses her extra time and @@.yellowgreen;recruitment allowance@@ this week to
 		<</if>>
 		<<set _FSmatch++, $arcologies[0].FSRepopulationFocus += 0.01*$FSSingleSlaveRep>>
 	<<elseif $slaves[$i].preg > 20>>
-		<<if $slaves[$i].pregType >= 20>>
+		<<if $slaves[$i].pregType >= 30>>
 			<<set _seed += 4>>
 		<<elseif $slaves[$i].pregType >= 10>>
 			<<set _seed += 3>>
@@ -525,7 +525,7 @@ She uses her extra time and @@.yellowgreen;recruitment allowance@@ this week to
 		<</if>>
 		<<set _FSmatch++, $arcologies[0].FSRepopulationFocus += 0.01*$FSSingleSlaveRep>>
 	<<elseif $slaves[$i].bellyPreg >= 1500>>
-		<<if $slaves[$i].pregType >= 20>>
+		<<if $slaves[$i].pregType >= 30>>
 			<<set _seed += 3>>
 		<<elseif $slaves[$i].pregType >= 10>>
 			<<set _seed += 2>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index afd0440f101f8687be715f7bc5189b6e7131e7b7..c46cf5cbe46e6740e8313982182ab682ed2b2b61 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -1458,14 +1458,16 @@
 				<<if $Wardeness != 0 && canPenetrate($Wardeness)>>
 					<<SimpleSlaveFucking $slaves[$i] _wardenFunTimes>>
 					<<set $slaves[_FLs].penetrativeCount += _wardenFunTimes, $penetrativeTotal += _wardenFunTimes>>
-					<<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken")>>
-						<<KnockMeUp $slaves[$i] 10 2 $Wardeness.ID 1>>
+					<<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken") && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1) || ($slaves[$i].anus > 0 && $slaves[$i].mpreg == 1))>>
 						<<if ($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>>
+							<<KnockMeUp $slaves[$i] 10 0 $Wardeness.ID 1>>
 							<<set $slaves[$i].vaginalCount++, $vaginalTotal++>>
+							<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 						<<else>>
+							<<KnockMeUp $slaves[$i] 10 1 $Wardeness.ID 1>>
 							<<set $slaves[$i].analCount++, $analTotal++>>
+							<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 						<</if>>
-						<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 					<</if>>
 				<</if>>
 				<<if ($slaves[$i].devotion <= 20)>>
@@ -1481,14 +1483,16 @@
 				<<if $Wardeness != 0 && canPenetrate($Wardeness)>>
 					<<SimpleSlaveFucking $slaves[$i] _wardenFunTimes>>
 					<<set $slaves[_FLs].penetrativeCount += _wardenFunTimes, $penetrativeTotal += _wardenFunTimes>>
-					<<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken")>>
-						<<KnockMeUp $slaves[$i] 10 2 $Wardeness.ID 1>>
+					<<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken") && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1) || ($slaves[$i].anus > 0 && $slaves[$i].mpreg == 1))>>
 						<<if ($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>>
+							<<KnockMeUp $slaves[$i] 10 0 $Wardeness.ID 1>>
 							<<set $slaves[$i].vaginalCount++, $vaginalTotal++>>
+							<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 						<<else>>
+							<<KnockMeUp $slaves[$i] 10 1 $Wardeness.ID 1>>
 							<<set $slaves[$i].analCount++, $analTotal++>>
+							<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 						<</if>>
-						<<set $slaves[_FLs].penetrativeCount += 1, $penetrativeTotal += 1>>
 					<</if>>
 				<</if>>
 				<<if random(-100,0) > $slaves[$i].devotion>>
@@ -2053,10 +2057,10 @@
 		<<case "be the Schoolteacher">>
 			<<set $slaves[$i].need -= $schoolroom*10>>
 			<<set _sexLessons = $schoolroom*2>>
-			<<if canDoVaginal($slaves[$i])>>
+			<<if canDoVaginal($slaves[$i]) && $slaves[$i].vagina != 0>>
 				<<set $slaves[$i].vaginalCount += _sexLessons, $vaginalTotal += _sexLessons>>
 			<</if>>
-			<<if canDoAnal($slaves[$i])>>
+			<<if canDoAnal($slaves[$i]) && $slaves[$i].anus != 0>>
 				<<set $slaves[$i].analCount += _sexLessons, $analTotal += _sexLessons>>
 			<</if>>
 			<<if canPenetrate($slaves[$i])>>
@@ -2200,18 +2204,22 @@
 				<<set $slaves[$i].need -= 30>>
 				<<set $slaves[$i].oralCount += 7, $slaves[$i].mammaryCount += 7, $oralTotal += 7, $mammaryTotal += 7>>
 				<<if canDoVaginal($slaves[$i])>>
-					<<if $slaves[$i].vagina != 0>><<set $slaves[$i].vaginalCount += 7, $vaginalTotal += 7>><</if>>
-					<<set $slaves[$i].need -= 10>>
-					<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].vagina != 0>>
-						<<KnockMeUp $slaves[$i] 5 0 $Schoolteacher.ID 1>>
+					<<if $slaves[$i].vagina != 0>>
+						<<set $slaves[$i].vaginalCount += 7, $vaginalTotal += 7>>
+						<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].vagina != 0>>
+							<<KnockMeUp $slaves[$i] 5 0 $Schoolteacher.ID 1>>
+						<</if>>
 					<</if>>
+					<<set $slaves[$i].need -= 10>>
 				<</if>>
 				<<if canDoAnal($slaves[$i])>>
-					<<if $slaves[$i].anus != 0>><<set $slaves[$i].analCount += 7, $analTotal += 7>><</if>>
-					<<set $slaves[$i].need -= 10>>
-					<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].anus != 0>>
-						<<KnockMeUp $slaves[$i] 5 1 $Schoolteacher.ID 1>>
+					<<if $slaves[$i].anus != 0>>
+						<<set $slaves[$i].analCount += 7, $analTotal += 7>>
+						<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].anus != 0>>
+							<<KnockMeUp $slaves[$i] 5 1 $Schoolteacher.ID 1>>
+						<</if>>
 					<</if>>
+					<<set $slaves[$i].need -= 10>>
 				<</if>>
 				<<if canPenetrate($slaves[$i])>>
 					<<set $slaves[$i].penetrativeCount += 7, $penetrativeTotal += 7>>
diff --git a/src/uncategorized/saWorkAGloryHole.tw b/src/uncategorized/saWorkAGloryHole.tw
index 878496525f855dc5880584f58188621b33fa1a42..5ae3a44a6de357c53983f534c1d72a185d36e060 100644
--- a/src/uncategorized/saWorkAGloryHole.tw
+++ b/src/uncategorized/saWorkAGloryHole.tw
@@ -194,9 +194,9 @@ $possessiveCap feelings, skills, and appearance do not matter. $pronounCap is co
 
 <<set _oralUse = $oralUseWeight+($slaves[$i].lips/20)>>
 <<set _analUse = 0>>
-<<if canDoAnal($slaves[$i])>><<set _analUse = $analUseWeight-$slaves[$i].anus>><</if>>
+<<if canDoAnal($slaves[$i])>><<set _analUse = $analUseWeight-$slaves[$i].anus>><<if _analUse < 0>><<set _analUse = 0>><</if>><</if>>
 <<set _vaginalUse = 0>>
-<<if canDoVaginal($slaves[$i])>><<set _vaginalUse = $vaginalUseWeight-$slaves[$i].vagina>><</if>>
+<<if canDoVaginal($slaves[$i])>><<set _vaginalUse = $vaginalUseWeight-$slaves[$i].vagina>><<if _vaginalUse < 0>><<set _vaginalUse = 0>><</if>><</if>>
 
 <<set _demand = _oralUse+_analUse+_vaginalUse>>
 <<set _oralUse = Math.trunc((_oralUse/_demand)*$beauty)>>
diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw
index 81c2dc16dbbf80397ec81d77a8df020da3e57f8f..e0b491ad0557cf84b5500784a81242a00480d2fd 100644
--- a/src/uncategorized/scheduledEvent.tw
+++ b/src/uncategorized/scheduledEvent.tw
@@ -143,6 +143,8 @@
 	<<goto "SE recruiter success">>
 <<elseif ($customSlaveOrdered == 1)>>
 	<<goto "SE custom slave delivery">>
+<<elseif ($JFCOrder == 1)>>
+	<<goto "JobFulfillmentCenterDelivery">>
 <<elseif ($huskSlaveOrdered == 1)>>
 	<<goto "SE husk slave delivery">>
 <<elseif ($Lurcher != 0) && ($CoursingAssociation != 0) && (Math.trunc($week/4) == ($week/4)) && ($coursed != 1)>>
diff --git a/src/uncategorized/seBirth.tw b/src/uncategorized/seBirth.tw
index 13d3454512d2d138cec1f8ae43f1be09f8d9124e..2fdece195136cb990de918ad2da71d166fda8be0 100644
--- a/src/uncategorized/seBirth.tw
+++ b/src/uncategorized/seBirth.tw
@@ -188,7 +188,7 @@
 
 <<if $slaves[$i].fuckdoll == 0>>
 
-<<if $slaves[$i].pregType < 50>>
+<<if $slaves[$i].broodmother == 0>>
 
 <<if $slaves[$i].assignment != "work in the dairy">>
 
@@ -201,7 +201,7 @@
 <<if $slaves[$i].amp != 1>> /* amps are always carried in time */
 
 <<if (random(1,20) > $suddenBirth) || ($universalRulesBirthing == 1)>> /* did she make it to her birthing area? */
-	Feeling childbirth approaching, <<if !canWalk($slaves[$i])>>$slaves[$i].slaveName is helped<<else>>$slaves[$i].slaveName makes her way<</if>> to her prepared birthing area.
+	Feeling childbirth approaching, <<if !canWalk($slaves[$i])>>$slaves[$i].slaveName is helped<<else>>$slaves[$i].slaveName makes $possessive way<</if>> to $possessive prepared birthing area.
 
 <<Birth>>
 
@@ -220,7 +220,7 @@
 <</if>> /* closes reg birth */
 
 <<else>>  /* made it to birthing area */
-	With childbirth approaching, $slaves[$i].slaveName is carried to her prepared birthing area.
+	With childbirth approaching, $slaves[$i].slaveName is carried to $possessive prepared birthing area.
 
 <<AmpBirth>>
 
@@ -231,20 +231,20 @@
 <<else>>
 <br>
   <<if $dairyRestraintsSetting > 1 and $slaves[$i].career == "a bioreactor">>
-	As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under her laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to her <<if $slaves[$i].mpreg == 1>>rear<<else>>vagina<</if>>.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating her empty womb with fresh cum, where it will remain until she is pregnant once more.<</if>> All these events are meaningless to her, as her consciousness has long since been snuffed out.
+	As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under $possessive laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to $possessive <<if $slaves[$i].mpreg == 1>>rear<<else>>vagina<</if>>.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating $possessive empty womb with fresh cum, where it will remain until $pronoun is pregnant once more.<</if>> All these events are meaningless to $object, as $possessive consciousness has long since been snuffed out.
   <<elseif $dairyRestraintsSetting > 1>>
 	<<if $slaves[$i].fetish == "mindbroken">>
-	  As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under her laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to her <<if $slaves[$i].mpreg == 1>>rear<<else>>vagina<</if>>.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating her empty womb with fresh cum, where it will remain until she is pregnant once more.<</if>> She doesn't care about any of this, as the only thoughts left in her empty mind revolve around the sensations in her crotch and breasts.
+	  As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under $possessive laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to $possessive <<if $slaves[$i].mpreg == 1>>rear<<else>>vagina<</if>>.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating $possessive empty womb with fresh cum, where it will remain until $pronoun is pregnant once more.<</if>> $pronounCap doesn't care about any of this, as the only thoughts left in $possessive empty mind revolve around the sensations in $possessive crotch and breasts.
 	<<else>>
-	  As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under her laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. She struggles in her bindings, attempting to break free in order to birth her coming child, but her efforts are pointless. She is forced to give birth, restrained, into the waiting holder. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to her vagina.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating her empty womb with fresh cum, where it will remain until she is pregnant once more. $slaves[$i].slaveName moans, partially with pleasure and partially with defeat, under the growing pressure within her body. Tears stream down her face as <<if $slaves[$i].births > 0>>she is forcibly impregnated once more<<else>>she attempts to shift in her restraints to peek around her swollen breasts, but she is too well secured. She'll realize what is happening when her belly grows large enough to brush against her breasts as the milker sucks from them<<if $slaves[$i].dick > 0>> or her dick begins rubbing its underside<</if>><</if>>.<</if>> Her mind slips slightly more as she focuses on her fate as nothing more than animal, destined to be milked and bare offspring until her body gives out.
+	  As $slaves[$i].slaveName's water breaks, a mechanical basket is extended under $possessive laboring <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>. $pronounCap struggles in $possessive bindings, attempting to break free in order to birth $possessive coming child, but $possessive efforts are pointless. $pronounCap is forced to give birth, restrained, into the waiting holder. Once the child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> secure, the basket retracts allowing access to $possessive vagina.<<if $dairyPregSetting > 0>> The impregnation tube is promptly reinserted, bloating $possessive empty womb with fresh cum, where it will remain until $pronoun is pregnant once more. $slaves[$i].slaveName moans, partially with pleasure and partially with defeat, under the growing pressure within $possessive body. Tears stream down $possessive face as <<if $slaves[$i].births > 0>>$pronoun is forcibly impregnated once more<<else>>$pronoun attempts to shift in $possessive restraints to peek around $possessive swollen breasts, but $pronoun is too well secured. $pronounCap'll realize what is happening when $possessive belly grows large enough to brush against $possessive breasts as the milker sucks from them<<if $slaves[$i].dick > 0>> or $possessive dick begins rubbing its underside<</if>><</if>>.<</if>> $possessiveCap mind slips slightly more as $pronoun focuses on $possessive fate as nothing more than animal, destined to be milked and bare offspring until $possessive body gives out.
 	  <<set $slaves[$i].trust -= 10>>
 	  <<set $slaves[$i].devotion -= 10>>
 	<</if>>
   <<else>>
 	<<if $slaves[$i].fetish == "mindbroken">>
-		While getting milked, $slaves[$i].slaveName's water breaks. She show little interest and continues kneading her breasts. Instinctively she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. She shows no interest in her child<<if $slaves[$i].pregType > 1>>ren<</if>> being removed from the milking stall, instead focusing entirely on draining her breasts.
+		While getting milked, $slaves[$i].slaveName's water breaks. $pronounCap shows little interest and continues kneading $possessive breasts. Instinctively $pronoun begins to push out $possessive bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. $pronounCap pays no heed to $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> being removed from the milking stall, instead focusing entirely on draining $possessive breasts.
 	<<else>>
-		While getting milked, $slaves[$i].slaveName's water breaks,<<if $dairyPregSetting > 0>> this is a regular occurrence to her now so<<else>> but<</if>> she continues enjoying her milking. She begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. She catches <<if canSee($slaves[$i])>>a glimpse<<else>>the sound<</if>> of her child<<if $slaves[$i].pregType > 1>>ren<</if>> being removed from the milking stall before returning her focus to draining her breasts.
+		While getting milked, $slaves[$i].slaveName's water breaks,<<if $dairyPregSetting > 0>> this is a regular occurrence to $object now so<<else>> but<</if>> $pronoun continues enjoying $possessive milking. $pronounCap begins to push out $possessive bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. $pronounCap catches <<if canSee($slaves[$i])>>a glimpse<<else>>the sound<</if>> of $possessive child<<if $slaves[$i].pregType > 1>>ren<</if>> being removed from the milking stall before returning $possessive focus to draining $possessive breasts.
 	<</if>>
   <</if>>
 <</if>> /* close cow birth */
@@ -252,10 +252,12 @@
 <<else>>
 
 	<<if $slaves[$i].amp == 1>>
-		With childbirth approaching, $slaves[$i].slaveName is carried to her prepared birthing area.
+		With childbirth approaching, $slaves[$i].slaveName is carried to $possessive prepared birthing area.
 		<<AmpBirth>>
-	<<else>>
+	<<elseif $slaves[$i].broodmother == 1>>
 		<<BroodmotherBirth>>
+	<<else>>
+		<<HyperBroodmotherBirth>>
 	<</if>>
 
 <</if>> /* close broodmother birth */
@@ -279,15 +281,17 @@
 
 <br>
 <br>
-As a human cow, she @@.orange;gave birth@@<<if $slaves[$i].pregType >= 50>> but her overfilled womb barely lost any size. Her body gave life <</if>>
-<<if $slaves[$i].pregType == 50>>
+As a human cow, $pronoun @@.orange;gave birth@@<<if $slaves[$i].broodmother > 1>> but $possessive overfilled womb barely lost any size. $possessiveCap body gave life <<elseif $slaves[$i].broodmother > 0>> but $possessive stomach barely shrank at all. $possessiveCap body gave life <</if>>
+<<if $slaves[$i].broodmother == 2>>
 	to nearly a dozen calves throughout the week.
+<<elseif $slaves[$i].broodmother == 1>>
+	to a single calf this week.
 <<elseif $slaves[$i].pregType <= 1>>
 	to a single calf.
 <<elseif $slaves[$i].pregType >= 40>>
-	to a massive brood of $slaves[$i].pregType calves. After half a day of labor and birth, her belly sags softly.
+	to a massive brood of $slaves[$i].pregType calves. After half a day of labor and birth, $possessive belly sags softly.
 <<elseif $slaves[$i].pregType >= 20>>
-	to a brood of $slaves[$i].pregType calves. After several hours of labor and birth, her belly sags softly.
+	to a brood of $slaves[$i].pregType calves. After several hours of labor and birth, $possessive belly sags softly.
 <<elseif $slaves[$i].pregType >= 10>>
 	to a squirming pile of $slaves[$i].pregType calves.
 <<elseif $slaves[$i].pregType == 9>>
@@ -308,16 +312,30 @@ As a human cow, she @@.orange;gave birth@@<<if $slaves[$i].pregType >= 50>> but
 	to calf twins.
 <</if>>
 
-<<if $slaves[$i].pregType == 50>>
+<<if $slaves[$i].broodmother == 2>>
 	<<set $slaves[$i].births += 12>>
 	<<set $slaves[$i].birthsTotal += 12>>
 	<<set $birthsTotal += 12>>
-	<<set $slaves[$i].preg = 31>>
+	<<set $slaves[$i].preg = 37>>
+	<<if $slaves[$i].pregSource == -1>>
+		<<set $PC.slavesFathered += 12>>
+	<</if>>
+<<elseif $slaves[$i].broodmother == 1>>
+	<<set $slaves[$i].births += 1>>
+	<<set $slaves[$i].birthsTotal += 1>>
+	<<set $birthsTotal += 1>>
+	<<set $slaves[$i].preg = 37>>
+	<<if $slaves[$i].pregSource == -1>>
+		<<set $PC.slavesFathered += 1>>
+	<</if>>
 <<else>>
 	<<set $slaves[$i].preg = 0>>
 	<<set $slaves[$i].births += $slaves[$i].pregType>>
 	<<set $slaves[$i].birthsTotal += $slaves[$i].pregType>>
 	<<set $birthsTotal += $slaves[$i].pregType>>
+	<<if $slaves[$i].pregSource == -1>>
+		<<set $PC.slavesFathered += $slaves[$i].pregType>>
+	<</if>>
 	<<set $slaves[$i].pregType = 0>>
 	<<set $slaves[$i].pregSource = 0>>
 	<<set $slaves[$i].pregKnown = 0>>
@@ -327,14 +345,14 @@ As a human cow, she @@.orange;gave birth@@<<if $slaves[$i].pregType >= 50>> but
 
 <br><br>
 <<if $slaves[$i].mpreg == 1>>
-Childbirth has @@.lime;stretched out her anus.@@
+Childbirth has @@.lime;stretched out $possessive anus.@@
 <<if ($dairyPregSetting > 1) && ($slaves[$i].anus < 4)>>
 	<<set $slaves[$i].anus += 1>>
 <<elseif ($slaves[$i].anus < 3)>>
 	<<set $slaves[$i].anus += 1>>
 <</if>>
 <<else>>
-Childbirth has @@.lime;stretched out her vagina.@@
+Childbirth has @@.lime;stretched out $possessive vagina.@@
 <<if ($dairyPregSetting > 1) && ($slaves[$i].vagina < 4)>>
 	<<set $slaves[$i].vagina += 1>>
 <<elseif ($slaves[$i].vagina < 3)>>
@@ -343,7 +361,7 @@ Childbirth has @@.lime;stretched out her vagina.@@
 <</if>>
 
 <<if ($slaves[$i].devotion) < 20 && $slaves[$i].fetish != "mindbroken">>
-	She @@.mediumorchid;despises@@ you for using her as a breeder.
+	$pronounCap @@.mediumorchid;despises@@ you for using $object as a breeder.
 	<<set $slaves[$i].devotion -= 10>>
 <</if>>
 
@@ -431,11 +449,11 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 	<<if $slaves[$i].pregSource == -1>>
 	<<if $slaves[$i].devotion < 20 && ($week-$slaves[$i].weekAcquired >= $slaves[$i].weekAcquired)>>
 		<br>
-		She @@.mediumorchid;despises@@ you for using her body to bear your children.
+		$pronounCap @@.mediumorchid;despises@@ you for using $possessive body to bear your children.
 		<<set $slaves[$i].devotion -= 10>>
 	<<elseif $slaves[$i].devotion > 50>>
 		<br>
-		She's @@.hotpink;so proud@@ to have successfully carried children for you.
+		<<print $pronounCap>>'s @@.hotpink;so proud@@ to have successfully carried children for you.
 		<<set $slaves[$i].devotion += 3>>
 	<</if>>
 	<</if>>
@@ -456,11 +474,14 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 			<<set $slaves[$i].trust += 3, $slaves[$i].devotion += 3>>
 			<<set _lostBabies = 0>>
 		<<else>>
-			<<if $slaves[$i].pregType == 50>>
-				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+			<<if $slaves[$i].broodmother == 2>>
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 				<<set $cash += 12*(50+_babyCost)>>
+			<<elseif $slaves[$i].broodmother == 1>>
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+				<<set $cash += (50+_babyCost)>>
 			<<else>>
-				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 				<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 			<</if>>
 		<</if>>
@@ -469,12 +490,12 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 		<<set $slaveOrphanageTotal += $slaves[$i].pregType>>
 		Unless you provide otherwise, the child<<if $slaves[$i].pregType > 1>>ren<</if>> will be remanded to one of $arcologies[0].name's slave orphanages. $slaves[$i].slaveName
 		<<if $slaves[$i].devotion > 95>>
-			worships you so completely that she will not resent this.
+			worships you so completely that $pronoun will not resent this.
 		<<elseif $slaves[$i].devotion > 50>>
-			is devoted to you, but she will @@.mediumorchid;struggle to accept this.@@
+			is devoted to you, but $pronoun will @@.mediumorchid;struggle to accept this.@@
 			<<set $slaves[$i].devotion -= 2>>
 		<<elseif $slaves[$i].devotion > 20>>
-			has accepted being a sex slave, but she will @@.mediumorchid;resent this intensely.@@
+			has accepted being a sex slave, but $pronoun will @@.mediumorchid;resent this intensely.@@
 			<<set $slaves[$i].devotion -= 3>>
 		<<else>>
 			will of course @@.mediumorchid;hate you for this.@@
@@ -486,15 +507,15 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 				<<replace `"#" + _dispositionId`>>
 					The child<<if _count > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's future minded schools, to be administered fertility and virility treatments as well as be brought up to take pride in reproduction. $slaves[$i].slaveName
 					<<if $slaves[$i].devotion > 95>>
-						loves you already, but she'll @@.hotpink;love you even more@@ for this. She can't wait to see her child<<if _count > 1>>ren<</if>> proudly furthering your cause.
+						loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this. $pronounCap can't wait to see $possessive child<<if _count > 1>>ren<</if>> proudly furthering your cause.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 50>>
-						heard about these and will be @@.hotpink;happy that her child<<if _count > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ She will miss her child<<if _count > 1>>ren<</if>>, but she expected that.
+						heard about these and will be @@.hotpink;happy that $possessive child<<if _count > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $pronounCap will miss $possessive child<<if _count > 1>>ren<</if>>, but $pronoun expected that.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 20>>
-						will naturally miss her child<<if _count > 1>>ren<</if>>, but will is broken enough to hope that her offspring will have a better life, or at least an enjoyable one.
+						will naturally miss $possessive child<<if _count > 1>>ren<</if>>, but will is broken enough to hope that $possessive offspring will have a better life, or at least an enjoyable one.
 					<<else>>
-						will of course @@.mediumorchid;hate you for this.@@ The mere thought of her $fertilityAge year old daughter<<if _count > 1>>s<</if>> swollen with life, and proud of it, fills her with @@.gold;disdain.@@
+						will of course @@.mediumorchid;hate you for this.@@ The mere thought of $possessive $fertilityAge year old daughter<<if _count > 1>>s<</if>> swollen with life, and proud of it, fills $object with @@.gold;disdain.@@
 						<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 					<</if>>
 					<<set $breederOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
@@ -506,13 +527,13 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 			<<replace `"#" + _dispositionId`>>
 				The child<<if _count > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's citizen schools, to be brought up coequal with the arcology's other young people. $slaves[$i].slaveName
 				<<if $slaves[$i].devotion > 95>>
-					loves you already, but she'll @@.hotpink;love you even more@@ for this.
+					loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this.
 				<<elseif $slaves[$i].devotion > 50>>
-					knows about these and will be @@.hotpink;overjoyed.@@ She will miss her child<<if _count > 1>>ren<</if>>, but she expected that.
+					knows about these and will be @@.hotpink;overjoyed.@@ $pronounCap will miss $possessive child<<if _count > 1>>ren<</if>>, but $pronoun expected that.
 				<<elseif $slaves[$i].devotion > 20>>
-					will naturally miss her child<<if _count > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that her offspring will have a better life.
+					will naturally miss $possessive child<<if _count > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that $possessive offspring will have a better life.
 				<<else>>
-					will naturally retain some resentment over being separated from her child<<if _count > 1>>ren<</if>>, but this should be balanced by hope that her offspring will have a better life.
+					will naturally retain some resentment over being separated from $possessive child<<if _count > 1>>ren<</if>>, but this should be balanced by hope that $possessive offspring will have a better life.
 				<</if>>
 				<<set $slaves[$i].devotion += 4, $citizenOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
 			<</replace>>
@@ -526,9 +547,9 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 				<<elseif $slaves[$i].devotion > 50>>
 					understands that this is the best possible outcome for the offspring of slave, and will be @@.hotpink;overjoyed.@@
 				<<elseif $slaves[$i].devotion > 20>>
-					will miss her child<<if _count > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since she'll understand this is the best possible outcome for a slave mother.
+					will miss $possessive child<<if _count > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since <<print $pronoun>>'ll understand this is the best possible outcome for a slave mother.
 				<<else>>
-					will resent being separated from her child<<if _count > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
+					will resent being separated from $possessive child<<if _count > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
 				<</if>>
 				The child<<if _count > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition.
 				<<set $slaves[$i].devotion += 6, $privateOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
@@ -540,11 +561,14 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 	<</span>>
 <<elseif $Cash4Babies == 1>>
 	<<set _babyCost = random(-12,12)>>
-	<<if $slaves[$i].pregType == 50>>
-		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+	<<if $slaves[$i].broodmother == 2>>
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 		<<set $cash += 12*(50+_babyCost)>>
+	<<elseif $slaves[$i].broodmother == 1>>
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+		<<set $cash += (50+_babyCost)>>
 	<<else>>
-		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 		<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 	<</if>>
 <</if>>
@@ -593,13 +617,13 @@ Since $possessive <<if $slaves[$i].mpreg == 1>>ass<<else>>vagina<</if>> was spar
 
 <br>
 <br>
-She @@.orange;gave birth@@<<if $slaves[$i].pregType >= 50>> but her overfilled womb barely lost any size. Her body gave life <</if>>
-<<if $slaves[$i].pregType == 50>>
-	to nearly a dozen babies throughout the week,
-<<elseif $slaves[$i].pregType <= 1>>
-	to a single baby,
+$pronounCap @@.orange;gave birth@@<<if $slaves[$i].broodmother > 1>>, but $possessive overfilled womb barely lost any size. $possessiveCap body gave life <<elseif $slaves[$i].broodmother > 0>>, but $possessive stomach barely shrank at all. $possessiveCap body gave life <</if>>
+<<if $slaves[$i].broodmother == 2>>
+	to nearly a dozen babies throughout the week.
+<<elseif $slaves[$i].broodmother == 1>>
+	to a single baby this week,
 <<elseif $slaves[$i].pregType >= 40>>
-	to a massive brood of $slaves[$i].pregType balies,
+	to a massive brood of $slaves[$i].pregType babies,
 <<elseif $slaves[$i].pregType >= 20>>
 	to a brood of $slaves[$i].pregType babies,
 <<elseif $slaves[$i].pregType >= 10>>
@@ -636,9 +660,9 @@ created by
 	$daddy's virile cock and balls.
 <</if>>
 <<if $slaves[$i].pregType >= 80>>
-	After an entire day of labor and birth, her belly sags heavily.
+	After an entire day of labor and birth, $possessive belly sags heavily.
 <<elseif $slaves[$i].pregType >= 40>>
-	After half a day of labor and birth, her belly sags emptily.
+	After half a day of labor and birth, $possessive belly sags emptily.
 <<elseif $slaves[$i].pregType >= 20>>
 	After several hours of labor and birth, $possessive belly sags softly.
 <</if>>
@@ -662,12 +686,12 @@ created by
 <br>
 <br>
 <<if ($slaves[$i].fetish == "masochist")>>
-	Since she was a virgin, giving birth was a @@.red;terribly painful@@ experience.<<if $slaves[$i].fetishKnown == 0>>She seems to have orgasmed several times during the experience, she appears to @@.lightcoral;really like pain@@.<<else>> However, due to her masochistic streak, she @@.hotpink;greatly enjoyed@@ said experience<</if>>.
+	Since $pronoun was a virgin, giving birth was a @@.red;terribly painful@@ experience.<<if $slaves[$i].fetishKnown == 0>>$pronounCap seems to have orgasmed several times during the experience, $pronoun appears to @@.lightcoral;really like pain@@.<<else>> However, due to $possessive masochistic streak, $pronoun @@.hotpink;greatly enjoyed@@ said experience<</if>>.
 	<<set $slaves[$i].health -= 10>>
 	<<set $slaves[$i].devotion += 2>>
 	<<set $slaves[$i].fetishKnown = 1>>
 <<else>>
-	Since she was a virgin, giving birth was a @@.red;terribly painful@@ experience. She @@.mediumorchid;despises@@ you for taking her virginity in such a @@.gold;horrifying@@ way.
+	Since $pronoun was a virgin, giving birth was a @@.red;terribly painful@@ experience. $pronounCap @@.mediumorchid;despises@@ you for taking $possessive virginity in such a @@.gold;horrifying@@ way.
 	<<set $slaves[$i].health -= 40>>
 	<<set $slaves[$i].devotion -= 25.0>>
 	<<set $slaves[$i].trust -= 25.0>>
@@ -776,7 +800,7 @@ created by
 
 <br>
 <br>
-<<if $slaves[$i].assignment != "work in the dairy" && $slaves[$i].pregType < 50 && $csec == 0>>
+<<if $slaves[$i].assignment != "work in the dairy" && $slaves[$i].broodmother == 0 && $csec == 0>>
 All in all,
 <<if $birthDamage > 15>>
 	childbirth was @@.red;horrifically difficult for $object and nearly claimed $possessive life@@.
@@ -839,11 +863,11 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 	<<if $slaves[$i].pregSource == -1>>
 	<<if $slaves[$i].devotion < 20 && ($week-$slaves[$i].weekAcquired >= $slaves[$i].weekAcquired)>>
 		<br>
-		She @@.mediumorchid;despises@@ you for using her body to bear your children.
+		$pronounCap @@.mediumorchid;despises@@ you for using $possessive body to bear your children.
 		<<set $slaves[$i].devotion -= 10>>
 	<<elseif $slaves[$i].devotion > 50>>
 		<br>
-		She's @@.hotpink;so proud@@ to have successfully carried children for you.
+		<<print $pronounCap>>'s @@.hotpink;so proud@@ to have successfully carried children for you.
 		<<set $slaves[$i].devotion += 3>>
 	<</if>>
 	<</if>>
@@ -864,11 +888,14 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 			<<set $slaves[$i].trust += 3, $slaves[$i].devotion += 3>>
 			<<set _lostBabies = 0>>
 		<<else>>
-			<<if $slaves[$i].pregType == 50>>
-				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+			<<if $slaves[$i].broodmother == 2>>
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 				<<set $cash += 12*(50+_babyCost)>>
+			<<elseif $slaves[$i].broodmother == 1>>
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+				<<set $cash += (50+_babyCost)>>
 			<<else>>
-				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+				$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 				<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 			<</if>>
 		<</if>>
@@ -877,12 +904,12 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 		<<set $slaveOrphanageTotal += $slaves[$i].pregType>>
 		Unless you provide otherwise, the child<<if $slaves[$i].pregType > 1>>ren<</if>> will be remanded to one of $arcologies[0].name's slave orphanages. $slaves[$i].slaveName
 		<<if $slaves[$i].devotion > 95>>
-			worships you so completely that she will not resent this.
+			worships you so completely that $pronoun will not resent this.
 		<<elseif $slaves[$i].devotion > 50>>
-			is devoted to you, but she will @@.mediumorchid;struggle to accept this.@@
+			is devoted to you, but $pronoun will @@.mediumorchid;struggle to accept this.@@
 			<<set $slaves[$i].devotion -= 2>>
 		<<elseif $slaves[$i].devotion > 20>>
-			has accepted being a sex slave, but she will @@.mediumorchid;resent this intensely.@@
+			has accepted being a sex slave, but $pronoun will @@.mediumorchid;resent this intensely.@@
 			<<set $slaves[$i].devotion -= 3>>
 		<<else>>
 			will of course @@.mediumorchid;hate you for this.@@
@@ -894,15 +921,15 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 				<<replace `"#" + _dispositionId`>>
 					The child<<if _count > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's future minded schools, to be administered fertility and virility treatments as well as be brought up to take pride in reproduction. $slaves[$i].slaveName
 					<<if $slaves[$i].devotion > 95>>
-						loves you already, but she'll @@.hotpink;love you even more@@ for this. She can't wait to see her child<<if _count > 1>>ren<</if>> proudly furthering your cause.
+						loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this. $pronounCap can't wait to see $possessive child<<if _count > 1>>ren<</if>> proudly furthering your cause.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 50>>
-						heard about these and will be @@.hotpink;happy that her child<<if _count > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ She will miss her child<<if _count > 1>>ren<</if>>, but she expected that.
+						heard about these and will be @@.hotpink;happy that $possessive child<<if _count > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $pronounCap will miss $possessive child<<if _count > 1>>ren<</if>>, but $pronoun expected that.
 						<<set $slaves[$i].devotion += 4>>
 					<<elseif $slaves[$i].devotion > 20>>
-						will naturally miss her child<<if _count > 1>>ren<</if>>, but will is broken enough to hope that her offspring will have a better life, or at least an enjoyable one.
+						will naturally miss $possessive child<<if _count > 1>>ren<</if>>, but will is broken enough to hope that $possessive offspring will have a better life, or at least an enjoyable one.
 					<<else>>
-						will of course @@.mediumorchid;hate you for this.@@ The mere thought of her $fertilityAge year old daughter<<if _count > 1>>s<</if>> swollen with life, and proud of it, fills her with @@.gold;disdain.@@
+						will of course @@.mediumorchid;hate you for this.@@ The mere thought of $possessive $fertilityAge year old daughter<<if _count > 1>>s<</if>> swollen with life, and proud of it, fills $object with @@.gold;disdain.@@
 						<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 					<</if>>
 					<<set $breederOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
@@ -914,13 +941,13 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 			<<replace `"#" + _dispositionId`>>
 				The child<<if _count > 1>>ren are<<else>> is<</if>> sent to one of $arcologies[0].name's citizen schools, to be brought up coequal with the arcology's other young people. $slaves[$i].slaveName
 				<<if $slaves[$i].devotion > 95>>
-					loves you already, but she'll @@.hotpink;love you even more@@ for this.
+					loves you already, but <<print $pronoun>>'ll @@.hotpink;love you even more@@ for this.
 				<<elseif $slaves[$i].devotion > 50>>
-					knows about these and will be @@.hotpink;overjoyed.@@ She will miss her child<<if _count > 1>>ren<</if>>, but she expected that.
+					knows about these and will be @@.hotpink;overjoyed.@@ $pronounCap will miss $possessive child<<if _count > 1>>ren<</if>>, but $pronoun expected that.
 				<<elseif $slaves[$i].devotion > 20>>
-					will naturally miss her child<<if _count > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that her offspring will have a better life.
+					will naturally miss $possessive child<<if _count > 1>>ren<</if>>, but will @@.hotpink;take comfort@@ in the hope that $possessive offspring will have a better life.
 				<<else>>
-					will naturally retain some resentment over being separated from her child<<if _count > 1>>ren<</if>>, but this should be balanced by hope that her offspring will have a better life.
+					will naturally retain some resentment over being separated from $possessive child<<if _count > 1>>ren<</if>>, but this should be balanced by hope that $possessive offspring will have a better life.
 				<</if>>
 				<<set $slaves[$i].devotion += 4, $citizenOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
 			<</replace>>
@@ -934,9 +961,9 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 				<<elseif $slaves[$i].devotion > 50>>
 					understands that this is the best possible outcome for the offspring of slave, and will be @@.hotpink;overjoyed.@@
 				<<elseif $slaves[$i].devotion > 20>>
-					will miss her child<<if _count > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since she'll understand this is the best possible outcome for a slave mother.
+					will miss $possessive child<<if _count > 1>>ren<</if>>, but will be @@.hotpink;very grateful,@@ since <<print $pronoun>>'ll understand this is the best possible outcome for a slave mother.
 				<<else>>
-					will resent being separated from her child<<if _count > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
+					will resent being separated from $possessive child<<if _count > 1>>ren<</if>>, but @@.hotpink;should understand and be grateful@@ that this is the best possible outcome here.
 				<</if>>
 				The child<<if _count > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition.
 				<<set $slaves[$i].devotion += 6, $privateOrphanageTotal += _count, $slaveOrphanageTotal -= _count>>
@@ -948,16 +975,19 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 	<</span>>
 <<elseif $Cash4Babies == 1>>
 	<<set _babyCost = random(-12,12)>>
-	<<if $slaves[$i].pregType == 50>>
-		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>@@.
+	<<if $slaves[$i].broodmother == 2>>
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat(12*(50+_babyCost))>>.@@
 		<<set $cash += 12*(50+_babyCost)>>
+	<<elseif $slaves[$i].broodmother == 1>>
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat((50+_babyCost))>>.@@
+		<<set $cash += (50+_babyCost)>>
 	<<else>>
-		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>@@.
+		$possessiveCap babies sold for a total of @@.yellowgreen;<<print cashFormat($slaves[$i].pregType*(50+_babyCost))>>.@@
 		<<set $cash += $slaves[$i].pregType*(50+_babyCost)>>
 	<</if>>
 <</if>>
 
-<<if $slaves[$i].pregType == 50>>
+<<if $slaves[$i].broodmother == 2>>
 	<<set $slaves[$i].births += 12>>
 	<<set $slaves[$i].birthsTotal += 12>>
 	<<set $birthsTotal += 12>>
@@ -965,15 +995,32 @@ Childbirth has @@.lime;stretched out $possessive vagina.@@
 		<<set $PC.slavesFathered += 12>>
 	<</if>>
 	<<if $slaves[$i].mpreg == 1>>
-	<<if $slaves[$i].anus < 3>>
-	<<set $slaves[$i].anus = 3>>
-	<</if>>
+		<<if $slaves[$i].anus < 3>>
+			<<set $slaves[$i].anus = 3>>
+		<</if>>
 	<<else>>
-	<<if $slaves[$i].vagina < 3>>
-	<<set $slaves[$i].vagina = 3>>
+		<<if $slaves[$i].vagina < 3>>
+			<<set $slaves[$i].vagina = 3>>
+		<</if>>
 	<</if>>
+	<<set $slaves[$i].preg = 37>>
+<<elseif $slaves[$i].broodmother == 1>>
+	<<set $slaves[$i].births += 1>>
+	<<set $slaves[$i].birthsTotal += 1>>
+	<<set $birthsTotal += 1>>
+	<<if $slaves[$i].pregSource == -1>>
+		<<set $PC.slavesFathered += 1>>
+	<</if>>
+	<<if $slaves[$i].mpreg == 1>>
+		<<if $slaves[$i].anus < 3>>
+			<<set $slaves[$i].anus = 3>>
+		<</if>>
+	<<else>>
+		<<if $slaves[$i].vagina < 3>>
+			<<set $slaves[$i].vagina = 3>>
+		<</if>>
 	<</if>>
-	<<set $slaves[$i].preg = 31>>
+	<<set $slaves[$i].preg = 37>>
 <<else>>
 	<<if lastPregRule($slaves[$i],$defaultRules)>><<set $slaves[$i].preg = -1>><<else>><<set $slaves[$i].preg = 0>><</if>>
 	<<set $slaves[$i].births += $slaves[$i].pregType>>
diff --git a/src/uncategorized/seCoursing.tw b/src/uncategorized/seCoursing.tw
index fa65336d8cf2e091658a9a43a1045640baba6b06..b3e8fc6dce5af89813844317646fce5ece56c60d 100644
--- a/src/uncategorized/seCoursing.tw
+++ b/src/uncategorized/seCoursing.tw
@@ -15,7 +15,9 @@ The rules have been explained to the hares: they're to be freed if they can reac
 <<set _possibleOrigins = []>>
 <<if $seeDicks != 100>>
 	<<set _possibleOrigins.push("housewife")>>
-	<<set _possibleOrigins.push("heavily pregnant")>>
+	<<if $seePreg != 0>>
+		<<set _possibleOrigins.push("heavily pregnant")>>
+	<</if>>
 	<<set _possibleOrigins.push("virgin")>>
 	<<set _possibleOrigins.push("disobedient young")>>
 <</if>>
diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw
index 7bc7b9fcd67b1a8be3c271d3a33c5cd83d68d0e4..a01f97c0d69273e5a6076d32123254cab55f3495 100644
--- a/src/uncategorized/seLethalPit.tw
+++ b/src/uncategorized/seLethalPit.tw
@@ -483,8 +483,16 @@ In any case, both of the slaves have been dosed with aggression enhancers and in
 		The audience is @@.green;reasonably impressed@@ by the show of strength.
 		<<set $rep += 50>>
 	<</if>>
-<<elseif (_loser.preg > 10) && (_loser.pregType >= 20)>>
-	_winner.slaveName wants to live badly enough that she takes and extremely brutal shortcut to victory.  The instant the fight starts, she quickly slices right across _loser.slaveName's massive belly, which is far to large to possibly defend.  _loser.slaveName's belly ruptures like a popped water balloon, showering _winner.slaveName with blood.  _loser.slaveName collapses into the pile of organs and babies released from her body.  _winner.slaveName walks over to the bleeding out slave and quickly cuts her throat.
+<<elseif (_loser.belly >= 300000)>>
+	_winner.slaveName wants to live badly enough that she takes and extremely brutal shortcut to victory. The instant the fight starts, she quickly slices right across _loser.slaveName's massive belly, which is far to large to possibly defend.  _loser.slaveName's belly ruptures like a popped water balloon, showering _winner.slaveName with
+	<<if _loser.pregType > 0>>
+		blood. _loser.slaveName collapses into the pile of organs and babies released from her body.
+	<<elseif _loser.bellyImplant > 0>>
+		blood and filler. _loser.slaveName collapses into the pool of organs and fluid released from her body.
+	<<else>>
+		blood and <<print _loser.inflationType>>. _loser.slaveName collapses into the pool of organs and fluid released from her body.
+	<</if>>
+	_winner.slaveName walks over to the bleeding out slave and quickly cuts her throat.
 	<<if $pitAudience == "paid">>
 		The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
 		<<set $cash += 2000>>
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index 6e9edf3d9d7a3a534259f1305c117070888b0fe7..ebe7f1aed5d032aff76c4c2c213cb234cd72f5e5 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -2,28 +2,13 @@
 
 <<nobr>>
 
-<<set $nextButton = "Continue">>
-<<set $nextLink = "Scheduled Event">>
-<<set $returnTo = "Scheduled Event">>
-<<set $pitFought = 1>>
+<<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $pitFought = 1, $fighterOne = 0, $fighterTwo = 0>>
 
-<<set $fighterOne = 0>>
-<<set $fighterTwo = 0>>
 <<if $pitBG == 0>>
 	<<set $fighterOne = $fighterIDs.random()>>
-	<<for $i = 0; $i < $slaves.length; $i++>>
-	<<if ($slaves[$i].ID == $fighterOne)>>
-		<<set $fighterOne = $slaves[$i]>>
-		<<break>>
-	<</if>>
-	<</for>>
+	<<set $fighterOne = $slaves.find(function(s) { return s.ID == $fighterOne; })>>
 <<else>>
-	<<for $i = 0; $i < $slaves.length; $i++>>
-	<<if ($slaves[$i].ID == $Bodyguard.ID)>>
-		<<set $fighterOne = $slaves[$i]>>
-		<<break>>
-	<</if>>
-	<</for>>
+	<<set $fighterOne = $slaves.find(function(s) { return s.ID == $Bodyguard.ID; })>>
 <</if>>
 <<set $fighterIDs = $fighterIDs.shuffle()>>
 <<for $i = 0; $i < $fighterIDs.length; $i++>>
@@ -32,13 +17,8 @@
 		<<break>>
 	<</if>>
 <</for>>
-<<for $i = 0; $i < $slaves.length; $i++>>
-	<<if ($slaves[$i].ID == $fighterTwo)>>
-		<<set $fighterTwo = $slaves[$i]>>
-		<<break>>
-	<</if>>
-<</for>>
-<<if ($fighterOne == 0) || ($fighterTwo == 0)>>
+<<set $fighterTwo = $slaves.find(function(s) { return s.ID == $fighterTwo; })>>
+<<if ndef $fighterOne || ndef $fighterTwo || ($fighterOne == 0) || ($fighterTwo == 0)>>
 	<<goto "Nonrandom Event">>
 <</if>>
 
@@ -427,8 +407,8 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 			<<set $rep += 50>>
 		<</if>>
 	<</if>>
-<<elseif (((_winner.preg > 30) && (_winner.pregType >= 20)) || _winner.bellyImplant >= 32000) && (((_loser.preg > 30) && (_loser.pregType >= 20)) || _loser.bellyImplant >= 32000)>>
-	_winner.slaveName and _loser.slaveName stare each other down and both come to a realization.  Neither can reach the other around their massive bellies. Instead, they choose to ram their bulk into each other in hopes of toppling the weaker. After a drawn out struggle, both slaves' middles are @@.red;dark red and shuddering@@, ready to burst open.  Rather than continue, _loser.slaveName lets the next strike down her hoping that the outcome of this fight isn't fatal.
+<<elseif (_winner.belly >= 600000) && (_loser.belly >= 600000)>>
+	_winner.slaveName and _loser.slaveName stare each other down and both come to a realization. Neither can reach the other around their massive bellies. Instead, they choose to ram their bulk into each other in hopes of toppling the weaker. After a drawn out struggle, both slaves' middles are @@.red;dark red and shuddering@@, ready to burst open. Rather than continue, _loser.slaveName lets the next strike down her hoping that the outcome of this fight isn't fatal.
 	<<set _winner.health -= 50>>
 	<<set _loser.health -= 50>>
 	<<if $pitAudience == "paid">>
@@ -438,7 +418,7 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 		The audience is @@.green;very impressed@@ by the showdown.
 		<<set $rep += 75>>
 	<</if>>
-<<elseif (((_winner.preg > 30) && (_winner.pregType >= 20)) || _winner.bellyImplant >= 32000) && (_loser.preg < 10)>>
+<<elseif (_winner.belly >= 600000) && (_loser.belly < 300000)>>
 	_loser.slaveName spies an easy win against her massively bloated opponent and rushes in to topple _winner.slaveName. In an effort to defend herself, _winner.slaveName hoists her belly and turns suddenly, accidentally impacting _loser.slaveName with her massive middle and knocking her to the ground. Seeing an oppertunity, _winner.slaveName releases her grip and slams her weighty womb down on _loser.slaveName, bashing the wind out of her. _loser.slaveName struggles to slip out from under the mass, but the weight is too great and she passes out.
 	<<if $pitAudience == "paid">>
 		The audience is impressed by this absurd win, and your @@.yellowgreen;cut of the betting@@ is reasonably.
@@ -488,8 +468,8 @@ You review the rules - the combatants are wearing light gloves, and the fight wi
 		The audience is @@.green;reasonably impressed@@ by the show of strength.
 		<<set $rep += 50>>
 	<</if>>
-<<elseif ((_loser.preg > 10) && (_loser.pregType >= 10)) || _loser.bellyImplant >= 16000>>
-	_winner.slaveName wants to win badly enough that she takes and extremely brutal shortcut to victory.  The instant the fight starts, she quickly knees _loser.slaveName in the stomach. The massively swollen _loser.slaveName goes down with a loud thud and plenty of jiggling. _winner.slaveName gloats over the struggling _loser.slaveName watching as she is unable to pull her bloated form off the ground.
+<<elseif _loser.belly >= 300000>>
+	_winner.slaveName wants to win badly enough that she takes and extremely brutal shortcut to victory. The instant the fight starts, she quickly knees _loser.slaveName in the stomach. The massively swollen _loser.slaveName goes down with a loud thud and plenty of jiggling. _winner.slaveName gloats over the struggling _loser.slaveName watching as she is unable to pull her bloated form off the ground.
 	<<if $pitAudience == "paid">>
 		The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
 		<<set $cash += 500>>
@@ -780,8 +760,7 @@ You throw the victor's strap-on down to _winner.slaveName.
 <<if (_loser.relationship <= 4)>>
 <<if (_loser.relationshipTarget == _winner.ID)>>
 	Fighting and rape have @@.lightsalmon;damaged@@ the relationship between the slaves.
-	<<set _loser.relationship -= 1>>
-	<<set _winner.relationship -= 1>>
+	<<set _loser.relationship -= 1, _winner.relationship -= 1>>
 <</if>>
 <</if>>
 <</if>>
@@ -795,14 +774,12 @@ You throw the victor's strap-on down to _winner.slaveName.
 <</if>>
 
 <<for $i = 0; $i < $slaves.length; $i++>>
-<<if _winner.ID == $slaves[$i].ID>>
-<<set $slaves[$i] = _winner>>
-<</if>>
-<</for>>
-<<for $i = 0; $i < $slaves.length; $i++>>
-<<if _loser.ID == $slaves[$i].ID>>
-<<set $slaves[$i] = _loser>>
-<</if>>
+	<<if _winner.ID == $slaves[$i].ID>>
+		<<set $slaves[$i] = _winner>>
+	<</if>>
+	<<if _loser.ID == $slaves[$i].ID>>
+		<<set $slaves[$i] = _loser>>
+	<</if>>
 <</for>>
 
 <</nobr>>\
diff --git a/src/uncategorized/seRaiding.tw b/src/uncategorized/seRaiding.tw
index c310f1d88ba2d39159fa50c94423757dafa91920..133e91a27589b6b8fe4ee54d002b18e9d6de3d8d 100644
--- a/src/uncategorized/seRaiding.tw
+++ b/src/uncategorized/seRaiding.tw
@@ -80,7 +80,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.analCount += 1>>
 	<<set $analTotal += 1>>
 	<<set $activeSlave.ovaries = 1>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, 0, 0, 0, 5, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -115,7 +115,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-20,90)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -145,7 +145,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-60,40)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -222,7 +222,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(0,20)>>
 	<<set $activeSlave.muscles = 10>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 5)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -250,7 +250,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-40,40)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -297,7 +297,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.behavioralFlaw = "liberated">>
 	<<set $activeSlave.sexualFlaw = "idealistic">>
 	<<set $activeSlave.weight = random(-40,40)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -371,7 +371,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligenceImplant = 0>>
 	<<set $activeSlave.weight = random(-10,90)>>
 	<<set $activeSlave.muscles = random(10,35)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 5)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -400,7 +400,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-50,15)>>
 	<<if $activeSlave.vagina > 0>>
-		<<if isFertile($activeSlave)>>
+		<<if isFertile($activeSlave) && $seePreg != 0>>
 			<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 			<<if $activeSlave.preg > 0>>
 				<<SetPregType $activeSlave>>
@@ -432,7 +432,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-10,60)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -489,7 +489,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligence = 2>>
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.weight = random(-50,60)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
@@ -533,7 +533,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<set $activeSlave.intelligence = 1>>
 	<<set $activeSlave.intelligenceImplant = 1>>
 	<<set $activeSlave.weight = random(-50,140)>>
-	<<if isFertile($activeSlave)>>
+	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
 			<<SetPregType $activeSlave>>
diff --git a/src/uncategorized/seWedding.tw b/src/uncategorized/seWedding.tw
index 4ad13c3c117661f72635fde02c03bb67497129c2..835b94c337fcfd1b6047c59951afea51cad4564e 100644
--- a/src/uncategorized/seWedding.tw
+++ b/src/uncategorized/seWedding.tw
@@ -288,8 +288,8 @@
 	<<else>>
 		Her lacy bridal bra flatters her pretty chest.
 	<</if>>
-	<<if ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-		Her massive, squirming pregnant belly makes her bridal wear particularly obscene.
+	<<if $activeSlave.bellyPreg >= 600000>>
+		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
 	<<elseif ($activeSlave.bellyPreg >= 1500)>>
 		Her _belly pregnant belly protrudes out the front of her bridal wear.
 	<<elseif ($activeSlave.bellyImplant >= 1500)>>
@@ -629,8 +629,8 @@
 	<<else>>
 		Her lacy bridal bra flatters her pretty chest.
 	<</if>>
-	<<if ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-		Her massive, squirming pregnant belly makes her bridal wear particularly obscene.
+	<<if $activeSlave.bellyPreg >= 600000>>
+		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
 	<<elseif ($activeSlave.bellyPreg >= 1500)>>
 		Her _belly pregnant belly protrudes out the front of her bridal wear.
 	<<elseif ($activeSlave.bellyImplant >= 1500)>>
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index 589e67dfa1a512a0176c1cbbffb207303cff19b9..eae7a0ef70b0e5e03c4e496553de9052b7a8b473 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -319,27 +319,33 @@ A reputable slave appraiser arrives promptly to inspect her and certify her qual
 <</if>>
 <<if $arcologies[0].FSRepopulationFocusSMR != 0>>
 	<<if $activeSlave.preg < -1>>
-  	  The lack of an ability to become pregnant greatly decreases value, the global market being what it is.
-	<<elseif ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-	  Such a massive pregnancy demands a high value, the global market being what it is.
+		The lack of an ability to become pregnant greatly decreases value, the global market being what it is.
+	<<elseif ($activeSlave.bellyPreg >= 300000)>>
+		That belly is all child? Incredible. Such fertility will price her very high, the global market being what it is.
+	<<elseif ($activeSlave.bellyPreg >= 120000)>>
+		Such a massive pregnancy demands a high value, the global market being what it is.
 	<<elseif ($activeSlave.preg > 10)>>
-  	  The advanced pregnancy adds a little value, the global market being what it is.
+		The advanced pregnancy adds a little value, the global market being what it is.
 	<</if>>
 <<elseif $arcologies[0].FSRestartSMR != 0>>
 	<<if $activeSlave.preg < -1>>
-  	  Her infertility improves her value, since her kind should not be allowed to reproduce.
-	<<elseif ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-	  What a disgusting creature, that filth inside her will destroy her value.
+		Her infertility improves her value, since her kind should not be allowed to reproduce.
+	<<elseif ($activeSlave.bellyPreg >= 300000)>>
+		That belly is all child? How horrible. She'd make a better example of the horrors of pregnancy than a sex slave.
+	<<elseif ($activeSlave.bellyPreg >= 30000)>>
+		What a disgusting creature, that filth inside her will destroy her value.
 	<<elseif ($activeSlave.preg > 10)>>
-	  What a waste, if she weren't pregnant, she might be worth something.
+		What a waste, if she weren't pregnant, she might be worth something.
 	<</if>>
 <<else>>
 	<<if $activeSlave.preg < -1>>
-  	  The lack of a natural vagina still removes a little value, the global market being what it is.
-	<<elseif ($activeSlave.preg > 20) && ($activeSlave.pregType >= 10)>>
-	  Such a massive and dangerous pregnancy removes some value, the global market being what it is.
+		The lack of a natural vagina still removes a little value, the global market being what it is.
+	<<elseif ($activeSlave.bellyPreg >= 300000)>>
+		Such an obscene and life threatening display of fertility will turn off most buyers and considerably damage her value, the global market being what it is.
+	<<elseif ($activeSlave.bellyPreg >= 120000)>>
+		Such a massive and dangerous pregnancy removes some value, the global market being what it is.
 	<<elseif ($activeSlave.preg > 10)>>
-  	  The advanced pregnancy removes a little value, the global market being what it is.
+		The advanced pregnancy removes a little value, the global market being what it is.
 	<</if>>
 <</if>>
 <<if $activeSlave.mpreg == 1>>
@@ -613,7 +619,7 @@ __Bids Received__
 	<<set $seed = 1>>
 <<elseif ($activeSlave.butt > 6) && (random(1,100) > 80)>>
 	<br>''<<print cashFormat($seed)>>'' from a citizen with an obvious butt expansion fetish.
-	<<set $seed to 1>>
+	<<set $seed = 1>>
 <<elseif ($activeSlave.face > 10) && (random(1,100) > 80)>>
 	<br>''<<print cashFormat($seed)>>'' from a citizen who can't keep his eyes off her pretty face.
 	<<set $seed = 1>>
@@ -653,7 +659,7 @@ __Bids Received__
 <</if>>
 <</if>>
 
-<<if isFertile($activeSlave)>>
+<<if isFertile($activeSlave) && $seePreg != 0>>
 
 <<if $slaveCost > 10000>>
 	<<if random(1,100) > 60>>
@@ -731,9 +737,10 @@ __Bids Received__
 
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $seeHyperPreg == 1 && $seeExtreme == 1>>
 <<if $activeSlave.preg > 20>>
-<<if  $activeSlave.pregType >= 10>>
+<<if $activeSlave.bellyPreg >= 300000>>
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a group that takes pleasure in performing abortions on live TV.
 	<<link "Accept bid">>
@@ -745,6 +752,7 @@ __Bids Received__
 <</if>>
 <</if>>
 <</if>>
+<</if>>
 
 <<if $activeSlave.nipples == "huge">>
 	<<if random(1,100) > 60>>
@@ -1049,6 +1057,7 @@ __Bids Received__
 <</if>>
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $activeSlave.dick == 0>>
 <<if $activeSlave.muscles > 30>>
 <<if $activeSlave.devotion > 20>>
@@ -1065,6 +1074,7 @@ __Bids Received__
 <</if>>
 <</if>>
 <</if>>
+<</if>>
 
 <<if $activeSlave.devotion > 20>>
 <<if $activeSlave.fetish == "cumslut">>
@@ -1548,6 +1558,7 @@ __Bids Received__
 <</if>>
 <</if>>
 
+<<if $seePreg != 0>>
 <<if $arcologies[0].FSPaternalist == "unset">>
 <<if $slaveCost < 10000>>
 <<if $activeSlave.health > 40>>
@@ -1564,6 +1575,7 @@ __Bids Received__
 <</if>>
 <</if>>
 <</if>>
+<</if>>
 
 <<if $arcologies[0].FSDegradationist == "unset">>
 <<if $slaveCost > 20000>>
diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw
index 86b9d9f55c2acafd951f5f6be649a774d3fa369b..9d795664cd0c4ec6820921de1c0b557758701e70 100644
--- a/src/uncategorized/servantsQuarters.tw
+++ b/src/uncategorized/servantsQuarters.tw
@@ -94,7 +94,7 @@ $servantsQuartersNameCaps
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<if $stewardessImpregnates == 1>>
 			Keeping the maids pregnant is part of her job. [[Order her to stop impregnating|Servants' Quarters][$stewardessImpregnates = 0]]
-		<<else>>
+		<<elseif $seePreg != 0>>
 			She could be directed to keep the maids pregnant herself. [[Order her to impregnate|Servants' Quarters][$stewardessImpregnates = 1]]
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index 5142f18f43fea201df87521d16e9d677013628dd..c4de059f668151fe10e8636cf5bc50c040f021af 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -46,7 +46,7 @@
 	<<elseif !canSee($HeadGirl)>>
 		''__@@.pink;$HeadGirl.slaveName@@__'' can no longer see @@.yellow;and cannot serve as your head girl any more.@@<br>
 		<<set $HeadGirl = 0>>
-	<<elseif $HeadGirl.preg > 37 && $HeadGirl.pregType == 50>>
+	<<elseif $HeadGirl.preg > 37 && $HeadGirl.broodmother == 2>>
 		''__@@.pink;$HeadGirl.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your head girl any longer@@.
 		<<set $HeadGirl = 0>>
 	<<elseif $HeadGirl.devotion <= 20>>
@@ -84,7 +84,7 @@
 	<<elseif !canTalk($Recruiter)>>
 		''__@@.pink;$Recruiter.slaveName@@__'' can't verbally entice marks @@.yellow;and cannot serve as your recruiter any more.@@<br>
 		<<set $Recruiter = 0>>
-	<<elseif $Recruiter.preg > 37 && $Recruiter.pregType == 50>>
+	<<elseif $Recruiter.preg > 37 && $Recruiter.broodmother == 2>>
 		''__@@.pink;$Recruiter.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your recruiter any longer@@.
 		<<set $Recruiter = 0>>
 	<<elseif !canWalk($Recruiter)>>
@@ -102,7 +102,7 @@
 	<<if !canTalk($Madam)>>
 		''__@@.pink;$Madam.slaveName@@__'' can't give whores verbal orders @@.yellow;and cannot serve as your Madam any more.@@<br>
 		<<set $Madam = 0>>
-	<<elseif $Madam.preg > 37 && $Madam.pregType == 50>>
+	<<elseif $Madam.preg > 37 && $Madam.broodmother == 2>>
 		''__@@.pink;$Madam.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Madam any longer@@.
 		<<set $Madam = 0>>
 	<<elseif $Madam.fetish == "mindbroken">>
@@ -123,7 +123,7 @@
 	<<if !canTalk($DJ)>>
 		''__@@.pink;$DJ.slaveName@@__'' can't speak @@.yellow;and cannot serve as your DJ any more.@@<br>
 		<<set $DJ = 0>>
-	<<elseif $DJ.preg > 37 && $DJ.pregType == 50>>
+	<<elseif $DJ.preg > 37 && $DJ.broodmother == 2>>
 		''__@@.pink;$DJ.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your DJ any longer@@.
 		<<set $DJ = 0>>
 	<<elseif $DJ.fetish == "mindbroken">>
@@ -141,7 +141,7 @@
 	<<if $Milkmaid.fetish == "mindbroken">>
 		''__@@.pink;$Milkmaid.slaveName@@__'' is mindbroken @@.yellow;and cannot serve as your Milkmaid any more.@@<br>
 		<<set $Milkmaid = 0>>
-	<<elseif $Milkmaid.preg > 37 && $Milkmaid.pregType == 50>>
+	<<elseif $Milkmaid.preg > 37 && $Milkmaid.broodmother == 2>>
 		''__@@.pink;$Milkmaid.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Milkmaid any longer@@.
 		<<set $Milkmaid = 0>>
 	<<elseif !canWalk($Milkmaid)>>
@@ -159,7 +159,7 @@
 	<<if !canTalk($Stewardess)>>
 		''__@@.pink;$Stewardess.slaveName@@__'' can't give servants verbal orders @@.yellow;and cannot serve as your Stewardess any more.@@<br>
 		<<set $Stewardess = 0>>
-	<<elseif $Stewardess.preg > 37 && $Stewardess.pregType == 50>>
+	<<elseif $Stewardess.preg > 37 && $Stewardess.broodmother == 2>>
 		''__@@.pink;$Stewardess.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Stewardess any longer@@.
 		<<set $Stewardess = 0>>
 	<<elseif $Stewardess.fetish == "mindbroken">>
@@ -180,7 +180,7 @@
 	<<if !canTalk($Schoolteacher)>>
 		''__@@.pink;$Schoolteacher.slaveName@@__'' can't give verbal instruction @@.yellow;and cannot serve as your Schoolteacher any more.@@<br>
 		<<set $Schoolteacher = 0>>
-	<<elseif $Schoolteacher.preg > 37 && $Schoolteacher.pregType == 50>>
+	<<elseif $Schoolteacher.preg > 37 && $Schoolteacher.broodmother == 2>>
 		''__@@.pink;$Schoolteacher.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Schoolteacher any longer@@.
 		<<set $Schoolteacher = 0>>
 	<<elseif $Schoolteacher.fetish == "mindbroken">>
@@ -198,7 +198,7 @@
 	<<if !canWalk($Wardeness)>>
 		''__@@.pink;$Wardeness.slaveName@@__'' is no longer independently mobile @@.yellow;and cannot serve as your Wardeness any more.@@<br>
 		<<set $Wardeness = 0>>
-	<<elseif $Wardeness.preg > 37 && $Wardeness.pregType == 50>>
+	<<elseif $Wardeness.preg > 37 && $Wardeness.broodmother == 2>>
 		''__@@.pink;$Wardeness.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Wardeness any longer@@.
 		<<set $Wardeness = 0>>
 	<<elseif !canSee($Wardeness)>>
@@ -213,7 +213,7 @@
 	<<if $Attendant.fetish == "mindbroken">>
 		''__@@.pink;$Attendant.slaveName@@__'' is mindbroken @@.yellow;and cannot serve as your Attendant any more.@@<br>
 		<<set $Attendant = 0>>
-	<<elseif $Attendant.preg > 37 && $Attendant.pregType == 50>>
+	<<elseif $Attendant.preg > 37 && $Attendant.broodmother == 2>>
 		''__@@.pink;$Attendant.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Attendant any longer@@.
 		<<set $Attendant = 0>>
 	<<elseif !canWalk($Attendant)>>
@@ -228,7 +228,7 @@
 	<<if $Nurse.fetish == "mindbroken">>
 		''__@@.pink;$Nurse.slaveName@@__'' is mindbroken @@.yellow;and cannot serve as your Nurse any more.@@<br>
 		<<set $Nurse = 0>>
-	<<elseif $Nurse.preg > 37 && $Nurse.pregType == 50>>
+	<<elseif $Nurse.preg > 37 && $Nurse.broodmother == 2>>
 		''__@@.pink;$Nurse.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your Nurse any longer@@.
 		<<set $Nurse = 0>>
 	<<elseif !canWalk($Nurse)>>
@@ -246,7 +246,7 @@
 	<<if !canWalk($Bodyguard)>>
 		''__@@.pink;$Bodyguard.slaveName@@__'' is no longer independently mobile @@.yellow;and cannot serve as your bodyguard any more.@@<br>
 		<<set $Bodyguard = 0>>
-	<<elseif $Bodyguard.preg > 37 && $Bodyguard.pregType == 50>>
+	<<elseif $Bodyguard.preg > 37 && $Bodyguard.broodmother == 2>>
 		''__@@.pink;$Bodyguard.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;she cannot effectively serve as your bodyguard any longer@@.
 		<<set $Bodyguard = 0>>
 	<<elseif !canSee($Bodyguard)>>
@@ -318,14 +318,10 @@
 <</if>>
 /* preg speed control changes*/
 <<if $slaves[$i].preg > 0>>
-	<<if $slaves[$i].preg == 1>>
+	<<if $slaves[$i].pregWeek <= 0 || $slaves[$i].pregWeek > $slaves[$i].preg>> /* at .preg = 1, .pregWeek should be 1 also */
 		<<set $slaves[$i].pregWeek = $slaves[$i].preg>>
 	<<else>>
-		<<if ndef $slaves[$i].pregWeek>>
-			<<set $slaves[$i].pregWeek = $slaves[$i].preg>>
-		<<else>>
-			<<set $slaves[$i].pregWeek++>>
-		<</if>>
+		<<set $slaves[$i].pregWeek++>>
 	<</if>>
 	<<if $slaves[$i].pregControl == "slow gestation">>
 		<<set $slaves[$i].preg += 0.5>>
@@ -369,6 +365,10 @@
 	<</if>>
 <</if>>
 
+<<if $slaves[$i].assignment == "be your Agent" || $slaves[$i].assignment == "live with your agent">>
+	<<include "SA agent">>
+<</if>>
+
 <</for>>
 
 <<if $averageDick > 0>><<set $averageDick = $averageDick/$slavesWithWorkingDicks>><</if>>
@@ -394,10 +394,12 @@
 
 <<set _HGPossibleSlaves = [[], [], [], [], [], []]>>
 <<for $i = 0; $i < _SL; $i++>>
-    <<set _Slave = $slaves[$i]>>
-    <<if (_Slave.fuckdoll == 1 || _Slave.fetish == "mindbroken" || _Slave.ID == $personalAttention || _Slave.ID == $Bodyguard.ID || _Slave.ID == $HeadGirl.ID || _Slave.assignmentVisible == 0)>>
-        <<continue>>
-    <</if>>
+	<<set _Slave = $slaves[$i]>>
+	<<if _Slave.assignmentVisible == 0 || _Slave.fuckdoll == 1 || _Slave.ID == $Bodyguard.ID || _Slave.ID == $HeadGirl.ID || _Slave.fetish == "mindbroken">>
+		<<continue>>
+	<<elseif Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == _Slave.ID; }) != -1>>
+		<<continue>>
+	<</if>>
 
     <<if ($headGirlTrainsHealth && _Slave.health < -20)>>
         <<set _HGPossibleSlaves[0].push({ID: _Slave.ID, training: "health"})>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 02a21169c42ff8335f7805df3d2ab2dc4cceb407..c548d14b4792055f91bf839c74d7058c3de5a2f8 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -115,7 +115,7 @@
 		| <<link "Get a footjob">><<replace "#miniscene">><<include "FFeet">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 	<</if>>
 	<span id = "impreg">
-	<<if (canGetPregnant($activeSlave)) && ($activeSlave.clothes != "a Fuckdoll suit")>>
+	<<if (canGetPregnant($activeSlave)) && ($activeSlave.clothes != "a Fuckdoll suit") && $seePreg != 0>>
 		<<if ($PC.dick != 0 && $activeSlave.eggType == "human")>>
 		| <<link "Impregnate her yourself">><<replace "#miniscene">><<include "FPCImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
 		<</if>>
@@ -268,13 +268,13 @@
 				<</if>>
 			<</for>>
 			<<if $assayedSlaveAvailable == 1>>
-				<<if ($activeSlave.relation is "mother")>>
+				<<if ($activeSlave.relation == "mother")>>
 					| <<link "Fuck her with her daughter">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				<<elseif ($activeSlave.relation is "daughter")>>
+				<<elseif ($activeSlave.relation == "daughter")>>
 					| <<link "Fuck her with her mother">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				<<elseif ($activeSlave.relation is "sister")>>
+				<<elseif ($activeSlave.relation == "sister")>>
 					| <<link "Fuck her with her sister">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				<<elseif ($activeSlave.relation is "twin")>>
+				<<elseif ($activeSlave.relation == "twin")>>
 					| <<link "Fuck her with her twin">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 				<</if>>
 			<<else>>
@@ -283,28 +283,37 @@
 		<</if>>
 	<</if>>
 	<<if ($activeSlave.relationship > 0)>>
+		<<set _si = $slaves.findIndex(function(s) { return s.ID == $activeSlave.relationshipTarget; })>>
 		<<for _i = 0; _i < _SL; _i++>>
 			<<if $slaves[_i].ID == $activeSlave.relationshipTarget>>
 				<<set $assayedSlave = $slaves[_i]>>
 				<<AssayedSlaveAvailable>>
 			<</if>>
 		<</for>>
-		<<if $assayedSlaveAvailable == 1>>
+		<<if isSlaveAvailable($slaves[_si])>>
 			<<if ($activeSlave.relationship == 1)>>
-			| <<link "Fuck her with her friend">><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
+				| <<link `"Fuck her with her friend <<SlaveFullName $slaves[_si]>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 			<<elseif ($activeSlave.relationship == 2)>>
-			| <<link "Fuck her with her best friend">><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
+				| <<link `"Fuck her with her best friend <<SlaveFullName $slaves[_si]>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 			<<elseif ($activeSlave.relationship == 3)>>
-			| <<link "Fuck her with her FWB">><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
+				| <<link `"Fuck her with her FWB <<SlaveFullName $slaves[_si]>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 			<<elseif ($activeSlave.relationship == 4)>>
-			| <<link "Fuck her with her lover">><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
+				| <<link `"Fuck her with her lover <<SlaveFullName $slaves[_si]>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 			<<else>>
-			| <<link "Fuck her with her slave wife">><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
+				| <<link `"Fuck her with her slave wife <<SlaveFullName $slaves[_si]>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 			<</if>>
 		<<else>>
-			| //$assayedSlave.slaveName is unavailable//
-			<<if $assayedSlave.assignment == "be your agent">>
-				[[Send her to live with your agent|Agent Company][$subSlave = $assayedSlave]]
+			<<if $slaves[_si].assignment == "be your agent">>
+				<<if $activeSlave.broodmother < 2>>
+					| <<link `"Send her to live with your agent <<SlaveFullName $slaves[_si]>>"`>>
+						<<set $subSlave = $slaves[_si]>>
+						<<goto "Agent Company">>
+					<</link>>
+				<<else>>
+					| //A hyper-broodmother cannot be sent to live with your agent//
+				<</if>>
+			<<else>>
+				| //<<SlaveFullName $slaves[_si]>> is unavailable//
 			<</if>>
 		<</if>>
 	<</if>>
@@ -364,7 +373,7 @@
 	*/
 <</if>>
 
-<<if $universalRulesImpregnation == "HG">>
+<<if $universalRulesImpregnation == "HG" && $seePreg != 0>>
 	<br><br>
 	<<if $activeSlave.HGExclude == 0>>
 		Will be bred by the head girl when fertile. [[Exempt her|Slave Interact][$activeSlave.HGExclude = 1]]
@@ -584,7 +593,7 @@
 	<</if>>
 
 	<<if $dairy != 0>>
-		<<if $dairy > $dairySlaves && ((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.pregType >= 50))))>>
+		<<if $dairy > $dairySlaves && ((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.broodmother > 0))))>>
 			Dairy
 		<<elseif (($activeSlave.lactation > 0) || ($activeSlave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>>
 			 [[Dairy|Assign][$assignTo = "Dairy", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
@@ -715,7 +724,7 @@
 		| <<link "Cruel retirement counter">><<set $activeSlave.collar = "cruel retirement counter">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	<</if>>
 	| <<link "Uncomfortable leather">><<set $activeSlave.collar = "uncomfortable leather">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
-	<<if $activeSlave.preg > -1>>
+	<<if $activeSlave.preg > -1 && $seePreg != 0>>
 	| <<link "Pregnancy biometrics">><<set $activeSlave.collar = "preg biometrics">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	<</if>>
 	| <<link "Shock punishment">><<set $activeSlave.collar = "shock punishment">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
@@ -1040,13 +1049,13 @@ Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<prin
 	<</link>>
 <<elseif $activeSlave.induce == 1>>
 	//Hormones are being slipped into her food, she will give birth suddenly and rapidly this week//
-<<elseif ($activeSlave.preg > 38) && ($activeSlave.pregType < 50) && ($activeSlave.labor == 0)>>
+<<elseif ($activeSlave.preg > 38) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>>
 	[[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]]
-<<elseif ($activeSlave.pregType == 50) && ($activeSlave.preg > 38)>>
+<<elseif ($activeSlave.broodmother > 0) && ($activeSlave.preg > 37)>>
 	[[Induce mass childbirth|BirthStorm]]
-<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50) && $activeSlave.breedingMark == 1 && $activeSlave.pregSource == -1>>
+<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0) && $activeSlave.breedingMark == 1 && $activeSlave.pregSource == -1>>
 	//You are forbidden from aborting an elite child//
-<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50)>>
+<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0)>>
 	[[Abort her pregnancy|Abort]]
 <</if>>
 <</if>>
@@ -1067,14 +1076,14 @@ __Contraception__: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<
 	<<link "Let her get pregnant">><<set $activeSlave.preg = 0>>
 	<<SlaveInteractFertility>>
 	<</link>>
-<<elseif ($activeSlave.pregType == 50) && ($activeSlave.preg > 38)>>
+<<elseif ($activeSlave.broodmother > 0) && ($activeSlave.preg > 37)>>
 	[[Induce mass childbirth|BirthStorm]]
-<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50)>>
+<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0)>>
 	[[Abort her pregnancy|Abort]]
 <</if>>
 <</if>>
 <</if>>
-<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1) && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.pregType < 50)>>
+<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1) && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0) && $seePreg != 0>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 	__Pregnancy control__: <span id="pregControl"><<if $activeSlave.pregControl == "labor supressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation<<elseif $activeSlave.pregControl == "speed up">>Faster gestation<<else>>Normal gestation<</if>></span>
 	<<if ($activeSlave.preg >= 38)>>
@@ -1099,7 +1108,7 @@ __Contraception__: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<
 <</if>>
 </span>
 <<if $incubator > 0>>
-<<if $activeSlave.preg > 0 && $activeSlave.pregType < 50 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">>
+<<if $activeSlave.preg > 0 && $activeSlave.broodmother == 0 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">>
 <<if $activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0>>
 <<else>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1170,11 +1179,15 @@ __Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation is
 <br>
 Hormones: <strong><span id="hormones">
 <<if $activeSlave.hormones == -2>>intensive male<<elseif $activeSlave.hormones == -1>>male<<elseif $activeSlave.hormones == 2>>intensive female<<elseif $activeSlave.hormones == 1>>female<<else>>none<</if>></span></strong>.
+<<if $activeSlave.indentureRestrictions < 2>>
 <<link "Intensive Female">><<set $activeSlave.hormones = 2>><<replace "#hormones">>intensive female<</replace>><</link>> |
+<</if>>
 <<link "Female">><<set $activeSlave.hormones = 1>><<replace "#hormones">>female<</replace>><</link>> |
 <<link "None">><<set $activeSlave.hormones = 0>><<replace "#hormones">>none<</replace>><</link>> |
 <<link "Male">><<set $activeSlave.hormones = -1>><<replace "#hormones">>male<</replace>><</link>> |
+<<if $activeSlave.indentureRestrictions < 2>>
 <<link "Intensive Male">><<set $activeSlave.hormones = -2>><<replace "#hormones">>intensive male<</replace>><</link>>
+<</if>>
 
 <br>Diet: <strong><span id="diet">$activeSlave.diet</span></strong>.
 <<link "Healthy">><<set $activeSlave.diet = "healthy">><<replace "#diet">>$activeSlave.diet<</replace>><</link>>
@@ -1297,7 +1310,9 @@ Hormones: <strong><span id="hormones">
 	| <<link "Sub">><<set $activeSlave.clitSetting = "submissive">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
 	| <<link "Dom">><<set $activeSlave.clitSetting = "dom">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
 	| <<link "Humiliation">><<set $activeSlave.clitSetting = "humiliation">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
+	<<if $seePreg != 0>>
 	| <<link "Preg">><<set $activeSlave.clitSetting = "pregnancy">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
+	<</if>>
 	| <<link "Pain">><<set $activeSlave.clitSetting = "masochist">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
 	| <<link "Sadism">><<set $activeSlave.clitSetting = "sadist">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
 	| <<link "Men">><<set $activeSlave.clitSetting = "men">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>>
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index ab07c1b666ef6d13af41856eeb26fa973d59779e..75788104e472f4cfac847ce638f11965e776ce06 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -26,7 +26,10 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set _possibleOrigins.push("geldling", "dickpain")>>
 <</if>>
 <<if _num > $seeDicks>>
-	<<set _possibleOrigins.push("plugs", "breeder", "used whore", "reaction", "broken womb")>>
+	<<set _possibleOrigins.push("plugs", "used whore", "reaction")>>
+	<<if $seePreg != 0>>
+		<<set _possibleOrigins.push("breeder", "broken womb")>>
+	<</if>>
 <</if>>
 <<if $week > 80>>
 	<<set _possibleOrigins.push("degraded DoL")>>
@@ -180,7 +183,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.stampTat = either("degradation", "rude words", 0)>>
 	<<set $shelterSlave.analSkill = random(10,25)>>
 	<<set $shelterSlave.anus = random(1,4)>>
-	<<if isFertile($shelterSlave)>>
+	<<if isFertile($shelterSlave) && $seePreg != 0>>
 		<<set $shelterSlave.preg = either(-3, -2, -2, -2, 0, 0, 2, 3, 4, 5)>>
 		<<if $shelterSlave.preg > 0>>
 			<<set $shelterSlave.pregSource = -2, $shelterSlave.pregKnown = 1>>
diff --git a/src/uncategorized/slaveSold.tw b/src/uncategorized/slaveSold.tw
index 25d539554cbedd12c5ba2b3152f3f834030e0252..d5af7f29cccbe5d1862ceec0240e5ce2ff9674e2 100644
--- a/src/uncategorized/slaveSold.tw
+++ b/src/uncategorized/slaveSold.tw
@@ -519,13 +519,11 @@
 <<case "abortion TV">>
 	$activeSlave.slaveName is soon seen on live TV, restrained and still grotesquely pregnant. She screams into her restraints as the host approaches with a comically large syringe of Abortificants and drives it deep into her womb. Within minutes, a flood of liquid and feti are pouring from her gaping cunt, all the while he times how long it takes her overburdened womb to drain of all its contents.
 	<<for $j = 0; $j < $slaves.length; $j++>>
-	<<if ($slaves[$j].preg > 20)>>
-	<<if ($slaves[$j].pregType >= 10)>>
+	<<if $slaves[$j].bellyPreg >= 300000>>
 		<<ClearSummaryCache $slaves[$j]>>
 		<<set $slaves[$j].trust -= 15>>
 		<<set $seed = 1>>
 	<</if>>
-	<</if>>
 	<</for>>
 	<<if ($seed == 1)>>
 	Your other hyper pregnant slaves @@.gold;are terrified that their children will be ripped from them@@ if they don't please you.
diff --git a/src/uncategorized/slaveSummary.tw b/src/uncategorized/slaveSummary.tw
index 13ac8e0a441a478fb8975d42414a4f60752b7856..5624945b2da475868b9b1399b99f3a42b36b9c8b 100644
--- a/src/uncategorized/slaveSummary.tw
+++ b/src/uncategorized/slaveSummary.tw
@@ -3,7 +3,7 @@
 <<set setup.passagePreFilters = setup.passagePreFilters || {
 	"Main":                      s => (s.assignmentVisible == 1),
 	"Personal Attention Select": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0),
-	"Agent Select":              s => (s.fuckdoll == 0 && s.devotion >= 20 && s.intelligence > 0 && s.intelligenceImplant > 0 && canWalk(s) && canSee(s) && canTalk(s) && s.pregType < 50 && s.breedingMark != 1),
+	"Agent Select":              s => (s.fuckdoll == 0 && s.devotion >= 20 && s.intelligence > 0 && s.intelligenceImplant > 0 && canWalk(s) && canSee(s) && canTalk(s) && s.broodmother < 2 && s.breedingMark != 1),
 	"BG Select":                 s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.assignment != "guard you" && canWalk(s) && canSee(s) && s.breedingMark != 1),
 	"Recruiter Select":          s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.assignment != "recruit girls" && canWalk(s) && canSee(s) && canTalk(s)),
 	"HG Select":                 s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.assignment != "be your Head Girl" && canWalk(s) && canSee(s) && canTalk(s)),
@@ -132,12 +132,27 @@
 	<<elseif "recruit girls" == _Slave.assignment>>''@@.lightcoral;RC@@''
 	<<elseif "guard you" == _Slave.assignment>>''@@.lightcoral;BG@@''
 	<</if>>
-	<<if $personalAttention == _Slave.ID>>''@@.lightcoral;PA@@''<</if>>
+	<<if Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == _Slave.ID; }) != -1>>''@@.lightcoral;PA@@''<</if>>
 	[[_slaveName|Slave Interact][$activeSlave = $slaves[_ssi]]] /* lists their names */
 	
 <<case "Personal Attention Select">>
 	<br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Slave 1>></div><</if>>
-	[[_slaveName|Personal Attention Select][$activeSlave = $slaves[_ssi], $personalAttention = $slaves[_ssi].ID, $personalAttentionChanged = 1]]
+	<<link _slaveName>>
+		<<if !Array.isArray($personalAttention)>> /* first PA target */
+			<<set $personalAttention = [{ID: $slaves[_ssi].ID, trainingRegimen: "undecided"}]>>
+		<<else>>
+			<<set _pai = $personalAttention.findIndex(function(s) { return s.ID == $slaves[_ssi].ID; })>>
+			<<if _pai == -1>> /* not already a PA target; add */
+				<<set $activeSlave = $slaves[_ssi], $personalAttention.push({ID: $slaves[_ssi].ID, trainingRegimen: "undecided"})>>
+			<<else>> /* already a PA target; remove */
+				<<set $personalAttention.deleteAt(_pai)>>
+				<<if $personalAttention.length == 0>>
+					<<set $personalAttention = "sex">>
+				<</if>>
+			<</if>>
+		<</if>>
+		<<goto "Personal Attention Select">>
+	<</link>>
 <<case "Agent Select">>
 	<br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Slave 1>></div><</if>>
 	[[_slaveName|Agent Workaround][$i = _ssi]]
@@ -293,7 +308,7 @@
 	<<elseif _Slave.breedingMark == 1 && $dairyRestriantsSettings > 0>>
 		<br>//_Slave.slaveName may only be a free range cow//
 		<<continue>>
-	<<elseif ($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.pregType >= 50))>>
+	<<elseif ($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother != 0))>>
 		<br>//_Slave.slaveName's womb cannot accommodate current machine settings//
 		<<continue>>
 	<<else>>
@@ -615,7 +630,7 @@ will
 	<</if>>
 
 	<<if $dairy != 0>>
-		<<if $dairy > $dairySlaves && (((_Slave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || (_Slave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.pregType >= 50))))>>
+		<<if $dairy > $dairySlaves && (((_Slave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || (_Slave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother > 0))))>>
 			Dairy
 		<<elseif ((_Slave.lactation > 0) || (_Slave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>>
 			 [[Dairy|Assign][$assignTo = "Dairy", $i = _ssi]] /* $i = -1 tells Assign to use _Slave as-is */
diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw
index 46b5a7f490a77d7c66bff9bc26d05ae4d63ccb37..e17726d4c51f80cdc98791e8781962e359895b4e 100644
--- a/src/uncategorized/storyCaption.tw
+++ b/src/uncategorized/storyCaption.tw
@@ -57,10 +57,7 @@
 <br><br>
 <<if $nextButton == "END WEEK">>
 	<span id="endWeekButton"><strong><<link [[($nextButton)|($nextLink)]]>>
-	<<script>>
-	State.variables.slaves.map(function(y){y.assignmentVisible = 1});
-	State.variables.slaves.filter(function(x){return x.assignment == "live with your Head Girl" || x.assignment.includes("in the") || x.assignment == "work as a servant" || x.assignment.includes("be the") || x.assignment == "be your agent" || x.assignment == "be your Concubine"}).map(function(y){y.assignmentVisible = 0})
-	<</script>>
+	<<resetAssignmentFilter>> /* very important! */
 	<</link>></strong></span> @@.cyan;[Ent]@@
 <<else>>
 	<span id="nextButton"> /* target for miscWidgets' <<UpdateNextButton>> */
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index e0702a504cb793555d8a643ce6e0a19a08092aad..ee96e7efda91affb98b892cc18fe36c8e812c216 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -387,17 +387,17 @@ As the remote surgery's long recovery cycle completes,
 
 <<case "preg">>
 	<<if ($activeSlave.fetish == "pregnancy") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>>
-		She leaves the surgery with a certain fullness in her lower abdomen, she knows that she has been impregnated. She is @@.hotpink; filled with joy@@ about being swollen with life and gleefully rubs her bulging belly. She's so pleased that she now @@.mediumaquamarine;trusts@@ your plans for her body. As with all surgery @@.red;her health has been slightly affected.@@
+		She leaves the surgery with a certain warmth in her lower abdomen, she knows that she has been impregnated. She is @@.hotpink; filled with joy@@ about being swollen with life and gleefully rubs her soon to be huge belly. She's so pleased that she now @@.mediumaquamarine;trusts@@ your plans for her body. As with all surgery @@.red;her health has been slightly affected.@@
 		<<set $activeSlave.trust += 4>>
 		<<set $activeSlave.devotion += 10>>
 	<<elseif ($activeSlave.devotion > 50)>>
-		She leaves the surgery with a certain fullness in her lower abdomen, she knows that she has been impregnated.  She's @@.hotpink;grateful@@ that you think her offspring are valuable, and a little nervous about how she'll perform as a breeder. As with all surgery @@.red;her health has been slightly affected.@@
+		She leaves the surgery with a certain warmth in her lower abdomen, she knows that she has been impregnated. She's @@.hotpink;grateful@@ that you think her offspring are valuable, and a little nervous about how she'll perform as a breeder. As with all surgery @@.red;her health has been slightly affected.@@
 		<<set $activeSlave.devotion += 4>>
 	<<elseif ($activeSlave.devotion >= -20)>>
-		She leaves the surgery with a certain fullness in her lower abdomen, she knows that she has been impregnated. She understands the realities of her life as a slave, so it isn't much of a shock. As with all surgery @@.red;her health has been slightly affected.@@ She is @@.gold;sensibly fearful@@ of your total power over her body and her expanding belly.
+		She leaves the surgery with a certain warmth in her lower abdomen, she knows that she has been impregnated. She understands the realities of her life as a slave, so it isn't much of a shock. As with all surgery @@.red;her health has been slightly affected.@@ She is @@.gold;sensibly fearful@@ of your total power over her body and how big she will get.
 		<<set $activeSlave.trust -= 10>>
 	<<else>>
-		She leaves the surgery with a certain fullness in her lower abdomen, she knows that she has been impregnated. She does not understand the realities of her life as a slave at a core level, so she's @@.mediumorchid;terrified and angry@@ that you have forced her to be a broodmother. As with all surgery @@.red;her health has been slightly affected.@@  She is @@.gold;sensibly fearful@@ of your total power over her body and her rapidly growing brood.
+		She leaves the surgery with a certain warmth in her lower abdomen, she knows that she has been impregnated. She does not understand the realities of her life as a slave at a core level, so she's @@.mediumorchid;terrified and angry@@ that you have forced her to be a broodmother. As with all surgery @@.red;her health has been slightly affected.@@  She is @@.gold;sensibly fearful@@ of your total power over her body and her rapidly filling womb.
 		<<set $activeSlave.trust -= 15>>
 		<<set $activeSlave.devotion -= 15>>
 	<</if>>
@@ -406,7 +406,7 @@ As the remote surgery's long recovery cycle completes,
 		<br><br> The implant is highly receptive to fresh sperm right now; it would be trivial to seed it with yours and force her to bear hundreds of your children.
 		<br><<link "Seed her pregnancy implant with your genetic material">>
 			<<replace "#seed">>
-			You simply take her on the spot, using her to your liking and shooting a load deep into her receptive pussy. The implant rewards her upon successful fertilization, so her moans of pleasure as you pull out of her inform you she'll soon be greatly swollen with @@.lime;your brood.@@
+			You simply take her on the spot, using her to your liking and shooting a load deep into her receptive pussy. The implant rewards her upon successful fertilization, so her moans of pleasure as you pull out of her inform you she'll soon <<if $activeSlave.broodmother == 2>>be greatly swollen<<else>>grow heavy<</if>> with @@.lime;your brood.@@
 			<<set $activeSlave.pregSource = -1>>
 			<<VaginalVCheck>>
 			<</replace>>
diff --git a/src/uncategorized/tfsFarmUpgrade.tw b/src/uncategorized/tfsFarmUpgrade.tw
index 0241b32e874616a0cfdadbf1ea6ef8cc77addb75..c986fdf75e61132a683e7c3e44b6b8cbaa306a00 100644
--- a/src/uncategorized/tfsFarmUpgrade.tw
+++ b/src/uncategorized/tfsFarmUpgrade.tw
@@ -34,13 +34,15 @@ whether we will use contraception after we are transformed." She shudders sudden
 		<<set $TFS.farmUpgrade = 1>>
 	<</replace>>
 <</link>>
-<br><<link "Permit them access, and encourage them to get pregnant">>
-	<<replace "#result">>
-		You signify your assent, telling the Sister that the organ farm will accept seed tissue from any of them for the purpose of fabricating ovaries. To your mild surprise, she responds with cutely inelegant crying. You add that you think the world needs more Futanari Sisters, especially ones as cute and sexy as you're confident her many daughters will be. At that, she breaks down completely, one of her hands going to rub her belly gently. It takes her a long time to manage to thank to properly, and she hurries to end the call before she can embarrass herself further.<<if $arcologies[0].FSRestartDecoration == 100>> The Societal Elite are @@.red;outraged@@ that you would not only allow such a breach of eugenics to occur, but encourage it.<</if>>
-		<<set $TFS.farmUpgrade = 2>>
-		<<set $failedElite += 275>>
-	<</replace>>
-<</link>>
+<<if $seePreg != 0>>
+	<br><<link "Permit them access, and encourage them to get pregnant">>
+		<<replace "#result">>
+			You signify your assent, telling the Sister that the organ farm will accept seed tissue from any of them for the purpose of fabricating ovaries. To your mild surprise, she responds with cutely inelegant crying. You add that you think the world needs more Futanari Sisters, especially ones as cute and sexy as you're confident her many daughters will be. At that, she breaks down completely, one of her hands going to rub her belly gently. It takes her a long time to manage to thank to properly, and she hurries to end the call before she can embarrass herself further.<<if $arcologies[0].FSRestartDecoration == 100>> The Societal Elite are @@.red;outraged@@ that you would not only allow such a breach of eugenics to occur, but encourage it.<</if>>
+			<<set $TFS.farmUpgrade = 2>>
+			<<set $failedElite += 275>>
+		<</replace>>
+	<</link>>
+<</if>>
 <br><<link "Decline">>
 	<<replace "#result">>
 		You decline. The Sister accepts your decision politely, but cannot hide her deep disappointment.
diff --git a/src/uncategorized/universalRules.tw b/src/uncategorized/universalRules.tw
index 522148c1887fef6f68eea04d0b382099408c6a2d..ffa8e00a0d71e0fc97d324a94650bb2c32da35dd 100644
--- a/src/uncategorized/universalRules.tw
+++ b/src/uncategorized/universalRules.tw
@@ -112,7 +112,7 @@ Future society names for new slaves are currently @@.cyan;APPLIED@@. [[Stop appl
 	<</if>>
 <<elseif $universalRulesImpregnation == "PC">>
 	Fertile slaves will be ''systematically impregnated by you.'' [[Cancel insemination regime|Universal Rules][$universalRulesImpregnation = "none"]]<<if $seeDicks != 0>> | [[Delegate insemination to your Head Girl|Universal Rules][$universalRulesImpregnation = "HG"]]<</if>>
-<<else>>
+<<elseif $seePreg != 0>>
 	Fertile slaves will ''not be systematically impregnated.'' <<if $PC.dick > 0>>[[Inseminate them yourself|Universal Rules][$universalRulesImpregnation = "PC"]]<</if>><<if ($PC.dick > 0) && ($seeDicks != 0)>> | <</if>><<if $seeDicks != 0>>[[Delegate insemination to your Head Girl|Universal Rules][$universalRulesImpregnation = "HG"]]<</if>>
 <</if>>
 
diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw
index a665bad1d4c69a92d1e17ff1e60d0329d954f26a..802e82f45c151f957fb1f82b472f6b5ea5dc62b9 100644
--- a/src/uncategorized/walkPast.tw
+++ b/src/uncategorized/walkPast.tw
@@ -379,6 +379,8 @@
 	<<switch _partnerSlave.assignment>>
 	<<case "be your agent">>
 		is shaping society in her assigned arcology.
+	<<case "live with your agent">>
+		is helping her lover shape society in her assigned arcology.
 	<<case "stay confined">>
 		is confined, but you have a fine view of her <<if $seeRace == 1>>_partnerSlave.race body <</if>>on the feed from her cell.
 	<<case "work in the brothel">>
diff --git a/src/utility/assayWidgets.tw b/src/utility/assayWidgets.tw
index 221e0eef6ed91a8e30ede88157f82962a38f6ea2..d410643eb182bbfb7527e4e37e5a38d370e423fa 100644
--- a/src/utility/assayWidgets.tw
+++ b/src/utility/assayWidgets.tw
@@ -732,11 +732,13 @@
 
 <<if $arcologies[0].FSRepopulationFocus > 40>>
 <<if $args[0].preg > 30>> /*limited huge boost for full term */
-	<<if $args[0].pregType >= 50>>
-		<<set $beauty += 10*($arcologies[0].FSRepopulationFocus/25)>> /*40 limited due to constant presence. Also good breeders, but subpar mothers*/
-	<<elseif $args[0].pregType >= 20>>
+	<<if $args[0].broodmother > 0>>
+		<<set $beauty += 10*$args[0].broodmother*($arcologies[0].FSRepopulationFocus/25)>> /*40-80 limited due to constant presence. Also good breeders, but subpar mothers*/
+	<<elseif $args[0].bellyPreg >= 600000>>
+		<<set $beauty += 15*($arcologies[0].FSRepopulationFocus/10)>> /*150*/
+	<<elseif $args[0].bellyPreg >= 300000>>
 		<<set $beauty += 10*($arcologies[0].FSRepopulationFocus/10)>> /*100*/
-	<<elseif $args[0].pregType >= 10>>
+	<<elseif $args[0].bellyPreg >= 120000>>
 		<<set $beauty += 9*($arcologies[0].FSRepopulationFocus/10)>> /*90*/
 	<<else>>
 		<<set $beauty += 8*($arcologies[0].FSRepopulationFocus/10)>> /*80*/
@@ -772,9 +774,11 @@
 	<</if>>
 <<else>>
 <<if $args[0].preg > 30>>
-	<<if $args[0].pregType >= 20>>
+	<<if $args[0].bellyPreg >= 600000>>
+		<<set $beauty -= 100*($arcologies[0].FSRestart/40)>> /*-250*/
+	<<elseif $args[0].bellyPreg >= 300000>>
 		<<set $beauty -= 50*($arcologies[0].FSRestart/40)>> /*-125*/
-	<<elseif $args[0].pregType >= 10>>
+	<<elseif $args[0].bellyPreg >= 120000>>
 		<<set $beauty -= 40*($arcologies[0].FSRestart/40)>> /*-100*/
 	<<else>>
 		<<set $beauty -= 30*($arcologies[0].FSRestart/40)>> /*-75*/
@@ -1009,7 +1013,7 @@
 		<<set $beauty += ($arcologies[0].FSTransformationFetishist/20)+(Math.abs($args[0].hipsImplant))>>
 	<</if>>
 	<<set _race = $args[0].race>>
-	<<if _race.indexOf("surgically") == 1>>
+	<<if _race.indexOf("surgically") != -1>>
 		<<set $beauty += ($arcologies[0].FSTransformationFetishist/20)>>
 	<</if>>
 	<<if $args[0].faceImplant > 95 && $args[0].face > 40>>
@@ -1022,7 +1026,7 @@
 		<<set $beauty -= ($arcologies[0].FSBodyPurist/100)*($args[0].faceImplant/10)>>
 	<</if>>
 	<<set _race = $args[0].race>>
-	<<if _race.indexOf("surgically") == 1>>
+	<<if _race.indexOf("surgically") != -1>>
 		<<set $beauty -= ($arcologies[0].FSBodyPurist/20)>>
 	<</if>>
 <<elseif $arcologies[0].FSTransformationFetishist == "unset">>
@@ -1179,40 +1183,28 @@
 	<</if>>
 <<else>>
 	<<if $args[0].relation != 0>>
-	<<for $j = 0; $j < $slaves.length; $j++>>
-		<<if $slaves[$j].ID == $args[0].relationTarget>>
-			<<if $slaves[$j].assignment == $args[0].assignment>>
+		<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].relationTarget && s.assignment == $args[0].assignment; })>>
+		<<if _fre != -1>>
 			<<set $FResult += 2>>
-				<<if $arcologies[0].FSEgyptianRevivalist > 20>>
-					<<set $FResult += 2>>
-				<</if>>
+			<<if $arcologies[0].FSEgyptianRevivalist > 20>>
+				<<set $FResult += 2>>
 			<</if>>
-			<<break>>
 		<</if>>
-	<</for>>
 	<</if>>
 <</if>>
 <<if $args[0].relationship > 0>>
-	<<for $j = 0; $j < $slaves.length; $j++>>
-	<<if $slaves[$j].ID == $args[0].relationshipTarget>>
-		<<if $slaves[$j].assignment == $args[0].assignment>>
+	<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].relationshipTarget && s.assignment == $args[0].assignment; })>>
+	<<if _fre != -1>>
 		<<set $FResult += 1>>
-		<</if>>
-		<<break>>
 	<</if>>
-	<</for>>
 <<elseif $args[0].relationship == -1>>
 	<<set $FResult += 2>>
 <</if>>
 <<if $args[0].rivalry != 0>>
-	<<for $j = 0; $j < $slaves.length; $j++>>
-	<<if $slaves[$j].ID == $args[0].rivalryTarget>>
-		<<if $slaves[$j].assignment == $args[0].assignment>>
+	<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].rivalryTarget && s.assignment == $args[0].assignment; })>>
+	<<if _fre != -1>>
 		<<set $FResult -= 1>>
-		<</if>>
-		<<break>>
 	<</if>>
-	<</for>>
 <</if>>
 
 <<if $args[0].drugs == "male hormone injections" || $args[0].drugs == "female hormone injections">>
@@ -1249,12 +1241,12 @@
 
 <<if $arcologies[0].FSSupremacist != "unset">>
 	<<if $args[0].race == $arcologies[0].FSSupremacistRace>>
-		<<set $FResult -= (100/$arcologies[0].FSSupremacist)-($arcologies[0].FSSupremacistLawME)>>
+		<<set $FResult -= ($arcologies[0].FSSupremacist/5)+($arcologies[0].FSSupremacistLawME*10)>>
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSSubjugationist != "unset">>
 	<<if $args[0].race == $arcologies[0].FSSubjugationistRace>>
-		<<set $FResult += ($arcologies[0].FSSubjugationist/4)+($arcologies[0].FSSubjugationistLawME)>>
+		<<set $FResult += ($arcologies[0].FSSubjugationist/10)+($arcologies[0].FSSubjugationistLawME)>>
 	<</if>>
 <</if>>
 
@@ -1931,13 +1923,13 @@
 <<if $args[0].vaginaTat != 0>><<set $tatScore += 1>><</if>>
 <<if $args[0].dickTat != 0>><<set $tatScore += 1>><</if>>
 <<if $args[0].bellyTat != 0>>
-<<if (($args[0].preg > 30) && ($args[0].pregType >= 20)) || ($args[0].belly >= 300000)>>
+<<if ($args[0].belly >= 300000)>>
 	<<set $tatScore += 0.75>>
-<<elseif (($args[0].preg > 20) && ($args[0].pregType >= 20)) || (($args[0].preg > 30) && ($args[0].pregType >= 10)) || ($args[0].belly >= 150000)>>
+<<elseif ($args[0].belly >= 150000)>>
 	<<set $tatScore += 1>>
-<<elseif ($args[0].belly >= 10000) || ($args[0].bellyImplant >= 8000)>>
+<<elseif ($args[0].belly >= 10000)>>
 	<<set $tatScore += 1>>
-<<elseif (($args[0].preg >= 10) && ($args[0].pregType >= 20)) || (($args[0].preg > 10) && ($args[0].pregType >= 10)) || ($args[0].belly >= 5000)>>
+<<elseif ($args[0].belly >= 5000)>>
 	<<set $tatScore += 0.5>>
 <<elseif ($args[0].belly >= 1500)>>
 	<<set $tatScore += 0.25>>
@@ -2009,7 +2001,9 @@
 <<if $arcologies[0].FSRepopulationFocusSMR == 1>>
 	<<if $args[0].preg < -1>>
 		<<set _slaveMultiplier -= 0.5>>
-	<<elseif ($args[0].pregType >= 10) && ($args[0].preg > 20)>>
+	<<elseif ($args[0].bellyPreg >= 300000)>>
+		<<set _slaveMultiplier += 1>>
+	<<elseif ($args[0].bellyPreg >= 120000)>>
 		<<set _slaveMultiplier += 0.5>>
 	<<elseif $args[0].preg > 10>>
 		<<set _slaveMultiplier += 0.1>>
@@ -2017,7 +2011,9 @@
 <<elseif $arcologies[0].FSRestartSMR == 1>>
 	<<if $args[0].preg < -1>>
 		<<set _slaveMultiplier += 0.5>>
-	<<elseif ($args[0].pregType >= 10) && ($args[0].preg > 20)>>
+	<<elseif ($args[0].bellyPreg >= 300000)>>
+		<<set _slaveMultiplier -= 2.5>>
+	<<elseif ($args[0].bellyPreg >= 30000)>>
 		<<set _slaveMultiplier -= 1.5>>
 	<<elseif $args[0].preg > 10>>
 		<<set _slaveMultiplier -= 1.0>>
@@ -2025,7 +2021,9 @@
 <<else>>
 	<<if $args[0].preg < -1>>
 		<<set _slaveMultiplier -= 0.1>>
-	<<elseif ($args[0].pregType >= 10) && ($args[0].preg > 20)>>
+	<<elseif ($activeSlave.bellyPreg >= 300000)>>
+		<<set _slaveMultiplier -= 1.5>>
+	<<elseif ($activeSlave.bellyPreg >= 120000)>>
 		<<set _slaveMultiplier -= 0.5>>
 	<<elseif $args[0].preg > 10>>
 		<<set _slaveMultiplier -= 0.1>>
diff --git a/src/utility/assignWidgets.tw b/src/utility/assignWidgets.tw
index 201fba73a60b423dc7cf1aa5abffaa1fc863db76..909d7578c396967686c8fa63b4dcf095503b84b9 100644
--- a/src/utility/assignWidgets.tw
+++ b/src/utility/assignWidgets.tw
@@ -54,7 +54,7 @@
 			<<default>>
 				<<set $args[0].livingRules = "normal">>
 			<</switch>>
-		<<case "live with your head girl" "live with your Head Girl" "head girl suite" "hgsuite">>
+		<<case "live with your head girl" "head girl suite" "hgsuite">>
 			<<set $args[0].assignment = "live with your Head Girl",     $args[0].assignmentVisible = 0, $HGSuiteSlaves++, $HGSuiteiIDs.push(_wID)>>
 			<<set $args[0].livingRules = "luxurious">>
 		<<case "serve in the master suite" "master suite" "mastersuite">>
@@ -80,10 +80,10 @@
 			<<default>>
 				<<set $args[0].livingRules = "luxurious">>
 			<</switch>>
-		<<case "be the Attendant" "be your Concubine" "be the DJ" "be the Madam" "be the Milkmaid" "be the Nurse" "be the Schoolteacher" "be the Stewardess" "be the Wardeness">>
+		<<case "be the attendant" "be your concubine" "be the dj" "be the madam" "be the milkmaid" "be the nurse" "be the schoolteacher" "be the stewardess" "be the wardeness">>
 			<<set $args[0].assignment = $args[1],                       $args[0].assignmentVisible = 0>>     /* non-visible leadership roles */
 			<<set $args[0].livingRules = "luxurious">>
-		<<case "be your Head Girl">>
+		<<case "be your head girl">>
 			<<set $args[0].assignment = $args[1]>>
 			<<if $HGSuite == 1>>
 				<<set $args[0].livingRules = "luxurious">>
@@ -95,21 +95,32 @@
 			<</if>>
 		<<case "be your agent" "live with your agent">>
 			<<set $args[0].assignment = $args[1],                       $args[0].assignmentVisible = 0,      $args[0].useRulesAssistant = 0>> /* non-visible roles exempt from Rules Assistant */
+			<<if $args[1] == "be your agent">>
+				<<set $leaders.push($args[0])>>
+			<</if>>
 		<<case "choose her own job">>
 			<<set $args[0].assignment = $args[1],                       $args[0].choosesOwnAssignment = 1>>  /* removeJob already set assignmentVisible = 1 */
 		<<default>>
 			<<set $args[0].assignment = $args[1]>>                      /* removeJob already set assignmentVisible = 1 and choosesOwnAssignment = 0 */
 	<</switch>>
 
-	<<if _wID == $personalAttention && $args[0].assignmentVisible == 0>>
-		<<if $PC.career == "escort">>
-			<<set $personalAttention = "whoring">>
-		<<elseif $PC.career == "servant">>
-			<<set $personalAttention = "upkeep">>
-		<<else>>
-			<<set $personalAttention = "business">>
+	<<if $args[0].assignmentVisible == 0 && Array.isArray($personalAttention)>>
+		<<set _awi = $personalAttention.findIndex(function(s) { return s.ID == _wID; })>>
+		<<if _awi != -1>>
+			<<set $personalAttention.deleteAt(_awi)>>
+			<<if $personalAttention.length == 0>>
+				<<if $PC.career == "escort">>
+					<<set $personalAttention = "whoring">>
+				<<elseif $PC.career == "servant">>
+					<<set $personalAttention = "upkeep">>
+				<<else>>
+					<<set $personalAttention = "business">>
+				<</if>>
+				$args[0].slaveName no longer has your personal attention; you plan to focus on $personalAttention.
+			<<else>>
+				$args[0].slaveName no longer has your personal attention.
+			<</if>>
 		<</if>>
-		$args[0].slaveName no longer has your personal attention; you plan to focus on $personalAttention.
 	<</if>>
 
 	<<if _wi >= 0>>
@@ -189,7 +200,7 @@
 		<<case "serve in the master suite" "master suite" "mastersuite">>
 			<<set $args[0].assignment = "please you">>
 			<<set $MastSiIDs.delete(_wID), $masterSuiteSlaves-->>
-		<<case "live with your head girl" "live with your Head Girl" "head girl suite" "hgsuite">>
+		<<case "live with your head girl" "head girl suite" "hgsuite">>
 			<<set $args[0].assignment = "rest">>
 			<<set $HGSuiteiIDs.delete(_wID), $HGSuiteSlaves-->>
 		<<case "be your head girl">>
@@ -204,6 +215,18 @@
 				<</if>>
 				You no longer have a slave assigned to be your Head Girl, so you turn your personal attention to focus on $personalAttention.
 			<</if>>
+		<<case "be your agent" "live with your agent">>
+			<<set $args[0].assignment = "rest">>
+			<<set _leaderIndex = $leaders.findIndex(function(x) { return x.ID == $args[0].ID })>>
+			<<if _leaderIndex != -1>>
+				<<set $leaders.deleteAt(_leaderIndex)>>
+			<</if>>
+			<<if $args[0].relationshipTarget > 0>> /* following code assumes there can be at most one companion */
+				<<set _lover = $slaves.findIndex(function(s) { return s.relationshipTarget == $args[0].ID && s.assignment == "live with your agent"; })>>
+				<<if _lover != -1>>
+					<<set $slaves[_lover].assignment = "rest", $slaves[_lover].assignmentVisible = 1>>
+				<</if>>
+			<</if>>
 		<<default>>
 			<<set $args[0].assignment = "rest">>
 	<</switch>>
diff --git a/src/utility/birthWidgets.tw b/src/utility/birthWidgets.tw
index e4cfc14016cbf79d77f37a3662a31b81108ea6ce..436c7495d62d39777c307c9ead9fb0a320c1829d 100644
--- a/src/utility/birthWidgets.tw
+++ b/src/utility/birthWidgets.tw
@@ -1231,7 +1231,7 @@ Her helper arrives with aid far too late. She screams when she sees $slaves[$i].
 	<<set _clothesSeed += 20>>
 <</if>>
 <<if $slaves[$i].induce == 1>>
-	<<set $suddenBirth += 90>>
+	<<set _clothesSeed += 90>>
 <</if>>
 
 <<switch $slaves[$i].clothes>>
@@ -1263,11 +1263,6 @@ Her helper arrives with aid far too late. She screams when she sees $slaves[$i].
 
 <</switch>>
 
-<<if $slaves[$i].pregType >= 50>>
-  <<set $undressed = 1>>
-<</if>>
-
-
 <<if $undressed == 0 && $slaves[$i].clothes != "no clothing" && $slaves[$i].clothes != "body oil">>
 
 <<if $slaves[$i].mpreg == 1>>
@@ -1276,7 +1271,7 @@ Her helper arrives with aid far too late. She screams when she sees $slaves[$i].
 
 <<case "attractive lingerie">>
 	<<if $slaves[$i].fetish == "mindbroken">>
-			Instinctively she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to who may be watching.  Her g-string stretches as her baby crowns into it before finally snapping and clearing the way for her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>.
+		Instinctively she begins to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>, indifferent to who may be watching.  Her g-string stretches as her baby crowns into it before finally snapping and clearing the way for her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>.
 	<<else>>
 		Quickly she spreads her legs apart and shifts her g-string aside before beginning to push out her bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>.  She can't hide what's happening between her legs, <<if $slaves[$i].fetish == "humiliation">>but that only makes it more exciting<<else>>so she bears with it<</if>>.
 	<</if>>
diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw
index 6db997fb5156c376de2fc3b530f3f8b8765ff8a0..550433dee32b4bb8ca9f8fc5ccacb2bbfdb27425 100644
--- a/src/utility/descriptionWidgets.tw
+++ b/src/utility/descriptionWidgets.tw
@@ -20,8 +20,13 @@
 <<case "medicine">>This week you will learn medicine.
 <<case "proclamation">>This week you plan to issue a proclamation about $proclamationType.
 <<default>>
-	<<if _PA > -1>>
-		You plan to train ''__@@.pink;<<SlaveFullName $slaves[_PA]>>@@__'' to $trainingRegimen this week.
+	<<if _PA.length > 0>>
+		You plan to train
+		<<for _dwi = 0; _dwi < _PA.length; _dwi++>>
+			<<if _dwi > 0 && _dwi == _PA.length - 1>>and<</if>>
+			''__@@.pink;<<SlaveFullName _PA[_dwi]>>@@__'' to $personalAttention[_dwi].trainingRegimen<<if _dwi > 0 && _dwi < _PA.length - 2>>,<</if>>
+		<</for>>
+		this week.
 	<</if>>
 <</switch>>
 
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 0d49be8733b1e2fdf3687499f05a7f2e2e352c76..b7f6ea90f2dc0bbde20c4edfcac2a82ccabde436 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -5613,7 +5613,7 @@ $pronounCap has
 	<<elseif $activeSlave.weight > 30>>
 		$activeSlave.slaveName's chubby belly is tightly squeezed by the suit.
 	<<elseif $activeSlave.bellyPreg >= 100 || $activeSlave.bellyImplant >= 100>>
-		There is a clear curve to the tight material beneath $activeSlave.slaveName's navel.	
+		There is a clear curve to the tight material beneath $activeSlave.slaveName's navel.
 	<<elseif $activeSlave.muscles > 30>>
 		$activeSlave.slaveName's suit tightly hugs $possessive stomach to showcase $possessive ripped abs.
 	<</if>>
@@ -6687,48 +6687,186 @@ $pronounCap has
 		$activeSlave.slaveName's slave outfit's straps cross between $possessive ripped abs.
 	<</if>>
 <<case "shibari ropes">>
-	<<if $activeSlave.bellyPreg >= 600000>>
-		$activeSlave.slaveName's titanic bulging pregnant belly is tightly bound with rope, its occupants shift angrily under them.
-	<<elseif $activeSlave.bellyPreg >= 300000>>
-		$activeSlave.slaveName's massive pregnant belly is tightly bound with rope, flesh angrily bulges from between them.
+	<<if $activeSlave.belly >= 1000000>>
+		//WIP//
+	<<elseif $activeSlave.belly >= 750000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's monolithic implant-filled belly is tightly bound with ropes; they stand no chance at sinking into the bloated orb.
+		<<else>>
+			$activeSlave.slaveName's monolithic pregnant belly is tightly bound with ropes. It bulges angrily as they run between the forms of $possessive unborn children.
+		<</if>>
+	<<elseif $activeSlave.belly >= 600000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's titanic implant-filled belly is tightly bound with ropes; they barely sink into the bloated orb.
+		<<else>>
+			$activeSlave.slaveName's titanic pregnant belly is tightly bound with ropes; flesh and child bulge angrily from between them. $possessiveCap children shift constantly under the tight bindings.
+		<</if>>
+	<<elseif $activeSlave.belly >= 450000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's gigantic implant-filled belly is tightly bound with ropes; they barely sink into the bloated orb.
+		<<else>>
+			$activeSlave.slaveName's gigantic pregnant belly is tightly bound with ropes; flesh and child bulge angrily from between them.
+		<</if>>
+	<<elseif $activeSlave.belly >= 300000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's massive implant-filled belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<<else>>
+			$activeSlave.slaveName's massive pregnant belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<</if>>
+	<<elseif $activeSlave.belly >= 120000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's giant implant-filled belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<<else>>
+			$activeSlave.slaveName's giant pregnant belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<</if>>
 	<<elseif $activeSlave.weight > 190>>
 		$activeSlave.slaveName's binding ropes are practically buried in $possessive massively fat belly. The only hint of their presence are the deep ravines of flesh formed around them.
-	<<elseif $activeSlave.bellyPreg >= 10000 || ($activeSlave.bellyAccessory == "a huge empathy belly") || ($activeSlave.bellyAccessory == "a large empathy belly")>>
-		$activeSlave.slaveName's big pregnant belly is tightly bound with ropes; flesh bulges angrily from between them.
+	<<elseif $activeSlave.belly >= 15000 || ($activeSlave.bellyAccessory == "a huge empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's huge implant-filled belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<<else>>
+			$activeSlave.slaveName's huge pregnant belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<</if>>
+	<<elseif $activeSlave.belly >= 10000 || ($activeSlave.bellyAccessory == "a large empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's hugely swollen belly is tightly bound with ropes. It bulges lewdly through the gaps.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's big implant-filled belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<<else>>
+			$activeSlave.slaveName's big pregnant belly is tightly bound with ropes; flesh bulges angrily from between them.
+		<</if>>
 	<<elseif $activeSlave.weight > 160>>
 		$activeSlave.slaveName's binding ropes sink deep into $possessive hugely fat belly. They can barely be seen from the front; $possessive sides completely envolope them.
 	<<elseif $activeSlave.weight > 130>>
 		$activeSlave.slaveName's binding ropes sink deep into $possessive big fat belly; most end up swallowed by $possessive folds.
-	<<elseif $activeSlave.bellyPreg >= 5000 || ($activeSlave.bellyAccessory == "a medium empathy belly")>>
-		$activeSlave.slaveName's pregnant belly is tightly bound with rope; flesh bulges angrily from between them.
+	<<elseif $activeSlave.belly >= 5000 || ($activeSlave.bellyAccessory == "a medium empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's jiggling <<print $activeSlave.inflationType>>-filled belly is tightly bound with rope. It bulges lewdly through the gaps.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's implant-filled belly is tightly bound with rope; flesh bulges angrily from between them.
+		<<else>>
+			$activeSlave.slaveName's pregnant belly is tightly bound with rope; flesh bulges angrily from between them.
+		<</if>>
 	<<elseif $activeSlave.weight > 95>>
 		$activeSlave.slaveName's binding ropes sink deep into $possessive fat belly, several even disappearing beneath $possessive folds.
-	<<elseif (($activeSlave.bellyPreg >= 1500) || ($activeSlave.bellyAccessory == "a small empathy belly"))>>
-		$activeSlave.slaveName's growing belly is tightly bound with rope, flesh bulges from between them.
+	<<elseif $activeSlave.belly >= 1500 || $activeSlave.bellyAccessory == "a small empathy belly">>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's <<print $activeSlave.inflationType>>-swollen belly is tightly bound with rope forcing it to bulge out the gaps.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's implant-rounded belly is tightly bound with rope; flesh bulges from between them.
+		<<else>>
+			$activeSlave.slaveName's growing belly is tightly bound with rope; flesh bulges from between them.
+		<</if>>
 	<<elseif $activeSlave.weight > 30>>
 		$activeSlave.slaveName's binding ropes sink into $possessive chubby belly, making noticeable folds in $possessive sides.
+	<<elseif $activeSlave.bellyPreg >= 100 || $activeSlave.bellyImplant >= 100>>
+		$activeSlave.slaveName's binding ropes run above and below the small bulge to $possessive lower belly clearly highlighting it.
+	<<elseif $activeSlave.muscles > 30>>
+		$activeSlave.slaveName's binding ropes run between $possessive ripped abs.
 	<</if>>
 <<case "restrictive latex" "a latex catsuit">>
-	<<if $activeSlave.bellyPreg >= 600000>>
-		$activeSlave.slaveName's titanic bulging pregnant belly greatly distends $possessive latex suit. $pronounCap looks like an over inflated balloon ready to pop. $possessiveCap popped navel and clearly defined occupants disrupt the smoothness.
-	<<elseif $activeSlave.bellyPreg >= 300000>>
-		$activeSlave.slaveName's massive pregnant belly greatly distends $possessive latex suit. $pronounCap looks like an over inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+	<<if $activeSlave.belly >= 1000000>>
+		//WIP//
+	<<elseif $activeSlave.belly >= 750000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's monolithic implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated weather balloon on the brink of popping. Only $possessive popped navel sticking out the front of $possessive belly disrupts the endless smoothness.
+		<<else>>
+			$activeSlave.slaveName's monolithic pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated, bump coated weather balloon on the brink of popping. $possessiveCap popped navel and clearly defined occupants disrupt the smoothness
+		<</if>>
+	<<elseif $activeSlave.belly >= 600000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's titanic implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated weather balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's titanic pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated, bump coated weather balloon. $possessiveCap popped navel and bulging occupants disrupt the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 450000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's gigantic implant-filled belly greatly distends $possessive latex suit, leaving $object looking like a weather balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's gigantic pregnant belly greatly distends $possessive latex suit, leaving $object looking like a weather balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 300000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's massive implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated beachball ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's massive pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated beachball ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 150000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's giant implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated beachball. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's giant pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated beachball. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 120000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's giant implant-filled belly greatly distends $possessive latex suit, leaving $object looking like a big beachball. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's giant pregnant belly greatly distends $possessive latex suit, leaving $object looking like a big beachball. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 60000>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's huge implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's huge pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
 	<<elseif $activeSlave.weight > 190>>
-		$activeSlave.slaveName's massively fat belly greatly distends and $possessive latex suit. $pronounCap looks like an over inflated balloon ready to pop.
-	<<elseif $activeSlave.bellyPreg >= 10000 || ($activeSlave.bellyAccessory == "a huge empathy belly") || ($activeSlave.bellyAccessory == "a large empathy belly")>>
-		$activeSlave.slaveName's big pregnant belly greatly distends $possessive latex suit. $pronounCap looks like an over inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		$activeSlave.slaveName's massively fat belly greatly distends and $possessive latex suit. $pronounCap looks like an over-inflated balloon ready to pop.
+	<<elseif $activeSlave.belly >= 15000 || ($activeSlave.bellyAccessory == "a huge empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's huge implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's huge pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
+	<<elseif $activeSlave.belly >= 10000 || ($activeSlave.bellyAccessory == "a large empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's hugely swollen belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon ready to pop. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's big implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon nearing its limit. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's big pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon nearing its limit. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
 	<<elseif $activeSlave.weight > 160>>
-		$activeSlave.slaveName's hugely fat belly greatly distends and $possessive latex suit. $pronounCap looks like an over inflated balloon.
+		$activeSlave.slaveName's hugely fat belly greatly distends and $possessive latex suit. $pronounCap looks like an over-inflated balloon.
 	<<elseif $activeSlave.weight > 130>>
-		$activeSlave.slaveName's big fat belly greatly distends $possessive latex suit. $pronounCap looks like an over inflated balloon.
-	<<elseif $activeSlave.bellyPreg >= 5000 || ($activeSlave.bellyAccessory == "a medium empathy belly")>>
-		$activeSlave.slaveName's pregnant belly greatly distends $possessive latex suit. $pronounCap looks like an over inflated balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		$activeSlave.slaveName's big fat belly greatly distends $possessive latex suit. $pronounCap looks like an over-inflated balloon.
+	<<elseif $activeSlave.belly >= 5000 || ($activeSlave.bellyAccessory == "a medium empathy belly")>>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's jiggling <<print $activeSlave.inflationType>>-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's implant-filled belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<<else>>
+			$activeSlave.slaveName's pregnant belly greatly distends $possessive latex suit, leaving $object looking like an over-inflated balloon. Only $possessive popped navel sticking out the front of $possessive belly disrupts the smoothness.
+		<</if>>
 	<<elseif $activeSlave.weight > 95>>
 		$activeSlave.slaveName's fat belly is compressed by $possessive latex suit, leaving it looking round and smooth.
-	<<elseif (($activeSlave.bellyPreg >= 1500) || ($activeSlave.bellyAccessory == "a small empathy belly"))>>
-		$activeSlave.slaveName's growing belly greatly bulges under $possessive latex suit.
+	<<elseif $activeSlave.belly >= 1500 || $activeSlave.bellyAccessory == "a small empathy belly">>
+		<<if $activeSlave.bellyFluid >= $activeSlave.bellyPreg && $activeSlave.bellyFluid >= $activeSlave.bellyImplant>>
+			$activeSlave.slaveName's <<print $activeSlave.inflationType>>-swollen belly greatly bulges under $possessive latex suit.
+		<<elseif $activeSlave.bellyImplant > 0>>
+			$activeSlave.slaveName's implant-rounded belly greatly bulges under $possessive latex suit.
+		<<else>>
+			$activeSlave.slaveName's growing belly greatly bulges under $possessive latex suit.
+		<</if>>
 	<<elseif $activeSlave.weight > 30>>
 		$activeSlave.slaveName's chubby belly in quite noticeable under $possessive latex suit, though any folds $pronoun might have are smoothed out by it.
+	<<elseif $activeSlave.bellyPreg >= 100 || $activeSlave.bellyImplant >= 100>>
+		There is a clear curve to the tight latex of the suit beneath $activeSlave.slaveName's navel.	
+	<<elseif $activeSlave.muscles > 30>>
+		$activeSlave.slaveName's latex suit tightly hugs $possessive stomach to showcase $possessive ripped abs.
 	<</if>>
 <<case "a military uniform">>
 	<<if $activeSlave.bellyPreg >= 600000>>
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index f6dd35eea659fda4dccf2bf3adba401dfe942beb..bc26a5af76eae9ed9d7ec80a15e9feabea663e2a 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -1953,19 +1953,19 @@ $possessiveCap
 		<<case "a slutty nurse outfit" "a nice nurse outfit">>
 			is in luxurious layered locks topped by a traditional white nurse's headband, complete with red cross.
 		<<case "Western clothing">>
-			in luxurious layered locks cascading out from under a cowboy hat.
+			cascades out from under a cowboy hat in luxurious layered locks.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
-			in luxurious layered locks, with a flower tucked behind one ear:
+			is in luxurious layered locks, with a flower tucked behind one ear:
 			<<FlowerDesc>>
 		<<case "a scalemail bikini">>
-		    in luxurious locks topped by a gold headband.
+		    is in luxurious locks topped by a gold headband.
 		<<default>>
-			in luxurious layered locks, cascading almost to the ground.
+			is in luxurious layered locks, cascading almost to the ground.
 		<</switch>>
 	<<elseif $activeSlave.hLength > 30>>
 		<<switch $activeSlave.clothes>>
 		<<case "body oil" "a huipil">>
-			in luxurious layered locks.
+			is in luxurious layered locks.
 		<<case "a slutty qipao">>
 			is in luxurious layered locks flowing over $possessive shoulders, ornamented with little silver talismans here and there.
 		<<case "restrictive latex" "a latex catsuit">>
@@ -1973,13 +1973,13 @@ $possessiveCap
 		<<case "harem gauze">>
 			is in luxurious layered locks flowing down $possessive back, covered by a flimsy hairnet.
 		<<case "a slave gown" "a ball gown" "a halter top dress">>
-			in luxurious layered locks flowing gorgeously down $possessive bare back.
+			is in luxurious layered locks flowing gorgeously down $possessive bare back.
 		<<case "a kimono">>
-			in luxurious layered locks flowing elegantly down $possessive back, kept sensibly in place by a set of ivory hairpins.
+			is in luxurious layered locks flowing elegantly down $possessive back, kept sensibly in place by a set of ivory hairpins.
 		<<case "a hijab and abaya" "a penitent nuns habit" "a fallen nuns habit" "a chattel habit">>
-			in luxurious layered locks flowing gorgeously but not visible under $possessive modest head covering.
+			is in luxurious layered locks flowing gorgeously but not visible under $possessive modest head covering.
 		<<case "a slutty maid outfit" "a nice maid outfit">>
-			in luxurious layered locks, decorated with a little black bow in back.
+			is in luxurious layered locks, decorated with a little black bow in back.
 		<<case "conservative clothing" "nice business attire">>
 			is in luxurious layered locks kept out of $possessive face by a couple of simple barrettes.
 		<<case "slutty business attire">>
@@ -1991,12 +1991,12 @@ $possessiveCap
 		<<case "a slutty nurse outfit" "a nice nurse outfit">>
 			is in luxurious layered locks topped by a traditional white nurse's headband, complete with red cross.
 		<<case "Western clothing">>
-			in luxurious layered locks flowing out from under a cowboy hat.
+			is in luxurious layered locks flowing out from under a cowboy hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
-			in luxurious layered locks tucked back by a flower, tucked behind one ear:
+			is in luxurious layered locks tucked back by a flower, tucked behind one ear:
 			<<FlowerDesc>>
 		<<case "a scalemail bikini">>
-		    in luxurious locks topped by a gold headband.
+		    is in luxurious locks topped by a gold headband.
 		<<default>>
 			is brushed back over $possessive shoulders.
 		<</switch>>
@@ -2031,10 +2031,10 @@ $possessiveCap
 		<<case "Western clothing">>
 			is in luxuriously styled short locks topped by a cowboy hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
-			in luxuriously styled short locks, bearing a flower tucked behind one ear:
+			is in luxuriously styled short locks, bearing a flower tucked behind one ear:
 			<<FlowerDesc>>
 		<<case "a scalemail bikini">>
-		    in short, luxurious locks topped by a gold headband.
+		    is in short, luxurious locks topped by a gold headband.
 		<<default>>
 			is brushed back.
 		<</switch>>
@@ -2056,7 +2056,7 @@ $possessiveCap
 			is in luxuriously styled short locks, and $pronoun has a flower tucked behind one ear:
 			<<FlowerDesc>>
 		<<case "a scalemail bikini">>
-		    in short, luxurious locks topped by a gold headband.
+			is in short, luxurious locks topped by a gold headband.
 		<<default>>
 			is luxuriously styled and layered.
 		<</switch>>
@@ -2209,7 +2209,6 @@ $possessiveCap
 	<<elseif $activeSlave.makeup == 8>>
 		$possessiveCap metallic makeup is color-coordinated with $possessive $activeSlave.hColor hair.
 	<<elseif $activeSlave.lipsTat == "permanent makeup">>
-		$possessiveCap face appears to bear very heavy, slutty makeup, but on closer inspection, the makeup is actually tattooed on.
 	<<else>>
 		$possessiveCap face is makeup-free.
 	<</if>>
@@ -2329,8 +2328,6 @@ $possessiveCap
 			<<if _pregCollar == 1>>
 				<<if $activeSlave.pregKnown == 0>>
 					"Knock me up!"
-				<<elseif $activeSlave.pregType >= 50>>
-					"ERROR? random(322,344) bab<<if $activeSlave.pregType > 1>>ies<<else>>y<</if>> on board!"
 				<<elseif $activeSlave.pregKnown == 1>>
 					"<<if $activeSlave.pregType == 0>>1<<else>>$activeSlave.pregType<</if>> bab<<if $activeSlave.pregType > 1>>ies<<else>>y<</if>> on board!"
 				<<else>>
@@ -2338,12 +2335,17 @@ $possessiveCap
 				<</if>>
 			<<elseif _pregCollar == 2>>
 				<<if $activeSlave.pregKnown == 1>>
-					<<if $activeSlave.pregType >= 50>>
-						"<<print 38-$activeSlave.preg>>
+					<<if $activeSlave.broodmother == 2>>
+						<<if $activeSlave.preg > 37>>
+							"I'm crowning as you read this!"
+						<<else>>
+							"<<print 38-$activeSlave.preg>> weeks till I pop!"
+						<</if>>
+					<<elseif $activeSlave.broodmother == 1>>
+						"<<print 38-$activeSlave.preg>> weeks till I pop!"
 					<<else>>
-						"<<print 40-$activeSlave.preg>>
+						"<<print 40-$activeSlave.preg>> weeks till I pop!"
 					<</if>>
-					weeks till I pop!"
 				<<else>>
 					"My womb needs filling!"
 				<</if>>
@@ -3751,54 +3753,45 @@ $possessiveCap
 <</widget>>
 
 <<widget "vaginalAccessoryDescription">>
-<<if (($activeSlave.vaginalAccessory == "chastity belt") || ($activeSlave.vaginalAccessory == "combined chastity")) && ($activeSlave.clothes == "no clothing")>>
-	$possessiveCap pussy is protected by a chastity belt.
-	<<if $arcologies[0].FSRestart != "unset">>
-	This pleases the Societal Elite.
-	<</if>>
-<<elseif ($activeSlave.vaginalAccessory == "chastity belt") || ($activeSlave.vaginalAccessory == "combined chastity")>>
-	$possessiveCap pussy is protected by a chastity belt worn under $possessive clothing.
+<<switch $activeSlave.vaginalAccessory>>
+<<case "chastity belt" "combined chastity">>
+	$possessiveCap pussy is protected by a chastity belt<<if $activeSlave.clothes != "no clothing">> worn under $possessive clothing<</if>>.
 	<<if $arcologies[0].FSRestart != "unset">>
 	This pleases the Societal Elite.
 	<</if>>
-<<elseif ($activeSlave.vaginalAccessory == "dildo")>>
+<<case "dildo">>
 	$possessiveCap pussy is filled by a dildo held in place by a strap, which $pronoun can remove for vaginal intercourse.
-<<elseif ($activeSlave.vaginalAccessory == "long dildo")>>
+<<case "long dildo">>
 	$possessiveCap pussy is filled by a very long dildo held in place by a strap, which $pronoun can remove for vaginal intercourse. It noticeably bulges $possessive stomach.
-<<elseif ($activeSlave.vaginalAccessory == "large dildo") && ($activeSlave.vagina < 2)>>
-	$possessiveCap pussy is painfully stretched by a large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse.
-<<elseif ($activeSlave.vaginalAccessory == "long, large dildo") && ($activeSlave.vagina < 2)>>
-	$possessiveCap pussy is painfully stretched by a very long and large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse. It noticeably bulges $possessive stomach.
-<<elseif ($activeSlave.vaginalAccessory == "large dildo") && ($activeSlave.vagina < 3)>>
-	$possessiveCap pussy is uncomfortably filled by a large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse.
-<<elseif ($activeSlave.vaginalAccessory == "long, large dildo") && ($activeSlave.vagina < 3)>>
-	$possessiveCap pussy is uncomfortably filled by a very long and large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse. It noticeably bulges $possessive stomach.
-<<elseif ($activeSlave.vaginalAccessory == "large dildo")>>
-	$possessiveCap pussy is comfortably filled by a large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse.
-<<elseif ($activeSlave.vaginalAccessory == "long, large dildo")>>
-	$possessiveCap pussy is comfortably filled by a very long and large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse. It noticeably bulges $possessive stomach.
-<<elseif ($activeSlave.vaginalAccessory == "huge dildo") && ($activeSlave.vagina < 4)>>
-	$possessiveCap pussy is filled to the breaking point by an enormous dildo.
-	<<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>>
-		$pronounCap can barely move with the discomfort, but $pronoun frequently climaxes with agony.
-	<<else>>
-		$pronounCap can barely move with the discomfort, and $pronoun sometimes breaks down in tears at having $possessive cunt permanently stretched.
-	<</if>>
-<<elseif ($activeSlave.vaginalAccessory == "long, huge dildo") && ($activeSlave.vagina < 4)>>
-	$possessiveCap pussy is filled to the breaking point by an enormously wide and long dildo. It noticeably bulges $possessive stomach.
-	<<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>>
-		$pronounCap can barely move with the discomfort, but $pronoun frequently climaxes with agony.
-	<<else>>
-		$pronounCap can barely move with the discomfort, and $pronoun sometimes breaks down in tears at having $possessive cunt permanently stretched.
-	<</if>>
-<<elseif ($activeSlave.vaginalAccessory == "huge dildo")>>
-	$possessiveCap cavernous pussy is comfortably filled by a huge dildo.
-<<elseif ($activeSlave.vaginalAccessory == "long, huge dildo")>>
-	$possessiveCap cavernous pussy is comfortably filled by an enormously wide and long dildo. It noticeably bulges $possessive stomach.
-<</if>>
+<<case "large dildo">>
+	$possessiveCap pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse.
+<<case "long, large dildo">>
+	$possessiveCap pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a very long and large dildo held in place by a strap, which $pronoun can remove for vaginal intercourse. It noticeably bulges $possessive stomach.
+<<case "huge dildo">>
+	<<if $activeSlave.vagina < 4>>
+		$possessiveCap pussy is filled to the breaking point by an enormous dildo.
+		<<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>>
+			$pronounCap can barely move with the discomfort, but $pronoun frequently climaxes with agony.
+		<<else>>
+			$pronounCap can barely move with the discomfort, and $pronoun sometimes breaks down in tears at having $possessive cunt permanently stretched.
+		<</if>>
+	<<else>>
+		$possessiveCap cavernous pussy is comfortably filled by a huge dildo.
+	<</if>>
+<<case "long, huge dildo">>
+	<<if $activeSlave.vagina < 4>>
+		$possessiveCap pussy is filled to the breaking point by an enormously wide and long dildo. It noticeably bulges $possessive stomach.
+		<<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>>
+			$pronounCap can barely move with the discomfort, but $pronoun frequently climaxes with agony.
+		<<else>>
+			$pronounCap can barely move with the discomfort, and $pronoun sometimes breaks down in tears at having $possessive cunt permanently stretched.
+		<</if>>
+	<<else>>
+		$possessiveCap cavernous pussy is comfortably filled by an enormously wide and long dildo. It noticeably bulges $possessive stomach.
+	<</if>>
+<</switch>>
 <</widget>>
 
-
 <<widget "dickAccessoryDescription">>
 	<<if ($activeSlave.dickAccessory == "chastity") || ($activeSlave.dickAccessory == "combined chastity")>>
 	$possessiveCap cock is encased in a tight chastity cage, which is designed to be comfortable as long as $pronoun remains soft.
diff --git a/src/utility/extendedFamilyWidgets.tw b/src/utility/extendedFamilyWidgets.tw
index 44a6d35348fdf84d732fa146e8ba226c06e52e74..2f3ef3425ecef06b682a8585b44223ead3187c5f 100644
--- a/src/utility/extendedFamilyWidgets.tw
+++ b/src/utility/extendedFamilyWidgets.tw
@@ -58,7 +58,7 @@
 <<elseif _children.length > 1>>
 	$pronounCap @@.lightgreen;gave birth to a pair of your slaves: _children[0].slaveName, and _children[1].slaveName.@@
 <<elseif _children.length > 0>>
-	$pronounCap @@.lightgreen;gave birth to a single of your slaves: _children[0].slaveName.@@
+	$pronounCap @@.lightgreen;gave birth to a single one of your slaves: _children[0].slaveName.@@
 <</if>>
 
 
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 5709b201369da1296ccf0792835fd81777152de9..28c50b8c353a78b73e23e486a28060a04f84ab4c 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -566,7 +566,7 @@
 %/
 <<widget "SlaveInteractImpreg">>
 <<replace #impreg>>
-	<<if ((canGetPregnant($activeSlave)) && ($activeSlave.clothes != "a Fuckdoll suit"))>>
+	<<if (canGetPregnant($activeSlave)) && ($activeSlave.clothes != "a Fuckdoll suit") && $seePreg != 0>>
 		<<if ($PC.dick != 0 && $activeSlave.eggType == "human")>>
 		| <<link "Impregnate her yourself">><<replace "#miniscene">><<include "FPCImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
 		<</if>>
@@ -670,13 +670,13 @@
 		<<link "Let her get pregnant">><<set $activeSlave.preg = 0>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
 	<<elseif $activeSlave.induce == 1>>
 		//Hormones are being slipped into her food, she will give birth suddenly and rapidly this week//
-	<<elseif ($activeSlave.preg > 38) && ($activeSlave.pregType < 50) && ($activeSlave.labor == 0)>>
+	<<elseif ($activeSlave.preg > 38) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>>
 		[[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]]
-	<<elseif ($activeSlave.pregType == 50) && ($activeSlave.preg > 38)>>
+	<<elseif ($activeSlave.broodmother > 0) && ($activeSlave.preg > 37)>>
 		[[Induce mass childbirth|BirthStorm]]
-	<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50) && $activeSlave.breedingMark == 1 && $activeSlave.pregSource == -1>>
+	<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0) && $activeSlave.breedingMark == 1 && $activeSlave.pregSource == -1>>
 		//You are forbidden from aborting an elite child//
-	<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50)>>
+	<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0)>>
 		[[Abort her pregnancy|Abort]]
 	<</if>>
 	<</if>>
@@ -693,14 +693,14 @@
 		<<link "Use contraceptives">><<set $activeSlave.preg = -1>><<SlaveInteractFertility>><</link>>
 	<<elseif ($activeSlave.preg == -1)>>
 		<<link "Let her get pregnant">><<set $activeSlave.preg = 0>><<SlaveInteractFertility>><</link>>
-	<<elseif ($activeSlave.pregType == 50) && ($activeSlave.preg > 38)>>
+	<<elseif ($activeSlave.broodmother > 0) && ($activeSlave.preg > 37)>>
 		[[Induce mass childbirth|BirthStorm]]
-	<<elseif ($activeSlave.preg > 0) && ($activeSlave.pregType < 50)>>
+	<<elseif ($activeSlave.preg > 0) && ($activeSlave.broodmother == 0)>>
 		[[Abort her pregnancy|Abort]]
 	<</if>>
 	<</if>>
 <</if>>
-<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1) && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.pregType < 50)>>
+<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1) && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0)>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 	__Pregnancy control__: <span id="pregControl"><<if $activeSlave.pregControl == "labor supressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation<<elseif $activeSlave.pregControl == "speed up">>Faster gestation<<else>>Normal gestation<</if>></span>
 	<<if ($activeSlave.preg >= 38)>>
@@ -1391,8 +1391,7 @@
 <</for>>
 <<set _OverMenialCap = ($helots+$fuckdolls+$menialBioreactors)-$PopCap>>
 <<if _OverMenialCap > 0>>
-	<<set _Price = Math.trunc(($slaveCostFactor*1000)/100)*100>>
-	<<set _Price = Math.clamp(_Price, 500, 1500)>>
+	<<set _Price = menialSlaveCost()>>
 	<<if $helots > 0>>
 		<<if $helots > _OverMenialCap>>
 			<<set $cash += _OverMenialCap*_Price, $menialDemandFactor -= _OverMenialCap,
@@ -2912,46 +2911,48 @@ This experience
  $args[4] is an override if defined - $args[3] must be defined in this case.
 */
 <<widget "KnockMeUp">>
-	<<if random(0,99) < $args[1]>>
-		<<if $args[0].mpreg === $args[2]>>
-			<<set $args[0].preg = 1>>
-			<<set $args[0].pregSource = $args[3] || 0>>
-			<<if $args[0].ID != -1>>
-				<<set $args[0].pregWeek = 1>>
-			<</if>>
-			<<SetPregType $args[0]>>
-			<<if $menstruation == 1>>
-			<<elseif ndef $args[4]>>
-				<<set $args[0].pregKnown = 1>>
-				<<if $args[0].ID == -1>>
-					/*@@.lime;You have gotten pregnant.@@*/
-				<<elseif $args[0].fuckdoll == 0>>
-					@@.lime;She has become pregnant.@@
+	<<if $seePreg != 0>>
+		<<if random(0,99) < $args[1]>>
+			<<if $args[0].mpreg === $args[2]>>
+				<<set $args[0].preg = 1>>
+				<<set $args[0].pregSource = $args[3] || 0>>
+				<<if $args[0].ID != -1>>
+					<<set $args[0].pregWeek = 1>>
+				<</if>>
+				<<SetPregType $args[0]>>
+				<<if $menstruation == 1>>
+				<<elseif ndef $args[4]>>
+					<<set $args[0].pregKnown = 1>>
+					<<if $args[0].ID == -1>>
+						/*@@.lime;You have gotten pregnant.@@*/
+					<<elseif $args[0].fuckdoll == 0>>
+						@@.lime;She has become pregnant.@@
+					<<else>>
+						@@.lime;It has become pregnant.@@
+					<</if>>
 				<<else>>
-					@@.lime;It has become pregnant.@@
+					<<set $args[0].pregKnown = 1>>
 				<</if>>
-			<<else>>
-				<<set $args[0].pregKnown = 1>>
-			<</if>>
-		<<elseif $args[2] == 2>>
-			<<set $args[0].preg = 1>>
-			<<set $args[0].pregSource = $args[3] || 0>>
-			<<if $args[0].ID != -1>>
-				<<set $args[0].pregWeek = 1>>
-			<</if>>
-			<<SetPregType $args[0]>>
-			<<if $menstruation == 1>>
-			<<elseif ndef $args[4]>>
-				<<set $args[0].pregKnown = 1>>
-				<<if $args[0].ID == -1>>
-					/*@@.lime;You have gotten pregnant.@@*/
-				<<elseif $args[0].fuckdoll == 0>>
-					@@.lime;She has become pregnant.@@
+			<<elseif $args[2] == 2>>
+				<<set $args[0].preg = 1>>
+				<<set $args[0].pregSource = $args[3] || 0>>
+				<<if $args[0].ID != -1>>
+					<<set $args[0].pregWeek = 1>>
+				<</if>>
+				<<SetPregType $args[0]>>
+				<<if $menstruation == 1>>
+				<<elseif ndef $args[4]>>
+					<<set $args[0].pregKnown = 1>>
+					<<if $args[0].ID == -1>>
+						/*@@.lime;You have gotten pregnant.@@*/
+					<<elseif $args[0].fuckdoll == 0>>
+						@@.lime;She has become pregnant.@@
+					<<else>>
+						@@.lime;It has become pregnant.@@
+					<</if>>
 				<<else>>
-					@@.lime;It has become pregnant.@@
+					<<set $args[0].pregKnown = 1>>
 				<</if>>
-			<<else>>
-				<<set $args[0].pregKnown = 1>>
 			<</if>>
 		<</if>>
 	<</if>>
@@ -2962,7 +2963,10 @@ This experience
  $args[0]: Slave.
 */
 <<widget "SetBellySize">>
-	<<if $args[0].preg > 5>>
+	<<if $args[0].broodmother == 1>>
+		<<set $args[0].bellyPreg = setup.broodSizeOne[$args[0].preg]>>
+		<<set $args[0].pregType = $args[0].preg>>
+	<<elseif $args[0].preg > 5>>
 		<<set $args[0].bellyPreg = getPregBellySize($args[0])>>
 	<<else>>
 		<<set $args[0].bellyPreg = 0>>
@@ -3017,31 +3021,32 @@ This experience
 <<set _names = []>>
 
 <<if ($seeRace == 1)>>
-<<if ($args[0].race == "white")>>
+<<switch $args[0].race>>
+<<case ($args[0].race == "white")>>
 	<<set _names.push("White", "Pale")>>
-<<elseif ($args[0].race == "asian")>>
+<<case "asian">>
 	<<set _names.push("Asian", "Yellow")>>
-<<elseif ($args[0].race == "latina")>>
+<<case "latina">>
 	<<set _names.push("Latina", "Brown")>>
-<<elseif ($args[0].race == "black")>>
+<<case "black">>
 	<<set _names.push("Black", "Dark")>>
-<<elseif ($args[0].race == "pacific islander")>>
+<<case "pacific islander">>
 	<<set _names.push("Islander", "Sea")>>
-<<elseif ($args[0].race == "malay")>>
+<<case "malay">>
 	<<set _names.push("Spice", "Cinnamon", "Pinoy")>>
-<<elseif ($args[0].race == "southern european")>>
+<<case "southern european">>
 	<<set _names.push("Mediterranean", "Olive")>>
-<<elseif ($args[0].race == "amerindian")>>
+<<case "amerindian">>
 	<<set _names.push("Indian", "Reservation")>>
-<<elseif ($args[0].race == "semitic")>>
+<<case "semitic">>
 	<<set _names.push("Semitic")>>
-<<elseif ($args[0].race == "middle eastern")>>
+<<case "middle eastern">>
 	<<set _names.push("Arab", "Sand")>>
-<<elseif ($args[0].race == "indo-aryan")>>
+<<case "indo-aryan">>
 	<<set _names.push("Indian", "Brown")>>
-<<elseif ($args[0].race == "mixed race")>>
+<<case "mixed race">>
 	<<set _names.push("Mulatto", "Mutt")>>
-<</if>>
+<</switch>>
 <</if>>
 
 <<set _names.push($args[0].hColor)>>
@@ -3108,13 +3113,16 @@ This experience
 <<if ($args[0].dick > 5) && ($args[0].balls > 5)>>
 	<<set $prefixes.push("Potent")>>
 <</if>>
-<<if ($args[0].pregType >= 50) && ($args[0].preg > 30)>>
+<<if ($args[0].broodmother == 2) && ($args[0].preg > 30)>>
 	<<set $prefixes.push("Seeded", "Bursting")>>
 <</if>>
-<<if ($args[0].pregType >= 10) && ($args[0].preg > 20)>>
+<<if ($args[0].broodmother == 1) && ($args[0].preg > 30)>>
+	<<set $prefixes.push("Stuffed", "Bloated")>>
+<</if>>
+<<if $args[0].bellyPreg >= 450000>>
 	<<set $prefixes.push("Squirming", "Bulging")>>
 <</if>>
-<<if ($args[0].bellyPreg > 5000)>>
+<<if ($args[0].bellyPreg >= 5000)>>
 	<<set _names.push("Preg")>>
 <</if>>
 <<if ($args[0].dick > 4)>>
@@ -3281,9 +3289,12 @@ This experience
 <<if $args[0].breedingMark == 1>>
 	<<set _suffixes.push("Breeder", "Oven", "Womb")>>
 <</if>>
-<<if ($args[0].pregType >= 50) && ($args[0].preg > 30)>>
+<<if ($args[0].broodmother == 2) && ($args[0].preg > 30)>>
 	<<set _suffixes.push("Nursery", "Factory")>>
 <</if>>
+<<if ($args[0].broodmother == 1) && ($args[0].preg > 30)>>
+	<<set _suffixes.push("Breeder", "Factory")>>
+<</if>>
 <<if $args[0].belly > 150000>>
 	<<set _suffixes.push("Balloon")>>
 <</if>>
diff --git a/src/utility/ptWidgets.tw b/src/utility/ptWidgets.tw
index 40bb0169e06d05d5ede73b12ce0018cfb9542fae..eeeb35ba438575dc52f32e69fb62eb3c2768ce7e 100644
--- a/src/utility/ptWidgets.tw
+++ b/src/utility/ptWidgets.tw
@@ -1,47 +1,49 @@
 :: PT widgets [widget nobr]
 
 <<widget "InduceFlawAbuseEffects">>
-<<if $slaves[$i].devotion > 20>>
+<<if $activeSlave.devotion > 20>>
 	She's @@.mediumorchid;desperately confused@@ by this treatment, since the effect would be ruined if you explained it to her, and her @@.gold;trust in you is reduced.@@
-<<elseif $slaves[$i].devotion >= -20>>
+<<elseif $activeSlave.devotion >= -20>>
 	She's @@.mediumorchid;confused, depressed@@ and @@.gold;frightened@@ by this treatment, since the effect would be ruined if you explained it to her.
 <<else>>
 	She's @@.mediumorchid;angry@@ and @@.gold;afraid@@ that you would treat her like this.
 <</if>>
-<<if $slaves[$i].energy > 10>>
+<<if $activeSlave.energy > 10>>
 	Her @@.red;appetite for sex is also reduced.@@
-	<<set $slaves[$i].energy -= 2>>
+	<<set $activeSlave.energy -= 2>>
 <</if>>
-<<set $slaves[$i].devotion -= 5>>
-<<set $slaves[$i].trust -= 5>>
+<<set $activeSlave.devotion -= 5>>
+<<set $activeSlave.trust -= 5>>
 <</widget>>
 
 <<widget "InduceFlawLenityEffects">>
-<<if $slaves[$i].devotion <= 20>>
+<<if $activeSlave.devotion <= 20>>
 	She doesn't understand what you intend by this strange treatment, but it does make her @@.mediumaquamarine;inappropriately trusting.@@
-	<<set $slaves[$i].trust += 5>>
+	<<set $activeSlave.trust += 5>>
 <</if>>
 <</widget>>
 
 <<widget "BasicTrainingDefaulter">>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<<set _pti = $personalAttention.findIndex(function(s) { return s.ID == $activeSlave.ID; })>>
 	<<if ($activeSlave.devotion > 20) && ($activeSlave.behavioralFlaw != "none") && ($activeSlave.behavioralQuirk == "none") && ($activeSlave.behavioralQuirk != "cum addict") && ($activeSlave.behavioralQuirk != "anal addict") && ($activeSlave.behavioralQuirk != "attention whore") && ($activeSlave.behavioralQuirk != "breast growth") && ($activeSlave.behavioralQuirk != "abusive") && ($activeSlave.behavioralQuirk != "malicious") && ($activeSlave.behavioralQuirk != "self hating") && ($activeSlave.behavioralQuirk != "neglectful") && ($activeSlave.behavioralQuirk != "breeder")>>
 		Since she's obedient, @@.yellow;her training assignment has defaulted to softening her behavioral flaw.@@
-		<<set $trainingRegimen = "soften her behavioral flaw">>
+		<<set $personalAttention[_pti].trainingRegimen = "soften her behavioral flaw">>
 	<<elseif ($activeSlave.devotion > 20) && ($activeSlave.sexualFlaw != "none") && ($activeSlave.sexualQuirk == "none")>>
 		Since she's obedient, @@.yellow;her training assignment has defaulted to softening her sexual flaw.@@
-		<<set $trainingRegimen = "soften her sexual flaw">>
+		<<set $personalAttention[_pti].trainingRegimen = "soften her sexual flaw">>
 	<<elseif ($activeSlave.devotion > 20) && ($activeSlave.behavioralFlaw != "none") && ($activeSlave.behavioralQuirk != "cum addict") && ($activeSlave.behavioralQuirk != "anal addict") && ($activeSlave.behavioralQuirk != "attention whore") && ($activeSlave.behavioralQuirk != "breast growth") && ($activeSlave.behavioralQuirk != "abusive") && ($activeSlave.behavioralQuirk != "malicious") && ($activeSlave.behavioralQuirk != "self hating") && ($activeSlave.behavioralQuirk != "neglectful") && ($activeSlave.behavioralQuirk != "breeder")>>
 		Since she's obedient and already has a behavioral quirk, @@.yellow;her training assignment has defaulted to removing her behavioral flaw.@@
-		<<set $trainingRegimen = "fix her behavioral flaw">>
+		<<set $personalAttention[_pti].trainingRegimen = "fix her behavioral flaw">>
 	<<elseif ($activeSlave.devotion > 20) && ($activeSlave.sexualFlaw != "none")>>
 		Since she's obedient and already has a sexual quirk, @@.yellow;her training assignment has defaulted to removing her sexual flaw.@@
-		<<set $trainingRegimen = "fix her sexual flaw">>
-	<<elseif ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
+		<<set $personalAttention[_pti].trainingRegimen = "fix her sexual flaw">>
+	<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust > -20)>>
 		@@.yellow;Her training assignment has defaulted to breaking her will.@@
-		<<set $trainingRegimen = "break her will">>
+		<<set $personalAttention[_pti].trainingRegimen = "break her will">>
 	<<else>>
 		She is now fully broken; @@.yellow;her training assignment has defaulted to fostering devotion.@@
-		<<set $trainingRegimen = "build her devotion">>
+		<<set $personalAttention[_pti].trainingRegimen = "build her devotion">>
 	<</if>>
+	<<set $activeSlave.training = 0, $slaves[$slaves.findIndex(function(s) { return s.ID == $activeSlave.ID; })].training = 0>>
 <</widget>>
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
index 3331c15d8af29e9bec69071f1464138a42b55f1b..3ed56277d33debaf7acebe0f86385aa72a6a145d 100644
--- a/src/utility/raWidgets.tw
+++ b/src/utility/raWidgets.tw
@@ -3011,7 +3011,7 @@ Your brand design is ''$brandDesign.''
 	<<case "work in the dairy">>
 		<<if ($dairy > $dairySlaves+$bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren)>>
 			<<if ($args[0].indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)>>
-			<<elseif (($args[0].indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($args[0].breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($args[0].bellyImplant != -1) || ($args[0].pregType >= 50)))>>
+			<<elseif (($args[0].indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($args[0].breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($args[0].bellyImplant != -1) || ($args[0].broodmother != 0)))>>
 			<<else>>
 				<<if ($args[0].lactation > 0 || (($dairySlimMaintainUpgrade == 0 || $dairySlimMaintain == 0) && ($args[0].boobs > 300 || $args[0].dick == 0 || $dairyImplantsSetting == 1) && $dairyImplantsSetting != 2)) || ($args[0].balls > 0)>>
 					<<if ($args[0].devotion > 20) || (($args[0].devotion >= -50) && ($args[0].trust < -20)) || ($args[0].trust < -50) || ($args[0].amp == 1) || ($dairyRestraintsUpgrade == 1)>>
@@ -3868,12 +3868,12 @@ Your brand design is ''$brandDesign.''
 					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
 				<</if>>
 			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+5)>>
+				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
 					<<if ($args[0].diet !== "slimming")>>
 						<<set $args[0].diet = "slimming">>
 						<br>$args[0].slaveName has been put on a slimming exercise regime.
 					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-5)>>
+				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
 					<<if ($args[0].diet !== "muscle building")>>
 						<<set $args[0].diet = "muscle building">>
 						<br>$args[0].slaveName has been put on a muscle building exercise regime.
@@ -3910,12 +3910,12 @@ Your brand design is ''$brandDesign.''
 					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
 				<</if>>
 			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+5)>>
+				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
 					<<if ($args[0].diet !== "slimming")>>
 						<<set $args[0].diet = "slimming">>
 						<br>$args[0].slaveName has been put on a slimming exercise regime.
 					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-5)>>
+				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
 					<<if ($args[0].diet !== "muscle building")>>
 						<<set $args[0].diet = "muscle building">>
 						<br>$args[0].slaveName has been put on a muscle building exercise regime.
@@ -3960,12 +3960,12 @@ Your brand design is ''$brandDesign.''
 					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
 				<</if>>
 			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+5)>>
+				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
 					<<if ($args[0].diet !== "slimming")>>
 						<<set $args[0].diet = "slimming">>
 						<br>$args[0].slaveName has been put on a slimming exercise regime.
 					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-5)>>
+				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
 					<<if ($args[0].diet !== "muscle building")>>
 						<<set $args[0].diet = "muscle building">>
 						<br>$args[0].slaveName has been put on a muscle building exercise regime.
@@ -4010,12 +4010,12 @@ Your brand design is ''$brandDesign.''
 					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
 				<</if>>
 			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+5)>>
+				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
 					<<if ($args[0].diet !== "slimming")>>
 						<<set $args[0].diet = "slimming">>
 						<br>$args[0].slaveName has been put on a slimming exercise regime.
 					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-5)>>
+				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
 					<<if ($args[0].diet !== "muscle building")>>
 						<<set $args[0].diet = "muscle building">>
 						<br>$args[0].slaveName has been put on a muscle building exercise regime.
@@ -4070,12 +4070,12 @@ Your brand design is ''$brandDesign.''
 		<</if>>
 	<</if>>
 <<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>> /* no diet rule, muscles only */
-	<<if ($args[0].muscles >= _combinedRule.muscles+5)>>
+	<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
 		<<if ($args[0].diet !== "slimming")>>
 			<<set $args[0].diet = "slimming">>
 			<br>$args[0].slaveName has been put on a slimming exercise regime.
 		<</if>>
-	<<elseif ($args[0].muscles <= _combinedRule.muscles-5)>>
+	<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
 		<<if ($args[0].diet !== "muscle building")>>
 			<<set $args[0].diet = "muscle building">>
 			<br>$args[0].slaveName has been put on a muscle building exercise regime.
@@ -4120,11 +4120,13 @@ Your brand design is ''$brandDesign.''
 <<if ($args[0].balls == 0)>>
 <<if (def _combinedRule.gelding) && (_combinedRule.gelding !== "no default setting")>>
 <<if ($args[0].hormones !== _combinedRule.gelding)>>
-	<<set $args[0].hormones = _combinedRule.gelding>>
+	<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.gelding>>
 	<<if $args[0].indentureRestrictions >= 2>>
 		<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
 	<</if>>
-	<br>$args[0].slaveName is a gelding, so she has been put on the appropriate hormonal regime.
+	<<if $args[0].hormones != _oldHormones>>
+		<br>$args[0].slaveName is a gelding, so she has been put on the appropriate hormonal regime.
+	<</if>>
 <</if>>
 <</if>>
 <<elseif ($args[0].balls > 0)>>
@@ -4133,11 +4135,13 @@ Your brand design is ''$brandDesign.''
 <<if ($args[0].assignment != "recruit girls")>>
 <<if ($args[0].assignment != "be the Wardeness")>>
 <<if ($args[0].assignment != "be the Madam")>>
-	<<set $args[0].hormones = _combinedRule.XY>>
+	<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.XY>>
 	<<if $args[0].indentureRestrictions >= 2>>
 		<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
 	<</if>>
-	<br>$args[0].slaveName is a shemale, so she has been put on the appropriate hormonal regime.
+	<<if $args[0].hormones != _oldHormones>>
+		<br>$args[0].slaveName is a shemale, so she has been put on the appropriate hormonal regime.
+	<</if>>
 <</if>>
 <</if>>
 <</if>>
@@ -4148,15 +4152,17 @@ Your brand design is ''$brandDesign.''
 
 <<if ($args[0].vagina > -1) && ($args[0].dick == 0) && (def _combinedRule.XX) && (_combinedRule.XX !== "no default setting")>>
 	<<if ($args[0].hormones !== _combinedRule.XX)>>
-		<<set $args[0].hormones = _combinedRule.XX>>
+		<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.XX>>
 		<<if $args[0].indentureRestrictions >= 2>>
 			<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
 		<</if>>
-		<br>$args[0].slaveName is a female, so she has been put on the appropriate hormonal regime.
+		<<if $args[0].hormones != _oldHormones>>
+			<br>$args[0].slaveName is a female, so she has been put on the appropriate hormonal regime.
+		<</if>>
 	<</if>>
 <</if>>
 
-<<if $args[0].preg > 3 && _combinedRule.pregSpeed != "nds" && $args[0].breedingMark != 1 && $args[0].indentureRestrictions < 1 && $args[0].pregType < 50>>
+<<if $args[0].pregKnown == 1 && _combinedRule.pregSpeed != "nds" && $args[0].breedingMark != 1 && $args[0].indentureRestrictions < 1 && $args[0].broodmother == 0>>
 	<<if _combinedRule.pregSpeed == "slow" && $args[0].preg < 31>>
 		<<set $args[0].pregControl = "slow gestation">>
 		<br>$args[0].slaveName is pregnant, so she has been put on the gestation slowing agents.
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 652e59fb36439ffd466cc9790dae26426b1daf5d..24fbedaf3976f735b8f76ce2cff0dd2dd87a62be 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -6,7 +6,7 @@
 	Called from Gen XX, Gen XY, CheatMode DB, InitNationalities.
 %/
 <<widget "BaseSlave">>
-	<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", eyewear: "none", origHColor: "brown", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, underArmHStyle: "waxed", bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillST: 0, skillMM: 0, skillWA: 0, tankBaby: 0}>>
+	<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", eyewear: "none", origHColor: "brown", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, nipplesAccessory: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, broodmother: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, underArmHStyle: "waxed", bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillST: 0, skillMM: 0, skillWA: 0, tankBaby: 0}>>
 <</widget>>
 
 /%
@@ -951,6 +951,12 @@
 			<<set $activeSlave.fetish = "masochist", $activeSlave.fetishKnown = 1>>
 			<<ToggleFetish 1>>
 		<</link>>
+		<<if $seeExtreme == 1>>
+			| <<link "Mindbroken">>
+				<<set $activeSlave.fetish = "mindbroken", $activeSlave.fetishKnown = 1, $activeSlave.sexualFlaw = "none", $activeSlave.behavioralFlaw = "none", $activeSlave.sexualQuirk = "none", $activeSlave.sexualFlaw = "none">>
+				<<ToggleFetish 1>>
+			<</link>>
+		<</if>>
 
 		<<if $activeSlave.fetish != "none">>
 		<br>
@@ -1714,7 +1720,7 @@
  Call as <<CustomSlaveClit>>
 %/
 <<widget "CustomSlaveClit">>
-	<<replace #balls>>
+	<<replace #clit>>
 		<<if $customSlave.clit == 0>>Normal clitoris.
 		<<elseif $customSlave.clit == 1>>Big clitoris.
 		<<elseif $customSlave.clit == 3>>Enormous clitoris.
@@ -1802,9 +1808,9 @@
  Call as <<CustomSlaveLube>>
 %/
 <<widget "CustomSlaveLube">>
-	<<replace #labia>>
-		<<if $customSlave.vaginaLube == 0>>Dry Vagina.
-		<<elseif $customSlave.vaginaLube == 1>>Wet Vagina.
+	<<replace #lube>>
+		<<if $customSlave.vaginaLube == 0>>Dry vagina.
+		<<elseif $customSlave.vaginaLube == 1>>Wet vagina.
 		<<else>>Sopping wet vagina.
 		<</if>>
 	<</replace>>
@@ -2744,7 +2750,7 @@
 	<<set $activeSlave.health = random(-99,0)>>
 	<<set $activeSlave.weight = random(-100,0)>>
 	<<set $activeSlave.eyes = either(-2, -1, -1, -1, -1, 1, 1, 1)>>
-	<<if $seeExtreme == 0>>
+	<<if $seeExtreme == 1>>
 		<<set $activeSlave.amp = either(0, 0, 0, 0, 0, 0, 1, 1, 1)>>
 	<</if>>
 	<<if $activeSlave.amp != 1>>
@@ -3739,3 +3745,103 @@
 
 <</switch>>
 <</widget>>
+
+/%
+ Call as <<JFCSlave>>
+%/
+<<widget "JFCSlave">>
+	<<set $activeSlaveOneTimeMinAge = 20>>
+	<<set $activeSlaveOneTimeMaxAge = 36>>
+	<<include "Generate XX Slave">>
+	<<set $activeSlave.weight = random(-30,20), $activeSlave.waist = random(-30,10), $activeSlave.face = random(40,60)>>
+	<<if $activeSlave.faceShape == "masculine">>
+		<<set $activeSlave.faceShape = "sensual">>
+	<</if>>
+	<<if $activeSlave.boobShape == "saggy" ||  $activeSlave.boobShape == "downward-facing">>
+		<<set $activeSlave.boobShape = "perky">>
+	<</if>>
+	<<set $activeSlave.eyes = 1, $activeSlave.voice = 2>>
+	<<switch $Role>>
+	/* Opens security */
+		<<case "Lieutenant Colonel">>
+			<<set $activeSlave.devotion = random(96,100), $activeSlave.trust = random(96, 100), $activeSlave.energy = random(96,100), $activeSlave.health = random(51,60), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = 3, $activeSlave.combatSkill = 1>>
+			<<set $activeSlave.career = either("a bodyguard", "a law enforcement officer", "a revolutionary", "a soldier", "a transporter", "an assassin", "in a militia", "a bouncer", "a bounty hunter", "a gang member", "a mercenary", "a prison guard", "a private detective", "a security guard", "a street thug", "an enforcer")>>
+		<<case "Bodyguard">>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.muscles = random(30,70), $activeSlave.height =  Math.round(Height.random($activeSlave, {skew: 3, spread: .2, limitMult: [1, 4]})), $activeSlave.health = 100, $activeSlave.weight = random(-10,10), $activeSlave.teeth = either("pointy", "normal"), $activeSlave.amp = either(-4, -4, 0, 0, 0, 0), $activeSlave.combatSkill = 1>>
+			<<set $activeSlave.career = either("a bodyguard", "a kunoichi", "a law enforcement officer", "a military brat", "a revolutionary", "a soldier", "a transporter", "an assassin", "in a militia")>>
+		<<case "Wardeness">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.energy = random(80,100), $activeSlave.sexualFlaw = either("malicious", "none", "none", "none", "none"), $activeSlave.fetish = "sadist", $activeSlave.fetishStrength = 100, $activeSlave.muscles = random(50,80), $activeSlave.combatSkill = 1>>
+			<<set $activeSlave.career = either("a security guard", "a mercenary", "an enforcer", "a private detective", "a bouncer", "a prison guard", "a street thug", "a gang member", "a bounty hunter")>>
+			<<if $seeDicks > 0>>
+				<<set $activeSlave.dick = random(3,6), $activeSlave.balls = random(3,6), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2,2,3)>>
+			<</if>>
+	/* Closes Security */
+	/* Opens management */
+		<<case "Headgirl">>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 100, $activeSlave.health = random(80,95), $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.intelligenceImplant = 1, $activeSlave.energy = random(70,90), $activeSlave.intelligence = either(2,2,3), $activeSlave.entertainSkill = 100, $activeSlave.whoreSkill = 100, $activeSlave.analSkill = 100, $activeSlave.oralSkill = 100, $activeSlave.vaginalSkill = 100, $activeSlave.career = either("a lawyer", "a military officer", "a politician")>>
+			<<if $seeDicks > 0>>
+				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,6), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,2)>>
+			<</if>>
+			<<set $activeSlave.vagina = random(3,4)>>
+			<<if $AgePenalty == 0>>
+				<<set $activeSlave.actualAge = random(36,$retirementAge-5)>>
+			<<else>>
+				<<set $activeSlave.actualAge = random(20,$retirementAge-5)>>
+			<</if>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Teacher">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.energy = random(70,90), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = 3, $activeSlave.entertainSkill = 100, $activeSlave.whoreSkill = 100, $activeSlave.analSkill = 100, $activeSlave.oralSkill = 100, $activeSlave.vaginalSkill = 100, $activeSlave.face = random(41,90), $activeSlave.career = either("a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher", "a teaching assistant")>>
+			<<if $seeDicks > 0>>
+				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,6), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2,2,3)>>
+			<</if>>
+			<<set $activeSlave.actualAge = random(36,$retirementAge-3)>>
+			<<set $activeSlave.vagina = random(3,4)>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Nurse">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.muscles = random(6,50), $activeSlave.face = random(41,90), $activeSlave.sexualQuirk = "caring", $activeSlave.career = either("a doctor", "a medic", "a medical student", "a nurse", "a paramedic"), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = either(2,2,3)>>
+			<<set $activeSlave.actualAge = random(36,$retirementAge-3)>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Motherly Attendant">>
+			<<set  $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.health = random(80,95), $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 100, $activeSlave.face = random(60,90)>>
+			<<set $activeSlave.career = either("a counselor", "a dispatch officer", "a lifeguard", "a masseuse", "a psychologist", "a therapist"), $activeSlave.birthsTotal = random(1,3), $activeSlave.pregKnown = 1, $activeSlave.preg = random(20,35), $activeSlave.pregWeek = $activeSlave.preg>>
+			<<SetBellySize $activeSlave>>
+			<<set $activeSlave.actualAge = random(36,$retirementAge-3)>>
+			<<set $activeSlave.vagina = random(3,4)>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Attendant">>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 90, $activeSlave.health = random(80,95), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = either(1,1,1,2,2,3), $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 100, $activeSlave.eyes = either(-2, 1, 1), $activeSlave.preg = 0, $activeSlave.face = random(60,90), $activeSlave.career = either("a counselor", "a masseuse", "a therapist")>>
+			<<set $activeSlave.actualAge = random(26,$retirementAge-3)>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Stewardess">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.energy = random(70,90), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = either(1,1,1,2,2,3), $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.career = either("a barista", "a bartender", "a caregiver", "a charity worker", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an estate agent", "an investor", "an office worker")>>
+		<<case "Milkmaid">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.muscles = random(31,60), $activeSlave.oralSkill = random(31,60), $activeSlave.sexualQuirk = "caring", $activeSlave.behavioralQuirk = "funny", $activeSlave.career = either("a dairy worker", "a farmer's daughter", "a rancher", "a veterinarian"), $activeSlave.intelligenceImplant = 1, $activeSlave.intelligence = either(1,1,1,2,2)>>
+			<<if $seeDicks > 0>>
+				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(4,9), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2)>>
+			<</if>>
+			<<if $AgePenalty == 0>>
+				<<set $activeSlave.actualAge = random(36,$retirementAge-5)>>
+			<<else>>
+				<<set $activeSlave.actualAge = random(20,$retirementAge-5)>>
+			<</if>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+	/* Closes management */
+	/* Opens entertain */
+		<<case "DJ">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.entertainSkill = 100, $activeSlave.muscles = random(6,30), $activeSlave.face = random(80,100), $activeSlave.career = either("a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star")>>
+		<<case "Madam">>
+			<<set $activeSlave.devotion = 80, $activeSlave.trust = 80, $activeSlave.health = random(80,95), $activeSlave.whoreSkill = 100, $activeSlave.career = either("a business owner", "a manager", "a pimp", "a procuress", "an innkeeper")>>
+			<<if $seeDicks > 0>>
+				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,5), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2)>>
+			<</if>>
+			<<if $AgePenalty == 0>>
+				<<set $activeSlave.actualAge = random(36,$retirementAge-5)>>
+			<<else>>
+				<<set $activeSlave.actualAge = random(20,$retirementAge-5)>>
+			<</if>>
+			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
+		<<case "Concubine">>
+			<<set $activeSlave.prestige = 3, $activeSlave.intelligenceImplant = 1, $activeSlave.energy = random(80,100), $activeSlave.intelligence = either(2,2,3), $activeSlave.entertainSkill = 100, $activeSlave.whoreSkill = 100, $activeSlave.analSkill = 100, $activeSlave.oralSkill = 100, $activeSlave.vaginalSkill = 100, $activeSlave.face = 100, $activeSlave.devotion = random(90,95), $activeSlave.trust = random(90,100), $activeSlave.health = random(60,80)>>
+		/* Closes Entertain */
+		<</switch>>	
+<</widget>>
\ No newline at end of file