<?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>233609</bug_id>
          
          <creation_ts>2021-11-29 17:43:13 -0800</creation_ts>
          <short_desc>Store image resolution in layout test snapshots, and have ImageDiff read it</short_desc>
          <delta_ts>2021-11-30 10:05:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232525</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>gsnedders</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818558</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-29 17:43:13 -0800</bug_when>
    <thetext>Store image resolution in layout test snapshots, and have ImageDiff read it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818567</commentid>
    <comment_count>1</comment_count>
      <attachid>445369</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-29 17:50:14 -0800</bug_when>
    <thetext>Created attachment 445369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818577</commentid>
    <comment_count>2</comment_count>
      <attachid>445369</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-29 19:01:26 -0800</bug_when>
    <thetext>Comment on attachment 445369
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=445369&amp;action=review

&gt; Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp:67
&gt; +    float resolutionWidth = 72.0 * scaleFactor;
&gt; +    float resolutionHeight = 72.0 * scaleFactor;

Why convert double to float here instead of just using kCFNumberDoubleType?

&gt; Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp:69
&gt; +    auto resolutionWidthNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionWidth));
&gt; +    auto resolutionHeightNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionHeight));

Seems incorrect, but likely harmless, to use kCFNumberFloat32Type here instead of kCFNumberFloatType.

Better to just use doubles anyway, though.

&gt; Tools/ImageDiff/cg/PlatformImageCG.cpp:80
&gt; +    auto properties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nullptr);
&gt; +    if (properties) {

Could scope the variable to the if.

&gt; Tools/ImageDiff/cg/PlatformImageCG.cpp:85
&gt; +            if (CFNumberGetValue(resolutionXProperty, kCFNumberFloat32Type, &amp;resolutionX) &amp;&amp; CFNumberGetValue(resolutionYProperty, kCFNumberFloat32Type, &amp;resolutionY)) {

kCFNumberFloatType is correct here, but also, could use double

&gt; Tools/WebKitTestRunner/cg/TestInvocationCG.cpp:120
&gt; +    float resolutionWidth = 72.0 * imageSize.width / windowSize.width;
&gt; +    float resolutionHeight = 72.0 * imageSize.height / windowSize.height;
&gt; +    auto resolutionWidthNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionWidth));
&gt; +    auto resolutionHeightNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionHeight));

Same comments as about about double and about kCFNumberFloatType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818579</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-29 19:42:39 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 445369 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445369&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp:67
&gt; &gt; +    float resolutionWidth = 72.0 * scaleFactor;
&gt; &gt; +    float resolutionHeight = 72.0 * scaleFactor;
&gt; 
&gt; Why convert double to float here instead of just using kCFNumberDoubleType?
&gt; 
&gt; &gt; Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp:69
&gt; &gt; +    auto resolutionWidthNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionWidth));
&gt; &gt; +    auto resolutionHeightNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &amp;resolutionHeight));
&gt; 
&gt; Seems incorrect, but likely harmless, to use kCFNumberFloat32Type here
&gt; instead of kCFNumberFloatType.

Looking at the CF source, it seems that kCFNumberFloatType and kCFNumberFloat32Type are synonymous, as are kCFNumberFloat64Type and kCFNumberFloatDoubleType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818580</commentid>
    <comment_count>4</comment_count>
      <attachid>445372</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-29 19:47:03 -0800</bug_when>
    <thetext>Created attachment 445372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818618</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-29 23:28:36 -0800</bug_when>
    <thetext>Committed r286285 (244644@main): &lt;https://commits.webkit.org/244644@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445372.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818619</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 23:29:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85852852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818780</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-30 09:19:03 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Looking at the CF source, it seems that kCFNumberFloatType and
&gt; kCFNumberFloat32Type are synonymous, as are kCFNumberFloat64Type and
&gt; kCFNumberFloatDoubleType.

Yes, understood. That’s what I meant when I said the mistake was &quot;harmless&quot;.

But my comment is: why use the wrong one? One is intended for the &quot;C float type&quot;, and that is kCFNumberFloatType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818781</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-30 09:19:54 -0800</bug_when>
    <thetext>Very happy what you landed, of course. Glad you liked my suggestion of just using double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818797</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-30 10:05:53 -0800</bug_when>
    <thetext>I originally followed the code in mayHaveDensityCorrectedSize().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445369</attachid>
            <date>2021-11-29 17:50:14 -0800</date>
            <delta_ts>2021-11-29 19:01:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233609-20211129175013.patch</filename>
            <type>text/plain</type>
            <size>15521</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDJmOTI1MWUxMDE1MDBhNDU0ZTZkMjg3YmU1ZjgwYTQ4
NDA0MzZhYi4uNzNlZDZhOWNiMGM4Y2M4OGYyMzc1MjQzNTdjMGM4MzI4MWE3ODY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIxLTExLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3JlIGltYWdlIHJlc29sdXRpb24gaW4gbGF5b3V0IHRlc3Qgc25hcHNob3Rz
LCBhbmQgaGF2ZSBJbWFnZURpZmYgcmVhZCBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgT24gdGhlIHdheSB0byBmaXhpbmcgYnVnIDIzMjUyNSwgd2Ug
bmVlZCB0byBjb21tdW5pY2F0ZSB0byBJbWFnZURpZmYgdGhlIHJlc29sdXRpb24gb2YKKyAgICAg
ICAgbGF5b3V0IHRlc3Qgc25hcHNob3RzIHNvIHRoYXQgaXQgY2FuIGFjY291bnQgZm9yIHRoZSBy
ZXNvbHV0aW9uIHdoZW4gY29tcHV0aW5nIHBpeGVsCisgICAgICAgIHRvbGVyYW5jZSB2YWx1ZXMs
IHdoaWNoIHNob3VsZCBiZSByZXBvcnRlZCBpbiBDU1MgcGl4ZWxzLgorCisgICAgICAgIFNvIGhh
dmUgRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIsIG9uIENvY29hIHBsYXRmb3Jt
cywgYWRkIGltYWdlIHJlc29sdXRpb24KKyAgICAgICAgbWV0YWRhdGEsIHdoZXJlIGEgMnggc25h
cHNob3QgKGkuZS4gYSBoaWRwaSB0ZXN0KSByZXBvcnRzIGEgaG9yaXpvbnRhbCBhbmQgdmVydGlj
YWwKKyAgICAgICAgcmVzb2x1dGlvbiBvZiAxNDRkcGkuCisKKyAgICAgICAgQ2hhbmdlIEltYWdl
RGlmZiB0byByZWFkIHRoZXNlIHZhbHVlcyBhbmQgc3RvcmUgdGhlbSBpbiBQbGF0Zm9ybUltYWdl
OyBhIGZ1dHVyZSBwYXRjaCB3aWxsCisgICAgICAgIG1ha2UgdXNlIG9mIHRoZSBkYXRhLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAg
ICAgKHByaW50UE5HKToKKyAgICAgICAgKGR1bXBCaXRtYXApOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6
c2NhbGVGYWN0b3IgY29uc3QpOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6c2V0U2NhbGVGYWN0
b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1t
OgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAgKGNyZWF0
ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6CisgICAgICAgICogSW1hZ2VEaWZmL0ltYWdlRGlm
Zi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1JbWFn
ZS5oOgorICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpzY2FsZUZhY3RvciBjb25z
dCk6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6CisgICAgICAg
IChJbWFnZURpZmY6OmNyZWF0ZUltYWdlRnJvbURhdGFQcm92aWRlcik6CisgICAgICAgIChJbWFn
ZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21GaWxlKToKKyAgICAgICAgKEltYWdlRGlm
Zjo6UGxhdGZvcm1JbWFnZTo6Y3JlYXRlRnJvbVN0ZGluKToKKyAgICAgICAgKEltYWdlRGlmZjo6
UGxhdGZvcm1JbWFnZTo6UGxhdGZvcm1JbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6ZHVtcEJpdG1hcCk6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZCk6CisKIDIwMjEtMTEtMjkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW3dlYmtpdGZsYXNrcHldIE1ha2Ugc3VyZSBmbGFzayBpcyByZWdpc3RlcmVkIGJl
Zm9yZSBpbXBvcnRpbmcgd2Via2l0Zmxhc2tweQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5kZXggOGU2ZGQ1ZmVkN2QyYzJlYjM5YmNlZWJiMWQ0
NjhjY2VkNTkyOGNkYy4uMTExZGUzYjViNTZkNjMxYjliZTMwNDk3MGVjYmM5ODMxMTc2ZmExYiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUg
IlBpeGVsRHVtcFN1cHBvcnQuaCIKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlv
bi5oPgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01Nywx
MSArNTcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0YXRpYyBjb25zdCBDRlN0cmluZ1Jl
ZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKICNlbmRpZgogCi1zdGF0aWMgdm9p
ZCBwcmludFBORyhDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3N0YXRp
YyB2b2lkIHByaW50UE5HKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IGNoYXIqIGNoZWNrc3VtLCBk
b3VibGUgc2NhbGVGYWN0b3IpCiB7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGlt
YWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7Ci0gICAgUmV0YWlu
UHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVz
dGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDAp
KTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3QuZ2V0KCksIGltYWdl
LCAwKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgw
LCAwKSk7CisgICAgYXV0byBpbWFnZURlc3QgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNy
ZWF0ZVdpdGhEYXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworCisgICAg
YXV0byBwcm9wZXJ0aWVzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgZmxvYXQgcmVzb2x1
dGlvbldpZHRoID0gNzIuMCAqIHNjYWxlRmFjdG9yOworICAgIGZsb2F0IHJlc29sdXRpb25IZWln
aHQgPSA3Mi4wICogc2NhbGVGYWN0b3I7CisgICAgYXV0byByZXNvbHV0aW9uV2lkdGhOdW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZs
b2F0MzJUeXBlLCAmcmVzb2x1dGlvbldpZHRoKSk7CisgICAgYXV0byByZXNvbHV0aW9uSGVpZ2h0
TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJGbG9hdDMyVHlwZSwgJnJlc29sdXRpb25IZWlnaHQpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eURQSVdp
ZHRoLCByZXNvbHV0aW9uV2lkdGhOdW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5RFBJSGVpZ2h0
LCByZXNvbHV0aW9uSGVpZ2h0TnVtYmVyLmdldCgpKTsKKworICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UsIHByb3BlcnRpZXNEaWN0aW9uYXJ5Lmdl
dCgpKTsKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwog
CiAgICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKGltYWdlRGF0YS5nZXQo
KSk7CkBAIC0xMTAsNyArMTE5LDcgQEAgdm9pZCBjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JCaXRt
YXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmkKIHZvaWQgZHVt
cEJpdG1hcChCaXRtYXBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQtPmNnQ29udGV4dCgpKSk7Ci0gICAgcHJpbnRQTkcoaW1hZ2Uu
Z2V0KCksIGNoZWNrc3VtKTsKKyAgICBwcmludFBORyhpbWFnZS5nZXQoKSwgY2hlY2tzdW0sIGNv
bnRleHQtPnNjYWxlRmFjdG9yKCkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCmluZGV4IGI3OTRiMjE5OGVk
OGEwYWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYuLjM4ODNiNjg3YTM3ZmY5NjgyOWNkODIwZDIz
MjJiZjY2ZWVhZDRkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVs
RHVtcFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAg
CisgICAgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZUZhY3Rvcjsg
fQorICAgIHZvaWQgc2V0U2NhbGVGYWN0b3IoZG91YmxlIHNjYWxlRmFjdG9yKSB7IG1fc2NhbGVG
YWN0b3IgPSBzY2FsZUZhY3RvcjsgfQogCiBwcml2YXRlOgogCkBAIC03NCw3ICs3Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBtX2NvbnRleHQ7Ci0KKyAgICBkb3VibGUgbV9zY2FsZUZhY3RvciB7
IDEuMCB9OwogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRleCA0ZDk5MWM3MjE0ODE0YjJlZTY4
YzBkNTYzZDg5MWViODdjODhkYWU3Li42ZWNhNjBmMjBkNjZiNTViOGJjZThlN2ZlZmUzZDYwMGEz
OWJkZmIwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3Vw
cG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9y
dElPUy5tbQpAQCAtODEsNiArODEsOCBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGlm
ICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBiaXRtYXBD
b250ZXh0LT5zZXRTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisKICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwg
YnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCksIGNnSW1hZ2UuZ2V0KCkpOwogICAgIHJldHVybiBi
aXRtYXBDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Bp
eGVsRHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1w
U3VwcG9ydE1hYy5tbQppbmRleCA0YTI2YWE1MzE2NTA2MmMwYjgwMmI4MGMzNTU5YTZmYWRlMTBk
NGVmLi44ZTk0MDg5ZGI5YTYxNzgxNWY4Y2ZmMTMyNjM1NWIzNzQzNDk1MjA4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpAQCAtMTAzLDYg
KzEwMyw5IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdl
YlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgYXV0byBiaXRtYXBDb250ZXh0
ID0gY3JlYXRlQml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCByb3dCeXRlcywg
YnVmZmVyKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgYml0bWFwQ29udGV4dC0+c2V0U2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3Ip
OworCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBiaXRtYXBDb250ZXh0LT5jZ0NvbnRleHQo
KTsKICAgICAvLyBUaGUgZmluYWwgc2NhbGluZyBnZXRzIGRvdWJsZWQgb24gdGhlIHNjcmVlbiBj
YXB0dXJlIHN1cmZhY2Ugd2hlbiB3ZSB1c2UgdGhlIGhpZHBpIGJhY2tpbmdTY2FsZUZhY3RvciB2
YWx1ZSBmb3IgQ1RNLgogICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIHB1c2ggdGhlIHNj
YWxpbmcgYmFjay4KZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYuY3BwIGIv
VG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKaW5kZXggODkwMDk3ZGM5M2RlYjBlY2E5YTQx
ZGIyZjU2ZGI5NTI4ODhmM2JmNy4uNzRjMjI4MWQ5NjQxOWU3NTBiMTM2OGU2MmNkODQwZWY5ZWEw
MTNjZCAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKKysrIGIvVG9v
bHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkNvbXBhcmluZyBmaWxlcyBhY3R1YWw6ICVzIGFuZCBiYXNlbGluZTogJXNcbiIsIGZpbGUx
UGF0aCwgZmlsZTJQYXRoKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbXBh
cmluZyBmaWxlcyBhY3R1YWw6ICVzIChyZXNvbHV0aW9uICUuMWYpIGFuZCBiYXNlbGluZTogJXMg
KHJlc29sdXRpb24gJS4xZilcbiIsIGZpbGUxUGF0aCwgYWN0dWFsSW1hZ2UtPnNjYWxlRmFjdG9y
KCksIGZpbGUyUGF0aCwgYmFzZWxpbmVJbWFnZS0+c2NhbGVGYWN0b3IoKSk7CiAKICAgICAgICAg
ICAgIHJldHVybiBwcm9jZXNzSW1hZ2VzKHN0ZDo6bW92ZShhY3R1YWxJbWFnZSksIHN0ZDo6bW92
ZShiYXNlbGluZUltYWdlKSwgZXhhY3QsIHByaW50RGlmZmVyZW5jZSk7CiAgICAgICAgIH0KQEAg
LTE5OSw2ICsxOTksOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGFjdHVhbEltYWdlICYmIGJhc2VsaW5lSW1hZ2UpIHsK
KyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiQWN0dWFsIGltYWdlIHJlc29sdXRpb246ICUuMWYsIGJhc2VsaW5lIGltYWdlIHJlc29sdXRp
b246ICUuMWZcbiIsIGFjdHVhbEltYWdlLT5zY2FsZUZhY3RvcigpLCBiYXNlbGluZUltYWdlLT5z
Y2FsZUZhY3RvcigpKTsKKwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwcm9jZXNzSW1hZ2Vz
KHN0ZDo6ZXhjaGFuZ2UoYWN0dWFsSW1hZ2UsIHsgfSksIHN0ZDo6ZXhjaGFuZ2UoYmFzZWxpbmVJ
bWFnZSwgeyB9KSwgZXhhY3QsIHByaW50RGlmZmVyZW5jZSk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0ICE9IEVYSVRfU1VDQ0VTUykKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaCBiL1Rvb2xzL0ltYWdlRGlm
Zi9QbGF0Zm9ybUltYWdlLmgKaW5kZXggYmI2ZTdkZjU2ZTAxMjdlMTIwNDc2MmM1OTgxZjA1NGQ4
NTU4NDQ3Zi4uNWNkMTNkYjM5OTc0M2UzZjA5M2Y4NzEyNjA3M2Y2ZDZhNjIwMTJhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaAorKysgYi9Ub29scy9JbWFnZURp
ZmYvUGxhdGZvcm1JbWFnZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICNpZiBkZWZpbmVk
KFVTRV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAgUGxhdGZvcm1JbWFnZShjYWlyb19zdXJmYWNl
X3QqKTsKICNlbHNlCi0gICAgUGxhdGZvcm1JbWFnZShDR0ltYWdlUmVmKTsKKyAgICBQbGF0Zm9y
bUltYWdlKENHSW1hZ2VSZWYsIGRvdWJsZSBzY2FsZUZhY3RvciA9IDEpOwogI2VuZGlmCiAgICAg
flBsYXRmb3JtSW1hZ2UoKTsKIApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IGhlaWdodCgpIGNvbnN0OwogICAgIHNpemVfdCByb3dCeXRlcygpIGNvbnN0OwogICAgIGJvb2wg
aGFzQWxwaGEoKSBjb25zdDsKKyAgICBkb3VibGUgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlRmFjdG9yOyB9CiAKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMoKSBjb25zdDsK
ICAgICBib29sIGlzQ29tcGF0aWJsZShjb25zdCBQbGF0Zm9ybUltYWdlJikgY29uc3Q7CkBAIC03
Myw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgQ0dJbWFnZVJlZiBtX2ltYWdlOwogICAgIG11dGFi
bGUgdm9pZCogbV9idWZmZXIgeyBudWxscHRyIH07CiAjZW5kaWYKKyAgICBkb3VibGUgbV9zY2Fs
ZUZhY3RvciB7IDEgfTsgLy8gRXNzZW50aWFsbHkgcmVzb2x1dGlvbiwgYnV0IG5vdCBpbiBEUEku
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbWFnZURpZmYKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdl
RGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwIGIvVG9vbHMvSW1hZ2VEaWZmL2NnL1BsYXRmb3Jt
SW1hZ2VDRy5jcHAKaW5kZXggYWFkNWIwMWZlYTE1NDE2NDEzZDg2NWRhODYwNGVhNGJjZTgyOTA2
Ny4uMjA1MzFjZTAwNDNjNDZkMjQ1MmJmMjE3ZTczYjE0NWYxOTJmZjQwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKKysrIGIvVG9vbHMvSW1hZ2VE
aWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q0dJbWFnZS5oPgotI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CisjaW5j
bHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAKQEAgLTcxLDE4ICs3MSw0NCBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYg
a1VUVHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBJbWFnZURpZmYg
ewogCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IGNyZWF0ZUltYWdlRnJv
bURhdGFQcm92aWRlcihDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIpCit7CisgICAgZG91
YmxlIHNjYWxlRmFjdG9yID0gMTsKKworICAgIGF1dG8gaW1hZ2VTb3VyY2UgPSBDR0ltYWdlU291
cmNlQ3JlYXRlV2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIsIDApOworICAgIGF1dG8gcHJv
cGVydGllcyA9IENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgoaW1hZ2VTb3VyY2Us
IDAsIG51bGxwdHIpOworICAgIGlmIChwcm9wZXJ0aWVzKSB7CisgICAgICAgIGF1dG8gcmVzb2x1
dGlvblhQcm9wZXJ0eSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0
aWVzLCBrQ0dJbWFnZVByb3BlcnR5RFBJV2lkdGgpOworICAgICAgICBhdXRvIHJlc29sdXRpb25Z
UHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcywg
a0NHSW1hZ2VQcm9wZXJ0eURQSUhlaWdodCk7CisgICAgICAgIGlmIChyZXNvbHV0aW9uWFByb3Bl
cnR5ICYmIHJlc29sdXRpb25ZUHJvcGVydHkpIHsKKyAgICAgICAgICAgIGZsb2F0IHJlc29sdXRp
b25YLCByZXNvbHV0aW9uWTsKKyAgICAgICAgICAgIGlmIChDRk51bWJlckdldFZhbHVlKHJlc29s
dXRpb25YUHJvcGVydHksIGtDRk51bWJlckZsb2F0MzJUeXBlLCAmcmVzb2x1dGlvblgpICYmIENG
TnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvbllQcm9wZXJ0eSwga0NGTnVtYmVyRmxvYXQzMlR5cGUs
ICZyZXNvbHV0aW9uWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvblggIT0gcmVz
b2x1dGlvblkpCisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW1hZ2UgaGFz
IGRpZmZlcmVudCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCByZXNvbHV0aW9ucywgd2hpY2ggaXMg
bm90IHN1cHBvcnRlZCIpOworCisgICAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSByZXNvbHV0
aW9uWCAvIDcyLjA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQ0ZSZWxlYXNl
KHByb3BlcnRpZXMpOworICAgIH0KKworICAgIGF1dG8gaW1hZ2UgPSBDR0ltYWdlU291cmNlQ3Jl
YXRlSW1hZ2VBdEluZGV4KGltYWdlU291cmNlLCAwLCBudWxscHRyKTsKKyAgICBDRlJlbGVhc2Uo
aW1hZ2VTb3VyY2UpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UsIHNjYWxl
RmFjdG9yKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBsYXRmb3JtSW1h
Z2U6OmNyZWF0ZUZyb21GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoKQogewogICAgIGF1dG8gZGF0
YVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRmlsZW5hbWUoZmlsZVBhdGgpOwog
ICAgIGlmICghZGF0YVByb3ZpZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1
dG8gaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlV2l0aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIs
IDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKKyAgICBhdXRvIHJlc3VsdCA9
IGNyZWF0ZUltYWdlRnJvbURhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIpOwogICAgIENHRGF0YVBy
b3ZpZGVyUmVsZWFzZShkYXRhUHJvdmlkZXIpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFn
ZT4oaW1hZ2UpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tU3RkaW4oc2l6ZV90IGltYWdlU2l6
ZSkKQEAgLTk5LDEwICsxMjUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBs
YXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21TdGRpbihzaXplX3QgaW1hZ2VTaXplKQogICAgIH0KICAg
ICBDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSk7CiAgICAgQ0ZSZWxlYXNlKGRhdGEpOwotICAgIENHSW1hZ2VSZWYgaW1h
Z2UgPSBDR0ltYWdlQ3JlYXRlV2l0aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIsIDAsIGZh
bHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKLSAgICBDRlJlbGVhc2UoZGF0YVByb3Zp
ZGVyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtSW1hZ2U+KGltYWdl
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZUltYWdlRnJvbURhdGFQcm92aWRlcihkYXRhUHJv
dmlkZXIpOworICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZShkYXRhUHJvdmlkZXIpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9y
bUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEodm9pZCogZGF0YSwgc2l6ZV90IHdpZHRoLCBzaXpl
X3QgaGVpZ2h0KQpAQCAtMTE3LDggKzE0Myw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUlt
YWdlPiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEodm9pZCogZGF0YSwgc2l6CiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOwogfQogCi1Q
bGF0Zm9ybUltYWdlOjpQbGF0Zm9ybUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitQbGF0Zm9ybUlt
YWdlOjpQbGF0Zm9ybUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGRvdWJsZSBzY2FsZUZhY3RvcikK
ICAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKQog
ewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0
aW9uQ0cuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNw
cAppbmRleCA0ZWM5YzIwZTk4MGY1ZTA3ZWZmMzMzNjhhZjk4MWY1YjhiNDk3YjFlLi45YWM0MDdm
ZTUzYzhlNmIxZjM0NzUxZTNhMDMzYjNiZDI0OTczZDVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAj
aW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0
aW5hdGlvbi5oPgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS0ltYWdlQ0cuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1NIQTEuaD4KQEAgLTEwNywxMiArMTA3LDIxIEBAIHZvaWQgY29tcHV0ZVNIQTFIYXNoU3RyaW5n
Rm9yQ29udGV4dChDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCwgY2hhciBoYXNoU3RyaW5nCiAg
ICAgICAgIHNucHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmluZywgaGFz
aFtpXSk7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBCaXRtYXAoQ0dDb250ZXh0UmVmIGJpdG1hcENv
bnRleHQsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQorc3RhdGljIHZvaWQgZHVtcEJpdG1hcChDR0Nv
bnRleHRSZWYgYml0bWFwQ29udGV4dCwgY29uc3QgY2hhciogY2hlY2tzdW0sIFdLU2l6ZSBpbWFn
ZVNpemUsIFdLU2l6ZSB3aW5kb3dTaXplKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpKTsKICAgICBhdXRvIGltYWdl
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAgICAgYXV0byBpbWFn
ZURlc3QgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0
YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZElt
YWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UuZ2V0KCksIDApOworCisgICAgYXV0byBwcm9wZXJ0
aWVzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgZmxvYXQgcmVzb2x1dGlvbldpZHRoID0g
NzIuMCAqIGltYWdlU2l6ZS53aWR0aCAvIHdpbmRvd1NpemUud2lkdGg7CisgICAgZmxvYXQgcmVz
b2x1dGlvbkhlaWdodCA9IDcyLjAgKiBpbWFnZVNpemUuaGVpZ2h0IC8gd2luZG93U2l6ZS5oZWln
aHQ7CisgICAgYXV0byByZXNvbHV0aW9uV2lkdGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckZsb2F0MzJUeXBlLCAmcmVzb2x1dGlv
bldpZHRoKSk7CisgICAgYXV0byByZXNvbHV0aW9uSGVpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdDMyVHlwZSwgJnJl
c29sdXRpb25IZWlnaHQpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0aWVzRGlj
dGlvbmFyeS5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eURQSVdpZHRoLCByZXNvbHV0aW9uV2lkdGhO
dW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnRpZXNEaWN0aW9u
YXJ5LmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5RFBJSGVpZ2h0LCByZXNvbHV0aW9uSGVpZ2h0TnVt
YmVyLmdldCgpKTsKKworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdC5n
ZXQoKSwgaW1hZ2UuZ2V0KCksIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKTsKICAgICBDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwogCiAgICAgY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKTsKQEAg
LTE4MSwxMCArMTkwLDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21w
YXJlV2l0aEV4cGVjdGVkKFNuYXBzaG90UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAgaWYgKHJlcGFp
bnRSZWN0cykKICAgICAgICAgcGFpbnRSZXBhaW50UmVjdE92ZXJsYXkoY29udGV4dC5nZXQoKSwg
aW1hZ2VTaXplLCByZXBhaW50UmVjdHMpOwogCisgICAgYXV0byB3aW5kb3dTaXplID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPndpbmRvd0ZyYW1lKCkuc2l6ZTsK
KwogICAgIGNoYXIgYWN0dWFsSGFzaFszM107CiAgICAgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9y
Q29udGV4dChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKICAgICBpZiAoIWNvbXBhcmVBY3R1
YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQotICAgICAgICBkdW1w
Qml0bWFwKGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOworICAgICAgICBkdW1wQml0bWFwKGNv
bnRleHQuZ2V0KCksIGFjdHVhbEhhc2gsIGltYWdlU2l6ZSwgd2luZG93U2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdUUgo=
</data>
<flag name="review"
          id="470523"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445372</attachid>
            <date>2021-11-29 19:47:03 -0800</date>
            <delta_ts>2021-11-29 23:28:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233609-20211129194702.patch</filename>
            <type>text/plain</type>
            <size>15500</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDJmOTI1MWUxMDE1MDBhNDU0ZTZkMjg3YmU1ZjgwYTQ4
NDA0MzZhYi4uYjkzMjczMDlhMzVhOTk3N2MyOGY1ZjA1MmU1ZjhmNWZlM2JmZDY2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIxLTExLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3JlIGltYWdlIHJlc29sdXRpb24gaW4gbGF5b3V0IHRlc3Qgc25hcHNob3Rz
LCBhbmQgaGF2ZSBJbWFnZURpZmYgcmVhZCBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgT24gdGhlIHdheSB0byBmaXhpbmcgYnVnIDIzMjUyNSwgd2UgbmVl
ZCB0byBjb21tdW5pY2F0ZSB0byBJbWFnZURpZmYgdGhlIHJlc29sdXRpb24gb2YKKyAgICAgICAg
bGF5b3V0IHRlc3Qgc25hcHNob3RzIHNvIHRoYXQgaXQgY2FuIGFjY291bnQgZm9yIHRoZSByZXNv
bHV0aW9uIHdoZW4gY29tcHV0aW5nIHBpeGVsCisgICAgICAgIHRvbGVyYW5jZSB2YWx1ZXMsIHdo
aWNoIHNob3VsZCBiZSByZXBvcnRlZCBpbiBDU1MgcGl4ZWxzLgorCisgICAgICAgIFNvIGhhdmUg
RHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIsIG9uIENvY29hIHBsYXRmb3Jtcywg
YWRkIGltYWdlIHJlc29sdXRpb24KKyAgICAgICAgbWV0YWRhdGEsIHdoZXJlIGEgMnggc25hcHNo
b3QgKGkuZS4gYSBoaWRwaSB0ZXN0KSByZXBvcnRzIGEgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwK
KyAgICAgICAgcmVzb2x1dGlvbiBvZiAxNDRkcGkuCisKKyAgICAgICAgQ2hhbmdlIEltYWdlRGlm
ZiB0byByZWFkIHRoZXNlIHZhbHVlcyBhbmQgc3RvcmUgdGhlbSBpbiBQbGF0Zm9ybUltYWdlOyBh
IGZ1dHVyZSBwYXRjaCB3aWxsCisgICAgICAgIG1ha2UgdXNlIG9mIHRoZSBkYXRhLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAg
KHByaW50UE5HKToKKyAgICAgICAgKGR1bXBCaXRtYXApOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6c2Nh
bGVGYWN0b3IgY29uc3QpOgorICAgICAgICAoQml0bWFwQ29udGV4dDo6c2V0U2NhbGVGYWN0b3Ip
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tOgor
ICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUJp
dG1hcENvbnRleHRGcm9tV2ViVmlldyk6CisgICAgICAgICogSW1hZ2VEaWZmL0ltYWdlRGlmZi5j
cHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5o
OgorICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpzY2FsZUZhY3RvciBjb25zdCk6
CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6CisgICAgICAgIChJ
bWFnZURpZmY6OmNyZWF0ZUltYWdlRnJvbURhdGFQcm92aWRlcik6CisgICAgICAgIChJbWFnZURp
ZmY6OlBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21GaWxlKToKKyAgICAgICAgKEltYWdlRGlmZjo6
UGxhdGZvcm1JbWFnZTo6Y3JlYXRlRnJvbVN0ZGluKToKKyAgICAgICAgKEltYWdlRGlmZjo6UGxh
dGZvcm1JbWFnZTo6UGxhdGZvcm1JbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
Zy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6ZHVtcEJpdG1hcCk6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3Rl
ZCk6CisKIDIwMjEtMTEtMjkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW3dlYmtpdGZsYXNrcHldIE1ha2Ugc3VyZSBmbGFzayBpcyByZWdpc3RlcmVkIGJlZm9y
ZSBpbXBvcnRpbmcgd2Via2l0Zmxhc2tweQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1Bp
eGVsRHVtcFN1cHBvcnRDRy5jcHAKaW5kZXggOGU2ZGQ1ZmVkN2QyYzJlYjM5YmNlZWJiMWQ0Njhj
Y2VkNTkyOGNkYy4uYjRiZmFmYjEwNDBmNzY5MTJiZTBlYTYwYWE1MzdlN2JhMGZhNDU5MCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUgIlBp
eGVsRHVtcFN1cHBvcnQuaCIKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5o
PgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01NywxMSAr
NTcsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBr
VVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKICNlbmRpZgogCi1zdGF0aWMgdm9pZCBw
cmludFBORyhDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3N0YXRpYyB2
b2lkIHByaW50UE5HKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IGNoYXIqIGNoZWNrc3VtLCBkb3Vi
bGUgc2NhbGVGYWN0b3IpCiB7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGltYWdl
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7Ci0gICAgUmV0YWluUHRy
PENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVzdGlu
YXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDApKTsK
LSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3QuZ2V0KCksIGltYWdlLCAw
KTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAw
KSk7CisgICAgYXV0byBpbWFnZURlc3QgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworCisgICAgYXV0
byBwcm9wZXJ0aWVzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgZG91YmxlIHJlc29sdXRp
b25XaWR0aCA9IDcyLjAgKiBzY2FsZUZhY3RvcjsKKyAgICBkb3VibGUgcmVzb2x1dGlvbkhlaWdo
dCA9IDcyLjAgKiBzY2FsZUZhY3RvcjsKKyAgICBhdXRvIHJlc29sdXRpb25XaWR0aE51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91
YmxlVHlwZSwgJnJlc29sdXRpb25XaWR0aCkpOworICAgIGF1dG8gcmVzb2x1dGlvbkhlaWdodE51
bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJnJlc29sdXRpb25IZWlnaHQpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eURQSVdpZHRo
LCByZXNvbHV0aW9uV2lkdGhOdW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5RFBJSGVpZ2h0LCBy
ZXNvbHV0aW9uSGVpZ2h0TnVtYmVyLmdldCgpKTsKKworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFk
ZEltYWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UsIHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgp
KTsKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOwogCiAg
ICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKGltYWdlRGF0YS5nZXQoKSk7
CkBAIC0xMTAsNyArMTE5LDcgQEAgdm9pZCBjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JCaXRtYXBD
b250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmkKIHZvaWQgZHVtcEJp
dG1hcChCaXRtYXBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsKICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQtPmNnQ29udGV4dCgpKSk7Ci0gICAgcHJpbnRQTkcoaW1hZ2UuZ2V0
KCksIGNoZWNrc3VtKTsKKyAgICBwcmludFBORyhpbWFnZS5nZXQoKSwgY2hlY2tzdW0sIGNvbnRl
eHQtPnNjYWxlRmFjdG9yKCkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCmluZGV4IGI3OTRiMjE5OGVkOGEw
YWExNDcyZDMwYjkzYTNhYmZhY2M3MDI3YTYuLjM4ODNiNjg3YTM3ZmY5NjgyOWNkODIwZDIzMjJi
ZjY2ZWVhZDRkODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVt
cFN1cHBvcnRDRy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgCisg
ICAgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQor
ICAgIHZvaWQgc2V0U2NhbGVGYWN0b3IoZG91YmxlIHNjYWxlRmFjdG9yKSB7IG1fc2NhbGVGYWN0
b3IgPSBzY2FsZUZhY3RvcjsgfQogCiBwcml2YXRlOgogCkBAIC03NCw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICBQbGF0Zm9ybUJpdG1hcEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBtX2NvbnRleHQ7Ci0KKyAgICBkb3VibGUgbV9zY2FsZUZhY3RvciB7IDEu
MCB9OwogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRleCA0ZDk5MWM3MjE0ODE0YjJlZTY4YzBk
NTYzZDg5MWViODdjODhkYWU3Li42ZWNhNjBmMjBkNjZiNTViOGJjZThlN2ZlZmUzZDYwMGEzOWJk
ZmIwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9y
dElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElP
Uy5tbQpAQCAtODEsNiArODEsOCBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIGlmICgh
Yml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBiaXRtYXBDb250
ZXh0LT5zZXRTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisKICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgYnVm
ZmVyV2lkdGgsIGJ1ZmZlckhlaWdodCksIGNnSW1hZ2UuZ2V0KCkpOwogICAgIHJldHVybiBiaXRt
YXBDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3Vw
cG9ydE1hYy5tbQppbmRleCA0YTI2YWE1MzE2NTA2MmMwYjgwMmI4MGMzNTU5YTZmYWRlMTBkNGVm
Li44ZTk0MDg5ZGI5YTYxNzgxNWY4Y2ZmMTMyNjM1NWIzNzQzNDk1MjA4IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpAQCAtMTAzLDYgKzEw
Myw5IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZp
ZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgYXV0byBiaXRtYXBDb250ZXh0ID0g
Y3JlYXRlQml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCByb3dCeXRlcywgYnVm
ZmVyKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYml0bWFwQ29udGV4dC0+c2V0U2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBiaXRtYXBDb250ZXh0LT5jZ0NvbnRleHQoKTsK
ICAgICAvLyBUaGUgZmluYWwgc2NhbGluZyBnZXRzIGRvdWJsZWQgb24gdGhlIHNjcmVlbiBjYXB0
dXJlIHN1cmZhY2Ugd2hlbiB3ZSB1c2UgdGhlIGhpZHBpIGJhY2tpbmdTY2FsZUZhY3RvciB2YWx1
ZSBmb3IgQ1RNLgogICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIHB1c2ggdGhlIHNjYWxp
bmcgYmFjay4KZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYuY3BwIGIvVG9v
bHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKaW5kZXggODkwMDk3ZGM5M2RlYjBlY2E5YTQxZGIy
ZjU2ZGI5NTI4ODhmM2JmNy4uNzRjMjI4MWQ5NjQxOWU3NTBiMTM2OGU2MmNkODQwZWY5ZWEwMTNj
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKKysrIGIvVG9vbHMv
SW1hZ2VEaWZmL0ltYWdlRGlmZi5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkNvbXBhcmluZyBmaWxlcyBhY3R1YWw6ICVzIGFuZCBiYXNlbGluZTogJXNcbiIsIGZpbGUxUGF0
aCwgZmlsZTJQYXRoKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbXBhcmlu
ZyBmaWxlcyBhY3R1YWw6ICVzIChyZXNvbHV0aW9uICUuMWYpIGFuZCBiYXNlbGluZTogJXMgKHJl
c29sdXRpb24gJS4xZilcbiIsIGZpbGUxUGF0aCwgYWN0dWFsSW1hZ2UtPnNjYWxlRmFjdG9yKCks
IGZpbGUyUGF0aCwgYmFzZWxpbmVJbWFnZS0+c2NhbGVGYWN0b3IoKSk7CiAKICAgICAgICAgICAg
IHJldHVybiBwcm9jZXNzSW1hZ2VzKHN0ZDo6bW92ZShhY3R1YWxJbWFnZSksIHN0ZDo6bW92ZShi
YXNlbGluZUltYWdlKSwgZXhhY3QsIHByaW50RGlmZmVyZW5jZSk7CiAgICAgICAgIH0KQEAgLTE5
OSw2ICsxOTksOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGFjdHVhbEltYWdlICYmIGJhc2VsaW5lSW1hZ2UpIHsKKyAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
QWN0dWFsIGltYWdlIHJlc29sdXRpb246ICUuMWYsIGJhc2VsaW5lIGltYWdlIHJlc29sdXRpb246
ICUuMWZcbiIsIGFjdHVhbEltYWdlLT5zY2FsZUZhY3RvcigpLCBiYXNlbGluZUltYWdlLT5zY2Fs
ZUZhY3RvcigpKTsKKwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwcm9jZXNzSW1hZ2VzKHN0
ZDo6ZXhjaGFuZ2UoYWN0dWFsSW1hZ2UsIHsgfSksIHN0ZDo6ZXhjaGFuZ2UoYmFzZWxpbmVJbWFn
ZSwgeyB9KSwgZXhhY3QsIHByaW50RGlmZmVyZW5jZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0
ICE9IEVYSVRfU1VDQ0VTUykKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaCBiL1Rvb2xzL0ltYWdlRGlmZi9Q
bGF0Zm9ybUltYWdlLmgKaW5kZXggYmI2ZTdkZjU2ZTAxMjdlMTIwNDc2MmM1OTgxZjA1NGQ4NTU4
NDQ3Zi4uNWNkMTNkYjM5OTc0M2UzZjA5M2Y4NzEyNjA3M2Y2ZDZhNjIwMTJhZCAxMDA2NDQKLS0t
IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaAorKysgYi9Ub29scy9JbWFnZURpZmYv
UGxhdGZvcm1JbWFnZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICNpZiBkZWZpbmVkKFVT
RV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAgUGxhdGZvcm1JbWFnZShjYWlyb19zdXJmYWNlX3Qq
KTsKICNlbHNlCi0gICAgUGxhdGZvcm1JbWFnZShDR0ltYWdlUmVmKTsKKyAgICBQbGF0Zm9ybUlt
YWdlKENHSW1hZ2VSZWYsIGRvdWJsZSBzY2FsZUZhY3RvciA9IDEpOwogI2VuZGlmCiAgICAgflBs
YXRmb3JtSW1hZ2UoKTsKIApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGhl
aWdodCgpIGNvbnN0OwogICAgIHNpemVfdCByb3dCeXRlcygpIGNvbnN0OwogICAgIGJvb2wgaGFz
QWxwaGEoKSBjb25zdDsKKyAgICBkb3VibGUgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3NjYWxlRmFjdG9yOyB9CiAKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMoKSBjb25zdDsKICAg
ICBib29sIGlzQ29tcGF0aWJsZShjb25zdCBQbGF0Zm9ybUltYWdlJikgY29uc3Q7CkBAIC03Myw2
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgQ0dJbWFnZVJlZiBtX2ltYWdlOwogICAgIG11dGFibGUg
dm9pZCogbV9idWZmZXIgeyBudWxscHRyIH07CiAjZW5kaWYKKyAgICBkb3VibGUgbV9zY2FsZUZh
Y3RvciB7IDEgfTsgLy8gRXNzZW50aWFsbHkgcmVzb2x1dGlvbiwgYnV0IG5vdCBpbiBEUEkuCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbWFnZURpZmYKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlm
Zi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwIGIvVG9vbHMvSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1h
Z2VDRy5jcHAKaW5kZXggYWFkNWIwMWZlYTE1NDE2NDEzZDg2NWRhODYwNGVhNGJjZTgyOTA2Ny4u
ZjY4ZWM5NmNlYWFlNmMwZDhhMTkxOGU4YzQ0YTU0YzY3OWQzMThjYSAxMDA2NDQKLS0tIGEvVG9v
bHMvSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKKysrIGIvVG9vbHMvSW1hZ2VEaWZm
L2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJ
bWFnZS5oPgotI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CisjaW5jbHVk
ZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAKQEAgLTcxLDE4ICs3MSw0MyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VU
VHlwZVBORyA9IENGU1RSKCJwdWJsaWMucG5nIik7CiAKIG5hbWVzcGFjZSBJbWFnZURpZmYgewog
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IGNyZWF0ZUltYWdlRnJvbURh
dGFQcm92aWRlcihDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIpCit7CisgICAgZG91Ymxl
IHNjYWxlRmFjdG9yID0gMTsKKworICAgIGF1dG8gaW1hZ2VTb3VyY2UgPSBDR0ltYWdlU291cmNl
Q3JlYXRlV2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIsIDApOworICAgIGlmIChhdXRvIHBy
b3BlcnRpZXMgPSBDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KGltYWdlU291cmNl
LCAwLCBudWxscHRyKSkgeworICAgICAgICBhdXRvIHJlc29sdXRpb25YUHJvcGVydHkgPSAoQ0ZO
dW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0
eURQSVdpZHRoKTsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uWVByb3BlcnR5ID0gKENGTnVtYmVy
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlEUElI
ZWlnaHQpOworICAgICAgICBpZiAocmVzb2x1dGlvblhQcm9wZXJ0eSAmJiByZXNvbHV0aW9uWVBy
b3BlcnR5KSB7CisgICAgICAgICAgICBkb3VibGUgcmVzb2x1dGlvblgsIHJlc29sdXRpb25ZOwor
ICAgICAgICAgICAgaWYgKENGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblhQcm9wZXJ0eSwga0NG
TnVtYmVyRG91YmxlVHlwZSwgJnJlc29sdXRpb25YKSAmJiBDRk51bWJlckdldFZhbHVlKHJlc29s
dXRpb25ZUHJvcGVydHksIGtDRk51bWJlckRvdWJsZVR5cGUsICZyZXNvbHV0aW9uWSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvblggIT0gcmVzb2x1dGlvblkpCisgICAgICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW1hZ2UgaGFzIGRpZmZlcmVudCBob3Jpem9udGFs
IGFuZCB2ZXJ0aWNhbCByZXNvbHV0aW9ucywgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCIpOworCisg
ICAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSByZXNvbHV0aW9uWCAvIDcyLjA7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQ0ZSZWxlYXNlKHByb3BlcnRpZXMpOworICAgIH0K
KworICAgIGF1dG8gaW1hZ2UgPSBDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KGltYWdl
U291cmNlLCAwLCBudWxscHRyKTsKKyAgICBDRlJlbGVhc2UoaW1hZ2VTb3VyY2UpOworICAgIGlm
ICghaW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UsIHNjYWxlRmFjdG9yKTsKK30KKwogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21GaWxlKGNv
bnN0IGNoYXIqIGZpbGVQYXRoKQogewogICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoRmlsZW5hbWUoZmlsZVBhdGgpOwogICAgIGlmICghZGF0YVByb3ZpZGVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gaW1hZ2UgPSBDR0ltYWdlQ3Jl
YXRlV2l0aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0KTsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZUltYWdlRnJvbURhdGFQ
cm92aWRlcihkYXRhUHJvdmlkZXIpOwogICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZShkYXRhUHJv
dmlkZXIpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUlt
YWdlOjpjcmVhdGVGcm9tU3RkaW4oc2l6ZV90IGltYWdlU2l6ZSkKQEAgLTk5LDEwICsxMjQsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtSW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZy
b21TdGRpbihzaXplX3QgaW1hZ2VTaXplKQogICAgIH0KICAgICBDR0RhdGFQcm92aWRlclJlZiBk
YXRhUHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSk7CiAgICAg
Q0ZSZWxlYXNlKGRhdGEpOwotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlV2l0
aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KTsKLSAgICBDRlJlbGVhc2UoZGF0YVByb3ZpZGVyKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtSW1hZ2U+KGltYWdlKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGNyZWF0ZUltYWdlRnJvbURhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIpOworICAgIENHRGF0YVBy
b3ZpZGVyUmVsZWFzZShkYXRhUHJvdmlkZXIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlm
ZkRhdGEodm9pZCogZGF0YSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQpAQCAtMTE3LDgg
KzE0Miw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpj
cmVhdGVGcm9tRGlmZkRhdGEodm9pZCogZGF0YSwgc2l6CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOwogfQogCi1QbGF0Zm9ybUltYWdlOjpQbGF0Zm9y
bUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCitQbGF0Zm9ybUltYWdlOjpQbGF0Zm9ybUltYWdlKENH
SW1hZ2VSZWYgaW1hZ2UsIGRvdWJsZSBzY2FsZUZhY3RvcikKICAgICA6IG1faW1hZ2UoaW1hZ2Up
CisgICAgLCBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKQogewogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRleCA0ZWM5YzIwZTk4MGY1
ZTA3ZWZmMzMzNjhhZjk4MWY1YjhiNDk3YjFlLi4zNjkzNDk0ZTBlYTdhZTE4MmQyZWI2YTg2OTI3
NWUwM2ZjNTliYzkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJ
bnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9j
YXRpb25DRy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgorI2luY2x1ZGUg
PEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ltYWdlQ0cuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KQEAgLTEwNywxMiAr
MTA3LDIxIEBAIHZvaWQgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQ29udGV4dChDR0NvbnRleHRS
ZWYgYml0bWFwQ29udGV4dCwgY2hhciBoYXNoU3RyaW5nCiAgICAgICAgIHNucHJpbnRmKGhhc2hT
dHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmluZywgaGFzaFtpXSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGR1bXBCaXRtYXAoQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQsIGNvbnN0IGNoYXIqIGNo
ZWNrc3VtKQorc3RhdGljIHZvaWQgZHVtcEJpdG1hcChDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4
dCwgY29uc3QgY2hhciogY2hlY2tzdW0sIFdLU2l6ZSBpbWFnZVNpemUsIFdLU2l6ZSB3aW5kb3dT
aXplKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUlt
YWdlKGJpdG1hcENvbnRleHQpKTsKICAgICBhdXRvIGltYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAgICAgYXV0byBpbWFnZURlc3QgPSBhZG9wdENGKENHSW1h
Z2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywg
MSwgMCkpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwg
aW1hZ2UuZ2V0KCksIDApOworCisgICAgYXV0byBwcm9wZXJ0aWVzRGljdGlvbmFyeSA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CisgICAgZG91YmxlIHJlc29sdXRpb25XaWR0aCA9IDcyLjAgKiBpbWFnZVNpemUud2lk
dGggLyB3aW5kb3dTaXplLndpZHRoOworICAgIGRvdWJsZSByZXNvbHV0aW9uSGVpZ2h0ID0gNzIu
MCAqIGltYWdlU2l6ZS5oZWlnaHQgLyB3aW5kb3dTaXplLmhlaWdodDsKKyAgICBhdXRvIHJlc29s
dXRpb25XaWR0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJlc29sdXRpb25XaWR0aCkpOworICAgIGF1dG8g
cmVzb2x1dGlvbkhlaWdodE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJlc29sdXRpb25IZWlnaHQpKTsKKyAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NHSW1h
Z2VQcm9wZXJ0eURQSVdpZHRoLCByZXNvbHV0aW9uV2lkdGhOdW1iZXIuZ2V0KCkpOworICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0dJbWFnZVBy
b3BlcnR5RFBJSGVpZ2h0LCByZXNvbHV0aW9uSGVpZ2h0TnVtYmVyLmdldCgpKTsKKworICAgIENH
SW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UuZ2V0KCksIHBy
b3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpKTsKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6
ZShpbWFnZURlc3QuZ2V0KCkpOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSA9IENG
RGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKTsKQEAgLTE4MSwxMCArMTkwLDEyIEBAIHZv
aWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFNuYXBz
aG90UmVzdWx0VHlwZSBzbmFwc2hvCiAgICAgaWYgKHJlcGFpbnRSZWN0cykKICAgICAgICAgcGFp
bnRSZXBhaW50UmVjdE92ZXJsYXkoY29udGV4dC5nZXQoKSwgaW1hZ2VTaXplLCByZXBhaW50UmVj
dHMpOwogCisgICAgYXV0byB3aW5kb3dTaXplID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPndpbmRvd0ZyYW1lKCkuc2l6ZTsKKwogICAgIGNoYXIgYWN0dWFsSGFz
aFszM107CiAgICAgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQ29udGV4dChjb250ZXh0LmdldCgp
LCBhY3R1YWxIYXNoKTsKICAgICBpZiAoIWNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1
bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQotICAgICAgICBkdW1wQml0bWFwKGNvbnRleHQuZ2V0KCks
IGFjdHVhbEhhc2gpOworICAgICAgICBkdW1wQml0bWFwKGNvbnRleHQuZ2V0KCksIGFjdHVhbEhh
c2gsIGltYWdlU2l6ZSwgd2luZG93U2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>