text:
<?php
declare(strict_types=1);

namespace FunkFeuer\Nodeman;

use DI\Container;
use Slim\Exception\HttpNotFoundException;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
use Twig\Extra\Intl\IntlExtension;

require_once __DIR__.'/vendor/autoload.php';

/* handle static files from php builtin webserver */
if (php_sapi_name() == 'cli-server') {
    $basedir = dirname(__FILE__);
    $allowed_subdirs = array('/css/', '/js/', '/images/');

    $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    $path = realpath($basedir.$uri);

    if ($path !== false && strpos($path, $basedir) === 0) {
        foreach ($allowed_subdirs as $dir) {
            if (strpos($path, $basedir.$dir) === 0) {
                return false;
            }
        }
    }
}

$session = new Session();

// Create container
$container = new Container();
AppFactory::setContainer($container);

// init flash messages
$container->set('flash', function () {
    return new \Slim\Flash\Messages();
});

// Add twig-view Middleware
$container->set('view', function () {
    return Twig::create(__DIR__.'/templates/', ['cache' => false]);
});

// Create App
$app = AppFactory::create();

$app->add(TwigMiddleware::createFromContainer($app));
$app->addErrorMiddleware(false, true, true);

$view = $container->get('view');

$env = $view->getEnvironment();
$env->addGlobal('nonce', bin2hex(random_bytes(5)));
$env->addGlobal('session', $session);
$env->addGlobal('config', new \FunkFeuer\Nodeman\Config());
$env->addGlobal('flash', $container->get('flash'));
$env->addExtension(new IntlExtension());

/* Middlewares */
$app->add(function ($request, $handler) {
    $response = $handler->handle($request);

    // CSP and other security headers
    if (!$response->hasHeader('Content-Security-Policy')) {
        $globals = $this->get('view')->getEnvironment()->getGlobals();

        $response = $response->withHeader('Content-Security-Policy', "script-src 'strict-dynamic' 'nonce-".$globals['nonce']."' 'unsafe-inline' http: https:; object-src 'none'; font-src 'self'; base-uri 'none'; frame-ancestors 'none'; form-action 'self';");
    }

    // Referrer Policy (Mozilla Web Security Guidelines)
    if (!$response->hasHeader('Referrer-Policy')) {
        $response = $response->withHeader('Referrer-Policy', 'no-referrer');
    }

    return $response;
});

/* landing page */
$app->get('/', function ($request, $response) {
    return $this->get('view')->render($response, 'index.html');
});

/* Authentication - Login */
$app->post('/login', function ($request, $response) use ($session) {
    if (!$request->getParam('email') || !$request->getParam('password')) {
        $this->get('flash')->addMessage('error', 'Authentication failed');
    } elseif (!$session->login($request->getParam('email'), $request->getParam('password'))) {
        $this->get('flash')->addMessage('error', 'Authentication failed');
    } elseif ($session->getUser() !== null && $session->getUser()->getAttribute('needsverification')) {
        $this->get('flash')->addMessage('error', 'EMail not verified yet');
        $session->deauthenticate();
    }

    return $response->withStatus(302)->withHeader('Location', '/');
});

$app->get('/logout', function ($request, $response) use ($session) {
    $session->logout();

    return $response->withStatus(302)->withHeader('Location', '/');
});

/* Registration */
$app->get('/register', function ($request, $response) {
    return $this->get('view')->render($response, 'register.html');
});

$app->post('/register', function ($request, $response) {
    if (!filter_var($request->getParam('email'), FILTER_VALIDATE_EMAIL)) {
        $this->get('flash')->addMessageNow('error', 'EMail address invalid');
    }
    if (strlen($request->getParam('email')) > 50) {
        $this->get('flash')->addMessageNow('error', 'EMail address too short (max length 50)');
    }
    if (strlen($request->getParam('password1')) < 6) {
        $this->get('flash')->addMessageNow('error', 'Password too short (min length 6)');
    }
    if ($request->getParam('password1') != $request->getParam('password2')) {
        $this->get('flash')->addMessageNow('error', 'Passwords do not match');
    }

    $user = new User();
    if ($user->emailExists($request->getParam('email'))) {
        $this->get('flash')->addMessageNow('error', 'EMail address already in use');
    }

    if (!$this->get('flash')->hasMessage('error')) {
        $user = new User();
        $user->setPassword($request->getParam('password1'));
        $user->email = $request->getParam('email');
        $user->firstname = $request->getParam('firstname');
        $user->lastname = $request->getParam('lastname');
        $user->phone = $request->getParam('phone');
        $user->usergroup = 'user';
        $user->lastlogin = 0;
        $user->regdate = time();

        if ($user->save()) {
            $user->setAttribute('needsverification', 'true');
            $user->setAttribute('sendmail', 'verifyemail');

            $this->get('flash')->addMessage('success', 'Account created. Please check your EMails!');

            return $response->withStatus(302)->withHeader('Location', '/');
        } else {
            $this->get('flash')->addMessageNow('error', 'Account creation failed');
        }
    }

    $data = array(
        'email'     => $request->getParam('email'),
        'firstname' => $request->getParam('firstname'),
        'lastname'  => $request->getParam('lastname'),
        'phone'     => $request->getParam('phone')
    );

    return $this->get('view')->render($response, 'register.html', array('data' => $data));
});

$app->get('/verify', function ($request, $response) {
    $data = array(
        'token' => '',
        'email' => ''
    );

    if ($request->getParam('token')) {
        $data['token'] = $request->getParam('token');
    }
    if ($request->getParam('email')) {
        $data['email'] = $request->getParam('email');
    }

    return $this->get('view')->render($response, 'verify.html', array('data' => $data));
});

$app->post('/verify', function ($request, $response) {
    $user = new User();

    $data = array(
        'token' => '',
        'email' => ''
    );

    if ($user->loadByEMail($request->getParam('email'))) {
        if ($user->getAttribute('emailtoken') != $request->getParam('token')) {
            $this->get('flash')->addMessageNow('error', 'EMail verification failed');
        } elseif ($user->getAttribute('emailtokenvalid') < time()) {
            $this->get('flash')->addMessageNow('error', 'EMail verification failed');
        } else {
            $user->delAttribute('emailtoken');
            $user->delAttribute('emailtokenvalid');
            $user->delAttribute('needsverification');

            $this->get('flash')->addMessage('success', 'EMail Address verified. You can login now!');

            return $response->withStatus(302)->withHeader('Location', '/');
        }
    } else {
        $this->get('flash')->addMessageNow('error', 'EMail verification failed');
    }

    return $this->get('view')->render($response, 'verify.html', array('data' => $data));
});

$app->get('/passwordreset', function ($request, $response) {
    return $this->get('view')->render($response, 'passwordreset.html');
});

$app->post('/passwordreset', function ($request, $response) {
    $user = new User();
    $user->email = $request->getParam('email');
    if ($user->emailExists($request->getParam('email'))) {
        $user->loadByEMail($request->getParam('email'));

        $user->setAttribute('sendmail', 'passwordreset');
    }
    $this->get('flash')->addMessage('success', 'EMail was send');
    return $response->withStatus(302)->withHeader('Location', '/passwordresetcode?email='.$user->email);
});

$app->get('/passwordresetcode', function ($request, $response) {
    $data = array(
        'token' => '',
        'email' => ''
    );

    if ($request->getParam('token')) {
        $data['token'] = $request->getParam('token');
    }
    if ($request->getParam('email')) {
        $data['email'] = $request->getParam('email');
    }

    return $this->get('view')->render($response, 'passwordresetcode.html', array('data' => $data));
});

$app->post('/passwordresetcode', function ($request, $response) {
    $user = new User();

    if ($user->loadByEMail($request->getParam('email'))) {
        if ($user->getAttribute('emailtoken') != $request->getParam('token')) {
            $this->get('flash')->addMessageNow('error', 'Token is invalid');
        } elseif ($user->getAttribute('emailtokenvalid') < time()) {
            $this->get('flash')->addMessageNow('error', 'Token expired');
        } elseif (strlen($request->getParam('password1')) < 6) {
            $this->get('flash')->addMessageNow('error', 'Password too short (min length 6)');
        } elseif ($request->getParam('password1') != $request->getParam('password2')) {
            $this->get('flash')->addMessageNow('error', 'Passwords do not match');
        } elseif (!$user->setPassword($request->getParam('password1'))) {
            $this->get('flash')->addMessageNow('error', 'Password reset failed');
        } elseif (!$user->save()) {
            $this->get('flash')->addMessageNow('error', 'Password reset failed');
        } else {
            $user->delAttribute('emailtoken');
            $user->delAttribute('emailtokenvalid');

            $this->get('flash')->addMessage('success', 'New Password was set. You can login now!');
            return $response->withStatus(302)->withHeader('Location', '/');
        }
    } else {
        $this->get('flash')->addMessageNow('error', 'Password reset failed');
    }

    $data = array(
        'email' => $request->getParam('email')
    );

    return $this->get('view')->render($response, 'passwordresetcode.html', array('data' => $data));
});

/* Map */
$app->get('/map', function ($request, $response) {
    $query = '';

    if ($request->getParam('lat') && $request->getParam('lng')) {
        $query = sprintf('?lat=%f&lng=%f', $request->getParam('lat'), $request->getParam('lng'));
    }

    return $this->get('view')->render($response, 'map.html', array(
        'css' => array('/css/leaflet.css'),
        'js'  => array('/js/leaflet.min.js', '/mapdata'.$query)
    ));
});

$app->get('/mapdata', function ($request, $response) {
    $location = new Location();
    $deflocation = array();

    $locationdata = array(
        'interested' => array(
            'locations' => [],
            'name' => 'Interested',
            'icon' => 'icon-map-pin-interested',
            'hide' => false
        ),
        'planned' => array(
            'locations' => [],
            'name' => 'Planned',
            'icon' => 'icon-map-pin-planned',
            'hide' => true
        ),
        'online' => array(
            'locations' => [],
            'name' => 'Online',
            'icon' => 'icon-map-pin-online',
            'hide' => false
        ),
        'offline' => array(
            'locations' => [],
            'name' => 'Offline',
            'icon' => 'icon-map-pin-offline',
            'hide' => false
        ),
        'obsolete' => array(
            'locations' => [],
            'name' => 'Obsolete',
            'icon' => 'icon-map-pin-obsolete',
            'hide' => true
        ),
    );

    $linkdata = array(
        'copper' => array(
            'links' => [],
            'name'  => 'Kupfer',
            'color' => 'brown'
        ),
        'fiber' => array(
            'links' => [],
            'name'  => 'Fiber',
            'color' => 'black'
        ),
        'tunnel' => array(
            'links' => [],
            'name'  => 'Tunnel',
            'color' => 'blue'
        ),
        'wifi24' => array(
            'links' => [],
            'name'  => 'WiFi 2.4Ghz',
            'color' => 'orange'
        ),
        'wifi5' => array(
            'links' => [],
            'name'  => 'WiFi 5Ghz',
            'color' => 'green'
        ),
        'wifi60' => array(
            'links' => [],
            'name'  => 'WiFi 60Ghz',
            'color' => 'darkgreen'
        )
    );

    if ($request->getParam('lat') && $request->getParam('lng')) {
        $deflocation['lat'] = $request->getParam('lat');
        $deflocation['lng'] = $request->getParam('lng');
    }

    foreach ($location->getAllLocations(null, 0, 999999) as $loc) {
        $popup = sprintf('%s
%s', $loc->name, $loc->name, $loc->address);

        if (strlen($loc->gallerylink)) {
            $popup .= sprintf('
Gallery', $loc->gallerylink);
        }

        $locationdata[$loc->status]['locations'][] = array(
            'name'     => $loc->name,
            'status'   => $loc->status,
            'location' => $loc->getLongLat(),
            'popup'    => $popup
        );
    }

    $link = new InterfaceLink();

    foreach ($link->getAllLinks() as $link) {
        $type1 = $link->getFromInterface()->category;
        $type2 = $link->getToInterface()->category;
        $type = 'wifi5';

        if ($type1 == $type2) {
            $type = $type1;
        } elseif ($type1 == 'tunnel' || $type2 == 'tunnel') {
            $type = 'tunnel';
        } elseif ($type1 == 'fiber' || $type2 == 'fiber') {
            $type = 'fiber';
        }

        $type = preg_replace('/[^A-Za-z0-9 ]/', '', $type);

        if ($type === null || is_array($type) || !isset($linkdata[$type])) {
            continue;
        }

        if ($link->status != 'up') {
            continue;
        }

        $fromloc = $link->getFromLocation();
        $toloc = $link->getToLocation();

        $linkdata[$type]['links'][] = array(
            'from'    => $fromloc->getLongLat(),
            'to'      => $toloc->getLongLat(),
            'quality' => $link->quality
        );
    }

    return $this->get('view')->render($response, 'map.js', array(
        'deflocation'  => $deflocation,
        'locationdata' => $locationdata,
        'linkdata'     => $linkdata
    ))->withHeader('Content-Type', 'application/javascript; charset=utf-8');
});

/* Locations */
$app->get('/locations', function ($request, $response) {
    $loc = new Location();

    return $this->get('view')->render($response, 'locations.html', array(
        'locations' => $loc->getAllLocations(null, 0, 999999)
    ));
});

$app->get('/location/add', function ($request, $response) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessage('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    return $this->get('view')->render($response, 'location/add.html', array(
        'css' => array('/css/leaflet.css'),
        'js'  => array('/js/leaflet.min.js', '/js/grazmap.js')
    ));
});

$app->post('/location/add', function ($request, $response) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessageNow('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    if (!preg_match('/^[0-9A-Za-z]{3,50}$/', $request->getParam('name'))) {
        $this->get('flash')->addMessageNow('error', 'Location name is invalid. Length from 3-50. Allowed characters only 0-9, A-Z, a-z');
    }
    if (strlen($request->getParam('address')) < 5) {
        $this->get('flash')->addMessageNow('error', 'Address is invalid');
    }
    if (strlen($request->getParam('address')) > 255) {
        $this->get('flash')->addMessageNow('error', 'Address too long (max length 255)');
    }
    if (!$request->getParam('latitude') || !$request->getParam('longitude')) {
        $this->get('flash')->addMessageNow('error', 'Position on map is missing');
    }

    $location = new Location();
    if ($location->loadByName($request->getParam('name'))) {
        $this->get('flash')->addMessageNow('error', 'Location name already exists');
    }

    if (!$this->get('flash')->hasMessage('error')) {
        $location = new Location();

        if (!$location->loadByName($request->getParam('name'))) {
            $location->name = $request->getParam('name');
            $location->maintainer = $session->getUser()->userid;
            $location->address = $request->getParam('address');
            $location->latitude = $request->getParam('latitude');
            $location->longitude = $request->getParam('longitude');
            $location->status = 'interested';
            $location->gallerylink = '';
            $location->description = '';

            if ($location->save()) {
                $this->get('flash')->addMessage('success', 'Location created');

                return $response->withStatus(302)->withHeader('Location', '/');
            } else {
                $this->get('flash')->addMessageNow('error', 'Location creation failed');
            }
        } else {
            $this->get('flash')->addMessageNow('error', 'Location name already used');
        }
    }

    $data = array(
        'name'    => $request->getParam('name'),
        'address' => $request->getParam('address'),
        'latitude'    => $request->getParam('latitude'),
        'longitude'   => $request->getParam('longitude')
    );

    return $this->get('view')->render($response, 'location/add.html', array(
        'data' => $data,
        'css'  => array('/css/leaflet.css'),
        'js'   => array('/js/leaflet.min.js', '/js/grazmap.js')
    ));
});

$app->get('/location/{location}/edit', function ($request, $response, $args) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessage('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    $location = new Location();

    if (!$location->loadByName($args['location'])) {
        $this->get('flash')->addMessage('error', 'Invalid Location');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    if ($location->maintainer != $session->getUser()->userid) {
        $this->get('flash')->addMessage('error', 'Permission denied');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    $data = array(
        'locationid'    => $location->locationid,
        'name'          => $location->name,
        'address'       => $location->address,
        'latitude'      => $location->latitude,
        'longitude'     => $location->longitude,
        'gallerylink'   => $location->gallerylink,
        'description'   => $location->description
    );

    return $this->get('view')->render($response, 'location/edit.html', array(
        'data' => $data,
        'css'  => array('/css/leaflet.css'),
        'js'   => array('/js/leaflet.min.js', '/js/grazmap.js')
    ));
});

$app->post('/location/{location}/edit', function ($request, $response, $args) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessageNow('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    if (strlen($request->getParam('address')) < 5) {
        $this->get('flash')->addMessageNow('error', 'Address is invalid');
    }
    if (strlen($request->getParam('address')) > 255) {
        $this->get('flash')->addMessageNow('error', 'Address too long (max length 255)');
    }
    if (!$request->getParam('latitude') || !$request->getParam('longitude')) {
        $this->get('flash')->addMessageNow('error', 'Position on map is missing');
    }
    if (strlen($request->getParam('gallerylink')) > 255) {
        $this->get('flash')->addMessageNow('error', 'Gallerylink too long (max 255 chars)');
    }
    if (strlen($request->getParam('description')) > 16384) {
        $this->get('flash')->addMessageNow('error', 'Description is too long (max 16K)');
    }

    if (!$this->get('flash')->hasMessage('error')) {
        $location = new Location();

        if ($location->loadByName($args['location'])) {
            if ($location->maintainer != $session->getUser()->userid) {
                $this->get('flash')->addMessage('error', 'Permission denied');

                return $response->withStatus(302)->withHeader('Location', '/');
            }

            $location->address = $request->getParam('address');
            $location->latitude = $request->getParam('latitude');
            $location->longitude = $request->getParam('longitude');
            $location->gallerylink = $request->getParam('gallerylink');
            $location->description = $request->getParam('description');

            if ($location->save()) {
                $this->get('flash')->addMessage('success', 'Location updated');

                return $response->withStatus(302)->withHeader('Location', '/');
            } else {
                $this->get('flash')->addMessageNow('error', 'Location update failed');
            }
        } else {
            $this->get('flash')->addMessageNow('error', 'Location not found');
        }
    }

    $data = array(
        'name'        => $request->getParam('name'),
        'address'     => $request->getParam('address'),
        'latitude'    => $request->getParam('latitude'),
        'longitude'   => $request->getParam('longitude'),
        'gallerylink' => $request->getParam('gallerylink'),
        'description' => $request->getParam('description')
    );

    return $this->get('view')->render($response, 'location/edit.html', array(
        'data' => $data,
        'css'  => array('/css/leaflet.css'),
        'js'   => array('/js/leaflet.min.js', '/js/grazmap.js')
    ));
});

$app->get('/location/{location}/', function ($request, $response, $args) use ($session) {
    $location = new Location();

    if (!$location->loadByName($args['location'])) {
        $this->get('flash')->addMessage('error', 'Invalid Location');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    return $this->get('view')->render($response, 'location/overview.html', array(
        'css'      => array('/css/leaflet.css'),
        'js'       => array('/js/leaflet.min.js', '/js/grazmap.js'),
        'location' => $location,
        'nodes'    => $location->getNodes(),
        'user'     => $session->getUser()
    ));
});

/* Nodes */
$app->get('/location/{location}/add', function ($request, $response, $args) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessage('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    return $this->get('view')->render($response, 'location/node/add.html', array(
        'data' => array('location' => $args['location'])
    ));
});

$app->post('/location/{location}/add', function ($request, $response, $args) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessage('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    $location = new Location();
    if (!$location->loadByName($args['location'])) {
        $this->get('flash')->addMessage('error', 'Location not found');

        return $response->withStatus(302)->withHeader('Location', '/');
    }
    if ($location->maintainer != $session->getUser()->userid) {
        $this->get('flash')->addMessage('error', 'Permission denied');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    if (!preg_match('/^[0-9A-Za-z]{3,50}$/', $request->getParam('name'))) {
        $this->get('flash')->addMessageNow('error', 'Node name is invalid. Length from 3-50. Allowed characters only 0-9, A-Z, a-z');
    }
    if (strlen($request->getParam('description')) > 16384) {
        $this->get('flash')->addMessageNow('error', 'Description is too long (max 16K)');
    }

    if ($location->nodeExists($request->getParam('name'))) {
        $this->get('flash')->addMessageNow('error', 'Node name already exists');
    }

    if (!$this->get('flash')->hasMessage('error')) {
        $node = new Node();
        $node->name = $request->getParam('name');
        $node->maintainer = $session->getUser()->userid;
        $node->location = $location->locationid;
        $node->description = $request->getParam('description');

        if ($location->status == 'interested') {
            $location->status = 'planned';
            $location->save();
        }

        if ($node->save()) {
            $this->get('flash')->addMessage('success', 'Node created');

            return $response->withStatus(302)->withHeader('Location', '/location/'.$node->location.'/node/'.$node->nodeid.'/');
        } else {
            $this->get('flash')->addMessageNow('error', 'Location creation failed');
        }
    }

    $data = array(
        'name'          => $request->getParam('name'),
        'description'   => $request->getParam('description'),
        'locationid'    => $location->locationid,
        'locationname'  => $location->name
    );

    return $this->get('view')->render($response, 'location/node/add.html', array(
        'data' => $data
    ));
});

/* User Area */
$app->get('/user/home', function ($request, $response) use ($session) {
    if (!$session->isAuthenticated()) {
        $this->get('flash')->addMessage('error', 'Please login first');

        return $response->withStatus(302)->withHeader('Location', '/');
    }

    $loc = new Location();

    return $this->get('view')->render($response, 'user/home.html', array(
        'user'      => $session->getUser(),
        'locations' => $loc->getAllLocations($session->getUser()->userid, 0, 999999)
    ));
});

/* Exports */
$app->get('/export/smokeping', function ($request, $response) {
    $loc = new Location();

    return $this->get('view')->render($response, 'export/smokeping.txt', array(
        'locations' => $loc->getAllLocations(null, 0, 999999)
    ));
});

/**
 * Catch-all route to serve a 404 Not Found page if none of the routes match
 * NOTE: make sure this route is defined last
 */
$app->map(['GET', 'POST', 'PUT', 'DELETE', 'PATCH'], '/{routes:.+}', function ($request, $response) {
    throw new HttpNotFoundException($request);
});

$app->run();


text:
We serve those who are experiencing or at risk for homelessness. Through our work, we treat both the symptoms and the causes of homelessness — pursuing a future where every Tulsan has a home.
In search of a shelter, a shower, clothing or medical assistance? We can provide those things and much more. Our doors are always open.
Help Restore Lives
Whether you wish to assist with your time, your expertise or through donations, your contribution is vital. Together, we can change lives.
Needs list Volunteer Host Event Donate
of Oklahomans have been labeled chronically homeless. You can change that.
How Do We Provide Hope?
Our programs are designed to help those who are about to become homeless, those who are newly homeless and those who are chronically homeless. All are welcome here.
General Support Case Management Medical Clinic Housing Resources
300-400 clients served
each day
Nearly 150,000 client contacts annually.
David Poarch
David Poarch is a native Oklahoman, growing up in the Oklahoma City and Edmond area. He attended Deer Creek High School when it was still a small school with 69…
About Hudson Villas
Hudson Villas is a gated community and is staffed 24 hours a day, 7 days a week. There are 60 fully furnished apartments, of which 55 are single occupancy apartments,…
For more than 40 years, Jamie Oldaker built a career in the music industry as one of the world's most respected drummers, producers and a discoverer of talent. Jamie died…

redpajama_set_name: RedPajamaCommonCrawl


text:
package com.happydroids.droidtowers.math;

import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Matrix3;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.io.Serializable;

import static com.happydroids.droidtowers.TowerConsts.GRID_UNIT_SIZE;

/**
 * Encapsulates a 2D vector. Allows chaining methods by returning a reference to itself
 * Copied from Vector2 which uses floats, I wanted integers so I didn't have to constantly cast and round
 * for my grid points.
 *
 * @author badlogicgames@gmail.com
 * @author phil@happydroids.com
 */
public class GridPoint implements Serializable {
  /**
   * Static temporary vector. Use with care! Use only when sure other code will not also use this.
   *
   * @see #tmp() *
   */
  public final static GridPoint TMP = new GridPoint();
  public final static GridPoint X = new GridPoint(1, 0);
  public final static GridPoint Y = new GridPoint(0, 1);
  public final static GridPoint ZERO = new GridPoint(0, 0);

  /**
   * the x-component of this vector *
   */
  public int x;
  /**
   * the y-component of this vector *
   */
  public int y;

  /**
   * Constructs a new vector at (0,0)
   */
  public GridPoint() {

  }

  /**
   * Constructs a vector with the given components
   *
   * @param x The x-component
   * @param y The y-component
   */
  public GridPoint(int x, int y) {
    this.x = x;
    this.y = y;
  }

  /**
   * Constructs a vector from the given vector
   *
   * @param v The vector
   */
  public GridPoint(GridPoint v) {
    set(v);
  }

  /**
   * @return a copy of this vector
   */
  public GridPoint cpy() {
    return new GridPoint(this);
  }

  /**
   * @return The euclidian length
   */
  public int len() {
    return (int) Math.sqrt(x * x + y * y);
  }

  /**
   * @return The squared euclidian length
   */
  public int len2() {
    return x * x + y * y;
  }

  /**
   * Sets this vector from the given vector
   *
   * @param v The vector
   * @return This vector for chaining
   */
  public GridPoint set(GridPoint v) {
    x = v.x;
    y = v.y;
    return this;
  }

  /**
   * Sets the components of this vector
   *
   * @param x The x-component
   * @param y The y-component
   * @return This vector for chaining
   */
  public GridPoint set(int x, int y) {
    this.x = x;
    this.y = y;
    return this;
  }

  /**
   * Substracts the given vector from this vector.
   *
   * @param v The vector
   * @return This vector for chaining
   */
  public GridPoint sub(GridPoint v) {
    x -= v.x;
    y -= v.y;
    return this;
  }

  /**
   * Normalizes this vector
   *
   * @return This vector for chaining
   */
  public GridPoint nor() {
    int len = len();
    if (len != 0) {
      x /= len;
      y /= len;
    }
    return this;
  }

  /**
   * Adds the given vector to this vector
   *
   * @param v The vector
   * @return This vector for chaining
   */
  public GridPoint add(GridPoint v) {
    x += v.x;
    y += v.y;
    return this;
  }

  /**
   * Adds the given components to this vector
   *
   * @param x The x-component
   * @param y The y-component
   * @return This vector for chaining
   */
  public GridPoint add(int x, int y) {
    this.x += x;
    this.y += y;
    return this;
  }

  /**
   * @param v The other vector
   * @return The dot product between this and the other vector
   */
  public int dot(GridPoint v) {
    return x * v.x + y * v.y;
  }

  /**
   * Multiplies this vector by a scalar
   *
   * @param scalar The scalar
   * @return This vector for chaining
   */
  public GridPoint mul(int scalar) {
    x *= scalar;
    y *= scalar;
    return this;
  }

  /**
   * @param v The other vector
   * @return the distance between this and the other vector
   */
  public int dst(GridPoint v) {
    final int x_d = v.x - x;
    final int y_d = v.y - y;
    return (int) Math.sqrt(x_d * x_d + y_d * y_d);
  }

  /**
   * @param x The x-component of the other vector
   * @param y The y-component of the other vector
   * @return the distance between this and the other vector
   */
  public int dst(int x, int y) {
    final int x_d = x - this.x;
    final int y_d = y - this.y;
    return (int) Math.sqrt(x_d * x_d + y_d * y_d);
  }

  /**
   * @param v The other vector
   * @return the squared distance between this and the other vector
   */
  public int dst2(GridPoint v) {
    final int x_d = v.x - x;
    final int y_d = v.y - y;
    return x_d * x_d + y_d * y_d;
  }

  /**
   * @param x The x-component of the other vector
   * @param y The y-component of the other vector
   * @return the squared distance between this and the other vector
   */
  public int dst2(int x, int y) {
    final int x_d = x - this.x;
    final int y_d = y - this.y;
    return x_d * x_d + y_d * y_d;
  }

  public String toString() {
    return "[" + x + ":" + y + "]";
  }

  /**
   * Substracts the other vector from this vector.
   *
   * @param x The x-component of the other vector
   * @param y The y-component of the other vector
   * @return This vector for chaining
   */
  public GridPoint sub(int x, int y) {
    this.x -= x;
    this.y -= y;
    return this;
  }

  /**
   * NEVER EVER SAVE THIS REFERENCE! Do not use this unless you are aware of the side-effects, e.g. other methods might call this
   * as well.
   *
   * @return a temporary copy of this vector. Use with care as this is backed by a single static Vector2 instance. v1.TMP().add(
   *         v2.TMP() ) will not work!
   */
  public GridPoint tmp() {
    return TMP.set(this);
  }

  /**
   * Multiplies this vector by the given matrix
   *
   * @param mat the matrix
   * @return this vector
   */
  public GridPoint mul(Matrix3 mat) {
    int x = (int) (this.x * mat.val[0] + this.y * mat.val[3] + mat.val[6]);
    int y = (int) (this.x * mat.val[1] + this.y * mat.val[4] + mat.val[7]);
    this.x = x;
    this.y = y;
    return this;
  }

  /**
   * Calculates the 2D cross product between this and the given vector.
   *
   * @param v the other vector
   * @return the cross product
   */
  public int crs(GridPoint v) {
    return this.x * v.y - this.y * v.x;
  }

  /**
   * Calculates the 2D cross product between this and the given vector.
   *
   * @param x the x-coordinate of the other vector
   * @param y the y-coordinate of the other vector
   * @return the cross product
   */
  public int crs(int x, int y) {
    return this.x * y - this.y * x;
  }

  /**
   * @return the angle in degrees of this vector (point) relative to the x-axis. Angles are counter-clockwise and between 0 and
   *         360.
   */
  public int angle() {
    int angle = (int) (Math.atan2(y, x) * MathUtils.radiansToDegrees);
    if (angle < 0) {
      angle += 360;
    }
    return angle;
  }

  /**
   * Rotates the Vector2 by the given angle, counter-clockwise.
   *
   * @param angle the angle in degrees
   * @return the
   */
  public GridPoint rotate(int angle) {
    int rad = (int) (angle * MathUtils.degreesToRadians);
    int cos = (int) Math.cos(rad);
    int sin = (int) Math.sin(rad);

    int newX = this.x * cos - this.y * sin;
    int newY = this.x * sin + this.y * cos;

    this.x = newX;
    this.y = newY;

    return this;
  }

  /**
   * Linearly interpolates between this vector and the target vector by alpha which is in the range [0,1]. The result is stored
   * in this vector.
   *
   * @param target The target vector
   * @param alpha  The interpolation coefficient
   * @return This vector for chaining.
   */
  public GridPoint lerp(GridPoint target, int alpha) {
    GridPoint r = this.mul(1 - alpha);
    r.add(target.tmp().mul(alpha));
    return r;
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + x;
    result = prime * result + y;
    return result;
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    GridPoint other = (GridPoint) obj;
    return x == other.x && y == other.y;
  }

  /**
   * Compares this vector with the other vector, using the supplied
   * epsilon for fuzzy equality testing.
   *
   * @return whether the vectors are the same.
   */
  public boolean epsilonEquals(GridPoint obj, int epsilon) {
    return obj != null && Math.abs(obj.x - x) <= epsilon && Math.abs(obj.y - y) <= epsilon;
  }

  @JsonIgnore
  public float getWorldX() {
    return GRID_UNIT_SIZE * x;
  }

  @JsonIgnore
  public float getWorldY() {
    return GRID_UNIT_SIZE * y;
  }
}

redpajama_set_name: RedPajamaGithub


Some things just restlessly vie for attention over and over again and you find yourself humouring them.
Yes, a little playfulness is good, Yoshizen!
I love the first image particularly Karen. So delicate, so beautiful.
Thank you, Adrian. The delicacy of change.
Perfect. I really like the mystery in both pieces. The second is my favorite. Lovely work.
Much thanks for your comment, Walter.
Son Flou reste Emouvant , Subtil étant son Fort.
No other medium could record something that's almost not there at all like this. Giacometti would have loved these. Great photographs, Karen.
Oh, I love the work of Giacometti; all those beautifully elongated forms. Thank you, Richard. That's quite a compliment!
They have a life of their own… thanks, Mimo!
So magical. You have the gift of capturing so much more than just an object.
Thanks so very much, Marcus.
Oh my! These are such an inspiration.
As for humouring some things that vie for attention, I am weak in that department. Very weak. And I am so pleased you return to these guys.
Any chance we might see some more wrapped trees this year? I can't get those images out of my head.
Maybe, I'll be on the look out for some, but I imagine the same ones won't be wrapped this year.
I like your descriptive words. Thank you.
I'd say you aren't humoring but honoring. You are amazing.
Thanks so much much, Elena! I think you're amazing!
I find your images so meditative Karen.
Keep doing whatever you're doing. Don't see myself getting tired of these anytime soon..
Good to hear, James. Thank you!
Have a beautiful week, Karen.
Beautiful images, Karen. Would love to see these as prints.
Simon, I actually did print these up (not too big yet) on a watercolour paper. The black is rather velvety. I think it would be interesting to see them printed bigger. I may do that.
An interesting observation, Alessandro. Thank you, much appreciated!
So wonderfully graceful and delicate. There is such lovely and elegant movement in these images.
Nice images and good choice of depth of field in my opinion.
Thanks for your feedback, Todor!
Please just keep on humouring them!
Like a gentle dream that keeps returning…comforting….
Fantastic! Nice to take a look at Your older work. So much realy Nice, Karen!!


text:
V век
 V — Славянское поселение в районе современной площади Резни во Львове.

X—XII
 Древнерусское поселение в районе Замковой горы.

XIII век
 1238—1264 — Правление Данила I Романовича Галицкого в Галицко-волынском княжестве.
 1247 — Вероятный год основания Львова.
 1256 — Первое летописное упоминание о Львове.
 1259 — Разрушение деревянных укреплений Львова по требованию золотоордынского военачальника Бурундая.
 1264—1301 — Правление князя Льва I Даниловича.
 1270 — Восстановление городских укреплений, Высокого и Низкого замков.
 1287 — Оборона Львова от войск хана Телебуги.

XIV век
 1301—1308 — Правление князя Юрия І Львовича.
 1303 — Учреждение Галицкой церковной метрополии.
 1323 — Гибель князей галицких Андрея и Льва Юрьевичей.
 1323—1340 — Правление Юрия-Болеслава ІІ.
 1340 — Походы польского короля Казимира ІІІ на Львовскую землю.
 1340—1345 — Правление боярина Дмитрия Детька.
 1349 — Захват Галиции и Львова Казимиром ІІІ.
 1349—1387 — Львов как столица Галицкого-Волынского княжества находится в составе Польши и Венгрии. С 1387 года Галицкое княжество включено в состав Польши как Русское воеводство.
 1356 — Львов получает привилегию магдебургского права, предоставленную польским королём Казимиром ІІІ. Население города насчитывает около 5 тыс. лиц.
 1360-те года — Начало строительства Латинского собора, Армянской церкви, которые сохранились по сей день и деревянной церкви на Святоюрской горе — основы нынешнего Собора св. Юра.
 1370—1387 — Галиция в составе Венгерского королевства.
 1372—1379 — Правление князя Владислава Опольского.
 1381 — Первое документальное упоминание о львовской ратуше.
 1387 — Присоединение Галиции и Львова к Польскому королевству (до 1772 г.).

XV век
 1434 — Образование Русского воеводства с центром во Львове.
 1445 — Завершение строительства оборонительных башен Высокой стены.
 1438, 1498 — Нападения татарских и турецких войск.
 1460 — Упоминание о типографии Степана Дропана. К сожалению, его работы не дошли к наших дней.
 1479, 1494, 1511, 1527 — Большие пожары города.

XVI век
 1527 — Наибольший городской пожар, который уничтожил готический Львов.
 1542—1544 — Создание первых братств.
 1572—1629 — Строительство Успенского ансамбля, который состоит из башни- колокольни, Успенской церкви и часовни Трех Святителей
 1574 — Иван Федоров издает во Львове «Апостол» и «Букварь».
 1578, 16 июня — Казнь Ивана Подковы.
 1585 — Создана школа при Львовском братстве.
 1586 — Утвержден устав Львовского Успенского братства.
 1591 — Основана типография Львовского Успенского братства.

XVII век

 XVII — Население Львова насчитывает 17-20 тысяч человек.
 1648, 6-16 октября — Осада Львова войсками под предводительством Б. Хмельницкого и войсками крымского хана. Казаки Максима Кривоноса захватили неприступный до этого времени Высокий Замок.
 1655, 25 сентября - 8 ноября — Вторая осада Львова войсками Б. Хмельницкого и русскими войсками.
 1661 — Основана Иезуитская коллегия, которая положила начало будущему Львовскому университету.
 1672, 1675, 1695 — Нападения турецко-татарских войск.
 1686 — Подписание во Львове «Вечного мира» между Россией и Польшей.

XVIII век

 1704 — Штурм и разграбление города шведскими войсками Карла XІІ. Обнищание города.
 1744—1761 — Сооружение собора Св. Юра.
 1772, 19 сентября — Занятие Львова австрийскими войсками.
 1772 — Образование в составе Габсбургской империи Королевства Галиции и Лодомерии со столицей во Львове.
 1776 — Начало издания «Gazettе d'Leopol», первой газеты на территории современной Украины.
 1776 — Основан первый постоянно действующий городской театр.
 1777 — Начало ликвидации городских укреплений.
 1780 — Церковная реформа Иосифа ІІ.
 1783 — Учреждение духовной грекокатолической семинарии во Львове.
 1784 — Реорганизация Иезуитской академии во Львове на университет. Создание библиотеки.
 1784—1785 — Учреждение первой академической гимназии.

XIX век

 1827 — Основан Институт Оссолинских.
 1830-е — Деятельность кружка «Русская Троица».
 1844 — Открыта Техническая академия.
 1844 — Опубликована на польском языке «Хроника города Львова» Дениса Зубрицкого.
 1848, март — Массовые антиавстрийские выступления львовян.
 1848, 2 мая — Создана Главная Русская рада.
 1848, 15 мая — Выход газеты «Зоря Галицкая».
 1848, 19 октября — 25 октября — Собор Русских учёных.
 1848, 1 ноября — 2 ноября — Вооружённое восстание.
 1849 — Основан Народный дом во Львове.
 1851 — Основан Исторический музей.
 1853 — Изобретена керосиновая лампа.
 1858 — Газовое освещение улиц города.
 1861 — Построена железная дорога Львов — Перемышль, позднее — Краков.
 1864 — Открыто украинский театр при Обществе «Русская беседа».
 1868 — Основано Всеукраинское общество «Просвещение» имени Тараса Шевченко.
 1870 — Восстановлено городское самоуправление. Интенсивное развитие за несколько десятилетий превратило Львов в один из наиболее благоустроенных городов Европы. В Львове насчитывается 87 тыс. жителей.
 1873 — учреждение во Львове одного из старейших в Европе Естественного музея.
 1874 — во Львове создана первая украинская средняя школа (гимназия).
 1874 — в Львове создан Промышленный музей (теперь Музей этнографии и художественного промысла) — один из наибольших специализированных этнографических музеев Европы. Здесь находится наибольшая и ценнейшая на Украине коллекция часов.
 1879 — основан Стрыйский парк, который на начало XX столетия был признан одним из красивейший парков Европы.
 1880 май — впервые на Украине заработал конный трамвай.
 1882—1883 — создание первого на Украине Институт географии.
 1883 — встала в строй первая на Украине система городской телефонной связи.
 1884 — основано «Акционерное аэронавтическое общество», которое выпускало на немецком и польском языках одну из первых в мире специализированную газету «Аэронавт».
 1890 — создание Русско-Украинской радикальной партии (РУРП) — первой украинской легальной политической партии европейского типа.
 1893 — впервые на Украине основана конная станция скорой помощи.
 1894 — запущен в действие электрический трамвай, первый на Украине и один из первых в Европе.
 1894 14 июля — состоялся первый в украинской истории футбольный матч между командами Львова и Кракова.
 1895 — впервые на Украине названа улица именем Тараса Шевченко.
 1897 — создана галерея европейского искусства (теперь Львовская галерея искусств) — наибольший художественный музей на Украине, в котором собрано свыше 50 тысяч произведений искусства.
 Конец XIX — на улице Театральной впервые на Украине для освещения улицы были использованы люминесцентные лампы.

XX век

 Начало XX — Львов был единственным городом в мире, где находились резиденции трёх католических архиепископов: римокатолического, грекокатолического и армянокатолического.
 1900 — по проекту архитектора Зигмунта Горголевского построен Львовский оперный театр — один из красивейших в Европе.
 1905 — создание первого Украинского национального музея.
 1905 — состоялась первая Всеукраинская художественная выставка.
 1928 — профессор Львовского университета Рудольф Вайгль впервые в мире Изобрел вакцину против сыпного тифа.
 1929 — организована первая на Украине хоккейная (с шайбой) команда СТ «Украина», вратарь которой М. Скрипий одним из первых в мире применил защитную воротарскую маску, переработав её из польской солдатской каски.
 1932 — в костеле Марии Магдалины установлен изготовленный в Чехии, наибольший на Украине орган.
 1939 — Согласно с пактом Риббентропа-Молотова Львов вместе с западноукраинскими землями отходит к Советскому Союзу.
 1951 май — Львовский автобусный завод выпустил первые на Украине автобусы.
 1971 — основан скансен «Шевченковский гай», в котором находятся шесть деревянных храмов.
 1975 — создан первый на Украине архитектурный заповедник, который объединял в себе всю территорию средневекового ядра города.
 1981 — в здании городского арсенала основан единственный на Украине и бывшем СССР музей оружия.
 1960-е — 1980-е — во Львове и области при населении 0,8 % от общего населения СССР было больше 10 % всех действующих культовых сооружений, таким образом Львовщина была одним из самых религиозных регионов Союза.
 1990 — На ратуше поднят сине-жёлтый флаг.
 1991—2001 — во Львове и Львовской области было построено наибольшее количество церквей на Украине — 280.
 1998 — Ансамбль исторического центра Львова внесен в Список мирового наследия ЮНЕСКО.
 1999, 14 мая-15 мая — Львов стал единственным городом в истории Украины, который принимал одновременно девять руководителей государств во время саммита глав государств Восточной и Центральной Европы.

XXI век
 27 июня 2001 — Визит в Львов папы римского Иоанна Павла ІІ. В Львове состоялась литургия в византийском обряде, которую римский папа отслужил на львовском ипподроме.
 29 июня 2002 — во Львове открыт первый на постсоветских территориях и первый, основанный УГКЦ, Украинский католический университет.
 27 июля 2002 — [[Катастрофа Су-27 во Львове|авиакатастрофа в время авиационного шоу на Скниловском аэродроме. Вследствие происшествия погибло 77 людей, из них 27 — дети.

Ссылки
 История Львова в датах
 история Львова, статьи, факты, видео - 25 серий истории Львова

Львов

redpajama_set_name: RedPajamaWikipedia


text:
Bhaluka Pilot High School () is a boys' school located in Bhaluka, Mymensingh District. It is one of the most famous schools which was established in 1948 by Aftab Uddin Chowdhury, an honourable social worker at that time. This school is one of the oldest schools in the district. At that time, it was the only famous school in greater Bhaluka thana. It is situated at the center point of Bhaluka thana near N3 Highway. It has a long L-shaped building and two single-storied building. A large rounded playground is located just in front of the school building for playing and different functional programs of schools and local areas.

School hostel
No hostel facilities. In the very beginning of this school there was a hostel on the western part of this school premises.

Auditorium
A long hall room is situated just beside the teachers' common room. Local conference and school functions are held here by taking permission from school authority.

EIIN number
111280

References

Schools in Mymensingh District
Bhaluka Upazila


text:
Jarboe special - Swans & World of Skin
Jarboe special - Swans & World of Skin - in conversation with David Eastaugh
Between 1985 and 1996, she worked as a vocalist and keyboardist in the band, appearing on albums including Children of God (1987), The Burning World (1989), and Soundtracks for the Blind (1996). Jarboe's inclusion in the band marked a departure from their previous noise rock sound to a more melodic industrial and even folk rock sound. She also collaborated with Gira, forming their side project, The World of Skin in 1987, releasing several albums and singles.
Jarboe left Swans in 1997 when the band broke up and embarked on a solo career, releasing various experimental records (many of which she has self-released and distributed over the internet)[10] including Sacrificial Cake (1995) and Anhedoniac (1998). She has continued to self-release solo albums and, despite not returning to the group, recorded vocals for two tracks on the re-formed Swans' album, The Seer (2012).
Jarboe completed a world tour in the autumn/winter of 2013, with Veil of Thorns' P. Emerson Williams on guitar. She released an experimental soundscape album, With Sun Falling, with Veil of Thorns in June 2015.
Sun Falling by Veil of Thorns Feat. Jarboe
Posted by PANICMACHINE at 10:17 AM
The Cyberpunk Playlist (Post Punk, Dark Wave and W...


After 9/11, I went to NYC to work at the Family Assistance center. While there, I met a man by the name of Michael Beckett who exhibited an unusual gift of mercy. He told me about Christian Disaster Relief, CDR, the organization he was there to represent. He recommended my going through their emergency response training, which I later did.
What I found is that they are an impeccable group of Christians that God has called to go to disaster sites and feed, clothe, help rebuild, and share the Gospel. They operate in integrity and truly take their calling seriously. Ron Patterson, the director of CDR, has a firm policy not to cut corners. People in crisis receive healthy, hot, delicious meals, and CDR only accepts and rebuilds with quality building supplies. Teams are setting up now to mobilize the moment they can get in to help Hurricane Harvey victims.
One last note: If you believe God is calling you to go with them to help, they need people to serve food, hand out supplies, and pray with people. It is very physically challenging work, but extremely gratifying. Please go to their website and click on the volunteer tab to fill out an application. You can call Ron or Sharon Patterson at their office 1-863-967-4357 (HELP) and they can tell you more.
Thank you for your tax-deductible donation that will truly help hurricane Harvey victims.


Firstcry is known to be the largest online portal in Asia for baby and kids items and products. They bring for their customers more than 70000 items from the finest of Indian and International brand names like Funskool, Pampers, Fisher Price, Gerber, Hotwheels, Medela, Disney, Nuby, Ben10, Farlin, Mattel, Mee Mee, Pigeon and many more.
They provide you with unique and the finest of brands at affordable rates and provide you with one of the best kids shopping experience together with delivering quick customer service. The products directly originate from warehouses of the brands they come from, which means they ensure that they are 100% authentic and the best.
Online Shopping firstcry customer care, firstcry customer care number. permalink.


text:
List Of Top Ten Iron Ore Supplier In Wikipedia
Top 10 us based mining companies the northern miner,jul 24, 2020 the companys mining and pelletizing segment includes interests in four producing iron mines: cliffs operates one in michigan, two in minnesota and has a 23% share of one additional minnesota-based iron mine. based on cliffs share of ownership, the mines are able to produce a total of 21.5 million tonnes of iron ore pellets each year.
a list of mobile manufacturers in the world crusher
about iron ore wet ball mill
abrasion index of jaw crusher for iorn ore
abrasives ball mill ores
address list crusher industry in malaysia
address list of stone crusher in ethiopia
address list of stone crushers in indonesia
address of copper ore producing factory in china
advanced ore ball mills for large power plants
advantages and disadvantages of iron ore quarry
after copper ore flotation tailings disposal
agglomeration in iron ore
china top high efficient building materials crusher
separating gold from ore in china
List Of Top Crusher Plants In Australian
list of upcoming cement plant in india grinding mill china
Top 10 Us Based Mining Companies The Northern Miner
jul 24, 2020 the companys mining and pelletizing segment includes interests in four producing iron mines: cliffs operates one in michigan, two in minnesota and has a 23% share of one additional minnesota-based iron mine. based on cliffs share of ownership, the mines are able to produce a total of 21.5 million tonnes of iron ore pellets each year.In the top iron ore exporters to china list, australia leads the exporter list by supplying about 250 mnt iron ore in 2013. the countrys major iron miners are rio tinto bhp billiton and fortescue metals group
Top Us Steel Companies And Steel Manufacturers In World
welcome to the thomas guide to the top US steel companies and global steel manufacturers. steel is a versatile metal that is used in construction and as a core material for the manufacturing of a large range of products for commercial or consumer use. prized for its strength, durability, and capability to be recaptured and recycled, steel is an alloy of iron and carbon, and is able to be the following is a list of chinas ten biggest steel producers and the efforts they are making to boost capacity. for a factbox on the worlds top iron ore producers, click id:nsgy
List The Top 10 Crushing And Screening Companies
top top largest thermal power engineering procurement amp construction get price and support online top ten aggregate crushing plants in the worldclpg top cement plant in company india list of top companies of get price stone mobile world top world top construction get price top miningpanies south africa.aug 31, 2020 how much iron ore is left in the world? this statistic shows the world iron ore reserves as of 2018, by major countries. the reserves of crude iron ore in the united states were estimated to be
Top 10 Iron Steel Companies In India Learning Center
nov 23, 2020 list of top iron, steel companies in india are as follows-top iron, steel companies in india. apl apollo tubes ltd. apl apollo tubes ltd is one of the top producers of electric resistance welded steel pipes and sections in india. It was founded in the year 1986 in delhi.jun 25, 2019 10. australia australia earns $19.9 trillion u.s. dollars from mining, and it is number on the list. australia, which is about 80% the size of the united states, is known for its large
10 Countries With The Most Natural Resources Lists Ng
aug 16, 2019 here are the top countries with the most natural resources in the world include china. china is the country with the most deposits of natural resourses in the world, with an estimated worth of $23 trillion. china is one of the leading producers of phosphates, vanadium, tungsten, antimony, graphite, coal, tin, molybdenum, lead, zinc, and the countrys sudbury basin is the second largest supplier of nickel ore in the world, and vales sudbury operation is located there. every year it produces about 65,000 MT of the metal.
Top Phosphate Countries By Production China Is First Inn
brazil, another of the top phosphate countries by production, produced 5.3 million MT of phosphate in 2019 compared to 5.740 million MT in 2018, dropping two spots to number eight on the list.top crusher manufacturers In germany. top crusher manufacturers in germany top crusher manufacturers in germanygermany top crusher top crusher manu crusher plant manufacturer list in ethiopia sand crushing manufacturers in usa in ethiopi kaolin processing equipment manufacturers in germany by orecrusher a kaolin proc baader is a world wide manufacturer of innovative machinery for
Top Ten Mining Companies In Australia
ask for iron ore frontierville jaw crusher manufacturers in hyderabad; water filter plant pic use home; krebs cyclone for iron ore animation; jp plant crusher in baga hp; slr lounge presets download free; gravel pack suppliers south afraca; top ten mining companies in australia.world top construction companies list by market cap as on jan 2020 world top construction companies list by market cap as jan 2020. world biggest construction companies by market value. world largest construction companies as on jan 2020
Iron Ore Exports By Country 2019 World S Top Exports
iron ore smelter international sales of iron ore exported by country totaled us$122.5 billion in 2019, increasing by 74.2% since 2015 when iron ore shipments were valued at $70.3 billion and expanding 30.3% from 2018 to 2019. from a continental perspective, oceania sold the greatest amount of exported iron ore at 53.8% of the global total.sep 24, 2020 this statistic shows the distribution of the top iron ore importing countries worldwide in 2019. In that year, china was the worlds largest importer of iron ore by a large margin, having
Top 10 Listed Industrial Metals And Mining Companies In
list of the top asx listed industrial metals and mining companies in australia. here is a list of top ten publicprivate sector bhp billiton is among the worlds top producers of major commodities including iron ore, metallurgical coal, copper and uranium. company also have substantial interests in oil, gas and energy coal.top mining companies in india business. kudremukh iron ore company limited is a government owned company which is rated among the top mining companies in india. the company is engaged in mineral exploration, mine and iron ore concentrate business. It is based at mangalore and plant facility has capacity to produce 7.5 million tonnes per
The Top Ten Pulp And Paper Companies In The World
the second most-profitable company on this list is also the worlds leading producer of hygiene products, with kotex, kleenex, cottonelle, scott and huggies being the corporations most notable brands. fortune 500 list veteran kimberly-clark corp. has held a firm grasp on the industry since its inception in wisconsin, usa, in 1872.sep 17, 2015 As a result, a number of high-cost iron ore mines have been closed and suspended throughout the world in 2014, with up to 30% of low-grade iron mines shut down in china in 2014 alone.
India Top Zinc Companies List 2018
vedanta limited is one of the worlds leading diversified natural resources companies. vedanta limited main businesses focus on zinc, lead, silver, aluminium, copper, iron ore, oil & gas and commercial power, while its operations span across india, south africa, namibia, ireland and australia.last year, it was the biggest supplier of tantalum metal to US companies, with percent of the metal imported to the US having come from china, according to the US geological survey.
Top Ten Gold Producers In Zimbabwe
these are the top ten gold producers in zimbabwe. freda rebecca; freda rebecca is the largest gold producer in zimbabwe. its located close to binduras trojan nickel mine, north of harare. freda-rebecca mines 3,000 tonnes of ore and removes 8,000 bank of overburden on an average every day. the mine poured its first gold in april 1988.nov 06, 2020 copper ore. australia is the third-largest exporter of copper ore in the world and enjoys a 7.1% share of an annual market worth $64.2 billion, with chile peru leading the trio of top copper ore exporters. china imports 43.2% of australias annual copper ore exports and the second-largest destination is japan coal
Top 5 Us Commodity Imports Amp Exports Can You Guess
nov 06, 2020 top destinations for US exports. the united states has recently started trading wheat with iraq and has exported the commodity since 2011. this has helped boost its export numbers by 500,000 tons to 26.5 million tons per year. you can see the economic overview for each of the usas top export partners by clicking the country name in the table subpages best omnitronic list and get free shipping best plastic cup forming and packing machine ideas and get free shipping best tig ac dc list and get free shipping best top led lowest price list and get free shipping best top iron ore fe list and get free shipping best vitamin vitamin brands and get free shipping top largest cashew nuts in
Top Ten Mining Companies In Africa
the worlds top largest gold mining companies In In 2019, newmont solidified its top gold mining company spot while polyus was the lowest cost top tier miner. As mines and metals reported previously, global output of gold in 2019 was 3,300 metric tonnes, or in line with 2018 numbers.list Of top ten iron ore supplier In wikipedia. list Of top ten iron ore supplier In wikipedia. hen it comes to major players in the mining industry, the mind often runs to canada, australia, or even russiaere, mining global looks at of the biggest mining companies based in indiaudremukh is a flagship company under the get price
World Top Ten Iron Ore Company Proves Projekt De
the world top biggest copper producers in 2019 rio tinto is an angloaustralian multinational and the worlds second largest metals and mining corporations, behind bhp billiton, producing iron ore, copper, diamonds, gold and uranium the company was founded in when a multinational consortium of investors purchased a mine complex on the rio tinto, in huelva, spain, from the spanishcompanies dealing with copper, iron ore, and coal led the list. mining-technology lists the top ten metals and mining companies by revenue in 2018. glencore plc emerged as the worlds biggest metals and mining company in 2018 based on revenues.
Top Five Iron Ore Mining Companies Of Australia Profiled
jul 24, 2020 forecast by the government of western australia estimated the states iron ore supply in 2019 to be about 878 million tonnes. NS energy profiles the top five iron ore mining companies in australia: rio tinto. topping our list of iron ore mining companies in australia, is melbourne-based diversified mining giant rio tinto. the mining and may 31, 2014 On top of that the increasing demand of iron in china and them purchasing major portion of the production in the world has led to iron prices skyrocketing since three years ago. top iron producing countries list. iran; the usable ore for the iron production in iran has been subject to change in recent years.
Top Iron Producing Countries Australia Is Number 1 Inn
india. usable ore: 210 mt; iron content: 130 mt. indias production of usable iron ore increased from 2018 to 2019, climbing from the previous years mark of 200 Mt to 210 mt.china top ore dressing machinery factory. the enterprise won the title of top coal dressing equipment manufacturers issued by chinas coal industry association our products are widely used in many industries such as coal metallurgy chemical industry nonferrous metal papermaking brewing foods fodder building material power and urban wastewater treatment
Top 30 Companies Of Australia In The Asx Index 2020
nov 18, 2020 bhp is involved in the exploration, production, and processing of minerals, especially coal, iron ore, copper and manganese ore, and the exploration, production, and refining of hydrocarbons. website: bhp.com market cap.: 196.1 billion stock symbol: bhp. summary: top companies from australia 2020top ten lists for countries, cities, languages, and more. make your choices for the best and the worst of our planet. top greatest continents on earth top best beaches in the world top ten common geography mistakes top most famous towers top natural wonders of the world more world lists
Global Iron Ore Mining Markets Report 2018 2022 Featuring
jan 18, 2019 In 2017, australia, brazil, south africa, canada and ukraine were the top five exporters of iron ore, while china, japan, south korea, germany, and the france were its top five importers.dec 19, 2010 heres the list it came up with: iron ore mining: this industry will build on the success that the iron and steel manufacturing sector experienced in 2010. ibisworld reports that the sector
Top 10 Iron And Steel Companies In The World 2016
the top iron & steel companies are arcelor mittal, vale, nippon steel & sumitomo metal, posco & jfe steel along with brands like baosteel, tata steel, hyundai steel, kobe steel and nucor. It continues to contribute to the major industries like manufacturing, construction, automobiles, defense and transportation etc.the listed countries shipped 100% of iron ore imported by south korea in 2019. among the above countries, the fastest-growing suppliers of iron ore to south korea since 2015 were: malaysia china ukraine and india
Top 10 Iron Companies In India January 2021 Things In India
india has many iron and steel producing companies. they are private sector companies as well as public sector. some of these companies produce millions of tons steel and iron every year. We have listed top iron companies operating in india below. every company in the list is iso certified company.top miningpanies deniseohlson co za. investors like rising iron ore prices on top of a falling aussie dollar atlas iron has a year expected earnings growth forecast of over mgx has a ten year old operating mine at tallering peak scheduled to cease operation in 2013
Pre:List Of Top Crusher Plants In Australian next:list of upcoming cement plant in india grinding mill china


text:
Polish airline strike called off after court injunction
Warsaw (AFP) –
Unions at Poland's flagship carrier LOT said on Monday that they were calling off an indefinite strike scheduled for May 1 over pay demands after management obtained a court injunction.
LOT pilots and crew will instead picket the Warsaw headquarters of the state-owned airline on Tuesday, Adam Rzeszot, head of the pilots' union told reporters.
"We've called off the strike action to give (Polish) Prime Minister Mateusz Morawiecki time to reflect on the social tensions in the company," Rzeszot added.
LOT management obtained an injunction from the Warsaw regional court on Friday, arguing that the strike action was illegal, notably because only two out of six unions had called for it.
Some 900 of the airline's 1,600 workers took part in a ballot last week on whether to hold a strike, with more than 800 voting for it.
The unions had said the move was in response to three years of fruitless pay negotiations with management.
The court issued the provisional ban on strike action on Friday pending a final ruling. It is due to address the case again on May 17.
Speaking after the court order, LOT CEO Rafal Milczarski told passengers "there is no danger of a strike starting May 1 and you can safely travel with LOT -- there won't be a strike.
Last year, around seven million passengers travelled with LOT, which flies to 90 destinations around the world.


By default, these references are formatted as an URL to facilitate followup requests. Depending on the specific application and query, it may be more convenient to use one of the alternate formats.
Each populated property will slow down the query to some degree, keep this in mind when using this feature.
It is not possible to filter or sort on nested properties added with population (e.g. the label of a referenced item).


after not having the rub of the green lately, Blaenavon 3rds returned with a good away win.
Blaenavon B lost to Crickhowell for the second time this season.
the third teams poor run of results continued at Usk with a 4 - 3 defeat.
The Blues reserve team travelled to Pontnewydd to take on Wainfelin Bluebirds with the home side taking all three points from a poor game.
Blaenavon Blues took Crickhowell's unbeaten record from them Saturday and extended their lead to six points at the top of the Gwent Central table.
Gilwern succumb to the Rain, Hailstone and Gail force winds.
The Blues reserve team made it five Gwent Central wins in a row on Saturday when third placed PILCS were defeated 5-1.
The Blues made it into double figures for the second week running, this weekend scoring ten past Pandy!
After the heavy rain of the week, with an hour before kick the heavens opened again but the Blues summer investment in their pitches have paid off.
The Blues reserve team met Usk Town for the third time this season and for the third time come on top but this was the tightest of the games.
blaenavon Blues 3rds were pushed all the way by a strong Race team and it wasnt until the final whistle that the points were secured.
Blues 3rd team travelled to the prison expecting a hard battle after already losing to todays opponents 8 nil 3 weeks ago.
The Blues reserve team faced Llanfoist for the second week running on Saturday with the away side taking all three points.
4th successive win for the Robins.
The Blues reserves met Llanfoist on Saturday afternoon at their new home at Govilon Rec.
General gandera shines as Gilwern dominate.
The Blues reserves made it four wins from their opening five league games with a convincing win away to Mardy Reserves.
The Blues reserve team returned from Cwmffrwdoer Sports with all three points after a hard fought battle, to make it three wins in four league games.
Another impressive win for Gilwern.
Blues 3rds recorded a cracking win against New Inn on a warm septembers afternoon, with a superb display of passing football.
the 3rd team returned to action against Llanfoist after saturdays disappointing away result.
The 3rds traveled down to Trevethin to play the newly formed team buoyed by a good victory against Usk 2 days earlier.
The third team opened their season with a league game on The Memorial Ground against Usk Town.
The Blues traveled to Panteg house on Wednesday night to take on a Panteg side that had won its previous two games.
The Blues reserves welcomed Usk Town to the Memorial ground looking for a big improvement after Wednesdays loss away to Govilon.
The Blues reserves lost out in this league opener away to local rivals Govilon.


Exclusive Offer : a free 3 night stay, with dates of your choice, in our luxury holiday home on the East Coast of England, if you book a stay of 3 or more weeks at Dreamy Corner Florida villa.
Our Norfolk holiday home on the well established Wild Duck family holiday park. Ideal for a relaxing break, family fun or discovering the delights of the Norfolk Broads and the beautiful East coast of England.


"The technology now is something that fades into the background versus being a hindrance to their day-to-day activities."
– Jim Bazzano VP Enterprise Network Services Hearst Corporation.
The Houston Chronicle was looking to consolidate all their offices under a new roof while upgrading their IT environment when they turned to ShoreGroup Solutions to help. ShoreGroup began by defining their network architecture and then charted a course for the big move. Next, they upgraded their entire network including replacing core and wireless technology and telephony all without interrupting their 24/7 news services.
Employees didn't think such a big project would be easy, but in the end, it was executed seamlessly. Today, the Houston Chronicle couldn't be happier in their new home.
Let ShoreGroup help with your next IT upgrade. Contact us to learn more today!


I made this recipe just to try something different and was pleasantly surprised by how much we enjoyed it. The combination of oregano, cinnamon, and garlic powder give a wonderful and unique flavor to this recipe. I used spinach in the recipe and just put it in without thawing it and it worked well since it was loose in a bag of frozen spinach and not compact in a box of frozen spinach. Feta cheese can be expensive, but if you shop around, you might find it at an affordable price. I found feta cheese for $1.99 at Aldi compared to over $4.00 at Meijer. My preschooler and toddler loved this and any leftovers were gone by lunch the next day. I will be making this again.
3. Add oregano, cinnamon and garlic powder, mix well.
4. Stir in broth, tomatoes and tomato paste.
5. Bring to a boil. Stir in pasta. Reduce heat to medium; cover and cook 10 minutes or until pasta is nearly tender.
6. Stir in spinach and ½ cup of the feta cheese. Cover. Cook 5 minutes longer or until pasta is tender.
7. Sprinkle with remaining ¼ cup feta cheese. Let stand 5 minutes.
I found this recipe in the Sunday paper coupon advertisements. It is a McCormick recipe.


"Couple of years ago I suddenly noticed that almost all my friends were going to become mothers and fathers. Actually, I wasn't ready to this unexpected change in my life because I couldn't imagine it without spontaneous travels and night talks about our amazing future. My favourite people were about to become real adults with a lot of responsibilities, and as a matter of fact all of them took it in a very different way, acting like a happy family in public and sometimes crying of fear and hesitation when nobody was watching.
I started photographing my friends, their friends and, in the end, people I don't know, in the most personal and intimate place – their bedroom – early in the morning while they were sleeping or drowsing. It's a time when people don't care about their appearance, being natural, and looking at the photographs I tried to understand what kind of roles a young Man and Woman play in their new family. From the very beginning when He hasn't yet realised He's going to be a father, and She is left alone with this knowledge about a small life growing inside her, passing the step where He becomes a child himself rejecting this new responsibility, and after that coming to a part where He awakes and slowly They start to play equal roles in the process of Waiting.
Waiting not only for a child to be born, but also for their entire life to be changed in 40 weeks."
See more of Romanovas work here or if interested in prints, here.


Your ONLY source for information on legal looseleafs.
It provides detailed information on over 2,600 looseleafs published by over 100 publishers.
NOW TELLS YOU IF THE LOOSELEAF IS ON THE INTERNET Search this book on LawTRIO and link directly to full-text.
Size/format: 8.5 x 11, perfectbound, 228p.
Publishers' Directory with full address, phone number, fax, email addresses and URLs.
List of Cessations and Deletions of titles deleted from the previous edition.
If you're looking for looseleaf publications dealing with Limited Liability Companies generally, for example, these are some of the entries you would find. There are also additional entries for various state-specific looseleafs.
6. $175 incl. 3 mos. supp.
2. Mares, Michael E., et al.
2. Rubenstein, Jeffrey C., et al.
6. $375 incl. 3 mos. supp.
6. $99 incl. 3 mos. supp.
2. Bamberger, Michael A. & Arthur J. Jacobson, eds.
6. $335 incl. 3 mos. supp.
"This publication is distinguished by its excellence in a field otherwise characterized by mediocrity."
-Recommended Law Books, 2nd ed.
"This standard reference work has earned its reputation for reliability and usefulness on the basis of clear organization and accuracy...comprehensive...This work should be found in every library's reference collection."
"...It is comprehensive and error-free...This reviewer's recommendation: FIND ROOM IN YOUR COLLECTION TO SQUEEZE IN LEGAL LOOSELEAFS IN PRINT ON AN ANNUAL BASIS."
"This comprehensive listing...covers a surprisingly wide range of subjects. Many of the looseleafs are extremely specialized...Legal Looseleafs in Print is easy to use and will be of interest within and beyond law libraries."
One of the Alert 50 - the most useful reference sources for law libraries.


"Hallo Spaceboy" originally appeared on Bowie's 1995 album Outside. The track was co-written by Bowie and longtime collaborator Brian Eno.
Polish blackened death metal giants Behemoth recorded their cover of the song during the sessions for their 2001 album Thelema 6. It did not make the final cut of the album, but instead appeared as a bonus track on the extended single for the song "Antichristian Phenomenon." The title was also inexplicably changed from "Hallo Spaceboy" to "Hello Space Boy." It is one of the stranger Bowie covers out there, but it actually works pretty well in a death metal context, which just goes to show the universal appeal of the man's music.
Behemoth are touring the U.S. this spring (with Myrkur opening) and they will be performing their album The Satanist in its entirety. It will be interesting to see if "Hello Space Boy" makes it into the set. I'll let you know when I review their May 7th show in Santa Ana, California.
When I was growing up in rural Indiana in the early '80s, there was very limited access to heavy music. These were the days before MTV blew up with the whole hair metal, Headbangers Ball phenomenon. But on Sunday nights, there was a two-hour radio show that came from WOXY, just across the state line in Oxford, Ohio (home of Miami University of Ohio). It was called Massive Metal for the Masses, and I would wait all week for it to air. It was through this show that I was introduced to bands like Venom, Bathory, WASP, Michael Schenker Group, Slayer, and countless others. This Monday weekly column is my tip of the hat to that show. I call it Massive Metal Monday. Every week, I pay tribute to defining moments by the artists that laid the groundwork for heavy metal to become the worldwide cultural bond for all of us metal heads.


Alan Bergman – Not all treatment for Post Traumatic Stress Disorder (PTSD) takes place in medical and healthcare facilities. A rapidly growing program is successfully treating US armed forces veterans and active-duty military personnel with PTSD by getting them out on the water for kayak fishing.
The effort has been spearheaded by Heroes on the Water, a Texas-based not-for-profit organization, founded in 2007. Its mission is to "help warriors relax, rehabilitate and reintegrate through kayak fishing and the outdoors". Now, with nearly 100 chapters across the country, the organization has recently increased its outreach to also treat first-responders with the same ecotherapy given to veterans.
Essentially, Heroes on the Water views kayak fishing as preventative medicine and an extremely effective form of therapy. Participants receive basic fishing and paddling instruction, angling clinics and paddling classes, given at different skill levels, from beginner through the most experienced paddlers. The organization believes that the effectiveness of the program is a direct result of engaging the wounded military personnel for the long-term, not one or two isolated events.
Statistics released by the organization state that over 38,000 warriors and family members have been served thus far. This has reduced the warriors' overall stress by 56 percent, according to a study conducted by Troy University.


text:
Texas Sports Nation // Rockets
Rockets vs. Mavericks: Five things to watch in Friday's game
Jonathan Feigen, Staff writer
After a second-half letdown in Wednesday's loss to the Magic, Jabari Smith Jr. (1) and the Rockets look to end their seven-game homestand on a positive note Friday against the Mavericks.
Karen Warren/Staff photographer
After spending most of the season's first month on the road, the Rockets' largest homestand of the season was expected to be a chance to unpack, regroup and turn things around, just in time for the holidays.
It started that way, with wins against the Bucks and 76ers, giving the Rockets a five-game home winning streak. Then, the losses piled up and when the Rockets face the Dallas Mavericks on Friday, it is not just a chance to salvage the homestand but to avoid replacing the five-game winning streak at Toyota Center with a five-game losing streak.
The Mavericks topped the Timberwolves on Wednesday to get back to .500, earning a split of the two-game series in Minneapolis.
The Rockets won the first meeting Nov. 16, holding Dallas to the fewest field goals, worst shooting percentage and fewest points they have allowed, or Dallas has scored in a game this season.
Luka magic?
The Rockets entirely shut down the Mavericks' starting lineup in the first meeting but there was a significant difference in the Mavs' rotation from most games. Luka Dončić did not play.
If he is to be an MVP candidate, the Mavericks can point to how badly Dončić is missed when out, with the first game against the Rockets a prime example. The Dallas starters combined for 27 points, fewer than Dončić's average of 32.2 to rank second in the NBA, on 5-of-40 shooting. The Mavericks have lost all three games Dončić has missed this season.
Dončić has averaged 26.2 points, 10.5 rebounds and seven assists against the Rockets, who generally try to defend him with one player, rather than send double teams that makes him even more dangerous as a passer. He averaged 28 points and 14 assists in two games against the Rockets last season.
Worse for the Rockets, the Mavericks' ballhandler in pick-and-roll has scored the most points per possession in the NBA. The Rockets' defense has given up the most points per possession to the pick-and-roll ballhandler.
Rockets vs. Mavericks
When: 7 p.m. Friday
Where: Toyota Center
TV: AT&T SportsNet Southwest
Radio: 790 AM
Records: Rockets 9-22, Mavericks 16-16
Christian Wood started 108 of the 109 games he played with the Rockets. He has started four with the Mavericks. But that has included Dallas' past three games, with injuries helping to lead to a lineup change that could last.
Dwight Powell and Max Kleber were out when Wood moved into the starting lineup, but Powell returned Wednesday and Wood remained with the starters.
He has been far more efficient off the bench, making 55.1 percent of his shots and 40 percent of his 3s as a reserve compared to 46.4 percent and 34.5 percent in his five starts. Wood scored 26 points with eight rebounds off the bench in the previous game against the Rockets.
The Mavericks seemed to prefer having him in that role and in Powell's second game back, they could go back to the previous rotation or indicate their thinking long-term if Wood continues to start.
Block party again?
It could be difficult to read too much into the Rockets' defense in Dallas with Dončić out, but their play on that end could be considered their best of the season.
The Rockets' 19 blocked shots were not just a season high; it tied the second-most in franchise history and was the fifth-most in NBA history. The Rockets blocked 12 more shots than any team averages and 14 more than the Rockets' average that places them at 15th in blocked shots per game.
Center Alperen Sengun had a career-high five blocked shots and Usman Garuba came off the bench to get three more as six players had two or more blocked shots. And that was with the Mavericks putting up 55 3-pointers, the most for any Rockets opponent this season.
Back in the danger zone?
The Mavericks do not run a ton of zone defense, using it the 15th-most often in the NBA. But if they check out the video of the Rockets' loss to the Magic on Wednesday, they could return to the days of Dwane Casey running the defense for Avery Johnson.
The Rockets have generally been very good against zones. They went into Wednesday's game with the second-rated zone offense in the NBA. But they collapsed against the Orlando zone.
In 29 possessions against the zone, the Rockets scored 20 points, a rate of 69 points per 100 possessions, nearly 40 points per 100 possessions worse than the worst offense in the NBA this season.
The Mavericks generally prefer to have Powell trap or show and recover against screens. They do not come close to the size the Magic use with four players on the floor 6-foot-10 or taller and with one in the middle — either Bol Bol or Mo Bamba — with rare length.
The Rockets' strength on the offensive boards, where they rank first in the NBA in offensive rebounding rate and in second-chance points per game, generally makes them effective against zones, a defense that can be susceptible to offensive rebounding.
Still, the Mavericks could consider the Rockets' previous game and at least give their zone a try.
The Rockets often talk about playing at a fast pace. Opposing teams talk about the Rockets playing at a fast pace. They don't actually run often in either direction, though they could be well-served to press the accelerator against the Mavericks.
Only the Cavaliers have played at a slower pace than Dallas this season. No team scores fewer fast-break points per game. The Mavericks prefer to allow Dončić time to look things over and pick apart defenses. The Rockets, who give up the most fast-break points in the NBA (17.4 per game), might benefit from a few more halfcourt possessions.
The high number of opposing fast-break points is often because of the Rockets' turnover issues. The Rockets had cut back by two turnovers per game on the homestand, averaging 15.6, before they shot up again in the second half against the Magic.
But the Rockets shoot much better early in the shot clock. They have made 54.8 percent of their shots with 22 to 18 seconds on the clock, which is eighth-best in the NBA, and a significant improvement for a team that ranks last in field-goal percentage.
They also might benefit from a faster pace with the Mavericks shorthanded while Josh Green (right elbow sprain), Dorian Finney-Smith (right adductor strain) and Maxi Kleber (right hamstring tear) are out.
More Rockets News
Houston Sports Hall of Fame inducts new members
Rockets vs. Cavaliers: Five things to watch
Jonathan Feigen
Reach Jonathan on
Jonathan Feigen has been the Rockets beat writer since 1998 and a basketball nut since before Willis Reed limped out for Game 7. He became a sports writer because the reporter that was supposed to cover the University of Delaware basketball team decided to instead play one more season of college lacrosse and has never looked back.
Feigen, who has won APSE, APME and United States Basketball Writers Association awards from El Campo to Houston, came to Texas in 1981 to cover the Rice Birds, was Sports Editor in Garland before moving to Dallas to cover everything from the final hurrah of the Southwest Conference to SMU after the death penalty.
After joining the Houston Chronicle in 1990, Feigen has covered the demise of the SWC, the rise of the Big 12 and the Rockets at their championship best.


text:
Charles Robert Melanson
May 28, 1931 - January 14, 2021
WINDHAM - Charles Robert Melanson, 89, passed away peacefully at home on January 14, 2021 with family by his side. Charlie was born in Wakefield, MA on May 28, 1931 to John and Margret (Fredette) Melanson. Charlie was one of ten children, his childhood was spent in foster care until he enlisted in the U.S. Navy at age 17. Charlie served on the USS Coral Sea, the largest aircraft carrier in the fleet, during the Koran War. After leaving the Navy in 1952 he moved to Maine where he met the love of his life, Anna Dale. Charlie worked at several different jobs prior to starting a general contracting business, Melanson and Son, in the early 70's where he worked along-side his eldest son. Charlie retired in the late 1980's to start M&S Discount. In addition to his loving wife of 66 ½ years; Charlie is survived by his sons, Steven (Theresa) of Windham, Michael (Betty) of Windham; daughter Jo-Dene (Gregg Alexander) of Westbrook; grandchildren, Nicholas Alexander (Brittney) of Westbrook, Timothy (Casey) Melanson of Windham, Amy Melanson of Windham, Kathy (John Woods) of Windham, Kelly Barden of South Portland; one special great-grandchild, Matthew Melanson of Windham; and sister, Mary Dodge of Montague, MA. For those of you who knew Charlie you will remember his stories, his willingness to help everyone, his love for the Navy and his passions for buying and selling treasures. If Charlie knew your name, he would call you his friend. Funeral services will be private for the family. Relatives and friends are invited to visitation hours 5 to 7 p.m., Tuesday, January 19, 2021 at the Westbrook Chapel of Dolby, Blais & Segee, 35 Church Street, Westbrook. Burial at Woodlawn Cemetery in Westbrook will be announced later in the spring. The family asks that in lieu of flowers that you donate, in his name, to your favorite charity. To express condolences and to participate in Charlie's online tribute, please visit www.DolbyBlaisSegee.com
WINDHAM - Charles Robert Melanson, 89, passed away peacefully at home on January 14, 2021 with family by his side. Charlie was born in Wakefield, MA on May 28, 1931 to John and Margret (Fredette) Melanson. Charlie was one of ten children,... View Obituary & Service Information
The family of Charles Robert Melanson created this Life Tributes page to make it easy to share your memories.
WINDHAM - Charles Robert Melanson, 89, passed away peacefully...
Send flowers to the Melanson family.


Gospel Movie clip (4) - The Pharisees Who Nailed the Lord to the Cross Have Reappeared!
Gospel Movie Clip (4) – The Pharisees Who Nailed the Lord to the Cross Have Reappeared!
Two thousand years ago, when Lord Jesus worked, the Pharisees condemned the work of Lord Jesus in the name of upholding Scripture. They even judged Lord Jesus as the son of a carpenter, and did their utmost to prevent believers from following Lord Jesus. Ultimately they crucified Lord Jesus. During the last days, Lord Jesus has returned to work and speak. Pastors and elders of religious circles similarly use the Bible to condemn God's work, and similarly condemn God as an ordinary person. They do their utmost to disrupt believers' acceptance of the true way. Incredibly, history repeats itself.


One of my favorite passtimes after spending a couple of days in a place is to discover the places closer to home where can I visit. After my first week in Buckow, I already started to check the map and ask the locals where I can go for a one-day trip. Of course, the easiest answer is Berlin, but I promised myself to keep the countryside mood lit for my whole stay so I rather preferred to explore some unique, off the beaten place destinations. Which I actually did: I offered myself 3 trips exploring the surrounding, while also burning the calories after my extensive foodie guide research.
With a bit of luck and a lot of energy, here is the list of my favorite three day-trips to take from Buckow.
The forest walk starts near the train station, passing near a small farm of wild goats that were keen to do their best to jump over the net surrounding them to escape to liberty.
The forest walk is of around 3 km. and you can easily make it wearing comfy sport shoes. You can bike, walk your dog or push a relatively solid buggy.
The natural surrounding is simple, with small rivers crossing the paths and refreshing the air. A welcomed encounter, especially during the hot summer days. The directions to the village are clearly mentioned so getting lost is not possible. Especially in the weekend, there are many people around, so you can hardly go half an hour without meeting someone.
As we arrived on the streets, the village was perfectly quiet, lost in the summer Sunday laziness. A mechanical watch made of flowers looked like one of the few things alive in Waldsieversdorf at that time.
The small wooden houses with large gardens were looking like a perfect refuge against the heat.
The main cultural activities are hosted in the former summer house of the Dadaist, and politically engaged on behalf of the communists German artist John Heartfield. He was born Helmut Herzfeld, and took his new name after his exile in the Great Britain, where he escaped the political persecutions during the WWII in Germany. Bertold Brecht convinced him to set summer headquarters in the Märkische Schweiz and the blue and black house is part of the intellectual heritage in the region. A friend of the writer Stefan Heym who supported his membership in the Academy of Arts of the GDR, his political collages and artistic works were often considered not ideologically conform by the political leadership of the time, but he was not an open disident to the SED-dictatorship.
Although small, Waldsieversdorf offers a couple of entertainment options to the locals too. For instance, an afternoon to the beach or a visit to the Wasserturm - water tower. At the end of July, it took place the biggest event, a festival dedicated to the local hunting tradition.
The only place we succeeded to explore throughout was the chidren-friendly Café Tilia, a good stop not only for hikers, but also for bikers crossing the Märkische Schweiz.
The interior is decorated in a timeless GDR-chic kitsch, with the porcelain dolls are a constant present in the rooms that may look actually as a cosy refuge during the cold winter days.
The Café offers homemade cakes, made of seasonal fruits, delicious icecreams and a variety of wines. It was a welcomed stop, given that we needed some fresh drinks and energy for starting our journey back to Buckow.
But when you travel with friends, time passes much easier. The way back looked not only easier, but we also made it faster. The calming nature landscape was a good companion and inspiration.
The 3-km. trip from Buckow to the 400-inhabitant village of Bollersdorf I did it alone, in the morning, following the path near the Strand - beach area.
It is a very easy ride, and all you need is a pair of comfy sport shoes and an open heart to welcome the quietness and interesting sides of nature.
After almost 30 minutes of hiking I ended up on some streets with huge wooden gates which reminded me of some small Transylvanian villages.
I was confused that I arrived to Bollersdorf so fast, but soon after talking with a local, I was directed to the next leg of my trip. I was just in a small no man's land where cats were welcomed. (Actually, during my stay in Buckow I've seen most cats on the street - not stray, but street walking - than in 10 years of German life).
The next stage of my trip involved a less romantic view, with a predominant agricultural focus.
With larger than the eye view fields of corn, ready to be picked-up.
The 14th century old Bollersdorf has two main streets: Hauptstraße - the main street, and Buckower Weg. No shops, no coffee house, nothing but unique houses with front yards full of colourful flowers and a restaurant - Gasthaus Fischer - that was closed at the time of my visit. And an old Trabi - the symbol car of the GDR times - parked near the sound-soaked capitalist Audis or Mercedes.
The view of the golden fields is worth a summer painting, or at least a couple of pictures, for the less artistically gifted.
There are some former horse stables buildings made of hard stone, the same material used for the local church, but during the week, everything looked completely deserted.
I am back on the road to Buckow, saying good bye to the golden fields.
Welcoming the narrowing paths of the forest, reaching roads with names like Weißetaube - the dove, or Poetensweg - the Poets' path.
My short trip to Bollersdorf was refreshing and a good opportunity to put at work my orientation skills - as I refused to use any Google Maps being guided only by my well-trained sense of finding the right direction. Apparently, I am doing much better in the wilderness than in the city.
From Buckow, Müncheberg is the closest destination if you are looking for some serious shopping, including food and clothes. I've been there twice, once only for exploring the area around the train station. You can use a day ticket for 3 EUR for your bus journey from Buckow - every hour during the week - to Müncheberg train station and back, plus the two-way ride from the train station the the central area.
You can also take the old train from Buckow.
The ride lasts around 30 minutes.
During my first stop, exploring the surroundings of the train station, I ended up in an area called Schlagenthin, with hills took over by beautiful horses. Given that this place is less than 10 km. away from Hoppegarten, it makes sense to see all those horses. Close-by, on Eberswalder straße, there is the horse-riding center of Galgenberghof, the local recommended destination for horse lovers of all ages.
The complete trip we took to the town, ended around Ernest Thalmann street, from where we started to explore the surronding. A small shop selling ceramics was our first sight. Actually, all round the area, you can see small ceramics and wood carving workshops whose works can easily spotted in the front of the villages' houses.
Although the city was at a great extent destroyed during the war - compared to Buckow has larger streets allowing the tanks to easily enter, but it was also situated closed to the battle lines leading to Poland, which is a couple of minutes away by car or train - the old Middle Ages city walls survived at a great extent and are surrounding the city. They make it into the background of more modern settings, such as a kitschy games hall.
Most of the buildings are new, designed in the practical, anti-aesthetical communist mindset, with only a couple of traditional buildings left.
Fortunatelly, the summer decorated beautifully everything, and the ivy on the wall is for sure hiding some cracks on the walls. Although the town in its entirety may be described as the opposite of beautiful, some small colours added here and there make a tremendous difference as it uplifts not only the grey mood, but also bring some splashes of life to a street or a building.
As many other places in the region of Brandenburg, Müncheberg has a development potential, but it seems still has to cope with the heritage of the communist past. After the reunification, some industries become obsolete and assigning new economic functions didn't happened yet. Tourism and real estate could bring fresh life, but you may need also some other opportunities to the combo. Until then, old shops formerly used by companies closed at least 10 years ago, are waiting and waiting to be rented back and brought to the commercial circuit.
As a visitor, the old Middle Ages remnants and towers offer at least a good photographic opportunity.
The local park is big enough to answer the movement needs of some energetic kids, especially in the summer when everything is covered in green.
While waiting for the bus to take us back to Buckow, we went back and forth, from a former tower bridge to the other, trying to connect histories and stories.
The natural line of the trees is doubled by the edges of the old wall, creating some narrow path for slow walking and meditation. Some corners are recluse enough to let your imagination of faraway lands and better places fly faster.
We left Müncheberg with no regrets; actually we wished the bus was coming earlier. However, I would be curious to return here in a couple of years to see how things changed. I am sure changes are around the corner here too.
Coming next in my Buckow installments: Hiking recommendations. Stay tunned!