Your home computer doesn't necessarily require professional security options. As such, the free edition of Avira Antivirus seems to be the right choice for many users who are searching for an anti-malware solution with very good performance results and regular software and virus definition updates, just to be sure infections stay away from their precious data.
As for the interface, the developers have always opted for a clean look and intuitive options, and their latest Avira version makes no exception. While beginners can apply the app's default configuration and enable/disable any major component with one click, experts are free to tinker with each part of the system scanner, real-time guard, quarantine, scheduler, reports and events.
Avira promises to protect computers against viruses, worms, Trojans, rootkits, spyware, adware, backdoors, dialers, PUPs, phishing, and other threat types. Its scanner can cover the entire hard disk or only removable drives, the Windows system directory, personal documents, active processes, rootkit and active malware infections, or any custom-defined locations. Moreover, scan tasks can be scheduled.
The scanner's configuration is quite extensive. Advanced users may toy with settings regarding cloud protection, file extensions, boot and master boot sectors, archives, exceptions, heuristic analysis, offline files, integrity checkups, the registry and scanner priority, to name but a few.
Avira integrates extra functions to provide Internet protection by modifying Windows Firewall options regarding the private and public network, application rules, and advanced settings. Other customization properties focus on the different types of threats to look for, app password protection and permissions, autorun security, notifications and acoustic alerts. Events and reports may be configured and consulted.
The antivirus program's functionality can be enhanced via its child safety feature designed for social networks, and by monitoring Android smartphones in case of loss or theft.
Thanks to the fact that notifications can be hidden and scans may run silently in the background, Avira is capable of becoming non-intrusive. It leaves a small footprint on system resources and has demonstrated very good scan speeds and virus detection ratio in our and others' tests. First-time and experienced users alike may resort to Avira Free Antivirus if they're not looking to make any purchases to successfully block security breaches.
Those looking for enhanced features may test and/or purchase Avira Antivirus Pro, Avira Internet Security Suite or Avira Server Security.


driade king costes chair driade designer philippe starck with driade costes chair ides.
cheap driade soft egg weiss with driade costes chair ides.
excellent x lounge stoel pratfall philippe starck voor alephdriade with driade costes chair ides.
latest driade pipe weiss with driade costes chair ides.
elegant poltrona louread driade tavolini pi sabaitalia tappeto pessoa driade lampada with driade costes chair ides.
perfect kartell chair la with driade costes chair ides.
elegant philippe starck louis ghost chair the creative route throughout decorations with driade costes chair ides.
driade costes chair ides with driade costes chair ides.
affordable libaambient with driade costes chair ides.
great starck masters chair replica transparent in philippe plans with driade costes chair ides.
top driade was born in thanks to the joint efforts of a founding group formed by enrico astori the art director who from the beginning defines the product with driade costes chair ides.
great masters kartell chair design philippe starck questo intended for idea with driade costes chair ides.
beautiful next with driade costes chair ides.
beautiful megara sofa sofas driade with driade costes chair ides.
interesting driade with driade costes chair ides.
beautiful driade ring chair set pcs eugeni quillet philippe starck regarding chair prepare with driade costes chair ides.
free costes easychair with driade costes chair ides.
straw yellow transparent sunset orange transparent with driade costes chair ides.
driade with driade costes chair ides.
simple luc chair chairs mambo unlimited ideas with driade costes chair ides.
driade costes dining armchair with driade costes chair ides.
perfect herv single seat by driade armchairs with driade costes chair ides.
awesome philippe starck with driade costes chair ides.
affordable driade was born in thanks to the joint efforts of a founding group formed by enrico astori the art director who from the beginning defines the product with driade costes chair ides.
next with driade costes chair ides.
cheap driade with driade costes chair ides.
driade soft egg weiss with driade costes chair ides.
interesting set of six costes chairs by philippe starck for driade per set dallas texas with driade costes chair ides.
fabulous torquemada matt lacquered textured beech chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
vintage costes chairs by philippe starck for driade set of for with driade costes chair ides.
driade pipe armchair with driade costes chair ides.
lou ghost child s chair hivemodern com inside philippe starck ideas with driade costes chair ides.
top broom chair by philippe starck for emeco dezeen with regard to plans with driade costes chair ides.
latest cafe costes starck with driade costes chair ides.
broom chair by philippe starck for emeco dezeen with regard to plans with driade costes chair ides.
interesting driade ring chair set pcs eugeni quillet philippe starck regarding chair prepare with driade costes chair ides.
gallery of medium size of lounge chair ideas tremendous philippe starck lounge chair ideas chairs beach walmart with driade costes chair ides.
beautiful glossy white opaque with driade costes chair ides.
fabulous easel table with driade costes chair ides.
the new store embodies the spirit of the driade world a degree view on the world of living which combines poetry and rigor and translates them into a with driade costes chair ides.
good lou lou ghost children chair kartell with driade costes chair ides.
best bo stackable colored chair designed by philippe starck for driade for sale at stdibs with driade costes chair ides.
the elegant simplicity is naturally balanced by the shininess of these precious surfaces didymos with driade costes chair ides.
best driade outin high backrest armchair with driade costes chair ides.
top lago lacquered shell and aluminum legs chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
trendy lago lacquered shell and aluminum legs chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
perfect replica philippe starck masters chair mattblatt with regard to prepare with driade costes chair ides.
salle manger driade dont la table torquemada philippe starck driade with driade costes chair ides.
interesting lucas project by oscar tusquets with driade costes chair ides.
cheap cafe costes starck with driade costes chair ides.
lou lou ghost children chair kartell with driade costes chair ides.
gallery of lago lacquered shell and aluminum legs chair by philippe starck for driade for with driade costes chair ides.
best previous with driade costes chair ides.
great mobles tube armchair with driade costes chair ides.
lucas project by oscar tusquets with driade costes chair ides.
interesting to celebrate the years of activity driade organizes during the furniture fair in milan the clouds showing icon items at rotonda della with driade costes chair ides.
good megara sofa sofas driade with driade costes chair ides.
with driade costes chair ides.
affordable mobles tube armchair with driade costes chair ides.
full size of lounge chair ideas chaisenge chairs indoors walmart ostrich for sale outdoor with driade costes chair ides.
trendy to celebrate the years of activity driade organizes during the furniture fair in milan the clouds showing icon items at rotonda della with driade costes chair ides.
perfect crassevig nett chair with driade costes chair ides.
free zilio nico chair with driade costes chair ides.
elegant large size of lounge chair ideas lounge chair ideas folding chairs for indoors eames clearance with driade costes chair ides.
finest philippe starck louis ghost chair the creative route throughout decorations with driade costes chair ides.
excellent next with driade costes chair ides.
amazing crassevig nett chair with driade costes chair ides.
latest driade sissi armchair with driade costes chair ides.
trendy neoz driade with driade costes chair ides.
free driade costes chair ides with driade costes chair ides.
simple driade costes chair ides with driade costes chair ides.
costes with driade costes chair ides.
perfect seat and the wow sofa a of the famous royalton from and products of reference like the lou read and costes chairs with driade costes chair ides.
excellent driade costes chair ides with driade costes chair ides.
great leeon bed beds driade with driade costes chair ides.
hudson swivel chair emeco with driade costes chair ides.
perfect next with driade costes chair ides.
beautiful driade costes chair ides with driade costes chair ides.
perfect ed with driade costes chair ides.
awesome victoria ghost chair er set kartell with driade costes chair ides.
simple driade with driade costes chair ides.
trendy with driade costes chair ides.
gallery of bo stackable colored chair designed by philippe starck for driade for sale at stdibs with driade costes chair ides.
amazing starck masters chair replica transparent in philippe plans with driade costes chair ides.
stunning previous with driade costes chair ides.
beautiful poltrona louread driade tavolini pi sabaitalia tappeto pessoa driade lampada with driade costes chair ides.
stunning driade costes chair ides with driade costes chair ides.
cool driade with driade costes chair ides.
cheap ed with driade costes chair ides.
elegant driade costes chair ides with driade costes chair ides.
great seat and the wow sofa a of the famous royalton from and products of reference like the lou read and costes chairs with driade costes chair ides.
gallery of torquemada matt lacquered textured beech chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
perfect full size of lounge chair ideas chaisenge chairs indoors walmart ostrich for sale outdoor with driade costes chair ides.
driade pipe weiss with driade costes chair ides.
good driade with driade costes chair ides.
latest led driade thanks to the brand driadekosmo to become a company we are accustomed with today with driade costes chair ides.
good ondarreta mikado chair with driade costes chair ides.
amazing driade costes chair ides with driade costes chair ides.
gallery of anapo table dining tables driade with driade costes chair ides.
great ed with driade costes chair ides.
excellent driade with driade costes chair ides.
driade toy garden chair piece set with driade costes chair ides.
affordable medium size of lounge chair ideas tremendous philippe starck lounge chair ideas chairs beach walmart with driade costes chair ides.
cool masters kartell chair design philippe starck questo intended for idea with driade costes chair ides.
free anapo table dining tables driade with driade costes chair ides.
an iconic design made with curved plywood mahogany on a black lacquered tubular steel structure base foams padded seat wi with driade costes chair ides.
finest lou ghost child s chair hivemodern com inside philippe starck ideas with driade costes chair ides.
stunning an iconic design made with curved plywood mahogany on a black lacquered tubular steel structure base foams padded seat wi with driade costes chair ides.
led driade thanks to the brand driadekosmo to become a company we are accustomed with today with driade costes chair ides.
latest torquemada matt lacquered textured beech chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
cheap garden furniture with driade costes chair ides.
zilio nico chair with driade costes chair ides.
finest driade costes chair ides with driade costes chair ides.
top modern with driade costes chair ides.
finest set of six costes chairs by philippe starck for driade per set dallas texas with driade costes chair ides.
latest next with driade costes chair ides.
amazing driade with driade costes chair ides.
stunning driade pipe armchair with driade costes chair ides.
simple driade sissi armchair with driade costes chair ides.
seat and the wow sofa a of the famous royalton from and products of reference like the lou read and costes chairs with driade costes chair ides.
finest with driade costes chair ides.
perfect driade with driade costes chair ides.
best lago lacquered shell and aluminum legs chair by philippe starck for driade for with driade costes chair ides.
fabulous garden furniture with driade costes chair ides.
awesome costes with driade costes chair ides.
cool neoz driade with driade costes chair ides.
cool king costes curved bamboo or striped wenge armchair by p stark for driade for sale at stdibs with driade costes chair ides.
karimoku new standard castor chair sale with driade costes chair ides.
good straw yellow transparent sunset orange transparent with driade costes chair ides.
excellent costes is an iconic armchair with a black painted tubular steel structure and curved with driade costes chair ides.
ed with driade costes chair ides.
stunning the elegant simplicity is naturally balanced by the shininess of these precious surfaces didymos with driade costes chair ides.
kartell masters bar stool seat height cm white with driade costes chair ides.
simple kartell chair la with driade costes chair ides.
affordable large size of lounge chair ideas lounge chair ideas folding chairs for indoors eames clearance with driade costes chair ides.
replica philippe starck masters chair mattblatt with regard to prepare with driade costes chair ides.
latest philippe starck with driade costes chair ides.
simple karimoku new standard castor chair sale with driade costes chair ides.
best victoria ghost chair er set kartell with driade costes chair ides.
perfect costes is an iconic armchair with a black painted tubular steel structure and curved with driade costes chair ides.
amazing costes easychair costes easychair with driade costes chair ides.
affordable zigzag shelving driade with driade costes chair ides.
good costes kuipstoel van driade store philippe starck topdeqnl with driade costes chair ides.
best kartell masters bar stool seat height cm white with driade costes chair ides.
easel table with driade costes chair ides.
perfect costes easychair costes easychair with driade costes chair ides.
ondarreta mikado chair with driade costes chair ides.
great anapo table dining tables driade with driade costes chair ides.
best leeon bed beds driade with driade costes chair ides.
costes easychair with driade costes chair ides.
amazing luc chair chairs mambo unlimited ideas with driade costes chair ides.
top driade with driade costes chair ides.
beautiful modern with driade costes chair ides.
cool to celebrate the years of activity driade organizes during the furniture fair in milan the clouds showing icon items at rotonda della with driade costes chair ides.
awesome hudson swivel chair emeco with driade costes chair ides.
trendy costes kuipstoel van driade store philippe starck topdeqnl with driade costes chair ides.
affordable driade with driade costes chair ides.
herv single seat by driade armchairs with driade costes chair ides.
amazing vintage costes chairs by philippe starck for driade set of for with driade costes chair ides.
glossy white opaque with driade costes chair ides.
latest x lounge stoel pratfall philippe starck voor alephdriade with driade costes chair ides.
zigzag shelving driade with driade costes chair ides.
great driade king costes chair driade designer philippe starck with driade costes chair ides.
trendy driade costes chair ides with driade costes chair ides.
awesome torquemada matt lacquered textured beech chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
lago lacquered shell and aluminum legs chair by philippe starck for driade for sale at stdibs with driade costes chair ides.
trendy next with driade costes chair ides.
beautiful driade with driade costes chair ides.
good libaambient with driade costes chair ides.
gallery of next with driade costes chair ides.
awesome with driade costes chair ides.
affordable to celebrate the years of activity driade organizes during the furniture fair in milan the clouds showing icon items at rotonda della with driade costes chair ides.
stunning driade with driade costes chair ides.
affordable seat and the wow sofa a of the famous royalton from and products of reference like the lou read and costes chairs with driade costes chair ides.
amazing king costes curved bamboo or striped wenge armchair by p stark for driade for sale at stdibs with driade costes chair ides.
Page rendered in 0.060468 seconds.


It's not surprising that there is a real shake-up happening in the world of entertainment, particularly comedy these days. From hot button issues to new methods of distribution to changing of the guard, comedy is in the news.
Over the weekend, The Washington Post film critic Ann Hornaday wrote a column examining the context of the very tragic Santa Barbara killing (my thoughts with all of the families and friends of those lost). She called out the narrow world view of comedies by Judd Apatow and other filmmakers; comedies that show slovenly men landing hot women over and over again as wish fulfillment. Judd Apatow and his regular star Seth Rogen took to Twitter to respond with vehemence and anger. Then, Hornaday released a video to clarify her position. No matter where you stand on the debate, you could not miss it as it became one of the hottest stories this year.
We use Vimeo on our show to share videos among crew members. Today, the video streaming service announced that it's getting into the original content game a la Hulu and Netflix. The company ordered six new episodes of High Maintenance, a short comedy series that presented a 13-episode season on Vimeo last year. House of Cards and Orange is the New Black have set a high bar critically and in terms of audience for new content providers.
It's a wild, wild world out there.


HP webOS tablet images leaked: HP was inviting people to an 'exciting' February announcement, which they later revealed to be related to webOS coming to tablets. Now, someone tipped Engadget with alleged images of the webOS tablet.
MS OneNote on the iPhone: Popular (and amazing) note-taking tool Microsoft OneNote that comes with Office has made its way to become an iPhone app that you can sync your notes to.
HTML5 has a new logo: HTML5 has got an official logo. I didn't notice it immediately, but I do agree with Download Squad that it does look like Superman's logo.
Rumor - Next iPod could be 3D: CNET reports, via 9to5Mac, that the next iPod touch could get a glasses-free 3D display. To me, it seems highly unlikely.
Soon you will be able to port your number to Google Voice (US): If you are a heavy user of Google Voice and other Google products, rejoice! For $20, you may be able to transfer your own number to Voice.
Kinect on Windows?: Some rumors say that Windows could be getting drivers for Microsoft's Kinect. I think this is plausible. It'll be awesome, and loads of more people will buy them.


Establishing and running a restaurant, bar or café is challenging. Apart from the usual small business compliance issues of GST, BAS, PAYG and superannuation you have to contend with heavy regulations including liquor licensing laws, food handling regulations and council permits. The hospitality industry is also characterised by irregular trading hours, erratic and seasonal trade, casual employees and a combination of dry and wet goods.
Running a restaurant is hard work and having an accountant who understands your industry can give you a serious competitive edge.
THINKING OF STARTING A RESTAURANT, BAR OR CAFE?
Having mentored hundreds of business owners through the start-up phase of their business we have built a reputation as business start-up specialists and restaurant owners are one of our specialist client groups.
If you are looking to start a restaurant or bar or buy into an existing business, there are numerous issues to consider. You need to establish your business structure, complete tax and GST registrations, consider insurances, select an accounting software program and possibly explore your finance options. It can be a maze of red tape but as accountants and business advisors we can assist you in all of these areas plus provide advice on the preparation of a business plan, marketing plan and a cash flow budget. If you are contemplating employing staff we can also assist you with human resource matters including payroll, WorkCover and superannuation guarantee obligations.
Over the past two decades our team of accountants have helped dozens of restaurant owners get their business off to a flying start. We offer you experience, technical tax knowledge, marketing expertise and most importantly, an intimate understanding of the restaurant and hospitality industry.
Another brick in your business foundations is your choice of accounting software. Poor record keeping is one of the biggest causes of business failure in this country and up to date, accurate financial records let you to make informed business decisions. The wrong choice of software can create massive headaches and too often we find business owners produce what we describe as 'computerised shoebox' records that cause frustration, waste time and create additional fees. This conflicts with our mission of helping you slash the time and cost associated with bookkeeping and GST compliance.
Here at More Than Numbers, we want to be your accountants and business advisors, not an expensive bookkeeping service. We do more than 'keep the score' for our clients and when selecting the most appropriate accounting software program for your business we always recommend you match your business needs with your level of accounting skill. You'll find we support a range of different software options but we do have a preference for cloud based solutions like Xero because of their flexibility. They allow you to can access your financial data via the internet and invite your accountant or bookkeeper to view your accounts at the same time. This means you can get bookkeeping support and valuable advice in real-time. You can also log-in anytime, anywhere on your Mac, PC, tablet or smart phone to get a real-time view of your cash flow. Your data is automatically backed up and users have access to the latest version of your financial data plus you never need to worry about installing software or program updates.
In summary, if you're contemplating starting a business you don't need to reinvent the wheel as we have all the tools and resources to help you get off to a flying start.
Like you, we operate in a very crowded and competitive industry. Your marketing could be the difference between gloom and boom and while we have a small firm personality, we have big firm capabilities. One feature that distinguishes us from other accounting firms is our marketing expertise.
Most restaurant owners rely on their reputation and referrals to grow their business. While these ingredients certainly remain important in the digital age, you need to shift your marketing focus online. Increasingly local searches like 'restaurant Erina' are driving traffic to your website which is often the first touch point with a potential new customer. As you know, in business, you only get one chance to make a good first impression and your website is your 'online shopfront' and silent sales person working 24/7 to promote your business.
That's really just the beginning because as accountants we can do some financial modelling and prepare some 'what if' calculations. This lets us project your restaurant's best and worst case profit scenarios. Next, using industry benchmarks we can compare the performance of your restaurant against your competitors so you understand what is working in the business and what needs working on.
In summary, we are so much more than just tax accountants. We are business and profit builders who strive to deliver practical, cost effective advice that could give you a serious competitive edge in your industry. Our marketing skills distinguish us from other accounting firms and are designed to help you grow your business and your profits.
Over the past 15 years restaurant owners have become a niche area within our firm and if you're a committed and ambitious business owner looking to accelerate your success we invite you to book a FREE, one hour introductory consultation to discuss your business needs. You can expect an hour of practical business, tax, marketing and financial advice that could have a profound effect on your future business profits. To book a time, contact us today and let's get to work on your business so it's more profitable, valuable and saleable.


Leg day is one of those days that you either love or you hate, and there's really not much in between. Some people look forward to it as the rising sun, whereas others dread it like the plague. However, no matter how you feel about it, one thing is true for everyone: the days following a leg workout are about as painful as it gets.
We all know how it feels to waddle across the room and have your friends or coworkers ask, "Are you okay? What's wrong? Are you hurt?" And that's not even the most annoying part – the pain gets progressively worse with each passing day! Most people don't feel the effects of leg day start to wear off until about day 3 or 4 when your body finally has at last managed to repair most of the fibers in those large quad muscles.
Thankfully, there are some things you can do to help combat this immense muscle soreness and limit that post-leg-day pain to as little time as possible. Check out the tips and tricks below.
Nutrition is the most important factor in helping you recover as fast as possible after leg day. Let me explain why. Your legs are in pain because your workout created thousands of little micro-tears in your muscle fibers. Your body now needs to repair these micro tears, which in turn makes your leg muscles bigger and stronger.
With that said, your body doesn't just repair your muscles with magical internal healing powers, it needs an assortment of different nutrients to assist with the process.
The two most important categories of nutrients that your body needs for repair and recovery are protein and amino acids (more specifically, branched-chain amino acids, or BCAA's for short). Therefore, giving your body easy access to these nutrients is crucial in ensuring you recover quickly and efficiently.
Protein and amino acids can be obtained from several different sources. The most popular method by far is to use supplements. Supplements give you a convenient way to get high-quality, concentrated sources of each nutrient, plus they allow you to quickly calculate exactly how much of each nutrient you are taking in.
These days there are thousands of different supplement products available, so if you decide to go this route, check out places like Bodybuilding.com or your local vitamin shop for trusted brands.
If supplements aren't your style, or if you want to use two methods to ensure the most total intake of these nutrients, you can also obtain protein and amino acids through your regular daily meals.
Do some research on foods that are high in protein and high in amino acids so that you can create a custom diet designed specifically to help with building muscle and recovery. For example, meats like chicken, steak, or fish are typically very high in protein and contain a plethora of amino acids.
If you want to recover from leg day in the best way possible, you're going to need to attack the beast from all angles. Dialing in your nutrition will help you recover from the inside, but foam rolling is going to help you recover from the outside.
If you've never tried foam rolling before, let me give you a brief synopsis. This practice involves using a cylindrical piece of foam to massage your muscles, similar to how a rolling pin rolls out dough for baking.
The purpose of rolling out your muscles is to use trigger points to relax your muscles and remove knots that are creating tightness. If you've ever had a massage before it's the same idea, except instead of a therapist rubbing your back, you're doing things yourself. Foam rolling also helps to remove lactic acid (a substance that builds up in muscles after a workout, known for causing soreness) from your legs, which is another benefit in helping you recover.
Foam rolling can be a little tricky if you've never tried it before because it requires a precise technique to hit specific trigger points and release the soreness. With that said, once you get it down, it will become a regular part of your routine in helping you recover after leg day. If you're a beginner to foam rolling, you can check out this exercise guide to learn the specific moves for targeting each part of your leg.
I know what you're thinking: "It hurts just to walk into the other room, but you actually want me to go outside and be physically active?!" It might sound crazy, but it actually works! Have you ever heard the phrase, "the hair of the dog that bit you"? It's an old expression that basically means if a dog were to bite you, then putting that dog's hair in your wound would make it heal. Now, obviously we know THAT doesn't actually work, but the meaning itself can be applied to tons of different instances and workout recovery is definitely one of them.
Active recovery can be as simple as stretching, but to get the most benefit try a simple jog around your neighborhood or a quick bike ride. This doesn't have to be an hour-long adventure, just a short 5 or 10 minutes can be enough to help bring some life back to your exhausted legs.
Leg day has the biggest reputation out of any other workout day. It involves powerful movements using the largest muscle group in your body, and it can provide massive strength benefits all across your body. Unfortunately, these benefits do come at a price – the price of pain, stiffness, and waddling around like a wood-legged pirate for 3-4 days after your workout.
Using the tips above can help you significantly reduce your recovery time. Nutrition, foam rolling, and active recovery are all great methods of aiding in leg day recovery; but remember, there is no one-method-cures-all. For best recovery results, you should use several methods simultaneously, and soon enough you'll be able to return to walking like a normal person again.
Cole Matthews is a 24-year-old personal trainer from California. He's a major health and fitness geek and has a huge passion for writing. When he's not lifting in the gym, you can find him in the mountains riding his bike or hiking with his friends.


text:
Q: Animation loop and scaling Well I've got a few question to ask! Firstly What this code is doing is creating and drawing snowflakes with unique density which will all fall at a different rate. My first question is how do i make this loop continuous?
Secondly, I've translated my origin point(0,0) to the middle of the canvas (it was part of the criteria). I've now got this issue in which that when the snowfall is called it will either be drawn on the left side of the screen or the right, not both. How do i solve this?
Finally i know when doing animations that you have to clear the canvas after each re-drawing, however i haven't added this in and yet it still works fine?
//Check to see if the browser supports
//the addEventListener function
if(window.addEventListener)
{
    window.addEventListener
    (
        'load', //this is the load event
        onLoad, //this is the evemnt handler we going to write
        false //useCapture boolen value
    );
}

//the window load event handler
function onLoad(Xi, Yy) {
    var canvas, context,treeObj, H, W, mp;
    Xi = 0;
    Yy = 0;
    mp = 100;

    canvas = document.getElementById('canvas');
    context = canvas.getContext('2d');

    W = window.innerWidth;
    H = window.innerHeight;
    canvas.width = W;
    canvas.height = H;
    context.translate(W/2, H/2);

    var particles = [];
    for(var i = 0; i < mp; i++) {

        particles.push({
        x: Math.random()*-W, //x
        y: Math.random()*-H, //y
        r: Math.random()*6+2, //radius
        d: Math.random()* mp // density
        })
    }

    treeObj = new Array();
    var tree = new TTree(Xi, Yy);
    treeObj.push(tree);

    function drawCenterPot(){
        context.beginPath();
        context.lineWidth = "1";
        context.strokeStyle = "Red";
        context.moveTo(0,0);
        context.lineTo(0,-H);
        context.lineTo(0, H);
        context.lineTo(-W, 0);
        context.lineTo(W,0);
        context.stroke();
        context.closePath();
    }

    function drawMountain() {
        context.beginPath();
        context.fillStyle = "#FFFAF0";
        context.lineWidth = "10";
        context.strokeStyle = "Black";
        context.moveTo(H,W);
        context.bezierCurveTo(-H*10,W,H,W,H,W);
        context.stroke();
        context.fill();
    }

    function drawSky() {
        var linearGrad = context.createLinearGradient(-100,-300, W/2,H);
        linearGrad.addColorStop(0, "#000000");
        linearGrad.addColorStop(1, "#004CB3");
        context.beginPath();
        context.fillStyle = linearGrad;
        context.fillRect(-W/2, -H/2, W, H);
        context.stroke();
        context.fill();

        drawMountain();
        drawCenterPot();

    }

    function drawSnow(){
    context.fillStyle = "White";
        context.beginPath();
        for(i = 0; i<mp; i++)
        {
            var p = particles[i];
            context.moveTo(p.x,p.y);
            context.arc(p.x, p.y, p.r, Math.PI*2, false);
        }
        context.fill();
    }

    function update() {
        var angle = 0;
        angle+=0.1;
        for(var i=0; i<mp; i++) {
            var p = particles[i];
            p.x += Math.sin(angle) * 2;
            p.y += Math.cos(angle+p.d) + 1 * p.r;
        }

        drawSky();
        drawSnow();
        draw();
    }

    function draw() {
        for(var i =0; i < treeObj.length; i++)
        {
        context.save();
        context.translate(Xi-H,Yy-W);
        context.scale(1, 1);
        treeObj[0].draw(context);
        context.restore();
        }
    }

        setInterval(update, 33);

}

A: About your animation:
What's happening is your flakes are falling out of view below the bottom of the canvas.
So when any flake's p.y+p.r > canvas.height you could:

*

*destroy that flake and (optionally) add another falling from above the canvas

or

*

*"recycle" that flake by changing its p.y to above the canvas.

About your design working without context.clearRect:
In your design, when you fill the whole canvas with "sky", you are effectively clearing the canvas.
About your flakes only falling on half the screen:
Instead of translating to mid-screen:

*

*Don't translate at all and let p.x be any Math.random()*canvas.width

redpajama_set_name: RedPajamaStackExchange


text:
Vénus endormie avec des amours, est un tableau peint par Annibale Carracci vers 1602-1603 et conservé au musée Condé à Chantilly.

Il a été peint, avec peut-être la participation de l'atelier du peintre, pour décorer le palazzetto Farnèse à Rome au sein d'un ensemble de peintures encore partiellement conservées dans le même musée. Il a par la suite été déplacé au sein de la collection Farnèse à Parme et a été la propriété du roi de Naples avant d'être acquis pas le duc d'Aumale. Il est actuellement conservé dans la Grande Galerie Musée Condé. De nombreux historiens de l'art ont commenté l'œuvre, et ce, dès le .

Historique

Commande et localisation de l'œuvre à l'origine
Vers 1602-1603, Édouard Farnèse fait construire une annexe à son palais Farnèse à Rome, de l'autre côté de la via Giulia, le long du Tibre, afin d'y exposer sa collection de sculptures antiques. Au sein de ce palazzetto, accessible par un pont passant au dessus de la rue et accédant au premier étage, il fait décorer les pièces principales par le peintre Annibale Carracci et son atelier. La décoration intérieure des trois premières chambres est relativement bien connue grâce à des descriptions remontant au . La première d'entre elles contenait au plafond une représentation  du Jour  personnifié par Apollon, (aujourd'hui disparue), entourée de tableaux de paysages, accompagnés sur les murs de représentations mythologiques : outre la Vénus endormie du musée Condé, Renaud et Armide ainsi que Arrigo peloso, Pietro matto e Amon nano, actuellement conservés au Musée Capodimonte de Naples, Diane et Actéon, actuellement au musée royal d'art ancien à Bruxelles et un Enlèvement d'Europe (disparu).

La pièce suivante était décorée au plafond de lAurore parsemant des fleurs et tenant une torche, elle aussi conservée au musée Condé, avec des portraits de princes portugais sur les murs (actuellement à la galerie nationale de Parme). Enfin une troisième chambre contenait La Nuit portant le sommeil et la mort au plafond ainsi que quatre Amours (tous les cinq au musée Condé), avec sur les murs des portraits de la famille Farnèse (actuellement à la galerie nationale de Parme) et des paysages de Paul Bril.

 Réalisation

La Vénus endormie est décrite dans l'atelier de Carracci à l'automne 1602 par Giovanni Battista Agucchi, le secrétaire du cardinal Pietro Aldobrandini et ami du peintre. Trois dessins de Carracci semblent constituer des études pour cette peinture. Il s'agit d'une étude de la Vénus conservée au musée Städel de Francfort (inv.4060), une étude de la partie gauche avec les putti conservée dans la Royal Collection, au château de Windsor (inv.2127) et le musée du Louvre conserve un dessin détaillant le putto se frisant les cheveux (inv.7303 ter).

 Déplacements de l'œuvre
Le , 103 œuvres quittent le palais Farnèse pour être expédiées vers Parme à la résidence de Ranuce II Farnèse, le palais du Jardin, parmi lesquels la Vénus et les quatre amours. La Nuit et l'''Aurore suivent peu de temps après. Ils sont mentionnés dans les inventaires des ducs de Parme en 1680 puis 1708. À partir de 1735, Charles de Bourbon fait envoyer l'ensemble de sa collection à Naples après son avènement en tant que roi de Naples. La Vénus est décrite au sein du palais de Capodimonte dès 1756. En 1799, avec l'arrivée des troupes françaises, l'œuvre manque de partir à Rome, comme c'est le cas de L'Aurore et La Nuit, mais elle reste finalement en caisse à Naples. De nouveau réunis, ils changent plusieurs fois de lieu de conservation dans la ville. Par héritage, les sept tableaux de Chantilly entrent dans les collections de Léopold de Bourbon-Siciles, prince de Salerne, fils de Ferdinand . En 1854, sa collection est mise en vente et acquise en bloc par son neveu, Henri d'Orléans, duc d'Aumale, alors en exil en Angleterre. Le tableau est rapatrié en France en 1871 et installé dans son château de Chantilly. Il est actuellement conservé au sein du musée Condé dans les mêmes lieux depuis sa donation à l'Institut de France et son ouverture en 1897, au-dessus de la porte d'entrée principale de la Grande Galerie.

 Attribution
L'attribution à Annibale Carracci ne fait pas de doute car elle est documentée. Cependant, la question se pose de savoir quelle est la part prise par l'atelier du peintre, à une époque où celui-ci est particulièrement actif. Dès 1906, l'historien de l'art autrichien  propose d'y voir la main du Dominiquin, alors élève de Carracci, plutôt que celle du maître. Le tableau est, tout au long du , commenté à de nombreuses reprises et l'attribution varie entre l'atelier, le maître lui-même (comme le croit Denis Mahon en 1947 par exemple), ou encore l'un de ses élèves, comme Le Dominiquin, Innocenzo Tacconi, Antonio Maria Panico. Le consensus s'est fait progressivement ces dernières années pour y voir la main principalement d'Annibale lui-même dans la peinture de la Vénus, avec une participation éventuelle de l'atelier. C'est le cas de l'historien de l'art Donald Posner, un des plus grands spécialistes de Carracci, qui après avoir plusieurs fois hésité, donne finalement le tableau à Annibale lui-même avec un rôle de l'atelier qu'il ne parvient pas à définir. La participation de l'atelier est d'ailleurs sans plus importante dans les autres peintures de la série.

 Sources d'inspiration
Le thème du tableau est inspiré du tableau du Titien, L'Adoration de Vénus (musée du Prado, Madrid, inv.419), conservé alors chez Pietro Aldobrandini à Rome, lui-même découlant des écrits de Philostrate de Lemnos. Carracci reprend à Titien les attitudes de certains amours, mais à la différence de celui-ci et de Philostrate, il donne la place principale à Vénus, et non aux amours. Cette thématique complexe pourrait avoir été inspirée par Fulvio Orsini, que l'on pense être l'un des possibles concepteurs du programme des décors du Palais Farnèse voisin sur le thème des amours des dieux, même s'il est décédé quelques années plus tôt en 1600. Une autre source d'inspiration littéraire pourrait être un poème du poète latin Claudien, Epithalamium Palladio et Celerinae qui décrit une Vénus endormie entourée de Cupidons.

De nombreuses autres références à l'art de son temps sont présentes dans l'œuvre : La bataille de Cascina, de Michel Ange, diffusée par la gravure de Marcantonio Raimondi, par exemple pour le putto sortant du bain, Vénus dans son chariot de Raphaël, Villa Farnesina pour les amours au second plan, un dessin de Giulio Romano représentant Les amours de Philostrate (Chatsworth House, inv.107) pour les deux putti montant à l'arbre, une gravure de Hugo de Carpi représentant Vénus entourée d'amours.

La pose de la Vénus et celle des cupidons rappellent aussi la statuaire antique et Hans Tietze y a vu une allusion à lAriane endormie. Le putto jouant du pipeau serait quant à lui une parodie du Faune de Praxitèle.

 Postérité de l'œuvre
La peinture est restée longtemps invisible, mais a connu une renommée grâce à la description louangeuse qu'en a faite Giovanni Battista Agucchi. Celle-ci est inspirée de l'Ekphrasis antique et notamment du texte de Phillostrate de Lemnos, Les Images, qui avaient déjà inspiré Titien. Le texte, dédié à Cassiano dal Pozzo est publié en 1678 par Carlo Cesare Malvasia dans la Felsina Pittrice. Vite dei Pittori Bolognesi. Ce texte d'Agucchi serait la première description isolée d'un tableau dans l'histoire de l'art, selon Roland Recht. Elle a été reprise par Giovanni Pietro Bellori dans son Vite de' pittori, scultori e architecti moderni en 1672. Le tableau pourrait avoir inspiré Faune agacé par deux enfants'', sculpté par Le Bernin à Rome vers 1616-1617, les deux enfants constituant une citation des putti dans les arbres du tableau de Chantilly.

Annexes

Bibliographie

 .

Articles connexes
 Collection de peintures du musée Condé

Liens externes

 Notice sur le site du musée Condé

Références

Tableau d'Annibale Carracci
Tableau des années 1600
Œuvre conservée au musée Condé
Aphrodite ou Vénus dans la peinture
Nu féminin
Ange dans la peinture
Sommeil dans la peinture

redpajama_set_name: RedPajamaWikipedia


text:
Marquette University Law School Faculty Blog
Scholarly Resources
Marquette Law School
SCOTUS Strengthens 8th Amendment Protections for Intellectually Disabled
Post author:Michael M. O'Hear
Post category:Constitutional Law / Criminal Law & Process / Public / U.S. Supreme Court
In 2002, in Atkins v. Virginia, the Supreme Court prohibited capital punishment for defendants who suffered from what the Court then called "mental retardation." However, the Court did not prescribe any particular process or standards for determining which defendants qualify. Florida adopted a particularly restrictive approach, refusing even to consider the full spectrum of evidence of intellectual limitations if a defendant's IQ had not been scored 70 or lower. Earlier this week, in Hall v. Florida, the Supreme Court rejected this test for failing to take into account the standard error of measurement (SEM) of IQ tests. "This rigid rule," Justice Kennedy wrote for a narrow 5-4 majority, "creates an unacceptable risk that persons with intellectual disability will be executed, and thus is unconstitutional." (Along the way, the Court expressly changed its preferred terminology from "mental retardation" to "intellectual disability.")
Kennedy's reference to "unacceptable risk" goes to the heart of the disagreement between the majority and the dissenters.
In essence, the majority sought to minimize the risk of what we might refer to as "false positives," that is, erroneous decisions to execute defendants who actually have the culpability-diminishing deficits that were of concern in Atkins. By contrast, the dissenters seemed about equally concerned with "false negatives," that is, erroneous decisions not to execute defendants who lack the Atkins deficits.
Consistent with established professional opinion, both sides in Hall recognized that intellectual disability should be assessed by reference to three criteria:
significantly subaverage intellectual functioning, deficits in adaptive functioning (the inability to learn basic skills and adjust behavior to changing circumstances), and onset of these deficits during the developmental period. . . .
The first and second criteria–deficits in intellectual functioning and deficits in adaptive functioning–are central here. In the context of a formal assessment, "[t]he existence of concurrent deficits in intellectual and adaptive functioning has long been the defining characteristic of intellectual disability." (8, citations omitted).
IQ tests are commonly used by psychological experts to help determine whether the intellectual functioning criterion is satisfied, with a score of 70 recognized as an important benchmark.
Under the Florida approach, however, the score of 70 became a dispositive threshold test: if the defendant could not present a valid score of 70 or lower, then no evidence of deficits in adaptive functioning could be considered, no matter how compelling.
In the Court's view, Florida gave too much weight to the IQ score in isolation from adaptive functioning evidence:
Pursuant to this mandatory cutoff, sentencing courts cannot consider even substantial and weighty evidence of intellectual disability as measured and made manifest by the defendant's failure or inability to adapt to his social and cultural environment, including medical histories, behavioral records, school tests and reports, and testimony regarding past behavior and family circumstances. This is so even though the medical community accepts that all of this evidence can be probative of intellectual disability, including for individuals who have an IQ test score above 70. (9-10)
Thus, where there is any real possibility that a defendant's intellectual functioning is significantly subaverage, the Court wants the defendant's adaptive deficits also to be considered. The Court gave this idea more concrete meaning by reference to SEM. "Each IQ test has a 'standard error of measurement' . . . . A test's SEM is a statistical fact, a reflection of the inherent imprecision of the test itself" (10). "SEM is a unit of measurement: 1 SEM equates to a confidence of 68% that the measured score falls within a given score range, while 2 SEM provides a 95% confidence level that the measured score is within a broader range" (11, citation omitted).
The Court concluded that an IQ score of 75 or lower should entitle the defendant to present additional evidence of intellectual disability. Although the calculation of this figure is not entirely clear in the Court's opinion, it appears to be based on the 2 SEM range from 70. In other words, the Court seems to be trying to require greater than 95% certainty that a defendant's "true" IQ is above 70 before shutting down further analysis.
To Justice Alito, writing for the dissenters, this calculus was nonsensical. After all, in theory, the defendant bears the burden of proving the Atkins defense by a preponderance of the evidence. Rigorously applied, this principle should cause the defendant to lose if there is even a 50% chance that he lacks "significantly subaverage intellectual functioning." Yet, the Court's approach seems to permit the defendant to proceed with the Atkins defense on a much smaller chance that his true IQ is 70 or lower.
To be sure, an IQ of 75 does not necessarily mean that the defendant wins; this merely permits the defendant to present evidence of poor adaptive functioning. Once the judge has all of the evidence, the judge may still conclude that the deficits in adaptive functioning are not enough to make up for a "high" IQ score.
Yet, in the dissenters' view, there are particular reasons to think that lower-court judges will be led astray by the softer adaptive functioning evidence. As Justice Alito put it,
As far as I can tell, adaptive behavior is a malleable factor without "firm theoretical and empirical roots." No consensus exists among States or medical practitioners about what facts are most critical in analyzing that factor, and its measurement relies largely on subjective judgments. (14-15, citation omitted)
Alito is evidently focused on the risk of false negatives–incorrect determinations that a particular defendant cannot be executed under Atkins. A straight preponderance test, which he would seemingly prefer, would more-or-less equalize the risks of false positives and false negatives.
The majority Justices take a more protective approach. They are willing to accept that some defendants whose true IQ is above 70 will get the benefit of Atkins as the price of saving from execution those whose IQ scores really are erroneously high.
We should not be surprised to see aligned with Kennedy those Justices who originally voted for Atkins and who generally seem to have a skeptical view of capital punishment. Nor should we be surprised to see aligned with Alito those Justices who originally voted against Atkins and who generally have a more supportive view of capital punishment.
Hall fits well with what seems to be Kennedy's (and the Court's) general approach to capital punishment over the past dozen years: do not directly challenge the constitutionality of the death penalty, but insist with increasing rigor that this most severe punishment be reserved for those defendants who, in terms of culpability, can be said with real confidence to be truly the worst of the worst.
Cross posted at Life Sentences.
Religious Objections to Autopsies—A Virtual Solution?
On the Issues: "Politically Homeless" Activist Calls for Change in the System
Public Perceptions of PFAS Risk and Water Quality in Wisconsin
Assessing the City of Milwaukee's 2020 Census Challenge
Congratulations to the 2023 Jenkins Honors Moot Court Competitors
Marquette Teams Make Successful Showing at NMCC Regionals
New Marquette Lawyer Magazine Spotlights the Work of Public Defenders and Provides Other Glimpses into the Law
Amid Different Views, Education Conference Participants Show Interest in Dialogue on Issues
Restorative Justice Week
Rae on The Stakes in Andy Warhol Foundation v. Goldsmith
Saad Daroub on Karl Marx on Religion
JOHN CHUA on The Rewards of Being a Small Town Lawyer
Mark Connely on Commonly Confused Words: A Couple, A Few, Some, Several, or Many?
Brock Keyes on Karl Marx on Religion
Categories Select Category Alumni Contributor Appellate Advocacy Arbitration Business Regulation Circuit Splits Civil Procedure Civil Rights Computer Law Congress & Congressional Power Constitutional Interpretation Constitutional Law Corporate Law Criminal Law & Process Cryptocurrency Eastern District of Wisconsin Education & Law Election Law Environmental Law Evidence Family Law Federal Civil Litigation Federal Criminal Law & Process Federal Indian Law Federal Law & Legal System Federal Sentencing Federalism Feminism First Amendment Health Care Higher Education Human Rights Immigration Law Intellectual Property Law International Law & Diplomacy Judges & Judicial Process Labor & Employment Law Legacies of Lincoln Legal Education Legal Ethics Legal History Legal Practice Legal Profession Legal Research Legal Scholarship Legal Writing Lubar Center Marquette Law School Marquette Law School History Marquette Law School Poll Marquette Lawyer Magazine Media & Journalism Mediation Milwaukee Milwaukee Area Project Milwaukee Public Schools Moot Court Negotiation Political Processes & Rhetoric Popular Culture & Law Poverty & Law President & Executive Branch Prisoner Rights Privacy Rights Pro Bono Property Law Public Public Interest Law Society Race & Law Real Estate Law Religion & Law Restorative Justice Seventh Circuit Speakers at Marquette Sports & Law Student Contributor Tax Law Tort Law U.S. Supreme Court U.S. Supreme Court Uncategorized Water Law Western District of Wisconsin Wisconsin Civil Litigation Wisconsin Court System Wisconsin Criminal Law & Process Wisconsin Law & Legal System Wisconsin Supreme Court
Archives Select Month January 2023 November 2022 October 2022 September 2022 August 2022 July 2022 June 2022 May 2022 April 2022 March 2022 February 2022 January 2022 December 2021 November 2021 October 2021 September 2021 August 2021 July 2021 June 2021 May 2021 April 2021 March 2021 February 2021 January 2021 December 2020 November 2020 October 2020 September 2020 August 2020 July 2020 June 2020 May 2020 April 2020 March 2020 February 2020 January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008
Blog Contributors
Faculty Blog Contributors
Alumni Blog Contributors
Student Blog Contributors
1215 W. Michigan St., Milwaukee, Wisconsin 53233

redpajama_set_name: RedPajamaCommonCrawl


text:
MPs: No technical reason to ban Huawei from UK 5G
By Steve McCaskill 16 July 2019
Parliamentary Committee submits findings to government
(Image credit: Huawei) (Image credit: Huawei)
MPs have concluded that there is no technical reason why Huawei should be excluded from the UK's telecoms infrastructure but have suggested there are ethical and political reasons for a ban.
Huawei has long been effectively been frozen out of the US telecoms market due to fears that its equipment is a national security risk, allegations that it has continually denied.
Last month, US firms were ordered to stop doing business with the company, a decision which means future handsets may no longer receive updates for Google's Android operating system or access its popular applications. The US government's actions also make it significantly harder for Huawei to source components for its devices.
What does Huawei US ban mean for you?
What is 5G? Everything you need to know
US has 'no evidence' for Huawei claims
Huawei UK 5G
However, Huawei is a key supplier of radio equipment to all four major UK operators. America is pressuring allies to follow its lead, despite the absence of any evidence to suggest any wrongdoing from Huawei, and the UK is carrying it out its own assessment.
A report was expected to arrive in the Spring but has not yet materialised. Leaks suggested that operators will not be banned from using Huawei kit in the radio layer of their networks, but this has yet to be confirmed.
In a letter to the government, the Parliamentary Science and Technology Committee said operators did not believe that Huawei's kit was any less secure and that any ban would give networks less leverage to demand higher security standards from other vendors.
It was also concerned that there would be lower competition in the market and that no proof of any vulnerabilities had ever been delivered. It did, however, call for a formal ban of Huawei gear in the core layer of the network – a measure that the leaked report suggested would be enacted by the government.
"We have found no evidence from our work to suggest that the complete exclusion of Huawei from the UK's telecommunications networks, would, from a technical point of view, constitute a proportionate response to the potential security threat posed by foreign suppliers," said Norman Lamb, Chair of the Committee.
However, the Committee did suggest a ban might be in the UK's best interest given the deteriorating relationship between London and Washington. The US has previously suggested that it might limit intelligence sharing should Huawei play a role in the UK's rollout of 5G.
Diplomatic role
"The conclusion is restricted to technical considerations," continued Lamb. "There may well be geopolitical or ethical grounds for the Government to decide to enact a ban on Huawei's equipment."
"We note the key conclusion from the Science and Technology committee letter, which states 'There are no technical grounds for excluding Huawei entirely from the UK's 5G or other telecommunications networks.'", Victor Zhang, President of Global Affairs at Huawei, said.
"And it also says 'we have found no evidence from our work to suggest that the complete exclusion of Huawei from the UK's telecommunications networks would, from a technical point of view, constitute a proportionate response.'
"We are reassured that the UK, unlike others, is taking an evidence-based approach to network security. Huawei complies with the laws and regulations in all the markets where we operate."
Canada is another country considering the role of Huawei in its telecoms infrastructure. A vote on the issue was expected to be held in the near future, but Reuters says Prime Minister Justin Trudeau is not keen to proceed until relations with China improve.
The country is currently in process of extraditing Huawei CFO Meng Wanzhou, who was arrested in December, to the US where she faces charges of fraud. Two Canadians have been detained by China following accusations of espionage, allegations described as "arbitrary" by Ottawa, while Beijing has blocked imports of some Canadian goods.
Here are the best deals for Huawei mobile phones in July 2019
via Reuters
See more Networking news


text:
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/i2c.h>
#include <linux/hwmon-sysfs.h>
#include <linux/hwmon.h>
#include <linux/err.h>

/*
 * Addresses to scan
 * Address is fully defined internally and cannot be changed except for
 * MAX6659.
 * LM86, LM89, LM90, LM99, ADM1032, ADM1032-1, ADT7461, MAX6657 and MAX6658
 * have address 0x4c.
 * ADM1032-2, ADT7461-2, LM89-1, and LM99-1 have address 0x4d.
 * MAX6659 can have address 0x4c, 0x4d or 0x4e (unsupported).
 */

static unsigned short normal_i2c[] = { 0x4c, 0x4d, I2C_CLIENT_END };

/*
 * Insmod parameters
 */

I2C_CLIENT_INSMOD_6(lm90, adm1032, lm99, lm86, max6657, adt7461);

/*
 * The LM90 registers
 */

#define LM90_REG_R_MAN_ID		0xFE
#define LM90_REG_R_CHIP_ID		0xFF
#define LM90_REG_R_CONFIG1		0x03
#define LM90_REG_W_CONFIG1		0x09
#define LM90_REG_R_CONFIG2		0xBF
#define LM90_REG_W_CONFIG2		0xBF
#define LM90_REG_R_CONVRATE		0x04
#define LM90_REG_W_CONVRATE		0x0A
#define LM90_REG_R_STATUS		0x02
#define LM90_REG_R_LOCAL_TEMP		0x00
#define LM90_REG_R_LOCAL_HIGH		0x05
#define LM90_REG_W_LOCAL_HIGH		0x0B
#define LM90_REG_R_LOCAL_LOW		0x06
#define LM90_REG_W_LOCAL_LOW		0x0C
#define LM90_REG_R_LOCAL_CRIT		0x20
#define LM90_REG_W_LOCAL_CRIT		0x20
#define LM90_REG_R_REMOTE_TEMPH		0x01
#define LM90_REG_R_REMOTE_TEMPL		0x10
#define LM90_REG_R_REMOTE_OFFSH		0x11
#define LM90_REG_W_REMOTE_OFFSH		0x11
#define LM90_REG_R_REMOTE_OFFSL		0x12
#define LM90_REG_W_REMOTE_OFFSL		0x12
#define LM90_REG_R_REMOTE_HIGHH		0x07
#define LM90_REG_W_REMOTE_HIGHH		0x0D
#define LM90_REG_R_REMOTE_HIGHL		0x13
#define LM90_REG_W_REMOTE_HIGHL		0x13
#define LM90_REG_R_REMOTE_LOWH		0x08
#define LM90_REG_W_REMOTE_LOWH		0x0E
#define LM90_REG_R_REMOTE_LOWL		0x14
#define LM90_REG_W_REMOTE_LOWL		0x14
#define LM90_REG_R_REMOTE_CRIT		0x19
#define LM90_REG_W_REMOTE_CRIT		0x19
#define LM90_REG_R_TCRIT_HYST		0x21
#define LM90_REG_W_TCRIT_HYST		0x21

/*
 * Conversions and various macros
 * For local temperatures and limits, critical limits and the hysteresis
 * value, the LM90 uses signed 8-bit values with LSB = 1 degree Celsius.
 * For remote temperatures and limits, it uses signed 11-bit values with
 * LSB = 0.125 degree Celsius, left-justified in 16-bit registers.
 */

#define TEMP1_FROM_REG(val)	((val) * 1000)
#define TEMP1_TO_REG(val)	((val) <= -128000 ? -128 : \
				 (val) >= 127000 ? 127 : \
				 (val) < 0 ? ((val) - 500) / 1000 : \
				 ((val) + 500) / 1000)
#define TEMP2_FROM_REG(val)	((val) / 32 * 125)
#define TEMP2_TO_REG(val)	((val) <= -128000 ? 0x8000 : \
				 (val) >= 127875 ? 0x7FE0 : \
				 (val) < 0 ? ((val) - 62) / 125 * 32 : \
				 ((val) + 62) / 125 * 32)
#define HYST_TO_REG(val)	((val) <= 0 ? 0 : (val) >= 30500 ? 31 : \
				 ((val) + 500) / 1000)

/*
 * ADT7461 is almost identical to LM90 except that attempts to write
 * values that are outside the range 0 < temp < 127 are treated as
 * the boundary value.
 */

#define TEMP1_TO_REG_ADT7461(val) ((val) <= 0 ? 0 : \
				 (val) >= 127000 ? 127 : \
				 ((val) + 500) / 1000)
#define TEMP2_TO_REG_ADT7461(val) ((val) <= 0 ? 0 : \
				 (val) >= 127750 ? 0x7FC0 : \
				 ((val) + 125) / 250 * 64)

/*
 * Functions declaration
 */

static int lm90_attach_adapter(struct i2c_adapter *adapter);
static int lm90_detect(struct i2c_adapter *adapter, int address,
	int kind);
static void lm90_init_client(struct i2c_client *client);
static int lm90_detach_client(struct i2c_client *client);
static struct lm90_data *lm90_update_device(struct device *dev);

/*
 * Driver data (common to all clients)
 */

static struct i2c_driver lm90_driver = {
	.driver = {
		.name	= "lm90",
	},
	.id		= I2C_DRIVERID_LM90,
	.attach_adapter	= lm90_attach_adapter,
	.detach_client	= lm90_detach_client,
};

/*
 * Client data (each client gets its own)
 */

struct lm90_data {
	struct i2c_client client;
	struct class_device *class_dev;
	struct semaphore update_lock;
	char valid; /* zero until following fields are valid */
	unsigned long last_updated; /* in jiffies */
	int kind;

	/* registers values */
	s8 temp8[5];	/* 0: local input
			   1: local low limit
			   2: local high limit
			   3: local critical limit
			   4: remote critical limit */
	s16 temp11[3];	/* 0: remote input
			   1: remote low limit
			   2: remote high limit */
	u8 temp_hyst;
	u8 alarms; /* bitvector */
};

/*
 * Sysfs stuff
 */

static ssize_t show_temp8(struct device *dev, struct device_attribute *devattr,
			  char *buf)
{
	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct lm90_data *data = lm90_update_device(dev);
	return sprintf(buf, "%d\n", TEMP1_FROM_REG(data->temp8[attr->index]));
}

static ssize_t set_temp8(struct device *dev, struct device_attribute *devattr,
			 const char *buf, size_t count)
{
	static const u8 reg[4] = {
		LM90_REG_W_LOCAL_LOW,
		LM90_REG_W_LOCAL_HIGH,
		LM90_REG_W_LOCAL_CRIT,
		LM90_REG_W_REMOTE_CRIT,
	};

	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct i2c_client *client = to_i2c_client(dev);
	struct lm90_data *data = i2c_get_clientdata(client);
	long val = simple_strtol(buf, NULL, 10);
	int nr = attr->index;

	down(&data->update_lock);
	if (data->kind == adt7461)
		data->temp8[nr] = TEMP1_TO_REG_ADT7461(val);
	else
		data->temp8[nr] = TEMP1_TO_REG(val);
	i2c_smbus_write_byte_data(client, reg[nr - 1], data->temp8[nr]);
	up(&data->update_lock);
	return count;
}

static ssize_t show_temp11(struct device *dev, struct device_attribute *devattr,
			   char *buf)
{
	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct lm90_data *data = lm90_update_device(dev);
	return sprintf(buf, "%d\n", TEMP2_FROM_REG(data->temp11[attr->index]));
}

static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr,
			  const char *buf, size_t count)
{
	static const u8 reg[4] = {
		LM90_REG_W_REMOTE_LOWH,
		LM90_REG_W_REMOTE_LOWL,
		LM90_REG_W_REMOTE_HIGHH,
		LM90_REG_W_REMOTE_HIGHL,
	};

	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct i2c_client *client = to_i2c_client(dev);
	struct lm90_data *data = i2c_get_clientdata(client);
	long val = simple_strtol(buf, NULL, 10);
	int nr = attr->index;

	down(&data->update_lock);
	if (data->kind == adt7461)
		data->temp11[nr] = TEMP2_TO_REG_ADT7461(val);
	else
		data->temp11[nr] = TEMP2_TO_REG(val);
	i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2],
				  data->temp11[nr] >> 8);
	i2c_smbus_write_byte_data(client, reg[(nr - 1) * 2 + 1],
				  data->temp11[nr] & 0xff);
	up(&data->update_lock);
	return count;
}

static ssize_t show_temphyst(struct device *dev, struct device_attribute *devattr,
			     char *buf)
{
	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct lm90_data *data = lm90_update_device(dev);
	return sprintf(buf, "%d\n", TEMP1_FROM_REG(data->temp8[attr->index])
		       - TEMP1_FROM_REG(data->temp_hyst));
}

static ssize_t set_temphyst(struct device *dev, struct device_attribute *dummy,
			    const char *buf, size_t count)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct lm90_data *data = i2c_get_clientdata(client);
	long val = simple_strtol(buf, NULL, 10);
	long hyst;

	down(&data->update_lock);
	hyst = TEMP1_FROM_REG(data->temp8[3]) - val;
	i2c_smbus_write_byte_data(client, LM90_REG_W_TCRIT_HYST,
				  HYST_TO_REG(hyst));
	up(&data->update_lock);
	return count;
}

static ssize_t show_alarms(struct device *dev, struct device_attribute *dummy,
			   char *buf)
{
	struct lm90_data *data = lm90_update_device(dev);
	return sprintf(buf, "%d\n", data->alarms);
}

static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp8, NULL, 0);
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp11, NULL, 0);
static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, show_temp8,
	set_temp8, 1);
static SENSOR_DEVICE_ATTR(temp2_min, S_IWUSR | S_IRUGO, show_temp11,
	set_temp11, 1);
static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp8,
	set_temp8, 2);
static SENSOR_DEVICE_ATTR(temp2_max, S_IWUSR | S_IRUGO, show_temp11,
	set_temp11, 2);
static SENSOR_DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp8,
	set_temp8, 3);
static SENSOR_DEVICE_ATTR(temp2_crit, S_IWUSR | S_IRUGO, show_temp8,
	set_temp8, 4);
static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temphyst,
	set_temphyst, 3);
static SENSOR_DEVICE_ATTR(temp2_crit_hyst, S_IRUGO, show_temphyst, NULL, 4);
static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL);

/* pec used for ADM1032 only */
static ssize_t show_pec(struct device *dev, struct device_attribute *dummy,
			char *buf)
{
	struct i2c_client *client = to_i2c_client(dev);
	return sprintf(buf, "%d\n", !!(client->flags & I2C_CLIENT_PEC));
}

static ssize_t set_pec(struct device *dev, struct device_attribute *dummy,
		       const char *buf, size_t count)
{
	struct i2c_client *client = to_i2c_client(dev);
	long val = simple_strtol(buf, NULL, 10);

	switch (val) {
	case 0:
		client->flags &= ~I2C_CLIENT_PEC;
		break;
	case 1:
		client->flags |= I2C_CLIENT_PEC;
		break;
	default:
		return -EINVAL;
	}

	return count;
}

static DEVICE_ATTR(pec, S_IWUSR | S_IRUGO, show_pec, set_pec);

/*
 * Real code
 */

/* The ADM1032 supports PEC but not on write byte transactions, so we need
   to explicitely ask for a transaction without PEC. */
static inline s32 adm1032_write_byte(struct i2c_client *client, u8 value)
{
	return i2c_smbus_xfer(client->adapter, client->addr,
			      client->flags & ~I2C_CLIENT_PEC,
			      I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
}

/* It is assumed that client->update_lock is held (unless we are in
   detection or initialization steps). This matters when PEC is enabled,
   because we don't want the address pointer to change between the write
   byte and the read byte transactions. */
static int lm90_read_reg(struct i2c_client* client, u8 reg, u8 *value)
{
	int err;

 	if (client->flags & I2C_CLIENT_PEC) {
 		err = adm1032_write_byte(client, reg);
 		if (err >= 0)
 			err = i2c_smbus_read_byte(client);
 	} else
 		err = i2c_smbus_read_byte_data(client, reg);

	if (err < 0) {
		dev_warn(&client->dev, "Register %#02x read failed (%d)\n",
			 reg, err);
		return err;
	}
	*value = err;

	return 0;
}

static int lm90_attach_adapter(struct i2c_adapter *adapter)
{
	if (!(adapter->class & I2C_CLASS_HWMON))
		return 0;
	return i2c_probe(adapter, &addr_data, lm90_detect);
}

/*
 * The following function does more than just detection. If detection
 * succeeds, it also registers the new chip.
 */
static int lm90_detect(struct i2c_adapter *adapter, int address, int kind)
{
	struct i2c_client *new_client;
	struct lm90_data *data;
	int err = 0;
	const char *name = "";

	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
		goto exit;

	if (!(data = kzalloc(sizeof(struct lm90_data), GFP_KERNEL))) {
		err = -ENOMEM;
		goto exit;
	}

	/* The common I2C client data is placed right before the
	   LM90-specific data. */
	new_client = &data->client;
	i2c_set_clientdata(new_client, data);
	new_client->addr = address;
	new_client->adapter = adapter;
	new_client->driver = &lm90_driver;
	new_client->flags = 0;

	/*
	 * Now we do the remaining detection. A negative kind means that
	 * the driver was loaded with no force parameter (default), so we
	 * must both detect and identify the chip. A zero kind means that
	 * the driver was loaded with the force parameter, the detection
	 * step shall be skipped. A positive kind means that the driver
	 * was loaded with the force parameter and a given kind of chip is
	 * requested, so both the detection and the identification steps
	 * are skipped.
	 */

	/* Default to an LM90 if forced */
	if (kind == 0)
		kind = lm90;

	if (kind < 0) { /* detection and identification */
		u8 man_id, chip_id, reg_config1, reg_convrate;

		if (lm90_read_reg(new_client, LM90_REG_R_MAN_ID,
				  &man_id) < 0
		 || lm90_read_reg(new_client, LM90_REG_R_CHIP_ID,
		 		  &chip_id) < 0
		 || lm90_read_reg(new_client, LM90_REG_R_CONFIG1,
		 		  &reg_config1) < 0
		 || lm90_read_reg(new_client, LM90_REG_R_CONVRATE,
		 		  &reg_convrate) < 0)
			goto exit_free;

		if (man_id == 0x01) { /* National Semiconductor */
			u8 reg_config2;

			if (lm90_read_reg(new_client, LM90_REG_R_CONFIG2,
					  &reg_config2) < 0)
				goto exit_free;

			if ((reg_config1 & 0x2A) == 0x00
			 && (reg_config2 & 0xF8) == 0x00
			 && reg_convrate <= 0x09) {
				if (address == 0x4C
				 && (chip_id & 0xF0) == 0x20) { /* LM90 */
					kind = lm90;
				} else
				if ((chip_id & 0xF0) == 0x30) { /* LM89/LM99 */
					kind = lm99;
				} else
				if (address == 0x4C
				 && (chip_id & 0xF0) == 0x10) { /* LM86 */
					kind = lm86;
				}
			}
		} else
		if (man_id == 0x41) { /* Analog Devices */
			if ((chip_id & 0xF0) == 0x40 /* ADM1032 */
			 && (reg_config1 & 0x3F) == 0x00
			 && reg_convrate <= 0x0A) {
				kind = adm1032;
			} else
			if (chip_id == 0x51 /* ADT7461 */
			 && (reg_config1 & 0x1F) == 0x00 /* check compat mode */
			 && reg_convrate <= 0x0A) {
				kind = adt7461;
			}
		} else
		if (man_id == 0x4D) { /* Maxim */
			/*
			 * The Maxim variants do NOT have a chip_id register.
			 * Reading from that address will return the last read
			 * value, which in our case is those of the man_id
			 * register. Likewise, the config1 register seems to
			 * lack a low nibble, so the value will be those of the
			 * previous read, so in our case those of the man_id
			 * register.
			 */
			if (chip_id == man_id
			 && (reg_config1 & 0x1F) == (man_id & 0x0F)
			 && reg_convrate <= 0x09) {
			 	kind = max6657;
			}
		}

		if (kind <= 0) { /* identification failed */
			dev_info(&adapter->dev,
			    "Unsupported chip (man_id=0x%02X, "
			    "chip_id=0x%02X).\n", man_id, chip_id);
			goto exit_free;
		}
	}

	if (kind == lm90) {
		name = "lm90";
	} else if (kind == adm1032) {
		name = "adm1032";
		/* The ADM1032 supports PEC, but only if combined
		   transactions are not used. */
		if (i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE))
			new_client->flags |= I2C_CLIENT_PEC;
	} else if (kind == lm99) {
		name = "lm99";
	} else if (kind == lm86) {
		name = "lm86";
	} else if (kind == max6657) {
		name = "max6657";
	} else if (kind == adt7461) {
		name = "adt7461";
	}

	/* We can fill in the remaining client fields */
	strlcpy(new_client->name, name, I2C_NAME_SIZE);
	data->valid = 0;
	data->kind = kind;
	init_MUTEX(&data->update_lock);

	/* Tell the I2C layer a new client has arrived */
	if ((err = i2c_attach_client(new_client)))
		goto exit_free;

	/* Initialize the LM90 chip */
	lm90_init_client(new_client);

	/* Register sysfs hooks */
	data->class_dev = hwmon_device_register(&new_client->dev);
	if (IS_ERR(data->class_dev)) {
		err = PTR_ERR(data->class_dev);
		goto exit_detach;
	}

	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp1_input.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp2_input.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp1_min.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp2_min.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp1_max.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp2_max.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp1_crit.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp2_crit.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp1_crit_hyst.dev_attr);
	device_create_file(&new_client->dev,
			   &sensor_dev_attr_temp2_crit_hyst.dev_attr);
	device_create_file(&new_client->dev, &dev_attr_alarms);

	if (new_client->flags & I2C_CLIENT_PEC)
		device_create_file(&new_client->dev, &dev_attr_pec);

	return 0;

exit_detach:
	i2c_detach_client(new_client);
exit_free:
	kfree(data);
exit:
	return err;
}

static void lm90_init_client(struct i2c_client *client)
{
	u8 config;

	/*
	 * Start the conversions.
	 */
	i2c_smbus_write_byte_data(client, LM90_REG_W_CONVRATE,
				  5); /* 2 Hz */
	if (lm90_read_reg(client, LM90_REG_R_CONFIG1, &config) < 0) {
		dev_warn(&client->dev, "Initialization failed!\n");
		return;
	}
	if (config & 0x40)
		i2c_smbus_write_byte_data(client, LM90_REG_W_CONFIG1,
					  config & 0xBF); /* run */
}

static int lm90_detach_client(struct i2c_client *client)
{
	struct lm90_data *data = i2c_get_clientdata(client);
	int err;

	hwmon_device_unregister(data->class_dev);

	if ((err = i2c_detach_client(client)))
		return err;

	kfree(data);
	return 0;
}

static struct lm90_data *lm90_update_device(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct lm90_data *data = i2c_get_clientdata(client);

	down(&data->update_lock);

	if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) {
		u8 oldh, newh, l;

		dev_dbg(&client->dev, "Updating lm90 data.\n");
		lm90_read_reg(client, LM90_REG_R_LOCAL_TEMP, &data->temp8[0]);
		lm90_read_reg(client, LM90_REG_R_LOCAL_LOW, &data->temp8[1]);
		lm90_read_reg(client, LM90_REG_R_LOCAL_HIGH, &data->temp8[2]);
		lm90_read_reg(client, LM90_REG_R_LOCAL_CRIT, &data->temp8[3]);
		lm90_read_reg(client, LM90_REG_R_REMOTE_CRIT, &data->temp8[4]);
		lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst);

		/*
		 * There is a trick here. We have to read two registers to
		 * have the remote sensor temperature, but we have to beware
		 * a conversion could occur inbetween the readings. The
		 * datasheet says we should either use the one-shot
		 * conversion register, which we don't want to do (disables
		 * hardware monitoring) or monitor the busy bit, which is
		 * impossible (we can't read the values and monitor that bit
		 * at the exact same time). So the solution used here is to
		 * read the high byte once, then the low byte, then the high
		 * byte again. If the new high byte matches the old one,
		 * then we have a valid reading. Else we have to read the low
		 * byte again, and now we believe we have a correct reading.
		 */
		if (lm90_read_reg(client, LM90_REG_R_REMOTE_TEMPH, &oldh) == 0
		 && lm90_read_reg(client, LM90_REG_R_REMOTE_TEMPL, &l) == 0
		 && lm90_read_reg(client, LM90_REG_R_REMOTE_TEMPH, &newh) == 0
		 && (newh == oldh
		  || lm90_read_reg(client, LM90_REG_R_REMOTE_TEMPL, &l) == 0))
			data->temp11[0] = (newh << 8) | l;

		if (lm90_read_reg(client, LM90_REG_R_REMOTE_LOWH, &newh) == 0
		 && lm90_read_reg(client, LM90_REG_R_REMOTE_LOWL, &l) == 0)
			data->temp11[1] = (newh << 8) | l;
		if (lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHH, &newh) == 0
		 && lm90_read_reg(client, LM90_REG_R_REMOTE_HIGHL, &l) == 0)
			data->temp11[2] = (newh << 8) | l;
		lm90_read_reg(client, LM90_REG_R_STATUS, &data->alarms);

		data->last_updated = jiffies;
		data->valid = 1;
	}

	up(&data->update_lock);

	return data;
}

static int __init sensors_lm90_init(void)
{
	return i2c_add_driver(&lm90_driver);
}

static void __exit sensors_lm90_exit(void)
{
	i2c_del_driver(&lm90_driver);
}

MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("LM90/ADM1032 driver");
MODULE_LICENSE("GPL");

module_init(sensors_lm90_init);
module_exit(sensors_lm90_exit);

redpajama_set_name: RedPajamaGithub


1.The Act prohibits all forms of discrimination against persons with disability. If an individual is found violating this law, he/she will pay a fine of N100,000 or a term of six months imprisonment. The law imposes a fine of one million naira on corporate bodies.
2.Discrimination against such persons is prohibited in public transportation facilities and service providers are to make provision for the physically, visually and hearing impaired and all persons howsoever challenged. This applies to seaports, railways and airport facilities.
3.The rights and privileges of persons with disability include education, health care, priority in accommodation and emergencies.
4.All public organisations are to reserve at least five per cent of employment opportunities for these persons.
5.The Act gives citizens with disabilities the right to file a lawsuit for damage against any defaulter.
6.It provides for a five-year transitional period within which public buildings, structures or automobile are to be modified to be accessible to and usable by persons with disabilities, including those on wheelchairs.
7.Before a public structure is constructed, its plans shall be inspected by relevant authorities to ensure that the plan conforms with the building code.
8.A government or government agency, body or individual responsible for the approval of building plans shall not approve the plan of a public building if the plan does not make provision for accessibility facilities in line with the building code.
9.An officer who approves or directs the approval of a building plan that contravenes the building code, commits an offence and is liable on conviction to a fine of at least N1,000,000 or a term of imprisonment of two years or both.
10.In Section 31 of the Act, the National Commission for Persons with Disabilities will be established and an Executive Secretary will be appointed as the head of the commission.


Binkov's Battlegrounds is an enterprise seeking to educate and entertain. While we started on Youtube, serving as our distribution channel, who is to know where Binkov will end up? Our videos are made with love and quite a few work-hours are spent on them. They are thoroughly researched and they stride to be as neutral and as objective as possible.
If you want to know who'd win in a present day hypothetical war between UK and France or China and US - look no further. We've got it covered. If you want to know if F-35 would win over Su-35, we looked into that as well. Germany vs Poland? Aegis combat system under attack from anti-ship missiles? Russia vs US? All those topics (and more) can be found on our Youtube channel. Presented by Commissar Binkov himself.
The Binkov puppet is, of course, just the public face of Binkov's Battlegrounds. Behind it, there are three guys working hard to bring you all the videos. We're all big fans of military history, history in general, military science and technology and geopolitics. Through our videos, even though they're mostly presented in the VS format, we try to depict the process of a conflict first and foremost. We try to dissect the pros and cons of each country's armed forces. We try to take into account the geography, economy and demographics of each belligerent. So, while there are tons of VS videos out there on the internet, we believe we provide more in-depth views of our hypothetical conflicts. It's not just about who wins; but how do they achieve victory? At what cost? What exactly helped them prevail?
Oh, and for business opportunities, such as sponsorship of certain videos or in-video advertising in general, feel free to e-mail us. We have a dedicated following of many subscribers which are quite rabid when it comes to all things military.


A low and slow blanch-and-shock method of cooking the octopus before grilling helps to enhance its color, texture, and flavor. It's an Italian tradition to throw a wine cork into the boiling water while the octopus cooks; it's believed to help tenderize the octopus.
In a large bowl, combine all ingredients except for octopus and stir to combine. Add octopus, cover with plastic wrap and marinate in refrigerator overnight (12 hours).
To cook: Remove octopus from marinade (discard marinade). Place octopus in a large pot of cold water along with one cork from a bottle of wine. Place a large mixing bowl half full of water inside of pot to keep octopus submerged. Bring to a simmer. Cook until you can grab head with tongs and there is just enough give to remove it, about 2 1/2-3 hours. Place octopus and head in an ice bath. Remove beak and pat dry octopus.
Preheat grill to high. Add octopus and grill for 2-4 minutes, until lightly charred. Remove and serve warm.


Tapestry Bedroom Ideas – Beautiful scrolling endings and beveled edges are what you ought to be searching for when buying a bedroom collection. Because a corner couch comes in several of detachable units, you are able to easily rearrange every segment any moment you desire. Whichever way you need, you may create your home beautifully even on your own. Hallway The entry way is a remarkably significant part your house, after all, first impressions count. Sealing the outside of your house will stop bed bugs from entering. You have to wipe lost or surplus caulk up after potential. Once you have painted the accents into your particulars, it is going to be asked to apply an extremely clear coat protective spray that is available at craft stores. It is not difficult to discover old wood bits or old wood fencing bits that could be implemented as space dividers.
Wall decor and modern wall art are just two amazing decorative ornaments that may transform a dull and boring interior into a place filled with joyful memories while in precisely the same time, giving a fascinating design to a particular place in the home. Candle wall sconces are made to match each decorating style, and they're the ideal accompaniment to comprehensive wall spans. Wall hangings are likewise an excellent alternative. If you find that it's tough to care for a live tropical plant, then there's always the choice of buying a fake one. Home accents can be stunning if you choose to acquire a color scheme because they are somewhat flexible. Decorative ribbon could be set along with the rod for extra flair.
Home decorating is frequently a chance to modify your environment for a new leadership. Your house is a useable canvas for your personal decorating wishes and ideas. My latest decorating project was supposed to update my home decor. Whether you require a luxury interior layout for your bedroom or something timeless and easy, there's a whole slew of suggestions to create a functional and fashionable master bedroom. Another option when you could choose to contemplate white bedroom furniture sets is if you have quite dark walls. On the flip side, you might wish to have a little more complicated with your bedroom window coverings.
When it has to do with decorating the bedroom in a Micro degree, it's almost always a wonderful idea to coincide with the colour of the wall by way of your age and the phase of life you are in. Easily hung by way of a string with just a little bit of hardware, also it transforms your environment! You might still have the kind of a timeless, one-of-a-kind doorway whilst retaining the functionality. A superb layout won't ever go out of fashion so you're in a position to work your space changes around it for quite a few years to come. In fact, the procedure for a home makeover is a significant experience for everybody in the family.
Using an assortment of great plaques and prints readily available, you'll be able to showcase your design readily and are going to have the area you will enjoy being inside. You may simply put a couple squares and they'll already be sufficient to make a statement for your house. Make an effort to possess the exact same motif or design in all your rooms. The hottest contemporary trends in space layout might be located in local furniture showrooms and online sites. Alternately, you can check a local specialty store, or buy some online. There are tons of items that are made from seashells, like lamps, so make sure to investigate all your options, since they can only improve your tropical home decor.


Do you know your coffin from your squoval?
Confused by the concept of coffin nails? Stumped when someone tells you they've opted for a stiletto - on their hands? We hear you; thanks to the proliferation of nail bars and nail art trends popping up, suddenly the humble 'would you like the edges round or square?' the question seems ridiculously outdated.
In fact, according to sale stats from Superdrug, the most popular nail shape purchased from the Elegant Touch range in the latter half of 2018, was the 'stiletto'.
This was followed closely by coffin – a style made popular almost solely by queen Kylie Jenner.
But don't worry if you prefer to keep them trim, because shorter styles also increased in popularity. And if you want the best of both worlds, there's always the False Nail Cutter.
Still confused> To clear things up - and so that you can go to your next nail appointment, whether it's for gels or acrylics, confident in your choice of nail shape, we've come up with this ultimate guide to all the nail shapes you need to know about in 2019 - and asked experts about the benefits of each.
If you're all about practicality, this is the one to go for - this semi-circle is the ultimate 'low-maintenance, understated look that's tidy and lovely with or without colour,' according to Margaret Dabbs, Founder of global health and beauty brand, Margaret Dabbs London. If you type a lot or find long nails always break, this is the ideal shape for you.
You'll need a bit more length for this - but if you have it, it's a universally flattering option that elongates the hand for an elegant finish. Unsurprisingly, session manicurist Ama Quashie refers to it as her favourite and claims it works wonders if you have 'short stubby fingers like me.' Apparently, she's not alone: at TOWNHOUSE, it's one of their most-requested nail shapes.
This one's a statement look that, according to Dabbs, works enormously well when paired with bold nail art or vibrant colours - though she warns that natural nails are more prone to breakage if you go for this shape, so draft someone in carry the shopping/send your texts for you/do pretty much anything taxing in the hand department or check out our top tips for strengthening your nails.
Straight at the sides, and flat on the top, Ama calls this the 'sportier look,' and says it looks pretty damn great when juxtaposed with ultra-feminine pillarbox red. It's a good choice if you've got narrow nail beds - Dabbs says it'll give the impression of extra width.
Popular on the 'gram because the filed off top looks very 2018 and the length of the nail leaves space for nail art or experimental patterns, you should only go for this one if you a) wear fake nails, b) are willing to outsource anything you usually do with your hands as per stiletto nails.
Now you've got your nail shape sorted, check out our pick of the best nail polishes, including the hot new breathable polishes.


is there really jelly in a jellybean?
let's see… wbdict says: a small candy made of jellied sugar, often shaped like a bean.
jellied sugar? okay. I don't know if Alton Brown has covered this or not.
The basic ingredients of jelly beans include sugars, corn syrup, and food starch. Relatively minor amounts of lecithin (an emulsifier), anti-foaming agents, beeswax or carnauba wax, salt, and confectioner's glaze are also added. The ingredients that give each bean its character are also relatively small in proportion and may vary depending on the flavor. These include natural and artificial flavors and colors, and, depending on the bean flavor, may include chocolate, coconut, fruit puree or juice, peanuts, vanilla, oils, cream, or freeze-dried egg, milk, or fruit powders.
real jelly is made from real fruit.
would it be possible to create a jellybean that had actual jelly in the middle of the harder jellybean shell?
When I went to visit the lawyer the first time, he gave me a confection that was raspberry, where the center was semi-solid, maybe the consistency of the center of a gumdrop. I keep looking for those things ever since then. I can't find them anywhere!


I received this ebook from NetGalley and Little Brown in exchange for an honest review.
16-year-old Scarlett has lost both her parents but that hasn't stopped her from wanting to clean-up crime in her hometown. When a little girl named Gemma begs her to find out why her older brother has been acting so strangely, her investigation leads her to a conspiracy involving cults, curses, and Jinn. When she discovers that her family has ties to this supernatural world, she realizes she may finally be able to solve her father's murder.
There are so many things I loved about this book starting with Scarlett. This is the first YA book I've read featuring a Muslim American and I thought the author did a great job detailing the Islamic religion without having it take over the story. With her father murdered, and mother having died from cancer, she and her older sister Reem are left on their own. Intertwined with the current story are Scarlett's childhood memories which are truly touching. My favorites are the ones describing Scarlett and her father reading One Thousand and One Nights together. These memories are so precious, she still keeps the book close to her. While Reem finds solace in Islam and working long hours at an inner city hospital, Scarlett graduates high school two years early and since she's had little luck solving her father's murder, she takes on cases with the help of a sympathetic police detective that which she has much more success with. She may be an orphan, but with her sassy, take-no-prisoners attitude, Scarlett never gives you time to feel sorry for her. She carries a blackjack for protection, and is proficient in martial arts, yet despite her tough exterior, she has a soft spot for vulnerable children and dogs. When cute, goggle wearing 9-year-old Gemma first approaches Scarlett with her concerns about her brother Oliver, Scarlett's first reaction is to politely rebuff her. But then she discovers that Oliver has ties to another boy who committed suicide. As she starts investigating, she finds out that Quinn's suicide isn't as cut and dry as it seems, and suddenly she has her hands full with murderous Jinn worshipping cultists. Adding to the intrigue is that her biggest lead is a mysterious family relic, which she and her sister haven't paid much attention to up until now. Scarlett and Reem are very close despite Scarlett having drifted away from Islam, while Reem has begun wearing a hijab. It's obvious that they both have a deep respect for one another. Scarlett has persuaded her sister to let her put off college for a few years while she pursues her passion for solving mysteries. While Reem sees how being a PI has saved Scarlett from getting into far worse trouble on the streets, she insists they attend Friday prayers with together, but Scarlett in no way resents her. Indeed, it's their shared Muslim heritage that helps keep them close. The secondary characters add even more layers to this wonderful story. Her mother's best friend Delilah, a Jewish white woman, helps keep an eye on her, and her son Decker moves from best friend status to potential love interest quite sweetly. Detective Morales who investigated their father's murder stays involved in their lives, as does Mook, who is Scarlett's self-described "guardian angel". While it's Scarlett's strong voice that takes the forefront, the other characters bring the story together. This is one of those rare books in which I actually found the characters more fascinating than the story. It's not obvious if this will be a series, but I hope Jennifer Latham continues with further adventures. If you're feeling nostalgic for Veronica Mars and you enjoy a light mystery with a diverse cast of characters, I recommend you try this. I don't think you'll be disappointed.


text:
Activer la navigation
Animals life in Utah
Photographic book - USA - 30/03/19
Wild life in Utah
Mule deer are the most common large mammals found in Utah. Other large mammals include the elk, pronghorn, moose, bison (American buffalo), black bear, cougar, Rocky Mountain goat, and Rocky Mountain bighorn. Among the smaller mammals are the coyote, bay lynx, Canada lynx, bobcat, gray fox, red fox, kit fox, badger, mink, otter, raccoon, cacomistle, or ringtail, marten, and weasel. Also found are skunks, porcupines, prairie dogs, rabbits, and squirrels.
Reptiles are found in the plateau areas of Utah. Among the snakes are the yellow-belly racers, coachwhip snake, and garter snake and also two poisonous snakes: the sidewinder and western rattlesnake. Other reptiles include the desert tortoise, collared lizard, and horned lizard. The Gila monster, the only poisonous lizard in the United States, can be found in southwestern Utah.
Among the migratory birds that pass through Utah each spring and fall are the whistling swan, Canada goose, snow goose, mallard, pintail, shoveler, canvasback, redhead, and baldpate. Water birds that breed on the islands in Great Salt Lake include the snowy egret, double-crested cormorant, white pelican, green heron, white-faced ibis, and the California gull, which is the state bird.
Game birds include the ring-necked pheasant, California quail, Gambel quail, Hungarian partridge, chukar, mourning dove, sage grouse, and ruffed grouse. The bald eagle and golden eagle are found in mountain areas. Among Utah's numerous other birds are the robin, house wren, western meadowlark, house finch, and several kinds of woodpeckers, warblers, and swallows.
Among the most popular game fish found in the lakes and streams of Utah are cutthroat, rainbow, brown, and brook trout, largemouth bass, and white bass.
Utah's environmental protection programs are administered by the state department of health. Flat, fertile areas with access to water are preferred as winter range for wildlife and agricultural land use. These areas are sought after for urban and recreational development, as well. Utah faces a major problem of handling population growth while maintaining agricultural and wilderness lands. Rapid population growth has created a number of environmental problems for the state. Atmospheric inversions occur in the Salt Lake City area during winter.
These inversions trap pollutants such as ozone and carbon monoxide near ground level, producing a dense smoglike cover. Reducing ozone levels has been a major focus of the state's clean-air programs. Utah continues to rank high among the states in the release of toxic chemicals to the air, land, and water. "Utah" © Emmanuel BUCHOT, Encarta, Wikipedia.
USA map American states Map of Utah Geography of Utah Rivers and lakes Climate of Utah Plants and vegetation Animals life
Economy of Utah
Economy of Utah Mining and industry Transportation and trade People of Utah Education in Utah Music, theater and museums National Parks State Parks Places to visit in Utah Government of Utah
History of Utah
History of Utah Early European exploration The coming of the Mormons Early Economic Developments Utah war Coming of the Gentiles Polygyny and Statehood EUtah in 20th century Utah in 1960-1980s Utah today Images of New York Pictures of New York Images of San Francisco Images of Los Angeles Washington Pictures of Chicago
Photos of European countries to visit
Photos Informations
Hungary Pictures
Spain photos
Scotland Photos
Photos England
Photos of Asian countries to visit
Photos of Japon
Photos of Taiwan
Photos of America