<?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>93226</bug_id>
          
          <creation_ts>2012-08-05 23:08:01 -0700</creation_ts>
          <short_desc>[V8] Replace throwError(ExceptionCode, Isolate*) with setDOMException(ExceptionCode, Isolate*) in v8/* and v8/custom/*</short_desc>
          <delta_ts>2012-08-07 22:06:52 -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>WebCore JavaScript</component>
          <version>528+ (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>
          
          <blocked>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687773</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 23:08:01 -0700</bug_when>
    <thetext>Now throwError(ExceptionCode, Isolate*) is equivalent to setDOMException(ExceptionCode, Isolate*). We can replace the former with the latter. After this replacement, the rule becomes simple and sane: &quot;Use throwError() for throwing JavaScript errors, use setDOMException() for throwing DOM exceptions&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687779</commentid>
    <comment_count>1</comment_count>
      <attachid>156600</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 23:13:42 -0700</bug_when>
    <thetext>Created attachment 156600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687787</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 23:20:07 -0700</bug_when>
    <thetext>I couldn&apos;t replace throwError(ExceptionCode) with setDOMException(ExceptionCode, Isolate*) in V8Utilities::extractTransferables(), because extractTransferables() does not know an Isolate. I will upload follow-up patches to pass an Isolate to Dictionary, and then to extractTransferables().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689471</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:20:44 -0700</bug_when>
    <thetext>I&apos;m not sure I understand the goal here.  I thought we were getting rid of V8Proxy?  Isn&apos;t throwError the function name used in the JSC bindings?  Don&apos;t we want to continue making the two codebases more similar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689493</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 15:31:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I thought we were getting rid of V8Proxy?

Yes. I am removing unnecessary V8Proxy methods for that goal.

&gt; Isn&apos;t throwError the function name used in the JSC bindings?  Don&apos;t we want to continue making the two codebases more similar?

V8Proxy::throwError(ErrorType, const char* message, Isolate*) still exists, and only this throwError() should exist (i.e. throwError(ExceptionCode, Isolate*) should be gone away).

Currently, DOM exceptions are thrown sometimes by throwError(ExceptionCode, Isolate*) and sometimes by setDOMException(ExceptionCode), which is inconsistent. By replacing throwError(ExceptionCode, Isolate*) with setDOMException(ExceptionCode, Isolate*), the code becomes consistent. In other words, we can use throwError(ErrorType, const char* message, Isolate*) for throwing JavaScript errors and use setDOMException(ExceptionCode, Isolate*) for throwing DOM exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689606</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 16:47:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Isn&apos;t throwError the function name used in the JSC bindings?  Don&apos;t we want to continue making the two codebases more similar?
&gt;
&gt;  we can use throwError(ErrorType, const char* message, Isolate*) for throwing JavaScript errors and use setDOMException(ExceptionCode, Isolate*) for throwing DOM exceptions.

And I would point out that JSC already follows the rule; i.e. throwError() for JavaScript errors and setDOMException() for DOM exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689854</commentid>
    <comment_count>6</comment_count>
      <attachid>156600</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 21:42:25 -0700</bug_when>
    <thetext>Comment on attachment 156600
Patch

Are we going to remove throwError(ExceptionCode?)  Is that the next patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689858</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 21:44:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 156600 [details])
&gt; Are we going to remove throwError(ExceptionCode?)  Is that the next patch?

Will be in the next of the next patch:) There is a subtle issue around Isolate and I need to solve it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689873</commentid>
    <comment_count>8</comment_count>
      <attachid>156600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 22:06:48 -0700</bug_when>
    <thetext>Comment on attachment 156600
Patch

Clearing flags on attachment: 156600

Committed r124985: &lt;http://trac.webkit.org/changeset/124985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689874</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 22:06:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156600</attachid>
            <date>2012-08-05 23:13:42 -0700</date>
            <delta_ts>2012-08-07 22:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93226-20120806151318.patch</filename>
            <type>text/plain</type>
            <size>27868</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRkNWZhMDE4ODQ5NDhl
MjgyM2NiMjhlMjQxYjZhNDVhODM0NDY4OS4uNWNlNjUzNWU3ZDQwZDU5YmM4OTVhMjE3Yjc2ZDIw
MWVhNWU2ZjJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
dGhyb3dFcnJvcihFeGNlcHRpb25Db2RlLCBJc29sYXRlKikgd2l0aCBzZXRET01FeGNlcHRpb24o
RXhjZXB0aW9uQ29kZSwgSXNvbGF0ZSopIGluIHY4LyogYW5kIHY4L2N1c3RvbS8qCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzIyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aHJvd0Vycm9yKEV4
Y2VwdGlvbkNvZGUsIElzb2xhdGUqKSBpcyBlcXVpdmFsZW50IHRvCisgICAgICAgIHNldERPTUV4
Y2VwdGlvbihFeGNlcHRpb25Db2RlLCBJc29sYXRlKikuIFdlIGNhbiByZXBsYWNlIHRoZSBmb3Jt
ZXIgd2l0aAorICAgICAgICB0aGUgbGF0dGVyLiBBZnRlciB0aGlzIHJlcGxhY2VtZW50LCB0aGUg
cnVsZSBiZWNvbWVzIHNpbXBsZSBhbmQgc2FuZToKKyAgICAgICAgIlVzZSB0aHJvd0Vycm9yKCkg
Zm9yIHRocm93aW5nIEphdmFTY3JpcHQgZXJyb3JzLCB1c2Ugc2V0RE9NRXhjZXB0aW9uKCkKKyAg
ICAgICAgZm9yIHRocm93aW5nIERPTSBleGNlcHRpb25zIi4KKworICAgICAgICBObyB0ZXN0cy4g
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEF1
ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlTZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eVNldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEaXJl
Y3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhE
aXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERvY3VtZW50
OjpldmFsdWF0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0
b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cHVzaFN0YXRlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmljYXRp
b25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3Jl
YXRlTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhOb3RpZmljYXRp
b25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4U1FMVHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU3FsQ2FsbGJhY2spOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3RvcmFnZVNldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
U29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViU29ja2V0OjpzZW5kQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHRBY2Nlc3NvckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKToKKwogMjAxMi0w
OC0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qg
cmV1c2UgY2FjaGVkIHN0eWxlc2hlZXQgd2l0aCBmYWlsZWQgb3IgY2FuY2VsZWQgcmVzb3VyY2Ug
bG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IDlmMWUzMjk4ZjBkMTI1NzFmMzczZjcyOTdjNDJkZTI1ZDJkYzE1
YmMuLjE5OTQyNDU4MzVjYTE1ZDJiYTM4OGRiYTg2NjU3ZGIxNjUwMmVkOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMjIyMSw3ICsyMjIxLDcgQEAgUGFzc093blB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHUKIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy5zaXplKCk7IGkrKykgewogICAgICAgICBp
ZiAoYXJyYXlCdWZmZXJzW2ldLT5pc05ldXRlcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93RXJy
b3IoSU5WQUxJRF9TVEFURV9FUlIsIGlzb2xhdGUpOworICAgICAgICAgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKElOVkFMSURfU1RBVEVfRVJSLCBpc29sYXRlKTsKICAgICAgICAgICAgIGRp
ZFRocm93ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBA
IC0yMjM5LDcgKzIyMzksNyBAQCBQYXNzT3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdQogCiAgICAgICAgIGJv
b2wgcmVzdWx0ID0gYXJyYXlCdWZmZXJzW2ldLT50cmFuc2Zlcihjb250ZW50cy0+YXQoaSksIG5l
dXRlcmVkVmlld3MpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgdGhyb3dF
cnJvcihJTlZBTElEX1NUQVRFX0VSUiwgaXNvbGF0ZSk7CisgICAgICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oSU5WQUxJRF9TVEFURV9FUlIsIGlzb2xhdGUpOwogICAgICAgICAgICAg
ZGlkVGhyb3cgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
QEAgLTIyNzcsMTEgKzIyNzcsMTEgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLAogICAgICAgICAvLyBJZiB0
aGVyZSB3YXMgYW4gaW5wdXQgZXJyb3IsIHRocm93IGEgbmV3IGV4Y2VwdGlvbiBvdXRzaWRlCiAg
ICAgICAgIC8vIG9mIHRoZSBUcnlDYXRjaCBzY29wZS4KICAgICAgICAgZGlkVGhyb3cgPSB0cnVl
OwotICAgICAgICB0aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSLCBpc29sYXRlKTsKKyAgICAgICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKERBVEFfQ0xPTkVfRVJSLCBpc29sYXRlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgU2VyaWFsaXplcjo6SW52YWxpZFN0YXRlRXJyb3I6CiAgICAg
ICAgIGRpZFRocm93ID0gdHJ1ZTsKLSAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX1NUQVRFX0VS
UiwgaXNvbGF0ZSk7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihJTlZBTElEX1NU
QVRFX0VSUiwgaXNvbGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNlcmlhbGl6ZXI6
OkpTRmFpbHVyZToKICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZmFpbHVyZSAoYnV0IG5v
IGV4Y2VwdGlvbiksIHRoZXJlJ3Mgbm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCA1ZmQ4MTJl
MzI3M2UwYjlmZGJlYzJlZTY3Y2MwYjYzOTkzYzU5ZjA5Li4yZWU4MWViMjcwNGYwZDZkZmNmOGE3
YjRmZTc5YmFlZTkwNTYzNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgICAgIGF1ZGlvQ29udGV4dCA9IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBl
Yyk7CiAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghYXVkaW9Db250ZXh0
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6
U3ludGF4RXJyb3IsICJhdWRpbyByZXNvdXJjZXMgdW5hdmFpbGFibGUgZm9yIEF1ZGlvQ29udGV4
dCBjb25zdHJ1Y3Rpb24iLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfSBlbHNlIHsKQEAgLTkx
LDcgKzkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgICAgIGF1ZGlvQ29udGV4dCA9IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2Zm
bGluZUNvbnRleHQoZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBz
YW1wbGVSYXRlLCBlYyk7CiAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogCiAgICAg
aWYgKCFhdWRpb0NvbnRleHQuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CmluZGV4IGFmMjM3NWY3Yzc2MTgwNzhkMGZkN2UwZDY2NDYyYjc5Y2E0MmY2ZGUuLmE5MmI5Yzdj
YTFiMmQ0YTYwZmY4YjdiYTNjZGIxNzdkNDFmMTIyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b20uY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eVNldHRlcih2ODo6TG9jYWw8djg6OlMK
ICAgICBpbXAtPnNldFByb3BlcnR5SW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
cHJvcEluZm8tPnByb3BJRCksIHByb3BlcnR5VmFsdWUsIGZhbHNlLCBlYyk7CiAKICAgICBpZiAo
ZWMpCi0gICAgICAgIHRocm93RXJyb3IoZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAg
VjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01TdHJpbmdNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAppbmRleCA1ZDQzZDQwNzBkNGY0NjA3
NzM4MjE2NDcyYzVkOGU4OGFlMzgwNTM5Li4xMTM0Y2NjMmQ3NGQzNWQ0MmY4NDkxNjRmZTZjYWRh
NzkxM2Y1YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFY4RE9NU3Ry
aW5nTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKS0+c2V0SXRlbSh0b1dlYkNvcmVTdHJpbmco
bmFtZSksIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVy
biBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDhmYTI4MDhlNzM4YjAxYTEzNWU5
ZGM5YzAyN2ZiZGJjMTJkMjJkNmIuLmI0OTBiMmI5OGI5ZGIzMzQ4YjllNzE4NWE3NmU3OTdiNTJi
MzU4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3aW5kb3ctPnBvc3RN
ZXNzYWdlKG1lc3NhZ2UucmVsZWFzZSgpLCAmcG9ydEFycmF5LCB0YXJnZXRPcmlnaW4sIHNvdXJj
ZSwgZWMpOwotICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggNzZkMTZhNGNkZWZiOWZmMTBmMmQyMzY4ZTBhMDBiOTcxNWJm
NjI3ZC4uMDk1YzBmMjM4NGYxZTQyZjNmYWM5NTFmNWMxMDYyNmIyOTNiZWEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYW5kbGVQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3b3JrZXJDb250ZXh0LT5wb3N0TWVzc2FnZShtZXNz
YWdlLnJlbGVhc2UoKSwgJnBvcnRzLCBlYyk7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGlj
YXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAppbmRleCA2ZmU1MjQyNGY1MGY3NjM0YjQw
ZjhmNGU1ZGJmMjQ4ZmQyZjNkNGM1Li5mOGI5NGY1ZWUxZGU0MWVmMTdhYjJmYjFjZjZkNjMwYTQy
YzBlNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
aXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCkBAIC03NiwxMyArNzYsMTMgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMiAmJiAhYXJnc1syXS0+SXNOdWxsKCkg
JiYgIWFyZ3NbMl0tPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgaWYgKCFhcmdzWzJdLT5Jc09i
amVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01F
eGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrID0gVjhFbnRyeUNhbGxiYWNrOjpjcmVhdGUoYXJnc1syXSwgZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICB9CiAgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzICYmICFhcmdzWzNdLT5J
c051bGwoKSAmJiAhYXJnc1szXS0+SXNVbmRlZmluZWQoKSkgewogICAgICAgICBpZiAoIWFyZ3Nb
M10tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01B
VENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgICAgICBlcnJvckNhbGxiYWNrID0gVjhFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwg
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICB9CiAgICAgaW1wLT5nZXREaXJlY3Rv
cnkocGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkBAIC0xMjAs
MTMgKzEyMCwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0
RmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIFJlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYmICFh
cmdzWzJdLT5Jc051bGwoKSAmJiAhYXJnc1syXS0+SXNVbmRlZmluZWQoKSkgewogICAgICAgICBp
ZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihU
WVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJu
IFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29s
YXRlKCkpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPSBWOEVudHJ5Q2FsbGJhY2s6OmNyZWF0
ZShhcmdzWzJdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KICAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+
IDMgJiYgIWFyZ3NbM10tPklzTnVsbCgpICYmICFhcmdzWzNdLT5Jc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIGlmICghYXJnc1szXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAgICAgICAgIGVycm9yQ2FsbGJhY2sgPSBWOEVycm9yQ2FsbGJhY2s6
OmNyZWF0ZShhcmdzWzNdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KICAg
ICBpbXAtPmdldEZpbGUocGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1
bWVudEN1c3RvbS5jcHAKaW5kZXggOTExMmYxN2NiYWJmNWM3MTcxNzI0MjRhYTM4M2U3ODM4NDhj
ZGZmMi4uZGQ2ZDk3OWIwZTFmN2QyMDk0YjEzZGI1NTE5NTMwN2U4MzhiYTExOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9t
LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6
ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiAgICAgUmVmUHRy
PFhQYXRoTlNSZXNvbHZlcj4gcmVzb2x2ZXIgPSBWOERPTVdyYXBwZXI6OmdldFhQYXRoTlNSZXNv
bHZlcihhcmdzWzJdKTsKICAgICBpZiAoIXJlc29sdmVyICYmICFhcmdzWzJdLT5Jc051bGwoKSAm
JiAhYXJnc1syXS0+SXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQ
RV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkp
OwogCiAgICAgaW50IHR5cGUgPSB0b0ludDMyKGFyZ3NbM10pOwogICAgIFJlZlB0cjxYUGF0aFJl
c3VsdD4gaW5SZXN1bHQ7CkBAIC05MCw3ICs5MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgcmV0dXJuIHRvVjgocmVz
dWx0LnJlbGVhc2UoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAppbmRleCAyZjRk
NjZlZjllY2YxMmY4ZDBlNmE0MDU0NzcxMmY3ZWQ3YTM2NjI5Li5jZjFkYTc2MjcwNDA1YTBhMWY5
NzhmNWRjODAyNjFjNGIxMTZiYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApAQCAtODEsNyArODEsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIEhpc3RvcnkqIGhpc3RvcnkgPSBWOEhpc3Rvcnk6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGhpc3RvcnktPnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9y
eVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RQdXNoLCBl
Yyk7CiAgICAgYXJncy5Ib2xkZXIoKS0+RGVsZXRlSGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0
eU5hbWU6OnN0YXRlKCkpOwotICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpyZXBsYWNl
U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTA2LDcgKzEwNiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgSGlzdG9yeSogaGlzdG9yeSA9IFY4SGlz
dG9yeTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaGlzdG9yeS0+c3RhdGVPYmplY3RB
ZGRlZChoaXN0b3J5U3RhdGUucmVsZWFzZSgpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9i
amVjdFJlcGxhY2UsIGVjKTsKICAgICBhcmdzLkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1ZShW
OEhpZGRlblByb3BlcnR5TmFtZTo6c3RhdGUoKSk7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9u
KGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIGJvb2wgVjhIaXN0b3J5OjppbmRleGVkU2Vj
dXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4
OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDc5ZDRkMjRmZGZiZWM3NGMyYTk5ZGE4MGViMzM1MzQ2YzA2ZDkyZGUuLmIyNzZlYzYy
ZDMwNGJlYTFjZDIzZjBmMGQzOWFlMjMzYmI2ZDRkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8SW50ZW50PiBpbXBsID0gSW50ZW50OjpjcmVhdGUo
U2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgb3B0aW9ucywgZWMpOwogICAgICAgICBpZiAoZWMpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYywgYXJncy5HZXRJc29sYXRlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29s
YXRlKCkpOwogCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3Mu
SG9sZGVyKCk7CiAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAm
aW5mbywgaW1wbC5nZXQoKSk7CkBAIC04MSwxMSArODEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAgICAgYm9vbCBkYXRhRGlkVGhyb3cgPSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1sy
XSwgJm1lc3NhZ2VQb3J0QXJyYXlUcmFuc2Zlckxpc3QsICZhcnJheUJ1ZmZlckFycmF5VHJhbnNm
ZXJMaXN0LCBkYXRhRGlkVGhyb3cpOwogICAgIGlmIChkYXRhRGlkVGhyb3cpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKERBVEFfQ0xPTkVfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oREFUQV9DTE9ORV9FUlIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgIFJlZlB0cjxJbnRlbnQ+IGltcGwgPSBJbnRlbnQ6OmNyZWF0
ZShhY3Rpb24sIHR5cGUsIGRhdGEsIG1lc3NhZ2VQb3J0QXJyYXlUcmFuc2Zlckxpc3QsIGVjKTsK
ICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFy
Z3MuSG9sZGVyKCk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZp
bmZvLCBpbXBsLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCA1MjNjYjdjNjQ3MjVjMjBl
OWJiODAyOTNhN2Y2ZWI3Y2ZhYTA2NzFhLi4xNDU5ZDFmMDY0MTUwOTliZmJhYTg0MWM1MjU5OWYz
MDJiYjg4ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbWVzc2FnZVBvcnQtPnBvc3RNZXNzYWdlKG1lc3NhZ2Uu
cmVsZWFzZSgpLCAmcG9ydEFycmF5LCBlYyk7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3Nh
Z2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IGRmNDhhMTI2MjAzYjA0NDNmMWUxNWJjZTdm
M2QzNjgzOWIwN2U5YjkuLjQ3NWQ1MDE4OTJjMDc2MGI1NDY5MWZhMmY1Y2ExNzBlNGMwNjIwODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50CiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBd
OwogICAgIGlmICghYXJnLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihU
WVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUo
KSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJD
dXN0b20uY3BwCmluZGV4IGU1YjFlY2RkN2M5NTc2OTQ2OTYwZTA2ZmMyNzNlMWQyNmZlNGQ2MDMu
LjE4OTBmMWUzNGM5MmEyN2JkYTQwMzIyYzM4ZmJjMDAxMGFkNjgwMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0
aW9uQ2VudGVyQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmljYXRpb25DYWxsYmFjayhj
b25zdAogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlv
bkNlbnRlci0+Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbih1cmwsIGVjKTsKIAogICAgIGlmIChlYykK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwogCiAgICAgbm90aWZpY2F0aW9uLT5yZWYoKTsKICAgICByZXR1cm4gdG9WOChub3RpZmljYXRp
b24uZ2V0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTcyLDcgKzcyLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb25DYWxs
YmFjayhjb25zdCB2ODoKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBu
b3RpZmljYXRpb25DZW50ZXItPmNyZWF0ZU5vdGlmaWNhdGlvbih0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMl0p
LCBlYyk7CiAKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIG5vdGlmaWNhdGlvbi0+cmVmKCk7CiAgICAg
cmV0dXJuIHRvVjgobm90aWZpY2F0aW9uLmdldCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04
NiwxMSArODYsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uQ2VudGVy
OjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjoKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBpcyB2YWxpZC4KICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKElOVkFMSURfU1RBVEVfRVJSLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oSU5W
QUxJRF9TVEFURV9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIC8vIFJlcXVlc3Rpbmcg
cGVybWlzc2lvbiBpcyBvbmx5IHZhbGlkIGZyb20gYSBwYWdlIGNvbnRleHQuCiAgICAgaWYgKGNv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihOT1Rf
U1VQUE9SVEVEX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKE5PVF9TVVBQT1JURURfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAKICAgICBSZWZQdHI8VjhDdXN0b21Wb2lkQ2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IGU3OWY5Mzdk
NmIzYWUzNDIzNTIxNmNhNTAzNDZiNGU5NmYxMDJlNDYuLmIzMzllYjkzZDkxODIyY2IwOTk2ODc0
ZGFhODg4ZTRjMWQxMDdkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIElOQ19TVEFUUygiRE9NLlNRTFRyYW5z
YWN0aW9uLmV4ZWN1dGVTcWwoKSIpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoU1lOVEFYX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwor
ICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxP
Q0soVjhQYXJhbWV0ZXI8Piwgc3RhdGVtZW50LCBhcmdzWzBdKTsKIApAQCAtNjEsNyArNjEsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYg
IWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKSB7CiAgICAgICAgIGlmICghYXJnc1sxXS0+SXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJS
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAg
ICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9PYmplY3QoKTsKQEAgLTk3LDE0ICs5Nywx
NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxi
YWNrPiBjYWxsYmFjazsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDIgJiYgIWlzVW5kZWZpbmVk
T3JOdWxsKGFyZ3NbMl0pKSB7CiAgICAgICAgIGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZ
UEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGNhbGxiYWNrID0g
VjhTUUxTdGF0ZW1lbnRDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgIH0KIAogICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMyAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1szXSkpIHsKICAgICAgICAgaWYgKCFhcmdzWzNdLT5Jc09iamVjdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oVFlQ
RV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgZXJyb3JDYWxsYmFj
ayA9IFY4U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAK
aW5kZXggNjIyOTM3ZDZhZjU1ZTUxZWEwMTY0YzBkMzM2MDQ5MWYwY2FhOWEwMC4uYTRhZmZhODRl
MDU2ZjRmYjI1OGY3ZGUyZWQ1NjY4YjQ1NmE2YTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmND
dXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRy
YW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAg
SU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb25TeW5jLmV4ZWN1dGVTcWwoKSIpOwogCiAgICAg
aWYgKCFhcmdzLkxlbmd0aCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihTWU5UQVhfRVJS
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNl
cHRpb24oU1lOVEFYX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgU1RSSU5HX1RPX1Y4
UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdGF0ZW1lbnQsIGFyZ3Nb
MF0pOwogCkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5z
YWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKSB7CiAg
ICAgICAgIGlmICghYXJnc1sxXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgdWludDMyX3Qgc3FsQXJnc0xlbmd0aCA9IDA7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9P
YmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFN0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggODkzOTZhMzBjZjE5ZWU3NjI4YzE1NmE2YWQwMGU4NmYz
MzA2ZDIyNS4uNjE2ZjU1YWY4NzkxNTA4YWQ0MmE3MzM1NWYwYjQxMTEyNWFiNDMyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3Rv
bS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0
b3JhZ2VTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgdjg6OkxvYwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN0b3JhZ2UtPnNldEl0ZW0obmFtZSwgdmFsdWUsIGVj
KTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2OFZhbHVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAK
aW5kZXggMmQ4MzE4YzQ4MjZmNWM1NGYzMGQxMWI4MmQ5OTc0NDYxNGQxOTg2Yy4uMzQ5ZDk0NWNh
MmM4MTUwMWI4MWY0YzcwMDI2M2ZkZWIwZGEwZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xMDUs
NyArMTA1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRl
cigpLCAmaW5mbywgd2ViU29ja2V0LmdldCgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckFjdGl2ZURPTU9iamVjdCh3ZWJTb2NrZXQucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgICAgICByZXN1bHQgPSB3ZWJTb2NrZXQtPnNlbmQodG9XZWJD
b3JlU3RyaW5nKHN0cmluZ01lc3NhZ2UpLCBlYyk7CiAgICAgfQogICAgIGlmIChlYykKLSAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAg
ICAgcmV0dXJuIHY4Qm9vbGVhbihyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggN2UyN2Y2YzA1NmVhNzJlNWEwMThmMmFhM2NiOGJjNDYwZjEy
MDZhOC4uY2E3ZjM5ZmQ3MGNkYTc2OGQ0YjNiOTA3ZTg2NzAwMmRlNGI2NzA0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cwogICAgIHdvcmtlckNvbnRleHQtPmltcG9ydFNjcmlwdHModXJscywgZWMpOwogCiAgICAgaWYg
KGVjKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYywgYXJncy5HZXRJc29sYXRlKCkpOwor
ICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggZjQ0
YmY2N2IxNDVlYWQxZmFlNjA3NjQwZTJkMmEzNjZmZDU1MjhjNi4uYWQ4ZDhmOWU2ZjljMjM0MWM4
ZmIwYTBhNGYyYzE2MzNkMDE4MTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFuZGxlUG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd29ya2VyLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJl
bGVhc2UoKSwgJnBvcnRzLCBlYyk7Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZWMsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9z
dE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RD
dXN0b20uY3BwCmluZGV4IDVlNjRmYzJkMzU4MGNiYjE2OTkwYjE3MmJmZDk5YzgwNzZiM2ZiZjku
LjRiYjU3MDA0YzY0MmFlM2FkZjUzZTNiMmNkYjY1NGM4OTdiMTk0OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1M
SHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODoKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBjb25zdCBTdHJpbmcmIHRleHQgPSB4bWxIdHRw
UmVxdWVzdC0+cmVzcG9uc2VUZXh0KGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5
OjpzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gdjhT
dHJpbmcodGV4dCwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRo
b2QsIHVybCwgZWMpOwogCiAgICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
YywgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQpAQCAtMjAwLDcgKzIwMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0
dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICB9
CiAKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>