<?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>152387</bug_id>
          
          <creation_ts>2015-12-17 08:27:25 -0800</creation_ts>
          <short_desc>Fix unused parameter handling in WebGLRenderingContextBase.cp</short_desc>
          <delta_ts>2015-12-17 09:58:45 -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>New Bugs</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Csaba Osztrogonác">ossy</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149985</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-17 08:27:25 -0800</bug_when>
    <thetext>In Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
there are many functions with unused ExceptionCode&amp; ec paramter.

Compiler warning is suppressed with unconditional UNUSED_PARAM(ec),
but in this case we should simply omit the parameter name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149986</commentid>
    <comment_count>1</comment_count>
      <attachid>267562</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-17 08:29:28 -0800</bug_when>
    <thetext>Created attachment 267562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149998</commentid>
    <comment_count>2</comment_count>
      <attachid>267562</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 09:58:39 -0800</bug_when>
    <thetext>Comment on attachment 267562
Patch

Clearing flags on attachment: 267562

Committed r194219: &lt;http://trac.webkit.org/changeset/194219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149999</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 09:58:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267562</attachid>
            <date>2015-12-17 08:29:28 -0800</date>
            <delta_ts>2015-12-17 09:58:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152387-20151217172849.patch</filename>
            <type>text/plain</type>
            <size>41029</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg3ZWE1MWE2NzIxMDMx
ZTM2NDBlNjY0Mzg2M2RhNGZhYmQzMDYyMS4uYTA5M2ZlOGQ0NzY3YmJiZDcxNTc0YTI4MGY3YjJh
OTg4ZWU5NDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE1LTEyLTE3ICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHVudXNlZCBw
YXJhbWV0ZXIgaGFuZGxpbmcgaW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMzg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdBcnJheXMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hh
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VmVydGV4QXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgU2Vzc2lvbklEIHVzZSBp
bnRIYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGY2ZmNhOWQ4NzgzZmJjNDY1YTE5YTI0N2Y0NGI5
ZTU1NWJjNGNlNDYuLjk0NGQ1ZmYxYzIyMjk5NTJhNGJjZjU1YjAzNDBjN2MyOTdlYWIwNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC04MjAsOSArODIwLDggQEAgdW5zaWduZWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2l6ZUluQnl0ZXMoR0MzRGVudW0gdHlwZSkKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphY3RpdmVUZXh0dXJlKEdDM0Rl
bnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmKQog
ewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICh0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwID49IG1fdGV4dHVyZVVuaXRzLnNpemUoKSkgewpAQCAtODMzLDkgKzgzMiw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0
ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlCiAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRl
eHR1cmUpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRl
cihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphdHRhY2hTaGFkZXIoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJikK
IHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImF0dGFjaFNoYWRlciIsIHByb2dyYW0pIHx8ICF2
YWxpZGF0ZVdlYkdMT2JqZWN0KCJhdHRhY2hTaGFkZXIiLCBzaGFkZXIpKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFwcm9ncmFtLT5hdHRhY2hTaGFkZXIoc2hhZGVyKSkgewpAQCAtODQ2LDkg
Kzg0NCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXR0YWNoU2hhZGVyKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqCiAgICAgc2hhZGVyLT5vbkF0dGFjaGVk
KCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEF0dHJpYkxvY2F0
aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJB
TShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJH
TE9iamVjdCgiYmluZEF0dHJpYkxvY2F0aW9uIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIXZhbGlkYXRlTG9jYXRpb25MZW5ndGgoImJpbmRBdHRyaWJMb2NhdGlvbiIsIG5h
bWUpKQpAQCAtODgxLDkgKzg3OCw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRh
cmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRvQmVC
b3VuZCgiYmluZEJ1ZmZlciIsIGJ1ZmZlciwgZGVsZXRlZCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTkwNyw5ICs5MDMsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVyLAogICAgICAgICBidWZmZXIt
PnNldFRhcmdldCh0YXJnZXQpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJp
bmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlciwg
RXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBib29sIGRlbGV0
ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgiYmluZEZyYW1lYnVmZmVyIiwgYnVm
ZmVyLCBkZWxldGVkKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI2LDkgKzkyMSw4IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgV2ViR0xGcmFtZWJ1ZmZlCiAgICAgYXBwbHlTdGVuY2lsVGVzdCgpOwogfQogCi12b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0
LCBXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyQnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0
YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmKQog
ewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgYm9vbCBkZWxldGVkOwogICAgIGlmICghY2hl
Y2tPYmplY3RUb0JlQm91bmQoImJpbmRSZW5kZXJidWZmZXIiLCByZW5kZXJCdWZmZXIsIGRlbGV0
ZWQpKQogICAgICAgICByZXR1cm47CkBAIC05NDQsOSArOTM4LDggQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xS
ZW5kZXJidWYKICAgICAgICAgcmVuZGVyQnVmZmVyLT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUoR0MzRGVudW0g
dGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFdl
YkdMVGV4dHVyZSogdGV4dHVyZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGVjKTsKICAgICBib29sIGRlbGV0ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgi
YmluZFRleHR1cmUiLCB0ZXh0dXJlLCBkZWxldGVkKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAx
OCw5ICsxMDExLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpibGVuZEZ1bmNT
ZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFIKICAgICBtX2NvbnRleHQtPmJs
ZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgbG9uZyBsb25nIHNpemUsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJE
YXRhUGFyYW1ldGVycygiYnVmZmVyRGF0YSIsIHRhcmdldCwgdXNhZ2UpOwpAQCAtMTA0OSw5ICsx
MDQxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0Rl
bnVtIHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0QKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVm
ZmVyKiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1
ZmZlciogZGF0YSwgR0MzRGVudW0gdXNhZ2UsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNF
RF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIFdlYkdMQnVmZmVyKiBidWZmZXIgPSB2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJh
bWV0ZXJzKCJidWZmZXJEYXRhIiwgdGFyZ2V0LCB1c2FnZSk7CkBAIC0xMDc2LDkgKzEwNjcsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBBcnJheUJ1ZmZlciogZGF0YSwgRwogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3
KiBkYXRhLCBHQzNEZW51bSB1c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZl
clZpZXcqIGRhdGEsIEdDM0RlbnVtIHVzYWdlLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVT
RURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhUGFy
YW1ldGVycygiYnVmZmVyRGF0YSIsIHRhcmdldCwgdXNhZ2UpOwpAQCAtMTEwMyw5ICsxMDkzLDgg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXQKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBv
ZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcg
bG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBXZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRh
UGFyYW1ldGVycygiYnVmZmVyU3ViRGF0YSIsIHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
QVRJQ19EUkFXKTsKQEAgLTExMzIsOSArMTEyMSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQs
CiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlclN1YkRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRh
dGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgQXJyYXlCdWZm
ZXJWaWV3KiBkYXRhLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICBX
ZWJHTEJ1ZmZlciogYnVmZmVyID0gdmFsaWRhdGVCdWZmZXJEYXRhUGFyYW1ldGVycygiYnVmZmVy
U3ViRGF0YSIsIHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKQEAgLTEy
MjcsOSArMTIxNSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29sb3JNYXNr
KEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDCiAgICAgbV9jb250ZXh0LT5j
b2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFk
ZXIoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdl
YkdMT2JqZWN0KCJjb21waWxlU2hhZGVyIiwgc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29udGV4dC0+Y29tcGlsZVNoYWRlcihvYmplY3RPclplcm8oc2hhZGVyKSk7CkBAIC0xNDMx
LDkgKzE0MTgsOCBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogICAgIHJldHVybiBvOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVT
aGFkZXIoR0MzRGVudW0gdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFdlYkdM
U2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0g
dHlwZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBp
ZiAodHlwZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiAmJiB0eXBlICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIpIHsKQEAgLTE1NTAsOSArMTUzNiw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVwdGhSYW5nZShHQzNEZmxvYXQgek5l
YXIsIEdDM0RmbG9hdCB6RmFyKQogICAgIG1fY29udGV4dC0+ZGVwdGhSYW5nZSh6TmVhciwgekZh
cik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaFNoYWRlcihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmKQogewot
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGV0YWNoU2hhZGVyIiwgcHJvZ3JhbSkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRldGFjaFNoYWRlciIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIXByb2dyYW0tPmRldGFjaFNoYWRlcihzaGFkZXIpKSB7CkBAIC0xNTc3LDkgKzE1
NjIsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2FibGUoR0MzRGVudW0g
Y2FwKQogICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOwogfQogCi12b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKGluZGV4ID49IG1fbWF4VmVydGV4QXR0cmlicykgewpA
QCAtMTg5MSwxMCArMTg3NSw4IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFs
aWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0FycmF5cyhH
QzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3QXJyYXlzKEdDM0Rl
bnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgRXhjZXB0aW9uQ29kZSYp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKLQogICAgIGlmICghdmFsaWRhdGVEcmF3QXJyYXlz
KCJkcmF3QXJyYXlzIiwgbW9kZSwgZmlyc3QsIGNvdW50LCAwKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xOTE1LDEwICsxODk3LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpk
cmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXoKICAgICBtYXJr
Q29udGV4dENoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpk
cmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBl
LCBsb25nIGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3Vu
dCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGVjKTsKLQogICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gMDsKICAg
ICBpZiAoIXZhbGlkYXRlRHJhd0VsZW1lbnRzKCJkcmF3RWxlbWVudHMiLCBtb2RlLCBjb3VudCwg
dHlwZSwgb2Zmc2V0LCBudW1FbGVtZW50cywgMCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NTcs
OSArMTkzNyw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlKEdDM0Rl
bnVtIGNhcCkKICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOwogfQogCi12b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKQogewot
ICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpbmRleCA+PSBtX21heFZlcnRleEF0dHJpYnMpIHsK
QEAgLTE5ODcsOSArMTk2Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Zmx1
c2goKQogICAgIG1fY29udGV4dC0+Zmx1c2goKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJi
dWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTFJlbmRlcmJ1
ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlRnJhbWVidWZmZXJG
dW5jUGFyYW1ldGVycygiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCB0YXJnZXQsIGF0dGFjaG1l
bnQpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHJlbmRlcmJ1ZmZlcnRhcmdldCAhPSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7CkBAIC0yMDIwLDkgKzE5OTgsOCBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudQogICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgV2ViR0xUZXh0
dXJlKiB0ZXh0dXJlLCBHQzNEaW50IGxldmVsLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVy
ZSogdGV4dHVyZSwgR0MzRGludCBsZXZlbCwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnMoImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgdGFyZ2V0
LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChsZXZlbCkgewpAQCAtMjEw
Miw5ICsyMDc5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZW5lcmF0ZU1p
cG1hcChHQzNEZW51bSB0YXJnZXQpCiAgICAgdGV4LT5nZW5lcmF0ZU1pcG1hcExldmVsSW5mbygp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xP
YmplY3QoImdldEFjdGl2ZUF0dHJpYiIsIHByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBBY3RpdmVJbmZvIGluZm87CkBAIC0yMTE2LDkgKzIwOTIsOCBAQCBQYXNzUmVmUHRy
PFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlQXR0
cmliKFdlYkdMUHJvZwogICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5h
bWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUlu
Zm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZl
VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBFeGNlcHRpb25D
b2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldEFjdGl2ZVVuaWZvcm0iLCBwcm9n
cmFtKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQWN0aXZlSW5mbyBpbmZvOwpAQCAtMjEzMyw5
ICsyMTA4LDggQEAgUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm8KICAgICByZXR1cm4gV2ViR0xBY3Rp
dmVJbmZvOjpjcmVhdGUoaW5mby5uYW1lLCBpbmZvLnR5cGUsIGluZm8uc2l6ZSk7CiB9CiAKLWJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgVmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+JiBzaGFkZXJPYmplY3Rz
LCBFeGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
QXR0YWNoZWRTaGFkZXJzKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgVmVjdG9yPFJlZlB0cjxXZWJH
TFNoYWRlcj4+JiBzaGFkZXJPYmplY3RzLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURf
UEFSQU0oZWMpOwogICAgIHNoYWRlck9iamVjdHMuY2xlYXIoKTsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRBdHRhY2hlZFNoYWRl
cnMiLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE2OSw5ICsyMTQzLDgg
QEAgR0MzRGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRyaWJMb2NhdGlvbihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnMKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRBdHRy
aWJMb2NhdGlvbihvYmplY3RPclplcm8ocHJvZ3JhbSksIG5hbWUpOwogfQogCi1XZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oKTsKICAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpB
UlJBWV9CVUZGRVIgJiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZ
X0JVRkZFUikgewpAQCAtMjIxNiw5ICsyMTg5LDggQEAgR0MzRGVudW0gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBtX2NvbnRleHQtPmdldEVycm9yKCk7
CiB9CiAKLVdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFt
UGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBy
b2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRQcm9ncmFtUGFyYW1l
dGVyIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIApAQCAtMjI0
NCwxNyArMjIxNiwxNSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYQogICAgIH0KIH0KIAotU3Ry
aW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCitTdHJpbmcgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNl
cHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFByb2dyYW1JbmZvTG9n
IiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJl
Tm90TnVsbChtX2NvbnRleHQtPmdldFByb2dyYW1JbmZvTG9nKG9iamVjdE9yWmVybyhwcm9ncmFt
KSkpOwogfQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBF
eGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICBp
ZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIpIHsKQEAgLTIzMTgs
OSArMjI4OCw4IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0CiAgICAgfQogfQogCi1XZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdM
U2hhZGVyKiBzaGFkZXIsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1dlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2Vi
R0xTaGFkZXIqIHNoYWRlciwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAg
IFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0U2hhZGVyUGFyYW1ldGVyIiwgc2hhZGVyKSkKICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwpAQCAtMjMz
OSwxNyArMjMwOCwxNSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsCiAgICAgfQogfQogCi1TdHJp
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRl
ciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKK1N0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNv
ZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0U2hhZGVySW5mb0xvZyIsIHNoYWRl
cikpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbCht
X2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2cob2JqZWN0T3JaZXJvKHNoYWRlcikpKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVtIHNoYWRlclR5cGUsIEdD
M0RlbnVtIHByZWNpc2lvblR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxXZWJH
TFNoYWRlclByZWNpc2lvbkZvcm1hdD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVtIHNoYWRlclR5cGUsIEdDM0RlbnVtIHByZWNpc2lv
blR5cGUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
c3dpdGNoIChzaGFkZXJUeXBlKSB7CkBAIC0yMzc5LDE3ICsyMzQ2LDE1IEBAIFBhc3NSZWZQdHI8
V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFNoYWRlclByZWNpCiAgICAgcmV0dXJuIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpjcmVh
dGUocmFuZ2VbMF0sIHJhbmdlWzFdLCBwcmVjaXNpb24pOwogfQogCi1TdHJpbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlV2ViR0xPYmplY3QoImdldFNoYWRlclNvdXJjZSIsIHNoYWRlcikpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZW5zdXJlTm90TnVsbChzaGFkZXItPmdldFNvdXJj
ZSgpKTsKIH0KIAotV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFRl
eFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRUZXhQYXJh
bWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
KQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgV2ViR0xUZXh0dXJlKiB0ZXgg
PSB2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKCJnZXRUZXhQYXJhbWV0ZXIiLCB0YXJnZXQsIGZhbHNl
KTsKQEAgLTI0MTYsOSArMjM4MSw4IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51CiAgICAgfQog
fQogCi1XZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB1bmlmb3Jt
TG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogdW5pZm9ybUxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFVuaWZvcm0iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGlmICghdW5pZm9ybUxvY2F0aW9uIHx8IHVuaWZvcm1M
b2NhdGlvbi0+cHJvZ3JhbSgpICE9IHByb2dyYW0pIHsKQEAgLTI1NDQsOSArMjUwOCw4IEBAIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9u
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAg
IFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0VW5pZm9ybUxvY2F0aW9uIiwgcHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghdmFsaWRhdGVMb2NhdGlvbkxlbmd0aCgiZ2V0
VW5pZm9ybUxvY2F0aW9uIiwgbmFtZSkpCkBAIC0yNTgzLDEwICsyNTQ2LDggQEAgUGFzc1JlZlB0
cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFcKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotV2ViR0xHZXRJbmZvIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYihHQzNEdWludCBpbmRleCwg
R0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFZlcnRleEF0dHJpYihHQzNEdWludCBpbmRleCwgR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0KICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CiAKQEAgLTI3MzIsOSArMjY5Myw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6bGluZVdpZHRoKEdDM0RmbG9hdCB3aWR0aCkKICAgICBtX2NvbnRleHQtPmxpbmVXaWR0
aCh3aWR0aCk7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBF
eGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImxpbmtQcm9ncmFtIiwg
cHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJHTFNoYWRlciogdmVydGV4U2hhZGVy
ID0gcHJvZ3JhbS0+Z2V0QXR0YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9T
SEFERVIpOwpAQCAtMjkwNSw5ICsyODY1LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEcKICAg
ICBtX2NvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmpl
Y3QoInNoYWRlclNvdXJjZSIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBTdHJpbmcg
c3RyaW5nV2l0aG91dENvbW1lbnRzID0gU3RyaXBDb21tZW50cyhzdHJpbmcpLnJlc3VsdCgpOwpA
QCAtMzMyNiw5ICszMjg1LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhQ
YXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEcKICAgICB0ZXhQYXJh
bWV0ZXIodGFyZ2V0LCBwbmFtZSwgMCwgcGFyYW0sIGZhbHNlKTsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDM0RmbG9hdCB4LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTMzNDAsMjcgKzMyOTgsMjQgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhj
ZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2
IiwgbG9jYXRpb24sIHYsIDEpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVu
aWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpLCB2LT5kYXRhKCkpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXpl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCog
diwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAxKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBzaXplLCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
MWkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWko
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50IHgsIEV4Y2VwdGlv
bkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMzM3Nyw5ICsz
MzMyLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWkoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFp
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
SW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMp
OwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzM5NSw5ICszMzQ5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpLCB2LT5k
YXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6
ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
aW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24sIHYsIHNpemUsIDEpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM0MTIsOSArMzM2NSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXpl
LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0
IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQg
eCwgR0MzRGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzQyNiwyNyArMzM3OCwyNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHkpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmZ2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRp
b25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBs
b2NhdGlvbiwgdiwgMikpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9y
bTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyAyLCB2LT5kYXRhKCkpOwog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXpl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCog
diwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShl
Yyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAyKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCBzaXplIC8gMiwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBH
QzNEaW50IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVj
KTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNDU4LDI3ICszNDA3LDI0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybTJpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7
CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9u
Q29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMml2IiwgbG9j
YXRpb24sIHYsIDIpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gMiwgdi0+ZGF0YSgpKTsKIH0K
IAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
Mml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCogdiwgR0Mz
RHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1l
dGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCBzaXplLCAyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXpl
IC8gMiwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNm
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0Rm
bG9hdCB5LCBHQzNEZmxvYXQgeiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEV4Y2VwdGlvbkNv
ZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ5MCwyNyArMzQz
NiwyNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Yo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHopOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURf
UEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMykpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdi0+bGVuZ3RoKCkgLyAzLCB2LT5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2Vw
dGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIs
IGxvY2F0aW9uLCB2LCBzaXplLCAzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0
LT51bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gMywgdik7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0z
aShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEaW50IHosIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzUyMiwyNyArMzQ2NSwyNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHop
OwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlv
bkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxv
Y2F0aW9uLCB2LCAzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDMsIHYtPmRhdGEoKSk7CiB9
CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBzaXplLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdD
M0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgc2l6ZSwgMykpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6
ZSAvIDMsIHYpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00
Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNE
ZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3LCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQg
eiwgR0MzRGZsb2F0IHcsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzU1NCwyNyArMzQ5NCwyNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHksIHos
IHcpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBF
eGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00
ZnYiLCBsb2NhdGlvbiwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+
dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA0LCB2LT5kYXRh
KCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXpl
aSBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rm
bG9hdCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9Q
QVJBTShlYyk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCBzaXplLCA0KSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCBzaXplIC8gNCwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3LCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwg
R0MzRGludCB3LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQogICAgICAgICByZXR1
cm47CiAKQEAgLTM1ODYsNzUgKzM1MjMsNjYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6LCB3KTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2Nh
dGlvbiwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA0LCB2LT5kYXRhKCkpOwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNE
c2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0
ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIHNpemUsIDQpKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUg
LyA0LCB2KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0
cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkq
IHYsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFVOVVNFRF9QQVJBTShlYyk7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDQpKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB2LT5sZW5ndGgoKSAvIDQsIHRyYW5zcG9zZSwgdi0+ZGF0YSgpKTsKIH0KIAotdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxv
YXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNE
c2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6
ZSwgNCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA0LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJB
cnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgp
IC8gOSwgdHJhbnNwb3NlLCB2LT5kYXRhKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdiwgR0MzRHNpemVpIHNp
emUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRp
b25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplLCA5KSkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgc2l6ZSAvIDksIHRyYW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBVTlVTRURfUEFS
QU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCAxNikpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpIC8gMTYsIHRyYW5zcG9zZSwg
di0+ZGF0YSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDRmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRp
b24sIHRyYW5zcG9zZSwgdiwgc2l6ZSwgMTYpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gMTYsIHRy
YW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dXNlUHJv
Z3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
RXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBib29sIGRlbGV0
ZWQ7CiAgICAgaWYgKCFjaGVja09iamVjdFRvQmVCb3VuZCgidXNlUHJvZ3JhbSIsIHByb2dyYW0s
IGRlbGV0ZWQpKQogICAgICAgICByZXR1cm47CkBAIC0zNjc0LDkgKzM2MDIsOCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBFeGNlcHRpb25Db2RlJgogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVQcm9ncmFtKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdM
T2JqZWN0KCJ2YWxpZGF0ZVByb2dyYW0iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKG9iamVjdE9yWmVybyhwcm9ncmFtKSk7CkBAIC0z
NzQyLDkgKzM2NjksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0
dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2LCBHQwogICAgIHZlcnRleEF0dHJp
YmZ2SW1wbCgidmVydGV4QXR0cmliNGZ2IiwgaW5kZXgsIHYsIHNpemUsIDQpOwogfQogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQg
aW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXpl
ZCwgR0MzRHNpemVpIHN0cmlkZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9y
bWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgbG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVjKTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoICh0eXBlKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>