<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title></title>
	<atom:link href="http://www.keenlio.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.keenlio.com</link>
	<description>Programming solutions, tips and tutorials</description>
	<lastBuildDate>Thu, 18 Feb 2021 08:41:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6.1</generator>
		<item>
		<title>Laravel Lumen API Validation in Service Class</title>
		<link>http://www.keenlio.com/laravel-lumen-validation-in-service-class/</link>
		<comments>http://www.keenlio.com/laravel-lumen-validation-in-service-class/#comments</comments>
		<pubDate>Thu, 18 Feb 2021 08:16:48 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Laravel]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1322</guid>
		<description><![CDATA[<p>If you need a validation outside of controller such as service container or service class, below example code may help. Copy traits ProvidesConvenienceMethods from laravel/lumen-framework/src/Routing to your folder as convenient. Eg, App\Services folder. namespace App\Services\product; use App\Models\Products\Product; use App\Services\ProvidesConvenienceMethods; class ProductCreateService { use ProvidesConvenienceMethods; public function store($request) { // validate request data $product_data = $this-&#62;validator($request-&#62;all(), [ 'name' [&#8230;]</p><p>The post <a href="http://www.keenlio.com/laravel-lumen-validation-in-service-class/">Laravel Lumen API Validation in Service Class</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>If you need a validation outside of controller such as service container or service class, below example code may help.</p>
<p>Copy traits ProvidesConvenienceMethods from laravel/lumen-framework/src/Routing to your folder as convenient. Eg, App\Services folder.</p>
<pre><code>
namespace App\Services\product;

use App\Models\Products\Product;

<b>use </b>App\Services\ProvidesConvenienceMethods;

class ProductCreateService
{
    use ProvidesConvenienceMethods;

    public function store($request)
    {       
        // validate request data
        $product_data = $this-&gt;validator($request-&gt;all(), [
            'name' =&gt; 'required|string|min:1|max:255',
            'sku' =&gt; 'required|string|min:1|max:120',
            'qty_available' =&gt; 'numeric|required|min:1',

            // validate each array element if array items
            'items.*.sku' =&gt; 'required|string|min:1|max:120',
            'items.*.qty_required' =&gt; 'numeric|required|min:1',
            'items.*.item_price' =&gt; 'required|regex:/^\d+(\.\d{1,2})?$/'
        ]);

</code></pre>
<p>According to the documentation: &#8220;By default, Lumen&#8217;s base controller class uses a <code>ProvidesConvenienceMethods</code> trait which provides a convenient method to validate incoming HTTP request with a variety of powerful validation rules.&#8221;</p>
<p>Reference: https://lumen.laravel.com/docs/8.x/validation</p>
<p>Hope this helped someone out there.</p>
<p>The post <a href="http://www.keenlio.com/laravel-lumen-validation-in-service-class/">Laravel Lumen API Validation in Service Class</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/laravel-lumen-validation-in-service-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laravel Lumen API Validate Json Array</title>
		<link>http://www.keenlio.com/laravel-validate-json-array/</link>
		<comments>http://www.keenlio.com/laravel-validate-json-array/#comments</comments>
		<pubDate>Thu, 18 Feb 2021 07:44:49 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1316</guid>
		<description><![CDATA[<p>I have this json array as my request data from API. Example input: { "name": "Test Bundle", "sku": "SKU123", "qty_available": "2", "items":[ { "sku": "SKU123-1", "qty_required": "1", "item_price": "32.00" }, { "sku": "SKU123-2", "qty_required": "1", "item_price": "12.00" } ] } Validation in laravel: // validate request data $bundle_data = $this-&#62;validate($request, [ 'name' =&#62; 'required&#124;string&#124;min:1&#124;max:255', 'sku' [&#8230;]</p><p>The post <a href="http://www.keenlio.com/laravel-validate-json-array/">Laravel Lumen API Validate Json Array</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I have this json array as my request data from API.<br />
Example input:</p>
<pre><code>
{
    "name": "Test Bundle",
    "sku": "SKU123",
    "qty_available": "2",
	"items":[
        {
            "sku": "SKU123-1",
            "qty_required": "1",
            "item_price": "32.00"
        },
        {
            "sku": "SKU123-2",
            "qty_required": "1",
            "item_price": "12.00"
        }
    ]
}
</code></pre>
<p>Validation in laravel:</p>
<pre><code>
// validate request data
        $bundle_data = $this-&gt;validate($request, [
            'name' =&gt; 'required|string|min:1|max:255',
            'sku' =&gt; 'required|string|min:1|max:120',
            'qty_available' =&gt; 'numeric|required|min:1',

            // validate each array element if array items
            'items.*.sku' =&gt; 'required|string|min:1|max:120',
            'items.*.qty_required' =&gt; 'numeric|required|min:1',
            'items.*.item_price' =&gt; 'required|regex:/^\d+(\.\d{1,2})?$/'
        ]);
</code></pre>
<p>Hope this helped someone else.</p>
<p>Reference: https://stackoverflow.com/questions/42258185/how-to-validate-array-in-laravel</p>
<p>The post <a href="http://www.keenlio.com/laravel-validate-json-array/">Laravel Lumen API Validate Json Array</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/laravel-validate-json-array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento 2 Error Can&#8217;t run this operation: deployment configuration is absent.</title>
		<link>http://www.keenlio.com/magento-2-error-cant-run-this-operation-deployment-configuration-is-absent/</link>
		<comments>http://www.keenlio.com/magento-2-error-cant-run-this-operation-deployment-configuration-is-absent/#comments</comments>
		<pubDate>Tue, 05 Jan 2021 03:38:37 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1310</guid>
		<description><![CDATA[<p>We all know that Magento has CLI command. You can call Magento CLI commands using shortcuts instead of the full command name. For example, you can call bin/magento setup:upgrade using bin/magento If you sees this error:  Can't run this operation: deployment configuration is absent. Run 'magento setup:config:set --help' for options. Please check whether your two files are [&#8230;]</p><p>The post <a href="http://www.keenlio.com/magento-2-error-cant-run-this-operation-deployment-configuration-is-absent/">Magento 2 Error Can&#8217;t run this operation: deployment configuration is absent.</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>We all know that Magento has CLI command. You can call Magento CLI commands using shortcuts instead of the full command name. For example, you can call</p>
<pre><code>bin/magento setup:upgrade</code></pre>
<p>using <code>bin/magento</code></p>
<p>If you sees this error:</p>
<pre><code> Can't run this operation: deployment configuration is absent. Run 'magento setup:config:set --help' for options.</code></pre>
<p>Please check whether your two files are exist:</p>
<pre>1. app/etc/env.php
2. app/etc/config.php</pre>
<p>Next, check the settings of dababase and redis connection information, credentials are correct.</p>
<p>Once the above are correctly set, rerun the command</p>
<pre><code>bin/magento setup:upgrade</code></pre>
<p>You might face another error</p>
<pre><code>
Fatal error: Uncaught Error: Cannot instantiate interface Magento\Store\Api\StoreRepositoryInterface
</code></pre>
<p>When seeing this error, do run another command below:</p>
<pre>php -dmemory_limit=-1 bin/magento setup:di:compile</pre>
<p>Note, using &#8220;-dmemory_limit=-1&#8243; is so that you won&#8217;t get &#8220;Allowed memory size of 134217728 bytes exhausted&#8221; error.</p>
<p>Hope this helped someone out there.</p>
<p>The post <a href="http://www.keenlio.com/magento-2-error-cant-run-this-operation-deployment-configuration-is-absent/">Magento 2 Error Can&#8217;t run this operation: deployment configuration is absent.</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/magento-2-error-cant-run-this-operation-deployment-configuration-is-absent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MAC Big Sur NGINX Installation PHP-FPM error</title>
		<link>http://www.keenlio.com/mac-big-sur-nginx-installation-php-fpm-error/</link>
		<comments>http://www.keenlio.com/mac-big-sur-nginx-installation-php-fpm-error/#comments</comments>
		<pubDate>Mon, 28 Dec 2020 10:27:14 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[NGINX]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php fpm]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1305</guid>
		<description><![CDATA[<p>After PHP7 installation and try run $ php-fpm Below error: ERROR:failed to open configuration file &#8216;/private/etc/php-fpm.conf&#8217;: No such file or directory.. It is due to the configuration file with the path /private/etc/php-fpm.conf and the file does not exist. To solve this cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf After copying this file, you need to modify some of the things in [&#8230;]</p><p>The post <a href="http://www.keenlio.com/mac-big-sur-nginx-installation-php-fpm-error/">MAC Big Sur NGINX Installation PHP-FPM error</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>After PHP7 installation and try run</p>
<p>$ php-fpm</p>
<p>Below error:</p>
<p>ERROR:failed to open configuration file &#8216;/private/etc/php-fpm.conf&#8217;: No such file or directory..</p>
<p>It is due to the configuration file with the path /private/etc/php-fpm.conf and the file does not exist.<br />
To solve this <code>cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf</code><br />
After copying this file, you need to modify some of the things in this php-fpm.conf file</p>
<ol>
<li>
<div> ; Note: the default prefix is /usr/var</div>
</li>
<li>
<div>; Default Value: log/php-fpm.log</div>
</li>
<li>
<div>error_log = log/php-fpm.log</div>
</li>
</ol>
<p>Note that there is an error_log, the default directory is /usr/var/&#8230;, but there is no such path in the mac directory, so if you run php-fpm at this time, you will get an error:</p>
<ol>
<li>
<div> $ php-fpm &#8211;fpm-config /usr/local/etc/php-fpm.conf</div>
</li>
<li>
<div> ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory</div>
</li>
</ol>
<p>We can modify this configuration code:</p>
<pre><code>error_log = /usr/local/var/log/php-fpm.log
</code></pre>
<p>Similarly, modify the pid:</p>
<pre><code>pid = /usr/local/var/run/php-fpm.pid
</code></pre>
<p>Note that the last line of this configuration file is:<code>include=/private/etc/php-fpm.d/*.conf</code><br />
will read all files in the /private/etc/php-fpm.d/ directory with the .conf suffix, and the .conf file does not exist, so we copy one directly. /private/etc/php-fpm.d/<a href="http://www.conf.default/" target="_blank" rel="nofollow,noindex">www.conf.default</a>Is /private/etc/php-fpm.d/<a href="http://www.conf/" target="_blank" rel="nofollow,noindex">www.conf</a>.Just fine.</p>
<p>Run:<br />
$ php-fpm &#8211;fpm-config /usr/local/etc/php-fpm.conf<br />
If an error occurs:<br />
ERROR: unable to bind listening socket for address &#8217;127.0.0.1:9000&#8242;: Address<br />
This shows that 127.0.0.1:9000 has been bound and can be resolved by the command killall php-fpm</p>
<p>The post <a href="http://www.keenlio.com/mac-big-sur-nginx-installation-php-fpm-error/">MAC Big Sur NGINX Installation PHP-FPM error</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/mac-big-sur-nginx-installation-php-fpm-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Your password does not satisfy the current policy requirements</title>
		<link>http://www.keenlio.com/mysql-your-password-does-not-satisfy-the-current-policy-requirements/</link>
		<comments>http://www.keenlio.com/mysql-your-password-does-not-satisfy-the-current-policy-requirements/#comments</comments>
		<pubDate>Mon, 28 Dec 2020 09:03:54 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1302</guid>
		<description><![CDATA[<p>This happened due to MySQL Validate Password Policy level is higher. You can see password validate configuration metrics using the following query in MySQL client: SHOW VARIABLES LIKE 'validate_password%'; The output should be something like that : +--------------------------------------+-------+ &#124; Variable_name &#124; Value &#124; +--------------------------------------+-------+ &#124; validate_password.check_user_name &#124; ON &#124; &#124; validate_password.dictionary_file &#124; &#124; &#124; validate_password.length &#124; 6 [&#8230;]</p><p>The post <a href="http://www.keenlio.com/mysql-your-password-does-not-satisfy-the-current-policy-requirements/">MySQL Your password does not satisfy the current policy requirements</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This happened due to MySQL Validate Password Policy level is higher.</p>
<p>You can see <i>password validate configuration metrics</i> using the following query in MySQL client:</p>
<pre><code>SHOW VARIABLES LIKE 'validate_password%';
</code></pre>
<p>The output should be something like that :</p>
<pre><code>+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
</code></pre>
<p>then you can set the password policy level lower, for example:</p>
<p>mysql&gt; SET GLOBAL validate_password.policy = LOW;</p>
<p>The post <a href="http://www.keenlio.com/mysql-your-password-does-not-satisfy-the-current-policy-requirements/">MySQL Your password does not satisfy the current policy requirements</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/mysql-your-password-does-not-satisfy-the-current-policy-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OSX Kubernetes  Run `brew link` on these: kubernetes-cli</title>
		<link>http://www.keenlio.com/mac-osx-kubernetes-run-brew-link-on-these-kubernetes-cli/</link>
		<comments>http://www.keenlio.com/mac-osx-kubernetes-run-brew-link-on-these-kubernetes-cli/#comments</comments>
		<pubDate>Sun, 26 Jul 2020 04:07:09 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1294</guid>
		<description><![CDATA[<p>You may see this error after installed Kubernetes and run &#8220;brew doctor&#8221;. Warning: You have unlinked kegs in your Cellar. Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run `brew link` on these: kubernetes-cli It can be solved by running below [&#8230;]</p><p>The post <a href="http://www.keenlio.com/mac-osx-kubernetes-run-brew-link-on-these-kubernetes-cli/">Mac OSX Kubernetes  Run `brew link` on these: kubernetes-cli</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAABPCAYAAAB/GaRWAAAgAElEQVR4Ae2d+7+WRdX/PYFIjxoFKZQGaESiiOCjYJkJfjnI10cwQUxJEKTiJREqZCiekAckAalIAxIT4rDZlIdAMyBQqD/rel7v2X1uh8trZs2+D3vf7D0/3K+5r2tm1qy15jMz61pzuuAvf/lLceTIX4oD+w8UAwcMLO64447iggsuyL+sg4yBjIGMgYyBjIGMgYyBvo4BGYKHOw5nQ7CvV3aWL3doGQMZAxkDGQMZAxkDPgYwBDs7jxQHDxzMhqCvmPw/N5SMgYyBjIGMgYyBjIG+jgEMQX6HDh4qBg7MU8N5WjwvC8gYyBjIGMgYyBjIGOg3GJBH0K0RzIZg/vLp618+Wb6M8YyBjIGMgYyBjIHPMSCPIIbgpZdeWrlZZPyNg4prr7nEZZow4bLi+usHuv8jv3lJcf11Az4n1mLF3nTjoGLvOxOL791xeY+VmfJFMGbMmOLWW28tLr744hpfeFd5941vfKP2LoVWPWmuvvrq4pVXXiluvPHGlpdVD3+N5rntttucfMjIb+TIkZVy3nTTTcXevXuLO++8szI+xsdTTz1VzJ8/v9v5QjS/+93vOl6/9KUvJdFsdvkhvhp534h+Gym3XfJeeOGFxdixY4vFixcXixYtKm6//fZz2nyITwu/VnyIbn6fPVYZAxkDTcEAO4ZrawQDHsFP/3ln8eLz3youu+zC4l+n7yr2/WmSG9w2vjq22PXWzUkDXTOYnXz7fxX//vSu4sePDu+xMlP4fvXVV4t///vfxcMPP1zja+nSpe7do48+WnuXQqueNBiAlD9r1qyWl1UPf43mwbD73e9+Vxw6dMjJyQBcRXPy5Mku/rHHHquMr8qjd3/729+K1157rdv5lL8cYixQJ1dddVUSzWaXX+anGc+N6LcZ5fcmjUGDBhV/+MMfXJ2eOXOmOHv2bHL9Wvi14ntT7lx2NjQyBvoBBt577z23RtBtFgkYgkc6bive/N34YtwNA50hdubU94uBAy8o9uyeUGx45dtJA12zwPSlL13Yo+Wl8D1ixIji008/LU6cOFEMHTrUeQFPnz7t9IpnMIVGI2n6uiEo3dx1111u8A0ZgqRL9cCJpsJmG2J90RBsRL/S8/kabt682WFvxYoVxWWXXVYMHjy4uOWWW4pLLumaKUmRy8KvFZ9SRk7TDwbtFs+8ZQz1QwxpjWDMEMQIxBj8n///VWcI4pW74TsDi4+PTilWLP+mM3QuvPCCYs79Q4stm28o/nr4tuLP704q/rhzQnHJJV1KxYsHnQk3Dyq2b72x+MdH3y3e67yt+MpXLiquvfaS4p0/3lL84K4ril+tua742/uTiwP7JhV3TP4vR/sbX++KJw2/WycNPse4svIL2LNmDile+9/vFH85fFuxf+8kZ8heccVFNVpXX3WRi9v9hwnFRRd1Dww/+9nP3EDx0ksvFb/+9a/d/6lTp9ZoM0W8ZcuW4qOPPiref//9Yt26dcXll3dNcY8bN6545513ihtuuKGW/qGHHip2795dXHTR5/xJjnIoQ/DBBx8sfvWrXxUYNXjP/ClSprXmzJnjePjrX/9a7N+/v/jjH//oBrI33nijeP3112tlQ58BbseOHQVTljzDBzKS7+9//3vBwIjRW+al6tmS79prr3Xy/+AHP6jxf+DAgS8sUwgNlOgW/enHlLzPRwp93xBEV7/4xS8cPXSaKj8eWbyKtCk+DOr1CDajfOppz549xRVXXOH4v+6664rf//73xccff1x88sknTrZ77rnnHD35OvP/N0O/Pr3y/xdffNF52/C6KY5lFj7+Gm0/eInfeuutYsKECcX27duLf/zjHwUfwV/5yldqZarscnjllVe6uoy1x5T2EcKvyovFx9ov+RuRT+XnsHt9ftZX1lefwYAMwdiuYaaFmR5+ZtWo4tOTdzpj8OGHrnbhgz/8mutIFy0c7p7f67y9eGndt4ojh25zz5de2gWW5351vXs+8fH3nBH47p6J7vmqr11U3PgfTyMGJj8MSMr56MMpjjZpXnlpjDMkiZ8xfcg5nbeVn8rCSCXv0Q+mFC+/8K3i4L5JtfJVmRiepGH6GwNV71NCPAQYEwz+/Bh0lA8PguJ27dpVm+J88803XRrWk5GHUHlWrVrl3qV4HGQIqmwMPAwRDDYZkgwUxGOEYqweOXLEPbMu9IUXXnD/J06cWCt/2rRp7h0GKTxhGJGfNXhM0/IfY1D8xkJLvhD/GM0+3dBAyfQrawfRJ3zNmDHjnHwp9GUIMuA+++yzjg70qLsU+TGyKfvo0aPFyy+/XBw8eNA9d3dquFXlSzfw9swzzxQ7d+4s7rvvvnP05Ova/98M/fr0yv9Zb4fuhDXi+Yjh3SOPPOLqoNH289xzzzl6eO0xAt99993k+mENH7z85Cc/CeorpX2E8Ct9xOJj7Zf8jcin8nOYDZuMgX6KAdYI8us41BE8Puany65xBtKh/bcWr7w4xhmFb+0Y796xcQNP2tnTdznj7/LLuwyoX6wY6eLLhmDHgf8uSPPQg19z8WVDEK8gYFz7y+tcvOjx7ubxg9y7mCFYlR8aGLIYljLwFv94RK18gX/AgAuKh+Z9rZg966vBDl9pq0IGVgaMf/3rX8W3v/35lDleJd4zWJAP4wxvB+9YgG8ZSlVl+e98QwevGnFr16519PFmsJkEnjD+5IXUwIUhiCcSXjZs2FCTG0P2n//8p0uPV4n8nZ2dNcMSg5Z3vhfH58n/b8kX41/8Qi82UBJ/8/gJTo6YIVjWj+hjaGDYyghEfhmBlvzQwPDGcJWHqZ6p4VaWj3yfffZZcf3119fq2K+jlP+N6DdGH/2dPHnSfaTowwcPNToFv81oPzKUOjo6HKYxOsF8iqGutPfee2+l7ix8SHYLv6F4q/1CvxH5xF8O+6kRkKeaK9t1v2oPTBMePtwZPUdw7pxhzmjCW7bwkeHFu2/fUntm1/C0u690z0/+Z5oYBVYZgnjatMt42LCL3NQvU7Dy6P3i55/vBl32RJfx+VXPM2cZgqH8TCXD+3PPXler8CpDsNGKx8DDeMLb4tP65S9/6QYdf8oSTwcDEZ4ky1DyaVX9lyElQ5M0y5Ytc/SZvpV378knn6zx5RuCpGcaEUOB9BgL8LZmzRqXfsqUKe6Zd/v27XM/5OSZadcqnvx3lnwW/6IVGigVbxkqIf2QXx4nZGJaVUYgcZb81Cv5GIzFSz2GIDRaVb7qG/p4dNGleE0NG9GvVYb4mz17djFs2DC3GQMvL/ma0X6oGz5cZAhTBtdpymMe448pdPQW2vhl4UO0LfyG4lPabyPyib8cZkMwY6CfYiDFENSUKcYUHsB1a7umeXnG2/azn3QZbezqFZBYi0e87xHEK6d4P5QhyBo+vX980ddd/qFf/XyK1jIEQ/k1jT1zxuf0MQrhD4+kymxGePz4cbcWy6elr3V/DeADDzzgBhe8HTKU/DV969evd/HykPj0yv9lSPm7hh9//HGXH8NO6xfZ9am8rGVjcMMjyDsGYJ7JJ2/i6NGjXRxrHYljDR60/B8eG9EMhZZ8Fv+iGxooFW8ZKiH9kF+GIMbCsWPHCjYAia4lP7vF0c/MmTNreVTnKR6nniifKWfkYNkAvPJbuXJljV/JGgsb0W+MLnF4vdiNy9pQYXfSpK7TCaTLRtoPNPAwWnxUxfOxg76YVq+Kt/ChPBZ+Q/Ep7bcR+cRfDvupEZA9gpXtul+1BxZMc3yMWyM4oPpmkdGjBzijCcPpG1+/uFgw/yr3zIYPlLVkcZfRdv//dG0e+H/3fLmWXrt8WSPYW4bggw90TUP/+JGuY2duv22wm8quMgSv+folhe+F7C4YqgxBre/xPQo6coYdsFqDJEPl7rvvrg3WzTAElyxZ4ujhfUQeeTgY3LTLlt3NrCk8deqU8wyysUCyM0iTdtOmTbV3iksJLfnaxRDEOJanls022mhhya+py4ULFzr9UKcYlOisO4ZgK8v3z7hkwwTGLl5d/71Vl600BCmbTSPojB/6Fz/NaD+NGEp4DWnXeMz1cSTeCC18KG3I0LPiU9pvqnzXXHNN8iYv8ZXDbCBmDPRxDMgjyBrB0IHSeP0wmk4d/57bTaupVg53BiB3fu9yF/+39yYX61/qWkNIen6jRnYdr9BMQ5CNI/Me/Jpbm0j5lkeRg6jh5e9H73AbRZBD/DFFLZB/Z2zX8ThsaLlsUH3H1FQZggwUHCfDwMt0KwMe55Cx5g5Djx2dDH4sYFeHrgGxGYagFt7j9cLTiGdE9EeNGlWTn6Mx9B4vh/RCqA0iTNNh+OAdYU2cjCU/bfm/JV93DUF2Rs+bN682zafyZKgwpUg8eicuhT66wRAj/erVq50eODdOx//E5GedJ3rDkEYvGNPSY3cNwWaXzxTo8OHD3QYJ6pc1knPnznVHHX3wwQdJU6PN0K9oxELhBN1hkCttM9qP2pVodjfUxxPLBqZPn+7O7KQda41pDB8qS4ZgCL+h+JT2myKf1gKzYcZf+iD+ctjHB/vs+av1KRnrJazrQOnYzSIo7fjH3y3+9PYtTpFXXtllGP76ta7jTjg6RjuK2TTCtLC8hhwXQ/5fPjO6OPnJ9yorYuyYLgMMT6IqCO8dawq//OXPDbUbSruLv39n18aSlPxMX//zPwbgb9+4qVjz9GhnDGrzCOXKYDx94k435S1euhNyPAfHU5Tz0JkTJwMBj4fWK5GWnbzE4UnaunWrMxiZKkvx2HDbAXkZoFQu3iloMXXLtCA7RTEAeYfBs2DBApcH75DycEQH8RgI5XIZ8PASEk9ZyLJx48bkASUmn8W/+NMUs3QoD5ziNdAp/vvf/76TLYU+u6m1WQYPEJsVoKN1hZb8TN9p3eRvf/vb4qc//anTVeoRO80unw8O+GfzCsY6dceGDOmGnbPaOCP9WWEj+rVoK56pYQzp8pKDRtsPHzDIr3LqCdndjLEvHWpNLbQsfJDGwm8oPqX9psinDxY+SmXA1qOHnKc0iGYDq6F2lfHUBnjSFXOxcwRTKwqjyjesUvO1Oh3rDId8+aICAxYPIBtU3v7PETUXX3xuJYwceUkxYvjnxmczecPAwEMkT1WZNnGphkM5b8ozRoF2taakr0rDAA3/DE5V8bF3rZYvVnaz4mLyE4cHrlllVdGpKh/MDBkyxBlPlA/O3n77bWf4+wY971nvxk+ezqoyeuudNt3I+C7z0dvtB37ggQ84jOIqHVbVT1mOep+b0X65ntFf/1ovLznfueNG1kfWx3mNAdYIHu443HV8TGCN4Hkt4AUXFI8suNp5A5lSXv6za4q3d01w3kB/l/P5LmPmv/92REyj4o1kSnz58uVuBzheK3+XeDvjA+8pB5cjA1P0jX6stLOsmbf+205z3ee6b1sM4BFkepip4YF91BAc+c1LnAHIQdXchrLt9XHuvECmtNu2YvJ0Q66bRAzg5cEAZEcwU/bbtm1zhzPX47XtjfYAzyxHePrppwt/zWpv8JLLzH1ixkDGQL/DAEYgxiBTw6HNIv1OKYkDcNZL7jAyBjIGMgYyBjIGMgbOawxojaDzCA6sPj7mvBYwG3XZs5YxkDGQMZAxkDGQMZAxUI0BGYKxcwSzIZi/djIGMgYyBjIGMgYyBjIG+iAGMAS5Yq4vrxHMwO2DwM1fdtVfdlkvWS8ZAxkDGQMZA93BAAdKs04QYzC2WWTMmDHuyITeNKo4B2vv3r0FZ4r1NB/sapw/f36Pl9sTcnLzBztO9WPzQVW5jei/2frjzDX41c0oVfy2y7tU/TaT33bSD8etUFchXKXKHcJfPfptJ/1Y8lv6q0d+q8xWx59P+m9UF1b9NUq/t/NznBjtm4P7e5sXld/u+Go7/uQRtM4R5NYLjEYpujdC7srlWAyunOrp8v2bJ3q67FaXh2HNzQgcco1+uSKtqsxG9N9s/S1evNjxmnpzR5U8PfUuVb/N5Kce/XDH9KpVqyrrvhHeONg7hqtU2iH81aPfdtKPJb+lv3rkt8psdXw9+m81T62ib9Vfq8ptNt1Q/1B1c1M9ZYfo10Or3fHVdvz98Ic/LMaNG1dwv+2AAQOKO+64o3IgaAdDEED0lgeo2YZMPeBudR5dcRUyBBvRf7P113YNKcENn6LfZtVxPfr585//XHCtXrN4EJ1mDoSx9t8d/baTfqSnUJiqv+7IHyqrp97Xo/+e4q3Z5aTWX7PLbTa9UP/QLEMwRL8eOdodX23HH1N2v/nNbwqu6+LcsXoNQU7c55ot7uLkGqbNmzefc0sGtOfMmVNs2bLFeRZJx7ln3KX7xhtvuCu9/Arn/Y4dO9xBs1x99s4779R+3EDgp+WmBOK5Mot7PDE6uKqqLMusWbPc9Wp4QSl/z549SXflUpZvyCALtx9QJvfuEm/JT5pY+dyzyjVgnKn2ySefONrcb+rLGfqPIQ8v3HagNA899FCxe/dux1eqfkIDSTP032z96b7k7ngE+djhxg3ug+7o6HBY0OHFMXym6k+6D4Uh/ZLewk+MP5Xn46s7+kEHTF9xuDztgv/8kFu0wQBtl/uluQ5v3bp1ydeUaSCcNm2ayweNgwcPFpMmTXL0Lfxa+BOPMf2SppX6YZbirbfeKriykSsmucIPfQpfMf1Z8lv6S5HfwpdohMIY/lLbR736F0/1tl9Lv9C3+t9G9JdSfxZ+YuXTz99///2uLTGzwxiITIy33H2eIp90XBVa/YMMQcZCjb/MLuGpFr0Yfiz6omGFMXzF9MeSE8ZP7Ar6tXL/RLmx/D2B/1j/kVp+VH9LlixxgyNTw414BDGMmP5hDZ8uYMcYVOEAnXgGEe6dPXLkiHvm7MIXXnjB/Z84cWItPYMG6TFoGOxZg/Dmm2+6dzNmzKilg76ASHp+GJgMhFSoyqdREHf06FHXOBiIeE41JGTIAOhnn33W5YUfXd5uyW+VL9louNwLvHPnzuK+++6r8S85qkLWGyALoeKZ4uMdBnWKfsgXGkibof9W609yh0Iwo/qn/jBqMAhpYOSJ4TNVf6Gy9T6kX+It/MT4I7+FL/FQFXJPLbop//goIT0Yp/6I37VrV20JAZitold+p4GQ/NxVzYcY/6HJNW0Wfi38qbyYflupH8p/7rnnnEwnTpxwRiAzKMgI75b+LPkt/aXIb+FLNEJhDH8p7aMR/cNTI+3X0i/0rf63Ef2l1F8MP/AXK5+Pjueff959uIE5xr5Bgwa5cZZ7z1PkI03oZ/UPofrHIYQBBd0Yfiz6Ib789xa+YvpLqZ9Y/pD8zbI/rP4jpXxfV5X/b7nllmL06NEF62+4l7TsRVOm2NQwl9rTwXd2dtYqngGDdwCSxaT8x/jTZedSLIagLrPfsGFDDYx8XXPllNLDx83jJ7jONWYI4hUkLesNaBTk5yfDUF/o3XXNMmhh2MoIhD8ZgZb8KeVDn0vs8cRI56mh1dH5QKnSj8qJDaSkqVf/5G21/iRDKPzwww8dnsC60mDU89/CZ6r+RDcUhvRr4cfiLwVfIZ54jzHMhgNu9+BLnv/8+FImni992hJtlmc6d7z1vFOaGH11tPQB0CWtPhbZhGbhV7RD+FN8SL8p+qEtc0+w/9NdwpZ+KF8DOZ5myuMDFv1gCFr6s+S39GfJb+FL+UOhhT+rfaToP1S23jfSfi39Ukas/21Ufyn1F8OPVT4eQcZbGUPgDpmZ/cCpYMknHYdCC/+x+tfd27Hx36If4kvvLXxZ+rPqx8ofkx/eLP4kRyi0+g+r/BDdc97zdY5Rw32fdPD1GIJTpkxxnR4A3Ldvn/thxPGM21LePf/uU98QhCGmaTGEhg4d6owh8q5Zs8aBWAyHBgIpQgMV6ZctW+bKh54us6exiVY9hiA88WP6TEYg9Cz5U8qXPqDPIMmgJl6t0OroLP2IfmggVXy9+ic/HW0r9Sceq0IwQNmvv/56pU4tfKbqr6ps/11IvxZ+LP5S8OXzEfofWqOjL3bKUV7uN0anDD56FwrV0dLHKM2KFStcfgxDC7/KE8Kf4kP6TdGPPELCKKHfn1BGSD/E0bcw2OlDbtiwYa4vpU+19GfJb+nPkt/Cl/KHQgt/VvtI0X+obN432n4t/VJGrP9tVH8p9RfDj1U+05l479evX++WXIBDDEBmPDAiLPliuvfjQvi36t/Cj8oI0Vd8KLTwZenPqh8rvyW/xV9ILr23+g+rfNGJhm9se6M4fPhw8Zvtv6l7jeDUqVNdp848O+sE/R9fBDzTseJ1FDOvvfaae4dHkHezZ892z48//njNm+d7b0gTGgikCNYIiD50KJNO5OGHH3b/Z86cWYvXFxhf7MoTC2XI0MiOHTtWjBgxopbPkj+lfLxT0GFaW4PRypUra2XEeFNH56/JoFOAjj81HNKPaIcGUsXXq3/yt1p/4rEqpI7RBQZ2VbyFTwtfVTSr3oX0a+HH4i8FX1X8lN/REbMkofxebcVfg/rAAw84nWqgKefxn9XR+puQ5FHEYLLwK1oh/Ck+pN8U/WCQ0gf5P7yVok0Y0g9x6IhZBz+9/lv6s+S39KdyQvJb+FL+UGjhz2ofKfoPlc37RtuvpV/KiPW/jeovpf5i+LHKZ30//RuOlCeeeMI5VU6ePOneyQMfky+mez8uhH+r/i38qIwQfcWHQgtflv6s+rHyW/Jb/IXk0nur/7DKF51oiLFFB8+C2nqnhpk6AIibNm2q7AhZh0i8vAdsguCZn3YBMg3DmoJTp045QLNxosx4aCCwFCHXKg0GmgxIGHSU3x1DEONVnhCm0HAZQ8+SP6V8dC95WXCOsYlX1X+v+HJIY0cWGXosqpZ+28kQbKX+yjopPzPtSUc5ZMiQmp6VxsKnhS/RscLQQG3hx+IvBV8Wb8QzvVR1RJTW9zz66KM13b366qsOY75xFyqj3NFSB2fOnHEfB+Sx8Cu6ofav+JB+W60fyo8N5Jb+LPkt/VnyW/hS/lBo4c9qH83QfyPt19Ivcvv9bLn/bVR/KfUXw49VvujT5+N90mwYz+S15AvVe/l9qH+w6t/Cj8oJ0Vd8KLTwlao/9WXl/snKb8lv8ReSS++t/sMqX3Si4d539xY7frfDTefGDpRmjeDp06eL5cuX134yrChAa35wYyI4mx5YLImxhKcKUOIVwlPFl7MMlVGjRtUGF00XEYcVXmZcAwEbR+bNm1cDuaUI1jFBE0MTvjA2VT4eiXI5Vc/wjiFD3OrVq11+jtrQOqKY/Fb5w4cPdwvMkZ81fHPnzi1YdE7np8W2VTzpHTvekIc6Uoci+eoxBNn5hX41zaVy6tU/+Vulv1RDfunSpU5HbBJi/RbyUZ94jC18WviSfqxQhkqVfmP4sfiL4StVP/AOX+AGrwIfPOiH9ktHSNvnw4TlGi+++GJx9uxZtyYYfFlya6Bife2CBQvcjm3KwftGXgu/oh/Cn+JD+m21fihf7U68+KGlP0t+S38qKyQ/8TF8KX8otPBntY9m6L+R9mvpN6X/bUR/KfUXw49VfxzUTntiXGWGTfVBe8UTmCJfqO7996H+QeXJEUEef0bOwo/KCNFXfChMwVes/lLqJ5bfkj+Fv5BsvLf6D6v8GO1aHGsE3c0iHYejN4uwhk/GhUIMFRFiQSRePHnaWLOwceNGt5YOMLJmAaASzwDDgAAdvr5Eg0WjxEPX/0JTvDaVqHwqkLixY8c6WtOnT6/RwkiFFlPTpME9rXWL7KRiQIOONo+ojFDIbmdtZsE4Y70Z+bWOKCa/VT6DLbqTOx+67ATTxo4QT/57dmKTD5m3bt3q5MPrgh5T9AMtTaFAh59v6BPfiP6brT/WmyErhpyvh9h/1qhyNI/kw+tKJ2nhM1V/sbKJi+k3hh+LP2iX8V2PfljPq9386Aj9yINKZ06blu7wiJc/FELys+5Y+agzjHEMTT99DL9KF8Kf4mP6bbV++ACm/YqXcmjpLyZ/iv4oLyZ/DF9lXsvPFv5S2kcz9F9v+0WemH5T+t9G9JdSfxZ+YuXzMUZfz1p/ZGV8oq2yVIvnFPnKdV71HOofrPq38KOyQvQVHwstfMX0J0OQPirUP8XyW/LDt8VfTDbiYv1HSvkW/QswBDs7jxTuZpEBA4ObRUxC/9l+rl1CVH45D0ZXquFVztvIM8YCAxq84QGkobCjCsO0yuBspKwq+VPLhy8aAz95GrvDC96f7hhG3aHdU2mr9KeyVX96ridEx3ihq3DYW/j05YjJb/HXDP3ACx9k6Ahd+bzxDMb4QvXfp/4fPHjwOZusyvlajd9W66csT/nZ0p8lv6W/cnlVzzF8VaX331n489NW/W+G/htpv5Z+oW31v43or7frL0W+qnorvwv1D+V05edU/NRLPwVfVfUnQ5BZSH8TaJl/nqvyV6WrepfCX1U+vbP6D6WrK8QQ5Hfo4CFnfIR2DddFPHI2UU/Sw/uAN5ApZaa25d30dzG3kp/eLr+VsmXa4fO3sm6ybjIGMgYyBtobAzIEtUawX9aXPIIH9h/os4YgaygwANmRi8t827Ztbp1YldeyFSDo7fJbIVOm2d6dW66fXD8ZAxkDGQM2BlhywvFRqUtd+qRO5RHEEGShaV/0CPbJimsTb2vWrd3RZB1lHWUMZAxkDGQMtC0G2ChSWyM4sPE1gm0raDac6lrXleszd14ZAxkDGQMZAxkDfRgDXIyOV9BtFsmGYDaWssGcMZAxkDGQMZAxkDHQfzDA8S0cNXHgQN9dI5i/ZPrwl0zurPpPZ5XrOtd1xkDGQMZA8zHw8xU/L7hdhHPxOLKknjWCHCfBjlwONmxXo+upp54q5s+f37b89ZTeWBi7du1ad4A4R+jotpeU8jkYc+/eve5MIz89J/dT//qxOcaPz//Pb0O8v9cvi8jBdqO4btf2w5EZ3EihH30E56b1ZLuFB3T89NNPFwMGDDin7Gbpv1XypLaPUP2n8GWNXzH9pdDvzTTng/3Qm/rpkbJZI8j1cpz6T8riW1oAABcQSURBVAOMGYIYEKtWrTqnkcJk1cnWPcJ8N74M/Jst2o038RPSr+IbDTk8mQOVOfiWK8K2b9/udk+n0uWuaA7d5MobPw+HXXLyOocME1/vNvxWy+/znP+nG6fNqt/zVefNOl6i0fbTqvaBAagDvxVy3BYHVPdknXH1KGe7bt68+ZzzXZul/1bJkto+QvWfwlfK+BXSXwr9nkgTwu/5YD/0hH56tQzuFmXg5uYPyxDkUmiuVSszfD5UZEpDKsvV088h/TaLD7x/dPSTJk36Qh2mlqG7oavS64qreg3BVstfxXN+l24QNlq/56uum2mINNJ+WtU+ZAhyLRjemWnTptWuEOzpOmOpEteAjh8/vtZHNVP/rZQnpX3E6j/GW+r4VaW/GN2ejAvh93ywH3pST71SVoohyInguOfZWLJ//373n2dOYYdpVSR3DHNfIKDFO8SXkoTitPAtW7a4+4e5bmzdunXnTD9wHyTXrHHOH14rrsfhC0f5OVWba1oonzuD+Wrszi0afkPi/ECuhqMMeKaMFPrcpcj1eGyugQ8Opub6HvJb/EuOqtDSL3ks/VXR1Tvk1fQKhiBTFDxD00+DoUgdgQnk49xFri8iHbrSj4FD+fwwpSP00+t/q+WnHLyYXMFER4knlCv8wDNl4xFHNqbExBP3Ee/evdvhApwTz5V/wjdramPec9EhRN/kR2/gnju4uWbNN8hj/EEjVv8p9C18W+XDQ6h+uXuYD8RBgwbV9MeNPTt27CiY0vJ1Efofky9V/3fffbe7Mej48ePuPmPaKvVLmZb8Ib54L0MEA6mq/iz8NNp+UtpHjH8rToagv3SG9k/7IK8lX2r9WHyE4i39k8/Cb6z+aef333+/k5WZDdo4NOkPMUpDfJXfh9qHVf8p+rPGrzIv3X1uRvsLlWnhN8V+iNUf5Vrjr5UfGnwEMbar3w/J0yff09gn3z456hHkHkRNGfghRhtKUUUqDgMCFz8GGxXA+gWATPyuXbtqU4gc4iil8p94Gh7eyZ07dxb33XdfLR7DjXjWqOkCaIxB5bdCNSSMIqbBoUWZ8EZei768aUePHnU8MpBDg2uLyG/xH+PP0m+K/mL0r7nmGscr/Po/OnvloyMlDiOdezl15yxnSyIj63ck44wZM2r5lJ8w1BH6aar+t1p+yuRSd+Q7ceKEMwLfffdd94xsuqPVnwpjCQTpMYRD+Magq5Kn/E4DGfS4y5LOhv9gUlcJxviz6j+FvoXvWPmSJ1S/ixYtcvJgPCstH4HIWL5TWPF+aMmXon8wSXm0T9o3HzQYhAxwlGXJ7/NT/m/p18JPo+3Hah9lfrv7XDYE7733XqdL+mFoWfKl1E93efLTW/onrYXfWP3zUfj88887xwYYYuzio4Z+kHvpfV5i/0Ptw6r/FP1Z41eMLyuuGe0vVoaF35D8sh+gHas/4jU2NWI/8GFP/dNH6wMyJlefipNHcPXq1cEDpelMWRD7wQcfOCOO//zwRKAMvyLxmvCO9QAolfv18Lrxn8okDuMQbwHvRAOgf/bZZ85TVVYwXjcqp7Oz0+UlHoOSd74XopzPf4Y+hqOMQLxDNADSWPRZOE3nwMAvgCxevNjxTyOHRox/n4+q/5Z+U/RXRVfv8M5QXwyO6HzKlCnumcuqScOXELrE+NMicTU8DEHRuXn8BJe/2YZgq+WHfw0UHR0dTkaMFnTRXUOwjG/pSzqqCjWQoWPqgTT6mBkzZox7jvFn1b9F38K3pR/JFBro0AHrTvmIwHAmPZvPaDO0f+UPhZZ8sf5F+v/www/dNZJsfFM5ujkoRX7lqQot/VqGkmjW236s9iH69YYyBDGi9YH0pz/9qVZ3lnwp9VMvb+Sz9E+aWPux6h8PEOOJPvbpF5CZzXQyhlP4D7UP5Q3Vf4r+YuOX6NcbNqP9xcq28BuTn/7Dqj/Kjo2/KfmhwdI4xoXZs2fX+pCYXH0qTgdKp9wsYs3xy9BDQcuWLXMDLdO3+iKgw5Hy8BTQ4Gh8vJPhwTsGSRqV0mK48J7fvn373I/FzDzjVle6WAhQRANPmIxA8lj01VHS2aiMsiEY4195rDCk3xT9WbSJZ5oOHWiwVh6mvHjv370seXrCEBQfrZSfusMQY0qc8oYNG+amdvkoSR3oQvgW/6FQAxnHNCnNihUrnM5lGMb4s+rfom/hG55i5Yvn2EAnvNCJotuzZ886L7LyxkJLPg0UIf3Tx4BfjM+qclLkr8qnd5Z+LfyITsgQUHxMv6QJtQ/lrzdU/0a/yMc2unz44YdrurTks+qnXr6Uz9I/6WL4teqf6X5mt9avX++WbNBPYADiUcZIEh9WaNVfqP5T9Bcbvyy+rPhG259FX/Eh/FryW/UHffU/YLcV9oNk6LMh01T8Ug6UpiKZsi0rQxXJGjrFsfCYSqGTppHy31+D9cADD7h3amh8vU+dOtWtSyMtv5UrVzp6vOeZdVasE/R/KR4HeFJDopEfO3asGDFiRI1Xiz6dIuXPnDmzlkcyySMY4186scKQflVWTH8WbeJDhiD6RD52tYkO66t419OGYBW+miE/NPBQST4/1EDnr2llUEB+f2o4hG+fVtV/DWT+Jhp5xDGayBPjz5Lfom/h2ypfMsUGOrzKZ86cceeRqu37ayBFoyq05LP6F9ogdcUAUEU/Rf6qfHpn6dfCj+iEDAHFx/RLmlD/oPz1hjIEWSPILAF9JOu01bda8ln1Uy9fymfpn3Sx9mPV/8KFCx1+mJF64okn3NpvPNxgSh9q4iUWWvUXqv8U/cXGrxhPKXGNtr+UMkgTwq8lv1V/0I6Nvyn5U2Xos+lYI3i443DRcaijGDggfo4g7nOmksvKsCpS688effTRWl6OL6GhaXBk+lJ0WdCPsYbXj/cMMqTdtGlTLY3SpoY0JIwbeSLZzILLmPwWfbnO6TBID890lvAkQzDGfyqPIf2m6C+ljJAhuGTJEieLvLNs0kE2fv4ut1BHprKtjlDpQmEr5Y8NFHT2yCpDj00Hkr8VhuCQIUOc0QQmpYsYf1b9lwfKMn0L3/AQK188WvXLphHpjfalfFZoyWf1L9Bn2QoDObKXy0uRv5zHf7b0a+FHtBptP6H2IfqErAfuziY68viGIM8sE6IetWnCki+lfnweu/vf0j/0Yvi16l/0kRldaDaLZ/Km8mu1j1D9p+gvNn6l8hdK14z2F6Ltvw/h15Lfqj/KiI2/KfnFZz3tR3nP6xBvINPDTA1bhiAdA42DryYMKgwrjKmUijx9+rQz7NasWVMwYDB1xDQEAy3n27Fgl+ky1mDNnTvXLeqnc2fqDgVrTRVubAwzFoWyZk/GnFUJakikU0fHTkct1o/RZx0jcrN4lXJPnTpVG/Dw6KTwb/FHfEi/ADmmvxTapAkZglrYj47whOE5Q15+o0aNqnWE6sjYODJv3rwvdJLqCJGDeE3DpvLXSvljAwU7zpCV9VFKJ/mbaQiyPnXBggVuRyv0/bUoKrdKV1b9ayCL0Y/hmzJj5Ysnq36lR2RL2SQiupZ8Vv8CnaVLl7o6ZBMX63zAH/2TjCJLfvFSFVr6ldwh/Ihmo+0n1D5EnxkDdM+GKH/pi+JDYdkQZN0lU6V87ELTki+lfkJlp7y39A8NC7+x+uegcPRGv8cMiOTBEaF1pil8Wu0jVP8qTx+ilCWvuvBrjV8p/IXSNKP9hWj770P4TZE/Vn8p428sv3ist/0o/3kdYgRqaphGEDsSg/V42k1Kw8Frxxc40wk8T58+vWY04D2jI9H0AsYGnQvp+OExkKGAMcfRMXLHE49hqIX5KJjOiTTyxEFr48aNyR0eC9k3bNjg+MO4ZD0R5WjdkUWf6VOtS2QnGQYt+dk8ksJ/CkhC+iVvTH8ptEmDoc30nf/1xHs6O9bE0BGiXwZQDBbkwzsr+moovOdHB604Qk0hKV4eVD9N7H8r5ecDAnyFymeHIHwj/9atW139Slcp+A7R5b0GMtHHWCkbShZ/sfpPoW/h2yofOVLql2N1+FBSu4/pxY+LyZeqf9a4MqUp/NE/MUhQjiW/z0v5v3YTxuovhh/Ra7T9xNoHZeiDlY9G5FW5VkgbRzaW6ygtJzbwTusuY/Kl1o9odzdM0b+F31j987FHW2cDIbwxPjC+sBSpO7xa7SNU/yn6s8av7vBZlbYZ7a+Krv8uhN8U+WP1lzL+xvKLx3rbj/Kf16HWCDqPYOIVc+wCwlMkb12qAkjPVCpfIFV5iAcs/OSpK6djgCF/d77UyjRiz1X0+SrD4CUODyB8sqMMw8k3qlL4j5WtuJB+Lf0pf70hRq12RddLoxn5ekt+sKkv8GbIIRoy1Fir0h1PjfIrDNV/d+hX4Vv0Gw3lWdLHVXfpheTrDh1o0DeFcNyI/IMHD47WX6vwU5Y/1D5Ih3fLX/9cztvIc0/JF+LR0n8on/++kfr36fTF/81ofyl6ieHXyh+rP/hv1H5oZfuxZOvVeBmChw4eMqeGe5XRblwn12w+8d7gDWRKdPny5W4xMV/L/i7bZpeZ6aXfeNHuupKhpvWwzea31fQtftkNzbID2ghTWCEjzKKT4/sO5nNd5rrMGDiPMIAhePhwZ9Iawf5asXwlYAByUDZTBtu2bXPrkFrlleyveu6rcjMlxIGnWgrRbDlbTd/ilzbBet6nn376nDWlVr4cfx4NFL34IZ5xknGSMdBiDLALmHWCGIPWZpFcGS2ujNzZVi4ZyLjLuMsYyBjIGMgYyBhoEQbkEUw5RzBXQosqIRuA2QDMGMgYyBjIGMgYyBjoDQxojaA7RzBxs0g2CLNBmDGQMZAxkDGQMZAxkDHQBzCAIdjZecTdLMI2+tjxMbnC+0CF98bXRi4zf+VmDGQMZAxkDGQMtCcGdNewWyPYQo8guwq5wqgeY5JF9uzYZdNGPfn7ex5uBkB/+oX0yDlKe/fudWcW9nedZfnzR0/GQMZAxkDGQL/AAB5BjEG3RtC4Yq4Rhfgno3eXTm8fj5HK79q1a4tVq1a1nbHKYaGcrM4h3hx7EzrGhLuGiefKoVSZc7rcUWYMZAxkDGQMZAycxxjQZhEOlLZuFmmkovuDIcil2lxb14ieWplXVyCFDEHK9u8WbiUvmfZ53Gnk6Z22beO5XeV2lTGQMdBtDHB8DGsED3ccbunxMb4hyPl73D7AFT7cGzxu3Dj3n/PQJAD3he7evdvd4iGP4LRp04p169a5O4a5pmvSpEm19JwqzjVw+/fvd3cCb968+ZxbIvBycYUQ1ylt377dXWH33nvvucNvOY0cXrjSjvsQ4ZWrsvz1kjH6HKDL9DX0KJ///KAreWL5ScN9nlyhx5lsXJMFP/fcc08tv+jEwrvvvtvdeHL8+HF3ny1XxfmH+4YMQU56pzz9uCEiVk6Oyx1NxkDGQMZAxkDGQB/BgDtDsONwy88RlCGIEfjss8+6KUgO2eXKLd3RSChgMcXKNCUbWGQI8sxdsHgx+Q9NXUWHYck71rjpgmmMQdHjUnLiuZCde4y5IJ5nrk3Spdc88+PgaK6P++ijj2r5Y/S551J5/RCjTuXH8pMGXZD35Zdfdvf+7ty5s+C+T+W3whkzZrj8R48edfrdsmVLgUGIkae8IUMQHbB+UDxAS3ly2EcaevbiZUxnDGQMZAxkDFRhQGsE3V3DLV4jiGEmIxDvnO5dTTUEMQLZ+IBxImNvzJgxBZdOE9fZ2Vm7/3jXrl3u3aBBg1x6GYIdHR3uQnY8jhheZUMQryD0We9HPJdVW/QxtuCL2xVYh8d/fmy+gJaVnzQYtZ999lnw9gl0xT2L/k9GMPk//PBDd8XX6NGjXZm8K998EjIEScvv5vFdl89nQzAbf8JEDjMWMgYyBjIG+jgGZAj2xNSwvGVMn8oIBGCphiB3mgqQK1ascIYaBteUKVPcf+jv27fP/bj3lGdNz2IIYiwyZQuNYcOGualfpmzlEcRrJ/rLli1z+YcOHZpEn3yhNYIp/MljCM8YuRht4oVQ3jrpkFD8wiPPr7/++jl5/Pz8z4ZgH2/MVV96+V20TZTbSH7ObSRjIGOg32EAQ1DnCLbyijk8XhgrGGPHjh0rRowYUeugZQiyu1UVsH79epfenxr2Nzns2LHDxWPQTZ061f1njRvrBP0fHjRoYggy3Sv6fihDcNasWbX4xx9/3NHEyEqhDz0MQaZ0fdr8T8mP9450TEvL2Fu5cmWNFgbv7Nmzz/nhDYU+Xk3yYECWy/afsyGYOzgfD/l/xkPGQMZAxkDGwAUYgvwOHTzk1tv5GySaCRCtEXzkkUec0cIUKlOmlIGRgyEjQ4xNDzKGqgzBIUOGFGfOnHHTqeS/+uqrXfpNmzYFDaFGDMEU+vDBdDSbb8p6S8l/8cUX1/KxoQVjGa+m/75M139mWpqpZXTjv/f/Z0MwN3gfD/l/xkPGQMZAxkDGgDME8Qi6NYItPFBahiCgW716tTPcOGqFdW7smMXwYwOHDLYqQ5D1hQsWLHA7YonHQyYQa80gGzfYicymCzZ7yNgUXaX3Q8sjSFqLPmnYcQxfTzzxRIHBy65dlR/LP3z4cLeBhelu1ijOnTvXbWrBuGPq2uc19H/p0qWubHZTs/5x3rx5rnw8msojQxA+idc0ueK1RpCNI8RjwCouh7mzyBjIGMgYyBjIGOiDGJBHsNXnCL7//vvFhg0bnGGBccN6NowmrXN76aWX3DNTx1u3bi3WrFnjvH54xPBSyjAkHmMHQ8sHJJs6OH6FeNKyY3fjxo21tYgYiCdPnjwnj/KPHTvW5Zk+fXotfuHChY6WppYt+tBiPeKRI0dqvOLVk4culh9jEd7hT3Kys1kbV8SnFT755JPu6BnRoHyMTOXTFLzikVFxhBzfozhCdmv78fl/H+wA8hrCjPGMgYyBjIH+jQFdMeduFmmhRzDFiGCtm+/BKucZPHhwzbArx+kZww1PVnnHrOIbDVPos4t41KhRld68WH4MZIxJfv6O4O7wDA3K9s8P7E7+nDYbexkDGQMZAxkDGQP9CAMcgoxXsB0MwQy8fgS8/AXav79Ac/3n+s8YyBjIGGgPDGAE1nYN97JHMBuC2RDMGMgYyBjIGMgYyBjIGOhBDMgQbPWu4VypPVip+SurPb6ycj3kesgYyBjIGMgYaHcMsEaQX8ehjpYeH5MNwWwIZgxkDGQMZAxkDGQMZAy0GQY49+7w4c6WnyOYK77NKr7dv1Ayf/krOmMgYyBjIGMgY6D1GMiGYDbQspGeMZAxkDGQMZAxkDHQTzHArmE2i7g1ggMGujP7qsDw1FNPFfPnz2+9ZdoL1j83m3CIsn4jR46slPOmm24q9u7dW/hX4VXpqhXvOA6HK/a4+m7RokXFrbfeWuORo2Z45ro9lc0xPLyLHcejtM0KJ06cWCxZssSd8Vg+rLpZZdRDh3MiOSzbz8v5lOiHo3o4cof//LjVhfofNGhQLT3xkyZNqqXhvEWdL+nTbOV/6rZ8wDfnXnJ4eSvLbSVtsDxnzpxe41/lp7b/Vumi3vLFP22NvivUb4nvZvdfKh/6jYwPqfxLjmaH9eq/2Xxkev3UCOsFm+cLWJNHkDWCl156adAQ9G8G+QKRdhCkAR4w7Lj5g2vvOEjZv9PYl3Xy5Mku/rHHHuvRwWvAgAHFq6++6g645i7iPXv2FGfPni04hBsjRQdBYyDC72WXXebuPeYavvHjx/cIr7rZhGvu4I2Qm0x8/fXWf+qVg8b9w7V1SDkDqK4A9A/TPnr0qLvxBp45FNyP4z/0fvSjH/WIfBwUrvK5RxueOCuSu7OfeeaZHuGh2XXHdZLIxC1AzaadQs8vP7X9p9CtJ0095fv8c/A7ugz1W+Kpmf2XXz70GxkfUvmXHPWGa9euLVatWvUFvNWj/3p5yPmysdeOGPg/kgNa7J14NYEAAAAASUVORK5CYII=" /></p>
<p>You may see this error after installed Kubernetes and run &#8220;brew doctor&#8221;.</p>
<pre><code>Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
kubernetes-cli</code></pre>
<p>It can be solved by running below after installing kubectl with brew on macOS.</p>
<pre><code>$ rm /usr/local/bin/kubectl
$ brew link --overwrite kubernetes-cli</code></pre>
<p>&nbsp;</p>
<p>The post <a href="http://www.keenlio.com/mac-osx-kubernetes-run-brew-link-on-these-kubernetes-cli/">Mac OSX Kubernetes  Run `brew link` on these: kubernetes-cli</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/mac-osx-kubernetes-run-brew-link-on-these-kubernetes-cli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laravel 7 Digitalocean managed database error: The server requested authentication method unknown to the client</title>
		<link>http://www.keenlio.com/laravel-7-digitalocean-managed-database-error-the-server-requested-authentication-method-unknown-to-the-client/</link>
		<comments>http://www.keenlio.com/laravel-7-digitalocean-managed-database-error-the-server-requested-authentication-method-unknown-to-the-client/#comments</comments>
		<pubDate>Mon, 20 Jul 2020 04:48:36 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Digital Ocean]]></category>
		<category><![CDATA[Managed Database]]></category>
		<category><![CDATA[NGINX]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP MySQL]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1290</guid>
		<description><![CDATA[<p>I am using Laravel 7 to do testing on DigitalOcean&#8217;s managed database cluster. Laravel connection doesn&#8217;t work, with error and I have fo find the fix that causing it. Illuminate\Database\QueryException SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client This issue has been fixed in PHP7.4, please install PHP7.4 in the Droplet. If [&#8230;]</p><p>The post <a href="http://www.keenlio.com/laravel-7-digitalocean-managed-database-error-the-server-requested-authentication-method-unknown-to-the-client/">Laravel 7 Digitalocean managed database error: The server requested authentication method unknown to the client</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I am using Laravel 7 to do testing on DigitalOcean&#8217;s managed database cluster. Laravel connection doesn&#8217;t work, with error and I have fo find the fix that causing it.</p>
<pre><code>Illuminate\Database\QueryException SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client</code></pre>
<p>This issue has been fixed in PHP7.4, please install PHP7.4 in the Droplet. If you are running on NGINX:</p>
<pre><code>## install php7.4 fpm
$ sudo apt install php7.4 php7.4-fpm

## install php7.4 mysql
$ apt-get install php7.4-mysql</code></pre>
<p>After that, update the NGINX sites configuration to the correct PHP-FPM version.</p>
<pre><code>fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;</code></pre>
<p>This should allow you to connect your Laravel 7 application to Digital Ocean&#8217;s managed database MySQL version 8.</p>
<p>This post may not 100% fix your situation, hope to bring some idea to this MySQL 8 issue in the managed database.</p>
<p>Few points to note :</p>
<ul>
<li>DO Managed database cluster default MySQL version is 8.0, no option to select down.</li>
<li>MySQL 8.0, upgraded the password encrypting to caching_sha2_password.</li>
<li>In the managed database, if necessary create a new database username with Legacy – MySQL 5.x.</li>
<li>Ubuntu MySQL client has only version 5.7. If necessary, you need to manually install MySQL version 8 client.</li>
<li>Droplet Ubuntu version is 18.04.4 LTS.</li>
</ul>
<p>The post <a href="http://www.keenlio.com/laravel-7-digitalocean-managed-database-error-the-server-requested-authentication-method-unknown-to-the-client/">Laravel 7 Digitalocean managed database error: The server requested authentication method unknown to the client</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/laravel-7-digitalocean-managed-database-error-the-server-requested-authentication-method-unknown-to-the-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laravel &amp; NPM installation Steps</title>
		<link>http://www.keenlio.com/laravel-npm-installation-steps/</link>
		<comments>http://www.keenlio.com/laravel-npm-installation-steps/#comments</comments>
		<pubDate>Wed, 15 Jul 2020 07:25:35 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Famework]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[NPM]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP MySQL]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1286</guid>
		<description><![CDATA[<p>Create a new laravel project. $ composer create-project --prefer-dist laravel/laravel   my-project (NOTE: if you do not have composer, please install in your machine and make it global. This will make a lot easier) Or Clone the repository from github or your private repo. $ git clone &#60;your repo&#62; Install NPM globally if you haven&#8217;t installed that [&#8230;]</p><p>The post <a href="http://www.keenlio.com/laravel-npm-installation-steps/">Laravel &#038; NPM installation Steps</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<ol>
<li>Create a new laravel project.
<pre><code>$ composer create-project --prefer-dist laravel/laravel   my-project
(NOTE: if you do not have composer, please install in your machine and make it global. 
This will make a lot easier)</code></pre>
</li>
<li>Or Clone the repository from github or your private repo.
<pre><code>$ git clone &lt;your repo&gt;</code></pre>
</li>
<li>Install NPM globally if you haven&#8217;t installed that already. for more information please refer this <a href="https://docs.npmjs.com/getting-started/installing-node" target="_blank" rel="noopener noreferrer">link</a></li>
<li>After installing NPM globally , run npm install inside your cloned folder, it will download all the required dependencies.
<pre><code>$ npm install</code></pre>
</li>
<li>Install composer to your system and run composer install inside your cloned folder to install all laravel/php dependencies.
<pre><code>$ composer install</code></pre>
</li>
<li>Create an .env file by running the following command: cp .env.example .env. Or alternately you can just copy .env.example file to the same folder and re-name it to .env.</li>
<li>run command: php artisan key:generate to generate a unique application key.
<pre><code>$ php artisan key:generate</code></pre>
</li>
<li>run command: php artisan passport:keys to generate the required passport keys for authentication.
<pre><code>$ php artisan passport:keys</code></pre>
</li>
<li>Open the link to the domain in the browser (Example: https://demo.craterapp.com) and complete the installation wizard as directed.</li>
</ol>
<p>To simplified, do below 5 steps for get Laravel with NPM modules such as Vue JS.</p>
<p>$ npm install</p>
<p>$ composer install</p>
<p>$ cp .env.example .env</p>
<p>$ php artisan key:generate</p>
<p>$ php artisan passport:keys</p>
<p>The post <a href="http://www.keenlio.com/laravel-npm-installation-steps/">Laravel &#038; NPM installation Steps</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/laravel-npm-installation-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Apache2 Laravel Resource interpreted as Stylesheet but transferred with MIME type text/html: &#8220;</title>
		<link>http://www.keenlio.com/php-apache2-laravel-resource-interpreted-as-stylesheet-but-transferred-with-mime-type-texthtml/</link>
		<comments>http://www.keenlio.com/php-apache2-laravel-resource-interpreted-as-stylesheet-but-transferred-with-mime-type-texthtml/#comments</comments>
		<pubDate>Mon, 13 Jul 2020 04:42:28 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[Apache2]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1282</guid>
		<description><![CDATA[<p>Depending on your server configuration. Some condition, it can be solved by creating an .htaccess file into your root folder (or update the existing one) with this line inside AddType text/css .css this will tell apache to send the right content-type header for .css file On my case, the above won&#8217;t work at all. My own hosted Ubuntu needs below changes so [&#8230;]</p><p>The post <a href="http://www.keenlio.com/php-apache2-laravel-resource-interpreted-as-stylesheet-but-transferred-with-mime-type-texthtml/">PHP Apache2 Laravel Resource interpreted as Stylesheet but transferred with MIME type text/html: &#8220;</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Depending on your server configuration. Some condition, it can be solved by creating an <code>.htaccess</code> file into your root folder (or update the existing one) with this line inside</p>
<pre><code>AddType text/css .css </code></pre>
<p>this will tell apache to send the right <code>content-type</code> header for <code>.css</code> file</p>
<p>On my case, the above won&#8217;t work at all. My own hosted Ubuntu needs below changes so that is will works.</p>
<p>Check your</p>
<pre><code>/etc/apache2/apache2.conf</code></pre>
<p>If there are any</p>
<pre><code>SetHandler application/x-httpd-php</code></pre>
<p>line, try to comment it and then reload your apache by <code>$ sudo system apache2 reload</code></p>
<p>Reference: <a href="https://stackoverflow.com/questions/10553638/resource-interpreted-as-stylesheet-but-transferred-with-mime-type-text-html">https://stackoverflow.com/questions/10553638/resource-interpreted-as-stylesheet-but-transferred-with-mime-type-text-html</a></p>
<p>The post <a href="http://www.keenlio.com/php-apache2-laravel-resource-interpreted-as-stylesheet-but-transferred-with-mime-type-texthtml/">PHP Apache2 Laravel Resource interpreted as Stylesheet but transferred with MIME type text/html: &#8220;</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/php-apache2-laravel-resource-interpreted-as-stylesheet-but-transferred-with-mime-type-texthtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OSX Composer Could not open input file: /Users//composer.phar</title>
		<link>http://www.keenlio.com/mac-could-not-open-input-file-userscomposer-phar/</link>
		<comments>http://www.keenlio.com/mac-could-not-open-input-file-userscomposer-phar/#comments</comments>
		<pubDate>Wed, 01 Jul 2020 15:09:16 +0000</pubDate>
		<dc:creator>Keenlio</dc:creator>
				<category><![CDATA[composer]]></category>
		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://www.keenlio.com/?p=1267</guid>
		<description><![CDATA[<p>To most of the people who want to install composer on OSX, usually, the below command is sufficient: $ curl -sS https://getcomposer.org/installer &#124; php $ mv composer.phar /usr/local/bin/composer $ alias composer=&#8217;/usr/local/bin/composer.phar&#8217; However, it could still happen to have error of &#8220;Could not open input file: /Users/kayliongmac11air/composer.phar&#8220; This is due to shell environment didn&#8217;t refresh. To fix this [&#8230;]</p><p>The post <a href="http://www.keenlio.com/mac-could-not-open-input-file-userscomposer-phar/">Mac OSX Composer Could not open input file: /Users/<mac-username>/composer.phar</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>To most of the people who want to install composer on OSX, usually, the below command is sufficient:</p>
<blockquote><p>$ curl -sS https://getcomposer.org/installer | php<br />
$ mv composer.phar /usr/local/bin/composer<br />
$ alias composer=&#8217;/usr/local/bin/composer.phar&#8217;</p></blockquote>
<p>However, it could still happen to have error of</p>
<blockquote><p>&#8220;<strong>Could not open input file: /Users/kayliongmac11air/composer.phar</strong>&#8220;</p></blockquote>
<p>This is due to shell environment didn&#8217;t refresh.</p>
<p>To fix this error, simply run below command:</p>
<blockquote><p>source ~/.bash_profile</p></blockquote>
<p>This will refresh the shell environment in your OSX environment.<br />
That’s it, now the alias will take effect.</p>
<p>The post <a href="http://www.keenlio.com/mac-could-not-open-input-file-userscomposer-phar/">Mac OSX Composer Could not open input file: /Users/<mac-username>/composer.phar</a> appeared first on <a href="http://www.keenlio.com"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.keenlio.com/mac-could-not-open-input-file-userscomposer-phar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
