Set up a Firewall with UFW

Set up a Firewall with UFW

simplify secured firewall

                        PHA+VW5jb21wbGljYXRlZCBGaXJld2FsbCAoVUZXKSBpcyBhIHNpbXBsaWZpZWQgZmlyZXdhbGwgbWFuYWdlbWVudCBpbnRlcmZhY2UgdGhhdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBsb3dlci1sZXZlbCBwYWNrZXQgZmlsdGVyaW5nIHRlY2hub2xvZ2llcyBzdWNoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmlwdGFibGVzPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+dWZ0YWJsZXM8L2NvZGU+LiBMZXTigJlzIGxlYXJuIGhvdyB0byBzZXQgdXAgYSBmaXJld2FsbCB3aXRoIFVGVyBvbiBVYnVudHUgc2VydmVyLjwvcD4KCjxoMiBpZD0idXNpbmctaXB2Ni13aXRoLXVmdyI+VXNpbmcgSVB2NiB3aXRoIFVGVzwvaDI+Cgo8cD5JZiB5b3VyIFVidW50dSBzZXJ2ZXIgaGFzIElQdjYgZW5hYmxlZCwgZW5zdXJlIHRoYXQgVUZXIGlzIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCBJUHY2IHNvIHRoYXQgaXQgd2lsbCBtYW5hZ2UgZmlyZXdhbGwgcnVsZXMgZm9yIElQdjYgaW4gYWRkaXRpb24gdG8gSVB2NC4gVG8gZG8gdGhpcywgb3BlbiB0aGUgVUZXIGNvbmZpZ3VyYXRpb24gd2l0aCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5uYW5vPC9jb2RlPiBvciB5b3VyIGZhdm91cml0ZSBlZGl0b3I6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPm5hbm8gL2V0Yy9kZWZhdWx0L3Vmdwo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGVuIG1ha2Ugc3VyZSB0aGUgdmFsdWUgb2YgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+SVBWNjwvY29kZT4gaXMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+eWVzPC9jb2RlPi4gSXQgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLWNvbmYgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibiI+SVBWNjwvc3Bhbj49PHNwYW4gY2xhc3M9Im4iPnllczwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+U2F2ZSBhbmQgY2xvc2UgdGhlIGZpbGUuIE5vdywgd2hlbiBVRlcgaXMgZW5hYmxlZCwgaXQgd2lsbCBiZSBjb25maWd1cmVkIHRvIHdyaXRlIGJvdGggSVB2NCAmYW1wOyBJUHY2IGZpcmV3YWxsIHJ1bGVzLiBIb3dldmVyLCBiZWZvcmUgZW5hYmxpbmcgVUZXLCB3ZSB3aWxsIHdhbnQgdG8gZW5zdXJlIHRoYXQgeW91ciBmaXJld2FsbCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHlvdSB0byBjb25uZWN0IDxlbT52aWE8L2VtPiBTU0guIExldOKAmXMgc3RhcnQgd2l0aCBzZXR0aW5nIHRoZSBkZWZhdWx0IHBvbGljaWVzLjwvcD4KCjxoMiBpZD0ic2V0dGluZy11cC1kZWZhdWx0LXBvbGljaWVzIj5TZXR0aW5nIHVwIGRlZmF1bHQgcG9saWNpZXM8L2gyPgoKPHA+QnkgZGVmYXVsdCwgVUZXIGlzIHNldCB0byBkZW55IGFsbCBpbmNvbWluZyBjb25uZWN0aW9ucyBhbmQgYWxsb3cgYWxsIG91dGdvaW5nIGNvbm5lY3Rpb25zLiBUaGlzIG1lYW5zIGFueW9uZSB0cnlpbmcgdG8gcmVhY2ggeW91ciBzZXJ2ZXIgd291bGQgbm90IGJlIGFibGUgdG8gY29ubmVjdCwgd2hpbGUgYW55IGFwcGxpY2F0aW9uIHdpdGhpbiB0aGUgc2VydmVyIHdvdWxkIGJlIGFibGUgdG8gcmVhY2ggdGhlIG91dHNpZGUgd29ybGQuPC9wPgoKPHA+SWYgeW91IGhhdmUgYWxyZWFkeSBlZGl0ZWQgVUZXLCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdHMgdXNlZCBieSBVRlcsIHVzZSB0aGVzZSBjb21tYW5kczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlZmF1bHQgZGVueSBpbmNvbWluZwo8c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkZWZhdWx0IGFsbG93IG91dGdvaW5nCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoZXNlIGZpcmV3YWxsIGRlZmF1bHRzIGFsb25lIG1pZ2h0IHN1ZmZpY2UgZm9yIGEgcGVyc29uYWwgY29tcHV0ZXIsIGJ1dCBzZXJ2ZXJzIHR5cGljYWxseSBuZWVkIHRvIHJlc3BvbmQgdG8gaW5jb21pbmcgcmVxdWVzdHMgZnJvbSBvdXRzaWRlIHVzZXJzLjwvcD4KCjxoMiBpZD0iYWxsb3dpbmctc3NoLWNvbm5lY3Rpb25zIj5BbGxvd2luZyBTU0ggY29ubmVjdGlvbnM8L2gyPgoKPHA+SWYgeW914oCZcmUgdXNpbmcgYSBjbG91ZCBzZXJ2ZXIsIHlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gYWxsb3cgaW5jb21pbmcgU1NIIGNvbm5lY3Rpb25zIHNvIHlvdSBjYW4gY29ubmVjdCB0byBhbmQgbWFuYWdlIHlvdXIgc2VydmVyLjwvcD4KCjxwPlRvIGNvbmZpZ3VyZSB5b3VyIHNlcnZlciB0byBhbGxvdyBpbmNvbWluZyBTU0ggY29ubmVjdGlvbnMsIHlvdSBjYW4gdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IHNzaAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGlzIHdpbGwgY3JlYXRlIGZpcmV3YWxsIHJ1bGVzIHRoYXQgd2lsbCBhbGxvdyBhbGwgY29ubmVjdGlvbnMgb24gcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMjwvY29kZT4sIHdoaWNoIGlzIHRoZSBwb3J0IHRoYXQgdGhlIFNTSCBkYWVtb24gbGlzdGVucyBvbiBieSBkZWZhdWx0LiBVRlcga25vd3Mgd2hhdCBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmFsbG93IHNzaDwvY29kZT4gbWVhbnMgYmVjYXVzZSBpdOKAmXMgbGlzdGVkIGFzIGEgc2VydmljZSBpbiB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+L2V0Yy9zZXJ2aWNlczwvY29kZT5maWxlLjwvcD4KCjxwPkhvd2V2ZXIsIHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZXF1aXZhbGVudCBydWxlIGJ5IHNwZWNpZnlpbmcgdGhlIHBvcnQgaW5zdGVhZCBvZiB0aGUgc2VydmljZSBuYW1lLiBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIHdvcmtzIHRoZSBzYW1lIGFzIHRoZSBvbmUgYWJvdmU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyAyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5JZiB5b3UgY29uZmlndXJlZCB5b3UgU1NIIGRhZW1vbiB0byB1c2UgYSBkaWZmZXJlbnQgcG9ydCwgeW91IHdpbGwgaGF2ZSB0byBzcGVjaWZ5IHRoZSBhcHByb3ByaWF0ZSBwb3J0LiBGb3IgZXhhbXBsZSwgaWYgeW91ciBTU0ggc2VydmVyIGlzIGxpc3RlbmluZyBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIyMjI8L2NvZGU+LCB5b3UgY2FuIHVzZSB0aGlzIGNvbW1hbmQgdG8gYWxsb3cgY29ubmVjdGlvbnMgb24gdGhhdCBwb3J0OjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgMjIyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Ob3cgdGhhdCB5b3VyIGZpcmV3YWxsIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgaW5jb21pbmcgU1NIIGNvbm5lY3Rpb25zLCB3ZSBjYW4gZW5hYmxlIGl0LjwvcD4KCjxoMiBpZD0iZW5hYmxpbmctdWZ3Ij5FbmFibGluZyBVRlc8L2gyPgoKPHA+VG8gZW5hYmxlIFVGVywgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IDxzcGFuIGNsYXNzPSJuYiI+ZW5hYmxlPC9zcGFuPgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Zb3Ugd2lsbCByZWNlaXZlIGEgd2FybmluZyB0aGF0IHNheXMgdGhlIGNvbW1hbmQgbWF5IGRpc3J1cHQgZXhpc3RpbmcgU1NIIGNvbm5lY3Rpb25zLiBXZSBhbHJlYWR5IHNldCB1cCBhIGZpcmV3YWxsIHJ1bGUgdGhhdCBhbGxvd3MgU1NIIGNvbm5lY3Rpb25zLCBzbyBpdCBzaG91bGQgYmUgZmluZSB0byBjb250aW51ZS4gUmVzcG9uZCB0byB0aGUgcHJvbXB0IHdpdGggPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+eTwvY29kZT4gYW5kIGhpdCA8a2JkPkVOVEVSPC9rYmQ+LjwvcD4KCjxwPlRoZSBmaXJld2FsbCBpcyBub3cgYWN0aXZlLiBSdW4gdGhlIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IHN0YXR1cyB2ZXJib3NlPC9jb2RlPiBjb21tYW5kIHRvIHNlZSB0aGUgcnVsZXMgdGhhdCBhcmUgc2V0LjwvcD4KCjxoMiBpZD0iYWxsb3dpbmctb3RoZXItY29ubmVjdGlvbnMiPkFsbG93aW5nIG90aGVyIGNvbm5lY3Rpb25zPC9oMj4KCjxwPkF0IHRoaXMgcG9pbnQsIHlvdSBzaG91bGQgYWxsb3cgYWxsIG9mIHRoZSBvdGhlciBjb25uZWN0aW9ucyB0aGF0IHlvdXIgc2VydmVyIG5lZWRzIHRvIHJlc3BvbmQgdG8uIFRoZSBjb25uZWN0aW9ucyB0aGF0IHlvdSBzaG91bGQgYWxsb3cgZGVwZW5kcyBvbiB5b3VyIHNwZWNpZmljIG5lZWRzLiBMdWNraWx5LCB5b3UgYWxyZWFkeSBrbm93IGhvdyB0byB3cml0ZSBydWxlcyB0aGF0IGFsbG93IGNvbm5lY3Rpb25zIGJhc2VkIG9uIGEgc2VydmljZSBuYW1lIG9yIHBvcnQ7IHdlIGFscmVhZHkgZGlkIHRoaXMgZm9yIFNTSCBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIyPC9jb2RlPi4gWW91IGNhbiBhbHNvIGRvIHRoaXMgZm9yOjwvcD4KCjx1bD4KICA8bGk+SFRUUCBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjgwPC9jb2RlPiwgdXNpbmc6IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IGh0dHA8L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IDgwPC9jb2RlPgo8L2xpPgogIDxsaT5IVFRQUyBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjQ0MzwvY29kZT4sIHVzaW5nIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IGh0dHBzPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5zdWRvIHVmdyBhbGxvdyA0NDM8L2NvZGU+CjwvbGk+CjwvdWw+Cgo8cD5UaGVyZSBhcmUgc2V2ZXJhbCBvdGhlcnMgd2F5cyB0byBhbGxvdyBvdGhlciBjb25uZWN0aW9ucywgYXNpZGUgZnJvbSBzcGVjaWZ5aW5nIGEgcG9ydCBvciBrbm93biBzZXJ2aWNlLjwvcD4KCjxoMyBpZD0ic3BlY2lmaWMtcG9ydC1yYW5nZXMiPlNwZWNpZmljIHBvcnQgcmFuZ2VzPC9oMz4KCjxwPllvdSBjYW4gc3BlY2lmeSBwb3J0IHJhbmdlcyB3aXRoIFVGVy4gU29tZSBhcHBsaWNhdGlvbnMgdXNlIG11bHRpcGxlIHBvcnRzLCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHBvcnQuPC9wPgoKPHA+Rm9yIGV4YW1wbGUsIHRvIGFsbG93IFgxMSBjb25uZWN0aW9ucywgd2hpY2ggdXNlIHBvcnRzIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjYwMDA8L2NvZGU+LTxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjYwMDc8L2NvZGU+LCB1c2UgdGhlc2UgY29tbWFuZHM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyA2MDAwOjYwMDcvdGNwCjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDYwMDA6NjAwNy91ZHAKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+V2hlbiBzcGVjaWZ5aW5nIHBvcnQgcmFuZ2VzIHdpdGggVUZXLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBwcm90b2NvbCAoPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+dGNwPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj51ZHA8L2NvZGU+KSB0aGF0IHRoZSBydWxlcyBzaG91bGQgYXBwbHkgdG8uIFdlIGhhdmVu4oCZdCBtZW50aW9uZWQgdGhpcyBiZWZvcmUgYmVjYXVzZSBub3Qgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgYXV0b21hdGljYWxseSBhbGxvd3MgYm90aCBwcm90b2NvbHMsIHdoaWNoIGlzIE9LIGluIG1vc3QgY2FzZXMuPC9wPgoKPGgzIGlkPSJzcGVjaWZpYy1pcC1hZGRyZXNzZXMiPlNwZWNpZmljIElQIGFkZHJlc3NlczwvaDM+Cgo8cD5XaGVuIHdvcmtpbmcgd2l0aCBVRlcsIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IElQIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFsbG93IGNvbm5lY3Rpb25zIGZyb20gYSBzcGVjaWZpYyBJUCBhZGRyZXNzLCBzdWNoIGFzIGEgd29yayBvciBob21lIElQIGFkZHJlc3Mgb2YgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MjAxLjIwMi4yMDMuMjA0PC9jb2RlPiwgeW91IG5lZWQgdG8gc3BlY2lmeSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5mcm9tPC9jb2RlPiwgdGhlbiB0aGUgSVAgYWRkcmVzczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IGZyb20gMjAxLjIwMi4yMDMuMjA0CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPllvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgc3BlY2lmaWMgcG9ydCB0aGF0IHRoZSBJUCBhZGRyZXNzIGlzIGFsbG93ZWQgdG8gY29ubmVjdCB0byBieSBhZGRpbmcgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+dG8gYW55IHBvcnQ8L2NvZGU+IGZvbGxvd2VkIGJ5IHRoZSBwb3J0IG51bWJlci4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFsbG93IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIwMS4yMDIuMjAzLjIwNDwvY29kZT4gdG8gY29ubmVjdCB0byBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIyPC9jb2RlPiwgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IGZyb20gMjAxLjIwMi4yMDMuMjA0IHRvIGFueSBwb3J0IDIyCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxoMyBpZD0ic3VibmV0cyI+U3VibmV0czwvaDM+Cgo8cD5JZiB5b3Ugd2FudCB0byBhbGxvdyBhIHN1Ym5ldCBvZiBJUCBhZGRyZXNzZXMsIHlvdSBjYW4gZG8gc28gdXNpbmcgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGEgbmV0IG1hc2suIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhbGxvdyBhbGwgb3QgdGhlIElQIGFkZHJlc3NlcyByYW5naW5nIGZyb20gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MjAyLjAuMTEwLjE8L2NvZGU+IHRvIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIwMi4wLjExMC4yNTQ8L2NvZGU+IHlvdSBjb3VsZCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgMjAyLjAuMTEwLjAvMjQKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+TGlrZXdpc2UsIHlvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBwb3J0IHRoYXQgdGhlIHN1Ym5ldCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMDIuMC4xMTAuMC8yNDwvY29kZT4gaXMgYWxsb3dlZCB0byBjb25uZWN0IHRvLiBBZ2Fpbiwgd2XigJlsbCB1c2UgcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMjwvY29kZT4gYXMgYW4gZXhhbXBsZTo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IGZyb20gMjAyLjAuMTEwLjAvMjQgdG8gYW55IHBvcnQgMjIKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPGgzIGlkPSJjb25uZWN0aW9uLXRvLWEtc3BlY2lmaWMtbmV0d29yay1pbnRlcmZhY2UiPkNvbm5lY3Rpb24gdG8gYSBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZTwvaDM+Cgo8cD5JZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBmaXJld2FsbCBydWxlIHRoYXQgb25seSBhcHBsaWVzIHRvIGEgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UsIHlvdSBjYW4gZG8gc28gYnkgc3BlY2lmeWluZyA8ZW0+4oCcYWxsb3cgaW4gb27igJ08L2VtPiBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UuPC9wPgoKPHA+WW91IG1heSB3YW50IHRvIGxvb2sgdXAgeW91ciBuZXR3b3JrIGludGVyZmFjZXMgYmVmb3JlIGNvbnRpbnVpbmcuIFRvIGRvIHNvLCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+aXAgYWRkcgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGUgb3V0cHV0IGluZGljYXRlcyB0aGUgbmV0d29yayBpbnRlcmZhY2UgbmFtZXMuIFRoZXkgYXJlIHR5cGljYWxseSBuYW1lZCBzb21ldGhpbmcgbGlrZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5ldGgwPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5lbnMzPC9jb2RlPi48L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT4yOiBldGgwOiAmbHQ7QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUCZndDsgbXR1IDE1MDAgcWRpc2MgcGZpZm9fZmFzdCBzdGF0ZQouIC4gLgozOiBldGgxOiAmbHQ7QlJPQURDQVNULE1VTFRJQ0FTVCZndDsgbXR1IDE1MDAgcWRpc2Mgbm9vcCBzdGF0ZSBET1dOIGdyb3VwIGRlZmF1bHQKLiAuIC4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+U28sIGlmIHlvdXIgc2VydmVyIGhhcyBhIHB1YmxpYyBuZXR3b3JrIGludGVyZmFjZSBjYWxsZWQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZXRoMDwvY29kZT4sIHlvdSBjb3VsZCBhbGxvdyBIVFRQIHRyYWZmaWMgKHBvcnQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ODA8L2NvZGU+KSB0byBpdCB3aXRoIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDxzcGFuIGNsYXNzPSJrIj5pbiA8L3NwYW4+b24gZXRoMCB0byBhbnkgcG9ydCA4MAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Eb2luZyBzbyB3b3VsZCBhbGxvdyB5b3VyIHNlcnZlciB0byByZWNlaXZlIEhUVFAgcmVxdWVzdHMgZnJvbSB0aGUgcHVibGljIGludGVybmV0LjwvcD4KCjxwPk9yLCBpZiB5b3Ugd2FudCB5b3VyIE15U1FMIGRhdGFiYXNlIHNlcnZlciAocG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4zMzA2PC9jb2RlPikgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyBvbiB0aGUgcHJpdmF0ZSBuZXR3b3JrIGludGVyZmFjZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5ldGgxPC9jb2RlPiwgZm9yIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgPHNwYW4gY2xhc3M9ImsiPmluIDwvc3Bhbj5vbiBldGgxIHRvIGFueSBwb3J0IDMzMDYKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhpcyB3b3VsZCBhbGxvdyBvdGhlciBzZXJ2ZXJzIG9uIHlvdSBwcml2YXRlIG5ldHdvcmsgdG8gY29ubmVjdCB5b3VyIE15U1FMIGRhdGFiYXNlLjwvcD4KCjxoMiBpZD0iZGVueWluZy1jb25uZWN0aW9ucyI+RGVueWluZyBjb25uZWN0aW9uczwvaDI+Cgo8cD5JZiB5b3UgaGF2ZW7igJl0IGNoYW5nZWQgdGhlIGRlZmF1bHQgcG9saWN5IGZvciBpbmNvbWluZyBjb25uZWN0aW9ucywgVUZXIGlzIGNvbmZpZ3VyZWQgdG8gZGVueSBhbGwgaW5jb21pbmcgY29ubmVjdGlvbnMuIEdlbmVyYWxseSwgdGhpcyBzaW1wbGlmaWVzIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGEgc2VjdXJlIGZpcmV3YWxsIHBvbGljeSBieSByZXF1aXJpbmcgeW91IHRvIGNyZWF0ZSBydWxlcyB0aGF0IGV4cGxpY2l0bHkgYWxsb3cgc3BlY2lmaWMgcG9ydHMgYW5kIElQIGFkZHJlc3NlcyB0aHJvdWdoLjwvcD4KCjxwPkhvd2V2ZXIsIHNvbWV0aW1lcyB5b3Ugd2lsbCB3YW50IHRvIGRlbnkgc3BlY2lmaWMgY29ubmVjdGlvbnMgYmFzZWQgb24gdGhlIHNvdXJjZSBJUCBhZGRyZXNzIG9yIHN1Ym5ldCwgcGVyaGFwcyBiZWNhdXNlIHlvdSBrbm93IHRoYXQgeW91ciBzZXJ2ZXIgaXMgYmVpbmcgYXR0YWNrZWQgZnJvbSB0aGVyZS4gQWxzbywgaWYgeW91IHdhbnQgdG8gY2hhbmdlIHlvdXIgZGVmYXVsdCBpbmNvbWluZyBwb2xpY3kgdG8gPHN0cm9uZz5hbGxvdzwvc3Ryb25nPiAod2hpY2ggaXMgbm90IHJlY29tbWVuZGVkKSwgeW91IHdvdWxkIG5lZWQgdG8gY3JlYXRlIDxzdHJvbmc+ZGVueTwvc3Ryb25nPiBydWxlcyBmb3IgYW55IHNlcnZpY2VzIG9yIElQIGFkZHJlc3NlcyB0aGF0IHlvdSBkb27igJl0IHdhbnQgdG8gYWxsb3cgY29ubmVjdGlvbnMgZm9yLjwvcD4KCjxwPkZvciBleGFtcGxlLCB0byBkZW55IEhUVFAgY29ubmVjdGlvbnMsIHlvdSBjb3VsZCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgZGVueSBodHRwCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPk9yLCBpZiB5b3Ugd2FudCB0byBkZW55IGFsbCBjb25uZWN0aW9ucyBmcm9tIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIwMS4yMDIuMjAzLjIwNDwvY29kZT4geW91IGNvdWxkIHVzZSB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkZW55IGZyb20gMjAxLjIwMi4yMDMuMjA0CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxoMiBpZD0iZGVsZXRpbmctcnVsZXMiPkRlbGV0aW5nIHJ1bGVzPC9oMj4KCjxwPktub3dpbmcgaG93IHRvIGRlbGV0ZSBmaXJld2FsbCBydWxlcyBpcyBqdXN0IGFzIGltcG9ydGFudCBhcyBrbm93aW5nIGhvdyB0byBjcmVhdGUgdGhlbS4gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byBzcGVjaWZ5IHdoaWNoIHJ1bGVzIGRlIGRlbGV0ZTogYnkgcnVsZSBudW1iZXIgb3IgYnkgdGhlIGFjdHVhbCBydWxlLjwvcD4KCjxoMyBpZD0iYnktcnVsZS1udW1iZXIiPkJ5IHJ1bGUgbnVtYmVyPC9oMz4KCjxwPklmIHlvdeKAmXJlIHVzaW5nIHRoZSBydWxlIG51bWJlciB0byBkZWxldGUgZmlyZXdhbGwgcnVsZXMsIHRoZSBmaXJzdCB0aGluZyB5b3XigJlsbCB3YW50IHRvIGRvIGlzIGdldCBhIGxpc3Qgb2YgeW91ciBmaXJld2FsbCBydWxlcy4gVGhlIFVGVyBzdGF0dXMgY29tbWFuZCBoYXMgYW4gb3B0aW9uIHRvIGRpc3BsYXkgbnVtYmVycyBuZXh0IHRvIGVhY2ggcnVsZSwgYXMgZGVtb25zdHJhdGVkIGhlcmU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBzdGF0dXMgbnVtYmVyZWQKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+U3RhdHVzOiBhY3RpdmUKCiAgICAgVG8gICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgRnJvbQogICAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLSAgICAgIC0tLS0KWyAxXSAyMiAgICAgICAgICAgICAgICAgICAgICAgICBBTExPVyBJTiAgICAxNS4xNS4xNS4wLzI0ClsgMl0gODAgICAgICAgICAgICAgICAgICAgICAgICAgQUxMT1cgSU4gICAgQW55d2hlcmUKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+SWYgd2UgZGVjaWRlIHRoYXQgd2Ugd2FudCB0byBkZWxldGUgcnVsZSAyLCB0aGUgb25lIHRoYXQgYWxsb3dzIHBvcnQgODAgY29ubmVjdGlvbnMsIHdlIGNhbiBzcGVjaWZ5IGl0IGluIGEgVUZXIGRlbGV0ZSBjb21tYW5kIGxpa2UgdGhpczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlbGV0ZSAyCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoaXMgd291bGQgc2hvdyBhIGNvbmZpcm1hdGlvbiBwcm9tcHQgdGhlbiBkZWxldGUgcnVsZSAyLCB3aGljaCBhbGxvd3MgSFRUUCBjb25uZWN0aW9ucy4gTm90ZSB0aGF0IGlmIHlvdSBoYXZlIElQdjYgZW5hYmxlZCwgeW91IHdvdWxkIHdhbnQgdG8gZGVsZXRlIHRoZSBjb3JyZXNwb25kaW5nIElQdjYgcnVsZSBhcyB3ZWxsLjwvcD4KCjxoMiBpZD0iY2hlY2tpbmctdWZ3LXN0YXR1cy1hbmQtcnVsZXMiPkNoZWNraW5nIFVGVyBzdGF0dXMgYW5kIHJ1bGVzPC9oMj4KCjxwPkF0IGFueSB0aW1lLCB5b3UgY2FuIGNoZWNrIHRoZSBzdGF0dXMgb2YgVUZXIHdpdGggdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51Zncgc3RhdHVzIHZlcmJvc2UKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+SWYgVUZXIGlzIGRpc2FibGVkLCB3aGljaCBpdCBpcyBieSBkZWZhdWx0LCB5b3XigJlsbCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT5TdGF0dXM6IGluYWN0aXZlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPklmIFVGVyBpcyBhY3RpdmUsIHRoZSBvdXRwdXQgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPlN0YXR1czogYWN0aXZlCkxvZ2dpbmc6IG9uIChsb3cpCkRlZmF1bHQ6IGRlbnkgKGluY29taW5nKSwgYWxsb3cgKG91dGdvaW5nKSwgZGlzYWJsZWQgKHJvdXRlZCkKTmV3IHByb2ZpbGVzOiBza2lwCgpUbyAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICBGcm9tCi0tICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLSAgICAgIC0tLS0KMjIvdGNwICAgICAgICAgICAgICAgICAgICAgQUxMT1cgSU4gICAgQW55d2hlcmUKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VXNlIHRoZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5zdGF0dXM8L2NvZGU+IGNvbW1hbmQgaWYgeW91IHdhbnQgdG8gY2hlY2sgaG93IFVGVyBoYXMgY29uZmlndXJlZCB0aGUgZmlyZXdhbGwuPC9wPgoKPGgyIGlkPSJkaXNhYmxpbmctb3ItcmVzZXR0aW5nLXVmdyI+RGlzYWJsaW5nIG9yIHJlc2V0dGluZyBVRlc8L2gyPgoKPHA+SWYgeW91IGRlY2lkZSB0byBkaXNhYmxlIFVGVywgZG9pbmcgc28gd2l0aCB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkaXNhYmxlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPkFueSBydWxlcyB0aGF0IHlvdSBjcmVhdGVkIHdpdGggVUZXIHdpbGwgbm8gbG9uZ2VyIGJlIGFjdGl2ZS4gWW91IGNhbiBhbHdheXMgcnVuIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGVuYWJsZTwvY29kZT4gaWYgeW91IG5lZWQgdG8gYWN0aXZhdGUgaXQgbGF0ZXIuPC9wPgoKPHA+SWYgeW91IGFscmVhZHkgaGF2ZSBVRlcgcnVsZXMgY29uZmlndXJlZCBidXQgeW91IGRlY2lkZSB0aGF0IHlvdSB3YW50IHRvIHN0YXJ0IG92ZXIsIHlvdSBjYW4gdXNlIHRoZSByZXNldCBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgcmVzZXQKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhpcyB3aWxsIGRpc2FibGUgVUZXIGFuZCBkZWxldGUgYW55IHJ1bGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQuIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBkZWZhdWx0IHBvbGljaWVzIHdvbuKAmXQgY2hhbmdlIHRvIHRoZWlyIG9yaWdpbmFsIHNldHRpbmdzLCBpZiB5b3UgbW9kaWZpZWQgdGhlbSBhdCBhbnkgcG9pbnQuIFRoaXMgc2hvdWxkIGdpdmUgeW91IGEgZnJlc2ggc3RhcnQgd2l0aCBVRlcuPC9wPgoKPGgyIGlkPSJjb25jbHVzaW9uIj5Db25jbHVzaW9uPC9oMj4KCjxwPllvdXIgZmlyZXdhbGwgaXMgbm93IGNvbmZpZ3VyZWQgdG8gYWxsb3cgc3BlY2lmaWMgY29ubmVjdGlvbnMuIEJlIHN1cmUgdG8gYWxsb3cgYW55IG90aGVyIGluY29taW5nIGNvbm5lY3Rpb25zIHRoYXQgeW91ciBzZXJ2ZXIgbmVlZHMsIHdoaWxlIGxpbWl0aW5nIGFueSB1bm5lY2Vzc2FyeSBjb25uZWN0aW9ucywgc28geW91ciBzZXJ2ZXIgd2lsbCBiZSBmdW5jdGlvbmFsIGFuZCBzZWN1cmUuPC9wPgo=
                        
Ads by Google

林宏

Frank Lin

Hey, there! This is Frank Lin (@flinhong), one of the 1.4 billion 🇨🇳. This 'inDev. Journal' site holds the exploration of my quirky thoughts and random adventures through life. Hope you enjoy reading and perusing my posts.

YOU MAY ALSO LIKE

Setup an IKEv2 server with StrongSwan

Tutorials

2020.01.09

Setup an IKEv2 server with StrongSwan

IKEv2, or Internet Key Exchange v2, is a protocol that allows for direct IPSec tunneling between two points. In IKEv2 implementations, IPSec provides encryption for the network traffic. IKEv2 is natively supported on some platforms (OS X 10.11+, iOS 9.1+, and Windows 10) with no additional applications necessary, and it handles client hiccups quite smoothly.

Hands on IBM Cloud Functions with CLI

Tools

2020.10.20

Hands on IBM Cloud Functions with CLI

IBM Cloud CLI allows complete management of the Cloud Functions system. You can use the Cloud Functions CLI plugin-in to manage your code snippets in actions, create triggers, and rules to enable your actions to respond to events, and bundle actions into packages.