<?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>196435</bug_id>
          
          <creation_ts>2019-03-31 18:07:21 -0700</creation_ts>
          <short_desc>[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements</short_desc>
          <delta_ts>2019-04-01 09:46:00 -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>HTML Editing</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>196442</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522841</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-31 18:07:21 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/48573098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522842</commentid>
    <comment_count>1</comment_count>
      <attachid>366379</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-03-31 18:15:08 -0700</bug_when>
    <thetext>Created attachment 366379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522920</commentid>
    <comment_count>2</comment_count>
      <attachid>366379</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-04-01 08:43:17 -0700</bug_when>
    <thetext>Comment on attachment 366379
Patch

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

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:204
&gt; +        // we would prefer to insert an Apple maps link instead.

&quot;Apple Maps link&quot;, not &quot;Apple maps link&quot;

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:256
&gt; +inline static void readURLAlongsideAttachmentIfNecessary(PasteboardWebContentReader&amp; reader, PasteboardStrategy&amp; strategy, const String&amp; typeIdentifier, const String&amp; pasteboardName, int itemIndex)

I don’t think we need to write inline here. Doesn’t affect the compiler’s decision on whether to inline in practice these days, just the ability to include the same function in multiple translation units.

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:260
&gt; +    auto cfType = typeIdentifier.createCFString();
&gt; +    if (!UTTypeConformsTo(cfType.get(), kUTTypeVCard))
&gt; +        return;

I think this reads better without the local variable. Without RetainPtr, we would need it so we can write the release, but with RetainPtr it can just be one expression.

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:278
&gt; +    auto cfType = info.contentTypeForHighestFidelityItem().createCFString();
&gt; +    if (UTTypeConformsTo(cfType.get(), kUTTypeVCard))
&gt; +        return true;

Ditto. Or if we do have a local variable then I suggest it contain the type as a WTF::String, use it above for the isEmpty() check, and put the createCFString call into the call to UTTypeConformsTo.

Also might just return UTTypeConformsTo instead of if (x) return true; return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522924</commentid>
    <comment_count>3</comment_count>
      <attachid>366379</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-04-01 09:05:56 -0700</bug_when>
    <thetext>Comment on attachment 366379
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:204
&gt;&gt; +        // we would prefer to insert an Apple maps link instead.
&gt; 
&gt; &quot;Apple Maps link&quot;, not &quot;Apple maps link&quot;

Fixed!

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:256
&gt;&gt; +inline static void readURLAlongsideAttachmentIfNecessary(PasteboardWebContentReader&amp; reader, PasteboardStrategy&amp; strategy, const String&amp; typeIdentifier, const String&amp; pasteboardName, int itemIndex)
&gt; 
&gt; I don’t think we need to write inline here. Doesn’t affect the compiler’s decision on whether to inline in practice these days, just the ability to include the same function in multiple translation units.

Ok! Removed `inline` from the two new static helper functions here.

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:260
&gt;&gt; +        return;
&gt; 
&gt; I think this reads better without the local variable. Without RetainPtr, we would need it so we can write the release, but with RetainPtr it can just be one expression.

Sounds good — removed the local variable.

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:278
&gt;&gt; +        return true;
&gt; 
&gt; Ditto. Or if we do have a local variable then I suggest it contain the type as a WTF::String, use it above for the isEmpty() check, and put the createCFString call into the call to UTTypeConformsTo.
&gt; 
&gt; Also might just return UTTypeConformsTo instead of if (x) return true; return false;

Removed the local variable and changed the last part to be a single return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522925</commentid>
    <comment_count>4</comment_count>
      <attachid>366399</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-04-01 09:06:43 -0700</bug_when>
    <thetext>Created attachment 366399
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522928</commentid>
    <comment_count>5</comment_count>
      <attachid>366399</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 09:45:31 -0700</bug_when>
    <thetext>Comment on attachment 366399
Patch for landing

Clearing flags on attachment: 366399

Committed r243695: &lt;https://trac.webkit.org/changeset/243695&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366379</attachid>
            <date>2019-03-31 18:15:08 -0700</date>
            <delta_ts>2019-04-01 08:43:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196435-20190331181507.patch</filename>
            <type>text/plain</type>
            <size>12384</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJhZWU2NmMyODc2MjEy
M2U5MTBlZjYxMDFjZDViNWJkZTkzNjU4Zi4uMTIxZGEzYzVlMDY2OWNmOTUwYWQwYmE4NDk3YzNj
YWRiYjYwY2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlZmFj
dG9yIHNvbWUgbG9naWMgZm9yIGluc2VydGluZyBwYXN0ZWQgb3IgZHJvcHBlZCB2aXJ0dWFsIGNh
cmQgZmlsZXMgYXMgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2NDM1CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRh
cjovL3Byb2JsZW0vNDg1NzMwOTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWN0b3Igc29tZSBleGlzdGluZyBjb2RlcGF0aHMgb24gaU9TIGZv
ciBpbnNlcnRpbmcgVkNhcmQgZmlsZXMgYXMgYXR0YWNobWVudCBlbGVtZW50cy4gSW5zdGVhZCBv
ZiB1c2luZyBhCisgICAgICAgIHNlcGFyYXRlIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUgbWV0aG9k
IGZvciBjb252ZXJ0aW5nIGEgdmNhcmQgZmlsZSBvciBkYXRhIGludG8gYW4gYXR0YWNobWVudCBl
bGVtZW50IChwb3NzaWJseQorICAgICAgICBhY2NvbXBhbmllZCBieSBhIGxpbmspLCB1c2UgdGhl
IGV4aXN0aW5nIHJlYWRGaWxlUGF0aHMgV2ViQ29udGVudFJlYWRlciBtZXRob2QuCisKKyAgICAg
ICAgVG8gaGFuZGxlIGxpbmtzIHdoaWNoIG1heSBhY2NvbXBhbnkgdGhlIGF0dGFjaG1lbnQgZWxl
bWVudCwgYWRkIGEgaGVscGVyIG1ldGhvZCBpbiBQYXN0ZWJvYXJkSU9TIHRoYXQgcmVhZHMgYQor
ICAgICAgICB0aXRsZWQgVVJMIHByaW9yIHRvIGluc2VydGluZyBhbiBhdHRhY2htZW50IGVsZW1l
bnQsIGluIHRoZSBjYXNlIG9mIHBhc3Rpbmcgb3IgZHJvcHBpbmcgYSBWQ0YuCisKKyAgICAgICAg
VGhpcyBtZWFucyB3ZSBubyBsb25nZXIgbmVlZCB0byBoYW5kbGUgYXR0YWNobWVudCByZWFkaW5n
IGluIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlLCBzbyB3ZSBjYW4KKyAgICAg
ICAgc2ltcGx5IGJhaWwgYmVmb3JlIHJlYWRpbmcgInB1YmxpYy52Y2FyZCIgaGVyZSBhbmQgZGVm
ZXIgdG8gcmVhZGluZyBvdGhlciBkYXRhIHR5cGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgQVBJIHRlc3RzIGluIFdLQXR0YWNobWVudFRlc3RzIGFuZCBEcmFnQW5kRHJvcFRlc3Rz
SU9TLgorCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVi
b2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxv
bmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNB
dHRhY2htZW50UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZp
ZGVsaXRpZXMpOgorCiAyMDE5LTAzLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgbW9yZSBpMzg2IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDdlNzhkYjEwZWUyYmJh
NmYwNDM0YTg1YzFjMzQyOTNiMDI4MjIyZjQuLjNjMzExMTJmYmU0Mzk5N2E0NjQyMjAyMDVmZDE5
NDAzNDM3ZjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVu
dFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5o
CkBAIC03Nyw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFZpcnR1YWxDb250
YWN0RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHVybFRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKSBvdmVycmlkZTsKICNl
bmRpZgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKQEAg
LTk2LDcgKzk1LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHJl
YWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCByZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggOWU4ZTI2NTZkNTFkZTY5ZWFhMGUwNjU0Mzc4OGExZmRhY2Y3ODU1
NS4uOGQxZjllNzdmZDFmNjgyZWUxMDM1YzEyNWUwMWY2NjM2YTIzMGZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTc3NCwyOCArNzc0LDYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFRpdGxlKQotewotICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7Ci0g
ICAgaWYgKCFmcmFnbWVudCkKLSAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Ci0KLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmVhZFVSTCh1cmwsIHVybFRpdGxlKTsKLQotICAg
IGF1dG8gYXR0YWNobWVudENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCkpOwotICAgIGF0dGFjaG1lbnRDb250YWluZXItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUJsb2NrLCB0cnVlKTsKLSAgICBhdHRh
Y2htZW50Q29udGFpbmVyLT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRmlsZVBhdGgoZnJhbWUs
IGZpbGVQYXRoKSk7Ci0gICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0YWNobWVu
dENvbnRhaW5lcikpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCmluZGV4IDM1YTgzMWQxYzBhMzA5YzM3NjE1YzFiNTA3ZjYzN2FmMzgxNGVhNTAuLjRhMmYz
NjQ1YzQwMzlhYmRiZThiNDY4YTQyODgzYzBiZDRlZDZmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKQEAgLTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFZpcnR1YWxDb250YWN0RmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVybFRpdGxlKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
UlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKQEAgLTI4OSw3ICsyODgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBEaWROb3RSZWFkVHlwZSwKICAgICAgICAgUGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5CiAgICAgfTsKLSAgICBSZWFkZXJSZXN1bHQgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0
YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBQYXN0ZWJvYXJkU3RyYXRlZ3km
LCBOU1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0ZW1JbmZv
Jik7CisgICAgUmVhZGVyUmVzdWx0IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBl
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgUGFzdGVib2FyZFN0cmF0ZWd5JiwgTlNTdHJp
bmcgKnR5cGUsIGludCBpdGVtSW5kZXgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDVlZjNj
ZThhOWFhOGY5YzA5MzA1ZGQ5ZDI2MmJjYjg0ZDhhNzYwYTguLjNiMzMyYzYzN2I4MmM0ZDA0NGRi
ODAxNjk4OTdhNmU4ZmNhYmQ5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGJvb2wgaXNUeXBlQWxs
b3dlZEJ5UmVhZGluZ1BvbGljeShOU1N0cmluZyAqdHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kKICAgICAgICAgfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVGbGF0UlRGRF07CiB9CiAKLVBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJv
YXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBOU1N0cmlu
ZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0ZW1JbmZvJiBpbmZvKQor
UGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29u
dGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3Rl
Ym9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRlbUluZGV4KQog
ewogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdIHx8
IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZV0pIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKQEAgLTE5OCwyNCAr
MTk4LDEwIEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVi
b2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgfQogCiAgICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVkNhcmRdKSB7Ci0g
ICAgICAgIGJvb2wgY2FuQ3JlYXRlQXR0YWNobWVudHMgPSBmYWxzZTsKLSNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNh
bkNyZWF0ZUF0dGFjaG1lbnRzID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoY2FuQ3JlYXRl
QXR0YWNobWVudHMpIHsKLSAgICAgICAgICAgIGF1dG8gcGF0aCA9IGluZm8ucGF0aEZvckNvbnRl
bnRUeXBlKGtVVFR5cGVWQ2FyZCk7Ci0gICAgICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7Ci0KLSAg
ICAgICAgICAgIFN0cmluZyB0aXRsZTsKLSAgICAgICAgICAgIGF1dG8gdXJsID0gc3RyYXRlZ3ku
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUp
OwotICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7Ci0KLSAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFZpcnR1YWxDb250YWN0RmlsZShw
YXRoLCB1cmwsIHRpdGxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpS
ZWFkVHlwZTsKLSAgICAgICAgfQorICAgICAgICAvLyBXaGVuIGRyb3BwaW5nIG9yIHBhc3Rpbmcg
YSB2aXJ0dWFsIGNvbnRhY3QgZmlsZSBpbiBlZGl0YWJsZSBjb250ZW50LCB0aGVyZSdzIG5ldmVy
IGEgY2FzZSB3aGVyZSB3ZQorICAgICAgICAvLyB3b3VsZCB3YW50IHRvIGR1bXAgdGhlIGVudGly
ZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcyBwbGFpbiB0ZXh0LiBJbnN0ZWFkLCBmYWxsIGJhY2sg
b24gYW5vdGhlcgorICAgICAgICAvLyBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbiwgc3VjaCBh
cyBhIFVSTCBvciBwbGFpbiB0ZXh0LiBGb3IgaW5zdGFuY2UsIGluIHRoZSBjYXNlIG9mIGFuIE1L
TWFwSXRlbSwKKyAgICAgICAgLy8gd2Ugd291bGQgcHJlZmVyIHRvIGluc2VydCBhbiBBcHBsZSBt
YXBzIGxpbmsgaW5zdGVhZC4KICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiAgICAgfQogCkBAIC0yNjcsNiArMjUzLDMzIEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJl
c3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0
ZWJvCiAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiB9CiAKK2lubGlu
ZSBzdGF0aWMgdm9pZCByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRl
Z3ksIGNvbnN0IFN0cmluZyYgdHlwZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludCBpdGVtSW5kZXgpCit7CisgICAgYXV0byBjZlR5cGUgPSB0eXBlSWRlbnRpZmll
ci5jcmVhdGVDRlN0cmluZygpOworICAgIGlmICghVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0
KCksIGtVVFR5cGVWQ2FyZCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyB0aXRsZTsK
KyAgICBhdXRvIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IHBhc3RlYm9hcmROYW1lLCB0aXRsZSk7CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKTsKK30KKworaW5saW5lIHN0YXRpYyBib29sIHBy
ZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRpb24oY29uc3QgUGFzdGVib2FyZEl0ZW1JbmZvJiBp
bmZvKQoreworICAgIGlmIChpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgp
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGluZm8ucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6
QXR0YWNobWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGNmVHlwZSA9IGlu
Zm8uY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVWQ2FyZCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVu
dFJlYWRpbmdQb2xpY3kgcG9saWN5KQogewogICAgIHJlYWRlci5jb250ZW50T3JpZ2luID0gcmVh
ZE9yaWdpbigpOwpAQCAtMjk0LDEyICszMDcsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkrKykgewogICAgICAgICBh
dXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVi
b2FyZE5hbWUpOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIGlmIChj
YW5SZWFkQXR0YWNobWVudCkgeworICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcHJl
ZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgewogICAgICAgICAgICAgYXV0byB0
eXBlRm9yRmlsZVVwbG9hZCA9IGluZm8uY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVt
KCk7Ci0gICAgICAgICAgICBpZiAoIXR5cGVGb3JGaWxlVXBsb2FkLmlzRW1wdHkoKSAmJiBpbmZv
LnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID09IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9u
U3R5bGU6OkF0dGFjaG1lbnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpLCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlciAmJiByZWFkZXIucmVhZERh
dGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGluZm8uc3VnZ2VzdGVkRmlsZU5h
bWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpLCB0eXBlRm9yRmls
ZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAgICAgICByZWFkVVJMQWxv
bmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIHR5cGVGb3JGaWxl
VXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpKTsKKyAgICAgICAgICAgICAgICByZWFkZXIucmVh
ZERhdGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGluZm8uc3VnZ2VzdGVkRmls
ZU5hbWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTMwOSw3ICszMjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwog
ICAgICAgICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGlj
eSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaXRlbVJl
c3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRl
Z3ksIHR5cGUsIGksIGluZm8pOworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBh
c3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSk7
CiAgICAgICAgICAgICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRX
YXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMzNiw3
ICszNDksOCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICBhdXRvIGluZm8gPSBz
dHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1l
KTsKICAgICAgICAgYXV0byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZvLnBhdGhGb3JIaWdoZXN0
RmlkZWxpdHlJdGVtKCk7CiAgICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kg
PT0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhYXR0
YWNobWVudEZpbGVQYXRoLmlzRW1wdHkoKTsKLSAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50
ICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2FyZEl0ZW1QcmVz
ZW50YXRpb25TdHlsZTo6QXR0YWNobWVudCkgeworICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1l
bnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgeworICAgICAgICAg
ICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5
LCBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpLCBtX3Bhc3RlYm9hcmRO
YW1lLCBpbmRleCk7CiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRocyh7IFdURk1vdmUo
YXR0YWNobWVudEZpbGVQYXRoKSB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CkBAIC0zNDgsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZp
ZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgICAg
IGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2Fy
ZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCwgaW5m
byk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVz
dWx0OjpSZWFkVHlwZSkK
</data>
<flag name="review"
          id="382756"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366399</attachid>
            <date>2019-04-01 09:06:43 -0700</date>
            <delta_ts>2019-04-01 09:45:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-196435-20190401090642.patch</filename>
            <type>text/plain</type>
            <size>12347</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJhZWU2NmMyODc2MjEy
M2U5MTBlZjYxMDFjZDViNWJkZTkzNjU4Zi4uODgxNjA1YWEyYzU0ZDA0NWJiM2Y2OTA5MmMwZDkz
MTVhNTcwMjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTAzLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlZmFj
dG9yIHNvbWUgbG9naWMgZm9yIGluc2VydGluZyBwYXN0ZWQgb3IgZHJvcHBlZCB2aXJ0dWFsIGNh
cmQgZmlsZXMgYXMgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2NDM1CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRh
cjovL3Byb2JsZW0vNDg1NzMwOTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgUmVmYWN0b3Igc29tZSBleGlzdGluZyBjb2RlcGF0aHMgb24gaU9TIGZvciBp
bnNlcnRpbmcgVkNhcmQgZmlsZXMgYXMgYXR0YWNobWVudCBlbGVtZW50cy4gSW5zdGVhZCBvZiB1
c2luZyBhCisgICAgICAgIHNlcGFyYXRlIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUgbWV0aG9kIGZv
ciBjb252ZXJ0aW5nIGEgdmNhcmQgZmlsZSBvciBkYXRhIGludG8gYW4gYXR0YWNobWVudCBlbGVt
ZW50IChwb3NzaWJseQorICAgICAgICBhY2NvbXBhbmllZCBieSBhIGxpbmspLCB1c2UgdGhlIGV4
aXN0aW5nIHJlYWRGaWxlUGF0aHMgV2ViQ29udGVudFJlYWRlciBtZXRob2QuCisKKyAgICAgICAg
VG8gaGFuZGxlIGxpbmtzIHdoaWNoIG1heSBhY2NvbXBhbnkgdGhlIGF0dGFjaG1lbnQgZWxlbWVu
dCwgYWRkIGEgaGVscGVyIG1ldGhvZCBpbiBQYXN0ZWJvYXJkSU9TIHRoYXQgcmVhZHMgYQorICAg
ICAgICB0aXRsZWQgVVJMIHByaW9yIHRvIGluc2VydGluZyBhbiBhdHRhY2htZW50IGVsZW1lbnQs
IGluIHRoZSBjYXNlIG9mIHBhc3Rpbmcgb3IgZHJvcHBpbmcgYSBWQ0YuCisKKyAgICAgICAgVGhp
cyBtZWFucyB3ZSBubyBsb25nZXIgbmVlZCB0byBoYW5kbGUgYXR0YWNobWVudCByZWFkaW5nIGlu
IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlLCBzbyB3ZSBjYW4KKyAgICAgICAg
c2ltcGx5IGJhaWwgYmVmb3JlIHJlYWRpbmcgInB1YmxpYy52Y2FyZCIgaGVyZSBhbmQgZGVmZXIg
dG8gcmVhZGluZyBvdGhlciBkYXRhIHR5cGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgQVBJIHRlc3RzIGluIFdLQXR0YWNobWVudFRlc3RzIGFuZCBEcmFnQW5kRHJvcFRlc3RzSU9T
LgorCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2Fy
ZFdlYkNvbnRlbnREYXRhRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVVJMQWxvbmdz
aWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNBdHRh
Y2htZW50UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVs
aXRpZXMpOgorCiAyMDE5LTAzLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgbW9yZSBpMzg2IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDdlNzhkYjEwZWUyYmJhNmYw
NDM0YTg1YzFjMzQyOTNiMDI4MjIyZjQuLjNjMzExMTJmYmU0Mzk5N2E0NjQyMjAyMDVmZDE5NDAz
NDM3ZjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBA
IC03Nyw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFZpcnR1YWxDb250YWN0
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVy
bFRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKSBvdmVycmlkZTsKICNlbmRp
ZgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTk2
LDcgKzk1LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCByZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRN
TChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggOWU4ZTI2NTZkNTFkZTY5ZWFhMGUwNjU0Mzc4OGExZmRhY2Y3ODU1NS4u
OGQxZjllNzdmZDFmNjgyZWUxMDM1YzEyNWUwMWY2NjM2YTIzMGZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTc3NCwyOCArNzc0LDYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVybFRpdGxlKQotewotICAgIGlm
IChmaWxlUGF0aC5pc0VtcHR5KCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7Ci0gICAg
aWYgKCFmcmFnbWVudCkKLSAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7Ci0KLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGlmICgh
dXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmVhZFVSTCh1cmwsIHVybFRpdGxlKTsKLQotICAgIGF1
dG8gYXR0YWNobWVudENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCkpOwotICAgIGF0dGFjaG1lbnRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUJsb2NrLCB0cnVlKTsKLSAgICBhdHRhY2ht
ZW50Q29udGFpbmVyLT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRmlsZVBhdGgoZnJhbWUsIGZp
bGVQYXRoKSk7Ci0gICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0YWNobWVudENv
bnRhaW5lcikpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CmluZGV4IDM1YTgzMWQxYzBhMzA5YzM3NjE1YzFiNTA3ZjYzN2FmMzgxNGVhNTAuLjRhMmYzNjQ1
YzQwMzlhYmRiZThiNDY4YTQyODgzYzBiZDRlZDZmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTEzNyw3ICsxMzcsNiBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFZpcnR1YWxDb250YWN0RmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVybFRpdGxlKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpID0gMDsKQEAgLTI4OSw3ICsyODgsNyBAQCBwcml2YXRlOgogICAgICAg
ICBEaWROb3RSZWFkVHlwZSwKICAgICAgICAgUGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5
CiAgICAgfTsKLSAgICBSZWFkZXJSZXN1bHQgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZv
clR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBQYXN0ZWJvYXJkU3RyYXRlZ3kmLCBO
U1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0ZW1JbmZvJik7
CisgICAgUmVhZGVyUmVzdWx0IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgUGFzdGVib2FyZFN0cmF0ZWd5JiwgTlNTdHJpbmcg
KnR5cGUsIGludCBpdGVtSW5kZXgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDVlZjNjZThh
OWFhOGY5YzA5MzA1ZGQ5ZDI2MmJjYjg0ZDhhNzYwYTguLjQxZDkwNTYzZTQxMzZjYTQ5N2M0ZGY3
ODNlMzZiOTgyOTZjZTdlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGJvb2wgaXNUeXBlQWxsb3dl
ZEJ5UmVhZGluZ1BvbGljeShOU1N0cmluZyAqdHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kK
ICAgICAgICAgfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVGbGF0UlRGRF07CiB9CiAKLVBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJk
OjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBOU1N0cmluZyAq
dHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0ZW1JbmZvJiBpbmZvKQorUGFz
dGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVu
dERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRlbUluZGV4KQogewog
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdIHx8IFt0
eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZV0pIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKQEAgLTE5OCwyNCArMTk4
LDEwIEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2Fy
ZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVkNhcmRdKSB7Ci0gICAg
ICAgIGJvb2wgY2FuQ3JlYXRlQXR0YWNobWVudHMgPSBmYWxzZTsKLSNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNhbkNy
ZWF0ZUF0dGFjaG1lbnRzID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoY2FuQ3JlYXRlQXR0
YWNobWVudHMpIHsKLSAgICAgICAgICAgIGF1dG8gcGF0aCA9IGluZm8ucGF0aEZvckNvbnRlbnRU
eXBlKGtVVFR5cGVWQ2FyZCk7Ci0gICAgICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7Ci0KLSAgICAg
ICAgICAgIFN0cmluZyB0aXRsZTsKLSAgICAgICAgICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUpOwot
ICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7Ci0KLSAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFZpcnR1YWxDb250YWN0RmlsZShwYXRo
LCB1cmwsIHRpdGxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpSZWFk
VHlwZTsKLSAgICAgICAgfQorICAgICAgICAvLyBXaGVuIGRyb3BwaW5nIG9yIHBhc3RpbmcgYSB2
aXJ0dWFsIGNvbnRhY3QgZmlsZSBpbiBlZGl0YWJsZSBjb250ZW50LCB0aGVyZSdzIG5ldmVyIGEg
Y2FzZSB3aGVyZSB3ZQorICAgICAgICAvLyB3b3VsZCB3YW50IHRvIGR1bXAgdGhlIGVudGlyZSBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcyBwbGFpbiB0ZXh0LiBJbnN0ZWFkLCBmYWxsIGJhY2sgb24g
YW5vdGhlcgorICAgICAgICAvLyBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBh
IFVSTCBvciBwbGFpbiB0ZXh0LiBGb3IgaW5zdGFuY2UsIGluIHRoZSBjYXNlIG9mIGFuIE1LTWFw
SXRlbSwKKyAgICAgICAgLy8gd2Ugd291bGQgcHJlZmVyIHRvIGluc2VydCBhbiBBcHBsZSBNYXBz
IGxpbmsgaW5zdGVhZC4KICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5
cGU7CiAgICAgfQogCkBAIC0yNjcsNiArMjUzLDI5IEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3Vs
dCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJv
CiAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiB9CiAKK3N0YXRpYyB2
b2lkIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3NhcnkoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3Qg
U3RyaW5nJiB0eXBlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
IGl0ZW1JbmRleCkKK3sKKyAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8odHlwZUlkZW50aWZpZXIu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVHlwZVZDYXJkKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgU3RyaW5nIHRpdGxlOworICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgcGFzdGVib2FyZE5hbWUsIHRpdGxlKTsKKyAgICBpZiAoIXVy
bC5pc0VtcHR5KCkpCisgICAgICAgIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpOworfQorCitz
dGF0aWMgYm9vbCBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKGNvbnN0IFBhc3RlYm9h
cmRJdGVtSW5mbyYgaW5mbykKK3sKKyAgICBhdXRvIGNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVs
aXR5SXRlbSA9IGluZm8uY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CisgICAg
aWYgKGNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
ID09IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OkF0dGFjaG1lbnQpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIFVUVHlwZUNvbmZvcm1zVG8oY29udGVudFR5cGVG
b3JIaWdoZXN0RmlkZWxpdHlJdGVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFR5cGVWQ2Fy
ZCk7Cit9CisKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCiB7CiAgICAgcmVhZGVy
LmNvbnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CkBAIC0yOTQsMTIgKzMwMywxMiBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2Vi
Q29udGVudFJlYWRpbmdQb2xpYwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVt
czsgaSsrKSB7CiAgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKLSAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50KSB7CisgICAgICAgIGlmIChjYW5S
ZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKGluZm8pKSB7
CiAgICAgICAgICAgICBhdXRvIHR5cGVGb3JGaWxlVXBsb2FkID0gaW5mby5jb250ZW50VHlwZUZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKLSAgICAgICAgICAgIGlmICghdHlwZUZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVi
b2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudCkgewotICAgICAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGVG
b3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoYnVm
ZmVyICYmIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9hZCwg
aW5mby5zdWdnZXN0ZWRGaWxlTmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAg
ICAgICAgICAgIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3NhcnkocmVhZGVyLCBz
dHJhdGVneSwgdHlwZUZvckZpbGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUsIGkpOworICAgICAg
ICAgICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVwbG9h
ZCwgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzA5LDcgKzMxOCw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljCiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRp
bmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZv
clR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSwgaW5mbyk7CisgICAgICAgICAgICBhdXRv
IGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIs
IHN0cmF0ZWd5LCB0eXBlLCBpKTsKICAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRl
clJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMzM2LDcgKzM0NSw4IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAg
ICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5k
ZXgsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBhdXRvIGF0dGFjaG1lbnRGaWxlUGF0aCA9
IGluZm8ucGF0aEZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKICAgICAgICAgYm9vbCBjYW5SZWFk
QXR0YWNobWVudCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpICYmICFhdHRhY2htZW50RmlsZVBhdGguaXNFbXB0eSgpOwotICAgICAgICBp
ZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9
PSBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlOjpBdHRhY2htZW50KSB7CisgICAgICAg
IGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9u
KGluZm8pKSB7CisgICAgICAgICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNz
YXJ5KHJlYWRlciwgc3RyYXRlZ3ksIGluZm8uY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJ
dGVtKCksIG1fcGFzdGVib2FyZE5hbWUsIGluZGV4KTsKICAgICAgICAgICAgIHJlYWRlci5yZWFk
RmlsZVBhdGhzKHsgV1RGTW92ZShhdHRhY2htZW50RmlsZVBhdGgpIH0pOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KQEAgLTM0OCw3ICszNTgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYg
cmVhZGVyLAogICAgICAgICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5
cGUsIHBvbGljeSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHJl
c3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRl
Z3ksIHR5cGUsIGluZGV4LCBpbmZvKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4KTsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hh
bmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>