Our rubber flooring cost and installation guide includes detailed information in regard to all types of rubber flooring and the cost of each.
There are three types of rubber commonly used in making flooring and the type you buy for your floor will have varying amounts of these three types in their construction.
Natural rubber. This is a substance extracted as latex from the sap of rubber trees. The flooring produced from natural rubber is very durable, resistant to water, is very easy to clean and is almost maintenance free. The main problem with this type of rubber is that it has a very noticeable odor which can cause an allergic reaction in certain people. Given proper ventilation, this smell will fade and everything should be ok.
Recycled rubber. This type of rubber flooring is made from recycled rubber products, mainly old vehicle tires. These are melted down; any metal strengthening removed and made into rubber pellets. The pellets are then bonded together in molds to make more rubber products, especially flooring. The process of manufacture makes a very strong product which is often more durable than the original source material. The finished product can often be slightly porous to water but this can be fixed by adding a suitable sealing agent at an appropriate time in the manufacturing process.
Synthetic rubber. Rather than being real rubber, it is actually a type of vinyl manufactured to have the same or similar properties to rubber, especially the texture and yield. The resulting product has the same feel and flexibility as normal rubber but is much more durable to wear and is resistant to stains. The main disadvantage with synthetic rubber is that the manufacturing involves many chemical processes which can give off VOCs.
When looking online for rubber flooring always take care that you are actually buying rubber and not PVC or some other kind of plastic. To the casual glance, both rubber and PVC flooring can look very similar if not almost the same. Some online retailers will even specify rubber in the main headings but then in the detailed specifications, you will find that they mention plastic.
A point to consider when wondering whether to choose rubber or PVC flooring is the price.
Although rubber flooring has a higher initial outlay than PVC, you need to factor in the cost over its full lifespan to get a good idea of the true value of rubber over PVC. Rubber matting and flooring is far more hardwearing than PVC and can last for up to thirty years. In that period you will be replacing the PVC flooring at least once. You must also factor in the maintenance costs too. PVC maintenance costs are higher and will eventually overtake the original installation costs.
Certain types of rubber flooring can also be used alongside underfloor heating as long as its specifications and properties make it resistant to the appropriate surface temperatures.
Insulation and comfort. Another advantage of rubber flooring over PVC is that rubber absorbs noise and insulates against heat and cold. Sound that would otherwise be a problem such as footsteps in public buildings, department stores, schools, colleges and libraries are suitably deadened by the installation of rubber flooring. In the UK rubber flooring has recently been incorporated into the UK Building Regulations for the absorption of noise and other sound in new buildings. Compare this to PVC flooring which has no sound deadening properties whatsoever. If you combine the use of rubber flooring with other types of insulation you will achieve a much higher standard of thermal and acoustic insulation.
Rubber flooring is a much more comfortable surface to stand on than PVC and a rubber mat is often found in work places such as in front of a work bench or behind a shop counter to make standing for long hours at a time more attractive.
Safety. Safe practice at home and at work is another factor that should be paramount in the minds of everyone and rubber flooring holds a number of safety properties that PVC does not.
PVC can give off substances from the flooring and the adhesives used to install the flooring.
Rubber flooring has really taken off in recent years and it is now a popular flooring type for many different work areas and industries. Now that it is available in such a wide array of colors and textures it is becoming more popular in the home both as an internal and an external floor covering. Rubber flooring is not only all good things however, there are also many disadvantages with using rubber floors and mats and we will talk about those now. You really need to consider both these sides of the coin before you decide to opt for rubber flooring.
Durability. Without a doubt, one of the main advantages of rubber flooring is its ability to remain strong and resilient under many conditions. Depending on the environment and how it is cleaned, a good quality rubber tile can last for up to thirty years.
Easily maintained. Rubber flooring is very easy to maintain. Synthetic rubber is more stain resistant than natural rubber and some types can be polished with wax to improve its resistance to discoloration and wear. Always check the specifications to find out if the type of rubber can accept wax and what type of wax is recommended. If you decide to wax the rubber, then every now and again you will have to strip the wax completely and reapply the coating. To clean a rubber floor you need nothing more than a damp mop. If you want to use a detergent then check the manufacturer's instructions for the type to use as some can damage the rubber surface.
Waterproof. Rubber flooring is very resistant to water damage on both top and bottom surfaces. If you decide to install it in a basement or outside however, you should fit a vapor barrier to prevent moisture from soaking up from beneath. Some rubber mats or floor tiles are specially treated to get over this problem and make them suitable for wet environments.
Noise. Because rubber flooring is so elastic, it is very quiet to walk upon. Unlike most other surfaces they absorb noise from dropped objects or clicking footsteps and can be used as a noise insulation barrier under laminate flooring.
Modern colours and textures. For a long time, rubber flooring tended to be either two colours; black or grey. Today there are many more different colours and textures to choose from (although not as many as linoleum or PVC). There are even types that try to create the effect of wood flooring and tile flooring.
It can be said without fear of contradiction that rubber flooring represents a niche market in the flooring industry. There are few manufacturers and retailers which automatically makes sure there are fewer choices than with other flooring materials.
Brand new natural rubber floors often have a distinctive odor for a few days or weeks. Although this smell is harmless, it can be very annoying to some people. Don't confuse this with fumes given off by synthetic rubber which can contain VOCs and need to be ventilated well before use.
Although rubber is very resistant to burning and is difficult to catch fire, a flame that is hot enough will burn the substance. If the flooring has been mixed with chemicals during manufacture or if an adhesive has been used then toxic fumes can be released while burning.
Synthetic rubber products are much more susceptible to burning and when they are alight they will give off toxic fumes into the atmosphere.
Cost. Good quality rubber flooring can be very expensive. Exercise room floor tiles can cost less than $2 per square foot but floor tiles attractive enough to use in living and bedrooms can be found for anything between $12 and $20 per square foot. This kind of price compares with natural stone and good quality hardwood flooring.
Slippery surfaces. Rubber flooring that is smooth and is without an appreciable texture can be very slippery when it is wet. If the surface has been polished or waxed then the slipping problem becomes even worse.
Don't use rubber flooring in kitchens, as you can see it will suffer from spilled oils and the attempts at cleaning.
Seams. Rubber flooring tiles, although they are very water resistant, also let water through the joins and seams to the subfloor below. Once there the moisture cannot dry out fully and tends to cause mold. Rubber floor tiles (as opposed to the full flooring) should not be used in moisture retentive areas such as bathrooms or laundry rooms.
So far we have seen as many bad aspects of rubber flooring as there are good ones. It is obvious that the manufacturers are trying very hard to attract the domestic customer base with their use of bright colors and interesting textures so let's just have a look at some of the reasons why they are a good idea.
The tiles are very supple to use and even easier to cut to shape. You can cut them down into rectangles or triangles and arrange them into unique patterns on the floor. If one or two tiles become damaged then it is an easy job to lift and replace them for new ones.
Rubber sheet generally comes in sizes of four feet (or more) wide by twenty or thirty feet long. They are thus supplied in rolls but are more difficult to install as a DIY job than tiles and can cause great problems when trying to measure up. Even the smallest mistake can ruin a large sheet of material.
Not only patterns but also completely smooth rubber floors are available although these can become slippery when wet.
No matter which type of rubber floor you decide upon, it will always come as a flat matte finish with a subtle and subdued color. The colors can be made to seem deeper by the addition of water based wax polishes which will also make the surface more hard wearing and stain resistant. The wax will also change the matte finish to one more glossy.
We think we can say that without a doubt the thicker the rubber flooring, the more expensive it will be. However it's not all bad as thicker rubber is also softer when walked on and provides better thermal and acoustic insulation too.
Rubber flooring to use indoors usually ranges in thickness from about 0.25" to 0.5". Outdoor flooring is usually a lot thicker as it has to withstand the weather and can be a minimum of 1". Children's play areas need to be able to cushion against falls so are usually about 2" to 3" thick.
A lot of people want to use a rubber floor in their garage and cannot understand why you can't. The reason why rubber is not usually recommended for use in garages is that almost 90% of the rubber flooring sold in the USA is made from rebonded rubber. This means that the flooring is made from rubber pellets bonded together with polyurethane based adhesive. Polyurethane is broken down quite easily by oil, and drips from your car can very quickly result in a rubber garage floor that starts to break down. Rubber flooring can cost a lot of money so make sure you use either natural rubber or Vulcanised rubber as flooring options, they won't be damaged by oil and solvents.
Why can't rubber flooring be used in a basketball court? Just imagine falling to the ground while running and sliding on a slip-resistant rubber surface, you will get a terrible rug burn from the generated friction. If you really want to use flooring in a basketball court use vinyl flooring with a rubber backing, you will have the springiness and softness of rubber but with the ability to slide on a vinyl floor. In fact, the best floor for a sports hall is to use hard plastic sport tiles.
Rubber flooring will make your home smell like a heap of new car tires. Wrong! Ok, the flooring will smell like rubber because that is what it is made from, however, some rubber items smell stronger of rubber than others depending on what the raw manufacturing material was. What will actually happen is that when you first have the rubber flooring installed you will have a smell of rubber and it will be at its strongest but, after a few days the smell will start to fade and eventually you won't even know it is there. If you have an allergic reaction to rubber or are particularly sensitive to its smell then choose one of the other flooring options such as PVC or foam tiles.
Aren't rubber and foam floor tiles the same? No, not at all! Foam flooring tiles are made from ethylene vinyl acetate (EVA) foam whereas rubber tiles are made from SBR rubber (the black material made from recycled tires). EPDM rubber (the brightly colored flecks which are mixed in with the black rubber), or virgin rubber (the new stuff freshly harvested from rubber trees or newly made synthetically). If you aren't sure which one to choose, consider whether its use will be for play and light weights (foam tiles) or a commercial gym and heavy weights (use rubber).
It is always better to ask a professional flooring contractor to install your new rubber flooring but there are certain things you should know about installing a rubber floor so you know that the contractor is doing it properly. Although these steps outlined here are generalizations, always heed the advice of the manufacturer to make sure you get the best possible quality floor.
You will be installing the rubber flooring onto an existing surface; this is called a 'sub floor'. The sub floor must be rigid, flat and smooth.
✓ Ensure the sub floor is free from cracks and not contaminated with paint, oil, grease, dirt or other contaminants.
✓ If you are installing onto a concrete sub floor that needs smoothing and repairing use a good quality levelling compound mixed with water to provide a smooth surface. Make sure the concrete has been built with a suitable damp proof membrane and please bear in mind that if the concrete is newly poured it will probably take up to six months to completely dry out.
✓ If you have a wooden floorboard sub floor, fix any squeaky or loose floorboards. Cover the boards with 0.25" thick plywood to get rid of any variations in floor level and then make sure all nails and screws are punched level with the surface of the floor. Use a smoothing compound to fill any gaps between the boards and to get rid of any indentations.
✓ If you are installing on existing tiles, fill and repair any holes and indentations and then use a suitable levelling compound.
✓ If you are installing over underfloor heating make sure the heat resistance specifications of the rubber are matched to the heat output of your underfloor heating system. Follow the manufacturer's recommendations when installing over heating system.
✓ Allow the rubber flooring to acclimatise to the temperature and humidity of the room in which it will be installed. This will probably take about 48 hours. Keep the flooring at a constant temperature of 18 to 22°C for 48 hours before installation, during and for about 70 hours after installation.
✓ Before cutting the flooring, inspect it to make sure there is no damage, there are no visible defects and that it is the correct color and size of roll you were expecting.
✓ Order the flooring in one batch as there will always be small variations in colour and texture between batches.
Vacuum the complete floor, measure it, and draw the centrelines in pencil. All the time plan how you are going to use all the flooring to reduce any offcuts.
✓ Lay the rolls loose on the floor without using any adhesive. Allow the flooring to stretch and relax into position.
✓ Cut each piece with a small overlap and lay in place so that they can be cut to an exact fit later.
✓ Cut and trim the seams to fit using a hook blade knife.
✓ Completely cover the sub floor surface with adhesive and roll the sheet into place taking care not to trap any air bubbles under the flooring.
✓Do not walk on the surface for about 24 hours after installation.
Rubber flooring is very reasonably priced when compared to other types of flooring and its long working life and resistance to wear makes it a really good value for money option. Unfortunately you will not often find rubber flooring in your local carpet shop; usually, it is only available direct from the manufacturer, online suppliers or specialist flooring shops. Although this makes it difficult in choosing a floor when you can't touch or see it in real life, most suppliers are only too happy to send out samples for inspection.
There are different grades of rubber floor and you should choose the best that you can afford. The following prices are indicative of the costs you will pay for installing a rubber floor. The costs will vary depending on the area in which you live as well as the type of flooring you choose.
Although installing a rubber floor is not that difficult if you have experience with laying floors in general, if you have never tried laying a floor before then we would advise you hire a professional to do the job. If you have had experience in floor laying then make sure you have a copy of the manufacturer's recommended requirements before you start otherwise it can very soon turn into a very expensive job.
If you decide to choose a professional there are a few ways to reduce your bill and get the best value for money.
Ask for an estimate from about four different rubber flooring contractors before deciding on the final choice. Don't automatically go for the cheapest option, they aren't always the best value. Look at the whole package.
The cost of rubber flooring will vary between the different companies, even for the same specification flooring. This is because each company has different overheads and operational expenses. Once again look at the whole package before choosing. Some manufacturers may offer discounts or freebies.
Flooring professionals, like all home improvement contractors, have seasons when they are less busy than others. Try to ask for prices in late autumn or early winter as that is the time when you can expect huge discounts and price matching.
Don't forget that you need to buy slightly more than the actual floor area needing to be covered. An additional 15% will usually cover the extras caused by difficult floor configurations.
When you have decided on the specifications of the rubber flooring you want, try to negotiate discounts with the different suppliers. Telling one supplier that you can get the same flooring cheaper elsewhere will often start a battle between suppliers for your order. Don't be frightened of playing one supplier off against another. You can often save anything up to 25% off.
What about with underfloor heating?
The obvious question here is whether the rubber flooring will be damaged by the temperature of the underfloor heating? Check with the manufacturer whether the flooring has a maximum heat restriction. If everything is ok you will find that rubber flooring is ideal for use with underfloor heating. The rubber holds the heat well and has a soft and warm surface that just cries out to be walked upon in bare feet. For this reason, it is great for bathrooms and bedrooms.
Where can I find a fitter?
Specialist rubber flooring installers are easily found if you ask the retailer where you bought the flooring. Most suppliers have a list of flooring installers they recommend to fit their products and some will even offer a fitting service because the product is so specialized.
If you aren't happy with the retailer's or supplier's choice then you can always go for a personal recommendation. Another way is to search specialist websites that can recommend installers or look on the website of your national floor layers' professional association.
You can also use our contractor forms which you will find on our website.
Surprisingly rubber flooring does not need specialist contractors to come and clean it. All you do is sweep up any loose dirt and dust with a broom or with a vacuum cleaner and then using a damp mop clean it with the detergent that has been recommended by the manufacturer. Some types can even be polished to give a special glossy finish but as always take advice from the manufacturer.
✓ Use mats by the front door to get rid of most dirt and grit that might stick to your shoes.
✓ Use protective pads or feet on the bottom of furniture to prevent undue wear and punctures to the flooring.
✓ Floor standing kitchen appliances can seriously damage flooring so place a sheet of hardboard or thin plywood between the floor and the appliance.
✓ Do not drag furniture or other heavy objects across the floor without protection.
✓ Protect the flooring from direct sunlight by keeping blinds or curtains closed on sunny days, otherwise the color might fade. Light colors will fade the least so choose one of these if you can.
Avoid using strong detergents or abrasive cleaning compounds and anything that is acid based. Just use a mild detergent (such as dish cleaning detergent, not dishwasher) diluted with water.
✓ Rubber flooring without any special treatment is almost impervious to penetration by moisture. If you want to make the surface completely impervious to water and stain, you can seal the surface after installation with an appropriate chemical sealer. Check with the supplier for details of the recommended sealer as this may vary depending on the type of flooring you buy.
Rubber flooring, whether it is done with tiles or continuous sheet, is definitely worth choosing if you like the feel and the properties of rubber. Although the price is up there among the high-end flooring options, rubber flooring will last for many years with little more maintenance than a regular vacuuming and a damp mop as long as you don't mistreat your flooring.
You can incorporate rubber flooring with underfloor heating as long as you take care to match any heat restrictions of the rubber with the heat output of the heaters.
You can install rubber flooring as a DIY project but unless you have fitted rubber flooring before it is better to hire a professional to do it for you. When you are looking at the available range of flooring options ask the supplier if he can recommend a rubber flooring specialist as otherwise, you might have problems getting one that knows what they are doing.
We talked a bit about the different types of backing you can have on rubber flooring and the common thicknesses and other dimensions used when selling rubber flooring sheets and tiles. Flooring tiles and sheets have many advantages and disadvantages and you will have to consider all of the items in these categories to decide whether rubber flooring is right for you.
As well as its own pros and cons we talked about how rubber flooring compared with the other extremely popular flooring material, PVC.
Let us hope you decide whether you want rubber flooring or not.


text:
package biz.brainpowered.plane.render;

import biz.brainpowered.plane.entity.Enemy;
import biz.brainpowered.plane.model.Light;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.glutils.FrameBuffer;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.Array;
import org.lwjgl.Sys;

import java.util.ArrayList;

import static biz.brainpowered.plane.render.ShaderUtil.createShader;

/**
 * Created by sebastian on 2014/07/24.
 */
public class LightMapRenderer {
    //read our shader files
    private String shadowMapPixelShaderPath;
    private String shadowRenderPixelShaderPath;

    private String finalPixelShaderPath;
    private String finalPixelShader;
    private ShaderProgram finalShader;

    //values passed to the shader
    public static final float ambientIntensity = .99f;
    public static final Vector3 ambientColor = new Vector3(0.99f, 0.99f, 0.99f);

    // Shadow Casting
    private int lightSize = 256;
    private float upScale = 1.0f; //for example; try lightSize=128, upScale=1.5f

    TextureRegion shadowMap1D; //1 dimensional shadow map
    TextureRegion occluders;   //occluder map
    TextureRegion finalLightMap;   //occluder map

    FrameBuffer shadowMapFBO;
    FrameBuffer occludersFBO;

    FrameBuffer finalLightMapFBO;
    Texture finalLightMapTex;

    Texture casterSprites;
    Texture light;

    ShaderProgram shadowMapShader, shadowRenderShader;

    boolean additive = true;
    boolean softShadows = true;

    Integer appWidth;
    Integer appHeight;

    private Light tmpLight;

    OrthographicCamera cam;

    public LightMapRenderer (String fragmentShaderPath, String shadowMapFragmentShaderPath, String shadowRenderFragmentShaderPath, Array<Light> lights) {
        finalPixelShaderPath = fragmentShaderPath;
        shadowMapPixelShaderPath = shadowMapFragmentShaderPath;
        shadowRenderPixelShaderPath = shadowRenderFragmentShaderPath;

        // viewport
        appWidth = Gdx.graphics.getWidth();
        appHeight = Gdx.graphics.getHeight();
        // todo: load light texture and vars
    }

    public boolean init () {
        try
        {

            cam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
            cam.setToOrtho(false);

            finalPixelShader =  Gdx.files.internal(finalPixelShaderPath).readString();

            // TODO: rename var to something un-ambiguous (ie finalShadowMapShader / blend FBO with Diffuse)
            finalShader = createShader(ShaderUtil.defaultVertexShader, finalPixelShader);
            finalShader.begin();
            finalShader.setUniformi("u_lightmap", 1); //  1 value refers to the FBO-to-ShaderProgramTextureUnit  binding
            finalShader.setUniformf("ambientColor", ambientColor.x, ambientColor.y, ambientColor.z, ambientIntensity);
            finalShader.end();

            // renders occluders to 1D shadow map
            shadowMapShader = createShader(ShaderUtil.defaultVertexShader, Gdx.files.internal(shadowMapPixelShaderPath).readString());
            // samples 1D shadow map to create the blurred soft shadow
            shadowRenderShader = createShader(ShaderUtil.defaultVertexShader, Gdx.files.internal(shadowRenderPixelShaderPath).readString());

            //the occluders
            casterSprites = new Texture("explosion19.png");
            //the light sprite
            light = new Texture("light.png");

            //build frame buffers
            occludersFBO = new FrameBuffer(Pixmap.Format.RGBA8888, lightSize, lightSize, false);
            occluders = new TextureRegion(occludersFBO.getColorBufferTexture());
            occluders.flip(false, true);

            //our 1D shadow map, lightSize x 1 pixels, no depth
            shadowMapFBO = new FrameBuffer(Pixmap.Format.RGBA8888, lightSize, 1, false);
            Texture shadowMapTex = shadowMapFBO.getColorBufferTexture();

            //use linear filtering and repeat wrap mode when sampling
            shadowMapTex.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
            shadowMapTex.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);

            //for debugging only; in order to render the 1D shadow map FBO to screen
            shadowMap1D = new TextureRegion(shadowMapTex);
            shadowMap1D.flip(false, true);

            finalLightMapFBO = new FrameBuffer(Pixmap.Format.RGBA8888, appWidth, appHeight, false);
            finalLightMapTex = finalLightMapFBO.getColorBufferTexture();

            finalLightMap = new TextureRegion(finalLightMapTex);
            finalLightMap.flip(false, true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }

        return true;
    }

    public void resize (int width, int height, SpriteBatch batch) {
        //Shading (2d)
        cam.setToOrtho(false, width, height);
        batch.setProjectionMatrix(cam.combined);

        finalShader.begin();
        finalShader.setUniformf("resolution", width, height);
        finalShader.end();
    }

    /**
     * Renders the LightMaps with Projected Shadows
     * Note: .end() should be called at end of render to cleanup Lightmap FBO
     * @param lights
     */
    public void renderLights (SpriteBatch batch, Array<Light> lights, ArrayList<Enemy> occlusionEntityCollection) {
        /**
         /* Note on Shadow Rendering
         /* Step 1: Render all Lights/Shadows into finalLightMapFBO (via a set of shaders)
         /* Step 2: Blend Diffuse and FBO textures (via third and 'final' shader)
         /**/

        // TODO: Move Shadow Rendering into Separate Class (or Sprite Batcher)
        // Step 1: Shadow Rendering
        // all stored in the "finalLightMapFBO"
        //clear frame
        Gdx.gl.glClearColor(0.25f,0.25f,0.25f,1f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        if (additive)
            batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE);
        for (int i=0; i<lights.size; i++)
        {
            tmpLight = lights.get(i);
            // only render lights that cast shadows
            if(tmpLight.castShadows)
                renderLight(tmpLight, batch, occlusionEntityCollection); // todo: write two or three separate sprite batchers to prevent program switching within a single batch
        }
        if (additive)
            batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
        // End Shadow Rendering
    }

    public void render (SpriteBatch batch) {
        final float dt = Gdx.graphics.getRawDeltaTime();

        // TODO: Move final Rendering into Final Rendering Class (takes in several LightMap textures, then blends and outputs)
        // Step 2: Blending
        // Render 'Diffuse' Everything Else (and Put Shadow Maps ontop)
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.setShader(finalShader);
        batch.begin();

        // TODO: if lightmap was generated - then bind to unit and use final renderer - otherwise switch to original pipeline
        finalLightMapFBO.getColorBufferTexture().bind(1); //this is important! bind the FBO to the 2nd texture unit
        light.bind(0); //we force the binding of a texture on first texture unit to avoid artefacts
        //this is because our default and ambiant shader dont use multi texturing...
        //you can basically bind anything, it doesnt matter
    }

    public void end () {
        // Empty out the Light Map once per frame (thanks!)
        finalLightMapFBO.begin();
        Gdx.gl.glClearColor(0f,0f,0f,0f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        finalLightMapFBO.end();
    }

    // Renders Lights that cast shadows - todo: Specify a Separate Shadow Cast Rendering Class
    private void renderLight(Light o, SpriteBatch batch, ArrayList<Enemy> occlusionEntityCollection)
    {
        float mx = o.x;
        float my = o.y;
        float lightSize = this.lightSize;//o.scale *

        //STEP 1. render light region to occluder FBO

        //bind the occluder FBO
        occludersFBO.begin();

        //clear the FBO to WHITE/ TRANSPARENT
        Gdx.gl.glClearColor(0f,0f,0f,0f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //set the orthographic camera to the size of our FBO
        cam.setToOrtho(false, occludersFBO.getWidth(), occludersFBO.getHeight());

        //translate camera so that light is in the center
        cam.translate(mx - lightSize/2f, my - lightSize/2f);

        //update camera matrices
        cam.update();

        //set up our batch for the occluder pass
        batch.setProjectionMatrix(cam.combined);
        batch.setShader(null); //use default shader
        batch.begin();

        // ... draw any sprites that will cast shadows here ... //
        // TODO: [Optimise] Only Render Entities that Intersect with Current CAMera Projection/Position/LightSize
        for (int x = 0; x < occlusionEntityCollection.size(); x++) {
            occlusionEntityCollection.get(x).render(batch);
        }

        //end the batch before unbinding the FBO
        batch.end();

        //unbind the FBO
        occludersFBO.end();

        //STEP 2. build a 1D shadow map from occlude FBO

        //bind shadow map
        shadowMapFBO.begin();

        //clear it
        Gdx.gl.glClearColor(0f,0f,0f,0f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //set our shadow map shader
        batch.setShader(shadowMapShader);
        batch.begin();
        shadowMapShader.setUniformf("resolution", lightSize, lightSize);
        shadowMapShader.setUniformf("upScale", upScale);

        //reset our projection matrix to the FBO size
        cam.setToOrtho(false, shadowMapFBO.getWidth(), shadowMapFBO.getHeight());
        batch.setProjectionMatrix(cam.combined);

        //draw the occluders texture to our 1D shadow map FBO
        batch.draw(occluders.getTexture(), 0, 0, lightSize, shadowMapFBO.getHeight());

        //flush batch
        batch.end();

        //unbind shadow map FBO
        shadowMapFBO.end();

        //STEP 3. render the blurred shadows

        finalLightMapFBO.begin();
        // DONT CLEAR HERE - only after each frame
        //Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //reset projection matrix to screen !!!
        cam.setToOrtho(false);
        batch.setProjectionMatrix(cam.combined);

        //set the shader which actually draws the light/shadow
        batch.setShader(shadowRenderShader);
        batch.begin();

        shadowRenderShader.setUniformf("resolution", lightSize, lightSize);
        shadowRenderShader.setUniformf("softShadows", softShadows ? 1f : 0f);

        //set color to light
        batch.setColor(o.color);
        float finalSize = lightSize * o.scale;

        //draw centered on light position
        batch.draw(shadowMap1D.getTexture(), mx-finalSize/2f, my-finalSize/2f, finalSize, finalSize);

        //flush the batch before swapping shaders into the FrameBuffer
        batch.end();
        finalLightMapFBO.end();

        //reset color
        batch.setColor(Color.WHITE);
    }
}

redpajama_set_name: RedPajamaGithub


Consumer Complaint: My XXXX XXXX XXXX has been expired. Continued late charges have been requested by XXXX XXXX credit card company. The collection activity is unlawful practices. Please, correct it as soon as possible. Thank you!


text:
Articles / Biographies
Full biography of Rory John Gates – Bill Gates' only son
April 10, 2021 May 10, 2021 - by Oladapo Deborah - Leave a Comment
Who is Rory John Gates
Rory John Gates is the only son and second child of American business mogul, Bill Gates. Rory John Gates' mother is Melinda Gates, and she is equally a successful businesswoman and philanthropist.
Rory John Gates is currently 21 years old, but has acquired a lot of educational qualifications compared to his peers. Rory John Gates is a hardworking young man who has leveraged his father's wealth, fame, and influence to enrich his professional career.
Full data profile of Rory John Gates
Full name Rory John Gates
Place of Birth Seattle, United States
Height 5″6 ft
Parents Bill and Melinda Gates
Siblings Jennifer and Phoebe Gates
Career Poet
Rory John Gates' Childhood
Rory John Gates was born on May 23, 1999, in Seattle, Washington. He is currently 21 years old. He is the second out of Bill Gates' three children. He is also the only son of Bill and Melinda Gates.
John Gates and his siblings grew up under strict parenting. For instance, they were not allowed to own a mobile phone until they were thirteen. Also, their spending was regulated, and their wages, fixed. According to his parents, they didn't want them to end up as brats.
Rory John Gates' Education
Rory John Gates attended Lakeside School for his primary and high-school studies. He proceeded to Duke University, United States, where he bagged a degree in Computer Science and Economics.
Rory John Gates also has an MBA degree from Fuqua School of Business, a prestigious business education institution in America. Additionally, Rory John learnt a bit of science from his father whenever they went on vacations.
Rory Gates is vast in several fields across the sciences, arts and commerce. Sources also have it that he is currently engaged in further studies at the University of Chicago.
Rory John Gates at his 4th birthday
Rory John Gates' Siblings
Rory John Gates is the second out of the Gates' three children. He has two sisters named Jennifer and Phoebe. His first sister, Jennifer Gates is three years older than him. She is also an equestrian (a horse rider). His younger sister, Phoebe Gates, is a ballet dancer. She is three years younger than Rory.
Rory John Gates' Career
Although only 21 years of age, Rory John Gates has achieved quite a feat in his career. However, he has led a pretty private life away from the Internet and media.
His exact career path is not known, but he has been following in his father's footsteps, and will most probably take over Microsoft in the nearest future.
Rory John Gates' Net Worth
Rory Gates currently has an estimated net worth of $24 million dollars. This is a big achievement and feat for a young man who is only 21 years old.
Rory John Gates' Girlfriend
Rory John Gates is not currently in a relationship, neither has he been known to ever have a girlfriend. The young man is either truly disinterested, or very private about his affairs. Or has simply decided to focus on his education and career at the moment.
Rory John Gates' House
Rory Gates lives with his parents and sisters in a massive Xanadu 2.0 mansion in America. The house, which was bought by Bill Gates for $2 million in 1998 now costs $123.54 million.
The house is infamous for its architecture, cost, and technological advancement. For instance, there are inbuilt sensors in the house to help regulate temperature at all times. Also, there are six kitchens in total; this is believed to ease the work of kitchen staff, especially during emergency meetings and events.
Rory John Gates on Social media
The young millionaire is currently inactive on social media. This is solely a decision made by him as his sisters have active social media accounts.
Other interesting facts about Rory John Gates
Rory John Gates has been described by his mother as a simple, passionate, and goal-driven man. He is also known as a charity giver. The spirit of giving was imbued in him since he was a child, and that has grown to become one of his many attributes.
In addition, Rory John Gates is a poet. He wrote a seven-line poem titled 'What's Known as Diamante' when he was only ten years old. He is also a very quiet person, and this is evident in his lack of social media life and public attention.
See copies of Bill and Melinda Gates divorce papers
The horrible story of the Papin Sisters
Check out these hippie photos of Bill Gates after his divorce announcement
'A challenging time' – Bill Gates' daughter Jennifer speaks about parents' divorce
Bill and Melinda Gates announce divorce after 27 years of marriage
Everything to know about Bill Burr's wife, Nia Renee Hill
Everything to know about Josh Gates' wife Hallie Gnatovich
True facts about John Okafor (Mr Ibu)'s marriage, wives and children
Bill Gates to become world's first trillionaire
Sad story of the 'Hilton Sisters'
TaggedRory John Gates
Cassi Davis Bio: Age, Career, Family, Marriage, Husband, Kids
All about UFC London 2023: Fights, Schedules, Tickets
List of cheapest UK universities for Nigerian students in 2023
Previous Article Full list of BBNaija Laycon's endorsement deals so far
Next Article Thin-waist actress Princess Shyngle announces her marriage ended after one week
About Oladapo Deborah
Deborah Abiola Oladapo is a first-class graduate of English from McPherson University in Ogun State. She is a seasoned writer and published author with interest in creating content that inspires.
View all posts by Oladapo Deborah →

redpajama_set_name: RedPajamaCommonCrawl


Pelosi ran unopposed as the nominee for Speaker in a closed-door Democratic caucus election Wednesday despite unrest from those clamouring for new leadership.
Democrats will hold at least 233 of the House's 435 seats in the new year. Assuming that all Republicans vote against Pelosi for speaker, just 17 or 18 Democratic opponents could be enough to block her from becoming Speaker.
Pelosi was the first woman to be Speaker — back when Democrats had the House majority from 2007 to 2011. It's rare to reclaim the post after losing it.


Which Wolfram parallel technology should I use?
How do I start the Tomcat server for gridMathematica?
What are controlling and computing processes?
How do I create a Wolfram ID to access Wolfram desktop products?
How do I install MathLM?
Why do I get a "Cannot find components required for …" error?
Why do I get an "Invalid License State" error?
Why do I get an "Unable to connect to http://server:3737/WolframLightweightGrid/Manager" error?
How do I report an issue with Lightweight Grid Manager?
When does Technical Support end for my gridMathematica product?
How do I set up gridMathematica Server with the Lightweight Grid Manager on Linux?
How do I set up gridMathematica Server with the Lightweight Grid Manager on Windows?
When do I need a Mathematica Core Extension license?
Why doesn't Mathematica automatically launch as many local subkernels as I expected?
How do I use remote kernels between Linux operating systems?
How do I set up Mathematica on a cluster using the gridMathematica Server/Lightweight Grid Manager?
How do I install gridMathematica Server with the Lightweight Grid Manager on Mac?
How do I troubleshoot Lightweight Grid client issues?
Where can I find documentation for gridMathematica Server and Wolfram Lightweight Grid Manager?
How do I upgrade my Wolfram product?
How do I find installation files in the User Portal?
How do I find my MathID with MathLM?
How do I update MathLM license information on Mac and Linux?
How do I upgrade MathLM on Mac and Linux?
How do I upgrade MathLM on Windows?
How can I enable logging with MathLM?
Why am I being prompted to reactivate my software?
How do I get an activation key from my Wolfram User Portal?
Where can I find Wolfram product installation guides?
How do I install Wolfram products from USB drives?
How do I find when my license will expire?


text:
Q: HTML2PDF unexpected line-breaks within table I'm using HTML2PDF to generate a pdf-file out of a HTML string.
Everything nice and easy, till I came to a very wierd bug. There is a pagebreak in the middle of a td. Not only does it not take the css with him, but the spot on where it decides to break makes no sence. The sentence is shorter than the sentence above it, while the sentence above only takes up 1 row. Which would mean the sentence with a break would be on just on line, instead, it dicides to use 4 lines. This might sound confusing, so here is an example of the html.

        Some text longer than the text below.
        Apples

        Text shorter than text above
        Bananas

As you can see, the first td is longer than the second td, so you'd think if the second td would need a line break, the first one needs one to. Unfortunately, html2pdf decides the second td needs 3 line breaks, while the first has none.
This bugs out the tablerow below it, in which the th overlaps the td in every row.
I have looked trough the code and I can say for sure: This is the html. No page breaks, nothing.
Here is kinda what it would look like if I were to write the output in html.
This is not the actual html given to the pdf! This is just the output, written in html.

        Some text longer than the text below.
        Apples

        Text shorter
than
text
above
        Bananas

Notes:

*

*This table is on the bottom of my page, so the line breaks causes a very bugged page-break.

*I have tried using page-break-inside: avoid; on every element (even on the same time) but nothing seems to work.

A: I've found the answer. Apparantly, thead and tfoot aren't supported within html2pdf. Html2pdf puts a table in a array and didn't count tfoot and thead in it, but did output it.
What he does is this. You have this code:

        header

        Some text longer than the text below.
        Apples

        Text shorter
than
text
above
        Bananas

        footer

He placed every row in a array, like this:
array (
0 => array (
    0 => "thead"
    1 => ""
1 => array (
    0 => "Some text longer than the text below."
    1 => "Apples"
2 => array (
    0 => "Text shorter than text above"
    1 => "Bananas"
3 => array (
    0 => "footer"
    1 => "")

Yet, he'd see only 2 rows, so counted 0 and 1. Which ment he'd output array(0) and array(1). After that, he'd find the rest of the table and just post it as if it's nothing more then a string with tags, while in reality it was a tablerow.
I could be wrong with the explanation, this is just how I picked it up.

redpajama_set_name: RedPajamaStackExchange


As I write this post I am still on a total high. I'm not interested in the comedown. This feeling has to be up there with the best moments. Last night, I was able to watch my daughter walk her first catwalk in London Fashion Week. And what a show it was!
These events are something else. Set in the most exquisite and luxurious location of London's finest, the fashion types arrive. They are different. They have an air of elegance that one craves. They have a youthful glow that I lust after. They belong. Effortlessly. The decadence is indulgent but I'm content indulging. For tonight I am part of this crowd. Part of this event. I have a reason to be there, even if my ticket is white compared to the black and silver of the other guests. My ticket might mean only standing but I'm still there. I can still experience the high.
I've been lucky to have been to other shows and you can read about my experience at the Moschino show here but there is nothing like watching your own daughter come up on to the catwalk and the cameras flash flash flash. Just unreal.
A rainforest was the theme of the show, set within a room of such splendour. Chandeliers dripping from the beautiful painted ceilings, the coolest of music delicately playing as the fashion crowd saunter in to take their seats. The photographers one end of the catwalk, the opening for the show the other. As I stand waiting for the spectacle to start, I receive text after text reminding me to film it. I'm panicking slightly as I worry that I don't have enough storage. That faux pas really doesn't need to happen right now!
The chatter stops, the lights dim and then the music, the show music, starts. I'm shaking. The catwalk is so long. Everyone is watching. And then the first girl appears. She walks the entire catwalk on her own. She owns the stage completely. Not sure I'll be able to cope if Georgia has to do this. The pressure not to fall, not to go wrong, to own it like the others. All eyes on the model. Cameras clicking and flashing. A powerful force over the pumping music. My passion for this world is further fuelled.
The theme is animal like. The girls' hair is big, the make-up animalistic. I'm not sure I'll recognise Georgia. And then, oh my word, she appears on the catwalk. She's there. My girl. She looks so different. Not my 17-year-old teen that I'm nagging to do homework, moaning at to tidy her room. She's a model. She's on this catwalk. She's doing this thing and I am literally shaking. I mustn't cry. I mustn't whoop. I must try and calm. I'm holding my breath as she walks from end to end with a confidence of which I could only dream. The cameras flash. She doesn't falter. All pre-show nerves gone. My daughter to me. But to everyone else she's someone different. My emotions over this are tangled.
It's one of the strangest feelings to see your child through different eyes but last night I did. I feel different this morning. I'm proud beyond proud. But it's more than that and I can't quite pinpoint it. I'm standing back and enjoying the show for now while I try to put my feelings into words … still my girl but someone else too … just saying.
Previous article So What Will Those Teen Years Be Like?
You're having a well deserved proud mama moment! The feeling that yes, that your kid is going to be all right, that feels like a million bucks.
What a beautiful post, you should be proud. She looks amazing, good for her! I wish I had had even an ounce of that confidence throughout life. Enjoy watching her grow into a young woman.
What a wonderful experience for you and your daughter! I can't imagine how proud you must have felt seeing her on stage living her dream. That's all we really want as parents, isn't it?
Ha ha – let's hope so – I enjoyed it far too much for that to be the only one!!
What ab ==n experience for you both. Love this post you sound SO proud.
Loved the video of the day you have such a gorgeous rapport with your daughter. I am a proud tribal mamma she was amazing and a total credit to you!! How exciting!!
When you get the chance, check out my fashion blog where I discuss current fashion trends and how to wear them!
I would have cried like baby! Thanks so much for sharing!
I was shaking soon much and so scared not to make a sound!!


If there is a paper, you might consider the really most useful news that constantly takes place beside me. Consequently, from us, you're assured of complete satisfaction after you purchase a college paper. The school paper additionally needs to be cited well based on the requirements of this writing design that the learning pupil must make use of. The paper must also be well organized and impressive. However, the key up to a successful research paper is company. Customized research paper By Kenneth Elliott when you have to compose a study paper, it's not necessary to stay up night after evening hoping to do most of the work your self.


Adhering to therapy is critical for patients receiving noninvasive ventilation.
A recent study* has shown that patients on a ResMed ventilator with iVAPS technology have adhered to therapy for 60 minutes longer (per session) than when treated with standard pressure support (PS) modes.
iVAPS automatically adjusts the level of pressure support to meet the set alveolar target – providing higher pressure support when required and less when not needed. This automatic response reduces the problems associated with setting a much higher overall pressure support, which is only needed at limited times during therapy.
iVAPS plays an important role in achieving therapy outcomes for your patients–from setting up patients easily and helping them accept NIV, to keeping them adherent on therapy.
Intelligent, automatic and personalised, this advanced technology with an intelligent Back-up Rate (iBR) offers a smart choice for excellence in NIV.


Carballo made his debut for the Pumas against Canada on July 2, 2005 and toured South Africa, France, Ireland and Italy with Argentina in 2008.
He began his career with the Alumni Club in Buenos Aires before opting for a move to France where he first played for Toulon during the 2004-05 season. He switched to Castres for the 2005-06 before returning to Toulon but was back at Stade Pierre-Antoine for the 2006-07 season.
He left Castres at the end of an injury-blighted 2008-09 season and headed back to Argentina where he has since been linked with Alumni.


text:
Ambrus Nagy, född 20 augusti 1927 i Budapest, död 18 juli 1991 i Haag, var en ungersk fäktare.
Nagy blev olympisk silvermedaljör i värja vid sommarspelen 1956 i Melbourne.

Källor

Ungerska fäktare
Ungerska olympiska silvermedaljörer
Olympiska silvermedaljörer 1956
Tävlande vid olympiska sommarspelen 1956 från Ungern
Tävlande i fäktning vid olympiska sommarspelen 1956
Födda 1927
Avlidna 1991
Män
Idrottare från Budapest

redpajama_set_name: RedPajamaWikipedia


text:
\section{Introduction}

Quantum key distribution (QKD) allows two authenticated users, normally referred to as Alice and Bob, to generate a private key through an insecure quantum channel controlled by an eavesdropper, Eve \cite{BB84,E91,Gisin02,Scarani09,Lo14}. Based on fundamental laws in quantum mechanics, idealized QKD protocols have been proved to be unconditionally secure against adversaries with unlimited computing power and technological capabilities \cite{Mayers01,Lo99,Shor00}. However, practical implementations of QKD protocols unavoidably contain imperfections which may be overlooked in the security proofs.  The disconnection between QKD theory and its real-life implementations has led to various ``side-channel'' attacks \cite{Makarov05,Makarov06,Qi07,Zhao08,Lydersen10,Wiechers11,Lydersen102,Gerhardt11,Fung07,Xu10,Sun11,Tang13,Rogers07,Viacheslav14,Weier11,Li11}.

One natural solution to the above side-channel attacks is to develop security patches \cite{Yuan11,Lydersen11,Yuan112,Honjo13,Silva14}. In fact, once a security loophole has been identified, normally it is not too difficult to develop countermeasures to regain the security. This approach is appealing in practice since it typically can be realized by slightly modifying either the QKD protocol or its implementation, and the resulting key rate could be comparable with that of the original protocol.  However the security can only be proved against known attacks.

Another important approach to enhance the security of practical QKD is to develop QKD protocols based on ``untrusted'' device \cite{Mayers98,Acin07,Gisin10,Lo12,Braunstein12}. Among them, the measurement-device-independent (MDI) QKD protocol \cite{Lo12}, has received much attention \cite{Tamaki12,Ma12,Song12,Sun13,Xu13,Curty14}. The MDI-QKD protocol is automatically immune to all side-channel attacks associated with the measurement device which, arguably, is the weakest link in a QKD system. In fact, the measurement device in MDI-QKD can be treated as a ``black box'' which could even be manufactured and operated by Eve. The feasibility of MDI-QKD has been demonstrated experimentally \cite{Rubenok13,Silva13,Liu13,Tang14,Tang142,Tang143}. See \cite{Xu14} for a recent review.

One drawback of MDI-QKD is the relatively low secure key rate comparing with conventional QKD, such as the decoy-state BB84 protocol. This is because in most of existing MDI-QKD protocols (except \cite{Tamaki12}), secure keys are generated from two-fold coincidence detection events. The MDI-QKD suffers more from the low detection efficiency of a practical single-photon detector (SPD), especially when the finite data size effect is taken into account \cite{Lo14}.

Recently a new QKD protocol, designed to bridge the strong security of MDI-QKD with the high efficiency of conventional QKD, was proposed by several groups \cite{Gonzalez14,Lim14,Cao14}. In this protocol, the legitimate receiver employs a trusted linear optics network to encode information on photons received from an insecure quantum channel, and then performs a Bell state measurement (BSM) using untrusted detectors. One important advantage of this approach is the high key rate comparable with that of a conventional QKD protocol. This is achieved by replacing the probabilistic two-photon BSM scheme in the original MDI-QKD protocol \cite{Lo12} by a deterministic single-photon BSM scheme. Following \cite{Lim14}, we call this new protocol ``detector-device-independent'' (DDI) QKD.

In this paper, we scrutinize the underlying assumptions behind DDI-QKD. One crucial assumption is that the untrusted BSM located inside the receiver's laboratory cannot send any ``unwanted'' information to the outside. Here, we show that if the BSM is completely untrusted, a simple scheme would allow the BSM to send information to the outside without being detected: Eve can place high-efficiency detectors inside the BSM and program it to selectively report a fraction of the total detection events to simulate practical low-efficiency detectors. The time delay between adjacent reported events can be used by the BSM to send information. Combined with Trojan horse attacks, this scheme could allow Eve to gain information of the secure key without introducing any errors. Our results suggest that to establish the security of DDI-QKD, additional assumptions on the measurement device are required. It is thus very important to clearly spell out those assumptions and place them under scrutiny.

This paper is organized as follows: in Section \ref{sec:2}, we briefly review the basic ideas of MDI-QKD and DDI-QKD.  In Section \ref{sec:3}, we present the details of our attack. We conclude this paper with a discussion in Section \ref{sec:4}.

\section{MDI-QKD \& DDI-QKD}
\label{sec:2}

In a conventional QKD protocol (see Fig.1a), Alice prepares quantum states and sends them to Bob through an insecure quantum channel. Bob receives signals from the quantum channel and performs measurement. In this configuration, it is reasonable to assume that the errors in quantum state preparation can be well controlled and quantified, since this can be done within Alice's well protected laboratory without Eve's interference. On the other hand, the quantum states received by Bob are highly unpredictable, since Eve could replace Alice's quantum states by anything at her will. Eve can interfere the measurement process by either manipulating Alice's signal \cite{Qi07} or sending her own signals into Bob's laboratory \cite{Lydersen102}. The above observation could explain why most identified security loopholes in conventional QKD are associated with the measurement device \cite{Makarov05,Makarov06,Qi07,Zhao08,Lydersen10,Wiechers11,Lydersen102,Gerhardt11}.

\begin{figure}[htb]
\centerline{\includegraphics[width=8.5cm]{Fig1.pdf}} \caption{(a) Conventional QKD; (b) Measurement-device-independent(MDI) QKD; (c) Detector-device-independent (DDI)QKD}
\end{figure}

The motivation behind MDI-QKD \cite{Lo12} is to develop a QKD protocol which is automatically immune to all detector side-channel attacks. In this scheme (see Fig.1b), both Alice and Bob prepare quantum states and send them to an untrusted third party, Charlie, who could be a collaborator of Eve. Charlie is supposed to measure the correlation between Alice's and Bob's quantum states and publicly announce the measurement results. Given Charlie's measurement results, Alice and Bob can further establish a secure key. The protocol has been designed in such a way that ``only'' the correlation (but not the quantum states themselves) can be determined by Charlie faithfully. On one hand, if Charlie executes the protocol honestly, he or Eve cannot gain any information of the secure key. On the other hand, any attempts by Charlie to gain information of the secure key will unavoidably introduce additional noise and can be detected by Alice and Bob. The security of MDI-QKD is based on the idea of time-reversed EPR QKD \cite{Biham96,Inamori02}. By allowing Eve to fully control the measurement device, Alice and Bob can establish a secure key without making any assumptions about how the measurement device works, thus removing any potential detector side-channels. We remark that MDI-QKD is an ideal building block of multi-user QKD networks, where the expensive measurement device can be placed in an untrusted central node while each QKD user only needs a low-cost state preparation device \cite{Tang14}.

Recently DDI-QKD has been proposed to bridge the strong security of MDI-QKD with the high efficiency of conventional QKD \cite{Gonzalez14,Lim14,Cao14}. For simplicity, in this paper we assume that a perfect single photon source is employed by Alice. In DDI-QKD (Fig.1c), Alice prepares a single-photon pulse in one of the four BB84 polarization states and sends it to Bob through an insecure quantum channel. On receiving the signals, Bob employs a ``trusted'' linear optics network (LON) to encode his information on a different (for example, spatial) degree of freedom of the incoming signals. Afterwards, the above signals are fed into an ``untrusted'' BSM device which is supposed to perform a single-photon BSM \cite{Kim03} and report the measurement results to Bob. Through an authenticated classical channel, Bob announces which transmitted signals have yielded successful BSM detection events, the Bell states obtained, and the basis information associated with those successful events.  Alice and Bob estimate the quantum bit error rate (QBER) for the events when they happen to use the same basis. If the QBER is below certain threshold, they can further apply error correction and privacy amplification to generate a secure key. Note in Fig.1c, the untrusted BSM inside Bob's laboratory is represented by a ``black box'', which is controlled by Eve's partner (Fred) during the QKD process.

\section{Trojan horse attack in DDI-QKD}
\label{sec:3}

In DDI-QKD, Bob's encoding device (LON in Fig.1c) sits between Eve and Fred. In practice, this design could be prone to Trojan horse attacks. We remark that the threats of Trojan horse attacks in conventional QKD and the corresponding countermeasures have been studied previously \cite{Gisin06,Jain14,Jain142}. In conventional QKD, Eve can only access one end of each user's device. To launch a Trojan horse attack, Eve can send bright light pulses into the user's system and tries to gain information by measuring the back-reflected light. In practice, the QKD users can effectively reduce the risk of Trojan horse attack by using filters, optical circulators, isolators, and intensity monitors, etc. However, these countermeasures may not be effective in the case of DDI-QKD, where Eve and Fred together can access both ends of Bob's encoding device. For example, in each quantum transmission, Eve could send her own signal (which may contain a few photons) together with Alice's photon into Bob's laboratory. Both Alice's and Eve's signals go through Bob's encoding device and reach the BSM. Inside the BSM, Fred could determine Bob's bit information precisely by measuring the signal sent by Eve. In the meantime Fred can perform an honest Bell state measurement on Alice's photon. In principle, Fred can have a perfect copy of Bob's random bits without introducing any errors.

At this point, security is not compromised since Fred is confined within Bob's laboratory.  To prevent Fred from sending Bob's random bits to Eve, a crucial assumption is made in DDI-QKD \cite{Gonzalez14,Lim14}: Fred is only allowed to report the BSM results to Bob; he cannot send any ``unwanted'' information to the outside. However, it could be difficult to justify the above assumption in practice. Below we will show that if the BSM is completely untrusted (as in the case of MDI-QKD), a simple scheme would allow the untrusted BSM to send information to Eve. Combined with Trojan horse attacks discussed above, this scheme could allow Eve to gain information of the final key without being detected.

A practical single photon detector (SPD) at telecom wavelength has a relatively low detection efficiency (typically $10\%\sim30\%$). On the top of that, all the optical components inside a practical BSM introduce additional losses. Under normal operation, Bob would expect a low detection rate: most of the time, the BSM will report ``no detection''; occasionally, the BSM will report a successful BSM result.
However, Eve could place SPDs with much higher efficiency inside the BSM. In this case, the actual detection rate seen by Fred will be much higher than the one expected by Bob. Fred can easily simulate a low-efficiency BSM by reporting to Bob a small fraction of the total detection events. He can further take advantage of this ``post-selection'' process to send information to Eve.

Suppose Fred successfully detects the $i^{th}$ signal sent by Alice; in the meantime, through the Trojan horse attack, he also learns Bob's bit information corresponding to the same transmission. Fred reports the BSM result to Bob honestly. He also determines the index number $i+k$ of the next BSM result to be reported based on the following rules: if Bob's $i^{th}$ bit value is $1$ (or $0$), Fred will report a BSM result to make sure that $k$ is an even (or odd) number. In other words, Fred encodes Bob's random bits on the time delays between adjacent BSM results reported to Bob. When Bob publicly announces which signals from Alice have been detected, Eve can decode Fred's information and have a perfect copy of Bob's random bits. Since Fred performs BSM on Alice's signals and reports the measurement results to Bob honestly, this attack will not introduce additional errors. To further conceal their attack, Eve and Fred can use pre-shared random numbers to determine whether an even or an odd number is used to encode bit $1$ for each reported BSM event. Fred can also carefully control the reporting rate to match it with the one expected by Bob.

This attack, in its spirit, is similar to the memory attack on device-independent (DI) QKD \cite{Barrett13}, which might be applicable whenever an untrusted device is placed inside Alice's or Bob's secure laboratory. On the other hand, our attack is more feasible since Fred does not need to access the classical communication channel between Alice and Bob. All his activities are confined within the untrusted BSM, as assumed in DDI-QKD.

\section{Discussion}
\label{sec:4}

To prevent the above attack, Bob could introduce various countermeasures to detect Trojan horse attacks, as suggested in \cite{Cao14}. In practice, additional filtering and random sampling systems could be introduced into Bob's system to characterize the input signals and mitigate the risk of Trojan horse attacks. However, it is very challenging in practice to implement single-mode filtering. Moreover, additional SPDs could be required to implement the above countermeasures. These SPDs may also suffer from the same side-channel attacks as the SPDs for secure key generation.

Another approach to prevent the above attack is to make additional assumptions about the BSM device \cite{Curty}. Instead of treating the BSM device as a completely ``black box'', as we have assumed above, Bob could build the BSM himself and know what is inside the BSM. In this case, it may be possible to prove security without perfectly modeling the exact behavior of the BSM. Nevertheless, all the assumptions made about the BSM should be clearly specified and be placed under scrutiny. To highlight this point, we consider the detector blinding attack, which has been successfully demonstrated in conventional QKD systems \cite{Lydersen102}.

\begin{figure}[htb]
\centerline{\includegraphics[width=7cm]{Fig2.pdf}} \caption{Schematic diagram of the Bell state measurement (BSM) device employed in detector-device-independent (DDI) QKD}
\end{figure}

The basic idea of the detector blinding attack is as follows \cite{Lydersen102}. First, Eve sends bright light into Bob's system to force the SPDs into the so-called linear operation mode. In this mode, the detector remains sensitive to bright light with a classical optical power threshold $P_{th}$. Second, Eve performs an intercept and resend attack: she intercepts Alice's signal, measures it in a randomly chosen basis, and resends a bright pulse to Bob according to her measurement result. The peak power of the bright pulse is just above $P_{th}$. If Bob and Eve happen to use the same basis, the bright pulse will be conveyed to one detector and a ``click'' will be registered. Otherwise, the optical power of the bright pulse will be distributed between two SPDs and no detector clicks. Equivalently, Eve has control of Bob's measurement basis and it is easy to show that in principle Eve can learn the whole key without introducing errors.

The detector blinding attack could also be applied in DDI-QKD if there are certain overlooked imperfections in the BSM. Although the actual implementations of the BSM in \cite{Gonzalez14,Lim14,Cao14} are slightly different, all of them employ four SPDs to deterministically identify the four Bell states, $\{|\Psi^{+}\rangle,|\Psi^{-}\rangle, |\Phi^{+}\rangle,|\Phi^{-}\rangle\}$, as shown in Fig.2. In normal QKD operation, if Alice and Bob use the same basis, only two out of the four SPDs have non-zero probability ($50\%$ each in the ideal case) to detect a photon. On the other hand, if Alice and Bob use different bases, all the four SPDs have non-zero probability ($25\%$ each in the ideal case) to click.

Suppose Eve launches the detector blinding attack described above. The optical power of Eve's bright pulse will be distributed either between two SPDs (if Eve and Bob use the same basis) or among four SPDs (if they use different bases). By carefully controlling the power of the bright pulse, Eve can make sure that Bob can register a detection event only when they use the same basis.

The above attack can be easily detected if the beam splitters in the BSM are symmetric and all the SPDs are identical. This is because when Bob and Eve use the same basis, the optical power of Eve's bright pulse will be evenly distributed between two SPDs and result in an unusually high double-click rate \cite{Silva14}. However, if we allow certain uncharacterized imperfections in the BSM, Eve could refine her attack to make it undetectable.  For example, if the SPDs have different wavelength-dependent efficiencies, then Eve could reduce the double-click rate by tailoring the wavelength of her bright pulse. To rule out the possibility of the detector blinding attack in DDI-QKD, we need to quantify the imperfections inside the BSM carefully, or introduce other countermeasures.

In summary, to improve the security of QKD in practice, various QKD protocols, including DI-QKD, MDI-QKD and DDI-QKD, have been proposed. Each of them has its own advantages and drawbacks, and might be best for certain applications. In this paper, we investigate some underlying assumptions in DDI-QKD. Our results show that if the BSM in DDI-QKD is completely untrusted, a simple attack could allow Eve to gain information of the quantum key without being detected. To prevent the above attack, either countermeasures to Trojan horse attacks or some trustworthiness to the ``untrusted'' BSM device is required. All these details should be clearly specified and included in the security analysis.

I would like to thank Marcos Curty for very helpful discussions.  This work was performed at Oak Ridge National Laboratory, operated by UT-Battelle for the US
Department of Energy under Contract No. DE-AC05-00OR22725.

redpajama_set_name: RedPajamaArXiv


text:
Q: SQL prepared statement returns no result (empty result) Following prepared statement returns no result if I try like search('samsung').
public function search($searchFor) {
        try{
            //connect to db
            $pdo = $this->_db->connect();
            //set up SQL and bind parameters
            $sql = "select * from item where itemName like '%:searchfor%' or description like '%:searchfor%'";
            $stmt = $pdo->prepare($sql);
            $stmt->bindParam(':searchfor', $searchFor, PDO::PARAM_STR);
            //execute SQL
            $rows = $this->_db->executeSQL($stmt);
            return $rows;
        }
        catch (PDOException $e)
        {
            throw $e;
        }
    }

$rows return an empty array. But if I try
select * from item where itemName like '%samsung%' or description like '%samsung%;

it returns a matched item and works as expected.
I found
$sql = "select * from item where itemName like :searchfor or description like :searchfor";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":searchfor", "%$searchFor%");

works. I had to use bindValue instead. This was a totally different issue in that the SQL was correct but I used bindParam instead of bindValue (which is the correct method), hence this is not a duplicate.

A: did you try to use a placeholder for the whole part of the statement?
$sql = "select * from item where itemName like :searchfor or description like :searchfor";
$stmt = $pdo->prepare($sql);
$search_string = "'%" . $searchFor . "'%";
$stmt->bindParam(':searchfor', $search_string, PDO::PARAM_STR);

Altenatively without named params:
$sql = "select * from item where itemName like ? or description like ?";
$stmt = $pdo->prepare($sql);
$search_string = "'%" . $searchFor . "'%";
$stmt->bindParam('ss', $search_string, $search_string);

As far as I remember the manual, like need to thave the whole string in the variable, not only the content to look after.
Aug

A: The prepared statement's placeholder tells php to treat the specific value that is passed into the placeholder, as a string. Instead of this:
$sql = "select * from item where itemName like '%:searchfor%' or
description like '%:searchfor%'";

Do this:
$sql = "select * from item where itemName like :searchfor or
description like :searchfor";

Then bind whole values into the placeholders:
$stmt->bindParam(':searchfor', '%yourkeyword%', PDO::PARAM_STR);


text:
Limerick easily overcome understrength Cork
Seán Finn of Limerick in action against Brian Turnbull of Cork during the Co-Op Superstores Munster Hurling League Final match between Limerick and Cork at LIT Gaelic Grounds in Limerick. Picture: Piaras Ó Mídheach/Sportsfile
By Michael Moynihan
Follow @MikeMoynihanEx
Saturday, January 11, 2020 - 09:33 PM
Limerick 1-32 - 0-20 Cork
An early-season title for Limerick, winners over Cork in this Co-Op Superstores Munster SHL final in the Gaelic Grounds, with 5,295 in attendance. The home side were far too good for an understrength Cork.
Cork hit five points in the first five minutes, with Conor Lehane impressing, but David Dempsey helped Limerick to stay in touch before Aaron Gillane struck for goal from close range: 1-3 to 0-5 on 11 minutes.
Newcomer Sean Twomey's second and Aidan Walsh's first point nudged Cork one ahead by the end of the first quarter, 0-8 to 1-4, but David Reidy's accuracy from frees levelled the game before Barry Nash and Diarmaid Byrnes (free) put Limerick ahead, 1-8 to 0-9.
By the 25th minute Lehane (free) and Seamus Harnedy had levelled for Cork, but Reidy restored Limerick's lead with a free and Tom Morrissey chipped in to make it 1-10 to 0-11.
Lehane and Twomey tied it up once again but Limerick took over: Morrissey, Gillane and Graham Mulcahy pushed them four ahead, though there was still time for Chris O'Leary to hit a late free to make it 1-14 to 0-14.
Cork restarted with a Lehane free but Limerick came close to a goal on the resumption, Tom Morrissey narrowly wide. Reidy (free) and Aidan Walsh swapped points before Reidy pointed from the wing. When he added another two soon after it was 1-18 to 0-16 on 43 minutes.
Byrnes and Reidy (free) stretched Limerick's lead to seven as the home side settled into gear, dominating the middle of the field. Darragh O'Donovan made it seven points on the spin before sub Patrick Horgan pointed a free: 1-22 to 0-17 on 54 minutes.
Limerick were cruising at this stage, eventually running out winners by points.
Scorers for Limerick: D. Reidy (0-12, 8 frees); G. Mulcahy (0-5); A. Gillane (1-1); D. Dempsey (0-4); D. Byrnes (1 frees), B. Nash, T. Morrissey, D. O'Donovan (0-2 each); C. Lynch, G. Hegarty (0-1 each).
Scorers for Cork: C. Lehane (0-6, 3 frees); S. Harnedy, S. Twomey, C. O'Leary (frees)(0-3 each); A. Walsh (0-2 ); B. Turnbull, J. O'Connor, P. Horgan (free)(0-1 each).
LIMERICK: B. Hennessy, T. Condon, R. English, A. Costello, D. Byrnes, D. Morrissey, B. Nash, R. Hanley, ,C. Lynch, D. O'Donovan, T. Morrissey, D. Dempsey G. Mulcahy, D. Reidy, A. Breen.
Subs: S Finn for Costello, G. Hegarty for T. Morrissey (both 45); M. Quinlan for Gillane (55); B. O'Grady for Condon (55); J. Boylan for English (65).
CORK: P Collins, C. Spillane, E. Cadogan, S. O'Donoghue, C. O'Leary, B. Cooper, D. Cahalane, R. Walsh, A. Walsh, C. Lehane, L. Meade, S. Twomey, J. O'Connor, S. Harnedy, B. Turnbull.
Subs: P. Horgan for O'Connor, S. O'Regan for R. Walsh (HT); R. Downey for Meade (52); T. Connell for Twomey (70); J. Keating for Spillane (72).
Referee: K. Jordan (Tipperary).
Superb Neville leads Limerick to McGrath Cup success over Cork
Next year don't come but today has
Enright getting into full stride
Limerick can apply for First Division
Dip in fortunes left Duffy re-thinking his future


Producer: Uppalapati Pramod, V. Vamsi Krishna Reddy.
Starring: Prabhas, Shraddha Kapoor, Arun Vijay, Neil Nitin Mukesh.
Release Date: 14 Feb 2018.
01. Saaho 2018 Telugu Move Songs Mp3 Track 1…Coming Soon.
02. Saaho 2018 Telugu Move Songs Mp3 Track 2…Coming Soon.
03. Saaho 2018 Telugu Move Songs Mp3 Track 3…Coming Soon.
04. Saaho 2018 Telugu Move Songs Mp3 Track 4…Coming Soon.
05. Saaho 2018 Telugu Move Songs Mp3 Track 5…Coming Soon.
06. Saaho 2018 Telugu Move Songs Mp3 Track 6…Coming Soon.
Saaho 2018 Telugu Movie All Mp3 Songs 320 Kbps Zip.


text:
AGM-65 Maverick Tactical Air-Ground Missile
Changhe Z-8 Transport Helicopter
Air Tractor AT-802U Surveillance and Light Attack Aircraft
C-160 Transall Cargo and Tactical Transport Aircraft
The C-160 Transall aircraft are twin turboprop transporters in service with the air forces of France, Germany and Turkey
93 troops or up to 68 fully equipped paratroops or 62 stretcher patients
Transtall Group
Maiden Flight
Entry into service
Numbers built
Maximum take-off weight
51,000kg
French Air Force, German Air Force and Turkish Air Force
The C-160 Transall aircraft are twin turboprop transporters in service with the air forces of France, Germany and Turkey. The aircraft is a cantilever high-wing monoplane and is configured for transportation, paratroop drop, electronic surveillance, airborne communications relay and medical evacuation.
The companies MBB, Nord Aviation and VFW formed the Transall group in 1959 for the development and production of the C-160 for the air forces of France, Germany, South Africa and Turkey. Production of the aircraft by the three companies ended in 1972, with 169 aircraft having been delivered.
In 1976, responsibility for production of the aircraft was given to Aerospatiale in France and MBB (now DaimlerChrysler Aerospace) in Germany.
Both companies are now part of EADS (European Aeronautics Defence and Space). Production of the aircraft from 1976 to 1985 included updated avionics, a reinforced wing housing and additional fuel tanks.
The C-160 fleets of France, Germany, South Africa and Turkey will be replaced by the Airbus Military A400M transport when that enters service from 2012. France has 55 aircraft still in service, Germany 80 and Turkey 20. South Africa has retired its C-160 fleet.
C-160H Astarte communications relay aircraft
Four communications relay aircraft, designation C-160H Astarte, were delivered to the French Air Force between 1981 and 1987. The aircraft's main mission was communications with the submerged nuclear ballistic missile submarines of the French fleet. The aircraft were equipped with unjammable VLF communications including a Rockwell VLF transmitter and a Thales communications centre. The VLF system includes dual trailing wire antennae.
The French Air Force retired the C-160H Astarte aircraft in 2002.
C-160 Gabriel ELINT electronic surveillance aircraft
The C-160 Gabriel aircraft is an upgraded electronic surveillance version in service with the French Air Force. Thales developed the signals intelligence (sigint) system. The main cabin houses the workstations and computer systems for ten elint (electronic intelligence) and comint (communications intelligence) mission crew.
In September 2008, Thales was awarded a contract to upgrade the ELINT system.
C-160 upgrade programmes
An upgrade programme for the French Air Force C-160 was completed in 1999. All C-160 Transall aircraft were upgraded with modern avionics suite and new anti-missile countermeasures between 1994 and 1999. The upgraded cockpit is equipped with a new head-up display and an upgraded electronic warfare suite, with a radar warning receiver, missile approach warner and chaff and decoy dispensers.
"The main cabin can be fitted to carry 93 troops or up to 68 fully equipped paratroops."
The aircraft have been fitted with a new EFIS 854 TF Electronic Flight Instrumentation System, which includes an electronic attitude director indicator (EADI) and electronic horizontal situation indicator (EHSI). A flight management system with two Gemini 10 computers and a new radio management system have been installed. Three new sensors have also been installed for aircraft position and attitude control: an inertial reference unit (IRU), an attitude and heading reference unit (AHRU), and a global positioning system (GPS).
German Air Force C-160D are upgraded with BAE SYSTEMS high integration air data computer (HIADC), Northrop Grumman (Litton) ALR-68 radar warning systems and Rockwell Collins FMS-800 Flight Management and Global Positioning System. 21 aircraft have also been fitted with an EADS countermeasures suite, Northrop Grumman AN/AAR-54(V) missile warning system and chaff / flare launcher.
The air-conditioned and pressurised cockpit accommodates four crew: the pilot and co-pilot, the flight engineer, and the navigator. The pressurisation and air-conditioning system is supplied by Normalair-Garrett.
The main cabin can be fitted to carry 93 troops or up to 68 fully equipped paratroops. For medical evacuation, the cabin can accommodate 62 stretcher patients.
In the cargo transporter role, the aircraft can carry a maximum payload of 16,000kg, including armoured vehicles, tanks and palletised or unpalletised loads. The floor is fitted with lashing points rated at 5,000kg on a 20in grid pattern. Lashing points rated at 12,000kg are fitted in the side walls of the cabin. The aircraft wheels can be raised in order to lower the fuselage for loading and unloading. Vehicles are driven into the cabin and an automated translation and stowing system is used for loading and unloading of cargo items which are not driven.
"The C-160 transporter aircraft can carry a maximum payload of 16,000kg."
Loads up to 8,000kg can be air-dropped. The aircraft can carry out low-level altitude drops at altitudes between 10ft and 30ft, and touch-and-go drops in which the aircraft briefly touches the runway without landing.
The aircraft is powered by two Rolls-Royce Tyne Rty.20 mk22 turboprop engines, each rated at 4,549kW. The engines drive four-blade, reversible-pitch, constant-speed BAe 4/8000/6 propellers, built by Ratier Figeac in France.
The fuel system includes four wing tanks with a capacity of 19,000l, an optional wing centre section tank with a capacity of 9,000l and a single-point pressure refuelling system. The aircraft is equipped with an in-flight refuelling probe mounted above and behind the flight deck.
The C-160 can climb at the rate of 6.6m/s. The never exceed speed is 593km/h. The C-160's maximum speed is 513km/h. Its stall speed is 177km/h. Its normal range and ferry range are 1,853km and 8,858km respectively. The service ceiling is 8,230m. The aircraft weighs 29,000kg, while the maximum take-off weight is 51,000kg.
The Global Military Aircraft Market 2011-2021
This project forms part of our recent analysis and forecasts of the global Military Aircraft market available from our business information platform Strategic Defence Intelligence. For more information click here or contact us: EMEA: +44 20 7936 6783; Americas: +1 415 439 4914; Asia Pacific: +61 2 9947 9709 or via email.
Data Device Corporation
The AGM-65 Maverick is a tactical, air-to-ground missile (AGM) in service with the US Air Force (USAF). It is a…
The Changhe Z-8 (Zhishengji-8) is a triple engine, multi-role helicopter designed and manufactured by the Changhe Aircraft Industry Group (CAIG)…
The AT-802U surveillance and light-attack aircraft is a heavily armoured version of the AT-802 agricultural and fire fighting aircraft, developed…
Yak-130
The Yak-130 combat trainer was selected as the winner of the trainer competition of the Voyenno Vozdushnyye Sily, Russian Federation…


text:
Redningsstation Thorsminde  är en dansk sjöräddningsstation, som inrättades i Thorsminde i Västjylland 1882 som enbart en station med en räddningsraketapparat, med en besättning på nio man.  Stationens första uppsyningsman, Adser Kjærgaard, ledde den till 1907.

År 1886 utökades stationen med en begagnad räddningsbåt från Vedersø Redningsstation i Vedersø Klit, men eftersom det var få inbyggare i Thorsminde bemannades båten med besättningen från Tuskær Redningsstation.

År 1891 fick Redningsstation Thorsminde en ny räddningsbåt, som byggts på Orlogsværftet i Köpenhamn. Båtarna drags till vattnet på en vagn med fem par hästar. Eftersom det inte fanns några hästar i Thorsminde, byggdes det 1905 ett stall för hästarna som kom från Fjaltring, när livbåten skulle sjösättas.

Ett båthus uppfördes 1890. Detta såldes 1939 för att ombyggas till Thorsminde Kirke.

År 1939 byggdes en ny räddningsstation nära havet, och 1995 byggdes åter en ny staton för den större täckta räddningsbåten MRB 35. Thorsminde finns idag kvar som en av Danmarks 21 verksamma räddningsstationer.

Källor
Thorsminde Redningsstation på www.jernkysten.dk

Sjöräddningsstationer i Danmark
Holstebro kommun
Sjöräddning i Danmark
1882 i Danmark
Bildanden 1882


text:
Home Eurozone manufacturing sector growth hits record
Inflation in Eurozone Creeps Up
Samskip adds 100 rail wagons to its fleet
Eurozone manufacturing sector growth hits record
Euro zone factories ended 2017 growing at their fastest pace in more than two decades while performance in Asia was more uneven, with its third-largest economy India leading the field and manufacturing giant China unexpectedly resilient.
With a similar business survey covering the United States forecast to be strong, the synchronized global growth that took hold last year looks set to continue based on the first major economic data releases of 2018.
Euro zone factory activity is handily outpacing its peers, including Britain. That has added to expectations that the European Central Bank, which this month will halve its monthly bond purchases, will shutter the program later this year.
"The euro zone manufacturing boom gained further momentum in December, rounding off the best year on record and setting the scene for a strong start to 2018," said Chris Williamson, chief business economist at IHS Markit, which compiles the surveys.
The December euro zone final manufacturing Purchasing Managers' Index (PMI) was 60.6, matching an earlier preliminary reading, the highest since the survey began in June 1997. Any figure above 50 represents growth. The euro rose to a three-month high above $1.20.
The factory output index, which feeds into a broader set of data including services due on Thursday, rose to 62.2 from 61.0 in November. That was its highest in over 17 years and a reading exceeded only once in the survey's more than two decades of history.
Germany and France, the euro zone's two largest economies look to be expanding in tandem, striking their highest manufacturing PMI numbers on record and for 17 years, respectively. But growth slowed in Italy, the bloc's third largest economy.
In Britain, which is in the process of negotiating a withdrawal from the European Union, growth tailed off sharply from a four-year high the previous month.
"Strong growth will be hard to sustain in 2018," noted Samuel Tombs, UK economist at consultancy Pantheon Macroeconomics. He pointed out that the UK PMI had underperformed the euro zone's by the most since June 2008.
"British manufacturers ... are failing to make the most of the rebound in global trade," Tombs wrote.
Automation, Robotics & AI


text:
Emily Tennyson, Lady Tennyson
(Redirected from Emily Tennyson, Baroness Tennyson)
Not to be confused with Emilia Tennyson.
Find sources: "Emily Tennyson, Lady Tennyson" – news · newspapers · books · scholar · JSTOR (November 2016) (Learn how and when to remove this template message)
Emily Tennyson, c. 1837
Emily Sarah Tennyson, Lady Tennyson (née Sellwood; 9 July 1813 – 10 August 1896) was the wife of the poet Alfred, Lord Tennyson, and a creative talent in her own right.
She was born in Horncastle, Lincolnshire. Her father was a solicitor who acted for the Tennyson family many times over the years. Her mother Sarah,[1] who died aged 28 when Emily was three, was a member of the Franklin family, sister of Sir John Franklin, an explorer, and Sir Willingham Franklin. Emily first met Alfred Tennyson during childhood, but they did not become close until much later (when Tennyson's brother, Charles, married Emily's younger sister, Louisa), and did not marry until 1850. For much of the intervening time, they did not see one another at all.
They had two sons, Hallam and Lionel. During Tennyson's lifetime, Emily was his strong supporter and employed her own talents in setting some of his lyrics to music. After his death in 1892, Lady Tennyson devoted herself to helping her son write the authorised biographies.
She is buried in All Saints' Church, Freshwater, Isle of Wight.
^ Elliott, Ray (July 2001). St Mary's Horncastle - a church tour. The Parochial Church Council of the Ecclesiastical Parish of St Mary's, Horncastle.
"Tennyson [née Sellwood], Emily Sarah, Lady Tennyson" in Oxford Dictionary of National Biography (2004) 54:147-149.
Alfred Tennyson, 1st Baron Tennyson
Early poetry
"The Deserted House"
"The Lady of Shalott"
"The Lotos-Eaters"
"Mariana"
"Oenone"
"Break, Break, Break"
"The Charge of the Light Brigade"
"The Day-Dream"
"Godiva"
Idylls of the King
"In Memoriam A.H.H."
"Lady Clara Vere de Vere"
"Locksley Hall"
"Now Sleeps the Crimson Petal"
Poems (1842)
"The Palace of Art"
"Sir Galahad"
"St. Simeon Stylites"
"Tears, Idle Tears"
"The Two Voices"
"Ulysses"
Late poetry
"Crossing the Bar"
"The Eagle"
Enoch Arden
"Flower in the Crannied Wall"
"Ring Out, Wild Bells"
"Tithonus"
The Foresters (play)
The Window (song cycle)
Chapel House, Twickenham
Farringford House
Blackdown, West Sussex
Arthur Hallam (friend)
Emily Tennyson (wife)
Hallam Tennyson (son)
Lionel Tennyson (grandson)
Charles Tennyson (grandson)
Emilia Tennyson (sister)
Charles Tennyson Turner (brother)
Frederick Tennyson (brother)
BNF: cb12186270f (data)
SNAC: w6w95n8b
Retrieved from "https://en.wikipedia.org/w/index.php?title=Emily_Tennyson,_Lady_Tennyson&oldid=828294540"
People from Horncastle, Lincolnshire
Tennyson family
Articles needing additional references from November 2016
Wikipedia articles with SNAC-ID identifiers
This page was last edited on 1 March 2018, at 18:48 (UTC).