<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>29139</bug_id>
          
          <creation_ts>2009-09-10 12:07:14 -0700</creation_ts>
          <short_desc>Add variant to WebGL uniform* and vertexAttrib* calls</short_desc>
          <delta_ts>2009-11-06 16:54:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kbr</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>146282</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-09-10 12:07:14 -0700</bug_when>
    <thetext>We&apos;ve decided to add a variant which takes a JS array in place of the CanvasXXXArray to all the uniform, uniformMatrix and vertexAttrib functions of CanvasRenderingContext3D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146774</commentid>
    <comment_count>1</comment_count>
      <attachid>39484</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-09-11 15:50:19 -0700</bug_when>
    <thetext>Created attachment 39484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146778</commentid>
    <comment_count>2</comment_count>
      <attachid>39484</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-11 15:58:58 -0700</bug_when>
    <thetext>Comment on attachment 39484
Patch

I don&apos;t like the many examples of code like &quot;static_cast&lt;float*&gt;(v-&gt;baseAddress())&quot; -- i would prefer CanvasFooArray all have a Foo* data() const { return stati_cast&lt;Foo*&gt;(baseAddress()); } methods that you would use instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146801</commentid>
    <comment_count>3</comment_count>
      <attachid>39492</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-09-11 16:44:17 -0700</bug_when>
    <thetext>Created attachment 39492
Replacement patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146823</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-09-11 17:14:05 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/JSCanvasRenderingContext3DCustom.cpp
Sending        WebCore/html/canvas/CanvasByteArray.h
Sending        WebCore/html/canvas/CanvasFloatArray.h
Sending        WebCore/html/canvas/CanvasIntArray.h
Sending        WebCore/html/canvas/CanvasRenderingContext3D.cpp
Sending        WebCore/html/canvas/CanvasRenderingContext3D.h
Sending        WebCore/html/canvas/CanvasRenderingContext3D.idl
Sending        WebCore/html/canvas/CanvasShortArray.h
Sending        WebCore/html/canvas/CanvasUnsignedByteArray.h
Sending        WebCore/html/canvas/CanvasUnsignedIntArray.h
Sending        WebCore/html/canvas/CanvasUnsignedShortArray.h
Sending        WebCore/platform/graphics/GraphicsContext3D.h
Sending        WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp
Transmitting file data ..............
Committed revision 48325.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39484</attachid>
            <date>2009-09-11 15:50:19 -0700</date>
            <delta_ts>2009-09-11 16:44:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>29139.patch</filename>
            <type>text/plain</type>
            <size>44470</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMDktMDktMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIHZhcmlhbnRzIHRvIHVuaWZvcm0qIGFuZCB2ZXJ0ZXhBdHRyaWIqIGNhbGxzIHdoaWNoIHRh
a2Ugc2VxdWVuY2U8PiBpbiBwbGFjZSBvZiBDYW52YXNBcnJheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMzkKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmRh
dGFGdW5jdGlvbmYpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uaSk6CisgICAgICAg
IChXZWJDb3JlOjpkYXRhRnVuY3Rpb25NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlND
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00ZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVu
aWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtMmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zZnYp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRm
dik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00
aXYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5pZGw6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisKIDIwMDktMDktMTEgIE1p
Y2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CiAKICAgICAgICAgRml4
IHRoZSBidWlsZC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0M0RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0M0RDdXN0b20uY3BwCShyZXZpc2lvbiA0ODMxOSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0RDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgotI2luY2x1ZGUgIkpTQ2FudmFzQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NhbnZhc0Zs
b2F0QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NhbnZhc0ludEFycmF5LmgiCiAjaW5jbHVkZSAiSlNI
VE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4LmgiCkBAIC0xOTgsNiArMTk5LDI0NSBAQCBKU1ZhbHVl
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp0ZXhTCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7ICAgIAogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0b0FycmF5KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFQqJiBhcnJheSwgaW50JiBzaXplKQor
eworICAgIGFycmF5ID0gMDsKKyAgICAKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOworICAgIGludCBsZW5ndGggPSBvYmplY3QtPmdldChleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgImxlbmd0aCIpKS50b0ludDMyKGV4ZWMpOworICAgIHZvaWQqIHRlbXBWYWx1
ZXM7CisgICAgaWYgKCF0cnlGYXN0TWFsbG9jKGxlbmd0aCAqIHNpemVvZihUKSkuZ2V0VmFsdWUo
dGVtcFZhbHVlcykpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBUKiB2YWx1ZXMgPSBzdGF0
aWNfY2FzdDxUKj4odGVtcFZhbHVlcyk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICBKU0M6OkpTVmFsdWUgdiA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOwor
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHZhbHVlc1tpXSA9IHN0YXRpY19jYXN0PFQ+KHYudG9OdW1iZXIoZXhlYykpOworICAg
IH0KKworICAgIGFycmF5ID0gdmFsdWVzOworICAgIHNpemUgPSBsZW5ndGg7Cit9CisKK2VudW0g
RGF0YUZ1bmN0aW9uVG9DYWxsIHsKKyAgICBmX3VuaWZvcm0xdiwgZl91bmlmb3JtMnYsIGZfdW5p
Zm9ybTN2LCBmX3VuaWZvcm00diwKKyAgICBmX3ZlcnRleEF0dHJpYjF2LCBmX3ZlcnRleEF0dHJp
YjJ2LCBmX3ZlcnRleEF0dHJpYjN2LCBmX3ZlcnRleEF0dHJpYjR2Cit9OworCitlbnVtIERhdGFG
dW5jdGlvbk1hdHJpeFRvQ2FsbCB7CisgICAgZl91bmlmb3JtTWF0cml4MmZ2LCBmX3VuaWZvcm1N
YXRyaXgzZnYsIGZfdW5pZm9ybU1hdHJpeDRmdgorfTsKKworc3RhdGljIEpTQzo6SlNWYWx1ZSBk
YXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqIGNvbnRl
eHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIGxvbmcgbG9jYXRpb24gPSBhcmdzLmF0KDAp
LnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIAorICAgIFJlZlB0cjxDYW52YXNGbG9h
dEFycmF5PiBjYW52YXNBcnJheSA9IHRvQ2FudmFzRmxvYXRBcnJheShhcmdzLmF0KDEpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgCisgICAgaWYgKGNhbnZhc0FycmF5KSB7CisgICAgICAgIHN3aXRjaChm
KSB7CisgICAgICAgICAgICBjYXNlIGZfdW5pZm9ybTF2OiBjb250ZXh0LT51bmlmb3JtMWZ2KGxv
Y2F0aW9uLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBmX3Vu
aWZvcm0ydjogY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkp
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZl91bmlmb3JtM3Y6IGNvbnRleHQtPnVuaWZvcm0z
ZnYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IGZfdW5pZm9ybTR2OiBjb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBjYW52YXNBcnJheS5n
ZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjF2OiBjb250ZXh0
LT52ZXJ0ZXhBdHRyaWIxZnYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliMnY6IGNvbnRleHQtPnZlcnRleEF0dHJpYjJm
dihsb2NhdGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Zl92ZXJ0ZXhBdHRyaWIzdjogY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGxvY2F0aW9uLCBjYW52
YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjR2
OiBjb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQor
ICAgIAorICAgIGZsb2F0KiBhcnJheTsKKyAgICBpbnQgc2l6ZTsKKyAgICB0b0FycmF5PGZsb2F0
PihleGVjLCBhcmdzLmF0KDEpLCBhcnJheSwgc2l6ZSk7CisgICAgCisgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIHN3aXRj
aChmKSB7CisgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6IGNvbnRleHQtPnVuaWZvcm0xZnYobG9j
YXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91bmlmb3JtMnY6IGNv
bnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAg
IGNhc2UgZl91bmlmb3JtM3Y6IGNvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIGFycmF5LCBz
aXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6IGNvbnRleHQtPnVuaWZvcm00
ZnYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl92ZXJ0ZXhB
dHRyaWIxdjogY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7
IGJyZWFrOworICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliMnY6IGNvbnRleHQtPnZlcnRleEF0
dHJpYjJmdihsb2NhdGlvbiwgYXJyYXksIHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBmX3Zl
cnRleEF0dHJpYjN2OiBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYobG9jYXRpb24sIGFycmF5LCBz
aXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWI0djogY29udGV4dC0+dmVy
dGV4QXR0cmliNGZ2KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7IGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rp
b25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqIGNvbnRleHQpCit7Cisg
ICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFN5bnRheEVycm9yKTsKKworICAgIGxvbmcgbG9jYXRpb24gPSBhcmdzLmF0KDApLnRvSW50MzIo
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIAorICAgIFJlZlB0cjxDYW52YXNJbnRBcnJheT4gY2Fu
dmFzQXJyYXkgPSB0b0NhbnZhc0ludEFycmF5KGFyZ3MuYXQoMSkpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgICAgCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAg
ICAKKyAgICBpZiAoY2FudmFzQXJyYXkpIHsKKyAgICAgICAgc3dpdGNoKGYpIHsKKyAgICAgICAg
ICAgIGNhc2UgZl91bmlmb3JtMXY6IGNvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIGNhbnZh
c0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2OiBjb250
ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBmX3VuaWZvcm0zdjogY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwg
Y2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6
IGNvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgCisgICAgaW50KiBhcnJheTsKKyAgICBpbnQgc2l6
ZTsKKyAgICB0b0FycmF5PGludD4oZXhlYywgYXJncy5hdCgxKSwgYXJyYXksIHNpemUpOworICAg
IAorICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVF
cnJvcik7CisKKyAgICBzd2l0Y2goZikgeworICAgICAgICBjYXNlIGZfdW5pZm9ybTF2OiBjb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7IGJyZWFrOworICAgICAgICBj
YXNlIGZfdW5pZm9ybTJ2OiBjb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheSwgc2l6
ZSk7IGJyZWFrOworICAgICAgICBjYXNlIGZfdW5pZm9ybTN2OiBjb250ZXh0LT51bmlmb3JtM2l2
KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7IGJyZWFrOworICAgICAgICBjYXNlIGZfdW5pZm9ybTR2
OiBjb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7IGJyZWFrOworICAg
ICAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9
CisKK3N0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1h
dHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgaWYgKGFyZ3Mu
c2l6ZSgpICE9IDMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9y
KTsKKworICAgIGxvbmcgbG9jYXRpb24gPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgICAgIAorICAgIGJvb2wgdHJhbnNwb3NlID0gYXJncy5hdCgxKS50b0Jvb2xlYW4o
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIAorICAgIFJlZlB0cjxDYW52YXNGbG9hdEFycmF5PiBj
YW52YXNBcnJheSA9IHRvQ2FudmFzRmxvYXRBcnJheShhcmdzLmF0KDIpKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgCisgICAgaWYgKGNhbnZhc0FycmF5KSB7CisgICAgICAgIHN3aXRjaChmKSB7CisgICAg
ICAgICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDJmdjogY29udGV4dC0+dW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvbiwgdHJhbnNwb3NlLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgzZnY6IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYo
bG9jYXRpb24sIHRyYW5zcG9zZSwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgZl91bmlmb3JtTWF0cml4NGZ2OiBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxv
Y2F0aW9uLCB0cmFuc3Bvc2UsIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIAorICAgIGZsb2F0KiBh
cnJheTsKKyAgICBpbnQgc2l6ZTsKKyAgICB0b0FycmF5PGZsb2F0PihleGVjLCBhcmdzLmF0KDIp
LCBhcnJheSwgc2l6ZSk7CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIHN3aXRjaChmKSB7CisgICAgICAgIGNh
c2UgZl91bmlmb3JtTWF0cml4MmZ2OiBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCB0cmFuc3Bvc2UsIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91bmlmb3Jt
TWF0cml4M2Z2OiBjb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91bmlmb3JtTWF0cml4NGZ2OiBj
b250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGFycmF5LCBzaXpl
KTsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU0M6OkpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xZnYoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uZihmX3VuaWZvcm0xdiwgZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dW5pZm9ybTFpdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTF2
LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBs
KCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlm
b3JtMmZ2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtMnYsIGV4ZWMsIGFyZ3MsIHN0YXRp
Y19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQorCitKU0M6OkpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0yaXYoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uaShmX3VuaWZvcm0ydiwgZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dW5pZm9ybTNmdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdW5pZm9ybTN2
LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBs
KCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlm
b3JtM2l2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7
CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtM3YsIGV4ZWMsIGFyZ3MsIHN0YXRp
Y19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQorCitKU0M6OkpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00ZnYoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZGF0YUZ1
bmN0aW9uZihmX3VuaWZvcm00diwgZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dW5pZm9ybTRpdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25pKGZfdW5pZm9ybTR2
LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBs
KCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlm
b3JtTWF0cml4MmZ2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXgyZnYs
IGV4ZWMsIGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwo
KSkpOworfQorCitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgzZnYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJn
cykKK3sKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDNmdiwg
ZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEKj4oaW1wbCgp
KSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9y
bU1hdHJpeDRmdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdz
KQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4NGZ2LCBl
eGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBsKCkp
KTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWIxZnYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykK
K3sKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3ZlcnRleEF0dHJpYjF2LCBleGVjLCBhcmdz
LCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBsKCkpKTsKK30KKwor
SlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3ZlcnRleEF0dHJpYjJ2LCBleGVjLCBhcmdzLCBzdGF0aWNf
Y2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBsKCkpKTsKK30KKworSlNDOjpKU1Zh
bHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZGF0
YUZ1bmN0aW9uZihmX3ZlcnRleEF0dHJpYjN2LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52
YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBsKCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZGF0YUZ1bmN0aW9u
ZihmX3ZlcnRleEF0dHJpYjR2LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJp
bmdDb250ZXh0M0QqPihpbXBsKCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDQ4MzE5KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05ODEsNyArOTgxLDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1
bmlmb3JtMWYKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9j
b250ZXh0LnVuaWZvcm0xZnYobG9jYXRpb24sIHYpOworICAgIG1fY29udGV4dC51bmlmb3JtMWZ2
KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxmbG9hdCo+KHYtPmJhc2VBZGRyZXNzKCkpLCB2LT5sZW5n
dGgoKSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQq
IHYsIGludCBzaXplKQoreworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFy
cmF5IHBhc3NlZCBpbgorICAgIGlmICghdikKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICBtX2NvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgdiwgc2l6ZSk7CiAgICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtOTk3LDcgKzEwMDcsMTcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xaQogICAgIGlmICghdikKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICBtX2NvbnRleHQudW5pZm9ybTFpdihsb2NhdGlvbiwgdik7
CisgICAgbV9jb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sIHN0YXRpY19jYXN0PGludCo+KHYt
PmJhc2VBZGRyZXNzKCkpLCB2LT5sZW5ndGgoKSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0x
aXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2Ug
bmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sIHYs
IHNpemUpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTEw
MTMsNyArMTAzMywxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTJm
CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIG1fY29udGV4dC51
bmlmb3JtMmZ2KGxvY2F0aW9uLCB2KTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgMgorICAgIG1fY29udGV4dC51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxmbG9hdCo+KHYtPmJhc2VBZGRyZXNzKCkpLCB2LT5sZW5ndGgoKSAvIDIpOworICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEOjp1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6
ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQg
aW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKKyAgICBtX2NvbnRleHQudW5pZm9y
bTJmdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKQEAgLTEwMjksNyArMTA2MSwxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQzRDo6dW5pZm9ybTJpCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAotICAgIG1fY29udGV4dC51bmlmb3JtMml2KGxvY2F0aW9uLCB2KTsKKyAgICAvLyBGSVhN
RTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgorICAgIG1fY29udGV4dC51bmlm
b3JtMml2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQqPih2LT5iYXNlQWRkcmVzcygpKSwgdi0+
bGVuZ3RoKCkgLyAyKTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQor
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTJpdihsb25nIGxvY2F0aW9u
LCBpbnQqIHYsIGludCBzaXplKQoreworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlm
IG5vIGFycmF5IHBhc3NlZCBpbgorICAgIGlmICghdikKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgorICAg
IG1fY29udGV4dC51bmlmb3JtMml2KGxvY2F0aW9uLCB2LCBzaXplIC8gMik7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTA0NSw3ICsxMDg5LDE5IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtM2YKICAgICBpZiAoIXYpCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9jb250ZXh0LnVuaWZvcm0zZnYobG9jYXRpb24s
IHYpOworICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCisg
ICAgbV9jb250ZXh0LnVuaWZvcm0zZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGZsb2F0Kj4odi0+
YmFzZUFkZHJlc3MoKSksIHYtPmxlbmd0aCgpIC8gMyk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZv
cm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKQoreworICAgIC8vIEZJWE1F
OiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgorICAgIGlmICghdikKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgMworICAgIG1fY29udGV4dC51bmlmb3JtM2Z2KGxvY2F0aW9uLCB2LCBz
aXplIC8gMyk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAt
MTA2MSw3ICsxMTE3LDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3Jt
M2kKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9jb250ZXh0
LnVuaWZvcm0zaXYobG9jYXRpb24sIHYpOworICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiAzCisgICAgbV9jb250ZXh0LnVuaWZvcm0zaXYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGludCo+KHYtPmJhc2VBZGRyZXNzKCkpLCB2LT5sZW5ndGgoKSAvIDMpOworICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEOjp1bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUp
Cit7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGlu
CisgICAgaWYgKCF2KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBs
ZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCisgICAgbV9jb250ZXh0LnVuaWZvcm0z
aXYobG9jYXRpb24sIHYsIHNpemUgLyAzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCkBAIC0xMDc3LDcgKzExNDUsMTkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0M0Q6OnVuaWZvcm00ZgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBtX2NvbnRleHQudW5pZm9ybTRmdihsb2NhdGlvbiwgdik7CisgICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKKyAgICBtX2NvbnRleHQudW5pZm9y
bTRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8ZmxvYXQqPih2LT5iYXNlQWRkcmVzcygpKSwgdi0+
bGVuZ3RoKCkgLyA0KTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQor
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRmdihsb25nIGxvY2F0aW9u
LCBmbG9hdCogdiwgaW50IHNpemUpCit7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cg
aWYgbm8gYXJyYXkgcGFzc2VkIGluCisgICAgaWYgKCF2KQorICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0Cisg
ICAgbV9jb250ZXh0LnVuaWZvcm00ZnYobG9jYXRpb24sIHYsIHNpemUgLyA0KTsKICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0xMDkzLDM3ICsxMTczLDg1IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtNGkKICAgICBpZiAoIXYpCiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9jb250ZXh0LnVuaWZvcm00aXYobG9jYXRp
b24sIHYpOworICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
CisgICAgbV9jb250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sIHN0YXRpY19jYXN0PGludCo+KHYt
PmJhc2VBZGRyZXNzKCkpLCB2LT5sZW5ndGgoKSAvIDQpOworICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlm
b3JtNGl2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCit7CisgICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisgICAgaWYgKCF2KQorICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiA0CisgICAgbV9jb250ZXh0LnVuaWZvcm00aXYobG9jYXRpb24sIHYsIHNp
emUgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWUpCit2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRy
YW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogdikKIHsKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXZhbHVlKQorICAgIGlmICgh
dikKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBtX2NvbnRleHQudW5pZm9ybU1hdHJp
eDJmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKKyAgICBtX2NvbnRleHQudW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvbiwgdHJhbnNwb3NlLCBzdGF0aWNfY2FzdDxmbG9hdCo+KHYtPmJhc2VBZGRyZXNz
KCkpLCB2LT5sZW5ndGgoKSAvIDQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2
KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZSkK
K3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUpCiB7CiAgICAgLy8gRklY
TUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCi0gICAgaWYgKCF2YWx1
ZSkKKyAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgbV9jb250ZXh0
LnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CisgICAgbV9jb250ZXh0LnVu
aWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDQpOwogICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNG
bG9hdEFycmF5KiB2KQogewogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFy
cmF5IHBhc3NlZCBpbgotICAgIGlmICghdmFsdWUpCisgICAgaWYgKCF2KQogICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgOQorICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFu
c3Bvc2UsIHN0YXRpY19jYXN0PGZsb2F0Kj4odi0+YmFzZUFkZHJlc3MoKSksIHYtPmxlbmd0aCgp
IC8gOSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2Ug
bmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11
bHRpcGxlIG9mIDkKKyAgICBtX2NvbnRleHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJh
bnNwb3NlLCB2LCBzaXplIC8gOSk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYo
bG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCit7Cisg
ICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisgICAg
aWYgKCF2KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgorICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHN0YXRpY19jYXN0PGZsb2F0Kj4odi0+YmFzZUFkZHJl
c3MoKSksIHYtPmxlbmd0aCgpIC8gMTYpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUpCit7
CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisg
ICAgaWYgKCF2KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgorICAgIG1fY29udGV4dC51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyAxNik7CiAgICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTE0NSw5ICsxMjczLDE5IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHQKICAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWVz
KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25l
ZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCit7CisgICAgLy8gRklYTUU6IE5lZWQg
dG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQK
KyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZHgsIHN0YXRpY19jYXN0PGZsb2F0Kj4o
di0+YmFzZUFkZHJlc3MoKSkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7Ci0gICAgbV9jb250ZXh0LnZl
cnRleEF0dHJpYjFmdihpbmR4LCB2YWx1ZXMpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ug
c3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CisgICAgVU5V
U0VEX1BBUkFNKHNpemUpOworICAgIAorICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWIxZnYoaW5k
eCwgdik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTE1
Nyw5ICsxMjk1LDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHQK
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2Fu
dmFzRmxvYXRBcnJheSogdmFsdWVzKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCiB7
Ci0gICAgbV9jb250ZXh0LnZlcnRleEF0dHJpYjJmdihpbmR4LCB2YWx1ZXMpOworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUg
YmVpbmcgc2V0CisgICAgbV9jb250ZXh0LnZlcnRleEF0dHJpYjJmdihpbmR4LCBzdGF0aWNfY2Fz
dDxmbG9hdCo+KHYtPmJhc2VBZGRyZXNzKCkpKTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYsIGludCBzaXplKQoreworICAgIC8v
IEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1
dGUgYmVpbmcgc2V0CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIAorICAgIG1fY29udGV4
dC52ZXJ0ZXhBdHRyaWIyZnYoaW5keCwgdik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIApAQCAtMTE2OSw5ICsxMzE3LDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDNEOjp2ZXJ0ZXhBdHQKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KHVu
c2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWVzKQordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIENh
bnZhc0Zsb2F0QXJyYXkqIHYpCiB7Ci0gICAgbV9jb250ZXh0LnZlcnRleEF0dHJpYjNmdihpbmR4
LCB2YWx1ZXMpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcg
ZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CisgICAgbV9jb250ZXh0LnZlcnRleEF0dHJp
YjNmdihpbmR4LCBzdGF0aWNfY2FzdDxmbG9hdCo+KHYtPmJhc2VBZGRyZXNzKCkpKTsKKyAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYs
IGludCBzaXplKQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBi
aWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CisgICAgVU5VU0VEX1BBUkFNKHNpemUp
OworICAgIAorICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWIzZnYoaW5keCwgdik7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTE4MSw5ICsxMzM5LDE5IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHQKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQz
RDo6dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSog
dmFsdWVzKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdih1
bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCit7CisgICAgLy8gRklYTUU6
IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWlu
ZyBzZXQKKyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliNGZ2KGluZHgsIHN0YXRpY19jYXN0PGZs
b2F0Kj4odi0+YmFzZUFkZHJlc3MoKSkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0
ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7Ci0gICAgbV9jb250
ZXh0LnZlcnRleEF0dHJpYjRmdihpbmR4LCB2YWx1ZXMpOworICAgIC8vIEZJWE1FOiBOZWVkIHRv
IG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0Cisg
ICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIAorICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWI0
ZnYoaW5keCwgdik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5o
CShyZXZpc2lvbiA0ODMxOSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwzNSArMjM2LDUwIEBAIGNsYXNzIFdl
YktpdENTU01hdHJpeDsKIAogICAgICAgICB2b2lkIHVuaWZvcm0xZihsb25nIGxvY2F0aW9uLCBm
bG9hdCB4KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zs
b2F0QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgZmxv
YXQqIHYsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwg
aW50IHgpOwogICAgICAgICB2b2lkIHVuaWZvcm0xaXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50
QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZvcm0xaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2
LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTJmKGxvbmcgbG9jYXRpb24sIGZsb2F0
IHgsIGZsb2F0IHkpOwogICAgICAgICB2b2lkIHVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgQ2Fu
dmFzRmxvYXRBcnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTJmdihsb25nIGxvY2F0aW9u
LCBmbG9hdCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm0yaShsb25nIGxvY2F0
aW9uLCBpbnQgeCwgaW50IHkpOwogICAgICAgICB2b2lkIHVuaWZvcm0yaXYobG9uZyBsb2NhdGlv
biwgQ2FudmFzSW50QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZvcm0yaXYobG9uZyBsb2Nh
dGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTNmKGxvbmcgbG9j
YXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwogICAgICAgICB2b2lkIHVuaWZvcm0z
ZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogdik7CisgICAgICAgIHZvaWQgdW5p
Zm9ybTNmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lk
IHVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KTsKICAgICAgICAg
dm9pZCB1bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24sIENhbnZhc0ludEFycmF5KiB2KTsKKyAgICAg
ICAgdm9pZCB1bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwogICAg
ICAgICB2b2lkIHVuaWZvcm00Zihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBmbG9hdCB3KTsKICAgICAgICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIENh
bnZhc0Zsb2F0QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZvcm00ZnYobG9uZyBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB1bmlmb3JtNGkobG9uZyBsb2Nh
dGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcpOwogICAgICAgICB2b2lkIHVuaWZvcm00
aXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZv
cm00aXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRB
cnJheSogdmFsdWUpOworICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlv
biwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUpOwogICAgICAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIENhbnZhc0Zs
b2F0QXJyYXkqIHZhbHVlKTsKKyAgICAgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKICAgICAgICAg
dm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52
YXNGbG9hdEFycmF5KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25n
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7CiAKICAg
ICAgICAgdm9pZCB1c2VQcm9ncmFtKENhbnZhc1Byb2dyYW0qKTsKICAgICAgICAgdm9pZCB2YWxp
ZGF0ZVByb2dyYW0oQ2FudmFzUHJvZ3JhbSopOwogCiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmli
MWYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4KTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMpOworICAg
ICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1
ZXMsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0IHgsIGZsb2F0IHkpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1
bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcyk7CisgICAgICAgIHZv
aWQgdmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcywgaW50
IHNpemUpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjNmKHVuc2lnbmVkIGxvbmcgaW5keCwg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2
KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWVzKTsKKyAgICAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdmFsdWVzLCBp
bnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKICAgICAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMp
OworICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0
KiB2YWx1ZXMsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVu
c2lnbmVkIGxvbmcgaW5keCwgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIHR5cGUsIGJvb2wgbm9y
bWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
c3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5pZGwJKHJldmlzaW9uIDQ4MzE5KQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDcsMzcgKzY0NywzNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIFtD
dXN0b21dIHZvaWQgdGV4U3ViSW1hZ2UyRCgpOwogCiAgICAgICAgIHZvaWQgdW5pZm9ybTFmKGlu
IGxvbmcgbG9jYXRpb24sIGluIGZsb2F0IHgpOwotICAgICAgICB2b2lkIHVuaWZvcm0xZnYoaW4g
bG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFzRmxvYXRBcnJheSB2KTsKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCB1bmlmb3JtMWZ2KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0Zsb2F0QXJyYXkgdik7
CiAgICAgICAgIHZvaWQgdW5pZm9ybTFpKGluIGxvbmcgbG9jYXRpb24sIGluIGxvbmcgeCk7Ci0g
ICAgICAgIHZvaWQgdW5pZm9ybTFpdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNJbnRBcnJh
eSB2KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtMWl2KGluIGxvbmcgbG9jYXRpb24s
IGluIENhbnZhc0ludEFycmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm0yZihpbiBsb25nIGxv
Y2F0aW9uLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtMmZ2
KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0Zsb2F0QXJyYXkgdik7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgdW5pZm9ybTJmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNGbG9hdEFycmF5
IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm0yaShpbiBsb25nIGxvY2F0aW9uLCBpbiBsb25nIHgs
IGluIGxvbmcgeSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTJpdihpbiBsb25nIGxvY2F0aW9uLCBp
biBDYW52YXNJbnRBcnJheSB2KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtMml2KGlu
IGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0ludEFycmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZv
cm0zZihpbiBsb25nIGxvY2F0aW9uLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6
KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtM2Z2KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0Zs
b2F0QXJyYXkgdik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTNmdihpbiBsb25nIGxv
Y2F0aW9uLCBpbiBDYW52YXNGbG9hdEFycmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm0zaShp
biBsb25nIGxvY2F0aW9uLCBpbiBsb25nIHgsIGluIGxvbmcgeSwgaW4gbG9uZyB6KTsKLSAgICAg
ICAgdm9pZCB1bmlmb3JtM2l2KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0ludEFycmF5IHYp
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIHVuaWZvcm0zaXYoaW4gbG9uZyBsb2NhdGlvbiwgaW4g
Q2FudmFzSW50QXJyYXkgdik7CiAgICAgICAgIHZvaWQgdW5pZm9ybTRmKGluIGxvbmcgbG9jYXRp
b24sIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHosIGluIGZsb2F0IHcpOwotICAg
ICAgICB2b2lkIHVuaWZvcm00ZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFzRmxvYXRBcnJh
eSB2KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtNGZ2KGluIGxvbmcgbG9jYXRpb24s
IGluIENhbnZhc0Zsb2F0QXJyYXkgdik7CiAgICAgICAgIHZvaWQgdW5pZm9ybTRpKGluIGxvbmcg
bG9jYXRpb24sIGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHosIGluIGxvbmcgdyk7Ci0g
ICAgICAgIHZvaWQgdW5pZm9ybTRpdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNJbnRBcnJh
eSB2KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtNGl2KGluIGxvbmcgbG9jYXRpb24s
IGluIENhbnZhc0ludEFycmF5IHYpOwogCi0gICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihp
biBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4gQ2FudmFzRmxvYXRBcnJh
eSBhcnJheSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihpbiBsb25nIGxvY2F0aW9u
LCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4gQ2FudmFzRmxvYXRBcnJheSBhcnJheSk7Ci0gICAg
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRy
YW5zcG9zZSwgaW4gQ2FudmFzRmxvYXRBcnJheSBhcnJheSk7CisgICAgICAgIFtDdXN0b21dIHZv
aWQgdW5pZm9ybU1hdHJpeDJmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRyYW5zcG9z
ZSwgaW4gQ2FudmFzRmxvYXRBcnJheSBhcnJheSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4g
Q2FudmFzRmxvYXRBcnJheSBhcnJheSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybU1h
dHJpeDRmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBib29sZWFuIHRyYW5zcG9zZSwgaW4gQ2FudmFz
RmxvYXRBcnJheSBhcnJheSk7CiAKICAgICAgICAgdm9pZCAgICAgICAgIHVzZVByb2dyYW0oaW4g
Q2FudmFzUHJvZ3JhbSBwcm9ncmFtKTsKICAgICAgICAgdm9pZCAgICAgICAgIHZhbGlkYXRlUHJv
Z3JhbShpbiBDYW52YXNQcm9ncmFtIHByb2dyYW0pOwogCiAgICAgICAgIHZvaWQgICAgICAgICB2
ZXJ0ZXhBdHRyaWIxZihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIGZsb2F0IHgpOwotICAgICAg
ICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMWZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4g
Q2FudmFzRmxvYXRBcnJheSB2YWx1ZXMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAg
dmVydGV4QXR0cmliMWZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gQ2FudmFzRmxvYXRBcnJh
eSB2YWx1ZXMpOwogICAgICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliMmYoaW4gdW5zaWdu
ZWQgbG9uZyBpbmR4LCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCAgICAg
ICAgIHZlcnRleEF0dHJpYjJmdihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIENhbnZhc0Zsb2F0
QXJyYXkgdmFsdWVzKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCAgICAgICAgIHZlcnRleEF0dHJp
YjJmdihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIENhbnZhc0Zsb2F0QXJyYXkgdmFsdWVzKTsK
ICAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjNmKGluIHVuc2lnbmVkIGxvbmcgaW5k
eCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7Ci0gICAgICAgIHZvaWQgICAg
ICAgICB2ZXJ0ZXhBdHRyaWIzZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBDYW52YXNGbG9h
dEFycmF5IHZhbHVlcyk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRy
aWIzZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBDYW52YXNGbG9hdEFycmF5IHZhbHVlcyk7
CiAgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWI0ZihpbiB1bnNpZ25lZCBsb25nIGlu
ZHgsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHosIGluIGZsb2F0IHcpOwotICAg
ICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliNGZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwg
aW4gQ2FudmFzRmxvYXRBcnJheSB2YWx1ZXMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAg
ICAgdmVydGV4QXR0cmliNGZ2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gQ2FudmFzRmxvYXRB
cnJheSB2YWx1ZXMpOwogICAgICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliUG9pbnRlcihp
biB1bnNpZ25lZCBsb25nIGluZHgsIGluIGxvbmcgc2l6ZSwgaW4gdW5zaWduZWQgbG9uZyB0eXBl
LCBpbiBib29sZWFuIG5vcm1hbGl6ZWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBsb25nIHN0cmlkZSwgaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShy
ZXZpc2lvbiA0ODMxOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDM2ICsyNDksMzYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11
bHRpcGx5QWxwaGEpOwogCiAgICAgICAgIHZvaWQgdW5pZm9ybTFmKGxvbmcgbG9jYXRpb24sIGZs
b2F0IHgpOwotICAgICAgICB2b2lkIHVuaWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxv
YXRBcnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTFmdihsb25nIGxvY2F0aW9uLCBmbG9h
dCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm0xaShsb25nIGxvY2F0aW9uLCBp
bnQgeCk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBDYW52YXNJbnRB
cnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYs
IGludCBzaXplKTsKICAgICAgICAgdm9pZCB1bmlmb3JtMmYobG9uZyBsb2NhdGlvbiwgZmxvYXQg
eCwgZmxvYXQgeSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTJmdihsb25nIGxvY2F0aW9uLCBDYW52
YXNGbG9hdEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTJpKGxvbmcgbG9jYXRp
b24sIGludCB4LCBpbnQgeSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0aW9u
LCBDYW52YXNJbnRBcnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTJpdihsb25nIGxvY2F0
aW9uLCBpbnQqIHYsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB1bmlmb3JtM2YobG9uZyBsb2Nh
dGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNm
dihsb25nIGxvY2F0aW9uLCBDYW52YXNGbG9hdEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlm
b3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQg
dW5pZm9ybTNpKGxvbmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHopOwotICAgICAgICB2
b2lkIHVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIHYpOworICAgICAg
ICB2b2lkIHVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CiAgICAg
ICAgIHZvaWQgdW5pZm9ybTRmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IHcpOwotICAgICAgICB2b2lkIHVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgQ2Fu
dmFzRmxvYXRBcnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTRmdihsb25nIGxvY2F0aW9u
LCBmbG9hdCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm00aShsb25nIGxvY2F0
aW9uLCBpbnQgeCwgaW50IHksIGludCB6LCBpbnQgdyk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTRp
dihsb25nIGxvY2F0aW9uLCBDYW52YXNJbnRBcnJheSogdik7Ci0gICAgICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJh
eSogdmFsdWUpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwg
Ym9vbCB0cmFuc3Bvc2UsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlKTsKLSAgICAgICAgdm9pZCB1
bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9h
dEFycmF5KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgdW5pZm9ybTRpdihsb25nIGxvY2F0aW9uLCBp
bnQqIHYsIGludCBzaXplKTsKKyAgICAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9j
YXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKKyAgICAgICAg
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9h
dCogdmFsdWUsIGludCBzaXplKTsKKyAgICAgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KGxvbmcg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKIAogICAg
ICAgICB2b2lkIHVzZVByb2dyYW0oQ2FudmFzUHJvZ3JhbSopOwogICAgICAgICB2b2lkIHZhbGlk
YXRlUHJvZ3JhbShDYW52YXNQcm9ncmFtKik7CiAKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIx
Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJp
YjFmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcyk7CisgICAg
ICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVl
cyk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCB4LCBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9u
ZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMpOworICAgICAgICB2b2lkIHZlcnRleEF0
dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwogICAgICAgICB2b2lk
IHZlcnRleEF0dHJpYjNmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7Ci0gICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwg
Q2FudmFzRmxvYXRBcnJheSogdmFsdWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYo
dW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdmFsdWVzKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZs
b2F0IHcpOwotICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgs
IENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcyk7CisgICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZhbHVlcyk7CiAgICAgICAgIHZvaWQgdmVydGV4
QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9v
bCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAko
cmV2aXNpb24gNDgzMTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0NvbnRleHQzRE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0OCwxMCArNjQ4LDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihsb25nIGwKICAgICA6OmdsVW5pZm9ybTFm
KGxvY2F0aW9uLCB2MCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYo
bG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJheSwgaW50IHNpemUp
CiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xVbmlmb3JtMWZ2
KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCksIHN0YXRpY19jYXN0PEdMZmxvYXQqPihhcnJheS0+
YmFzZUFkZHJlc3MoKSkpOworICAgIDo6Z2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihsb25nIGxvY2F0aW9u
LCBmbG9hdCB2MCwgZmxvYXQgdjEpCkBAIC02NjAsMTEgKzY2MCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMmYobG9uZyBsCiAgICAgOjpnbFVuaWZvcm0yZihsb2NhdGlvbiwg
djAsIHYxKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihsb25nIGxv
Y2F0aW9uLCBDYW52YXNGbG9hdEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIGFycmF5LCBpbnQgc2l6ZSkKIHsKICAg
ICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIGVuc3Vy
ZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgYXJy
YXktPmxlbmd0aCgpIC8gMiwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFycmF5LT5iYXNlQWRkcmVz
cygpKSk7CisgICAgOjpnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHYw
LCBmbG9hdCB2MSwgZmxvYXQgdjIpCkBAIC02NzMsMTEgKzY3MywxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtM2YobG9uZyBsCiAgICAgOjpnbFVuaWZvcm0zZihsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYobG9u
ZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBhcnJheSwgaW50IHNpemUpCiB7
CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBl
bnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFVuaWZvcm0zZnYobG9jYXRpb24s
IGFycmF5LT5sZW5ndGgoKSAvIDMsIHN0YXRpY19jYXN0PEdMZmxvYXQqPihhcnJheS0+YmFzZUFk
ZHJlc3MoKSkpOworICAgIDo6Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zihsb25nIGxvY2F0aW9uLCBmbG9h
dCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyLCBmbG9hdCB2MykKQEAgLTY4NiwxMSArNjg2LDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zihsb25nIGwKICAgICA6OmdsVW5pZm9y
bTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiBh
cnJheSwgaW50IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11
bHRpcGxlIG9mIDQKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFVu
aWZvcm00ZnYobG9jYXRpb24sIGFycmF5LT5sZW5ndGgoKSAvIDQsIHN0YXRpY19jYXN0PEdMZmxv
YXQqPihhcnJheS0+YmFzZUFkZHJlc3MoKSkpOworICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShs
b25nIGxvY2F0aW9uLCBpbnQgdjApCkBAIC02OTksMTAgKzY5OSwxMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWkobG9uZyBsCiAgICAgOjpnbFVuaWZvcm0xaShsb2NhdGlvbiwg
djApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KGxvbmcgbG9jYXRp
b24sIENhbnZhc0ludEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYobG9uZyBsb2NhdGlvbiwgaW50KiBhcnJheSwgaW50IHNpemUpCiB7CiAgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBhcnJh
eS0+bGVuZ3RoKCksIHN0YXRpY19jYXN0PEdMaW50Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsK
KyAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkobG9uZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEp
CkBAIC03MTEsMTEgKzcxMSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmko
bG9uZyBsCiAgICAgOjpnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBDYW52YXNJbnRBcnJh
eSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KGxvbmcgbG9jYXRp
b24sIGludCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCkgLyAyLCBzdGF0aWNf
Y2FzdDxHTGludCo+KGFycmF5LT5iYXNlQWRkcmVzcygpKSk7CisgICAgOjpnbFVuaWZvcm0yaXYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNpKGxvbmcgbG9jYXRpb24sIGludCB2MCwgaW50IHYxLCBpbnQgdjIpCkBAIC03MjQsMTEg
KzcyNCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kobG9uZyBsCiAgICAg
OjpnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBpbnQq
IGFycmF5LCBpbnQgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEg
bXVsdGlwbGUgb2YgMwogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICA6Omds
VW5pZm9ybTNpdihsb2NhdGlvbiwgYXJyYXktPmxlbmd0aCgpIC8gMywgc3RhdGljX2Nhc3Q8R0xp
bnQqPihhcnJheS0+YmFzZUFkZHJlc3MoKSkpOworICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShs
b25nIGxvY2F0aW9uLCBpbnQgdjAsIGludCB2MSwgaW50IHYyLCBpbnQgdjMpCkBAIC03MzcsMzIg
KzczNywzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkobG9uZyBsCiAgICAg
OjpnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIENhbnZhc0ludEFycmF5KiBh
cnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwg
aW50KiBhcnJheSwgaW50IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDQKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAg
OjpnbFVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LT5sZW5ndGgoKSAvIDQsIHN0YXRpY19jYXN0
PEdMaW50Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVW5pZm9ybTRpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9hdEFycmF5
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYobG9uZyBs
b2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiBhcnJheSwgaW50IHNpemUpCiB7CiAgICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBlbnN1cmVD
b250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IGFycmF5LT5sZW5ndGgoKSAvIDQsIHRyYW5zcG9zZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFy
cmF5LT5iYXNlQWRkcmVzcygpKSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9h
dEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYo
bG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiBhcnJheSwgaW50IHNpemUpCiB7
CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkKICAgICBl
bnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIGFycmF5LT5sZW5ndGgoKSAvIDksIHRyYW5zcG9zZSwgc3RhdGljX2Nhc3Q8R0xmbG9h
dCo+KGFycmF5LT5iYXNlQWRkcmVzcygpKSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52
YXNGbG9hdEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiBhcnJheSwgaW50IHNp
emUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xVbmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCBzdGF0aWNfY2Fz
dDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oQ2FudmFzUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTc4OSwx
MCArNzg5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKHUKICAg
ICA6OmdsVmVydGV4QXR0cmliMWYoaW5keCwgdjApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25l
ZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4
dE9iaik7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFmdihpbmR4LCBzdGF0aWNfY2FzdDxHTGZsb2F0
Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZHgs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEpCkBAIC04MDEsMTAgKzgwMSwxMCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZih1CiAgICAgOjpnbFZlcnRl
eEF0dHJpYjJmKGluZHgsIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIGFycmF5
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcg
aW5keCwgZmxvYXQqIGFycmF5KQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsK
LSAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZHgsIHN0YXRpY19jYXN0PEdMZmxvYXQqPihhcnJh
eS0+YmFzZUFkZHJlc3MoKSkpOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5keCwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBs
b25nIGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwgZmxvYXQgdjIpCkBAIC04MTMsMTAgKzgxMywx
MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZih1CiAgICAgOjpnbFZl
cnRleEF0dHJpYjNmKGluZHgsIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5
KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25l
ZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4
dE9iaik7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmR4LCBzdGF0aWNfY2FzdDxHTGZsb2F0
Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVmVydGV4QXR0cmliM2Z2KGluZHgs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYodW5z
aWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyLCBmbG9hdCB2MykK
QEAgLTgyNSwxMCArODI1LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmKHUKICAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5keCwgdjAsIHYxLCB2MiwgdjMpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBp
bmR4LCBDYW52YXNGbG9hdEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKIHsKICAgICBl
bnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRmdihpbmR4
LCBzdGF0aWNfY2FzdDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6Omds
VmVydGV4QXR0cmliNGZ2KGluZHgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQg
dHlwZSwgYm9vbCBub3JtYWxpemVkLCB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQpCg==
</data>
<flag name="review"
          id="20580"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39492</attachid>
            <date>2009-09-11 16:44:17 -0700</date>
            <delta_ts>2009-09-11 17:04:07 -0700</delta_ts>
            <desc>Replacement patch</desc>
            <filename>29139.patch</filename>
            <type>text/plain</type>
            <size>49514</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDktMDktMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIHZhcmlhbnRzIHRvIHVuaWZvcm0qIGFuZCB2ZXJ0ZXhBdHRyaWIqIGNhbGxzIHdoaWNoIHRh
a2Ugc2VxdWVuY2U8PiBpbiBwbGFjZSBvZiBDYW52YXNBcnJheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMzkKKyAgICAgICAgCisgICAgICAgIEkg
YWxzbyBhZGRlZCBhIGRhdGEoKSBjYWxsIHRvIGVhY2ggb2YgdGhlIENhbnZhc0FycmF5IHN1YmNs
YXNzZXMgdG8gZ2l2ZSBiYWNrIGEgdHlwZXMgcG9pbnRlcgorICAgICAgICB0byB0aGUgYmFzZUFk
ZHJlc3MoKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDNEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmYpOgorICAgICAgICAoV2Vi
Q29yZTo6ZGF0YUZ1bmN0aW9uaSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25NYXRy
aXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVu
aWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6
OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0M0Q6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzQnl0ZUFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCeXRlQXJyYXk6OmRhdGEp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0Zsb2F0QXJyYXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc0Zsb2F0QXJyYXk6OmRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc0ludEFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNJbnRBcnJheTo6ZGF0YSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTFmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtMmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTJpdik6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zZnYp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRm
dik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00
aXYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzU2hvcnRBcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU2hvcnRB
cnJheTo6ZGF0YSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVW5zaWduZWRCeXRlQXJy
YXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Vuc2lnbmVkQnl0ZUFycmF5OjpkYXRhKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNVbnNpZ25lZEludEFycmF5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNVbnNpZ25lZEludEFycmF5OjpkYXRhKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNVbnNpZ25lZFNob3J0QXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1Vuc2lnbmVkU2hvcnRBcnJheTo6ZGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisKIDIwMDktMDktMTEgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjQ4
MjI5LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQz
REN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQzREN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4MzIxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzREN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSlNDYW52YXNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2FudmFzRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIkpTQ2FudmFzSW50QXJyYXkuaCIKICNpbmNsdWRlICJKU0hUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNXZWJLaXRDU1NNYXRyaXguaCIKQEAgLTE5OCw2ICsxOTksMjQ1IEBAIEpTVmFsdWUgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnRleFMKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgICAg
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRvQXJyYXkoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVComIGFycmF5LCBpbnQmIHNpemUpCit7CisgICAg
YXJyYXkgPSAwOworICAgIAorICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7CisgICAgaW50IGxlbmd0aCA9IG9iamVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihl
eGVjLCAibGVuZ3RoIikpLnRvSW50MzIoZXhlYyk7CisgICAgdm9pZCogdGVtcFZhbHVlczsKKyAg
ICBpZiAoIXRyeUZhc3RNYWxsb2MobGVuZ3RoICogc2l6ZW9mKFQpKS5nZXRWYWx1ZSh0ZW1wVmFs
dWVzKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFQqIHZhbHVlcyA9IHN0YXRpY19jYXN0
PFQqPih0ZW1wVmFsdWVzKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIEpTQzo6SlNWYWx1ZSB2ID0gb2JqZWN0LT5nZXQoZXhlYywgaSk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8VD4odi50b051bWJlcihleGVjKSk7CisgICAgfQorCisg
ICAgYXJyYXkgPSB2YWx1ZXM7CisgICAgc2l6ZSA9IGxlbmd0aDsKK30KKworZW51bSBEYXRhRnVu
Y3Rpb25Ub0NhbGwgeworICAgIGZfdW5pZm9ybTF2LCBmX3VuaWZvcm0ydiwgZl91bmlmb3JtM3Ys
IGZfdW5pZm9ybTR2LAorICAgIGZfdmVydGV4QXR0cmliMXYsIGZfdmVydGV4QXR0cmliMnYsIGZf
dmVydGV4QXR0cmliM3YsIGZfdmVydGV4QXR0cmliNHYKK307CisKK2VudW0gRGF0YUZ1bmN0aW9u
TWF0cml4VG9DYWxsIHsKKyAgICBmX3VuaWZvcm1NYXRyaXgyZnYsIGZfdW5pZm9ybU1hdHJpeDNm
diwgZl91bmlmb3JtTWF0cml4NGZ2Cit9OworCitzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5j
dGlvbmYoRGF0YUZ1bmN0aW9uVG9DYWxsIGYsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCogY29udGV4dCkKK3sK
KyAgICBpZiAoYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgU3ludGF4RXJyb3IpOworCisgICAgbG9uZyBsb2NhdGlvbiA9IGFyZ3MuYXQoMCkudG9JbnQz
MihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgCisgICAgUmVmUHRyPENhbnZhc0Zsb2F0QXJyYXk+
IGNhbnZhc0FycmF5ID0gdG9DYW52YXNGbG9hdEFycmF5KGFyZ3MuYXQoMSkpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgICAgICAKKyAgICBpZiAoY2FudmFzQXJyYXkpIHsKKyAgICAgICAgc3dpdGNoKGYpIHsKKyAg
ICAgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6IGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24s
IGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGZfdW5pZm9ybTJ2
OiBjb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFr
OworICAgICAgICAgICAgY2FzZSBmX3VuaWZvcm0zdjogY29udGV4dC0+dW5pZm9ybTNmdihsb2Nh
dGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZl91bmlm
b3JtNHY6IGNvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliMXY6IGNvbnRleHQtPnZlcnRl
eEF0dHJpYjFmdihsb2NhdGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIydjogY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGxvY2F0
aW9uLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBmX3ZlcnRl
eEF0dHJpYjN2OiBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYobG9jYXRpb24sIGNhbnZhc0FycmF5
LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGZfdmVydGV4QXR0cmliNHY6IGNvbnRl
eHQtPnZlcnRleEF0dHJpYjRmdihsb2NhdGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgCisg
ICAgZmxvYXQqIGFycmF5OworICAgIGludCBzaXplOworICAgIHRvQXJyYXk8ZmxvYXQ+KGV4ZWMs
IGFyZ3MuYXQoMSksIGFycmF5LCBzaXplKTsKKyAgICAKKyAgICBpZiAoIWFycmF5KQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworCisgICAgc3dpdGNoKGYpIHsK
KyAgICAgICAgY2FzZSBmX3VuaWZvcm0xdjogY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwg
YXJyYXksIHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBmX3VuaWZvcm0ydjogY29udGV4dC0+
dW5pZm9ybTJmdihsb2NhdGlvbiwgYXJyYXksIHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBm
X3VuaWZvcm0zdjogY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgYXJyYXksIHNpemUpOyBi
cmVhazsKKyAgICAgICAgY2FzZSBmX3VuaWZvcm00djogY29udGV4dC0+dW5pZm9ybTRmdihsb2Nh
dGlvbiwgYXJyYXksIHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjF2
OiBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgZl92ZXJ0ZXhBdHRyaWIydjogY29udGV4dC0+dmVydGV4QXR0cmliMmZ2
KGxvY2F0aW9uLCBhcnJheSwgc2l6ZSk7IGJyZWFrOworICAgICAgICBjYXNlIGZfdmVydGV4QXR0
cmliM3Y6IGNvbnRleHQtPnZlcnRleEF0dHJpYjNmdihsb2NhdGlvbiwgYXJyYXksIHNpemUpOyBi
cmVhazsKKyAgICAgICAgY2FzZSBmX3ZlcnRleEF0dHJpYjR2OiBjb250ZXh0LT52ZXJ0ZXhBdHRy
aWI0ZnYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCitzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0
YUZ1bmN0aW9uVG9DYWxsIGYsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3MsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBpZiAo
YXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4
RXJyb3IpOworCisgICAgbG9uZyBsb2NhdGlvbiA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICAgICAgCisgICAgUmVmUHRyPENhbnZhc0ludEFycmF5PiBjYW52YXNBcnJh
eSA9IHRvQ2FudmFzSW50QXJyYXkoYXJncy5hdCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSAgICAKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIAorICAg
IGlmIChjYW52YXNBcnJheSkgeworICAgICAgICBzd2l0Y2goZikgeworICAgICAgICAgICAgY2Fz
ZSBmX3VuaWZvcm0xdjogY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgY2FudmFzQXJyYXku
Z2V0KCkpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZl91bmlmb3JtMnY6IGNvbnRleHQtPnVu
aWZvcm0yaXYobG9jYXRpb24sIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGZfdW5pZm9ybTN2OiBjb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBjYW52YXNB
cnJheS5nZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBmX3VuaWZvcm00djogY29udGV4
dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKyAgICAKKyAgICBpbnQqIGFycmF5OworICAgIGludCBzaXplOworICAg
IHRvQXJyYXk8aW50PihleGVjLCBhcmdzLmF0KDEpLCBhcnJheSwgc2l6ZSk7CisgICAgCisgICAg
aWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsK
KworICAgIHN3aXRjaChmKSB7CisgICAgICAgIGNhc2UgZl91bmlmb3JtMXY6IGNvbnRleHQtPnVu
aWZvcm0xaXYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91
bmlmb3JtMnY6IGNvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJl
YWs7CisgICAgICAgIGNhc2UgZl91bmlmb3JtM3Y6IGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRp
b24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGNhc2UgZl91bmlmb3JtNHY6IGNvbnRl
eHQtPnVuaWZvcm00aXYobG9jYXRpb24sIGFycmF5LCBzaXplKTsgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworc3Rh
dGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRGF0YUZ1bmN0aW9uTWF0cml4VG9D
YWxsIGYsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkg
IT0gMykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisg
ICAgbG9uZyBsb2NhdGlvbiA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgCisgICAgYm9vbCB0cmFuc3Bvc2UgPSBhcmdzLmF0KDEpLnRvQm9vbGVhbihleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICAgICAgCisgICAgUmVmUHRyPENhbnZhc0Zsb2F0QXJyYXk+IGNhbnZhc0Fy
cmF5ID0gdG9DYW52YXNGbG9hdEFycmF5KGFyZ3MuYXQoMikpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgICAgCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAK
KyAgICBpZiAoY2FudmFzQXJyYXkpIHsKKyAgICAgICAgc3dpdGNoKGYpIHsKKyAgICAgICAgICAg
IGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2OiBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCB0cmFuc3Bvc2UsIGNhbnZhc0FycmF5LmdldCgpKTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGZfdW5pZm9ybU1hdHJpeDNmdjogY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgdHJhbnNwb3NlLCBjYW52YXNBcnJheS5nZXQoKSk7IGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBmX3VuaWZvcm1NYXRyaXg0ZnY6IGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24s
IHRyYW5zcG9zZSwgY2FudmFzQXJyYXkuZ2V0KCkpOyBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgCisgICAgZmxvYXQqIGFycmF5Owor
ICAgIGludCBzaXplOworICAgIHRvQXJyYXk8ZmxvYXQ+KGV4ZWMsIGFyZ3MuYXQoMiksIGFycmF5
LCBzaXplKTsKKyAgICAKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOworCisgICAgc3dpdGNoKGYpIHsKKyAgICAgICAgY2FzZSBmX3Vu
aWZvcm1NYXRyaXgyZnY6IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHRyYW5z
cG9zZSwgYXJyYXksIHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgz
ZnY6IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXks
IHNpemUpOyBicmVhazsKKyAgICAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXg0ZnY6IGNvbnRleHQt
PnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgYXJyYXksIHNpemUpOyBicmVh
azsKKyAgICB9CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTFmdihKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25m
KGZfdW5pZm9ybTF2LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0QqPihpbXBsKCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDNEOjp1bmlmb3JtMWl2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtMXYsIGV4ZWMs
IGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOwor
fQorCitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0yZnYo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uZihmX3VuaWZvcm0ydiwgZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTJpdihKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25p
KGZfdW5pZm9ybTJ2LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0QqPihpbXBsKCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDNEOjp1bmlmb3JtM2Z2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmYoZl91bmlmb3JtM3YsIGV4ZWMs
IGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOwor
fQorCitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zaXYo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gZGF0YUZ1bmN0aW9uaShmX3VuaWZvcm0zdiwgZXhlYywgYXJncywgc3RhdGljX2Nhc3Q8
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRmdihKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25m
KGZfdW5pZm9ybTR2LCBleGVjLCBhcmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0QqPihpbXBsKCkpKTsKK30KKworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDNEOjp1bmlmb3JtNGl2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGRhdGFGdW5jdGlvbmkoZl91bmlmb3JtNHYsIGV4ZWMs
IGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOwor
fQorCitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXgyZnYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sK
KyAgICByZXR1cm4gZGF0YUZ1bmN0aW9uTWF0cml4KGZfdW5pZm9ybU1hdHJpeDJmdiwgZXhlYywg
YXJncywgc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDNEKj4oaW1wbCgpKSk7Cit9
CisKK0pTQzo6SlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJp
eDNmdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQorewor
ICAgIHJldHVybiBkYXRhRnVuY3Rpb25NYXRyaXgoZl91bmlmb3JtTWF0cml4M2Z2LCBleGVjLCBh
cmdzLCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QqPihpbXBsKCkpKTsKK30K
KworSlNDOjpKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
NGZ2KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgcmV0dXJuIGRhdGFGdW5jdGlvbk1hdHJpeChmX3VuaWZvcm1NYXRyaXg0ZnYsIGV4ZWMsIGFy
Z3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQor
CitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFm
dihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAg
IHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMXYsIGV4ZWMsIGFyZ3MsIHN0YXRp
Y19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQorCitKU0M6OkpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBk
YXRhRnVuY3Rpb25mKGZfdmVydGV4QXR0cmliMnYsIGV4ZWMsIGFyZ3MsIHN0YXRpY19jYXN0PENh
bnZhc1JlbmRlcmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQorCitKU0M6OkpTVmFsdWUgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rp
b25mKGZfdmVydGV4QXR0cmliM3YsIGV4ZWMsIGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRCo+KGltcGwoKSkpOworfQorCitKU0M6OkpTVmFsdWUgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSlNDOjpBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBkYXRhRnVuY3Rpb25mKGZfdmVy
dGV4QXR0cmliNHYsIGV4ZWMsIGFyZ3MsIHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQzRCo+KGltcGwoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNCeXRl
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0J5dGVBcnJh
eS5oCShyZXZpc2lvbiA0ODMyMSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQnl0ZUFy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNCeXRlQXJyYXk+IGNyZWF0ZShzaWdu
ZWQgY2hhciogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENhbnZhc0J5dGVBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzQXJyYXlCdWZmZXI+
IGJ1ZmZlciwgaW50IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgICAgICBjaGFyKiBk
YXRhKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KGJhc2VBZGRyZXNzKCkpOyB9CisKICAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB1
bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0Zsb2F0QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0Zsb2F0QXJyYXkuaAkocmV2aXNpb24gNDgzMjEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0Zsb2F0QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc0Zsb2F0QXJy
YXk+IGNyZWF0ZShmbG9hdCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENhbnZhc0Zsb2F0QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0Fy
cmF5QnVmZmVyPiBidWZmZXIsIGludCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAg
ICAgZmxvYXQqIGRhdGEoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdCo+KGJhc2VBZGRyZXNz
KCkpOyB9CisKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdDsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW50QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0ludEFycmF5LmgJKHJldmlzaW9uIDQ4MzIxKQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNJbnRBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FudmFzSW50QXJyYXk+IGNyZWF0ZShpbnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNJbnRBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8
Q2FudmFzQXJyYXlCdWZmZXI+IGJ1ZmZlciwgaW50IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
IAorICAgICAgICBpbnQqIGRhdGEoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQqPihiYXNlQWRk
cmVzcygpKTsgfQorCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIApJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmNwcAkocmV2
aXNpb24gNDgzMjEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4MSw3ICs5ODEsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0xZgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKLSAgICBtX2NvbnRleHQudW5pZm9ybTFmdihsb2NhdGlvbiwgdik7CisgICAg
bV9jb250ZXh0LnVuaWZvcm0xZnYobG9jYXRpb24sIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkpOwor
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQg
c2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNz
ZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9jb250
ZXh0LnVuaWZvcm0xZnYobG9jYXRpb24sIHYsIHNpemUpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTk5Nyw3ICsxMDA3LDE3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDNEOjp1bmlmb3JtMWkKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgbV9jb250ZXh0LnVuaWZvcm0xaXYobG9jYXRpb24sIHYpOworICAgIG1f
Y29udGV4dC51bmlmb3JtMWl2KGxvY2F0aW9uLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpKTsKKyAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXpl
KQoreworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBp
bgorICAgIGlmICghdikKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2NvbnRleHQu
dW5pZm9ybTFpdihsb2NhdGlvbiwgdiwgc2l6ZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIApAQCAtMTAxMyw3ICsxMDMzLDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDNEOjp1bmlmb3JtMmYKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgbV9jb250ZXh0LnVuaWZvcm0yZnYobG9jYXRpb24sIHYpOworICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCisgICAgbV9jb250ZXh0LnVu
aWZvcm0yZnYobG9jYXRpb24sIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAyKTsKKyAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQzRDo6dW5pZm9ybTJmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCit7
CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisg
ICAgaWYgKCF2KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCisgICAgbV9jb250ZXh0LnVuaWZvcm0yZnYo
bG9jYXRpb24sIHYsIHNpemUgLyAyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQogCkBAIC0xMDI5LDcgKzEwNjEsMTkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0Q6OnVuaWZvcm0yaQogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICBtX2NvbnRleHQudW5pZm9ybTJpdihsb2NhdGlvbiwgdik7CisgICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKKyAgICBtX2NvbnRleHQudW5pZm9ybTJp
dihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDIpOworICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
Ojp1bmlmb3JtMml2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCit7CisgICAgLy8g
RklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisgICAgaWYgKCF2
KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAyCisgICAgbV9jb250ZXh0LnVuaWZvcm0yaXYobG9jYXRpb24s
IHYsIHNpemUgLyAyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQog
CkBAIC0xMDQ1LDcgKzEwODksMTkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVu
aWZvcm0zZgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBtX2Nv
bnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwgdik7CisgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDMKKyAgICBtX2NvbnRleHQudW5pZm9ybTNmdihsb2NhdGlv
biwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDMpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3Jt
M2Z2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDMKKyAgICBtX2NvbnRleHQudW5pZm9ybTNmdihsb2NhdGlvbiwgdiwgc2l6
ZSAvIDMpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTEw
NjEsNyArMTExNywxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTNp
CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIG1fY29udGV4dC51
bmlmb3JtM2l2KGxvY2F0aW9uLCB2KTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgMworICAgIG1fY29udGV4dC51bmlmb3JtM2l2KGxvY2F0aW9uLCB2LT5k
YXRhKCksIHYtPmxlbmd0aCgpIC8gMyk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm0zaXYobG9u
ZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxl
IG9mIDMKKyAgICBtX2NvbnRleHQudW5pZm9ybTNpdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDMpOwog
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTEwNzcsNyArMTE0
NSwxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRmCiAgICAgaWYg
KCF2KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIG1fY29udGV4dC51bmlmb3JtNGZ2
KGxvY2F0aW9uLCB2KTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgNAorICAgIG1fY29udGV4dC51bmlmb3JtNGZ2KGxvY2F0aW9uLCB2LT5kYXRhKCksIHYt
Pmxlbmd0aCgpIC8gNCk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30K
Kwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplKQoreworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93
IGlmIG5vIGFycmF5IHBhc3NlZCBpbgorICAgIGlmICghdikKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAor
ICAgIG1fY29udGV4dC51bmlmb3JtNGZ2KGxvY2F0aW9uLCB2LCBzaXplIC8gNCk7CiAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTA5MywzNyArMTE3Myw4NSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybTRpCiAgICAgaWYgKCF2KQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIG1fY29udGV4dC51bmlmb3JtNGl2KGxvY2F0
aW9uLCB2KTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
NAorICAgIG1fY29udGV4dC51bmlmb3JtNGl2KGxvY2F0aW9uLCB2LT5kYXRhKCksIHYtPmxlbmd0
aCgpIC8gNCk7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwgaW50
KiB2LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBh
cnJheSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKKyAgICBtX2Nv
bnRleHQudW5pZm9ybTRpdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDQpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNG
bG9hdEFycmF5KiB2YWx1ZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9hdEFycmF5
KiB2KQogewogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3Nl
ZCBpbgotICAgIGlmICghdmFsdWUpCisgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAotICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg
NAorICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYt
PmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyA0KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJp
eDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogdmFs
dWUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihsb25n
IGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYsIGludCBzaXplKQogewogICAgIC8v
IEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgotICAgIGlmICgh
dmFsdWUpCisgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIG1fY29u
dGV4dC51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAv
LyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAorICAgIG1fY29udGV4
dC51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyA0KTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5z
cG9zZSwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQzRDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgQ2Fu
dmFzRmxvYXRBcnJheSogdikKIHsKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBu
byBhcnJheSBwYXNzZWQgaW4KLSAgICBpZiAoIXZhbHVlKQorICAgIGlmICghdikKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICBtX2NvbnRleHQudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlv
biwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDkKKyAgICBtX2NvbnRleHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
dHJhbnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gOSk7CisgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6
OnVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2
LCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJh
eSBwYXNzZWQgaW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkKKyAgICBtX2NvbnRl
eHQudW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplIC8gOSk7Cisg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFu
c3Bvc2UsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCit7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCisgICAgaWYgKCF2KQorICAgICAgICByZXR1cm47
CisgICAgICAgIAorICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiAxNgorICAgIG1fY29udGV4dC51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAxNik7CisgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnVuaWZvcm1N
YXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2LCBpbnQgc2l6
ZSkKK3sKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQg
aW4KKyAgICBpZiAoIXYpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2CisgICAgbV9jb250ZXh0LnVuaWZv
cm1NYXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDE2KTsKICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0xMTQ1LDkgKzEyNzMsMTkgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dAogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2
YWx1ZXMpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KHVu
c2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdikKK3sKKyAgICAvLyBGSVhNRTog
TmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5n
IHNldAorICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWIxZnYoaW5keCwgdi0+ZGF0YSgpKTsKKyAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQq
IHYsIGludCBzaXplKQogewotICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWIxZnYoaW5keCwgdmFs
dWVzKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3Vn
aCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAorICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICAK
KyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliMWZ2KGluZHgsIHYpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTExNTcsOSArMTI5NSwxOSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcykK
K3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQg
bG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2KQogewotICAgIG1fY29udGV4dC52ZXJ0ZXhB
dHRyaWIyZnYoaW5keCwgdmFsdWVzKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUg
YXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAorICAgIG1fY29udGV4
dC52ZXJ0ZXhBdHRyaWIyZnYoaW5keCwgdi0+ZGF0YSgpKTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYsIGludCBzaXplKQorewor
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBpcyBiaWcgZW5vdWdoIGZvciBh
dHRyaWJ1dGUgYmVpbmcgc2V0CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIAorICAgIG1f
Y29udGV4dC52ZXJ0ZXhBdHRyaWIyZnYoaW5keCwgdik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtMTE2OSw5ICsxMzE3LDE5IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHQKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmli
M2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWVzKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGlu
ZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHYpCiB7Ci0gICAgbV9jb250ZXh0LnZlcnRleEF0dHJpYjNm
dihpbmR4LCB2YWx1ZXMpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBhcnJheSBp
cyBiaWcgZW5vdWdoIGZvciBhdHRyaWJ1dGUgYmVpbmcgc2V0CisgICAgbV9jb250ZXh0LnZlcnRl
eEF0dHJpYjNmdihpbmR4LCB2LT5kYXRhKCkpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCit7CisgICAgLy8g
RklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0
ZSBiZWluZyBzZXQKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgCisgICAgbV9jb250ZXh0
LnZlcnRleEF0dHJpYjNmdihpbmR4LCB2KTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCkBAIC0xMTgxLDkgKzEzMzksMTkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0M0Q6OnZlcnRleEF0dAogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYodW5z
aWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMpCit2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2Fu
dmFzRmxvYXRBcnJheSogdikKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJy
YXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAorICAgIG1fY29udGV4dC52
ZXJ0ZXhBdHRyaWI0ZnYoaW5keCwgdi0+ZGF0YSgpKTsKKyAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQzRDo6dmVydGV4
QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHYsIGludCBzaXplKQogewotICAg
IG1fY29udGV4dC52ZXJ0ZXhBdHRyaWI0ZnYoaW5keCwgdmFsdWVzKTsKKyAgICAvLyBGSVhNRTog
TmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5n
IHNldAorICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICAKKyAgICBtX2NvbnRleHQudmVydGV4
QXR0cmliNGZ2KGluZHgsIHYpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0M0QuaAkocmV2aXNpb24gNDgzMjEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMzUgKzIzNiw1MCBAQCBj
bGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICAgICAgdm9pZCB1bmlmb3JtMWYobG9uZyBsb2Nh
dGlvbiwgZmxvYXQgeCk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTFmdihsb25nIGxvY2F0aW9uLCBD
YW52YXNGbG9hdEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRp
b24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTFpKGxvbmcgbG9j
YXRpb24sIGludCB4KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIENh
bnZhc0ludEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24s
IGludCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm0yZihsb25nIGxvY2F0aW9u
LCBmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMmZ2KGxvbmcgbG9jYXRp
b24sIENhbnZhc0Zsb2F0QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZvcm0yZnYobG9uZyBs
b2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB1bmlmb3JtMmkobG9u
ZyBsb2NhdGlvbiwgaW50IHgsIGludCB5KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMml2KGxvbmcg
bG9jYXRpb24sIENhbnZhc0ludEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtMml2KGxv
bmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm0zZihs
b25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKICAgICAgICAgdm9pZCB1
bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zsb2F0QXJyYXkqIHYpOworICAgICAgICB2
b2lkIHVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKICAgICAg
ICAgdm9pZCB1bmlmb3JtM2kobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeik7CiAg
ICAgICAgIHZvaWQgdW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBDYW52YXNJbnRBcnJheSogdik7
CisgICAgICAgIHZvaWQgdW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXpl
KTsKICAgICAgICAgdm9pZCB1bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwgZmxvYXQgdyk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTRmdihsb25nIGxvY2F0
aW9uLCBDYW52YXNGbG9hdEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtNGZ2KGxvbmcg
bG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5pZm9ybTRpKGxv
bmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHosIGludCB3KTsKICAgICAgICAgdm9pZCB1
bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIENhbnZhc0ludEFycmF5KiB2KTsKKyAgICAgICAgdm9p
ZCB1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpOwogICAgICAgICB2
b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIENhbnZh
c0Zsb2F0QXJyYXkqIHZhbHVlKTsKKyAgICAgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KGxvbmcg
bG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdmFsdWUsIGludCBzaXplKTsKICAgICAg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBD
YW52YXNGbG9hdEFycmF5KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihs
b25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7CiAg
ICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9z
ZSwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWUpOworICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0
ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2YWx1ZSwgaW50IHNpemUp
OwogCiAgICAgICAgIHZvaWQgdXNlUHJvZ3JhbShDYW52YXNQcm9ncmFtKik7CiAgICAgICAgIHZv
aWQgdmFsaWRhdGVQcm9ncmFtKENhbnZhc1Byb2dyYW0qKTsKIAogICAgICAgICB2b2lkIHZlcnRl
eEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCk7CiAgICAgICAgIHZvaWQgdmVy
dGV4QXR0cmliMWZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWVz
KTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCogdmFsdWVzLCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliMmYodW5zaWdu
ZWQgbG9uZyBpbmR4LCBmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMpOworICAg
ICAgICB2b2lkIHZlcnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1
ZXMsIGludCBzaXplKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwogICAgICAgICB2b2lkIHZlcnRleEF0
dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcyk7Cisg
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZh
bHVlcywgaW50IHNpemUpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxv
bmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7CiAgICAgICAgIHZv
aWQgdmVydGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSog
dmFsdWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4
LCBmbG9hdCogdmFsdWVzLCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliUG9p
bnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBlLCBi
b29sIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogCkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzRC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaWRsCShyZXZpc2lvbiA0
ODMyMSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNjQ3LDM3ICs2NDcsMzcgQEAgbW9kdWxlIGh0bWwgewogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHRleFN1YkltYWdlMkQoKTsKIAogICAgICAgICB2b2lkIHVuaWZv
cm0xZihpbiBsb25nIGxvY2F0aW9uLCBpbiBmbG9hdCB4KTsKLSAgICAgICAgdm9pZCB1bmlmb3Jt
MWZ2KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0Zsb2F0QXJyYXkgdik7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgdW5pZm9ybTFmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNGbG9hdEFy
cmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm0xaShpbiBsb25nIGxvY2F0aW9uLCBpbiBsb25n
IHgpOwotICAgICAgICB2b2lkIHVuaWZvcm0xaXYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFz
SW50QXJyYXkgdik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTFpdihpbiBsb25nIGxv
Y2F0aW9uLCBpbiBDYW52YXNJbnRBcnJheSB2KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMmYoaW4g
bG9uZyBsb2NhdGlvbiwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7Ci0gICAgICAgIHZvaWQgdW5p
Zm9ybTJmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNGbG9hdEFycmF5IHYpOworICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHVuaWZvcm0yZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFzRmxv
YXRBcnJheSB2KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMmkoaW4gbG9uZyBsb2NhdGlvbiwgaW4g
bG9uZyB4LCBpbiBsb25nIHkpOwotICAgICAgICB2b2lkIHVuaWZvcm0yaXYoaW4gbG9uZyBsb2Nh
dGlvbiwgaW4gQ2FudmFzSW50QXJyYXkgdik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9y
bTJpdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNJbnRBcnJheSB2KTsKICAgICAgICAgdm9p
ZCB1bmlmb3JtM2YoaW4gbG9uZyBsb2NhdGlvbiwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4g
ZmxvYXQgeik7Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNmdihpbiBsb25nIGxvY2F0aW9uLCBpbiBD
YW52YXNGbG9hdEFycmF5IHYpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHVuaWZvcm0zZnYoaW4g
bG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFzRmxvYXRBcnJheSB2KTsKICAgICAgICAgdm9pZCB1bmlm
b3JtM2koaW4gbG9uZyBsb2NhdGlvbiwgaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIGxvbmcgeik7
Ci0gICAgICAgIHZvaWQgdW5pZm9ybTNpdihpbiBsb25nIGxvY2F0aW9uLCBpbiBDYW52YXNJbnRB
cnJheSB2KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB1bmlmb3JtM2l2KGluIGxvbmcgbG9jYXRp
b24sIGluIENhbnZhc0ludEFycmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm00ZihpbiBsb25n
IGxvY2F0aW9uLCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6LCBpbiBmbG9hdCB3
KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtNGZ2KGluIGxvbmcgbG9jYXRpb24sIGluIENhbnZhc0Zs
b2F0QXJyYXkgdik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTRmdihpbiBsb25nIGxv
Y2F0aW9uLCBpbiBDYW52YXNGbG9hdEFycmF5IHYpOwogICAgICAgICB2b2lkIHVuaWZvcm00aShp
biBsb25nIGxvY2F0aW9uLCBpbiBsb25nIHgsIGluIGxvbmcgeSwgaW4gbG9uZyB6LCBpbiBsb25n
IHcpOwotICAgICAgICB2b2lkIHVuaWZvcm00aXYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gQ2FudmFz
SW50QXJyYXkgdik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTRpdihpbiBsb25nIGxv
Y2F0aW9uLCBpbiBDYW52YXNJbnRBcnJheSB2KTsKIAotICAgICAgICB2b2lkIHVuaWZvcm1NYXRy
aXgyZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9vbGVhbiB0cmFuc3Bvc2UsIGluIENhbnZhc0Zs
b2F0QXJyYXkgYXJyYXkpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW4gbG9uZyBs
b2NhdGlvbiwgaW4gYm9vbGVhbiB0cmFuc3Bvc2UsIGluIENhbnZhc0Zsb2F0QXJyYXkgYXJyYXkp
OwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9v
bGVhbiB0cmFuc3Bvc2UsIGluIENhbnZhc0Zsb2F0QXJyYXkgYXJyYXkpOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9vbGVhbiB0
cmFuc3Bvc2UsIGluIENhbnZhc0Zsb2F0QXJyYXkgYXJyYXkpOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIHVuaWZvcm1NYXRyaXgzZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9vbGVhbiB0cmFuc3Bv
c2UsIGluIENhbnZhc0Zsb2F0QXJyYXkgYXJyYXkpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoaW4gbG9uZyBsb2NhdGlvbiwgaW4gYm9vbGVhbiB0cmFuc3Bvc2UsIGlu
IENhbnZhc0Zsb2F0QXJyYXkgYXJyYXkpOwogCiAgICAgICAgIHZvaWQgICAgICAgICB1c2VQcm9n
cmFtKGluIENhbnZhc1Byb2dyYW0gcHJvZ3JhbSk7CiAgICAgICAgIHZvaWQgICAgICAgICB2YWxp
ZGF0ZVByb2dyYW0oaW4gQ2FudmFzUHJvZ3JhbSBwcm9ncmFtKTsKIAogICAgICAgICB2b2lkICAg
ICAgICAgdmVydGV4QXR0cmliMWYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBmbG9hdCB4KTsK
LSAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjFmdihpbiB1bnNpZ25lZCBsb25nIGlu
ZHgsIGluIENhbnZhc0Zsb2F0QXJyYXkgdmFsdWVzKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCAg
ICAgICAgIHZlcnRleEF0dHJpYjFmdihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIENhbnZhc0Zs
b2F0QXJyYXkgdmFsdWVzKTsKICAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjJmKGlu
IHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7Ci0gICAgICAgIHZv
aWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIyZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBDYW52
YXNGbG9hdEFycmF5IHZhbHVlcyk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgICAgICAgICB2ZXJ0
ZXhBdHRyaWIyZnYoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBDYW52YXNGbG9hdEFycmF5IHZh
bHVlcyk7CiAgICAgICAgIHZvaWQgICAgICAgICB2ZXJ0ZXhBdHRyaWIzZihpbiB1bnNpZ25lZCBs
b25nIGluZHgsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHopOwotICAgICAgICB2
b2lkICAgICAgICAgdmVydGV4QXR0cmliM2Z2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gQ2Fu
dmFzRmxvYXRBcnJheSB2YWx1ZXMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkICAgICAgICAgdmVy
dGV4QXR0cmliM2Z2KGluIHVuc2lnbmVkIGxvbmcgaW5keCwgaW4gQ2FudmFzRmxvYXRBcnJheSB2
YWx1ZXMpOwogICAgICAgICB2b2lkICAgICAgICAgdmVydGV4QXR0cmliNGYoaW4gdW5zaWduZWQg
bG9uZyBpbmR4LCBpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6LCBpbiBmbG9hdCB3
KTsKLSAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYjRmdihpbiB1bnNpZ25lZCBsb25n
IGluZHgsIGluIENhbnZhc0Zsb2F0QXJyYXkgdmFsdWVzKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCAgICAgICAgIHZlcnRleEF0dHJpYjRmdihpbiB1bnNpZ25lZCBsb25nIGluZHgsIGluIENhbnZh
c0Zsb2F0QXJyYXkgdmFsdWVzKTsKICAgICAgICAgdm9pZCAgICAgICAgIHZlcnRleEF0dHJpYlBv
aW50ZXIoaW4gdW5zaWduZWQgbG9uZyBpbmR4LCBpbiBsb25nIHNpemUsIGluIHVuc2lnbmVkIGxv
bmcgdHlwZSwgaW4gYm9vbGVhbiBub3JtYWxpemVkLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gbG9uZyBzdHJpZGUsIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaG9ydEFycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaG9ydEFycmF5LmgJKHJldmlzaW9u
IDQ4MzIxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTaG9ydEFycmF5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTaG9ydEFycmF5PiBjcmVhdGUoc2hvcnQqIGFycmF5LCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTaG9ydEFy
cmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxDYW52YXNBcnJheUJ1ZmZlcj4gYnVmZmVyLCBpbnQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCisgICAgICAgIHNob3J0KiBkYXRhKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8c2hvcnQqPihiYXNlQWRkcmVzcygpKTsgfQorCiAgICAgICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNVbnNpZ25l
ZEJ5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVW5z
aWduZWRCeXRlQXJyYXkuaAkocmV2aXNpb24gNDgzMjEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1Vuc2lnbmVkQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNV
bnNpZ25lZEJ5dGVBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNVbnNpZ25lZEJ5dGVBcnJh
eT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzQXJyYXlCdWZmZXI+IGJ1ZmZlciwgaW50IG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGJhc2VBZGRyZXNzKCkpOyB9CisgICAg
ICAgIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzVW5zaWduZWRJbnRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzVW5zaWduZWRJbnRBcnJheS5oCShyZXZpc2lvbiA0ODMyMSkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVW5zaWduZWRJbnRBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2FudmFzVW5zaWduZWRJbnRBcnJheT4gY3JlYXRlKHVuc2lnbmVkIGludCog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1Vuc2lnbmVkSW50QXJyYXk+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0FycmF5QnVmZmVyPiBi
dWZmZXIsIGludCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAgICAgdW5zaWduZWQg
aW50KiBkYXRhKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Kj4oYmFzZUFkZHJl
c3MoKSk7IH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIApJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNVbnNpZ25lZFNob3J0QXJyYXkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Vuc2lnbmVkU2hvcnRBcnJheS5oCShy
ZXZpc2lvbiA0ODMyMSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzVW5zaWduZWRTaG9y
dEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNVbnNpZ25lZFNob3J0QXJyYXk+
IGNyZWF0ZSh1bnNpZ25lZCBzaG9ydCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1Vuc2lnbmVkU2hvcnRBcnJheT4gY3JlYXRlKFBhc3NS
ZWZQdHI8Q2FudmFzQXJyYXlCdWZmZXI+IGJ1ZmZlciwgaW50IG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKIAorICAgICAgICB1bnNpZ25lZCBzaG9ydCogZGF0YSgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0Kj4oYmFzZUFkZHJlc3MoKSk7IH0KKyAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdW5zaWdu
ZWQgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNDgzMjEpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
OSwzNiArMjQ5LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKIAogICAgICAgICB2b2lk
IHVuaWZvcm0xZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4KTsKLSAgICAgICAgdm9pZCB1bmlmb3Jt
MWZ2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zsb2F0QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVu
aWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKICAgICAgICAgdm9p
ZCB1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50IHgpOwotICAgICAgICB2b2lkIHVuaWZvcm0x
aXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIHYpOworICAgICAgICB2b2lkIHVuaWZv
cm0xaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CiAgICAgICAgIHZvaWQgdW5p
Zm9ybTJmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpOwotICAgICAgICB2b2lkIHVu
aWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogdik7CisgICAgICAgIHZv
aWQgdW5pZm9ybTJmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpOwogICAgICAg
ICB2b2lkIHVuaWZvcm0yaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHkpOwotICAgICAgICB2
b2lkIHVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIHYpOworICAgICAg
ICB2b2lkIHVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CiAgICAg
ICAgIHZvaWQgdW5pZm9ybTNmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopOwotICAgICAgICB2b2lkIHVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRB
cnJheSogdik7CisgICAgICAgIHZvaWQgdW5pZm9ybTNmdihsb25nIGxvY2F0aW9uLCBmbG9hdCog
diwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQg
eCwgaW50IHksIGludCB6KTsKLSAgICAgICAgdm9pZCB1bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24s
IENhbnZhc0ludEFycmF5KiB2KTsKKyAgICAgICAgdm9pZCB1bmlmb3JtM2l2KGxvbmcgbG9jYXRp
b24sIGludCogdiwgaW50IHNpemUpOwogICAgICAgICB2b2lkIHVuaWZvcm00Zihsb25nIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAgICAgICAgdm9pZCB1
bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zsb2F0QXJyYXkqIHYpOworICAgICAgICB2
b2lkIHVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKTsKICAgICAg
ICAgdm9pZCB1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50
IHcpOwotICAgICAgICB2b2lkIHVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJy
YXkqIHYpOwotICAgICAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9v
bCB0cmFuc3Bvc2UsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlKTsKLSAgICAgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBDYW52YXNGbG9hdEFy
cmF5KiB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogdmFsdWUpOworICAgICAgICB2b2lk
IHVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSk7CisgICAgICAgIHZv
aWQgdW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQq
IHZhbHVlLCBpbnQgc2l6ZSk7CisgICAgICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihsb25nIGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHZhbHVlLCBpbnQgc2l6ZSk7CisgICAgICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxv
YXQqIHZhbHVlLCBpbnQgc2l6ZSk7CiAKICAgICAgICAgdm9pZCB1c2VQcm9ncmFtKENhbnZhc1By
b2dyYW0qKTsKICAgICAgICAgdm9pZCB2YWxpZGF0ZVByb2dyYW0oQ2FudmFzUHJvZ3JhbSopOwog
CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliMWYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB4
KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52
YXNGbG9hdEFycmF5KiB2YWx1ZXMpOworICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjFmdih1bnNp
Z25lZCBsb25nIGluZHgsIGZsb2F0KiB2YWx1ZXMpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJp
YjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAgIHZvaWQg
dmVydGV4QXR0cmliMmZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogdmFs
dWVzKTsKKyAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCogdmFsdWVzKTsKICAgICAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotICAgICAgICB2b2lkIHZlcnRleEF0
dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgsIENhbnZhc0Zsb2F0QXJyYXkqIHZhbHVlcyk7Cisg
ICAgICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQqIHZh
bHVlcyk7CiAgICAgICAgIHZvaWQgdmVydGV4QXR0cmliNGYodW5zaWduZWQgbG9uZyBpbmR4LCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKLSAgICAgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBDYW52YXNGbG9hdEFycmF5KiB2YWx1ZXMpOwor
ICAgICAgICB2b2lkIHZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2
YWx1ZXMpOwogICAgICAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBp
bmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9m
ZnNldCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDQ4MzIxKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MWYobG9uZyBsCiAgICAgOjpnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zsb2F0QXJy
YXkqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdihsb25nIGxvY2F0
aW9uLCBmbG9hdCogYXJyYXksIGludCBzaXplKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICA6OmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgYXJyYXktPmxlbmd0aCgpLCBz
dGF0aWNfY2FzdDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVW5p
Zm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxKQpAQCAtNjYw
LDExICs2NjAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKGxvbmcgbAog
ICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgQ2FudmFzRmxvYXRBcnJheSogYXJy
YXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIGZs
b2F0KiBhcnJheSwgaW50IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDIKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAg
OjpnbFVuaWZvcm0yZnYobG9jYXRpb24sIGFycmF5LT5sZW5ndGgoKSAvIDIsIHN0YXRpY19jYXN0
PEdMZmxvYXQqPihhcnJheS0+YmFzZUFkZHJlc3MoKSkpOworICAgIDo6Z2xVbmlmb3JtMmZ2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zZihsb25nIGxvY2F0aW9uLCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyKQpAQCAtNjcz
LDExICs2NzMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKGxvbmcgbAog
ICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIENhbnZhc0Zsb2F0QXJyYXkq
IGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihsb25nIGxvY2F0aW9u
LCBmbG9hdCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIDo6Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCkgLyAzLCBzdGF0aWNf
Y2FzdDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6OmdsVW5pZm9ybTNm
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGYobG9uZyBsb2NhdGlvbiwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MiwgZmxv
YXQgdjMpCkBAIC02ODYsMTEgKzY4NiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGYobG9uZyBsCiAgICAgOjpnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24s
IENhbnZhc0Zsb2F0QXJyYXkqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTRmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBhcnJheS0+bGVu
Z3RoKCkgLyA0LCBzdGF0aWNfY2FzdDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsK
KyAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50IHYwKQpAQCAtNjk5
LDEwICs2OTksMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKGxvbmcgbAog
ICAgIDo6Z2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBDYW52YXNJbnRBcnJheSogYXJyYXkpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIGludCogYXJy
YXksIGludCBzaXplKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICA6
OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgYXJyYXktPmxlbmd0aCgpLCBzdGF0aWNfY2FzdDxHTGlu
dCo+KGFycmF5LT5iYXNlQWRkcmVzcygpKSk7CisgICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKGxv
bmcgbG9jYXRpb24sIGludCB2MCwgaW50IHYxKQpAQCAtNzExLDExICs3MTEsMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKGxvbmcgbAogICAgIDo6Z2xVbmlmb3JtMmkobG9j
YXRpb24sIHYwLCB2MSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYo
bG9uZyBsb2NhdGlvbiwgQ2FudmFzSW50QXJyYXkqIGFycmF5KQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTJpdihsb25nIGxvY2F0aW9uLCBpbnQqIGFycmF5LCBpbnQgc2l6ZSkKIHsK
ICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIGVu
c3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICA6OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwg
YXJyYXktPmxlbmd0aCgpIC8gMiwgc3RhdGljX2Nhc3Q8R0xpbnQqPihhcnJheS0+YmFzZUFkZHJl
c3MoKSkpOworICAgIDo6Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgdjAs
IGludCB2MSwgaW50IHYyKQpAQCAtNzI0LDExICs3MjQsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpKGxvbmcgbAogICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2
MSwgdjIpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KGxvbmcgbG9j
YXRpb24sIENhbnZhc0ludEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0zaXYobG9uZyBsb2NhdGlvbiwgaW50KiBhcnJheSwgaW50IHNpemUpCiB7CiAgICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBlbnN1cmVDb250
ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIGFycmF5LT5s
ZW5ndGgoKSAvIDMsIHN0YXRpY19jYXN0PEdMaW50Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsK
KyAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkobG9uZyBsb2NhdGlvbiwgaW50IHYwLCBpbnQgdjEs
IGludCB2MiwgaW50IHYzKQpAQCAtNzM3LDMyICs3MzcsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRpKGxvbmcgbAogICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihsb25n
IGxvY2F0aW9uLCBDYW52YXNJbnRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIGludCogYXJyYXksIGludCBzaXplKQogewogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBhcnJh
eS0+bGVuZ3RoKCkgLyA0LCBzdGF0aWNfY2FzdDxHTGludCo+KGFycmF5LT5iYXNlQWRkcmVzcygp
KSk7CisgICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29s
IHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtTWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9h
dCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiA0CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6
Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCkgLyA0LCB0cmFuc3Bv
c2UsIHN0YXRpY19jYXN0PEdMZmxvYXQqPihhcnJheS0+YmFzZUFkZHJlc3MoKSkpOworICAgIDo6
Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihsb25nIGxvY2F0aW9u
LCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3Nl
LCBmbG9hdCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA5CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBhcnJheS0+bGVuZ3RoKCkgLyA5LCB0
cmFuc3Bvc2UsIHN0YXRpY19jYXN0PEdMZmxvYXQqPihhcnJheS0+YmFzZUFkZHJlc3MoKSkpOwor
ICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihsb25nIGxv
Y2F0aW9uLCBib29sIHRyYW5zcG9zZSwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJh
bnNwb3NlLCBmbG9hdCogYXJyYXksIGludCBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0
T2JqKTsKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgYXJyYXktPmxlbmd0aCgp
IC8gMTYsIHRyYW5zcG9zZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFycmF5LT5iYXNlQWRkcmVz
cygpKSk7CisgICAgOjpnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9z
ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKENhbnZh
c1Byb2dyYW0qIHByb2dyYW0pCkBAIC03ODksMTAgKzc4OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZih1CiAgICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZHgsIHYw
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KHVuc2lnbmVk
IGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCiB7
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIx
ZnYoaW5keCwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFycmF5LT5iYXNlQWRkcmVzcygpKSk7Cisg
ICAgOjpnbFZlcnRleEF0dHJpYjFmdihpbmR4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZs
b2F0IHYxKQpAQCAtODAxLDEwICs4MDEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYodQogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBp
bmR4LCBDYW52YXNGbG9hdEFycmF5KiBhcnJheSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjJmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiBhcnJheSkKIHsKICAgICBl
bnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjJmdihpbmR4
LCBzdGF0aWNfY2FzdDxHTGZsb2F0Kj4oYXJyYXktPmJhc2VBZGRyZXNzKCkpKTsKKyAgICA6Omds
VmVydGV4QXR0cmliMmZ2KGluZHgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEs
IGZsb2F0IHYyKQpAQCAtODEzLDEwICs4MTMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliM2YodQogICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmR4LCB2MCwgdjEsIHYy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KHVuc2lnbmVk
IGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogYXJyYXkpCiB7
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIz
ZnYoaW5keCwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFycmF5LT5iYXNlQWRkcmVzcygpKSk7Cisg
ICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmR4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZs
b2F0IHYxLCBmbG9hdCB2MiwgZmxvYXQgdjMpCkBAIC04MjUsMTAgKzgyNSwxMCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0Zih1CiAgICAgOjpnbFZlcnRleEF0dHJpYjRm
KGluZHgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliNGZ2KHVuc2lnbmVkIGxvbmcgaW5keCwgQ2FudmFzRmxvYXRBcnJheSogYXJyYXkp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBp
bmR4LCBmbG9hdCogYXJyYXkpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5keCwgc3RhdGljX2Nhc3Q8R0xmbG9hdCo+KGFycmF5
LT5iYXNlQWRkcmVzcygpKSk7CisgICAgOjpnbFZlcnRleEF0dHJpYjRmdihpbmR4LCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWdu
ZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWdu
ZWQgbG9uZyBzdHJpZGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQo=
</data>
<flag name="review"
          id="20585"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>