<?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>161580</bug_id>
          
          <creation_ts>2016-09-04 18:11:20 -0700</creation_ts>
          <short_desc>Remove the CREATE_DOM_WRAPPER macro</short_desc>
          <delta_ts>2017-05-21 11:15:56 -0700</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>WebKit Nightly Build</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226316</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-04 18:11:20 -0700</bug_when>
    <thetext>Remove the CREATE_DOM_WRAPPER macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226317</commentid>
    <comment_count>1</comment_count>
      <attachid>287924</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-04 18:20:35 -0700</bug_when>
    <thetext>Created attachment 287924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226318</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-04 18:22:34 -0700</bug_when>
    <thetext>Attachment 287924 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:484:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226319</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-04 18:22:45 -0700</bug_when>
    <thetext>I thought about doing this in the other direction, making it createWrapper&lt;WrapperType&gt;(...), but couldn&apos;t convince myself one way was better than another, so I went this way. I have plans to use the mapping established by JSDOMWrapperConverterTraits for more things going forward, so this seems ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226336</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-04 20:13:51 -0700</bug_when>
    <thetext>Committed r205422: &lt;http://trac.webkit.org/changeset/205422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226371</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-09-05 00:08:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r205422: &lt;http://trac.webkit.org/changeset/205422&gt;

It broke the bindings generation tests, pleasw fix them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287924</attachid>
            <date>2016-09-04 18:20:35 -0700</date>
            <delta_ts>2017-05-21 11:15:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161580-20160904181815.patch</filename>
            <type>text/plain</type>
            <size>44672</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE2LTA5LTA0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBDUkVBVEVfRE9NX1dS
QVBQRVIgbWFjcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTU4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBDUkVBVEVfRE9NX1dSQVBQRVIgaGFzIGlycml0YXRlZCBtZSBmb3IgdG9vIGxvbmch
IFJlcGxhY2UgaXQKKyAgICAgICAgd2l0aCBkaXJlY3QgY2FsbHMgdG8gY3JlYXRlV3JhcHBlcjxJ
bXBsZW1lbnRhdGlvblR5cGU+LCB3aGljaCBoYXMKKyAgICAgICAgYmVlbiB1cGdyYWRlZCB0byBu
b3QgcmVxdWlyZSBzcGVjaWZ5aW5nIGJvdGggdGhlIGltcGxlbWVudGF0aW9uIHR5cGUKKyAgICAg
ICAgYW5kIHRoZSB3cmFwcGVyIHR5cGUgYnkgd2F5IG9mIHRoZSBuZXcgSlNET01XcmFwcGVyQ29u
dmVydGVyVHJhaXRzCisgICAgICAgIHN0cnVjdCB3aGljaCBwcm92aWRlcyBtYXBwaW5nIGZyb20g
SW1wbGVtZW50YXRpb25UeXBlIC0+IEpTV3JhcHBlci4KKyAgICAgICAgY3JlYXRlV3JhcHBlcjxJ
bXBsZW1lbnRhdGlvblR5cGU+IGhhcyBhbHNvIGJlZW4gdXBncmFkZWQgdG8gaGF2ZSBhCisgICAg
ICAgIHNwZWNpYWxpemF0aW9uIGZvciB3aGVuIHRoZSBvYmplY3QgYmVpbmcgcGFzc2VkIGluIG5l
ZWRzIHRvIGJlIGNhc3RlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQW5pbWF0aW9uVGlt
ZWxpbmVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNCbG9iKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1
ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SlNEYXRhQ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5ld0RvY3VtZW50V3JhcHBlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVOZXdFbGVtZW50V3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zp
bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNGaWxlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VE
YXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVXcmFwcGVySW5saW5lKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5w
bDoKKyAgICAgICAgKHByaW50V3JhcHBlckZ1bmN0aW9ucyk6CisgICAgICAgIChwcmludFdyYXBw
ZXJGYWN0b3J5Q3BwRmlsZSk6CisgICAgICAgIFJlcGxhY2UgQ1JFQVRFX0RPTV9XUkFQUEVSIHdp
dGggZGlyZWN0IGNhbGxzIHRvIGNyZWF0ZVdyYXBwZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICBBZGQgI2luY2x1ZGUgb2YgSlNE
T01XcmFwcGVyLmggdG8gYWxsb3cgZ2VuZXJhdGVkIHN1YmNsYXNzZXMgdG8gdXNlIAorICAgICAg
ICBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNhc3RET01PYmplY3RGb3JXcmFwcGVy
Q3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgQ1JFQVRFX0RPTV9XUkFQUEVSIGFu
ZCBjYXN0RE9NT2JqZWN0Rm9yV3JhcHBlckNyZWF0aW9uIGFuZCAKKyAgICAgICAgc3BlY2lhbGl6
ZSBjcmVhdGVXcmFwcGVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6
CisgICAgICAgIEZvcndhcmQgZGVjbGFyZSBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHMuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgQWRkIHNwZWNpYWxpemF0aW9uIG9mIEpTRE9NV3Jh
cHBlckNvbnZlcnRlclRyYWl0cyBmb3IgZWFjaCBoZWFkZXIuCisKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24p
OgorICAgICAgICBSZXBsYWNlIENSRUFURV9ET01fV1JBUFBFUiB3aXRoIGRpcmVjdCBjYWxscyB0
byBjcmVhdGVXcmFwcGVyLgorCiAyMDE2LTA5LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3R5bGU6OlBlbmRpbmdSZXNvdXJjZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQW5pbWF0aW9uVGltZWxpbmVDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQW5pbWF0aW9uVGlt
ZWxpbmVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0FuaW1hdGlvblRpbWVsaW5lQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEFuaW1h
dGlvblRpbWVsaW5lPiYmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNEb2N1bWVudFRpbWVs
aW5lKCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBE
b2N1bWVudFRpbWVsaW5lLCBXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihnbG9iYWxPYmplY3QsIEFuaW1hdGlvblRpbWVsaW5lLCBXVEZNb3ZlKHZhbHVlKSk7
CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERvY3VtZW50VGltZWxpbmU+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZSh2YWx1ZSkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEFuaW1hdGlv
blRpbWVsaW5lPihnbG9iYWxPYmplY3QsIFdURk1vdmUodmFsdWUpKTsKIH0KIAogSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFu
aW1hdGlvblRpbWVsaW5lJiB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmxvYkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1NDIxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8QmxvYj4mJiBi
bG9iKQogewogICAgIGlmIChpczxGaWxlPihibG9iKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEZpbGUsIFdURk1vdmUoYmxvYikpOwotICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPEpTQmxvYj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGJsb2IpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8RmlsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGJs
b2IpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxCbG9iPihnbG9iYWxPYmplY3QsIFdURk1v
dmUoYmxvYikpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmxvYiYgYmxvYikKQEAgLTc1LDcgKzc1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgICAgICByZXR1cm4gdGhy
b3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKGV4ZWMs
IHNjb3BlLCAiQmxvYiIpOwogCiAgICAgaWYgKCFleGVjLmFyZ3VtZW50Q291bnQoKSkgewotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihqc0NvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgQmxvYjo6Y3JlYXRlKCkpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVXcmFwcGVyPEJsb2I+KGpzQ29uc3RydWN0b3ItPmds
b2JhbE9iamVjdCgpLCBCbG9iOjpjcmVhdGUoKSkpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGJs
b2JQYXJ0c0xlbmd0aCA9IDA7CkBAIC0xMzksNyArMTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIH0KIAogICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNy
ZWF0ZShibG9iQnVpbGRlci5maW5hbGl6ZSgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
dHlwZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBCbG9iLCBXVEZNb3ZlKGJsb2IpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVXcmFwcGVyPEJsb2I+KGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGJsb2IpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA1NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NSdWxlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMzMgKzY0LDMzIEBAIEpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKIHsKICAgICBzd2l0Y2ggKHJ1
bGUtPnR5cGUoKSkgewogICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVMRToKLSAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1N0eWxlUnVsZSwgV1RGTW92
ZShydWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPENTU1N0eWxlUnVsZT4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICAgICBjYXNlIENTU1J1bGU6Ok1FRElBX1JVTEU6
Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NNZWRp
YVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxDU1NN
ZWRpYVJ1bGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShydWxlKSk7CiAgICAgY2FzZSBDU1NSdWxl
OjpGT05UX0ZBQ0VfUlVMRToKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIENTU0ZvbnRGYWNlUnVsZSwgV1RGTW92ZShydWxlKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPENTU0ZvbnRGYWNlUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKICAgICBjYXNlIENTU1J1bGU6OlBBR0VfUlVMRToKLSAgICAgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU1BhZ2VSdWxlLCBXVEZNb3ZlKHJ1bGUpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTUGFnZVJ1bGU+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShydWxlKSk7CiAgICAgY2FzZSBDU1NSdWxlOjpJTVBPUlRfUlVMRToKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU0ltcG9ydFJ1bGUsIFdU
Rk1vdmUocnVsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxDU1NJbXBvcnRSdWxl
PihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVsZSkpOwogICAgIGNhc2UgQ1NTUnVsZTo6Q0hBUlNF
VF9SVUxFOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
Q1NTQ2hhcnNldFJ1bGUsIFdURk1vdmUocnVsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxDU1NDaGFyc2V0UnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICAgICBj
YXNlIENTU1J1bGU6OktFWUZSQU1FX1JVTEU6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NLZXlmcmFtZVJ1bGUsIFdURk1vdmUocnVsZSkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxDU1NLZXlmcmFtZVJ1bGU+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShydWxlKSk7CiAgICAgY2FzZSBDU1NSdWxlOjpLRVlGUkFNRVNfUlVMRToKLSAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENTU0tleWZyYW1lc1J1
bGUsIFdURk1vdmUocnVsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxDU1NLZXlm
cmFtZXNSdWxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVsZSkpOwogICAgIGNhc2UgQ1NTUnVs
ZTo6U1VQUE9SVFNfUlVMRToKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsIENTU1N1cHBvcnRzUnVsZSwgV1RGTW92ZShydWxlKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPENTU1N1cHBvcnRzUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGNhc2UgQ1NTUnVs
ZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUsIFdURk1vdmUocnVsZSkpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJLaXRDU1NWaWV3cG9ydFJ1bGU+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShydWxlKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CiAgICAgY2FzZSBDU1NSdWxlOjpXRUJLSVRfUkVHSU9OX1JVTEU6Ci0gICAgICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NSZWdpb25SdWxlLCBXVEZN
b3ZlKHJ1bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViS2l0Q1NTUmVnaW9u
UnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICNlbmRpZgogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NSdWxl
LCBXVEZNb3ZlKHJ1bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTUnVsZT4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTggKzY3LDE4IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmQKIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8Q1NTVmFsdWU+JiYgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlLT5pc1dlYktpdENTU1RyYW5zZm9ybVZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZSwgV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSk7CiAg
ICAgaWYgKHZhbHVlLT5pc1dlYktpdENTU0ZpbHRlclZhbHVlKCkpCi0gICAgICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSwgV1RG
TW92ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJLaXRDU1NGaWx0
ZXJWYWx1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLT5p
c1ZhbHVlTGlzdCgpKQotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgQ1NTVmFsdWVMaXN0LCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPENTU1ZhbHVlTGlzdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSk7CiAg
ICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50KCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYWludCwgV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdQYWludD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVl
KSk7CiAgICAgaWYgKHZhbHVlLT5pc1NWR0NvbG9yKCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdDb2xvciwgV1RGTW92ZSh2YWx1ZSkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdDb2xvcj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJl
dHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBDU1NQcmltaXRpdmVWYWx1ZSwg
V1RGTW92ZSh2YWx1ZSkpOwotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBDU1NWYWx1ZSwgV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxDU1NQcmltaXRpdmVWYWx1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHZhbHVlKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTVmFsdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZSh2
YWx1ZSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjIsMTQgKzE2MiwxMiBAQCBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVy
CiBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBTY3JpcHRX
cmFwcGFibGUqLCBKU0RPTU9iamVjdCogd3JhcHBlcik7CiBib29sIGNsZWFySW5saW5lQ2FjaGVk
V3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBKU0M6OkFycmF5QnVmZmVyKiwgSlNDOjpKU0FycmF5
QnVmZmVyKiB3cmFwcGVyKTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1l
IFQ+IFJlZjxET01DbGFzcz4gaW5saW5lIGNhc3RET01PYmplY3RGb3JXcmFwcGVyQ3JlYXRpb24o
UmVmPFQ+JiYgb2JqZWN0KSB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RE9NQ2xhc3M+
KFdURk1vdmUob2JqZWN0KSk7IH0KLSNkZWZpbmUgQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgY2xhc3NOYW1lLCBvYmplY3QpIGNyZWF0ZVdyYXBwZXI8SlMjI2NsYXNzTmFtZSwgY2xh
c3NOYW1lPihnbG9iYWxPYmplY3QsIGNhc3RET01PYmplY3RGb3JXcmFwcGVyQ3JlYXRpb248Y2xh
c3NOYW1lPihvYmplY3QpKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU09i
amVjdCogZ2V0Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOwogdGVt
cGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJlZjxET01DbGFzcz4mIG9iamVjdCkgeyBy
ZXR1cm4gZ2V0Q2FjaGVkV3JhcHBlcih3b3JsZCwgb2JqZWN0LmdldCgpKTsgfQogdGVtcGxhdGU8
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gdm9pZCBjYWNoZVdyYXBw
ZXIoRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MqLCBXcmFwcGVyQ2xhc3MqKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IHZvaWQgdW5jYWNoZVdy
YXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MqLCBXcmFwcGVyQ2xhc3MqKTsKLXRlbXBs
YXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IFdyYXBwZXJDbGFz
cyogY3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxET01DbGFzcz4mJik7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0byBjcmVhdGVXcmFwcGVy
KEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFQ+JiYpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxET01DbGFzcywgVD46OnZhbHVlLCB0eXBlbmFtZSBKU0RPTVdyYXBwZXJD
b252ZXJ0ZXJUcmFpdHM8RE9NQ2xhc3M+OjpXcmFwcGVyQ2xhc3MqPjo6dHlwZTsKK3RlbXBsYXRl
PHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBUPiBhdXRvIGNyZWF0ZVdyYXBwZXIoSlNET01H
bG9iYWxPYmplY3QqLCBSZWY8VD4mJikgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6
aXNfc2FtZTxET01DbGFzcywgVD46OnZhbHVlLCB0eXBlbmFtZSBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8RE9NQ2xhc3M+OjpXcmFwcGVyQ2xhc3MqPjo6dHlwZTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBET01DbGFzcyYpOwogCkBAIC00NzEsMTUgKzQ2OSwyMiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhCiAgICAgd2Vha1JlbW92ZSh3b3JsZC5t
X3dyYXBwZXJzLCB3cmFwcGVyS2V5KGRvbU9iamVjdCksIHdyYXBwZXIpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgV3JhcHBl
ckNsYXNzKiBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZjxET01DbGFzcz4mJiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1l
IFQ+IGlubGluZSBhdXRvIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFQ+JiYgZG9tT2JqZWN0KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01XcmFwcGVyQ29udmVy
dGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGUKIHsKLSAgICBBU1NFUlQo
IWdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBub2RlKSk7Ci0gICAgYXV0
byogbm9kZVB0ciA9IG5vZGUucHRyKCk7Ci0gICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0gV3Jh
cHBlckNsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLCAqZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5vZGUpKTsK
LSAgICBjYWNoZVdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBub2RlUHRyLCB3cmFwcGVy
KTsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSB0eXBlbmFtZSBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8RE9NQ2xhc3M+OjpXcmFwcGVyQ2xhc3M7CisKKyAgICBBU1NFUlQoIWdldENhY2hl
ZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKTsKKyAgICBhdXRvKiBk
b21PYmplY3RQdHIgPSBkb21PYmplY3QucHRyKCk7CisgICAgYXV0byogd3JhcHBlciA9IFdyYXBw
ZXJDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGdsb2JhbE9iamVj
dC0+dm0oKSwgKmdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgV1RGTW92ZShkb21PYmplY3Qp
KTsKKyAgICBjYWNoZVdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3RQdHIs
IHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBE
T01DbGFzcywgdHlwZW5hbWUgVD4gaW5saW5lIGF1dG8gY3JlYXRlV3JhcHBlcihKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VD4mJiBkb21PYmplY3QpIC0+IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUg
SlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5
cGUKK3sKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxET01DbGFzcz4oZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RE9NQ2xhc3M+KFdURk1vdmUoZG9tT2JqZWN0KSkpOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9N
Q2xhc3MmIGRvbU9iamVjdCkKIHsKICAgICBpZiAoYXV0byogd3JhcHBlciA9IGdldENhY2hlZFdy
YXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3QpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw2ICs2Niw4IEBAIHByaXZhdGU6CiAgICAgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+IG1f
d3JhcHBlZDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEltcGxlbWVudGF0aW9uQ2xhc3M+IHN0
cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM7CisKIHRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CiBzdHJ1Y3QgSlNET01PYmplY3RJbnNwZWN0
b3IgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3Vl
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rh
dGFDdWVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMyArOTQs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKCZleGVjLCBUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgRGF0YUN1ZSwgRGF0YUN1ZTo6Y3JlYXRlKCpjb250ZXh0LCBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoc3RhcnRUaW1lKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVu
ZFRpbWUpLCAqZGF0YSwgdHlwZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
cmVhdGVXcmFwcGVyPERhdGFDdWU+KGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBEYXRhQ3Vl
OjpjcmVhdGUoKmNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydFRpbWUp
LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksICpkYXRhLCB0eXBlKSkpOwog
ICAgIH0KIAogI2lmICFFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogI2Vsc2UKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KENSRUFURV9ET01fV1JBUFBFUihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgRGF0YUN1ZSxE
YXRhQ3VlOjpjcmVhdGUoKmNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFy
dFRpbWUpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksIHZhbHVlQXJndW1l
bnQsIHR5cGUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVXcmFwcGVyPERh
dGFDdWU+KGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBEYXRhQ3VlOjpjcmVhdGUoKmNvbnRl
eHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydFRpbWUpLCBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksIHZhbHVlQXJndW1lbnQsIHR5cGUpKSk7CiAjZW5kaWYK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMSArNTcsMTEgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGNyZWF0ZU5ld0RvY3VtZW50VwogICAgIGF1dG8mIGRvY3Vt
ZW50ID0gcGFzc2VkRG9jdW1lbnQuZ2V0KCk7CiAgICAgSlNPYmplY3QqIHdyYXBwZXI7CiAgICAg
aWYgKGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoJmdsb2JhbE9iamVjdCwgSFRNTERvY3VtZW50LCBXVEZNb3ZlKHBhc3NlZERv
Y3VtZW50KSk7CisgICAgICAgIHdyYXBwZXIgPSBjcmVhdGVXcmFwcGVyPEhUTUxEb2N1bWVudD4o
Jmdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXNzZWREb2N1bWVudCkpOwogICAgIGVsc2UgaWYgKGRv
Y3VtZW50LmlzWE1MRG9jdW1lbnQoKSkKLSAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUigmZ2xvYmFsT2JqZWN0LCBYTUxEb2N1bWVudCwgV1RGTW92ZShwYXNzZWREb2N1bWVudCkp
OworICAgICAgICB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxYTUxEb2N1bWVudD4oJmdsb2JhbE9i
amVjdCwgV1RGTW92ZShwYXNzZWREb2N1bWVudCkpOwogICAgIGVsc2UKLSAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUigmZ2xvYmFsT2JqZWN0LCBEb2N1bWVudCwgV1RGTW92ZShw
YXNzZWREb2N1bWVudCkpOworICAgICAgICB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxEb2N1bWVu
dD4oJmdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXNzZWREb2N1bWVudCkpOwogCiAgICAgcmVwb3J0
TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcyhzdGF0ZSwgZG9jdW1lbnQpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDgg
KzU1LDggQEAgSlNWYWx1ZSBKU0RvY3VtZW50RnJhZ21lbnQ6OmFwcGVuZChFeGVjUwogSlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGltcGwpCiB7CiAgICAgaWYgKGltcGwtPmlz
U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgU2hhZG93Um9vdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8SlNEb2N1bWVudEZyYWdtZW50PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTaGFkb3dSb290PihnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERvY3VtZW50RnJhZ21lbnQ+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEb2N1bWVudEZyYWdtZW50
JiBpbXBsKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyBKU1ZhbHVlIGNyZWF0ZU5ld0VsZW1lbnRXcmFwcGVyKEoKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUpTSFRNTFdyYXBwZXIoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SFRN
TEVsZW1lbnQ+KFdURk1vdmUoZWxlbWVudCkpKTsKICAgICBpZiAoaXM8U1ZHRWxlbWVudD4oZWxl
bWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVKU1NWR1dyYXBwZXIoZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHRWxlbWVudD4oV1RGTW92ZShlbGVtZW50KSkp
OwotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBFbGVtZW50LCBX
VEZNb3ZlKGVsZW1lbnQpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxFbGVtZW50PihnbG9i
YWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRWxlbWVudCYgZWxlbWVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBKU1ZhbHVlIEpTRXZlbnQ6OmNs
aXBib2FyZERhdGEoRXhlY1N0YXRlCiAKICNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZB
Q0UoaW50ZXJmYWNlTmFtZSkgXAogICAgIGNhc2UgaW50ZXJmYWNlTmFtZSMjSW50ZXJmYWNlVHlw
ZTogXAotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgaW50
ZXJmYWNlTmFtZSwgV1RGTW92ZShldmVudCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxpbnRlcmZhY2VOYW1lPihnbG9iYWxPYmplY3QsIFdURk1vdmUoZXZlbnQpKTsKIAogSlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZjxFdmVudD4mJiBldmVudCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAgICAgICBET01fRVZFTlRfSU5URVJG
QUNFU19GT1JfRUFDSChUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRSkKICAgICB9CiAKLSAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgRXZlbnQsIFdURk1vdmUoZXZl
bnQpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxFdmVudD4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGV2ZW50KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudCYgZXZlbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTCiAgICAgfQogCiAgICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKGJsb2JCdWlsZGVy
LmZpbmFsaXplKCksIGZpbGVuYW1lLCBub3JtYWxpemVkVHlwZSwgbGFzdE1vZGlmaWVkLnZhbHVl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGNvbnN0
cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgRmlsZSwgV1RGTW92ZShmaWxlKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlV3JhcHBlcjxGaWxlPihjb25zdHJ1Y3Rvci0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUoZmlsZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niwx
NiArNTYsMTYgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogewog
ICAgIHN3aXRjaCAoY29sbGVjdGlvbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBGb3JtQ29udHJvbHM6
Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiwgV1RGTW92ZShjb2xsZWN0aW9uKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoY29sbGVjdGlvbikpOwogICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxPcHRpb25zQ29sbGVj
dGlvbiwgV1RGTW92ZShjb2xsZWN0aW9uKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PEhUTUxPcHRpb25zQ29sbGVjdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGNvbGxlY3Rpb24p
KTsKICAgICBjYXNlIERvY0FsbDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9uLCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8SFRNTEFsbENvbGxlY3Rpb24+KGdsb2JhbE9iamVj
dCwgV1RGTW92ZShjb2xsZWN0aW9uKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEhUTUxD
b2xsZWN0aW9uLCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxIVE1MQ29sbGVjdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKIH0K
IAogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNp
b24gMjA1NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEhUTUxEb2N1bWVudD4mJiBwYXNz
ZWREb2N1bWVudCkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IHBhc3NlZERvY3VtZW50LmdldCgp
OwotICAgIEpTT2JqZWN0KiB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxKU0hUTUxEb2N1bWVudD4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHBhc3NlZERvY3VtZW50KSk7CisgICAgSlNPYmplY3QqIHdy
YXBwZXIgPSBjcmVhdGVXcmFwcGVyPEhUTUxEb2N1bWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHBhc3NlZERvY3VtZW50KSk7CiAKICAgICByZXBvcnRNZW1vcnlGb3JEb2N1bWVudElmRnJhbWVs
ZXNzKCpzdGF0ZSwgZG9jdW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkN1cnNvckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJDdXJzb3JDdXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDggKzU1LDggQEAgSlNWYWx1ZSBKU0lEQkN1cnNvcjo6c291cmNlKEV4ZWNTdGF0
ZSYgcwogSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiB7CiAgICAg
aWYgKGlzPElEQkN1cnNvcldpdGhWYWx1ZT4oY3Vyc29yKSkKLSAgICAgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIElEQkN1cnNvcldpdGhWYWx1ZSwgV1RGTW92ZShj
dXJzb3IpKTsKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxKU0lEQkN1cnNvcj4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGN1cnNvcikpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxJREJD
dXJzb3JXaXRoVmFsdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdXJzb3IpKTsKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxJREJDdXJzb3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdXJzb3Ip
KTsKIH0KIAogSlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSURCQ3Vyc29yJiBjdXJzb3IpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhKQogewogICAgIGF1
dG8qIGRhdGEgPSBpbWFnZURhdGEtPmRhdGEoKTsKLSAgICBhdXRvKiB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBXVEZNb3ZlKGltYWdlRGF0YSkp
OworICAgIGF1dG8qIHdyYXBwZXIgPSBjcmVhdGVXcmFwcGVyPEltYWdlRGF0YT4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltYWdlRGF0YSkpOwogICAgIElkZW50aWZpZXIgZGF0YU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiZGF0YSIpOwogICAgIHdyYXBwZXItPnB1dERpcmVj
dChzdGF0ZS0+dm0oKSwgZGF0YU5hbWUsIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgZGF0YSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJh
TWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDM3ICsyMjQsMzcgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFwcAogICAgICAgICAgICAgZWxzZSBpZiAoaXM8U1ZHRWxl
bWVudD4obm9kZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgd3JhcHBlciA9IGNyZWF0ZUpTU1ZH
V3JhcHBlcihnbG9iYWxPYmplY3QsIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdFbGVtZW50PihX
VEZNb3ZlKG5vZGUpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIEVsZW1lbnQsIFdURk1vdmUobm9k
ZSkpOworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBjcmVhdGVXcmFwcGVyPEVsZW1lbnQ+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBBdHRyLCBXVEZNb3ZlKG5vZGUpKTsKKyAgICAgICAg
ICAgIHdyYXBwZXIgPSBjcmVhdGVXcmFwcGVyPEF0dHI+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShu
b2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
VGV4dCwgV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICB3cmFwcGVyID0gY3JlYXRlV3JhcHBl
cjxUZXh0PihnbG9iYWxPYmplY3QsIFdURk1vdmUobm9kZSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIENEQVRBU2VjdGlvbiwgV1RG
TW92ZShub2RlKSk7CisgICAgICAgICAgICB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcjxDREFUQVNl
Y3Rpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLCBXVEZNb3ZlKG5vZGUpKTsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBjcmVh
dGVXcmFwcGVyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5v
ZGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9E
RToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0
LCBDb21tZW50LCBXVEZNb3ZlKG5vZGUpKTsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBjcmVhdGVX
cmFwcGVyPENvbW1lbnQ+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShub2RlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICAgICAg
Ly8gd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSB0aGUgZG9jdW1lbnQgaXRzZWxmIGluIHRoZSBwZXIt
ZG9jdW1lbnQgZGljdGlvbmFyeQogICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBkb3duY2FzdDxEb2N1bWVudD4obm9kZS5nZXQoKSkpOwogICAgICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBEb2N1bWVudFR5cGUsIFdURk1vdmUobm9kZSkpOworICAg
ICAgICAgICAgd3JhcHBlciA9IGNyZWF0ZVdyYXBwZXI8RG9jdW1lbnRUeXBlPihnbG9iYWxPYmpl
Y3QsIFdURk1vdmUobm9kZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgICAgIGlmIChub2RlLT5pc1NoYWRv
d1Jvb3QoKSkKLSAgICAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGds
b2JhbE9iamVjdCwgU2hhZG93Um9vdCwgV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICAgICAg
d3JhcHBlciA9IGNyZWF0ZVdyYXBwZXI8U2hhZG93Um9vdD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KG5vZGUpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgRG9jdW1lbnRGcmFnbWVudCwgV1RGTW92ZShu
b2RlKSk7CisgICAgICAgICAgICAgICAgd3JhcHBlciA9IGNyZWF0ZVdyYXBwZXI8RG9jdW1lbnRG
cmFnbWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5vZGUpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIE5vZGUsIFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgd3Jh
cHBlciA9IGNyZWF0ZVdyYXBwZXI8Tm9kZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5vZGUpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gd3JhcHBlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBKU0M6OkpTVmFsdWUgY3JlYXRlV3JhcHBlcihKU0RPTUds
b2JhbE9iCiAgICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5k
IHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4KICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1CiAgICAgZ2xvYmFsT2JqZWN0LnZt
KCkuaGVhcC5kZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkobm9kZUxpc3QtPm1lbW9yeUNvc3Qo
KSk7Ci0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8SlNOb2RlTGlzdD4oJmdsb2JhbE9iamVjdCwg
V1RGTW92ZShub2RlTGlzdCkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPE5vZGVMaXN0Pigm
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG5vZGVMaXN0KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxOb2RlTGlzdD4mJiBub2RlTGlzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcAkocmV2aXNpb24g
MjA1NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZUVudHJ5
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTcgKzUwLDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8UGVyZm9ybWFuY2VFbnRyeT4mJiBlbnRyeSkKIHsK
ICAgICBpZiAoaXM8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4oZW50cnkpKQotICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZywgV1RGTW92ZShlbnRyeSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxQ
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPihnbG9iYWxPYmplY3QsIFdURk1vdmUoZW50cnkpKTsK
IAogI2lmIEVOQUJMRShVU0VSX1RJTUlORykKICAgICBpZiAoaXM8UGVyZm9ybWFuY2VNYXJrPihl
bnRyeSkpCi0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBQ
ZXJmb3JtYW5jZU1hcmssIFdURk1vdmUoZW50cnkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdy
YXBwZXI8UGVyZm9ybWFuY2VNYXJrPihnbG9iYWxPYmplY3QsIFdURk1vdmUoZW50cnkpKTsKIAog
ICAgIGlmIChpczxQZXJmb3JtYW5jZU1lYXN1cmU+KGVudHJ5KSkKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFBlcmZvcm1hbmNlTWVhc3VyZSwgV1RGTW92
ZShlbnRyeSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxQZXJmb3JtYW5jZU1lYXN1
cmU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbnRyeSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxKU1BlcmZvcm1hbmNlRW50cnk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShl
bnRyeSkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFBlcmZvcm1hbmNlRW50cnk+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShlbnRyeSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQZXJmb3JtYW5jZUVu
dHJ5JiBlbnRyeSkKQEAgLTY5LDQgKzY5LDUgQEAgSlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNETwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1RJTUlORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
UGF0aFNlZ0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1NDIxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNDYgKzYzLDQ2IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBK
U0QKIHsKICAgICBzd2l0Y2ggKG9iamVjdC0+cGF0aFNlZ1R5cGUoKSkgewogICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19DTE9TRVBBVEg6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ2xvc2VQYXRoLCBXVEZNb3ZlKG9iamVjdCkp
OworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdQYXRoU2VnQ2xvc2VQYXRoPihnbG9i
YWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VH
X01PVkVUT19BQlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBTVkdQYXRoU2VnTW92ZXRvQWJzLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxTVkdQYXRoU2VnTW92ZXRvQWJzPihnbG9iYWxPYmplY3QsIFdURk1v
dmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19SRUw6Ci0g
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2Vn
TW92ZXRvUmVsLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxTVkdQYXRoU2VnTW92ZXRvUmVsPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAg
ICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19BQlM6Ci0gICAgICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvQWJzLCBXVEZN
b3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdQYXRoU2VnTGlu
ZXRvQWJzPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRo
U2VnOjpQQVRIU0VHX0xJTkVUT19SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvUmVsLCBXVEZNb3ZlKG9iamVjdCkpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdQYXRoU2VnTGluZXRvUmVsPihnbG9iYWxP
YmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NV
UlZFVE9fQ1VCSUNfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicywgV1RGTW92ZShvYmplY3QpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNF
R19DVVJWRVRPX0NVQklDX1JFTDoKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihn
bG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwsIFdURk1vdmUob2JqZWN0KSk7
CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMsIFdURk1v
dmUob2JqZWN0KSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljQWJzPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTDoKLSAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljUmVsLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9i
amVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19BUkNfQUJTOgotICAgICAgICBy
ZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY0Ficywg
V1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNl
Z0FyY0Ficz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0
aFNlZzo6UEFUSFNFR19BUkNfUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVS
KGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0FyY1JlbCwgV1RGTW92ZShvYmplY3QpKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNlZ0FyY1JlbD4oZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fSE9S
SVpPTlRBTF9BQlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2Jq
ZWN0LCBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicywgV1RGTW92ZShvYmplY3QpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnM+
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwsIFdURk1v
dmUob2JqZWN0KSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFNWR1BhdGhTZWdMaW5l
dG9Ib3Jpem9udGFsUmVsPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM6Ci0gICAgICAgIHJldHVy
biBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxBYnMsIFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFNW
R1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkp
OwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMOgotICAg
ICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgU1ZHUGF0aFNlZ0xp
bmV0b1ZlcnRpY2FsUmVsLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWw+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19T
TU9PVEhfQUJTOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVj
dCwgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywgV1RGTW92ZShvYmplY3QpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFi
cz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6
UEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUw6Ci0gICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVs
LCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoUmVsPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7
CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9B
QlM6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicywgV1RGTW92ZShvYmplY3QpKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhB
YnM+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShvYmplY3QpKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6
OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTDoKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoUmVsLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKG9iamVjdCkpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19VTktOT1dOOgogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0
LCBTVkdQYXRoU2VnLCBXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxTVkdQYXRoU2VnPihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgfQog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDgg
QEAgdm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcgogSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8U3R5bGVTaGVldD4mJiBzdHlsZVNoZWV0KQogewogICAgIGlmIChzdHls
ZVNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JB
UFBFUihnbG9iYWxPYmplY3QsIENTU1N0eWxlU2hlZXQsIFdURk1vdmUoc3R5bGVTaGVldCkpOwot
ICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBTdHlsZVNoZWV0LCBX
VEZNb3ZlKHN0eWxlU2hlZXQpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTU3R5
bGVTaGVldD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0eWxlU2hlZXQpKTsKKyAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxTdHlsZVNoZWV0PihnbG9iYWxPYmplY3QsIFdURk1vdmUoc3R5bGVTaGVl
dCkpOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQmIHN0eWxlc2hlZXQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGV4dD4mJiB0ZXh0KQogewogICAgIGlmIChpczxDREFUQVNlY3Rpb24+
KHRleHQuZ2V0KCkpKQotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9i
amVjdCwgQ0RBVEFTZWN0aW9uLCBXVEZNb3ZlKHRleHQpKTsKLSAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgVGV4dCwgV1RGTW92ZSh0ZXh0KSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVXcmFwcGVyPENEQVRBU2VjdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRl
eHQpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXh0PihnbG9iYWxPYmplY3QsIFdURk1v
dmUodGV4dCkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dCYgdGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTAgKzY0LDEwIEBAIEpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChFeGVjU3RhdGUqLCBKU0QKICAgICAvLyBUaGlzIHN3aXRjaCB3aWxsIG1ha2Ug
bW9yZSBzZW5zZSBvbmNlIHdlIHN1cHBvcnQgRGF0YUN1ZQogICAgIHN3aXRjaCAoY3VlLT5jdWVU
eXBlKCkpIHsKICAgICBjYXNlIFRleHRUcmFja0N1ZTo6RGF0YToKLSAgICAgICAgcmV0dXJuIENS
RUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsIERhdGFDdWUsIFdURk1vdmUoY3VlKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPERhdGFDdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShjdWUpKTsKICAgICBjYXNlIFRleHRUcmFja0N1ZTo6V2ViVlRUOgogICAgIGNhc2UgVGV4dFRy
YWNrQ3VlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2Jh
bE9iamVjdCwgVlRUQ3VlLCBXVEZNb3ZlKGN1ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxWVFRDdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdWUpKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDU0MjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDkgQEAgSlNDOjpKU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjUwogewogI2lmIEVOQUJMRShXRUJHTDIpCiAgICAg
aWYgKGlzPFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ+KG9iamVjdCkpCi0gICAgICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LCBX
VEZNb3ZlKG9iamVjdCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0PihnbG9iYWxPYmplY3QsIFdURk1vdmUob2JqZWN0KSk7CiAjZW5kaWYKLSAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgV2ViR0xSZW5kZXJpbmdD
b250ZXh0LCBXVEZNb3ZlKG9iamVjdCkpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKG9iamVjdCkpOwogfQogCiBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgb2JqZWN0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCShy
ZXZpc2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5l
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlX2gKIAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxEb2N1bWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU1ZhbHVl
IHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFhNTERvY3VtZW50PiYmIHBhc3NlZERvY3VtZW50KQorSlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxYTUxEb2N1bWVudD4mJiBkb2N1bWVudCkKIHsKLSAgICByZXBvcnRNZW1v
cnlGb3JEb2N1bWVudElmRnJhbWVsZXNzKCpzdGF0ZSwgcGFzc2VkRG9jdW1lbnQuZ2V0KCkpOwor
ICAgIHJlcG9ydE1lbW9yeUZvckRvY3VtZW50SWZGcmFtZWxlc3MoKnN0YXRlLCBkb2N1bWVudC5n
ZXQoKSk7CiAKLSAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgWE1M
RG9jdW1lbnQsIFdURk1vdmUocGFzc2VkRG9jdW1lbnQpKTsKKyAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxYTUxEb2N1bWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRvY3VtZW50KSk7CiB9CiAK
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBYTUxEb2N1bWVudCYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA1NDIx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHdvcmtpbmcgY29weSkKQEAgLTE1ODIsNiArMTU4MiwxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImJvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1J
bml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiwgSlNEaWN0aW9uYXJ5Jik7XG5cbiIpOwogICAgIH0K
IAorICAgIGlmIChOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MoJGludGVyZmFjZSkpIHsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgInRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNv
bnZlcnRlclRyYWl0czwke2ltcGxUeXBlfT4ge1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gJHtjbGFzc05hbWV9O1xuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuIik7CisgICAgfQorCiAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGludGVyZmFjZSk7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxufSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZVxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0zNzA4LDcgKzM3
MTQsNyBAQCBFTkQKICAgICBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZChpbXBsLT5tZW1vcnlDb3N0KCkpOwogRU5ECiAKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8JGNsYXNzTmFtZSwgJGltcGxUeXBl
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPCRpbXBsVHlwZT4oZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsICRpbXBs
VHlwZSYgaW1wbClcbiIpOwpAQCAtNTI5OCw3ICs1MzA0LDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgIH0KIAogICAgIFJlZjwke2ludGVyZmFjZU5hbWV9
PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZUZvckJpbmRpbmdzKGV2ZW50VHlwZSwg
ZXZlbnRJbml0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBF
Uihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfSwgV1RGTW92
ZShldmVudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVdyYXBwZXI8JHtp
bnRlcmZhY2VOYW1lfT4oanNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUoZXZl
bnQpKSk7CiB9CiAKIGJvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KCR7aW50ZXJmYWNlTmFt
ZX1Jbml0JiBldmVudEluaXQsIEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAyMDU0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtMTE3Myw4ICsxMTczLDggQEAgc3Vi
IHByaW50V3JhcHBlckZ1bmN0aW9ucwogc3RhdGljIEpTRE9NT2JqZWN0KiBjcmVhdGUke0pTSW50
ZXJmYWNlTmFtZX1XcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4mJiBlbGVtZW50KQogewogICAgIGlmIChlbGVt
ZW50LT5pcyRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oKSkKLSAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJze2ZhbGxiYWNr
SW50ZXJmYWNlTmFtZX0sIFdURk1vdmUoZWxlbWVudCkpOwotICAgIHJldHVybiBDUkVBVEVfRE9N
X1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCAke0pTSW50ZXJmYWNlTmFtZX0sIFdURk1vdmUoZWxlbWVu
dCkpOworICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjwkcGFyYW1ldGVyc3tmYWxsYmFja0lu
dGVyZmFjZU5hbWV9PihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOworICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPCR7SlNJbnRlcmZhY2VOYW1lfT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGVsZW1lbnQpKTsKIH0KIAogRU5ECkBAIC0xMTg0LDggKzExODQsOCBAQCBFTkQKIHN0YXRpYyBK
U0RPTU9iamVjdCogY3JlYXRlJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtpbnRlcmZhY2VOYW1lfVdy
YXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50PiYmIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQtPmlzJHBhcmFt
ZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfSgpKQotICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1l
fSwgV1RGTW92ZShlbGVtZW50KSk7Ci0gICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9i
YWxPYmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwgV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyPCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0+
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50KSk7CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8JHtKU0ludGVyZmFjZU5hbWV9PihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwog
fQogCiBFTkQKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAgc3RhdGljIEpTRE9NT2JqZWN0KiBjcmVh
dGUke0pTSW50ZXJmYWNlTgogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVDb25kaXRpb25hbH1FbmFibGVkKCkpIHsKICAgICAgICAg
QVNTRVJUKGVsZW1lbnQtPmlzJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfSgpKTsK
LSAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsICRwYXJhbWV0
ZXJze2ZhbGxiYWNrSlNJbnRlcmZhY2VOYW1lfSwgV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyPCRwYXJhbWV0ZXJze2ZhbGxiYWNrSlNJbnRlcmZhY2VOYW1l
fT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Q1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwgJHtKU0ludGVyZmFjZU5hbWV9LCBXVEZN
b3ZlKGVsZW1lbnQpKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjwke0pTSW50ZXJmYWNlTmFt
ZX0+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50KSk7CiB9CiBFTkQKICAgICA7CkBAIC0x
MjA4LDcgKzEyMDgsNyBAQCBFTkQKICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIHN0YXRpYyBK
U0RPTU9iamVjdCogY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+JiYg
ZWxlbWVudCkKIHsKLSAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGdsb2JhbE9iamVjdCwg
JHtKU0ludGVyZmFjZU5hbWV9LCBXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjwke0pTSW50ZXJmYWNlTmFtZX0+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50
KSk7CiB9CiAKIEVORApAQCAtMTMyNCwxNCArMTMyNCwxNCBAQCBFTkQKICAgICAgICAgcHJpbnQg
RiA8PEVORAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgaWYgKGVsZW1lbnQtPmlz
Q3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIENSRUFURV9E
T01fV1JBUFBFUihnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJze2N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2VOYW1lfSwgV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PCRwYXJhbWV0ZXJze2N1c3RvbUVsZW1lbnRJbnRlcmZhY2VOYW1lfT4oZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGVsZW1lbnQpKTsKICNlbmRpZgogRU5ECiA7CiAgICAgfQogCiAgICAgcHJpbnQgRiA8
PEVORAotICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZ2xvYmFsT2JqZWN0LCAkcGFyYW1l
dGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFtZX0sIFdURk1vdmUoZWxlbWVudCkpOworICAgIHJl
dHVybiBjcmVhdGVXcmFwcGVyPCRwYXJhbWV0ZXJze2ZhbGxiYWNrSlNJbnRlcmZhY2VOYW1lfT4o
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="311326"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>