<?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>146259</bug_id>
          
          <creation_ts>2015-06-23 16:35:35 -0700</creation_ts>
          <short_desc>Add a class that tracks whether we&apos;re a background or foreground application</short_desc>
          <delta_ts>2015-06-23 17:51:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104234</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-23 16:35:35 -0700</bug_when>
    <thetext>Add a class that tracks whether we&apos;re a background or foreground application</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104235</commentid>
    <comment_count>1</comment_count>
      <attachid>255448</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-23 16:38:24 -0700</bug_when>
    <thetext>Created attachment 255448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104236</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-23 16:41:13 -0700</bug_when>
    <thetext>Attachment 255448 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ApplicationStateTracker.mm:51:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ApplicationStateTracker.mm:55:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104252</commentid>
    <comment_count>3</comment_count>
      <attachid>255448</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-23 17:12:43 -0700</bug_when>
    <thetext>Comment on attachment 255448
Patch

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

&gt; Source/WebKit2/UIProcess/ApplicationStateTracker.h:45
&gt; +    void addListener(id, SEL willEnterForegroundSelector, SEL didEnterBackgroundSelector);

Why not blocks instead of id/SEL?

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:213
&gt; +    ApplicationStateTracker::singleton().addListener(self, @selector(_applicationDidEnterBackground), @selector(_applicationWillEnterForeground));

Need WebCore:: here or in a using above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104259</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-23 17:23:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 255448 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255448&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ApplicationStateTracker.h:45
&gt; &gt; +    void addListener(id, SEL willEnterForegroundSelector, SEL didEnterBackgroundSelector);
&gt; 
&gt; Why not blocks instead of id/SEL?

Because I didn&apos;t want to have to think about retain cycles and figure out a way to remove the observers. (That&apos;s done automatically).

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:213
&gt; &gt; +    ApplicationStateTracker::singleton().addListener(self, @selector(_applicationDidEnterBackground), @selector(_applicationWillEnterForeground));
&gt; 
&gt; Need WebCore:: here or in a using above.

Yes (Well, WebKit::).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104273</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-23 17:51:23 -0700</bug_when>
    <thetext>Committed r185894: &lt;http://trac.webkit.org/changeset/185894&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255448</attachid>
            <date>2015-06-23 16:38:24 -0700</date>
            <delta_ts>2015-06-23 17:12:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146259-20150623163741.patch</filename>
            <type>text/plain</type>
            <size>20414</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDE4MTM4MDg2ZTk2ODNh
M2QzN2M0YWJmMTJlYzk4YjZhODQ5M2RlYi4uYWIyYmVlMDVlZTc1ZGM3Y2Y4OWJiYzc1MDExNDFh
MjhhYmViZGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE1LTA2LTIzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIGEgY2xhc3Mg
dGhhdCB0cmFja3Mgd2hldGhlciB3ZSdyZSBhIGJhY2tncm91bmQgb3IgZm9yZWdyb3VuZCBhcHBs
aWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2MjU5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5ODMzODA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyc3Qgc3RlcCB0b3dhcmRzIGJlaW5n
IGFibGUgdG8gc2VuZCBvdXQgdGhlc2Ugbm90aWZpY2F0aW9ucyBmb3IgdmlldyBzZXJ2aWNlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OmlzSW5CYWNrZ3JvdW5k
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6c2luZ2xldG9uKToK
KyAgICAgICAgKFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OmFk
ZExpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OmFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6QXBwbGljYXRp
b25TdGF0ZVRyYWNrZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAg
IChXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjppbnZva2VMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6cHJ1bmVMaXN0ZW5lcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAg
KC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIGluaXRdKToKKyAgICAg
ICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF91cGRhdGVCYWNr
Z3JvdW5kVGFza10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFz
a01hbmFnZXIgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF0pOgorICAgICAgICAoLVtX
S1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgX2FwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRU
YXNrTWFuYWdlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2Vy
dGlvbkJhY2tncm91bmRUYXNrTWFuYWdlciBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5k
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFz
a01hbmFnZXIgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9u
SW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBpc0JhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisyMDE1LTA2LTIzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAg
ICAgICAgQWRkIG9wZXJhdG9yISBhbmQgY29weS9tb3ZlIGNvbnN0cnVjdG9ycyB0byBXZWFrT2Jq
Q1B0cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2
MjU1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0
YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVU
cmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1MjU0ZjZhMDAyMDEzZjRkZDQ1NGE1ZGIzYmU5ZmQxOTMx
MGNjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsaWNh
dGlvblN0YXRlVHJhY2tlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyX2gKKyNkZWZpbmUgQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXJfaAorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgorI2lt
cG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyIHsKKyAgICBmcmllbmQg
TmV2ZXJEZXN0cm95ZWQ8QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+OworCitwdWJsaWM6CisgICAg
c3RhdGljIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyJiBzaW5nbGV0b24oKTsKKworICAgIGJvb2wg
aXNJbkJhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5CYWNrZ3JvdW5kOyB9CisKKyAg
ICB2b2lkIGFkZExpc3RlbmVyKGlkLCBTRUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGVjdG9yLCBT
RUwgZGlkRW50ZXJCYWNrZ3JvdW5kU2VsZWN0b3IpOworCitwcml2YXRlOgorICAgIEFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyKCk7CisgICAgfkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKCkgPSBkZWxl
dGU7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7CisgICAgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKKworICAgIHN0cnVjdCBMaXN0ZW5l
cjsKKworICAgIHZvaWQgaW52b2tlTGlzdGVuZXJzKFNFTCBMaXN0ZW5lcjo6Kik7CisgICAgdm9p
ZCBwcnVuZUxpc3RlbmVycygpOworCisgICAgYm9vbCBtX2lzSW5CYWNrZ3JvdW5kOworCisgICAg
c3RydWN0IExpc3RlbmVyIHsKKyAgICAgICAgV2Vha09iakNQdHI8aWQ+IG9iamVjdDsKKyAgICAg
ICAgU0VMIGRpZEVudGVyQmFja2dyb3VuZFNlbGVjdG9yOworICAgICAgICBTRUwgd2lsbEVudGVy
Rm9yZWdyb3VuZFNlbGVjdG9yOworICAgIH07CisgICAgVmVjdG9yPExpc3RlbmVyPiBtX2xpc3Rl
bmVyczsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZiAvLyBBcHBsaWNhdGlvblN0YXRlVHJh
Y2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk3NjQ0ZjYzNmUzMGRmNDY5Nzc1ODViMmRlNWRhZWE5
NGMzZDcyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5tbQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCIKKwor
I2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbi5oPgorI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyJiBB
cHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+IGFwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
OworCisgICAgcmV0dXJuIGFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOworfQorCitBcHBsaWNhdGlv
blN0YXRlVHJhY2tlcjo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKQoreworICAgIFVJQXBwbGlj
YXRpb24gKmFwcGxpY2F0aW9uID0gW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOwor
ICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpub3RpZmljYXRpb25DZW50ZXIgPSBbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CisKKyAgICBtX2lzSW5CYWNrZ3JvdW5kID0gYXBw
bGljYXRpb24uYXBwbGljYXRpb25TdGF0ZSA9PSBVSUFwcGxpY2F0aW9uU3RhdGVCYWNrZ3JvdW5k
OworCisgICAgW25vdGlmaWNhdGlvbkNlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6VUlBcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6YXBwbGljYXRpb24gcXVl
dWU6bmlsIHVzaW5nQmxvY2s6W3RoaXNdKE5TTm90aWZpY2F0aW9uICopIHsKKyAgICAgICAgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKKyAgICB9XTsKKworICAgIFtub3RpZmljYXRp
b25DZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kTm90aWZpY2F0aW9uIG9iamVjdDphcHBsaWNhdGlvbiBxdWV1ZTpuaWwgdXNpbmdCbG9jazpb
dGhpc10oTlNOb3RpZmljYXRpb24gKikgeworICAgICAgICBhcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoKTsKKyAgICB9XTsKK30KKwordm9pZCBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6
YWRkTGlzdGVuZXIoaWQgb2JqZWN0LCBTRUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGVjdG9yLCBT
RUwgZGlkRW50ZXJCYWNrZ3JvdW5kU2VsZWN0b3IpCit7CisgICAgQVNTRVJUKFtvYmplY3QgcmVz
cG9uZHNUb1NlbGVjdG9yOndpbGxFbnRlckZvcmVncm91bmRTZWxlY3Rvcl0pOworICAgIEFTU0VS
VChbb2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpkaWRFbnRlckJhY2tncm91bmRTZWxlY3Rvcl0p
OworCisgICAgbV9saXN0ZW5lcnMuYXBwZW5kKHsgb2JqZWN0LCB3aWxsRW50ZXJGb3JlZ3JvdW5k
U2VsZWN0b3IsIGRpZEVudGVyQmFja2dyb3VuZFNlbGVjdG9yIH0pOworfQorCit2b2lkIEFwcGxp
Y2F0aW9uU3RhdGVUcmFja2VyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCit7Cisg
ICAgbV9pc0luQmFja2dyb3VuZCA9IHRydWU7CisKKyAgICBpbnZva2VMaXN0ZW5lcnMoJkxpc3Rl
bmVyOjpkaWRFbnRlckJhY2tncm91bmRTZWxlY3Rvcik7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCit7CisgICAgbV9p
c0luQmFja2dyb3VuZCA9IGZhbHNlOworCisgICAgaW52b2tlTGlzdGVuZXJzKCZMaXN0ZW5lcjo6
d2lsbEVudGVyRm9yZWdyb3VuZFNlbGVjdG9yKTsKK30KKwordm9pZCBBcHBsaWNhdGlvblN0YXRl
VHJhY2tlcjo6aW52b2tlTGlzdGVuZXJzKFNFTCBMaXN0ZW5lcjo6KiBzZWxlY3RvcikKK3sKKyAg
ICBib29sIHNob3VsZFBydW5lTGlzdGVuZXJzID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGxp
c3RlbmVyIDogbV9saXN0ZW5lcnMpIHsKKyAgICAgICAgYXV0byBvYmplY3QgPSBsaXN0ZW5lci5v
YmplY3QuZ2V0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzaG91bGRQ
cnVuZUxpc3RlbmVycyA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHd0Zk9iamNNc2dTZW5kPHZvaWQ+KG9iamVjdC5nZXQoKSwgbGlzdGVuZXIuKnNl
bGVjdG9yKTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkUHJ1bmVMaXN0ZW5lcnMpCisgICAgICAg
IHBydW5lTGlzdGVuZXJzKCk7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OnBy
dW5lTGlzdGVuZXJzKCkKK3sKKyAgICBhdXRvIGxpc3RlbmVycyA9IFdURjo6bW92ZShtX2xpc3Rl
bmVycyk7CisgICAgQVNTRVJUKG1fbGlzdGVuZXJzLmlzRW1wdHkoKSk7CisKKyAgICBmb3IgKGF1
dG8mIGxpc3RlbmVyIDogbGlzdGVuZXJzKSB7CisgICAgICAgIGlmICghbGlzdGVuZXIub2JqZWN0
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9saXN0ZW5lcnMuYXBwZW5kKFdU
Rjo6bW92ZShsaXN0ZW5lcikpOworICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCA5
OWQ4NWFiYmViNDEwYTIwMzljNGFjNGM3ZTU4NDhkNWY5MDNjMGRmLi4xNDBlOGQ0ODY0OGY3OWZj
Yzk2ZWNmMDM1ZDAwYjQ3MTVkYTU2ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgiCiAj
aW1wb3J0ICJCS1NQcm9jZXNzQXNzZXJ0aW9uU1BJLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxp
Y2F0aW9uLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgpAQCAtNTIsNyArNTMsNiBAQCB1c2lu
ZyBXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb25DbGllbnQ7CiBAaW1wbGVtZW50YXRpb24gV0tQcm9j
ZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyCiB7CiAgICAgdW5zaWduZWQgX25lZWRz
VG9SdW5JbkJhY2tncm91bmRDb3VudDsKLSAgICBCT09MIF9hcHBJc0JhY2tncm91bmQ7CiAgICAg
VUlCYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIgX2JhY2tncm91bmRUYXNrOwogICAgIEhhc2hTZXQ8
UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCo+IF9jbGllbnRzOwogfQpAQCAtNjksMjIgKzY5LDE1IEBA
IHVzaW5nIFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbkNsaWVudDsKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfYXBwSXNCYWNrZ3JvdW5kID0gW1VJQXBwbGljYXRp
b24gc2hhcmVkQXBwbGljYXRpb25dLmFwcGxpY2F0aW9uU3RhdGUgPT0gVUlBcHBsaWNhdGlvblN0
YXRlQmFja2dyb3VuZDsKICAgICBfYmFja2dyb3VuZFRhc2sgPSBVSUJhY2tncm91bmRUYXNrSW52
YWxpZDsKIAotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpV
SUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
LSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBBcHBsaWNhdGlvblN0YXRlVHJhY2tl
cjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoc2VsZiwgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCwgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAq
Y2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwotICAgIFtjZW50
ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6
c2VsZiBuYW1lOlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07Ci0KICAgICBpZiAoX2JhY2tncm91bmRUYXNrICE9IFVJQmFja2dyb3VuZFRhc2tJ
bnZhbGlkKQogICAgICAgICBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIGVuZEJh
Y2tncm91bmRUYXNrOl9iYWNrZ3JvdW5kVGFza107CiAKQEAgLTEwMyw3ICs5Niw3IEBAIHVzaW5n
IFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbkNsaWVudDsKIAogLSAodm9pZClfdXBkYXRlQmFja2dy
b3VuZFRhc2sKIHsKLSAgICBib29sIHNob3VsZEhvbGRUYXNrID0gX25lZWRzVG9SdW5JbkJhY2tn
cm91bmRDb3VudCAmJiBfYXBwSXNCYWNrZ3JvdW5kOworICAgIGJvb2wgc2hvdWxkSG9sZFRhc2sg
PSBfbmVlZHNUb1J1bkluQmFja2dyb3VuZENvdW50ICYmIEFwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
OjpzaW5nbGV0b24oKS5pc0luQmFja2dyb3VuZCgpOwogCiAgICAgaWYgKHNob3VsZEhvbGRUYXNr
ICYmIF9iYWNrZ3JvdW5kVGFzayA9PSBVSUJhY2tncm91bmRUYXNrSW52YWxpZCkgewogICAgICAg
ICBfYmFja2dyb3VuZFRhc2sgPSBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIGJl
Z2luQmFja2dyb3VuZFRhc2tXaXRoTmFtZTpAImNvbS5hcHBsZS5XZWJLaXQuUHJvY2Vzc0Fzc2Vy
dGlvbiIgZXhwaXJhdGlvbkhhbmRsZXI6XnsKQEAgLTEyMywxNSArMTE2LDEzIEBAIHVzaW5nIFdl
YktpdDo6UHJvY2Vzc0Fzc2VydGlvbkNsaWVudDsKICAgICB9CiB9CiAKLS0gKHZvaWQpX2FwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24K
Ky0gKHZvaWQpX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogewotICAgIF9hcHBJc0Jh
Y2tncm91bmQgPSBOTzsKICAgICBbc2VsZiBfdXBkYXRlQmFja2dyb3VuZFRhc2tdOwogfQogCi0t
ICh2b2lkKV9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KKy0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kCiB7Ci0g
ICAgX2FwcElzQmFja2dyb3VuZCA9IFlFUzsKICAgICBbc2VsZiBfdXBkYXRlQmFja2dyb3VuZFRh
c2tdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5o
CmluZGV4IGM2YmIzYjdlM2QyYTg3ZThiNjZiZTJiZmU3NDlkY2Q1YTViNDMzNTEuLjEyMmM3YTlm
NDk3YjJjN2I5ZDc0ZjQxNzc2ZjJiNmI5NTE3NTk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIHN0cnVjdCBXZWJQ
YWdlQ29uZmlndXJhdGlvbjsKIEBwYWNrYWdlCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVBy
b3h5PiBfcGFnZTsKICAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwotICAgIEJPT0wgX2lzQmFja2dy
b3VuZDsKIH0KIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjM5NTczYzAzMzJiYzdl
NmE1NThkNDlkZjU1YjJkNjNiNWVhZTc1My4uMDZlYTJiNjM1MWE1ZTlkZjRkYWQ1ZTA5OThiN2U2
MjdhZjYwMDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0
ICJBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGxJT1Mu
aCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQg
IlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKQEAgLTE4OCw4ICsxODksNiBAQCBw
cml2YXRlOgogICAgIF9wYWdlLT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKICAgICBfcGFnZS0+
c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCi0gICAgX2lzQmFja2dyb3VuZCA9IFtVSUFw
cGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS5hcHBsaWNhdGlvblN0YXRlID09IFVJQXBwbGlj
YXRpb25TdGF0ZUJhY2tncm91bmQ7Ci0KICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygp
LndrVmlld0NvdW50Kys7CiAKICAgICBfcm9vdENvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1VJVmll
dyBhbGxvY10gaW5pdF0pOwpAQCAtMjExLDggKzIxMCw4IEBAIHByaXZhdGU6CiAKICAgICBzZWxm
LmxheWVyLmhpdFRlc3RzQXNPcGFxdWUgPSBZRVM7CiAKLSAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9h
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6VUlBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6W1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGlj
YXRpb25dXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQ6KSBuYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9u
IG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl1dOworICAgIEFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5lcihzZWxmLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQpKTsKKwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2FwcGxpY2F0aW9u
V2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24gb2JqZWN0OltVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXV07CiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6KSBuYW1lOlVJQXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0OltVSUFwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXV07CiAKQEAgLTMwNiw3ICszMDUsNyBAQCBwcml2YXRlOgogCiAt
IChCT09MKWlzQmFja2dyb3VuZAogewotICAgIHJldHVybiBfaXNCYWNrZ3JvdW5kOworICAgIHJl
dHVybiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6c2luZ2xldG9uKCkuaXNJbkJhY2tncm91bmQo
KTsKIH0KIAogLSAodm9pZClfc2hvd0luc3BlY3RvckhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6
SGlnaGxpZ2h0JiloaWdobGlnaHQKQEAgLTU0MSwxNiArNTQwLDE0IEBAIHByaXZhdGU6CiAgICAg
X3BhZ2UtPmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOwogfQogCi0tICh2b2lkKV9hcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgor
LSAodm9pZClfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQKIHsKLSAgICBfaXNCYWNrZ3Jv
dW5kID0gWUVTOwogICAgIF9wYWdlLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwog
ICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3
U3RhdGU6OklzSW5XaW5kb3cpOwogfQogCi0tICh2b2lkKV9hcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KKy0gKHZvaWQpX2FwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZAogewotICAgIF9pc0JhY2tncm91bmQgPSBOTzsKICAgICBf
cGFnZS0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgaWYgKGF1dG8gZHJh
d2luZ0FyZWEgPSBfcGFnZS0+ZHJhd2luZ0FyZWEoKSkKICAgICAgICAgZHJhd2luZ0FyZWEtPmhp
ZGVDb250ZW50VW50aWxOZXh0VXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQzOGI0Njk0MTFjZGUyMTJhZGMzYmUw
NGY1ZjU2MTkzYTA0OTc1Ny4uYTEzZWE4ZGM2MmI1NTIyMjk5MWRhMjAzOGYzYzFlZjM0MjYwNjIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDQ0LDYgKzQ0NCw4IEBACiAJCTFBRDI1RTk2MTY3QUIwODEwMEVBOUJDRCAvKiBE
b3dubG9hZFByb3h5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUQyNUU5NDE2N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1hcC5oICov
OyB9OwogCQkxQUQzMzA2RTE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRDMzMDZDMTZC
MUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuY3BwICovOyB9OwogCQkxQUQzMzA2RjE2
QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUQzMzA2RDE2QjFEOTkxMDA0RjYwRTcgLyogU3Rv
cmFnZUFyZWFJbXBsLmggKi87IH07CisJCTFBRDRDMTkyMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRDRDMTkwMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRl
VHJhY2tlci5tbSAqLzsgfTsKKwkJMUFENEMxOTMxQjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUQ0QzE5MTFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIuaCAqLzsgfTsKIAkJMUFENjBGNUQxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVy
ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUQ2
MEY1QjE4RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5tbSAqLzsgfTsKIAkJMUFE
NjBGNUUxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRDYwRjVDMThFMjBGNEMwMDIwQzAz
NCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQkxQUQ2MEY2MDE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0
dXJlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUQ2MEY1RjE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFs
LmggKi87IH07CkBAIC0yNTU5LDYgKzI1NjEsOCBAQAogCQkxQUQyNUU5NDE2N0FCMDgxMDBFQTlC
Q0QgLyogRG93bmxvYWRQcm94eU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEb3dubG9hZFByb3h5TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRDMz
MDZDMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZUFyZWFJbXBsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFEMzMwNkQxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVh
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFENEMxOTAxQjM5RjMzMjAwQUJDMjhF
IC8qIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBRDRDMTkxMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0
YXRlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlv
blN0YXRlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUQ2MEY1QjE4
RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2luZG93RmVhdHVyZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBRDYwRjVDMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1
cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2luZG93RmVhdHVyZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFENjBGNUYxOEUyMEY3NDAwMjBDMDM0
IC8qIFdLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUxMDEsNiArNTEwNSw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUM1NDI1NkFFMThCRUMxNjEwMERFNDE3OSAvKiBmb3JtcyAqLywKKwkJCQkx
QUQ0QzE5MTFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCAqLywK
KwkJCQkxQUQ0QzE5MDFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIu
bW0gKi8sCiAJCQkJQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlci5oICovLAogCQkJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIubW0gKi8sCiAJCQkJMEYwQzM2NUQxOEMxMTBBNTAwRjYwN0Q3IC8qIExh
eWVyUmVwcmVzZW50YXRpb24ubW0gKi8sCkBAIC04MzM3LDYgKzgzNDMsNyBAQAogCQkJCTFBNjZC
RjhGMThBMDUyRUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjZGOUE4M0IxOEEzNDY4MTAwQUVCODhBIC8qIFdLV2ViVmlld1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRDYwRjVFMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1
cmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBBQkMyOEUgLyogQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjYwMThFMjBG
NzQwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQkVDREU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTU2Nyw2ICs5NTc0LDcgQEAKIAkJCQkxQUVGQ0MxMzEx
RDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRUZDQ0JEMTFEMDJDNUUwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmVNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQTA0Mzk3NzEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUQ0QzE5MjFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTBFQzkwNzEyNEMwQUI4
MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc4NjVCOTE2Q0FDNzE1MDBBQ0U4M0EgLyog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAo=
</data>
<flag name="review"
          id="280525"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>